Home / Function/ is_expression_async() — svelte Function Reference

is_expression_async() — svelte Function Reference

Architecture documentation for the is_expression_async() function in ast.js from the svelte codebase.

Entity Profile

Dependency Diagram

graph TD
  bdb5b0f7_5673_570b_155a_0bd0f9f8169a["is_expression_async()"]
  0c5c28a7_226d_4e7c_e75e_0853c0a9fc2c["ast.js"]
  bdb5b0f7_5673_570b_155a_0bd0f9f8169a -->|defined in| 0c5c28a7_226d_4e7c_e75e_0853c0a9fc2c
  3f298b15_f3b3_11d6_21ea_d35e2d476f80["visit_assignment_expression()"]
  3f298b15_f3b3_11d6_21ea_d35e2d476f80 -->|calls| bdb5b0f7_5673_570b_155a_0bd0f9f8169a
  84572b9b_9a21_09af_15ac_85b59b114603["build_fallback()"]
  84572b9b_9a21_09af_15ac_85b59b114603 -->|calls| bdb5b0f7_5673_570b_155a_0bd0f9f8169a
  style bdb5b0f7_5673_570b_155a_0bd0f9f8169a fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/utils/ast.js lines 484–578

export function is_expression_async(expression) {
	switch (expression.type) {
		case 'AwaitExpression': {
			return true;
		}
		case 'ArrayPattern': {
			return expression.elements.some((element) => element && is_expression_async(element));
		}
		case 'ArrayExpression': {
			return expression.elements.some((element) => {
				if (!element) {
					return false;
				} else if (element.type === 'SpreadElement') {
					return is_expression_async(element.argument);
				} else {
					return is_expression_async(element);
				}
			});
		}
		case 'AssignmentPattern':
		case 'AssignmentExpression':
		case 'BinaryExpression':
		case 'LogicalExpression': {
			return (
				(expression.left.type !== 'PrivateIdentifier' && is_expression_async(expression.left)) ||
				is_expression_async(expression.right)
			);
		}
		case 'CallExpression':
		case 'NewExpression': {
			return (
				(expression.callee.type !== 'Super' && is_expression_async(expression.callee)) ||
				expression.arguments.some((element) => {
					if (element.type === 'SpreadElement') {
						return is_expression_async(element.argument);
					} else {
						return is_expression_async(element);
					}
				})
			);
		}
		case 'ChainExpression': {
			return is_expression_async(expression.expression);
		}
		case 'ConditionalExpression': {
			return (
				is_expression_async(expression.test) ||
				is_expression_async(expression.alternate) ||
				is_expression_async(expression.consequent)
			);
		}
		case 'ImportExpression': {
			return is_expression_async(expression.source);
		}
		case 'MemberExpression': {
			return (
				(expression.object.type !== 'Super' && is_expression_async(expression.object)) ||
				(expression.property.type !== 'PrivateIdentifier' &&
					is_expression_async(expression.property))
			);
		}
		case 'ObjectPattern':
		case 'ObjectExpression': {
			return expression.properties.some((property) => {
				if (property.type === 'SpreadElement') {
					return is_expression_async(property.argument);
				} else if (property.type === 'Property') {
					return (
						(property.key.type !== 'PrivateIdentifier' && is_expression_async(property.key)) ||
						is_expression_async(property.value)
					);
				}
			});
		}
		case 'RestElement': {
			return is_expression_async(expression.argument);
		}
		case 'SequenceExpression':
		case 'TemplateLiteral': {
			return expression.expressions.some((subexpression) => is_expression_async(subexpression));
		}

Domain

Subdomains

Frequently Asked Questions

What does is_expression_async() do?
is_expression_async() is a function in the svelte codebase, defined in packages/svelte/src/compiler/utils/ast.js.
Where is is_expression_async() defined?
is_expression_async() is defined in packages/svelte/src/compiler/utils/ast.js at line 484.
What calls is_expression_async()?
is_expression_async() is called by 2 function(s): build_fallback, visit_assignment_expression.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free