diff --git a/src/ast-spec.txt b/src/ast-spec.txt index b0b4b2649..3e5128849 100644 --- a/src/ast-spec.txt +++ b/src/ast-spec.txt @@ -7,7 +7,7 @@ node ReturnStatement; // Bolt language AST definitions -node BoltSyntax; +interface BoltSyntax; node BoltToken > Token, BoltSyntax; @@ -239,6 +239,10 @@ node BoltExpressionStatement > BoltStatement { expression: BoltExpression, } +node BoltLoopStatement > BoltStatement { + elements: Vec, +} + node BoltParameter > BoltSyntax { index: usize, bindings: BoltPattern, @@ -289,7 +293,7 @@ node BoltPlainImportSymbol > BoltImportSymbol { local: BoltSymbol, } -node BoltImportDirective > BoltSourceElement { +node BoltImportDirective > BoltSyntax, BoltSourceElement { modifiers: BoltModifiers, file: BoltStringLiteral, symbols: Option>, @@ -297,7 +301,7 @@ node BoltImportDirective > BoltSourceElement { node BoltExportSymbol > BoltSyntax; -node BoltPlainExportSymbol { +node BoltPlainExportSymbol > BoltExportSymbol { local: BoltQualName, remote: BoltSymbol, } @@ -314,7 +318,7 @@ node BoltTraitDeclaration > BoltDeclarationLike, BoltTypeDeclaration { typeParams: Option>, name: BoltIdentifier, typeBoundExpr: Option, - elements: Option>, + elements: Option>, } node BoltImplDeclaration > BoltTypeDeclaration, BoltDeclarationLike { @@ -322,7 +326,7 @@ node BoltImplDeclaration > BoltTypeDeclaration, BoltDeclarationLike { typeParams: Option>, name: BoltIdentifier, traitTypeExpr: Option, - elements: Vec, + elements: Vec, } node BoltTypeAliasDeclaration > BoltDeclarationLike, BoltTypeDeclaration, BoltTraitOrImplElement { @@ -480,7 +484,7 @@ node JSCatchBlock > JSSyntax { elements: Vec, } -node JSTryCatchStatement > JSSyntax { +node JSTryCatchStatement > JSStatement { tryBlock: Vec, catchBlock: Option, finalBlock: Option>, @@ -526,7 +530,8 @@ node JSImportAsBinding > JSImportBinding { local: Option, } -node JSImportDeclaration > JSDeclaration { +// By exception, we alloww 'import ..'-statements to appear in foreign function bodies +node JSImportDeclaration > JSDeclaration, JSFunctionBodyElement { bindings: Vec, filename: JSString, }