Files
sdk/pkg/front_end/parser_testcases/general/chained_call_07.dart.expect
T
Jens Johansen 3a1f732c0f [parser] Make begin/end events always come in pairs
This CL:
* Changes the events so beginX and endX events always comes in pairs
  (though technically not right as some specific events can be beginX
  endY --- but in those cases it is at least documented and used in code
  that actually tests it).
  -> This entails adding some events and converting something from
    "beginX" to "handleX" instead.
* Adds a utility that can generate an AST of sorts directly from the
  parser via a listener using the begin/end matching (and knowing of the
  specific ones that doesn't match directly).
* Adds a test that checks that - at least for all tested (50,000+) files
  - the AST actually generate "correctly", i.e. matches up begin/ends
  and ends up with a single top entry "CompilationUnit".
* Adds a different visualization to the parser listener events by
  displaying the "AST directly from the parser" in a UI that can be
  navigated. The visualization may not be the best, but it's certainly
  a stepping stone.

Change-Id: I9b27f7bbf3be442adc92f357c7b3c46da6f84cf7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/159664
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-09-01 09:30:43 +00:00

57 lines
2.0 KiB
Plaintext

beginCompilationUnit(void)
beginMetadataStar(void)
endMetadataStar(0)
beginTopLevelMember(void)
beginTopLevelMethod(, null)
handleVoidKeyword(void)
handleIdentifier(f, topLevelFunctionDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.TopLevelMethod)
beginMetadataStar(dynamic)
endMetadataStar(0)
beginFormalParameter(dynamic, MemberKind.TopLevelMethod, null, null, null)
handleIdentifier(dynamic, typeReference)
handleNoTypeArguments(e)
handleType(dynamic, null)
handleIdentifier(e, formalParameterDeclaration)
handleFormalParameterWithoutValue())
endFormalParameter(null, null, e, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
handleAsyncModifier(null, null)
beginBlockFunctionBody({)
handleIdentifier(e, expression)
handleNoTypeArguments(.)
handleNoArguments(.)
handleSend(e, .)
handleIdentifier(f, expressionContinuation)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
beginArguments(()
endArguments(0, (, ))
handleSend(f, <)
handleEndingBinaryExpression(.)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
beginArguments(()
endArguments(0, (, ))
handleSend((, ))
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
beginArguments(()
endArguments(0, (, ))
handleSend((, ))
handleExpressionStatement(;)
endBlockFunctionBody(1, {, })
endTopLevelMethod(void, null, })
endTopLevelDeclaration()
endCompilationUnit(1, )