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
Defined In
Source
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