//! > Test parsing code, without trivia.
//! > test_runner_name
test_full_parser_tree(expect_diagnostics: true)
//! > cairo_code
>>> file: src/parser_test_data/cairo_test_files/test2.cairo
//! > print_trivia
false
//! > print_colors
false
//! > expected_diagnostics
error: Missing tokens. Expected an expression.
--> src/parser_test_data/cairo_test_files/test2.cairo:5:12
let z = ;
^
error: Missing tokens. Expected an expression.
--> src/parser_test_data/cairo_test_files/test2.cairo:14:16
if bla.
^
error: Missing token TerminalLBrace.
--> src/parser_test_data/cairo_test_files/test2.cairo:14:16
if bla.
^
error: Missing tokens. Expected an expression.
--> src/parser_test_data/cairo_test_files/test2.cairo:21:14
x.a *+-. s.s * foo(1,3)
^
error: Missing tokens. Expected an expression.
--> src/parser_test_data/cairo_test_files/test2.cairo:21:16
x.a *+-. s.s * foo(1,3)
^
error: Skipped tokens. Expected: Const/Enum/ExternFunction/ExternType/Function/Impl/InlineMacro/Module/Struct/Trait/TypeAlias/Use or an attribute.
--> src/parser_test_data/cairo_test_files/test2.cairo:30:1
skipped tokens
^************^
//! > expected_tree
└── root (kind: SyntaxFile)
├── items (kind: ModuleItemList)
│ ├── child #0 (kind: FunctionWithBody)
│ │ ├── attributes (kind: AttributeList) []
│ │ ├── visibility (kind: VisibilityDefault) []
│ │ ├── declaration (kind: FunctionDeclaration)
│ │ │ ├── function_kw (kind: TokenFunction): 'fn'
│ │ │ ├── name (kind: TokenIdentifier): 'foo'
│ │ │ ├── generic_params (kind: OptionWrappedGenericParamListEmpty) []
│ │ │ └── signature (kind: FunctionSignature)
│ │ │ ├── lparen (kind: TokenLParen): '('
│ │ │ ├── parameters (kind: ParamList)
│ │ │ │ └── item #0 (kind: Param)
│ │ │ │ ├── modifiers (kind: ModifierList) []
│ │ │ │ ├── name (kind: TokenIdentifier): 'x'
│ │ │ │ └── type_clause (kind: TypeClause)
│ │ │ │ ├── colon (kind: TokenColon): ':'
│ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ └── ident (kind: TokenIdentifier): 'T'
│ │ │ ├── rparen (kind: TokenRParen): ')'
│ │ │ ├── ret_ty (kind: ReturnTypeClause)
│ │ │ │ ├── arrow (kind: TokenArrow): '->'
│ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ └── ident (kind: TokenIdentifier): 'S'
│ │ │ ├── implicits_clause (kind: OptionImplicitsClauseEmpty) []
│ │ │ └── optional_no_panic (kind: OptionTerminalNoPanicEmpty) []
│ │ └── body (kind: ExprBlock)
│ │ ├── lbrace (kind: TokenLBrace): '{'
│ │ ├── statements (kind: StatementList)
│ │ │ ├── child #0 (kind: StatementLet)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── let_kw (kind: TokenLet): 'let'
│ │ │ │ ├── pattern (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TokenIdentifier): 'x'
│ │ │ │ ├── type_clause (kind: OptionTypeClauseEmpty) []
│ │ │ │ ├── eq (kind: TokenEq): '='
│ │ │ │ ├── rhs (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: ExprUnary)
│ │ │ │ │ │ ├── op (kind: TokenMinus): '-'
│ │ │ │ │ │ └── expr (kind: TokenLiteralNumber): '5'
│ │ │ │ │ ├── op (kind: TokenPlus): '+'
│ │ │ │ │ └── rhs (kind: TokenLiteralNumber): '3'
│ │ │ │ └── semicolon (kind: TokenSemicolon): ';'
│ │ │ ├── child #1 (kind: StatementLet)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── let_kw (kind: TokenLet): 'let'
│ │ │ │ ├── pattern (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TokenIdentifier): 'y'
│ │ │ │ ├── type_clause (kind: TypeClause)
│ │ │ │ │ ├── colon (kind: TokenColon): ':'
│ │ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TokenIdentifier): 'T'
│ │ │ │ ├── eq (kind: TokenEq): '='
│ │ │ │ ├── rhs (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: ExprBinary)
│ │ │ │ │ │ ├── lhs (kind: ExprPath)
│ │ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ └── ident (kind: TokenIdentifier): 'x'
│ │ │ │ │ │ ├── op (kind: TokenMul): '*'
│ │ │ │ │ │ └── rhs (kind: TokenLiteralNumber): '2'
│ │ │ │ │ ├── op (kind: TokenPlus): '+'
│ │ │ │ │ └── rhs (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: TokenLiteralNumber): '3'
│ │ │ │ │ ├── op (kind: TokenMul): '*'
│ │ │ │ │ └── rhs (kind: TokenLiteralNumber): '5'
│ │ │ │ └── semicolon (kind: TokenSemicolon): ';'
│ │ │ ├── child #2 (kind: StatementLet)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── let_kw (kind: TokenLet): 'let'
│ │ │ │ ├── pattern (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TokenIdentifier): 'z'
│ │ │ │ ├── type_clause (kind: OptionTypeClauseEmpty) []
│ │ │ │ ├── eq (kind: TokenEq): '='
│ │ │ │ ├── rhs: Missing []
│ │ │ │ └── semicolon (kind: TokenSemicolon): ';'
│ │ │ ├── child #3 (kind: StatementLet)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── let_kw (kind: TokenLet): 'let'
│ │ │ │ ├── pattern (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TokenIdentifier): 'v'
│ │ │ │ ├── type_clause (kind: OptionTypeClauseEmpty) []
│ │ │ │ ├── eq (kind: TokenEq): '='
│ │ │ │ ├── rhs (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: ExprPath)
│ │ │ │ │ │ ├── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ └── ident (kind: TokenIdentifier): 'bool'
│ │ │ │ │ │ ├── separator #0 (kind: TokenColonColon): '::'
│ │ │ │ │ │ └── item #1 (kind: PathSegmentSimple)
│ │ │ │ │ │ └── ident (kind: TokenIdentifier): 'True'
│ │ │ │ │ ├── op (kind: TokenEqEq): '=='
│ │ │ │ │ └── rhs (kind: TokenFalse): 'false'
│ │ │ │ └── semicolon (kind: TokenSemicolon): ';'
│ │ │ ├── child #4 (kind: StatementExpr)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── expr (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: TokenLiteralNumber): '5'
│ │ │ │ │ ├── op (kind: TokenPlus): '+'
│ │ │ │ │ └── rhs (kind: ExprStructCtorCall)
│ │ │ │ │ ├── path (kind: ExprPath)
│ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ └── ident (kind: TokenIdentifier): 'Struct'
│ │ │ │ │ └── arguments (kind: StructArgListBraced)
│ │ │ │ │ ├── lbrace (kind: TokenLBrace): '{'
│ │ │ │ │ ├── arguments (kind: StructArgList)
│ │ │ │ │ │ ├── item #0 (kind: StructArgSingle)
│ │ │ │ │ │ │ ├── identifier (kind: TokenIdentifier): 'a'
│ │ │ │ │ │ │ └── arg_expr (kind: StructArgExpr)
│ │ │ │ │ │ │ ├── colon (kind: TokenColon): ':'
│ │ │ │ │ │ │ └── expr (kind: TokenLiteralNumber): '5'
│ │ │ │ │ │ ├── separator #0 (kind: TokenComma): ','
│ │ │ │ │ │ └── item #1 (kind: StructArgSingle)
│ │ │ │ │ │ ├── identifier (kind: TokenIdentifier): 'b'
│ │ │ │ │ │ └── arg_expr (kind: StructArgExpr)
│ │ │ │ │ │ ├── colon (kind: TokenColon): ':'
│ │ │ │ │ │ └── expr (kind: ExprStructCtorCall)
│ │ │ │ │ │ ├── path (kind: ExprPath)
│ │ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ └── ident (kind: TokenIdentifier): 'Struct2'
│ │ │ │ │ │ └── arguments (kind: StructArgListBraced)
│ │ │ │ │ │ ├── lbrace (kind: TokenLBrace): '{'
│ │ │ │ │ │ ├── arguments (kind: StructArgList)
│ │ │ │ │ │ │ └── item #0 (kind: StructArgSingle)
│ │ │ │ │ │ │ ├── identifier (kind: TokenIdentifier): '_gg'
│ │ │ │ │ │ │ └── arg_expr (kind: StructArgExpr)
│ │ │ │ │ │ │ ├── colon (kind: TokenColon): ':'
│ │ │ │ │ │ │ └── expr (kind: ExprListParenthesized)
│ │ │ │ │ │ │ ├── lparen (kind: TokenLParen): '('
│ │ │ │ │ │ │ ├── expressions (kind: ExprList) []
│ │ │ │ │ │ │ └── rparen (kind: TokenRParen): ')'
│ │ │ │ │ │ └── rbrace (kind: TokenRBrace): '}'
│ │ │ │ │ └── rbrace (kind: TokenRBrace): '}'
│ │ │ │ └── semicolon (kind: TokenSemicolon): ';'
│ │ │ ├── child #5 (kind: StatementReturn)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── return_kw (kind: TokenReturn): 'return'
│ │ │ │ ├── expr_clause (kind: ExprClause)
│ │ │ │ │ └── expr (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: ExprPath)
│ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ └── ident (kind: TokenIdentifier): 'df'
│ │ │ │ │ ├── op (kind: TokenEqEq): '=='
│ │ │ │ │ └── rhs (kind: TokenLiteralNumber): '6'
│ │ │ │ └── semicolon (kind: TokenSemicolon): ';'
│ │ │ └── child #6 (kind: StatementExpr)
│ │ │ ├── attributes (kind: AttributeList) []
│ │ │ ├── expr (kind: ExprBinary)
│ │ │ │ ├── lhs (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TokenIdentifier): 'x'
│ │ │ │ ├── op (kind: TokenPlus): '+'
│ │ │ │ └── rhs (kind: ExprPath)
│ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ └── ident (kind: TokenIdentifier): 'y'
│ │ │ └── semicolon (kind: OptionTerminalSemicolonEmpty) []
│ │ └── rbrace (kind: TokenRBrace): '}'
│ ├── child #1 (kind: ItemImpl)
│ │ ├── attributes (kind: AttributeList) []
│ │ ├── visibility (kind: VisibilityPub)
│ │ │ ├── pub_kw (kind: TokenPub): 'pub'
│ │ │ └── argument_clause (kind: OptionVisibilityPubArgumentClauseEmpty) []
│ │ ├── impl_kw (kind: TokenImpl): 'impl'
│ │ ├── name (kind: TokenIdentifier): 'A'
│ │ ├── generic_params (kind: OptionWrappedGenericParamListEmpty) []
│ │ ├── of_kw (kind: TokenOf): 'of'
│ │ ├── trait_path (kind: ExprPath)
│ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ └── ident (kind: TokenIdentifier): 'B'
│ │ └── body (kind: ImplBody)
│ │ ├── lbrace (kind: TokenLBrace): '{'
│ │ ├── items (kind: ImplItemList)
│ │ │ └── child #0 (kind: FunctionWithBody)
│ │ │ ├── attributes (kind: AttributeList) []
│ │ │ ├── visibility (kind: VisibilityDefault) []
│ │ │ ├── declaration (kind: FunctionDeclaration)
│ │ │ │ ├── function_kw (kind: TokenFunction): 'fn'
│ │ │ │ ├── name (kind: TokenIdentifier): 'foo'
│ │ │ │ ├── generic_params (kind: OptionWrappedGenericParamListEmpty) []
│ │ │ │ └── signature (kind: FunctionSignature)
│ │ │ │ ├── lparen (kind: TokenLParen): '('
│ │ │ │ ├── parameters (kind: ParamList) []
│ │ │ │ ├── rparen (kind: TokenRParen): ')'
│ │ │ │ ├── ret_ty (kind: OptionReturnTypeClauseEmpty) []
│ │ │ │ ├── implicits_clause (kind: OptionImplicitsClauseEmpty) []
│ │ │ │ └── optional_no_panic (kind: OptionTerminalNoPanicEmpty) []
│ │ │ └── body (kind: ExprBlock)
│ │ │ ├── lbrace (kind: TokenLBrace): '{'
│ │ │ ├── statements (kind: StatementList)
│ │ │ │ └── child #0 (kind: StatementExpr)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── expr (kind: ExprIf)
│ │ │ │ │ ├── if_kw (kind: TokenIf): 'if'
│ │ │ │ │ ├── condition (kind: ConditionExpr)
│ │ │ │ │ │ └── expr (kind: ExprBinary)
│ │ │ │ │ │ ├── lhs (kind: ExprPath)
│ │ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ └── ident (kind: TokenIdentifier): 'bla'
│ │ │ │ │ │ ├── op (kind: TokenDot): '.'
│ │ │ │ │ │ └── rhs: Missing []
│ │ │ │ │ ├── if_block (kind: ExprBlock)
│ │ │ │ │ │ ├── lbrace: Missing
│ │ │ │ │ │ ├── statements (kind: StatementList) []
│ │ │ │ │ │ └── rbrace: Missing
│ │ │ │ │ └── else_clause (kind: OptionElseClauseEmpty) []
│ │ │ │ └── semicolon (kind: OptionTerminalSemicolonEmpty) []
│ │ │ └── rbrace (kind: TokenRBrace): '}'
│ │ └── rbrace (kind: TokenRBrace): '}'
│ └── child #2 (kind: ItemModule)
│ ├── attributes (kind: AttributeList) []
│ ├── visibility (kind: VisibilityPub)
│ │ ├── pub_kw (kind: TokenPub): 'pub'
│ │ └── argument_clause (kind: OptionVisibilityPubArgumentClauseEmpty) []
│ ├── module_kw (kind: TokenModule): 'mod'
│ ├── name (kind: TokenIdentifier): 'my_mod'
│ └── body (kind: ModuleBody)
│ ├── lbrace (kind: TokenLBrace): '{'
│ ├── items (kind: ModuleItemList)
│ │ ├── child #0 (kind: FunctionWithBody)
│ │ │ ├── attributes (kind: AttributeList) []
│ │ │ ├── visibility (kind: VisibilityDefault) []
│ │ │ ├── declaration (kind: FunctionDeclaration)
│ │ │ │ ├── function_kw (kind: TokenFunction): 'fn'
│ │ │ │ ├── name (kind: TokenIdentifier): 'bar'
│ │ │ │ ├── generic_params (kind: OptionWrappedGenericParamListEmpty) []
│ │ │ │ └── signature (kind: FunctionSignature)
│ │ │ │ ├── lparen (kind: TokenLParen): '('
│ │ │ │ ├── parameters (kind: ParamList)
│ │ │ │ │ ├── item #0 (kind: Param)
│ │ │ │ │ │ ├── modifiers (kind: ModifierList) []
│ │ │ │ │ │ ├── name (kind: TokenIdentifier): 'x'
│ │ │ │ │ │ └── type_clause (kind: TypeClause)
│ │ │ │ │ │ ├── colon (kind: TokenColon): ':'
│ │ │ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ └── ident (kind: TokenIdentifier): 'T0'
│ │ │ │ │ ├── separator #0 (kind: TokenComma): ','
│ │ │ │ │ └── item #1 (kind: Param)
│ │ │ │ │ ├── modifiers (kind: ModifierList) []
│ │ │ │ │ ├── name (kind: TokenIdentifier): 's'
│ │ │ │ │ └── type_clause (kind: TypeClause)
│ │ │ │ │ ├── colon (kind: TokenColon): ':'
│ │ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TokenIdentifier): 'S'
│ │ │ │ ├── rparen (kind: TokenRParen): ')'
│ │ │ │ ├── ret_ty (kind: ReturnTypeClause)
│ │ │ │ │ ├── arrow (kind: TokenArrow): '->'
│ │ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TokenIdentifier): 'X'
│ │ │ │ ├── implicits_clause (kind: OptionImplicitsClauseEmpty) []
│ │ │ │ └── optional_no_panic (kind: OptionTerminalNoPanicEmpty) []
│ │ │ └── body (kind: ExprBlock)
│ │ │ ├── lbrace (kind: TokenLBrace): '{'
│ │ │ ├── statements (kind: StatementList)
│ │ │ │ └── child #0 (kind: StatementExpr)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── expr (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: ExprBinary)
│ │ │ │ │ │ ├── lhs (kind: ExprBinary)
│ │ │ │ │ │ │ ├── lhs (kind: ExprPath)
│ │ │ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ │ └── ident (kind: TokenIdentifier): 'x'
│ │ │ │ │ │ │ ├── op (kind: TokenDot): '.'
│ │ │ │ │ │ │ └── rhs (kind: ExprPath)
│ │ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ └── ident (kind: TokenIdentifier): 'a'
│ │ │ │ │ │ ├── op (kind: TokenMul): '*'
│ │ │ │ │ │ └── rhs: Missing []
│ │ │ │ │ ├── op (kind: TokenPlus): '+'
│ │ │ │ │ └── rhs (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: ExprBinary)
│ │ │ │ │ │ ├── lhs (kind: ExprBinary)
│ │ │ │ │ │ │ ├── lhs (kind: ExprUnary)
│ │ │ │ │ │ │ │ ├── op (kind: TokenMinus): '-'
│ │ │ │ │ │ │ │ └── expr: Missing []
│ │ │ │ │ │ │ ├── op (kind: TokenDot): '.'
│ │ │ │ │ │ │ └── rhs (kind: ExprPath)
│ │ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ └── ident (kind: TokenIdentifier): 's'
│ │ │ │ │ │ ├── op (kind: TokenDot): '.'
│ │ │ │ │ │ └── rhs (kind: ExprPath)
│ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ └── ident (kind: TokenIdentifier): 's'
│ │ │ │ │ ├── op (kind: TokenMul): '*'
│ │ │ │ │ └── rhs (kind: ExprFunctionCall)
│ │ │ │ │ ├── path (kind: ExprPath)
│ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ └── ident (kind: TokenIdentifier): 'foo'
│ │ │ │ │ └── arguments (kind: ArgListParenthesized)
│ │ │ │ │ ├── lparen (kind: TokenLParen): '('
│ │ │ │ │ ├── arguments (kind: ArgList)
│ │ │ │ │ │ ├── item #0 (kind: Arg)
│ │ │ │ │ │ │ ├── modifiers (kind: ModifierList) []
│ │ │ │ │ │ │ └── arg_clause (kind: ArgClauseUnnamed)
│ │ │ │ │ │ │ └── value (kind: TokenLiteralNumber): '1'
│ │ │ │ │ │ ├── separator #0 (kind: TokenComma): ','
│ │ │ │ │ │ └── item #1 (kind: Arg)
│ │ │ │ │ │ ├── modifiers (kind: ModifierList) []
│ │ │ │ │ │ └── arg_clause (kind: ArgClauseUnnamed)
│ │ │ │ │ │ └── value (kind: TokenLiteralNumber): '3'
│ │ │ │ │ └── rparen (kind: TokenRParen): ')'
│ │ │ │ └── semicolon (kind: OptionTerminalSemicolonEmpty) []
│ │ │ └── rbrace (kind: TokenRBrace): '}'
│ │ └── child #1 (kind: ItemStruct)
│ │ ├── attributes (kind: AttributeList) []
│ │ ├── visibility (kind: VisibilityDefault) []
│ │ ├── struct_kw (kind: TokenStruct): 'struct'
│ │ ├── name (kind: TokenIdentifier): 'A'
│ │ ├── generic_params (kind: OptionWrappedGenericParamListEmpty) []
│ │ ├── lbrace (kind: TokenLBrace): '{'
│ │ ├── members (kind: MemberList)
│ │ │ ├── item #0 (kind: Member)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── visibility (kind: VisibilityDefault) []
│ │ │ │ ├── name (kind: TokenIdentifier): 'x'
│ │ │ │ └── type_clause (kind: TypeClause)
│ │ │ │ ├── colon (kind: TokenColon): ':'
│ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ └── ident (kind: TokenIdentifier): 'a'
│ │ │ ├── separator #0 (kind: TokenComma): ','
│ │ │ └── item #1 (kind: Member)
│ │ │ ├── attributes (kind: AttributeList) []
│ │ │ ├── visibility (kind: VisibilityDefault) []
│ │ │ ├── name (kind: TokenIdentifier): 'y'
│ │ │ └── type_clause (kind: TypeClause)
│ │ │ ├── colon (kind: TokenColon): ':'
│ │ │ └── ty (kind: ExprPath)
│ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ └── ident (kind: TokenIdentifier): 'int'
│ │ └── rbrace (kind: TokenRBrace): '}'
│ └── rbrace (kind: TokenRBrace): '}'
└── eof (kind: TokenEndOfFile).
//! > ==========================================================================
//! > Test parsing code, with trivia.
//! > test_runner_name
test_full_parser_tree(expect_diagnostics: true)
//! > cairo_code
>>> file: src/parser_test_data/cairo_test_files/test2.cairo
//! > print_trivia
true
//! > print_colors
false
//! > expected_diagnostics
error: Missing tokens. Expected an expression.
--> src/parser_test_data/cairo_test_files/test2.cairo:5:12
let z = ;
^
error: Missing tokens. Expected an expression.
--> src/parser_test_data/cairo_test_files/test2.cairo:14:16
if bla.
^
error: Missing token TerminalLBrace.
--> src/parser_test_data/cairo_test_files/test2.cairo:14:16
if bla.
^
error: Missing tokens. Expected an expression.
--> src/parser_test_data/cairo_test_files/test2.cairo:21:14
x.a *+-. s.s * foo(1,3)
^
error: Missing tokens. Expected an expression.
--> src/parser_test_data/cairo_test_files/test2.cairo:21:16
x.a *+-. s.s * foo(1,3)
^
error: Skipped tokens. Expected: Const/Enum/ExternFunction/ExternType/Function/Impl/InlineMacro/Module/Struct/Trait/TypeAlias/Use or an attribute.
--> src/parser_test_data/cairo_test_files/test2.cairo:30:1
skipped tokens
^************^
//! > expected_tree
└── root (kind: SyntaxFile)
├── items (kind: ModuleItemList)
│ ├── child #0 (kind: FunctionWithBody)
│ │ ├── attributes (kind: AttributeList) []
│ │ ├── visibility (kind: VisibilityDefault) []
│ │ ├── declaration (kind: FunctionDeclaration)
│ │ │ ├── function_kw (kind: TerminalFunction)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenFunction): 'fn'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ ├── name (kind: TerminalIdentifier)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenIdentifier): 'foo'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ ├── generic_params (kind: OptionWrappedGenericParamListEmpty) []
│ │ │ └── signature (kind: FunctionSignature)
│ │ │ ├── lparen (kind: TerminalLParen)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenLParen): '('
│ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ ├── parameters (kind: ParamList)
│ │ │ │ └── item #0 (kind: Param)
│ │ │ │ ├── modifiers (kind: ModifierList) []
│ │ │ │ ├── name (kind: TerminalIdentifier)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenIdentifier): 'x'
│ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ └── type_clause (kind: TypeClause)
│ │ │ │ ├── colon (kind: TerminalColon)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenColon): ':'
│ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenIdentifier): 'T'
│ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ ├── rparen (kind: TerminalRParen)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenRParen): ')'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ ├── ret_ty (kind: ReturnTypeClause)
│ │ │ │ ├── arrow (kind: TerminalArrow)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenArrow): '->'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenIdentifier): 'S'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ ├── implicits_clause (kind: OptionImplicitsClauseEmpty) []
│ │ │ └── optional_no_panic (kind: OptionTerminalNoPanicEmpty) []
│ │ └── body (kind: ExprBlock)
│ │ ├── lbrace (kind: TerminalLBrace)
│ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ ├── token (kind: TokenLBrace): '{'
│ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenNewline).
│ │ ├── statements (kind: StatementList)
│ │ │ ├── child #0 (kind: StatementLet)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── let_kw (kind: TerminalLet)
│ │ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── token (kind: TokenLet): 'let'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── pattern (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenIdentifier): 'x'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── type_clause (kind: OptionTypeClauseEmpty) []
│ │ │ │ ├── eq (kind: TerminalEq)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenEq): '='
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── rhs (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: ExprUnary)
│ │ │ │ │ │ ├── op (kind: TerminalMinus)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenMinus): '-'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ └── expr (kind: TerminalLiteralNumber)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenLiteralNumber): '5'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── op (kind: TerminalPlus)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenPlus): '+'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ └── rhs (kind: TerminalLiteralNumber)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenLiteralNumber): '3'
│ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ └── semicolon (kind: TerminalSemicolon)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenSemicolon): ';'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ ├── child #1 (kind: StatementLet)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── let_kw (kind: TerminalLet)
│ │ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── token (kind: TokenLet): 'let'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── pattern (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenIdentifier): 'y'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── type_clause (kind: TypeClause)
│ │ │ │ │ ├── colon (kind: TerminalColon)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenColon): ':'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenIdentifier): 'T'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── eq (kind: TerminalEq)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenEq): '='
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── rhs (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: ExprBinary)
│ │ │ │ │ │ ├── lhs (kind: ExprPath)
│ │ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'x'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── op (kind: TerminalMul)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenMul): '*'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ └── rhs (kind: TerminalLiteralNumber)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenLiteralNumber): '2'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── op (kind: TerminalPlus)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenPlus): '+'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ └── rhs (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: TerminalLiteralNumber)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenLiteralNumber): '3'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ ├── op (kind: TerminalMul)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenMul): '*'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ └── rhs (kind: TerminalLiteralNumber)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenLiteralNumber): '5'
│ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ └── semicolon (kind: TerminalSemicolon)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenSemicolon): ';'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ ├── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── child #1 (kind: TokenSingleLineComment): '// Comment.'
│ │ │ │ └── child #2 (kind: TokenNewline).
│ │ │ ├── child #2 (kind: StatementLet)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── let_kw (kind: TerminalLet)
│ │ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── token (kind: TokenLet): 'let'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── pattern (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenIdentifier): 'z'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── type_clause (kind: OptionTypeClauseEmpty) []
│ │ │ │ ├── eq (kind: TerminalEq)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenEq): '='
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── rhs: Missing []
│ │ │ │ └── semicolon (kind: TerminalSemicolon)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenSemicolon): ';'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ ├── child #3 (kind: StatementLet)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── let_kw (kind: TerminalLet)
│ │ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── token (kind: TokenLet): 'let'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── pattern (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenIdentifier): 'v'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── type_clause (kind: OptionTypeClauseEmpty) []
│ │ │ │ ├── eq (kind: TerminalEq)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenEq): '='
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── rhs (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: ExprPath)
│ │ │ │ │ │ ├── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'bool'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── separator #0 (kind: TerminalColonColon)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenColonColon): '::'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ └── item #1 (kind: PathSegmentSimple)
│ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'True'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── op (kind: TerminalEqEq)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenEqEq): '=='
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ └── rhs (kind: TerminalFalse)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenFalse): 'false'
│ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ └── semicolon (kind: TerminalSemicolon)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenSemicolon): ';'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ ├── child #4 (kind: StatementExpr)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── expr (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: TerminalLiteralNumber)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ │ ├── token (kind: TokenLiteralNumber): '5'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── op (kind: TerminalPlus)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenPlus): '+'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ └── rhs (kind: ExprStructCtorCall)
│ │ │ │ │ ├── path (kind: ExprPath)
│ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'Struct'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ └── arguments (kind: StructArgListBraced)
│ │ │ │ │ ├── lbrace (kind: TerminalLBrace)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenLBrace): '{'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ ├── arguments (kind: StructArgList)
│ │ │ │ │ │ ├── item #0 (kind: StructArgSingle)
│ │ │ │ │ │ │ ├── identifier (kind: TerminalIdentifier)
│ │ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'a'
│ │ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ │ └── arg_expr (kind: StructArgExpr)
│ │ │ │ │ │ │ ├── colon (kind: TerminalColon)
│ │ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ │ ├── token (kind: TokenColon): ':'
│ │ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ │ │ └── expr (kind: TerminalLiteralNumber)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenLiteralNumber): '5'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── separator #0 (kind: TerminalComma)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenComma): ','
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ │ └── item #1 (kind: StructArgSingle)
│ │ │ │ │ │ ├── identifier (kind: TerminalIdentifier)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'b'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ └── arg_expr (kind: StructArgExpr)
│ │ │ │ │ │ ├── colon (kind: TerminalColon)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenColon): ':'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ │ └── expr (kind: ExprStructCtorCall)
│ │ │ │ │ │ ├── path (kind: ExprPath)
│ │ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'Struct2'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ └── arguments (kind: StructArgListBraced)
│ │ │ │ │ │ ├── lbrace (kind: TerminalLBrace)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenLBrace): '{'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── arguments (kind: StructArgList)
│ │ │ │ │ │ │ └── item #0 (kind: StructArgSingle)
│ │ │ │ │ │ │ ├── identifier (kind: TerminalIdentifier)
│ │ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ │ ├── token (kind: TokenIdentifier): '_gg'
│ │ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ │ └── arg_expr (kind: StructArgExpr)
│ │ │ │ │ │ │ ├── colon (kind: TerminalColon)
│ │ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ │ ├── token (kind: TokenColon): ':'
│ │ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ │ │ └── expr (kind: ExprListParenthesized)
│ │ │ │ │ │ │ ├── lparen (kind: TerminalLParen)
│ │ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ │ ├── token (kind: TokenLParen): '('
│ │ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── expressions (kind: ExprList) []
│ │ │ │ │ │ │ └── rparen (kind: TerminalRParen)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenRParen): ')'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ └── rbrace (kind: TerminalRBrace)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenRBrace): '}'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ └── rbrace (kind: TerminalRBrace)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenRBrace): '}'
│ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ └── semicolon (kind: TerminalSemicolon)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenSemicolon): ';'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ ├── child #5 (kind: StatementReturn)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── return_kw (kind: TerminalReturn)
│ │ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── token (kind: TokenReturn): 'return'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── expr_clause (kind: ExprClause)
│ │ │ │ │ └── expr (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: ExprPath)
│ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'df'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── op (kind: TerminalEqEq)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenEqEq): '=='
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ └── rhs (kind: TerminalLiteralNumber)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenLiteralNumber): '6'
│ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ └── semicolon (kind: TerminalSemicolon)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenSemicolon): ';'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ └── child #6 (kind: StatementExpr)
│ │ │ ├── attributes (kind: AttributeList) []
│ │ │ ├── expr (kind: ExprBinary)
│ │ │ │ ├── lhs (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── token (kind: TokenIdentifier): 'x'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── op (kind: TerminalPlus)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenPlus): '+'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ └── rhs (kind: ExprPath)
│ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenIdentifier): 'y'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ └── semicolon (kind: OptionTerminalSemicolonEmpty) []
│ │ └── rbrace (kind: TerminalRBrace)
│ │ ├── leading_trivia (kind: Trivia) []
│ │ ├── token (kind: TokenRBrace): '}'
│ │ └── trailing_trivia (kind: Trivia)
│ │ └── child #0 (kind: TokenNewline).
│ ├── child #1 (kind: ItemImpl)
│ │ ├── attributes (kind: AttributeList) []
│ │ ├── visibility (kind: VisibilityPub)
│ │ │ ├── pub_kw (kind: TerminalPub)
│ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ │ ├── token (kind: TokenPub): 'pub'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ └── argument_clause (kind: OptionVisibilityPubArgumentClauseEmpty) []
│ │ ├── impl_kw (kind: TerminalImpl)
│ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ ├── token (kind: TokenImpl): 'impl'
│ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenWhitespace).
│ │ ├── name (kind: TerminalIdentifier)
│ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ ├── token (kind: TokenIdentifier): 'A'
│ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenWhitespace).
│ │ ├── generic_params (kind: OptionWrappedGenericParamListEmpty) []
│ │ ├── of_kw (kind: TerminalOf)
│ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ ├── token (kind: TokenOf): 'of'
│ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenWhitespace).
│ │ ├── trait_path (kind: ExprPath)
│ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ ├── token (kind: TokenIdentifier): 'B'
│ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenWhitespace).
│ │ └── body (kind: ImplBody)
│ │ ├── lbrace (kind: TerminalLBrace)
│ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ ├── token (kind: TokenLBrace): '{'
│ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenNewline).
│ │ ├── items (kind: ImplItemList)
│ │ │ └── child #0 (kind: FunctionWithBody)
│ │ │ ├── attributes (kind: AttributeList) []
│ │ │ ├── visibility (kind: VisibilityDefault) []
│ │ │ ├── declaration (kind: FunctionDeclaration)
│ │ │ │ ├── function_kw (kind: TerminalFunction)
│ │ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── token (kind: TokenFunction): 'fn'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── name (kind: TerminalIdentifier)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenIdentifier): 'foo'
│ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ ├── generic_params (kind: OptionWrappedGenericParamListEmpty) []
│ │ │ │ └── signature (kind: FunctionSignature)
│ │ │ │ ├── lparen (kind: TerminalLParen)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenLParen): '('
│ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ ├── parameters (kind: ParamList) []
│ │ │ │ ├── rparen (kind: TerminalRParen)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenRParen): ')'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── ret_ty (kind: OptionReturnTypeClauseEmpty) []
│ │ │ │ ├── implicits_clause (kind: OptionImplicitsClauseEmpty) []
│ │ │ │ └── optional_no_panic (kind: OptionTerminalNoPanicEmpty) []
│ │ │ └── body (kind: ExprBlock)
│ │ │ ├── lbrace (kind: TerminalLBrace)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenLBrace): '{'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ ├── statements (kind: StatementList)
│ │ │ │ └── child #0 (kind: StatementExpr)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── expr (kind: ExprIf)
│ │ │ │ │ ├── if_kw (kind: TerminalIf)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ │ ├── token (kind: TokenIf): 'if'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── condition (kind: ConditionExpr)
│ │ │ │ │ │ └── expr (kind: ExprBinary)
│ │ │ │ │ │ ├── lhs (kind: ExprPath)
│ │ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'bla'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── op (kind: TerminalDot)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenDot): '.'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ │ │ │ └── rhs: Missing []
│ │ │ │ │ ├── if_block (kind: ExprBlock)
│ │ │ │ │ │ ├── lbrace (kind: TerminalLBrace)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token: Missing
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── statements (kind: StatementList) []
│ │ │ │ │ │ └── rbrace (kind: TerminalRBrace)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token: Missing
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ └── else_clause (kind: OptionElseClauseEmpty) []
│ │ │ │ └── semicolon (kind: OptionTerminalSemicolonEmpty) []
│ │ │ └── rbrace (kind: TerminalRBrace)
│ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ ├── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── child #1 (kind: TokenSingleLineComment): '// The module below should parse correctly, not inside this impl.'
│ │ │ │ ├── child #2 (kind: TokenNewline).
│ │ │ │ └── child #3 (kind: TokenWhitespace).
│ │ │ ├── token (kind: TokenRBrace): '}'
│ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenNewline).
│ │ └── rbrace (kind: TerminalRBrace)
│ │ ├── leading_trivia (kind: Trivia) []
│ │ ├── token (kind: TokenRBrace): '}'
│ │ └── trailing_trivia (kind: Trivia)
│ │ └── child #0 (kind: TokenNewline).
│ └── child #2 (kind: ItemModule)
│ ├── attributes (kind: AttributeList) []
│ ├── visibility (kind: VisibilityPub)
│ │ ├── pub_kw (kind: TerminalPub)
│ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ ├── token (kind: TokenPub): 'pub'
│ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenWhitespace).
│ │ └── argument_clause (kind: OptionVisibilityPubArgumentClauseEmpty) []
│ ├── module_kw (kind: TerminalModule)
│ │ ├── leading_trivia (kind: Trivia) []
│ │ ├── token (kind: TokenModule): 'mod'
│ │ └── trailing_trivia (kind: Trivia)
│ │ └── child #0 (kind: TokenWhitespace).
│ ├── name (kind: TerminalIdentifier)
│ │ ├── leading_trivia (kind: Trivia) []
│ │ ├── token (kind: TokenIdentifier): 'my_mod'
│ │ └── trailing_trivia (kind: Trivia) []
│ └── body (kind: ModuleBody)
│ ├── lbrace (kind: TerminalLBrace)
│ │ ├── leading_trivia (kind: Trivia) []
│ │ ├── token (kind: TokenLBrace): '{'
│ │ └── trailing_trivia (kind: Trivia)
│ │ └── child #0 (kind: TokenNewline).
│ ├── items (kind: ModuleItemList)
│ │ ├── child #0 (kind: FunctionWithBody)
│ │ │ ├── attributes (kind: AttributeList) []
│ │ │ ├── visibility (kind: VisibilityDefault) []
│ │ │ ├── declaration (kind: FunctionDeclaration)
│ │ │ │ ├── function_kw (kind: TerminalFunction)
│ │ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── token (kind: TokenFunction): 'fn'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── name (kind: TerminalIdentifier)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenIdentifier): 'bar'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── generic_params (kind: OptionWrappedGenericParamListEmpty) []
│ │ │ │ └── signature (kind: FunctionSignature)
│ │ │ │ ├── lparen (kind: TerminalLParen)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenLParen): '('
│ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ ├── parameters (kind: ParamList)
│ │ │ │ │ ├── item #0 (kind: Param)
│ │ │ │ │ │ ├── modifiers (kind: ModifierList) []
│ │ │ │ │ │ ├── name (kind: TerminalIdentifier)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'x'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ └── type_clause (kind: TypeClause)
│ │ │ │ │ │ ├── colon (kind: TerminalColon)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenColon): ':'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'T0'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ ├── separator #0 (kind: TerminalComma)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenComma): ','
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ └── item #1 (kind: Param)
│ │ │ │ │ ├── modifiers (kind: ModifierList) []
│ │ │ │ │ ├── name (kind: TerminalIdentifier)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenIdentifier): 's'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ └── type_clause (kind: TypeClause)
│ │ │ │ │ ├── colon (kind: TerminalColon)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenColon): ':'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenIdentifier): 'S'
│ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ ├── rparen (kind: TerminalRParen)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenRParen): ')'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── ret_ty (kind: ReturnTypeClause)
│ │ │ │ │ ├── arrow (kind: TerminalArrow)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenArrow): '->'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenIdentifier): 'X'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── implicits_clause (kind: OptionImplicitsClauseEmpty) []
│ │ │ │ └── optional_no_panic (kind: OptionTerminalNoPanicEmpty) []
│ │ │ └── body (kind: ExprBlock)
│ │ │ ├── lbrace (kind: TerminalLBrace)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenLBrace): '{'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ ├── statements (kind: StatementList)
│ │ │ │ └── child #0 (kind: StatementExpr)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── expr (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: ExprBinary)
│ │ │ │ │ │ ├── lhs (kind: ExprBinary)
│ │ │ │ │ │ │ ├── lhs (kind: ExprPath)
│ │ │ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'x'
│ │ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── op (kind: TerminalDot)
│ │ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ │ ├── token (kind: TokenDot): '.'
│ │ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ │ └── rhs (kind: ExprPath)
│ │ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'a'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ │ ├── op (kind: TerminalMul)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenMul): '*'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ └── rhs: Missing []
│ │ │ │ │ ├── op (kind: TerminalPlus)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenPlus): '+'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ └── rhs (kind: ExprBinary)
│ │ │ │ │ ├── lhs (kind: ExprBinary)
│ │ │ │ │ │ ├── lhs (kind: ExprBinary)
│ │ │ │ │ │ │ ├── lhs (kind: ExprUnary)
│ │ │ │ │ │ │ │ ├── op (kind: TerminalMinus)
│ │ │ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ │ │ ├── token (kind: TokenMinus): '-'
│ │ │ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ │ │ └── expr: Missing []
│ │ │ │ │ │ │ ├── op (kind: TerminalDot)
│ │ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ │ ├── token (kind: TokenDot): '.'
│ │ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ │ │ └── rhs (kind: ExprPath)
│ │ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenIdentifier): 's'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── op (kind: TerminalDot)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenDot): '.'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ └── rhs (kind: ExprPath)
│ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenIdentifier): 's'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── op (kind: TerminalMul)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenMul): '*'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ └── rhs (kind: ExprFunctionCall)
│ │ │ │ │ ├── path (kind: ExprPath)
│ │ │ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenIdentifier): 'foo'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ └── arguments (kind: ArgListParenthesized)
│ │ │ │ │ ├── lparen (kind: TerminalLParen)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenLParen): '('
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ ├── arguments (kind: ArgList)
│ │ │ │ │ │ ├── item #0 (kind: Arg)
│ │ │ │ │ │ │ ├── modifiers (kind: ModifierList) []
│ │ │ │ │ │ │ └── arg_clause (kind: ArgClauseUnnamed)
│ │ │ │ │ │ │ └── value (kind: TerminalLiteralNumber)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenLiteralNumber): '1'
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── separator #0 (kind: TerminalComma)
│ │ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ │ ├── token (kind: TokenComma): ','
│ │ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ │ └── item #1 (kind: Arg)
│ │ │ │ │ │ ├── modifiers (kind: ModifierList) []
│ │ │ │ │ │ └── arg_clause (kind: ArgClauseUnnamed)
│ │ │ │ │ │ └── value (kind: TerminalLiteralNumber)
│ │ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ │ ├── token (kind: TokenLiteralNumber): '3'
│ │ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ │ └── rparen (kind: TerminalRParen)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenRParen): ')'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenNewline).
│ │ │ │ └── semicolon (kind: OptionTerminalSemicolonEmpty) []
│ │ │ └── rbrace (kind: TerminalRBrace)
│ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ ├── token (kind: TokenRBrace): '}'
│ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenNewline).
│ │ └── child #1 (kind: ItemStruct)
│ │ ├── attributes (kind: AttributeList) []
│ │ ├── visibility (kind: VisibilityDefault) []
│ │ ├── struct_kw (kind: TerminalStruct)
│ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ ├── token (kind: TokenStruct): 'struct'
│ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenWhitespace).
│ │ ├── name (kind: TerminalIdentifier)
│ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ ├── token (kind: TokenIdentifier): 'A'
│ │ │ └── trailing_trivia (kind: Trivia) []
│ │ ├── generic_params (kind: OptionWrappedGenericParamListEmpty) []
│ │ ├── lbrace (kind: TerminalLBrace)
│ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ ├── token (kind: TokenLBrace): '{'
│ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenNewline).
│ │ ├── members (kind: MemberList)
│ │ │ ├── item #0 (kind: Member)
│ │ │ │ ├── attributes (kind: AttributeList) []
│ │ │ │ ├── visibility (kind: VisibilityDefault) []
│ │ │ │ ├── name (kind: TerminalIdentifier)
│ │ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ │ ├── token (kind: TokenIdentifier): 'x'
│ │ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ │ └── type_clause (kind: TypeClause)
│ │ │ │ ├── colon (kind: TerminalColon)
│ │ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ │ ├── token (kind: TokenColon): ':'
│ │ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ └── ty (kind: ExprPath)
│ │ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenIdentifier): 'a'
│ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ ├── separator #0 (kind: TerminalComma)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenComma): ','
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ ├── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── child #1 (kind: TokenSingleLineComment): '// Comment.'
│ │ │ │ └── child #2 (kind: TokenNewline).
│ │ │ └── item #1 (kind: Member)
│ │ │ ├── attributes (kind: AttributeList) []
│ │ │ ├── visibility (kind: VisibilityDefault) []
│ │ │ ├── name (kind: TerminalIdentifier)
│ │ │ │ ├── leading_trivia (kind: Trivia)
│ │ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ │ ├── token (kind: TokenIdentifier): 'y'
│ │ │ │ └── trailing_trivia (kind: Trivia) []
│ │ │ └── type_clause (kind: TypeClause)
│ │ │ ├── colon (kind: TerminalColon)
│ │ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ │ ├── token (kind: TokenColon): ':'
│ │ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ │ └── child #0 (kind: TokenWhitespace).
│ │ │ └── ty (kind: ExprPath)
│ │ │ └── item #0 (kind: PathSegmentSimple)
│ │ │ └── ident (kind: TerminalIdentifier)
│ │ │ ├── leading_trivia (kind: Trivia) []
│ │ │ ├── token (kind: TokenIdentifier): 'int'
│ │ │ └── trailing_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenNewline).
│ │ └── rbrace (kind: TerminalRBrace)
│ │ ├── leading_trivia (kind: Trivia)
│ │ │ └── child #0 (kind: TokenWhitespace).
│ │ ├── token (kind: TokenRBrace): '}'
│ │ └── trailing_trivia (kind: Trivia)
│ │ └── child #0 (kind: TokenNewline).
│ └── rbrace (kind: TerminalRBrace)
│ ├── leading_trivia (kind: Trivia)
│ │ └── child #0 (kind: TokenNewline).
│ ├── token (kind: TokenRBrace): '}'
│ └── trailing_trivia (kind: Trivia)
│ └── child #0 (kind: TokenNewline).
└── eof (kind: TerminalEndOfFile)
├── leading_trivia (kind: Trivia)
│ ├── child #0 (kind: TokenNewline).
│ ├── child #1 (kind: TokenSkipped): 'skipped'
│ ├── child #2 (kind: TokenWhitespace).
│ ├── child #3 (kind: TokenSkipped): 'tokens'
│ └── child #4 (kind: TokenNewline).
├── token (kind: TokenEndOfFile).
└── trailing_trivia (kind: Trivia) []