Files
sdk/pkg/front_end/parser_testcases/general/function_reference_kinds.dart.expect
T
Konstantin Shcheglov e7c6654312 Augment. Allow abstract top-level variables.
Permit `abstract` on top-level variable declarations when the
augmentations feature is enabled. Previously the parser always reported
`abstract` as extraneous at the top level, which rejected valid syntax
and dropped the modifier before later stages could see it.

Thread the abstract token through top-level field parsing, record it on
`TopLevelVariableDeclaration`, and pass it through the front-end
builders. Reorder the field callback arguments so `augment` precedes
`abstract`, matching the augmentation grammar for incomplete top-level
variables and keeping the parser, listener, and outline plumbing
consistent.

Change-Id: I680414a746b707d483e485702685c95f28a9c9ac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/494564
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2026-04-14 16:12:24 -07:00

116 lines
4.2 KiB
Plaintext

beginCompilationUnit(var)
beginMetadataStar(var)
endMetadataStar(0)
beginTopLevelMember(var)
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, var, )
handleNoType(var)
handleIdentifier(simpleIdentifier, topLevelVariableDeclaration)
beginFieldInitializer(=)
handleIdentifier(f, expression)
handleNoTypeArguments(<)
handleNoArguments(<)
handleSend(f, f)
beginTypeArguments(<)
handleIdentifier(a, typeReference)
handleNoTypeArguments(,)
handleType(a, null)
handleIdentifier(b, typeReference)
handleNoTypeArguments(>)
handleType(b, null)
endTypeArguments(2, <, >)
handleTypeArgumentApplication(<)
endFieldInitializer(=, >)
endTopLevelFields(null, null, null, null, null, null, var, 1, var, ;)
endTopLevelDeclaration(;)
beginMetadataStar(var)
endMetadataStar(0)
beginTopLevelMember(var)
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, var, ;)
handleNoType(var)
handleIdentifier(method, topLevelVariableDeclaration)
beginFieldInitializer(=)
handleIdentifier(f, expression)
handleNoTypeArguments(()
beginArguments(()
endArguments(0, (, ))
handleSend(f, ))
handleIdentifier(m, expressionContinuation)
handleNoTypeArguments(<)
handleNoArguments(<)
handleSend(m, m)
handleDotAccess(., m, false)
beginTypeArguments(<)
handleIdentifier(a, typeReference)
handleNoTypeArguments(,)
handleType(a, null)
handleIdentifier(b, typeReference)
handleNoTypeArguments(>)
handleType(b, null)
endTypeArguments(2, <, >)
handleTypeArgumentApplication(<)
endFieldInitializer(=, >)
endTopLevelFields(null, null, null, null, null, null, var, 1, var, ;)
endTopLevelDeclaration(;)
beginMetadataStar(var)
endMetadataStar(0)
beginTopLevelMember(var)
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, var, ;)
handleNoType(var)
handleIdentifier(prefixedIdentifier, topLevelVariableDeclaration)
beginFieldInitializer(=)
handleIdentifier(prefix, expression)
handleNoTypeArguments(.)
handleNoArguments(.)
handleSend(prefix, prefix)
handleIdentifier(f, expressionContinuation)
handleNoTypeArguments(<)
handleNoArguments(<)
handleSend(f, f)
handleDotAccess(., f, false)
beginTypeArguments(<)
handleIdentifier(a, typeReference)
handleNoTypeArguments(,)
handleType(a, null)
handleIdentifier(b, typeReference)
handleNoTypeArguments(>)
handleType(b, null)
endTypeArguments(2, <, >)
handleTypeArgumentApplication(<)
endFieldInitializer(=, >)
endTopLevelFields(null, null, null, null, null, null, var, 1, var, ;)
endTopLevelDeclaration(;)
beginMetadataStar(var)
endMetadataStar(0)
beginTopLevelMember(var)
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, var, ;)
handleNoType(var)
handleIdentifier(three_identifiers, topLevelVariableDeclaration)
beginFieldInitializer(=)
handleIdentifier(prefix, expression)
handleNoTypeArguments(.)
handleNoArguments(.)
handleSend(prefix, prefix)
handleIdentifier(ClassName, expressionContinuation)
handleNoTypeArguments(.)
handleNoArguments(.)
handleSend(ClassName, ClassName)
handleDotAccess(., ClassName, false)
handleIdentifier(m, expressionContinuation)
handleNoTypeArguments(<)
handleNoArguments(<)
handleSend(m, m)
handleDotAccess(., m, false)
beginTypeArguments(<)
handleIdentifier(a, typeReference)
handleNoTypeArguments(,)
handleType(a, null)
handleIdentifier(b, typeReference)
handleNoTypeArguments(>)
handleType(b, null)
endTypeArguments(2, <, >)
handleTypeArgumentApplication(<)
endFieldInitializer(=, >)
endTopLevelFields(null, null, null, null, null, null, var, 1, var, ;)
endTopLevelDeclaration(;)
endCompilationUnit(4, )