Version 2.12.0-81.0.dev
Merge commit 'c8105305ac7372a3db3ffcba2fb5ad67092ce7d4' into 'dev'
diff --git a/pkg/front_end/lib/src/fasta/util/direct_parser_ast.dart b/pkg/front_end/lib/src/fasta/util/direct_parser_ast.dart
index 68b390d..aa4bc82 100644
--- a/pkg/front_end/lib/src/fasta/util/direct_parser_ast.dart
+++ b/pkg/front_end/lib/src/fasta/util/direct_parser_ast.dart
@@ -14,18 +14,15 @@
import 'package:_fe_analyzer_shared/src/scanner/token.dart' show Token;
-import 'package:front_end/src/fasta/util/direct_parser_ast_helper.dart'
- show
- AbstractDirectParserASTListener,
- DirectParserASTContent,
- DirectParserASTType;
+import 'package:front_end/src/fasta/util/direct_parser_ast_helper.dart';
-DirectParserASTContent getAST(List<int> rawBytes, {bool includeBody: true}) {
+DirectParserASTContentCompilationUnitEnd getAST(List<int> rawBytes,
+ {bool includeBody: true, bool includeComments: false}) {
Uint8List bytes = new Uint8List(rawBytes.length + 1);
bytes.setRange(0, rawBytes.length, rawBytes);
Utf8BytesScanner scanner =
- new Utf8BytesScanner(bytes, includeComments: false);
+ new Utf8BytesScanner(bytes, includeComments: includeComments);
Token firstToken = scanner.tokenize();
if (firstToken == null) {
throw "firstToken is null";
@@ -42,6 +39,264 @@
return listener.data.single;
}
+extension GeneralASTContentExtension on DirectParserASTContent {
+ bool isClass() {
+ if (this is! DirectParserASTContentTopLevelDeclarationEnd) {
+ return false;
+ }
+ if (children.first
+ is! DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin) {
+ return false;
+ }
+ if (children.last is! DirectParserASTContentClassDeclarationEnd) {
+ return false;
+ }
+
+ return true;
+ }
+
+ List<E> recursivelyFind<E extends DirectParserASTContent>() {
+ Set<E> result = {};
+ _recursivelyFindInternal(this, result);
+ return result.toList();
+ }
+
+ static void _recursivelyFindInternal<E extends DirectParserASTContent>(
+ DirectParserASTContent node, Set<E> result) {
+ if (node is E) {
+ result.add(node);
+ return;
+ }
+ if (node.children == null) return;
+ for (DirectParserASTContent child in node.children) {
+ _recursivelyFindInternal(child, result);
+ }
+ }
+}
+
+extension CompilationUnitExtension on DirectParserASTContentCompilationUnitEnd {
+ List<DirectParserASTContentTopLevelDeclarationEnd> getClasses() {
+ List<DirectParserASTContentTopLevelDeclarationEnd> result = [];
+ for (DirectParserASTContent topLevel in children) {
+ if (!topLevel.isClass()) continue;
+ result.add(topLevel);
+ }
+ return result;
+ }
+
+ DirectParserASTContentCompilationUnitBegin getBegin() {
+ return children.first;
+ }
+}
+
+extension TopLevelDeclarationExtension
+ on DirectParserASTContentTopLevelDeclarationEnd {
+ DirectParserASTContentIdentifierHandle getClassIdentifier() {
+ if (!isClass()) {
+ throw "Not a class";
+ }
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentIdentifierHandle) return child;
+ }
+ throw "Not found.";
+ }
+
+ DirectParserASTContentClassDeclarationEnd getClassDeclaration() {
+ if (!isClass()) {
+ throw "Not a class";
+ }
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentClassDeclarationEnd) {
+ return child;
+ }
+ }
+ throw "Not found.";
+ }
+}
+
+extension ClassDeclaration on DirectParserASTContentClassDeclarationEnd {
+ DirectParserASTContentClassOrMixinBodyEnd getClassOrMixinBody() {
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentClassOrMixinBodyEnd) return child;
+ }
+ throw "Not found.";
+ }
+
+ DirectParserASTContentClassExtendsHandle getClassExtends() {
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentClassExtendsHandle) return child;
+ }
+ throw "Not found.";
+ }
+}
+
+extension ClassOrMixinBodyExtension
+ on DirectParserASTContentClassOrMixinBodyEnd {
+ List<DirectParserASTContentMemberEnd> getMembers() {
+ List<DirectParserASTContentMemberEnd> members = [];
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentMemberEnd) {
+ members.add(child);
+ }
+ }
+ return members;
+ }
+}
+
+extension MemberExtension on DirectParserASTContentMemberEnd {
+ bool isClassConstructor() {
+ DirectParserASTContent child = children[1];
+ if (child is DirectParserASTContentClassConstructorEnd) return true;
+ return false;
+ }
+
+ DirectParserASTContentClassConstructorEnd getClassConstructor() {
+ DirectParserASTContent child = children[1];
+ if (child is DirectParserASTContentClassConstructorEnd) return child;
+ throw "Not found";
+ }
+
+ bool isClassFields() {
+ DirectParserASTContent child = children[1];
+ if (child is DirectParserASTContentClassFieldsEnd) return true;
+ return false;
+ }
+
+ DirectParserASTContentClassFieldsEnd getClassFields() {
+ DirectParserASTContent child = children[1];
+ if (child is DirectParserASTContentClassFieldsEnd) return child;
+ throw "Not found";
+ }
+}
+
+extension ClassFieldsExtension on DirectParserASTContentClassFieldsEnd {
+ List<DirectParserASTContentIdentifierHandle> getFieldIdentifiers() {
+ // For now blindly assume that the last count identifiers are the names
+ // of the fields.
+ int countLeft = count;
+ List<DirectParserASTContentIdentifierHandle> identifiers =
+ new List<DirectParserASTContentIdentifierHandle>(count);
+ for (int i = children.length - 1; i >= 0; i--) {
+ DirectParserASTContent child = children[i];
+ if (child is DirectParserASTContentIdentifierHandle) {
+ countLeft--;
+ identifiers[countLeft] = child;
+ if (countLeft == 0) break;
+ }
+ }
+ if (countLeft != 0) throw "Didn't find the expected number of identifiers";
+ return identifiers;
+ }
+
+ DirectParserASTContentTypeHandle getFirstType() {
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentTypeHandle) return child;
+ }
+ return null;
+ }
+
+ DirectParserASTContentFieldInitializerEnd getFieldInitializer() {
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentFieldInitializerEnd) return child;
+ }
+ return null;
+ }
+}
+
+extension ClassConstructorExtension
+ on DirectParserASTContentClassConstructorEnd {
+ DirectParserASTContentFormalParametersEnd getFormalParameters() {
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentFormalParametersEnd) {
+ return child;
+ }
+ }
+ throw "Not found";
+ }
+
+ DirectParserASTContentInitializersEnd getInitializers() {
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentInitializersEnd) {
+ return child;
+ }
+ }
+ return null;
+ }
+
+ DirectParserASTContentBlockFunctionBodyEnd getBlockFunctionBody() {
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentBlockFunctionBodyEnd) {
+ return child;
+ }
+ }
+ return null;
+ }
+}
+
+extension FormalParametersExtension
+ on DirectParserASTContentFormalParametersEnd {
+ List<DirectParserASTContentFormalParameterEnd> getFormalParameters() {
+ List<DirectParserASTContentFormalParameterEnd> result = [];
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentFormalParameterEnd) {
+ result.add(child);
+ }
+ }
+ return result;
+ }
+
+ DirectParserASTContentOptionalFormalParametersEnd
+ getOptionalFormalParameters() {
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentOptionalFormalParametersEnd) {
+ return child;
+ }
+ }
+ return null;
+ }
+}
+
+extension FormalParameterExtension on DirectParserASTContentFormalParameterEnd {
+ DirectParserASTContentFormalParameterBegin getBegin() {
+ return children.first;
+ }
+}
+
+extension OptionalFormalParametersExtension
+ on DirectParserASTContentOptionalFormalParametersEnd {
+ List<DirectParserASTContentFormalParameterEnd> getFormalParameters() {
+ List<DirectParserASTContentFormalParameterEnd> result = [];
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentFormalParameterEnd) {
+ result.add(child);
+ }
+ }
+ return result;
+ }
+}
+
+extension InitializersExtension on DirectParserASTContentInitializersEnd {
+ List<DirectParserASTContentInitializerEnd> getInitializers() {
+ List<DirectParserASTContentInitializerEnd> result = [];
+ for (DirectParserASTContent child in children) {
+ if (child is DirectParserASTContentInitializerEnd) {
+ result.add(child);
+ }
+ }
+ return result;
+ }
+
+ DirectParserASTContentInitializersBegin getBegin() {
+ return children.first;
+ }
+}
+
+extension InitializerExtension on DirectParserASTContentInitializerEnd {
+ DirectParserASTContentInitializerBegin getBegin() {
+ return children.first;
+ }
+}
+
main(List<String> args) {
File f = new File(args[0]);
Uint8List data = f.readAsBytesSync();
@@ -75,17 +330,13 @@
}
class DirectParserASTListener extends AbstractDirectParserASTListener {
- void seen(
- String what, DirectParserASTType type, Map<String, Object> arguments) {
- switch (type) {
+ void seen(DirectParserASTContent entry) {
+ switch (entry.type) {
case DirectParserASTType.BEGIN:
case DirectParserASTType.HANDLE:
// This just adds stuff.
- data.add(new DirectParserASTContent(what, type, arguments));
+ data.add(entry);
break;
- case DirectParserASTType.DONE:
- // This shouldn't be seen. It's artificial.
- throw new StateError("Saw type 'DONE'");
case DirectParserASTType.END:
// End should gobble up everything until the corresponding begin (which
// should be the latest begin).
@@ -97,11 +348,11 @@
}
}
if (beginIndex == null) {
- throw "Couldn't find a begin for $what. Has:\n"
+ throw "Couldn't find a begin for ${entry.what}. Has:\n"
"${data.map((e) => "${e.what}: ${e.type}").join("\n")}";
}
String begin = data[beginIndex].what;
- String end = what;
+ String end = entry.what;
if (begin == end) {
// Exact match.
} else if (end == "TopLevelDeclaration" &&
@@ -154,11 +405,9 @@
} else {
throw "Unknown combination: begin$begin and end$end";
}
- List<DirectParserASTContent> content = data.sublist(beginIndex);
+ List<DirectParserASTContent> children = data.sublist(beginIndex);
data.length = beginIndex;
- data.add(new DirectParserASTContent(
- what, DirectParserASTType.DONE, arguments)
- ..content = content);
+ data.add(entry..children = children);
break;
}
}
diff --git a/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart b/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
index 7da31a4..70be181 100644
--- a/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
+++ b/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
@@ -13,6 +13,8 @@
import 'package:_fe_analyzer_shared/src/scanner/token.dart';
import 'package:front_end/src/fasta/messages.dart';
+// ignore_for_file: lines_longer_than_80_chars
+
// THIS FILE IS AUTO GENERATED BY
// 'tool/_fasta/direct_parser_ast_helper_creator.dart'
// Run e.g.
@@ -22,339 +24,493 @@
> pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
*/
-class DirectParserASTContent {
+abstract class DirectParserASTContent {
final String what;
final DirectParserASTType type;
- final Map<String, Object> arguments;
- List<DirectParserASTContent> content;
+ Map<String, Object> get deprecatedArguments;
+ List<DirectParserASTContent> children;
- DirectParserASTContent(this.what, this.type, this.arguments);
+ DirectParserASTContent(this.what, this.type);
// TODO(jensj): Compare two ASTs.
}
-enum DirectParserASTType { BEGIN, END, HANDLE, DONE }
+enum DirectParserASTType { BEGIN, END, HANDLE }
abstract class AbstractDirectParserASTListener implements Listener {
List<DirectParserASTContent> data = [];
- void seen(
- String what, DirectParserASTType type, Map<String, Object> arguments);
+ void seen(DirectParserASTContent entry);
void beginArguments(Token token) {
- seen("Arguments", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentArgumentsBegin data =
+ new DirectParserASTContentArgumentsBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endArguments(int count, Token beginToken, Token endToken) {
- seen("Arguments", DirectParserASTType.END,
- {"count": count, "beginToken": beginToken, "endToken": endToken});
+ DirectParserASTContentArgumentsEnd data =
+ new DirectParserASTContentArgumentsEnd(DirectParserASTType.END,
+ count: count, beginToken: beginToken, endToken: endToken);
+ seen(data);
}
void handleAsyncModifier(Token asyncToken, Token starToken) {
- seen("AsyncModifier", DirectParserASTType.HANDLE,
- {"asyncToken": asyncToken, "starToken": starToken});
+ DirectParserASTContentAsyncModifierHandle data =
+ new DirectParserASTContentAsyncModifierHandle(
+ DirectParserASTType.HANDLE,
+ asyncToken: asyncToken,
+ starToken: starToken);
+ seen(data);
}
void beginAwaitExpression(Token token) {
- seen("AwaitExpression", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentAwaitExpressionBegin data =
+ new DirectParserASTContentAwaitExpressionBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endAwaitExpression(Token beginToken, Token endToken) {
- seen("AwaitExpression", DirectParserASTType.END,
- {"beginToken": beginToken, "endToken": endToken});
+ DirectParserASTContentAwaitExpressionEnd data =
+ new DirectParserASTContentAwaitExpressionEnd(DirectParserASTType.END,
+ beginToken: beginToken, endToken: endToken);
+ seen(data);
}
void endInvalidAwaitExpression(
Token beginToken, Token endToken, MessageCode errorCode) {
- seen("InvalidAwaitExpression", DirectParserASTType.END, {
- "beginToken": beginToken,
- "endToken": endToken,
- "errorCode": errorCode
- });
+ DirectParserASTContentInvalidAwaitExpressionEnd data =
+ new DirectParserASTContentInvalidAwaitExpressionEnd(
+ DirectParserASTType.END,
+ beginToken: beginToken,
+ endToken: endToken,
+ errorCode: errorCode);
+ seen(data);
}
void beginBlock(Token token, BlockKind blockKind) {
- seen("Block", DirectParserASTType.BEGIN,
- {"token": token, "blockKind": blockKind});
+ DirectParserASTContentBlockBegin data =
+ new DirectParserASTContentBlockBegin(DirectParserASTType.BEGIN,
+ token: token, blockKind: blockKind);
+ seen(data);
}
void endBlock(
int count, Token beginToken, Token endToken, BlockKind blockKind) {
- seen("Block", DirectParserASTType.END, {
- "count": count,
- "beginToken": beginToken,
- "endToken": endToken,
- "blockKind": blockKind
- });
+ DirectParserASTContentBlockEnd data = new DirectParserASTContentBlockEnd(
+ DirectParserASTType.END,
+ count: count,
+ beginToken: beginToken,
+ endToken: endToken,
+ blockKind: blockKind);
+ seen(data);
}
void handleInvalidTopLevelBlock(Token token) {
- seen("InvalidTopLevelBlock", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentInvalidTopLevelBlockHandle data =
+ new DirectParserASTContentInvalidTopLevelBlockHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void beginCascade(Token token) {
- seen("Cascade", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentCascadeBegin data =
+ new DirectParserASTContentCascadeBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endCascade() {
- seen("Cascade", DirectParserASTType.END, {});
+ DirectParserASTContentCascadeEnd data =
+ new DirectParserASTContentCascadeEnd(DirectParserASTType.END);
+ seen(data);
}
void beginCaseExpression(Token caseKeyword) {
- seen("CaseExpression", DirectParserASTType.BEGIN,
- {"caseKeyword": caseKeyword});
+ DirectParserASTContentCaseExpressionBegin data =
+ new DirectParserASTContentCaseExpressionBegin(DirectParserASTType.BEGIN,
+ caseKeyword: caseKeyword);
+ seen(data);
}
void endCaseExpression(Token colon) {
- seen("CaseExpression", DirectParserASTType.END, {"colon": colon});
+ DirectParserASTContentCaseExpressionEnd data =
+ new DirectParserASTContentCaseExpressionEnd(DirectParserASTType.END,
+ colon: colon);
+ seen(data);
}
void beginClassOrMixinBody(DeclarationKind kind, Token token) {
- seen("ClassOrMixinBody", DirectParserASTType.BEGIN,
- {"kind": kind, "token": token});
+ DirectParserASTContentClassOrMixinBodyBegin data =
+ new DirectParserASTContentClassOrMixinBodyBegin(
+ DirectParserASTType.BEGIN,
+ kind: kind,
+ token: token);
+ seen(data);
}
void endClassOrMixinBody(
DeclarationKind kind, int memberCount, Token beginToken, Token endToken) {
- seen("ClassOrMixinBody", DirectParserASTType.END, {
- "kind": kind,
- "memberCount": memberCount,
- "beginToken": beginToken,
- "endToken": endToken
- });
+ DirectParserASTContentClassOrMixinBodyEnd data =
+ new DirectParserASTContentClassOrMixinBodyEnd(DirectParserASTType.END,
+ kind: kind,
+ memberCount: memberCount,
+ beginToken: beginToken,
+ endToken: endToken);
+ seen(data);
}
void beginClassOrNamedMixinApplicationPrelude(Token token) {
- seen("ClassOrNamedMixinApplicationPrelude", DirectParserASTType.BEGIN,
- {"token": token});
+ DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin data =
+ new DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void beginClassDeclaration(Token begin, Token abstractToken, Token name) {
- seen("ClassDeclaration", DirectParserASTType.BEGIN,
- {"begin": begin, "abstractToken": abstractToken, "name": name});
+ DirectParserASTContentClassDeclarationBegin data =
+ new DirectParserASTContentClassDeclarationBegin(
+ DirectParserASTType.BEGIN,
+ begin: begin,
+ abstractToken: abstractToken,
+ name: name);
+ seen(data);
}
void handleClassExtends(Token extendsKeyword, int typeCount) {
- seen("ClassExtends", DirectParserASTType.HANDLE,
- {"extendsKeyword": extendsKeyword, "typeCount": typeCount});
+ DirectParserASTContentClassExtendsHandle data =
+ new DirectParserASTContentClassExtendsHandle(DirectParserASTType.HANDLE,
+ extendsKeyword: extendsKeyword, typeCount: typeCount);
+ seen(data);
}
void handleClassOrMixinImplements(
Token implementsKeyword, int interfacesCount) {
- seen("ClassOrMixinImplements", DirectParserASTType.HANDLE, {
- "implementsKeyword": implementsKeyword,
- "interfacesCount": interfacesCount
- });
+ DirectParserASTContentClassOrMixinImplementsHandle data =
+ new DirectParserASTContentClassOrMixinImplementsHandle(
+ DirectParserASTType.HANDLE,
+ implementsKeyword: implementsKeyword,
+ interfacesCount: interfacesCount);
+ seen(data);
}
void handleClassHeader(Token begin, Token classKeyword, Token nativeToken) {
- seen("ClassHeader", DirectParserASTType.HANDLE, {
- "begin": begin,
- "classKeyword": classKeyword,
- "nativeToken": nativeToken
- });
+ DirectParserASTContentClassHeaderHandle data =
+ new DirectParserASTContentClassHeaderHandle(DirectParserASTType.HANDLE,
+ begin: begin, classKeyword: classKeyword, nativeToken: nativeToken);
+ seen(data);
}
void handleRecoverClassHeader() {
- seen("RecoverClassHeader", DirectParserASTType.HANDLE, {});
+ DirectParserASTContentRecoverClassHeaderHandle data =
+ new DirectParserASTContentRecoverClassHeaderHandle(
+ DirectParserASTType.HANDLE);
+ seen(data);
}
void endClassDeclaration(Token beginToken, Token endToken) {
- seen("ClassDeclaration", DirectParserASTType.END,
- {"beginToken": beginToken, "endToken": endToken});
+ DirectParserASTContentClassDeclarationEnd data =
+ new DirectParserASTContentClassDeclarationEnd(DirectParserASTType.END,
+ beginToken: beginToken, endToken: endToken);
+ seen(data);
}
void beginMixinDeclaration(Token mixinKeyword, Token name) {
- seen("MixinDeclaration", DirectParserASTType.BEGIN,
- {"mixinKeyword": mixinKeyword, "name": name});
+ DirectParserASTContentMixinDeclarationBegin data =
+ new DirectParserASTContentMixinDeclarationBegin(
+ DirectParserASTType.BEGIN,
+ mixinKeyword: mixinKeyword,
+ name: name);
+ seen(data);
}
void handleMixinOn(Token onKeyword, int typeCount) {
- seen("MixinOn", DirectParserASTType.HANDLE,
- {"onKeyword": onKeyword, "typeCount": typeCount});
+ DirectParserASTContentMixinOnHandle data =
+ new DirectParserASTContentMixinOnHandle(DirectParserASTType.HANDLE,
+ onKeyword: onKeyword, typeCount: typeCount);
+ seen(data);
}
void handleMixinHeader(Token mixinKeyword) {
- seen("MixinHeader", DirectParserASTType.HANDLE,
- {"mixinKeyword": mixinKeyword});
+ DirectParserASTContentMixinHeaderHandle data =
+ new DirectParserASTContentMixinHeaderHandle(DirectParserASTType.HANDLE,
+ mixinKeyword: mixinKeyword);
+ seen(data);
}
void handleRecoverMixinHeader() {
- seen("RecoverMixinHeader", DirectParserASTType.HANDLE, {});
+ DirectParserASTContentRecoverMixinHeaderHandle data =
+ new DirectParserASTContentRecoverMixinHeaderHandle(
+ DirectParserASTType.HANDLE);
+ seen(data);
}
void endMixinDeclaration(Token mixinKeyword, Token endToken) {
- seen("MixinDeclaration", DirectParserASTType.END,
- {"mixinKeyword": mixinKeyword, "endToken": endToken});
+ DirectParserASTContentMixinDeclarationEnd data =
+ new DirectParserASTContentMixinDeclarationEnd(DirectParserASTType.END,
+ mixinKeyword: mixinKeyword, endToken: endToken);
+ seen(data);
}
void beginUncategorizedTopLevelDeclaration(Token token) {
- seen("UncategorizedTopLevelDeclaration", DirectParserASTType.BEGIN,
- {"token": token});
+ DirectParserASTContentUncategorizedTopLevelDeclarationBegin data =
+ new DirectParserASTContentUncategorizedTopLevelDeclarationBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void beginExtensionDeclarationPrelude(Token extensionKeyword) {
- seen("ExtensionDeclarationPrelude", DirectParserASTType.BEGIN,
- {"extensionKeyword": extensionKeyword});
+ DirectParserASTContentExtensionDeclarationPreludeBegin data =
+ new DirectParserASTContentExtensionDeclarationPreludeBegin(
+ DirectParserASTType.BEGIN,
+ extensionKeyword: extensionKeyword);
+ seen(data);
}
void beginExtensionDeclaration(Token extensionKeyword, Token name) {
- seen("ExtensionDeclaration", DirectParserASTType.BEGIN,
- {"extensionKeyword": extensionKeyword, "name": name});
+ DirectParserASTContentExtensionDeclarationBegin data =
+ new DirectParserASTContentExtensionDeclarationBegin(
+ DirectParserASTType.BEGIN,
+ extensionKeyword: extensionKeyword,
+ name: name);
+ seen(data);
}
void endExtensionDeclaration(
Token extensionKeyword, Token onKeyword, Token endToken) {
- seen("ExtensionDeclaration", DirectParserASTType.END, {
- "extensionKeyword": extensionKeyword,
- "onKeyword": onKeyword,
- "endToken": endToken
- });
+ DirectParserASTContentExtensionDeclarationEnd data =
+ new DirectParserASTContentExtensionDeclarationEnd(
+ DirectParserASTType.END,
+ extensionKeyword: extensionKeyword,
+ onKeyword: onKeyword,
+ endToken: endToken);
+ seen(data);
}
void beginCombinators(Token token) {
- seen("Combinators", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentCombinatorsBegin data =
+ new DirectParserASTContentCombinatorsBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endCombinators(int count) {
- seen("Combinators", DirectParserASTType.END, {"count": count});
+ DirectParserASTContentCombinatorsEnd data =
+ new DirectParserASTContentCombinatorsEnd(DirectParserASTType.END,
+ count: count);
+ seen(data);
}
void beginCompilationUnit(Token token) {
- seen("CompilationUnit", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentCompilationUnitBegin data =
+ new DirectParserASTContentCompilationUnitBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void handleDirectivesOnly() {
- seen("DirectivesOnly", DirectParserASTType.HANDLE, {});
+ DirectParserASTContentDirectivesOnlyHandle data =
+ new DirectParserASTContentDirectivesOnlyHandle(
+ DirectParserASTType.HANDLE);
+ seen(data);
}
void endCompilationUnit(int count, Token token) {
- seen("CompilationUnit", DirectParserASTType.END,
- {"count": count, "token": token});
+ DirectParserASTContentCompilationUnitEnd data =
+ new DirectParserASTContentCompilationUnitEnd(DirectParserASTType.END,
+ count: count, token: token);
+ seen(data);
}
void beginConstLiteral(Token token) {
- seen("ConstLiteral", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentConstLiteralBegin data =
+ new DirectParserASTContentConstLiteralBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endConstLiteral(Token token) {
- seen("ConstLiteral", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentConstLiteralEnd data =
+ new DirectParserASTContentConstLiteralEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void beginConstructorReference(Token start) {
- seen("ConstructorReference", DirectParserASTType.BEGIN, {"start": start});
+ DirectParserASTContentConstructorReferenceBegin data =
+ new DirectParserASTContentConstructorReferenceBegin(
+ DirectParserASTType.BEGIN,
+ start: start);
+ seen(data);
}
void endConstructorReference(
Token start, Token periodBeforeName, Token endToken) {
- seen("ConstructorReference", DirectParserASTType.END, {
- "start": start,
- "periodBeforeName": periodBeforeName,
- "endToken": endToken
- });
+ DirectParserASTContentConstructorReferenceEnd data =
+ new DirectParserASTContentConstructorReferenceEnd(
+ DirectParserASTType.END,
+ start: start,
+ periodBeforeName: periodBeforeName,
+ endToken: endToken);
+ seen(data);
}
void beginDoWhileStatement(Token token) {
- seen("DoWhileStatement", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentDoWhileStatementBegin data =
+ new DirectParserASTContentDoWhileStatementBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endDoWhileStatement(
Token doKeyword, Token whileKeyword, Token endToken) {
- seen("DoWhileStatement", DirectParserASTType.END, {
- "doKeyword": doKeyword,
- "whileKeyword": whileKeyword,
- "endToken": endToken
- });
+ DirectParserASTContentDoWhileStatementEnd data =
+ new DirectParserASTContentDoWhileStatementEnd(DirectParserASTType.END,
+ doKeyword: doKeyword,
+ whileKeyword: whileKeyword,
+ endToken: endToken);
+ seen(data);
}
void beginDoWhileStatementBody(Token token) {
- seen("DoWhileStatementBody", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentDoWhileStatementBodyBegin data =
+ new DirectParserASTContentDoWhileStatementBodyBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endDoWhileStatementBody(Token token) {
- seen("DoWhileStatementBody", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentDoWhileStatementBodyEnd data =
+ new DirectParserASTContentDoWhileStatementBodyEnd(
+ DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void beginWhileStatementBody(Token token) {
- seen("WhileStatementBody", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentWhileStatementBodyBegin data =
+ new DirectParserASTContentWhileStatementBodyBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endWhileStatementBody(Token token) {
- seen("WhileStatementBody", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentWhileStatementBodyEnd data =
+ new DirectParserASTContentWhileStatementBodyEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void beginEnum(Token enumKeyword) {
- seen("Enum", DirectParserASTType.BEGIN, {"enumKeyword": enumKeyword});
+ DirectParserASTContentEnumBegin data = new DirectParserASTContentEnumBegin(
+ DirectParserASTType.BEGIN,
+ enumKeyword: enumKeyword);
+ seen(data);
}
void endEnum(Token enumKeyword, Token leftBrace, int count) {
- seen("Enum", DirectParserASTType.END,
- {"enumKeyword": enumKeyword, "leftBrace": leftBrace, "count": count});
+ DirectParserASTContentEnumEnd data = new DirectParserASTContentEnumEnd(
+ DirectParserASTType.END,
+ enumKeyword: enumKeyword,
+ leftBrace: leftBrace,
+ count: count);
+ seen(data);
}
void beginExport(Token token) {
- seen("Export", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentExportBegin data =
+ new DirectParserASTContentExportBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endExport(Token exportKeyword, Token semicolon) {
- seen("Export", DirectParserASTType.END,
- {"exportKeyword": exportKeyword, "semicolon": semicolon});
+ DirectParserASTContentExportEnd data = new DirectParserASTContentExportEnd(
+ DirectParserASTType.END,
+ exportKeyword: exportKeyword,
+ semicolon: semicolon);
+ seen(data);
}
void handleExtraneousExpression(Token token, Message message) {
- seen("ExtraneousExpression", DirectParserASTType.HANDLE,
- {"token": token, "message": message});
+ DirectParserASTContentExtraneousExpressionHandle data =
+ new DirectParserASTContentExtraneousExpressionHandle(
+ DirectParserASTType.HANDLE,
+ token: token,
+ message: message);
+ seen(data);
}
void handleExpressionStatement(Token token) {
- seen("ExpressionStatement", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentExpressionStatementHandle data =
+ new DirectParserASTContentExpressionStatementHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void beginFactoryMethod(
Token lastConsumed, Token externalToken, Token constToken) {
- seen("FactoryMethod", DirectParserASTType.BEGIN, {
- "lastConsumed": lastConsumed,
- "externalToken": externalToken,
- "constToken": constToken
- });
+ DirectParserASTContentFactoryMethodBegin data =
+ new DirectParserASTContentFactoryMethodBegin(DirectParserASTType.BEGIN,
+ lastConsumed: lastConsumed,
+ externalToken: externalToken,
+ constToken: constToken);
+ seen(data);
}
void endClassFactoryMethod(
Token beginToken, Token factoryKeyword, Token endToken) {
- seen("ClassFactoryMethod", DirectParserASTType.END, {
- "beginToken": beginToken,
- "factoryKeyword": factoryKeyword,
- "endToken": endToken
- });
+ DirectParserASTContentClassFactoryMethodEnd data =
+ new DirectParserASTContentClassFactoryMethodEnd(DirectParserASTType.END,
+ beginToken: beginToken,
+ factoryKeyword: factoryKeyword,
+ endToken: endToken);
+ seen(data);
}
void endMixinFactoryMethod(
Token beginToken, Token factoryKeyword, Token endToken) {
- seen("MixinFactoryMethod", DirectParserASTType.END, {
- "beginToken": beginToken,
- "factoryKeyword": factoryKeyword,
- "endToken": endToken
- });
+ DirectParserASTContentMixinFactoryMethodEnd data =
+ new DirectParserASTContentMixinFactoryMethodEnd(DirectParserASTType.END,
+ beginToken: beginToken,
+ factoryKeyword: factoryKeyword,
+ endToken: endToken);
+ seen(data);
}
void endExtensionFactoryMethod(
Token beginToken, Token factoryKeyword, Token endToken) {
- seen("ExtensionFactoryMethod", DirectParserASTType.END, {
- "beginToken": beginToken,
- "factoryKeyword": factoryKeyword,
- "endToken": endToken
- });
+ DirectParserASTContentExtensionFactoryMethodEnd data =
+ new DirectParserASTContentExtensionFactoryMethodEnd(
+ DirectParserASTType.END,
+ beginToken: beginToken,
+ factoryKeyword: factoryKeyword,
+ endToken: endToken);
+ seen(data);
}
void beginFormalParameter(Token token, MemberKind kind, Token requiredToken,
Token covariantToken, Token varFinalOrConst) {
- seen("FormalParameter", DirectParserASTType.BEGIN, {
- "token": token,
- "kind": kind,
- "requiredToken": requiredToken,
- "covariantToken": covariantToken,
- "varFinalOrConst": varFinalOrConst
- });
+ DirectParserASTContentFormalParameterBegin data =
+ new DirectParserASTContentFormalParameterBegin(
+ DirectParserASTType.BEGIN,
+ token: token,
+ kind: kind,
+ requiredToken: requiredToken,
+ covariantToken: covariantToken,
+ varFinalOrConst: varFinalOrConst);
+ seen(data);
}
void endFormalParameter(
@@ -365,35 +521,45 @@
Token initializerEnd,
FormalParameterKind kind,
MemberKind memberKind) {
- seen("FormalParameter", DirectParserASTType.END, {
- "thisKeyword": thisKeyword,
- "periodAfterThis": periodAfterThis,
- "nameToken": nameToken,
- "initializerStart": initializerStart,
- "initializerEnd": initializerEnd,
- "kind": kind,
- "memberKind": memberKind
- });
+ DirectParserASTContentFormalParameterEnd data =
+ new DirectParserASTContentFormalParameterEnd(DirectParserASTType.END,
+ thisKeyword: thisKeyword,
+ periodAfterThis: periodAfterThis,
+ nameToken: nameToken,
+ initializerStart: initializerStart,
+ initializerEnd: initializerEnd,
+ kind: kind,
+ memberKind: memberKind);
+ seen(data);
}
void handleNoFormalParameters(Token token, MemberKind kind) {
- seen("NoFormalParameters", DirectParserASTType.HANDLE,
- {"token": token, "kind": kind});
+ DirectParserASTContentNoFormalParametersHandle data =
+ new DirectParserASTContentNoFormalParametersHandle(
+ DirectParserASTType.HANDLE,
+ token: token,
+ kind: kind);
+ seen(data);
}
void beginFormalParameters(Token token, MemberKind kind) {
- seen("FormalParameters", DirectParserASTType.BEGIN,
- {"token": token, "kind": kind});
+ DirectParserASTContentFormalParametersBegin data =
+ new DirectParserASTContentFormalParametersBegin(
+ DirectParserASTType.BEGIN,
+ token: token,
+ kind: kind);
+ seen(data);
}
void endFormalParameters(
int count, Token beginToken, Token endToken, MemberKind kind) {
- seen("FormalParameters", DirectParserASTType.END, {
- "count": count,
- "beginToken": beginToken,
- "endToken": endToken,
- "kind": kind
- });
+ DirectParserASTContentFormalParametersEnd data =
+ new DirectParserASTContentFormalParametersEnd(DirectParserASTType.END,
+ count: count,
+ beginToken: beginToken,
+ endToken: endToken,
+ kind: kind);
+ seen(data);
}
void endClassFields(
@@ -406,17 +572,18 @@
int count,
Token beginToken,
Token endToken) {
- seen("ClassFields", DirectParserASTType.END, {
- "abstractToken": abstractToken,
- "externalToken": externalToken,
- "staticToken": staticToken,
- "covariantToken": covariantToken,
- "lateToken": lateToken,
- "varFinalOrConst": varFinalOrConst,
- "count": count,
- "beginToken": beginToken,
- "endToken": endToken
- });
+ DirectParserASTContentClassFieldsEnd data =
+ new DirectParserASTContentClassFieldsEnd(DirectParserASTType.END,
+ abstractToken: abstractToken,
+ externalToken: externalToken,
+ staticToken: staticToken,
+ covariantToken: covariantToken,
+ lateToken: lateToken,
+ varFinalOrConst: varFinalOrConst,
+ count: count,
+ beginToken: beginToken,
+ endToken: endToken);
+ seen(data);
}
void endMixinFields(
@@ -429,17 +596,18 @@
int count,
Token beginToken,
Token endToken) {
- seen("MixinFields", DirectParserASTType.END, {
- "abstractToken": abstractToken,
- "externalToken": externalToken,
- "staticToken": staticToken,
- "covariantToken": covariantToken,
- "lateToken": lateToken,
- "varFinalOrConst": varFinalOrConst,
- "count": count,
- "beginToken": beginToken,
- "endToken": endToken
- });
+ DirectParserASTContentMixinFieldsEnd data =
+ new DirectParserASTContentMixinFieldsEnd(DirectParserASTType.END,
+ abstractToken: abstractToken,
+ externalToken: externalToken,
+ staticToken: staticToken,
+ covariantToken: covariantToken,
+ lateToken: lateToken,
+ varFinalOrConst: varFinalOrConst,
+ count: count,
+ beginToken: beginToken,
+ endToken: endToken);
+ seen(data);
}
void endExtensionFields(
@@ -452,658 +620,1018 @@
int count,
Token beginToken,
Token endToken) {
- seen("ExtensionFields", DirectParserASTType.END, {
- "abstractToken": abstractToken,
- "externalToken": externalToken,
- "staticToken": staticToken,
- "covariantToken": covariantToken,
- "lateToken": lateToken,
- "varFinalOrConst": varFinalOrConst,
- "count": count,
- "beginToken": beginToken,
- "endToken": endToken
- });
+ DirectParserASTContentExtensionFieldsEnd data =
+ new DirectParserASTContentExtensionFieldsEnd(DirectParserASTType.END,
+ abstractToken: abstractToken,
+ externalToken: externalToken,
+ staticToken: staticToken,
+ covariantToken: covariantToken,
+ lateToken: lateToken,
+ varFinalOrConst: varFinalOrConst,
+ count: count,
+ beginToken: beginToken,
+ endToken: endToken);
+ seen(data);
}
void handleForInitializerEmptyStatement(Token token) {
- seen("ForInitializerEmptyStatement", DirectParserASTType.HANDLE,
- {"token": token});
+ DirectParserASTContentForInitializerEmptyStatementHandle data =
+ new DirectParserASTContentForInitializerEmptyStatementHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleForInitializerExpressionStatement(Token token, bool forIn) {
- seen("ForInitializerExpressionStatement", DirectParserASTType.HANDLE,
- {"token": token, "forIn": forIn});
+ DirectParserASTContentForInitializerExpressionStatementHandle data =
+ new DirectParserASTContentForInitializerExpressionStatementHandle(
+ DirectParserASTType.HANDLE,
+ token: token,
+ forIn: forIn);
+ seen(data);
}
void handleForInitializerLocalVariableDeclaration(Token token, bool forIn) {
- seen("ForInitializerLocalVariableDeclaration", DirectParserASTType.HANDLE,
- {"token": token, "forIn": forIn});
+ DirectParserASTContentForInitializerLocalVariableDeclarationHandle data =
+ new DirectParserASTContentForInitializerLocalVariableDeclarationHandle(
+ DirectParserASTType.HANDLE,
+ token: token,
+ forIn: forIn);
+ seen(data);
}
void beginForStatement(Token token) {
- seen("ForStatement", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentForStatementBegin data =
+ new DirectParserASTContentForStatementBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void handleForLoopParts(Token forKeyword, Token leftParen,
Token leftSeparator, int updateExpressionCount) {
- seen("ForLoopParts", DirectParserASTType.HANDLE, {
- "forKeyword": forKeyword,
- "leftParen": leftParen,
- "leftSeparator": leftSeparator,
- "updateExpressionCount": updateExpressionCount
- });
+ DirectParserASTContentForLoopPartsHandle data =
+ new DirectParserASTContentForLoopPartsHandle(DirectParserASTType.HANDLE,
+ forKeyword: forKeyword,
+ leftParen: leftParen,
+ leftSeparator: leftSeparator,
+ updateExpressionCount: updateExpressionCount);
+ seen(data);
}
void endForStatement(Token endToken) {
- seen("ForStatement", DirectParserASTType.END, {"endToken": endToken});
+ DirectParserASTContentForStatementEnd data =
+ new DirectParserASTContentForStatementEnd(DirectParserASTType.END,
+ endToken: endToken);
+ seen(data);
}
void beginForStatementBody(Token token) {
- seen("ForStatementBody", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentForStatementBodyBegin data =
+ new DirectParserASTContentForStatementBodyBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endForStatementBody(Token token) {
- seen("ForStatementBody", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentForStatementBodyEnd data =
+ new DirectParserASTContentForStatementBodyEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void handleForInLoopParts(Token awaitToken, Token forToken,
Token leftParenthesis, Token inKeyword) {
- seen("ForInLoopParts", DirectParserASTType.HANDLE, {
- "awaitToken": awaitToken,
- "forToken": forToken,
- "leftParenthesis": leftParenthesis,
- "inKeyword": inKeyword
- });
+ DirectParserASTContentForInLoopPartsHandle data =
+ new DirectParserASTContentForInLoopPartsHandle(
+ DirectParserASTType.HANDLE,
+ awaitToken: awaitToken,
+ forToken: forToken,
+ leftParenthesis: leftParenthesis,
+ inKeyword: inKeyword);
+ seen(data);
}
void endForIn(Token endToken) {
- seen("ForIn", DirectParserASTType.END, {"endToken": endToken});
+ DirectParserASTContentForInEnd data = new DirectParserASTContentForInEnd(
+ DirectParserASTType.END,
+ endToken: endToken);
+ seen(data);
}
void beginForInExpression(Token token) {
- seen("ForInExpression", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentForInExpressionBegin data =
+ new DirectParserASTContentForInExpressionBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endForInExpression(Token token) {
- seen("ForInExpression", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentForInExpressionEnd data =
+ new DirectParserASTContentForInExpressionEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void beginForInBody(Token token) {
- seen("ForInBody", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentForInBodyBegin data =
+ new DirectParserASTContentForInBodyBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endForInBody(Token token) {
- seen("ForInBody", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentForInBodyEnd data =
+ new DirectParserASTContentForInBodyEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void beginNamedFunctionExpression(Token token) {
- seen(
- "NamedFunctionExpression", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentNamedFunctionExpressionBegin data =
+ new DirectParserASTContentNamedFunctionExpressionBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endNamedFunctionExpression(Token endToken) {
- seen("NamedFunctionExpression", DirectParserASTType.END,
- {"endToken": endToken});
+ DirectParserASTContentNamedFunctionExpressionEnd data =
+ new DirectParserASTContentNamedFunctionExpressionEnd(
+ DirectParserASTType.END,
+ endToken: endToken);
+ seen(data);
}
void beginLocalFunctionDeclaration(Token token) {
- seen("LocalFunctionDeclaration", DirectParserASTType.BEGIN,
- {"token": token});
+ DirectParserASTContentLocalFunctionDeclarationBegin data =
+ new DirectParserASTContentLocalFunctionDeclarationBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endLocalFunctionDeclaration(Token endToken) {
- seen("LocalFunctionDeclaration", DirectParserASTType.END,
- {"endToken": endToken});
+ DirectParserASTContentLocalFunctionDeclarationEnd data =
+ new DirectParserASTContentLocalFunctionDeclarationEnd(
+ DirectParserASTType.END,
+ endToken: endToken);
+ seen(data);
}
void beginBlockFunctionBody(Token token) {
- seen("BlockFunctionBody", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentBlockFunctionBodyBegin data =
+ new DirectParserASTContentBlockFunctionBodyBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endBlockFunctionBody(int count, Token beginToken, Token endToken) {
- seen("BlockFunctionBody", DirectParserASTType.END,
- {"count": count, "beginToken": beginToken, "endToken": endToken});
+ DirectParserASTContentBlockFunctionBodyEnd data =
+ new DirectParserASTContentBlockFunctionBodyEnd(DirectParserASTType.END,
+ count: count, beginToken: beginToken, endToken: endToken);
+ seen(data);
}
void handleNoFunctionBody(Token token) {
- seen("NoFunctionBody", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentNoFunctionBodyHandle data =
+ new DirectParserASTContentNoFunctionBodyHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleFunctionBodySkipped(Token token, bool isExpressionBody) {
- seen("FunctionBodySkipped", DirectParserASTType.HANDLE,
- {"token": token, "isExpressionBody": isExpressionBody});
+ DirectParserASTContentFunctionBodySkippedHandle data =
+ new DirectParserASTContentFunctionBodySkippedHandle(
+ DirectParserASTType.HANDLE,
+ token: token,
+ isExpressionBody: isExpressionBody);
+ seen(data);
}
void beginFunctionName(Token token) {
- seen("FunctionName", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentFunctionNameBegin data =
+ new DirectParserASTContentFunctionNameBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endFunctionName(Token beginToken, Token token) {
- seen("FunctionName", DirectParserASTType.END,
- {"beginToken": beginToken, "token": token});
+ DirectParserASTContentFunctionNameEnd data =
+ new DirectParserASTContentFunctionNameEnd(DirectParserASTType.END,
+ beginToken: beginToken, token: token);
+ seen(data);
}
void beginFunctionTypeAlias(Token token) {
- seen("FunctionTypeAlias", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentFunctionTypeAliasBegin data =
+ new DirectParserASTContentFunctionTypeAliasBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endFunctionTypeAlias(
Token typedefKeyword, Token equals, Token endToken) {
- seen("FunctionTypeAlias", DirectParserASTType.END, {
- "typedefKeyword": typedefKeyword,
- "equals": equals,
- "endToken": endToken
- });
+ DirectParserASTContentFunctionTypeAliasEnd data =
+ new DirectParserASTContentFunctionTypeAliasEnd(DirectParserASTType.END,
+ typedefKeyword: typedefKeyword, equals: equals, endToken: endToken);
+ seen(data);
}
void handleClassWithClause(Token withKeyword) {
- seen("ClassWithClause", DirectParserASTType.HANDLE,
- {"withKeyword": withKeyword});
+ DirectParserASTContentClassWithClauseHandle data =
+ new DirectParserASTContentClassWithClauseHandle(
+ DirectParserASTType.HANDLE,
+ withKeyword: withKeyword);
+ seen(data);
}
void handleClassNoWithClause() {
- seen("ClassNoWithClause", DirectParserASTType.HANDLE, {});
+ DirectParserASTContentClassNoWithClauseHandle data =
+ new DirectParserASTContentClassNoWithClauseHandle(
+ DirectParserASTType.HANDLE);
+ seen(data);
}
void beginNamedMixinApplication(
Token begin, Token abstractToken, Token name) {
- seen("NamedMixinApplication", DirectParserASTType.BEGIN,
- {"begin": begin, "abstractToken": abstractToken, "name": name});
+ DirectParserASTContentNamedMixinApplicationBegin data =
+ new DirectParserASTContentNamedMixinApplicationBegin(
+ DirectParserASTType.BEGIN,
+ begin: begin,
+ abstractToken: abstractToken,
+ name: name);
+ seen(data);
}
void handleNamedMixinApplicationWithClause(Token withKeyword) {
- seen("NamedMixinApplicationWithClause", DirectParserASTType.HANDLE,
- {"withKeyword": withKeyword});
+ DirectParserASTContentNamedMixinApplicationWithClauseHandle data =
+ new DirectParserASTContentNamedMixinApplicationWithClauseHandle(
+ DirectParserASTType.HANDLE,
+ withKeyword: withKeyword);
+ seen(data);
}
void endNamedMixinApplication(Token begin, Token classKeyword, Token equals,
Token implementsKeyword, Token endToken) {
- seen("NamedMixinApplication", DirectParserASTType.END, {
- "begin": begin,
- "classKeyword": classKeyword,
- "equals": equals,
- "implementsKeyword": implementsKeyword,
- "endToken": endToken
- });
+ DirectParserASTContentNamedMixinApplicationEnd data =
+ new DirectParserASTContentNamedMixinApplicationEnd(
+ DirectParserASTType.END,
+ begin: begin,
+ classKeyword: classKeyword,
+ equals: equals,
+ implementsKeyword: implementsKeyword,
+ endToken: endToken);
+ seen(data);
}
void beginHide(Token hideKeyword) {
- seen("Hide", DirectParserASTType.BEGIN, {"hideKeyword": hideKeyword});
+ DirectParserASTContentHideBegin data = new DirectParserASTContentHideBegin(
+ DirectParserASTType.BEGIN,
+ hideKeyword: hideKeyword);
+ seen(data);
}
void endHide(Token hideKeyword) {
- seen("Hide", DirectParserASTType.END, {"hideKeyword": hideKeyword});
+ DirectParserASTContentHideEnd data = new DirectParserASTContentHideEnd(
+ DirectParserASTType.END,
+ hideKeyword: hideKeyword);
+ seen(data);
}
void handleIdentifierList(int count) {
- seen("IdentifierList", DirectParserASTType.HANDLE, {"count": count});
+ DirectParserASTContentIdentifierListHandle data =
+ new DirectParserASTContentIdentifierListHandle(
+ DirectParserASTType.HANDLE,
+ count: count);
+ seen(data);
}
void beginTypeList(Token token) {
- seen("TypeList", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentTypeListBegin data =
+ new DirectParserASTContentTypeListBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endTypeList(int count) {
- seen("TypeList", DirectParserASTType.END, {"count": count});
+ DirectParserASTContentTypeListEnd data =
+ new DirectParserASTContentTypeListEnd(DirectParserASTType.END,
+ count: count);
+ seen(data);
}
void beginIfStatement(Token token) {
- seen("IfStatement", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentIfStatementBegin data =
+ new DirectParserASTContentIfStatementBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endIfStatement(Token ifToken, Token elseToken) {
- seen("IfStatement", DirectParserASTType.END,
- {"ifToken": ifToken, "elseToken": elseToken});
+ DirectParserASTContentIfStatementEnd data =
+ new DirectParserASTContentIfStatementEnd(DirectParserASTType.END,
+ ifToken: ifToken, elseToken: elseToken);
+ seen(data);
}
void beginThenStatement(Token token) {
- seen("ThenStatement", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentThenStatementBegin data =
+ new DirectParserASTContentThenStatementBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endThenStatement(Token token) {
- seen("ThenStatement", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentThenStatementEnd data =
+ new DirectParserASTContentThenStatementEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void beginElseStatement(Token token) {
- seen("ElseStatement", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentElseStatementBegin data =
+ new DirectParserASTContentElseStatementBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endElseStatement(Token token) {
- seen("ElseStatement", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentElseStatementEnd data =
+ new DirectParserASTContentElseStatementEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void beginImport(Token importKeyword) {
- seen("Import", DirectParserASTType.BEGIN, {"importKeyword": importKeyword});
+ DirectParserASTContentImportBegin data =
+ new DirectParserASTContentImportBegin(DirectParserASTType.BEGIN,
+ importKeyword: importKeyword);
+ seen(data);
}
void handleImportPrefix(Token deferredKeyword, Token asKeyword) {
- seen("ImportPrefix", DirectParserASTType.HANDLE,
- {"deferredKeyword": deferredKeyword, "asKeyword": asKeyword});
+ DirectParserASTContentImportPrefixHandle data =
+ new DirectParserASTContentImportPrefixHandle(DirectParserASTType.HANDLE,
+ deferredKeyword: deferredKeyword, asKeyword: asKeyword);
+ seen(data);
}
void endImport(Token importKeyword, Token semicolon) {
- seen("Import", DirectParserASTType.END,
- {"importKeyword": importKeyword, "semicolon": semicolon});
+ DirectParserASTContentImportEnd data = new DirectParserASTContentImportEnd(
+ DirectParserASTType.END,
+ importKeyword: importKeyword,
+ semicolon: semicolon);
+ seen(data);
}
void handleRecoverImport(Token semicolon) {
- seen("RecoverImport", DirectParserASTType.HANDLE, {"semicolon": semicolon});
+ DirectParserASTContentRecoverImportHandle data =
+ new DirectParserASTContentRecoverImportHandle(
+ DirectParserASTType.HANDLE,
+ semicolon: semicolon);
+ seen(data);
}
void beginConditionalUris(Token token) {
- seen("ConditionalUris", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentConditionalUrisBegin data =
+ new DirectParserASTContentConditionalUrisBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endConditionalUris(int count) {
- seen("ConditionalUris", DirectParserASTType.END, {"count": count});
+ DirectParserASTContentConditionalUrisEnd data =
+ new DirectParserASTContentConditionalUrisEnd(DirectParserASTType.END,
+ count: count);
+ seen(data);
}
void beginConditionalUri(Token ifKeyword) {
- seen("ConditionalUri", DirectParserASTType.BEGIN, {"ifKeyword": ifKeyword});
+ DirectParserASTContentConditionalUriBegin data =
+ new DirectParserASTContentConditionalUriBegin(DirectParserASTType.BEGIN,
+ ifKeyword: ifKeyword);
+ seen(data);
}
void endConditionalUri(Token ifKeyword, Token leftParen, Token equalSign) {
- seen("ConditionalUri", DirectParserASTType.END, {
- "ifKeyword": ifKeyword,
- "leftParen": leftParen,
- "equalSign": equalSign
- });
+ DirectParserASTContentConditionalUriEnd data =
+ new DirectParserASTContentConditionalUriEnd(DirectParserASTType.END,
+ ifKeyword: ifKeyword, leftParen: leftParen, equalSign: equalSign);
+ seen(data);
}
void handleDottedName(int count, Token firstIdentifier) {
- seen("DottedName", DirectParserASTType.HANDLE,
- {"count": count, "firstIdentifier": firstIdentifier});
+ DirectParserASTContentDottedNameHandle data =
+ new DirectParserASTContentDottedNameHandle(DirectParserASTType.HANDLE,
+ count: count, firstIdentifier: firstIdentifier);
+ seen(data);
}
void beginImplicitCreationExpression(Token token) {
- seen("ImplicitCreationExpression", DirectParserASTType.BEGIN,
- {"token": token});
+ DirectParserASTContentImplicitCreationExpressionBegin data =
+ new DirectParserASTContentImplicitCreationExpressionBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endImplicitCreationExpression(Token token) {
- seen("ImplicitCreationExpression", DirectParserASTType.END,
- {"token": token});
+ DirectParserASTContentImplicitCreationExpressionEnd data =
+ new DirectParserASTContentImplicitCreationExpressionEnd(
+ DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void beginInitializedIdentifier(Token token) {
- seen("InitializedIdentifier", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentInitializedIdentifierBegin data =
+ new DirectParserASTContentInitializedIdentifierBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endInitializedIdentifier(Token nameToken) {
- seen("InitializedIdentifier", DirectParserASTType.END,
- {"nameToken": nameToken});
+ DirectParserASTContentInitializedIdentifierEnd data =
+ new DirectParserASTContentInitializedIdentifierEnd(
+ DirectParserASTType.END,
+ nameToken: nameToken);
+ seen(data);
}
void beginFieldInitializer(Token token) {
- seen("FieldInitializer", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentFieldInitializerBegin data =
+ new DirectParserASTContentFieldInitializerBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endFieldInitializer(Token assignment, Token token) {
- seen("FieldInitializer", DirectParserASTType.END,
- {"assignment": assignment, "token": token});
+ DirectParserASTContentFieldInitializerEnd data =
+ new DirectParserASTContentFieldInitializerEnd(DirectParserASTType.END,
+ assignment: assignment, token: token);
+ seen(data);
}
void handleNoFieldInitializer(Token token) {
- seen("NoFieldInitializer", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentNoFieldInitializerHandle data =
+ new DirectParserASTContentNoFieldInitializerHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void beginVariableInitializer(Token token) {
- seen("VariableInitializer", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentVariableInitializerBegin data =
+ new DirectParserASTContentVariableInitializerBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endVariableInitializer(Token assignmentOperator) {
- seen("VariableInitializer", DirectParserASTType.END,
- {"assignmentOperator": assignmentOperator});
+ DirectParserASTContentVariableInitializerEnd data =
+ new DirectParserASTContentVariableInitializerEnd(
+ DirectParserASTType.END,
+ assignmentOperator: assignmentOperator);
+ seen(data);
}
void handleNoVariableInitializer(Token token) {
- seen("NoVariableInitializer", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentNoVariableInitializerHandle data =
+ new DirectParserASTContentNoVariableInitializerHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void beginInitializer(Token token) {
- seen("Initializer", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentInitializerBegin data =
+ new DirectParserASTContentInitializerBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endInitializer(Token token) {
- seen("Initializer", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentInitializerEnd data =
+ new DirectParserASTContentInitializerEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void beginInitializers(Token token) {
- seen("Initializers", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentInitializersBegin data =
+ new DirectParserASTContentInitializersBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endInitializers(int count, Token beginToken, Token endToken) {
- seen("Initializers", DirectParserASTType.END,
- {"count": count, "beginToken": beginToken, "endToken": endToken});
+ DirectParserASTContentInitializersEnd data =
+ new DirectParserASTContentInitializersEnd(DirectParserASTType.END,
+ count: count, beginToken: beginToken, endToken: endToken);
+ seen(data);
}
void handleNoInitializers() {
- seen("NoInitializers", DirectParserASTType.HANDLE, {});
+ DirectParserASTContentNoInitializersHandle data =
+ new DirectParserASTContentNoInitializersHandle(
+ DirectParserASTType.HANDLE);
+ seen(data);
}
void handleInvalidExpression(Token token) {
- seen("InvalidExpression", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentInvalidExpressionHandle data =
+ new DirectParserASTContentInvalidExpressionHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleInvalidFunctionBody(Token token) {
- seen("InvalidFunctionBody", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentInvalidFunctionBodyHandle data =
+ new DirectParserASTContentInvalidFunctionBodyHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleInvalidTypeReference(Token token) {
- seen("InvalidTypeReference", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentInvalidTypeReferenceHandle data =
+ new DirectParserASTContentInvalidTypeReferenceHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleLabel(Token token) {
- seen("Label", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentLabelHandle data =
+ new DirectParserASTContentLabelHandle(DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void beginLabeledStatement(Token token, int labelCount) {
- seen("LabeledStatement", DirectParserASTType.BEGIN,
- {"token": token, "labelCount": labelCount});
+ DirectParserASTContentLabeledStatementBegin data =
+ new DirectParserASTContentLabeledStatementBegin(
+ DirectParserASTType.BEGIN,
+ token: token,
+ labelCount: labelCount);
+ seen(data);
}
void endLabeledStatement(int labelCount) {
- seen("LabeledStatement", DirectParserASTType.END,
- {"labelCount": labelCount});
+ DirectParserASTContentLabeledStatementEnd data =
+ new DirectParserASTContentLabeledStatementEnd(DirectParserASTType.END,
+ labelCount: labelCount);
+ seen(data);
}
void beginLibraryName(Token token) {
- seen("LibraryName", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentLibraryNameBegin data =
+ new DirectParserASTContentLibraryNameBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endLibraryName(Token libraryKeyword, Token semicolon) {
- seen("LibraryName", DirectParserASTType.END,
- {"libraryKeyword": libraryKeyword, "semicolon": semicolon});
+ DirectParserASTContentLibraryNameEnd data =
+ new DirectParserASTContentLibraryNameEnd(DirectParserASTType.END,
+ libraryKeyword: libraryKeyword, semicolon: semicolon);
+ seen(data);
}
void handleLiteralMapEntry(Token colon, Token endToken) {
- seen("LiteralMapEntry", DirectParserASTType.HANDLE,
- {"colon": colon, "endToken": endToken});
+ DirectParserASTContentLiteralMapEntryHandle data =
+ new DirectParserASTContentLiteralMapEntryHandle(
+ DirectParserASTType.HANDLE,
+ colon: colon,
+ endToken: endToken);
+ seen(data);
}
void beginLiteralString(Token token) {
- seen("LiteralString", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentLiteralStringBegin data =
+ new DirectParserASTContentLiteralStringBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void handleInterpolationExpression(Token leftBracket, Token rightBracket) {
- seen("InterpolationExpression", DirectParserASTType.HANDLE,
- {"leftBracket": leftBracket, "rightBracket": rightBracket});
+ DirectParserASTContentInterpolationExpressionHandle data =
+ new DirectParserASTContentInterpolationExpressionHandle(
+ DirectParserASTType.HANDLE,
+ leftBracket: leftBracket,
+ rightBracket: rightBracket);
+ seen(data);
}
void endLiteralString(int interpolationCount, Token endToken) {
- seen("LiteralString", DirectParserASTType.END,
- {"interpolationCount": interpolationCount, "endToken": endToken});
+ DirectParserASTContentLiteralStringEnd data =
+ new DirectParserASTContentLiteralStringEnd(DirectParserASTType.END,
+ interpolationCount: interpolationCount, endToken: endToken);
+ seen(data);
}
void handleStringJuxtaposition(Token startToken, int literalCount) {
- seen("StringJuxtaposition", DirectParserASTType.HANDLE,
- {"startToken": startToken, "literalCount": literalCount});
+ DirectParserASTContentStringJuxtapositionHandle data =
+ new DirectParserASTContentStringJuxtapositionHandle(
+ DirectParserASTType.HANDLE,
+ startToken: startToken,
+ literalCount: literalCount);
+ seen(data);
}
void beginMember() {
- seen("Member", DirectParserASTType.BEGIN, {});
+ DirectParserASTContentMemberBegin data =
+ new DirectParserASTContentMemberBegin(DirectParserASTType.BEGIN);
+ seen(data);
}
void handleInvalidMember(Token endToken) {
- seen("InvalidMember", DirectParserASTType.HANDLE, {"endToken": endToken});
+ DirectParserASTContentInvalidMemberHandle data =
+ new DirectParserASTContentInvalidMemberHandle(
+ DirectParserASTType.HANDLE,
+ endToken: endToken);
+ seen(data);
}
void endMember() {
- seen("Member", DirectParserASTType.END, {});
+ DirectParserASTContentMemberEnd data =
+ new DirectParserASTContentMemberEnd(DirectParserASTType.END);
+ seen(data);
}
void beginMethod(Token externalToken, Token staticToken, Token covariantToken,
Token varFinalOrConst, Token getOrSet, Token name) {
- seen("Method", DirectParserASTType.BEGIN, {
- "externalToken": externalToken,
- "staticToken": staticToken,
- "covariantToken": covariantToken,
- "varFinalOrConst": varFinalOrConst,
- "getOrSet": getOrSet,
- "name": name
- });
+ DirectParserASTContentMethodBegin data =
+ new DirectParserASTContentMethodBegin(DirectParserASTType.BEGIN,
+ externalToken: externalToken,
+ staticToken: staticToken,
+ covariantToken: covariantToken,
+ varFinalOrConst: varFinalOrConst,
+ getOrSet: getOrSet,
+ name: name);
+ seen(data);
}
void endClassMethod(Token getOrSet, Token beginToken, Token beginParam,
Token beginInitializers, Token endToken) {
- seen("ClassMethod", DirectParserASTType.END, {
- "getOrSet": getOrSet,
- "beginToken": beginToken,
- "beginParam": beginParam,
- "beginInitializers": beginInitializers,
- "endToken": endToken
- });
+ DirectParserASTContentClassMethodEnd data =
+ new DirectParserASTContentClassMethodEnd(DirectParserASTType.END,
+ getOrSet: getOrSet,
+ beginToken: beginToken,
+ beginParam: beginParam,
+ beginInitializers: beginInitializers,
+ endToken: endToken);
+ seen(data);
}
void endMixinMethod(Token getOrSet, Token beginToken, Token beginParam,
Token beginInitializers, Token endToken) {
- seen("MixinMethod", DirectParserASTType.END, {
- "getOrSet": getOrSet,
- "beginToken": beginToken,
- "beginParam": beginParam,
- "beginInitializers": beginInitializers,
- "endToken": endToken
- });
+ DirectParserASTContentMixinMethodEnd data =
+ new DirectParserASTContentMixinMethodEnd(DirectParserASTType.END,
+ getOrSet: getOrSet,
+ beginToken: beginToken,
+ beginParam: beginParam,
+ beginInitializers: beginInitializers,
+ endToken: endToken);
+ seen(data);
}
void endExtensionMethod(Token getOrSet, Token beginToken, Token beginParam,
Token beginInitializers, Token endToken) {
- seen("ExtensionMethod", DirectParserASTType.END, {
- "getOrSet": getOrSet,
- "beginToken": beginToken,
- "beginParam": beginParam,
- "beginInitializers": beginInitializers,
- "endToken": endToken
- });
+ DirectParserASTContentExtensionMethodEnd data =
+ new DirectParserASTContentExtensionMethodEnd(DirectParserASTType.END,
+ getOrSet: getOrSet,
+ beginToken: beginToken,
+ beginParam: beginParam,
+ beginInitializers: beginInitializers,
+ endToken: endToken);
+ seen(data);
}
void endClassConstructor(Token getOrSet, Token beginToken, Token beginParam,
Token beginInitializers, Token endToken) {
- seen("ClassConstructor", DirectParserASTType.END, {
- "getOrSet": getOrSet,
- "beginToken": beginToken,
- "beginParam": beginParam,
- "beginInitializers": beginInitializers,
- "endToken": endToken
- });
+ DirectParserASTContentClassConstructorEnd data =
+ new DirectParserASTContentClassConstructorEnd(DirectParserASTType.END,
+ getOrSet: getOrSet,
+ beginToken: beginToken,
+ beginParam: beginParam,
+ beginInitializers: beginInitializers,
+ endToken: endToken);
+ seen(data);
}
void endMixinConstructor(Token getOrSet, Token beginToken, Token beginParam,
Token beginInitializers, Token endToken) {
- seen("MixinConstructor", DirectParserASTType.END, {
- "getOrSet": getOrSet,
- "beginToken": beginToken,
- "beginParam": beginParam,
- "beginInitializers": beginInitializers,
- "endToken": endToken
- });
+ DirectParserASTContentMixinConstructorEnd data =
+ new DirectParserASTContentMixinConstructorEnd(DirectParserASTType.END,
+ getOrSet: getOrSet,
+ beginToken: beginToken,
+ beginParam: beginParam,
+ beginInitializers: beginInitializers,
+ endToken: endToken);
+ seen(data);
}
void endExtensionConstructor(Token getOrSet, Token beginToken,
Token beginParam, Token beginInitializers, Token endToken) {
- seen("ExtensionConstructor", DirectParserASTType.END, {
- "getOrSet": getOrSet,
- "beginToken": beginToken,
- "beginParam": beginParam,
- "beginInitializers": beginInitializers,
- "endToken": endToken
- });
+ DirectParserASTContentExtensionConstructorEnd data =
+ new DirectParserASTContentExtensionConstructorEnd(
+ DirectParserASTType.END,
+ getOrSet: getOrSet,
+ beginToken: beginToken,
+ beginParam: beginParam,
+ beginInitializers: beginInitializers,
+ endToken: endToken);
+ seen(data);
}
void beginMetadataStar(Token token) {
- seen("MetadataStar", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentMetadataStarBegin data =
+ new DirectParserASTContentMetadataStarBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endMetadataStar(int count) {
- seen("MetadataStar", DirectParserASTType.END, {"count": count});
+ DirectParserASTContentMetadataStarEnd data =
+ new DirectParserASTContentMetadataStarEnd(DirectParserASTType.END,
+ count: count);
+ seen(data);
}
void beginMetadata(Token token) {
- seen("Metadata", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentMetadataBegin data =
+ new DirectParserASTContentMetadataBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) {
- seen("Metadata", DirectParserASTType.END, {
- "beginToken": beginToken,
- "periodBeforeName": periodBeforeName,
- "endToken": endToken
- });
+ DirectParserASTContentMetadataEnd data =
+ new DirectParserASTContentMetadataEnd(DirectParserASTType.END,
+ beginToken: beginToken,
+ periodBeforeName: periodBeforeName,
+ endToken: endToken);
+ seen(data);
}
void beginOptionalFormalParameters(Token token) {
- seen("OptionalFormalParameters", DirectParserASTType.BEGIN,
- {"token": token});
+ DirectParserASTContentOptionalFormalParametersBegin data =
+ new DirectParserASTContentOptionalFormalParametersBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endOptionalFormalParameters(
int count, Token beginToken, Token endToken) {
- seen("OptionalFormalParameters", DirectParserASTType.END,
- {"count": count, "beginToken": beginToken, "endToken": endToken});
+ DirectParserASTContentOptionalFormalParametersEnd data =
+ new DirectParserASTContentOptionalFormalParametersEnd(
+ DirectParserASTType.END,
+ count: count,
+ beginToken: beginToken,
+ endToken: endToken);
+ seen(data);
}
void beginPart(Token token) {
- seen("Part", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentPartBegin data = new DirectParserASTContentPartBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endPart(Token partKeyword, Token semicolon) {
- seen("Part", DirectParserASTType.END,
- {"partKeyword": partKeyword, "semicolon": semicolon});
+ DirectParserASTContentPartEnd data = new DirectParserASTContentPartEnd(
+ DirectParserASTType.END,
+ partKeyword: partKeyword,
+ semicolon: semicolon);
+ seen(data);
}
void beginPartOf(Token token) {
- seen("PartOf", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentPartOfBegin data =
+ new DirectParserASTContentPartOfBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endPartOf(
Token partKeyword, Token ofKeyword, Token semicolon, bool hasName) {
- seen("PartOf", DirectParserASTType.END, {
- "partKeyword": partKeyword,
- "ofKeyword": ofKeyword,
- "semicolon": semicolon,
- "hasName": hasName
- });
+ DirectParserASTContentPartOfEnd data = new DirectParserASTContentPartOfEnd(
+ DirectParserASTType.END,
+ partKeyword: partKeyword,
+ ofKeyword: ofKeyword,
+ semicolon: semicolon,
+ hasName: hasName);
+ seen(data);
}
void beginRedirectingFactoryBody(Token token) {
- seen("RedirectingFactoryBody", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentRedirectingFactoryBodyBegin data =
+ new DirectParserASTContentRedirectingFactoryBodyBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endRedirectingFactoryBody(Token beginToken, Token endToken) {
- seen("RedirectingFactoryBody", DirectParserASTType.END,
- {"beginToken": beginToken, "endToken": endToken});
+ DirectParserASTContentRedirectingFactoryBodyEnd data =
+ new DirectParserASTContentRedirectingFactoryBodyEnd(
+ DirectParserASTType.END,
+ beginToken: beginToken,
+ endToken: endToken);
+ seen(data);
}
void beginReturnStatement(Token token) {
- seen("ReturnStatement", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentReturnStatementBegin data =
+ new DirectParserASTContentReturnStatementBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void handleNativeFunctionBody(Token nativeToken, Token semicolon) {
- seen("NativeFunctionBody", DirectParserASTType.HANDLE,
- {"nativeToken": nativeToken, "semicolon": semicolon});
+ DirectParserASTContentNativeFunctionBodyHandle data =
+ new DirectParserASTContentNativeFunctionBodyHandle(
+ DirectParserASTType.HANDLE,
+ nativeToken: nativeToken,
+ semicolon: semicolon);
+ seen(data);
}
void handleNativeFunctionBodyIgnored(Token nativeToken, Token semicolon) {
- seen("NativeFunctionBodyIgnored", DirectParserASTType.HANDLE,
- {"nativeToken": nativeToken, "semicolon": semicolon});
+ DirectParserASTContentNativeFunctionBodyIgnoredHandle data =
+ new DirectParserASTContentNativeFunctionBodyIgnoredHandle(
+ DirectParserASTType.HANDLE,
+ nativeToken: nativeToken,
+ semicolon: semicolon);
+ seen(data);
}
void handleNativeFunctionBodySkipped(Token nativeToken, Token semicolon) {
- seen("NativeFunctionBodySkipped", DirectParserASTType.HANDLE,
- {"nativeToken": nativeToken, "semicolon": semicolon});
+ DirectParserASTContentNativeFunctionBodySkippedHandle data =
+ new DirectParserASTContentNativeFunctionBodySkippedHandle(
+ DirectParserASTType.HANDLE,
+ nativeToken: nativeToken,
+ semicolon: semicolon);
+ seen(data);
}
void handleEmptyFunctionBody(Token semicolon) {
- seen("EmptyFunctionBody", DirectParserASTType.HANDLE,
- {"semicolon": semicolon});
+ DirectParserASTContentEmptyFunctionBodyHandle data =
+ new DirectParserASTContentEmptyFunctionBodyHandle(
+ DirectParserASTType.HANDLE,
+ semicolon: semicolon);
+ seen(data);
}
void handleExpressionFunctionBody(Token arrowToken, Token endToken) {
- seen("ExpressionFunctionBody", DirectParserASTType.HANDLE,
- {"arrowToken": arrowToken, "endToken": endToken});
+ DirectParserASTContentExpressionFunctionBodyHandle data =
+ new DirectParserASTContentExpressionFunctionBodyHandle(
+ DirectParserASTType.HANDLE,
+ arrowToken: arrowToken,
+ endToken: endToken);
+ seen(data);
}
void endReturnStatement(
bool hasExpression, Token beginToken, Token endToken) {
- seen("ReturnStatement", DirectParserASTType.END, {
- "hasExpression": hasExpression,
- "beginToken": beginToken,
- "endToken": endToken
- });
+ DirectParserASTContentReturnStatementEnd data =
+ new DirectParserASTContentReturnStatementEnd(DirectParserASTType.END,
+ hasExpression: hasExpression,
+ beginToken: beginToken,
+ endToken: endToken);
+ seen(data);
}
void handleSend(Token beginToken, Token endToken) {
- seen("Send", DirectParserASTType.HANDLE,
- {"beginToken": beginToken, "endToken": endToken});
+ DirectParserASTContentSendHandle data =
+ new DirectParserASTContentSendHandle(DirectParserASTType.HANDLE,
+ beginToken: beginToken, endToken: endToken);
+ seen(data);
}
void beginShow(Token showKeyword) {
- seen("Show", DirectParserASTType.BEGIN, {"showKeyword": showKeyword});
+ DirectParserASTContentShowBegin data = new DirectParserASTContentShowBegin(
+ DirectParserASTType.BEGIN,
+ showKeyword: showKeyword);
+ seen(data);
}
void endShow(Token showKeyword) {
- seen("Show", DirectParserASTType.END, {"showKeyword": showKeyword});
+ DirectParserASTContentShowEnd data = new DirectParserASTContentShowEnd(
+ DirectParserASTType.END,
+ showKeyword: showKeyword);
+ seen(data);
}
void beginSwitchStatement(Token token) {
- seen("SwitchStatement", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentSwitchStatementBegin data =
+ new DirectParserASTContentSwitchStatementBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endSwitchStatement(Token switchKeyword, Token endToken) {
- seen("SwitchStatement", DirectParserASTType.END,
- {"switchKeyword": switchKeyword, "endToken": endToken});
+ DirectParserASTContentSwitchStatementEnd data =
+ new DirectParserASTContentSwitchStatementEnd(DirectParserASTType.END,
+ switchKeyword: switchKeyword, endToken: endToken);
+ seen(data);
}
void beginSwitchBlock(Token token) {
- seen("SwitchBlock", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentSwitchBlockBegin data =
+ new DirectParserASTContentSwitchBlockBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endSwitchBlock(int caseCount, Token beginToken, Token endToken) {
- seen("SwitchBlock", DirectParserASTType.END, {
- "caseCount": caseCount,
- "beginToken": beginToken,
- "endToken": endToken
- });
+ DirectParserASTContentSwitchBlockEnd data =
+ new DirectParserASTContentSwitchBlockEnd(DirectParserASTType.END,
+ caseCount: caseCount, beginToken: beginToken, endToken: endToken);
+ seen(data);
}
void beginLiteralSymbol(Token token) {
- seen("LiteralSymbol", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentLiteralSymbolBegin data =
+ new DirectParserASTContentLiteralSymbolBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endLiteralSymbol(Token hashToken, int identifierCount) {
- seen("LiteralSymbol", DirectParserASTType.END,
- {"hashToken": hashToken, "identifierCount": identifierCount});
+ DirectParserASTContentLiteralSymbolEnd data =
+ new DirectParserASTContentLiteralSymbolEnd(DirectParserASTType.END,
+ hashToken: hashToken, identifierCount: identifierCount);
+ seen(data);
}
void handleThrowExpression(Token throwToken, Token endToken) {
- seen("ThrowExpression", DirectParserASTType.HANDLE,
- {"throwToken": throwToken, "endToken": endToken});
+ DirectParserASTContentThrowExpressionHandle data =
+ new DirectParserASTContentThrowExpressionHandle(
+ DirectParserASTType.HANDLE,
+ throwToken: throwToken,
+ endToken: endToken);
+ seen(data);
}
void beginRethrowStatement(Token token) {
- seen("RethrowStatement", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentRethrowStatementBegin data =
+ new DirectParserASTContentRethrowStatementBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endRethrowStatement(Token rethrowToken, Token endToken) {
- seen("RethrowStatement", DirectParserASTType.END,
- {"rethrowToken": rethrowToken, "endToken": endToken});
+ DirectParserASTContentRethrowStatementEnd data =
+ new DirectParserASTContentRethrowStatementEnd(DirectParserASTType.END,
+ rethrowToken: rethrowToken, endToken: endToken);
+ seen(data);
}
void endTopLevelDeclaration(Token nextToken) {
- seen("TopLevelDeclaration", DirectParserASTType.END,
- {"nextToken": nextToken});
+ DirectParserASTContentTopLevelDeclarationEnd data =
+ new DirectParserASTContentTopLevelDeclarationEnd(
+ DirectParserASTType.END,
+ nextToken: nextToken);
+ seen(data);
}
void handleInvalidTopLevelDeclaration(Token endToken) {
- seen("InvalidTopLevelDeclaration", DirectParserASTType.HANDLE,
- {"endToken": endToken});
+ DirectParserASTContentInvalidTopLevelDeclarationHandle data =
+ new DirectParserASTContentInvalidTopLevelDeclarationHandle(
+ DirectParserASTType.HANDLE,
+ endToken: endToken);
+ seen(data);
}
void beginTopLevelMember(Token token) {
- seen("TopLevelMember", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentTopLevelMemberBegin data =
+ new DirectParserASTContentTopLevelMemberBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void beginFields(Token lastConsumed) {
- seen("Fields", DirectParserASTType.BEGIN, {"lastConsumed": lastConsumed});
+ DirectParserASTContentFieldsBegin data =
+ new DirectParserASTContentFieldsBegin(DirectParserASTType.BEGIN,
+ lastConsumed: lastConsumed);
+ seen(data);
}
void endTopLevelFields(
@@ -1115,348 +1643,533 @@
int count,
Token beginToken,
Token endToken) {
- seen("TopLevelFields", DirectParserASTType.END, {
- "externalToken": externalToken,
- "staticToken": staticToken,
- "covariantToken": covariantToken,
- "lateToken": lateToken,
- "varFinalOrConst": varFinalOrConst,
- "count": count,
- "beginToken": beginToken,
- "endToken": endToken
- });
+ DirectParserASTContentTopLevelFieldsEnd data =
+ new DirectParserASTContentTopLevelFieldsEnd(DirectParserASTType.END,
+ externalToken: externalToken,
+ staticToken: staticToken,
+ covariantToken: covariantToken,
+ lateToken: lateToken,
+ varFinalOrConst: varFinalOrConst,
+ count: count,
+ beginToken: beginToken,
+ endToken: endToken);
+ seen(data);
}
void beginTopLevelMethod(Token lastConsumed, Token externalToken) {
- seen("TopLevelMethod", DirectParserASTType.BEGIN,
- {"lastConsumed": lastConsumed, "externalToken": externalToken});
+ DirectParserASTContentTopLevelMethodBegin data =
+ new DirectParserASTContentTopLevelMethodBegin(DirectParserASTType.BEGIN,
+ lastConsumed: lastConsumed, externalToken: externalToken);
+ seen(data);
}
void endTopLevelMethod(Token beginToken, Token getOrSet, Token endToken) {
- seen("TopLevelMethod", DirectParserASTType.END,
- {"beginToken": beginToken, "getOrSet": getOrSet, "endToken": endToken});
+ DirectParserASTContentTopLevelMethodEnd data =
+ new DirectParserASTContentTopLevelMethodEnd(DirectParserASTType.END,
+ beginToken: beginToken, getOrSet: getOrSet, endToken: endToken);
+ seen(data);
}
void beginTryStatement(Token token) {
- seen("TryStatement", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentTryStatementBegin data =
+ new DirectParserASTContentTryStatementBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void handleCaseMatch(Token caseKeyword, Token colon) {
- seen("CaseMatch", DirectParserASTType.HANDLE,
- {"caseKeyword": caseKeyword, "colon": colon});
+ DirectParserASTContentCaseMatchHandle data =
+ new DirectParserASTContentCaseMatchHandle(DirectParserASTType.HANDLE,
+ caseKeyword: caseKeyword, colon: colon);
+ seen(data);
}
void beginCatchClause(Token token) {
- seen("CatchClause", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentCatchClauseBegin data =
+ new DirectParserASTContentCatchClauseBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endCatchClause(Token token) {
- seen("CatchClause", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentCatchClauseEnd data =
+ new DirectParserASTContentCatchClauseEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void handleCatchBlock(Token onKeyword, Token catchKeyword, Token comma) {
- seen("CatchBlock", DirectParserASTType.HANDLE,
- {"onKeyword": onKeyword, "catchKeyword": catchKeyword, "comma": comma});
+ DirectParserASTContentCatchBlockHandle data =
+ new DirectParserASTContentCatchBlockHandle(DirectParserASTType.HANDLE,
+ onKeyword: onKeyword, catchKeyword: catchKeyword, comma: comma);
+ seen(data);
}
void handleFinallyBlock(Token finallyKeyword) {
- seen("FinallyBlock", DirectParserASTType.HANDLE,
- {"finallyKeyword": finallyKeyword});
+ DirectParserASTContentFinallyBlockHandle data =
+ new DirectParserASTContentFinallyBlockHandle(DirectParserASTType.HANDLE,
+ finallyKeyword: finallyKeyword);
+ seen(data);
}
void endTryStatement(int catchCount, Token tryKeyword, Token finallyKeyword) {
- seen("TryStatement", DirectParserASTType.END, {
- "catchCount": catchCount,
- "tryKeyword": tryKeyword,
- "finallyKeyword": finallyKeyword
- });
+ DirectParserASTContentTryStatementEnd data =
+ new DirectParserASTContentTryStatementEnd(DirectParserASTType.END,
+ catchCount: catchCount,
+ tryKeyword: tryKeyword,
+ finallyKeyword: finallyKeyword);
+ seen(data);
}
void handleType(Token beginToken, Token questionMark) {
- seen("Type", DirectParserASTType.HANDLE,
- {"beginToken": beginToken, "questionMark": questionMark});
+ DirectParserASTContentTypeHandle data =
+ new DirectParserASTContentTypeHandle(DirectParserASTType.HANDLE,
+ beginToken: beginToken, questionMark: questionMark);
+ seen(data);
}
void handleNonNullAssertExpression(Token bang) {
- seen("NonNullAssertExpression", DirectParserASTType.HANDLE, {"bang": bang});
+ DirectParserASTContentNonNullAssertExpressionHandle data =
+ new DirectParserASTContentNonNullAssertExpressionHandle(
+ DirectParserASTType.HANDLE,
+ bang: bang);
+ seen(data);
}
void handleNoName(Token token) {
- seen("NoName", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentNoNameHandle data =
+ new DirectParserASTContentNoNameHandle(DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void beginFunctionType(Token beginToken) {
- seen("FunctionType", DirectParserASTType.BEGIN, {"beginToken": beginToken});
+ DirectParserASTContentFunctionTypeBegin data =
+ new DirectParserASTContentFunctionTypeBegin(DirectParserASTType.BEGIN,
+ beginToken: beginToken);
+ seen(data);
}
void endFunctionType(Token functionToken, Token questionMark) {
- seen("FunctionType", DirectParserASTType.END,
- {"functionToken": functionToken, "questionMark": questionMark});
+ DirectParserASTContentFunctionTypeEnd data =
+ new DirectParserASTContentFunctionTypeEnd(DirectParserASTType.END,
+ functionToken: functionToken, questionMark: questionMark);
+ seen(data);
}
void beginTypeArguments(Token token) {
- seen("TypeArguments", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentTypeArgumentsBegin data =
+ new DirectParserASTContentTypeArgumentsBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endTypeArguments(int count, Token beginToken, Token endToken) {
- seen("TypeArguments", DirectParserASTType.END,
- {"count": count, "beginToken": beginToken, "endToken": endToken});
+ DirectParserASTContentTypeArgumentsEnd data =
+ new DirectParserASTContentTypeArgumentsEnd(DirectParserASTType.END,
+ count: count, beginToken: beginToken, endToken: endToken);
+ seen(data);
}
void handleInvalidTypeArguments(Token token) {
- seen("InvalidTypeArguments", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentInvalidTypeArgumentsHandle data =
+ new DirectParserASTContentInvalidTypeArgumentsHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleNoTypeArguments(Token token) {
- seen("NoTypeArguments", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentNoTypeArgumentsHandle data =
+ new DirectParserASTContentNoTypeArgumentsHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void beginTypeVariable(Token token) {
- seen("TypeVariable", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentTypeVariableBegin data =
+ new DirectParserASTContentTypeVariableBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void handleTypeVariablesDefined(Token token, int count) {
- seen("TypeVariablesDefined", DirectParserASTType.HANDLE,
- {"token": token, "count": count});
+ DirectParserASTContentTypeVariablesDefinedHandle data =
+ new DirectParserASTContentTypeVariablesDefinedHandle(
+ DirectParserASTType.HANDLE,
+ token: token,
+ count: count);
+ seen(data);
}
void endTypeVariable(
Token token, int index, Token extendsOrSuper, Token variance) {
- seen("TypeVariable", DirectParserASTType.END, {
- "token": token,
- "index": index,
- "extendsOrSuper": extendsOrSuper,
- "variance": variance
- });
+ DirectParserASTContentTypeVariableEnd data =
+ new DirectParserASTContentTypeVariableEnd(DirectParserASTType.END,
+ token: token,
+ index: index,
+ extendsOrSuper: extendsOrSuper,
+ variance: variance);
+ seen(data);
}
void beginTypeVariables(Token token) {
- seen("TypeVariables", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentTypeVariablesBegin data =
+ new DirectParserASTContentTypeVariablesBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endTypeVariables(Token beginToken, Token endToken) {
- seen("TypeVariables", DirectParserASTType.END,
- {"beginToken": beginToken, "endToken": endToken});
+ DirectParserASTContentTypeVariablesEnd data =
+ new DirectParserASTContentTypeVariablesEnd(DirectParserASTType.END,
+ beginToken: beginToken, endToken: endToken);
+ seen(data);
}
void beginFunctionExpression(Token token) {
- seen("FunctionExpression", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentFunctionExpressionBegin data =
+ new DirectParserASTContentFunctionExpressionBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endFunctionExpression(Token beginToken, Token token) {
- seen("FunctionExpression", DirectParserASTType.END,
- {"beginToken": beginToken, "token": token});
+ DirectParserASTContentFunctionExpressionEnd data =
+ new DirectParserASTContentFunctionExpressionEnd(DirectParserASTType.END,
+ beginToken: beginToken, token: token);
+ seen(data);
}
void beginVariablesDeclaration(
Token token, Token lateToken, Token varFinalOrConst) {
- seen("VariablesDeclaration", DirectParserASTType.BEGIN, {
- "token": token,
- "lateToken": lateToken,
- "varFinalOrConst": varFinalOrConst
- });
+ DirectParserASTContentVariablesDeclarationBegin data =
+ new DirectParserASTContentVariablesDeclarationBegin(
+ DirectParserASTType.BEGIN,
+ token: token,
+ lateToken: lateToken,
+ varFinalOrConst: varFinalOrConst);
+ seen(data);
}
void endVariablesDeclaration(int count, Token endToken) {
- seen("VariablesDeclaration", DirectParserASTType.END,
- {"count": count, "endToken": endToken});
+ DirectParserASTContentVariablesDeclarationEnd data =
+ new DirectParserASTContentVariablesDeclarationEnd(
+ DirectParserASTType.END,
+ count: count,
+ endToken: endToken);
+ seen(data);
}
void beginWhileStatement(Token token) {
- seen("WhileStatement", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentWhileStatementBegin data =
+ new DirectParserASTContentWhileStatementBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endWhileStatement(Token whileKeyword, Token endToken) {
- seen("WhileStatement", DirectParserASTType.END,
- {"whileKeyword": whileKeyword, "endToken": endToken});
+ DirectParserASTContentWhileStatementEnd data =
+ new DirectParserASTContentWhileStatementEnd(DirectParserASTType.END,
+ whileKeyword: whileKeyword, endToken: endToken);
+ seen(data);
}
void beginAsOperatorType(Token operator) {
- seen("AsOperatorType", DirectParserASTType.BEGIN, {"operator": operator});
+ DirectParserASTContentAsOperatorTypeBegin data =
+ new DirectParserASTContentAsOperatorTypeBegin(DirectParserASTType.BEGIN,
+ operator: operator);
+ seen(data);
}
void endAsOperatorType(Token operator) {
- seen("AsOperatorType", DirectParserASTType.END, {"operator": operator});
+ DirectParserASTContentAsOperatorTypeEnd data =
+ new DirectParserASTContentAsOperatorTypeEnd(DirectParserASTType.END,
+ operator: operator);
+ seen(data);
}
void handleAsOperator(Token operator) {
- seen("AsOperator", DirectParserASTType.HANDLE, {"operator": operator});
+ DirectParserASTContentAsOperatorHandle data =
+ new DirectParserASTContentAsOperatorHandle(DirectParserASTType.HANDLE,
+ operator: operator);
+ seen(data);
}
void handleAssignmentExpression(Token token) {
- seen("AssignmentExpression", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentAssignmentExpressionHandle data =
+ new DirectParserASTContentAssignmentExpressionHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void beginBinaryExpression(Token token) {
- seen("BinaryExpression", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentBinaryExpressionBegin data =
+ new DirectParserASTContentBinaryExpressionBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endBinaryExpression(Token token) {
- seen("BinaryExpression", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentBinaryExpressionEnd data =
+ new DirectParserASTContentBinaryExpressionEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void handleEndingBinaryExpression(Token token) {
- seen(
- "EndingBinaryExpression", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentEndingBinaryExpressionHandle data =
+ new DirectParserASTContentEndingBinaryExpressionHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void beginConditionalExpression(Token question) {
- seen("ConditionalExpression", DirectParserASTType.BEGIN,
- {"question": question});
+ DirectParserASTContentConditionalExpressionBegin data =
+ new DirectParserASTContentConditionalExpressionBegin(
+ DirectParserASTType.BEGIN,
+ question: question);
+ seen(data);
}
void handleConditionalExpressionColon() {
- seen("ConditionalExpressionColon", DirectParserASTType.HANDLE, {});
+ DirectParserASTContentConditionalExpressionColonHandle data =
+ new DirectParserASTContentConditionalExpressionColonHandle(
+ DirectParserASTType.HANDLE);
+ seen(data);
}
void endConditionalExpression(Token question, Token colon) {
- seen("ConditionalExpression", DirectParserASTType.END,
- {"question": question, "colon": colon});
+ DirectParserASTContentConditionalExpressionEnd data =
+ new DirectParserASTContentConditionalExpressionEnd(
+ DirectParserASTType.END,
+ question: question,
+ colon: colon);
+ seen(data);
}
void beginConstExpression(Token constKeyword) {
- seen("ConstExpression", DirectParserASTType.BEGIN,
- {"constKeyword": constKeyword});
+ DirectParserASTContentConstExpressionBegin data =
+ new DirectParserASTContentConstExpressionBegin(
+ DirectParserASTType.BEGIN,
+ constKeyword: constKeyword);
+ seen(data);
}
void endConstExpression(Token token) {
- seen("ConstExpression", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentConstExpressionEnd data =
+ new DirectParserASTContentConstExpressionEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void beginForControlFlow(Token awaitToken, Token forToken) {
- seen("ForControlFlow", DirectParserASTType.BEGIN,
- {"awaitToken": awaitToken, "forToken": forToken});
+ DirectParserASTContentForControlFlowBegin data =
+ new DirectParserASTContentForControlFlowBegin(DirectParserASTType.BEGIN,
+ awaitToken: awaitToken, forToken: forToken);
+ seen(data);
}
void endForControlFlow(Token token) {
- seen("ForControlFlow", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentForControlFlowEnd data =
+ new DirectParserASTContentForControlFlowEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void endForInControlFlow(Token token) {
- seen("ForInControlFlow", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentForInControlFlowEnd data =
+ new DirectParserASTContentForInControlFlowEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void beginIfControlFlow(Token ifToken) {
- seen("IfControlFlow", DirectParserASTType.BEGIN, {"ifToken": ifToken});
+ DirectParserASTContentIfControlFlowBegin data =
+ new DirectParserASTContentIfControlFlowBegin(DirectParserASTType.BEGIN,
+ ifToken: ifToken);
+ seen(data);
}
void handleThenControlFlow(Token token) {
- seen("ThenControlFlow", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentThenControlFlowHandle data =
+ new DirectParserASTContentThenControlFlowHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleElseControlFlow(Token elseToken) {
- seen("ElseControlFlow", DirectParserASTType.HANDLE,
- {"elseToken": elseToken});
+ DirectParserASTContentElseControlFlowHandle data =
+ new DirectParserASTContentElseControlFlowHandle(
+ DirectParserASTType.HANDLE,
+ elseToken: elseToken);
+ seen(data);
}
void endIfControlFlow(Token token) {
- seen("IfControlFlow", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentIfControlFlowEnd data =
+ new DirectParserASTContentIfControlFlowEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void endIfElseControlFlow(Token token) {
- seen("IfElseControlFlow", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentIfElseControlFlowEnd data =
+ new DirectParserASTContentIfElseControlFlowEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void handleSpreadExpression(Token spreadToken) {
- seen("SpreadExpression", DirectParserASTType.HANDLE,
- {"spreadToken": spreadToken});
+ DirectParserASTContentSpreadExpressionHandle data =
+ new DirectParserASTContentSpreadExpressionHandle(
+ DirectParserASTType.HANDLE,
+ spreadToken: spreadToken);
+ seen(data);
}
void beginFunctionTypedFormalParameter(Token token) {
- seen("FunctionTypedFormalParameter", DirectParserASTType.BEGIN,
- {"token": token});
+ DirectParserASTContentFunctionTypedFormalParameterBegin data =
+ new DirectParserASTContentFunctionTypedFormalParameterBegin(
+ DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endFunctionTypedFormalParameter(Token nameToken, Token question) {
- seen("FunctionTypedFormalParameter", DirectParserASTType.END,
- {"nameToken": nameToken, "question": question});
+ DirectParserASTContentFunctionTypedFormalParameterEnd data =
+ new DirectParserASTContentFunctionTypedFormalParameterEnd(
+ DirectParserASTType.END,
+ nameToken: nameToken,
+ question: question);
+ seen(data);
}
void handleIdentifier(Token token, IdentifierContext context) {
- seen("Identifier", DirectParserASTType.HANDLE,
- {"token": token, "context": context});
+ DirectParserASTContentIdentifierHandle data =
+ new DirectParserASTContentIdentifierHandle(DirectParserASTType.HANDLE,
+ token: token, context: context);
+ seen(data);
}
void handleIndexedExpression(
Token question, Token openSquareBracket, Token closeSquareBracket) {
- seen("IndexedExpression", DirectParserASTType.HANDLE, {
- "question": question,
- "openSquareBracket": openSquareBracket,
- "closeSquareBracket": closeSquareBracket
- });
+ DirectParserASTContentIndexedExpressionHandle data =
+ new DirectParserASTContentIndexedExpressionHandle(
+ DirectParserASTType.HANDLE,
+ question: question,
+ openSquareBracket: openSquareBracket,
+ closeSquareBracket: closeSquareBracket);
+ seen(data);
}
void beginIsOperatorType(Token operator) {
- seen("IsOperatorType", DirectParserASTType.BEGIN, {"operator": operator});
+ DirectParserASTContentIsOperatorTypeBegin data =
+ new DirectParserASTContentIsOperatorTypeBegin(DirectParserASTType.BEGIN,
+ operator: operator);
+ seen(data);
}
void endIsOperatorType(Token operator) {
- seen("IsOperatorType", DirectParserASTType.END, {"operator": operator});
+ DirectParserASTContentIsOperatorTypeEnd data =
+ new DirectParserASTContentIsOperatorTypeEnd(DirectParserASTType.END,
+ operator: operator);
+ seen(data);
}
void handleIsOperator(Token isOperator, Token not) {
- seen("IsOperator", DirectParserASTType.HANDLE,
- {"isOperator": isOperator, "not": not});
+ DirectParserASTContentIsOperatorHandle data =
+ new DirectParserASTContentIsOperatorHandle(DirectParserASTType.HANDLE,
+ isOperator: isOperator, not: not);
+ seen(data);
}
void handleLiteralBool(Token token) {
- seen("LiteralBool", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentLiteralBoolHandle data =
+ new DirectParserASTContentLiteralBoolHandle(DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleBreakStatement(
bool hasTarget, Token breakKeyword, Token endToken) {
- seen("BreakStatement", DirectParserASTType.HANDLE, {
- "hasTarget": hasTarget,
- "breakKeyword": breakKeyword,
- "endToken": endToken
- });
+ DirectParserASTContentBreakStatementHandle data =
+ new DirectParserASTContentBreakStatementHandle(
+ DirectParserASTType.HANDLE,
+ hasTarget: hasTarget,
+ breakKeyword: breakKeyword,
+ endToken: endToken);
+ seen(data);
}
void handleContinueStatement(
bool hasTarget, Token continueKeyword, Token endToken) {
- seen("ContinueStatement", DirectParserASTType.HANDLE, {
- "hasTarget": hasTarget,
- "continueKeyword": continueKeyword,
- "endToken": endToken
- });
+ DirectParserASTContentContinueStatementHandle data =
+ new DirectParserASTContentContinueStatementHandle(
+ DirectParserASTType.HANDLE,
+ hasTarget: hasTarget,
+ continueKeyword: continueKeyword,
+ endToken: endToken);
+ seen(data);
}
void handleEmptyStatement(Token token) {
- seen("EmptyStatement", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentEmptyStatementHandle data =
+ new DirectParserASTContentEmptyStatementHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void beginAssert(Token assertKeyword, Assert kind) {
- seen("Assert", DirectParserASTType.BEGIN,
- {"assertKeyword": assertKeyword, "kind": kind});
+ DirectParserASTContentAssertBegin data =
+ new DirectParserASTContentAssertBegin(DirectParserASTType.BEGIN,
+ assertKeyword: assertKeyword, kind: kind);
+ seen(data);
}
void endAssert(Token assertKeyword, Assert kind, Token leftParenthesis,
Token commaToken, Token semicolonToken) {
- seen("Assert", DirectParserASTType.END, {
- "assertKeyword": assertKeyword,
- "kind": kind,
- "leftParenthesis": leftParenthesis,
- "commaToken": commaToken,
- "semicolonToken": semicolonToken
- });
+ DirectParserASTContentAssertEnd data = new DirectParserASTContentAssertEnd(
+ DirectParserASTType.END,
+ assertKeyword: assertKeyword,
+ kind: kind,
+ leftParenthesis: leftParenthesis,
+ commaToken: commaToken,
+ semicolonToken: semicolonToken);
+ seen(data);
}
void handleLiteralDouble(Token token) {
- seen("LiteralDouble", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentLiteralDoubleHandle data =
+ new DirectParserASTContentLiteralDoubleHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleLiteralInt(Token token) {
- seen("LiteralInt", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentLiteralIntHandle data =
+ new DirectParserASTContentLiteralIntHandle(DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleLiteralList(
int count, Token leftBracket, Token constKeyword, Token rightBracket) {
- seen("LiteralList", DirectParserASTType.HANDLE, {
- "count": count,
- "leftBracket": leftBracket,
- "constKeyword": constKeyword,
- "rightBracket": rightBracket
- });
+ DirectParserASTContentLiteralListHandle data =
+ new DirectParserASTContentLiteralListHandle(DirectParserASTType.HANDLE,
+ count: count,
+ leftBracket: leftBracket,
+ constKeyword: constKeyword,
+ rightBracket: rightBracket);
+ seen(data);
}
void handleLiteralSetOrMap(
@@ -1466,100 +2179,160 @@
Token rightBrace,
bool hasSetEntry,
) {
- seen("LiteralSetOrMap", DirectParserASTType.HANDLE, {
- "count": count,
- "leftBrace": leftBrace,
- "constKeyword": constKeyword,
- "rightBrace": rightBrace,
- "hasSetEntry": hasSetEntry
- });
+ DirectParserASTContentLiteralSetOrMapHandle data =
+ new DirectParserASTContentLiteralSetOrMapHandle(
+ DirectParserASTType.HANDLE,
+ count: count,
+ leftBrace: leftBrace,
+ constKeyword: constKeyword,
+ rightBrace: rightBrace,
+ hasSetEntry: hasSetEntry);
+ seen(data);
}
void handleLiteralNull(Token token) {
- seen("LiteralNull", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentLiteralNullHandle data =
+ new DirectParserASTContentLiteralNullHandle(DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleNativeClause(Token nativeToken, bool hasName) {
- seen("NativeClause", DirectParserASTType.HANDLE,
- {"nativeToken": nativeToken, "hasName": hasName});
+ DirectParserASTContentNativeClauseHandle data =
+ new DirectParserASTContentNativeClauseHandle(DirectParserASTType.HANDLE,
+ nativeToken: nativeToken, hasName: hasName);
+ seen(data);
}
void handleNamedArgument(Token colon) {
- seen("NamedArgument", DirectParserASTType.HANDLE, {"colon": colon});
+ DirectParserASTContentNamedArgumentHandle data =
+ new DirectParserASTContentNamedArgumentHandle(
+ DirectParserASTType.HANDLE,
+ colon: colon);
+ seen(data);
}
void beginNewExpression(Token token) {
- seen("NewExpression", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentNewExpressionBegin data =
+ new DirectParserASTContentNewExpressionBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endNewExpression(Token token) {
- seen("NewExpression", DirectParserASTType.END, {"token": token});
+ DirectParserASTContentNewExpressionEnd data =
+ new DirectParserASTContentNewExpressionEnd(DirectParserASTType.END,
+ token: token);
+ seen(data);
}
void handleNoArguments(Token token) {
- seen("NoArguments", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentNoArgumentsHandle data =
+ new DirectParserASTContentNoArgumentsHandle(DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleNoConstructorReferenceContinuationAfterTypeArguments(Token token) {
- seen("NoConstructorReferenceContinuationAfterTypeArguments",
- DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentNoConstructorReferenceContinuationAfterTypeArgumentsHandle
+ data =
+ new DirectParserASTContentNoConstructorReferenceContinuationAfterTypeArgumentsHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleNoType(Token lastConsumed) {
- seen("NoType", DirectParserASTType.HANDLE, {"lastConsumed": lastConsumed});
+ DirectParserASTContentNoTypeHandle data =
+ new DirectParserASTContentNoTypeHandle(DirectParserASTType.HANDLE,
+ lastConsumed: lastConsumed);
+ seen(data);
}
void handleNoTypeVariables(Token token) {
- seen("NoTypeVariables", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentNoTypeVariablesHandle data =
+ new DirectParserASTContentNoTypeVariablesHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleOperator(Token token) {
- seen("Operator", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentOperatorHandle data =
+ new DirectParserASTContentOperatorHandle(DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleSymbolVoid(Token token) {
- seen("SymbolVoid", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentSymbolVoidHandle data =
+ new DirectParserASTContentSymbolVoidHandle(DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleOperatorName(Token operatorKeyword, Token token) {
- seen("OperatorName", DirectParserASTType.HANDLE,
- {"operatorKeyword": operatorKeyword, "token": token});
+ DirectParserASTContentOperatorNameHandle data =
+ new DirectParserASTContentOperatorNameHandle(DirectParserASTType.HANDLE,
+ operatorKeyword: operatorKeyword, token: token);
+ seen(data);
}
void handleInvalidOperatorName(Token operatorKeyword, Token token) {
- seen("InvalidOperatorName", DirectParserASTType.HANDLE,
- {"operatorKeyword": operatorKeyword, "token": token});
+ DirectParserASTContentInvalidOperatorNameHandle data =
+ new DirectParserASTContentInvalidOperatorNameHandle(
+ DirectParserASTType.HANDLE,
+ operatorKeyword: operatorKeyword,
+ token: token);
+ seen(data);
}
void handleParenthesizedCondition(Token token) {
- seen(
- "ParenthesizedCondition", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentParenthesizedConditionHandle data =
+ new DirectParserASTContentParenthesizedConditionHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleParenthesizedExpression(Token token) {
- seen("ParenthesizedExpression", DirectParserASTType.HANDLE,
- {"token": token});
+ DirectParserASTContentParenthesizedExpressionHandle data =
+ new DirectParserASTContentParenthesizedExpressionHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleQualified(Token period) {
- seen("Qualified", DirectParserASTType.HANDLE, {"period": period});
+ DirectParserASTContentQualifiedHandle data =
+ new DirectParserASTContentQualifiedHandle(DirectParserASTType.HANDLE,
+ period: period);
+ seen(data);
}
void handleStringPart(Token token) {
- seen("StringPart", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentStringPartHandle data =
+ new DirectParserASTContentStringPartHandle(DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleSuperExpression(Token token, IdentifierContext context) {
- seen("SuperExpression", DirectParserASTType.HANDLE,
- {"token": token, "context": context});
+ DirectParserASTContentSuperExpressionHandle data =
+ new DirectParserASTContentSuperExpressionHandle(
+ DirectParserASTType.HANDLE,
+ token: token,
+ context: context);
+ seen(data);
}
void beginSwitchCase(int labelCount, int expressionCount, Token firstToken) {
- seen("SwitchCase", DirectParserASTType.BEGIN, {
- "labelCount": labelCount,
- "expressionCount": expressionCount,
- "firstToken": firstToken
- });
+ DirectParserASTContentSwitchCaseBegin data =
+ new DirectParserASTContentSwitchCaseBegin(DirectParserASTType.BEGIN,
+ labelCount: labelCount,
+ expressionCount: expressionCount,
+ firstToken: firstToken);
+ seen(data);
}
void endSwitchCase(
@@ -1570,133 +2343,4409 @@
int statementCount,
Token firstToken,
Token endToken) {
- seen("SwitchCase", DirectParserASTType.END, {
- "labelCount": labelCount,
- "expressionCount": expressionCount,
- "defaultKeyword": defaultKeyword,
- "colonAfterDefault": colonAfterDefault,
- "statementCount": statementCount,
- "firstToken": firstToken,
- "endToken": endToken
- });
+ DirectParserASTContentSwitchCaseEnd data =
+ new DirectParserASTContentSwitchCaseEnd(DirectParserASTType.END,
+ labelCount: labelCount,
+ expressionCount: expressionCount,
+ defaultKeyword: defaultKeyword,
+ colonAfterDefault: colonAfterDefault,
+ statementCount: statementCount,
+ firstToken: firstToken,
+ endToken: endToken);
+ seen(data);
}
void handleThisExpression(Token token, IdentifierContext context) {
- seen("ThisExpression", DirectParserASTType.HANDLE,
- {"token": token, "context": context});
+ DirectParserASTContentThisExpressionHandle data =
+ new DirectParserASTContentThisExpressionHandle(
+ DirectParserASTType.HANDLE,
+ token: token,
+ context: context);
+ seen(data);
}
void handleUnaryPostfixAssignmentExpression(Token token) {
- seen("UnaryPostfixAssignmentExpression", DirectParserASTType.HANDLE,
- {"token": token});
+ DirectParserASTContentUnaryPostfixAssignmentExpressionHandle data =
+ new DirectParserASTContentUnaryPostfixAssignmentExpressionHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleUnaryPrefixExpression(Token token) {
- seen("UnaryPrefixExpression", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentUnaryPrefixExpressionHandle data =
+ new DirectParserASTContentUnaryPrefixExpressionHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleUnaryPrefixAssignmentExpression(Token token) {
- seen("UnaryPrefixAssignmentExpression", DirectParserASTType.HANDLE,
- {"token": token});
+ DirectParserASTContentUnaryPrefixAssignmentExpressionHandle data =
+ new DirectParserASTContentUnaryPrefixAssignmentExpressionHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void beginFormalParameterDefaultValueExpression() {
- seen(
- "FormalParameterDefaultValueExpression", DirectParserASTType.BEGIN, {});
+ DirectParserASTContentFormalParameterDefaultValueExpressionBegin data =
+ new DirectParserASTContentFormalParameterDefaultValueExpressionBegin(
+ DirectParserASTType.BEGIN);
+ seen(data);
}
void endFormalParameterDefaultValueExpression() {
- seen("FormalParameterDefaultValueExpression", DirectParserASTType.END, {});
+ DirectParserASTContentFormalParameterDefaultValueExpressionEnd data =
+ new DirectParserASTContentFormalParameterDefaultValueExpressionEnd(
+ DirectParserASTType.END);
+ seen(data);
}
void handleValuedFormalParameter(Token equals, Token token) {
- seen("ValuedFormalParameter", DirectParserASTType.HANDLE,
- {"equals": equals, "token": token});
+ DirectParserASTContentValuedFormalParameterHandle data =
+ new DirectParserASTContentValuedFormalParameterHandle(
+ DirectParserASTType.HANDLE,
+ equals: equals,
+ token: token);
+ seen(data);
}
void handleFormalParameterWithoutValue(Token token) {
- seen("FormalParameterWithoutValue", DirectParserASTType.HANDLE,
- {"token": token});
+ DirectParserASTContentFormalParameterWithoutValueHandle data =
+ new DirectParserASTContentFormalParameterWithoutValueHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleVoidKeyword(Token token) {
- seen("VoidKeyword", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentVoidKeywordHandle data =
+ new DirectParserASTContentVoidKeywordHandle(DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleVoidKeywordWithTypeArguments(Token token) {
- seen("VoidKeywordWithTypeArguments", DirectParserASTType.HANDLE,
- {"token": token});
+ DirectParserASTContentVoidKeywordWithTypeArgumentsHandle data =
+ new DirectParserASTContentVoidKeywordWithTypeArgumentsHandle(
+ DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void beginYieldStatement(Token token) {
- seen("YieldStatement", DirectParserASTType.BEGIN, {"token": token});
+ DirectParserASTContentYieldStatementBegin data =
+ new DirectParserASTContentYieldStatementBegin(DirectParserASTType.BEGIN,
+ token: token);
+ seen(data);
}
void endYieldStatement(Token yieldToken, Token starToken, Token endToken) {
- seen("YieldStatement", DirectParserASTType.END, {
- "yieldToken": yieldToken,
- "starToken": starToken,
- "endToken": endToken
- });
+ DirectParserASTContentYieldStatementEnd data =
+ new DirectParserASTContentYieldStatementEnd(DirectParserASTType.END,
+ yieldToken: yieldToken, starToken: starToken, endToken: endToken);
+ seen(data);
}
void endInvalidYieldStatement(Token beginToken, Token starToken,
Token endToken, MessageCode errorCode) {
- seen("InvalidYieldStatement", DirectParserASTType.END, {
- "beginToken": beginToken,
- "starToken": starToken,
- "endToken": endToken,
- "errorCode": errorCode
- });
+ DirectParserASTContentInvalidYieldStatementEnd data =
+ new DirectParserASTContentInvalidYieldStatementEnd(
+ DirectParserASTType.END,
+ beginToken: beginToken,
+ starToken: starToken,
+ endToken: endToken,
+ errorCode: errorCode);
+ seen(data);
}
void handleRecoverableError(
Message message, Token startToken, Token endToken) {
- seen("RecoverableError", DirectParserASTType.HANDLE,
- {"message": message, "startToken": startToken, "endToken": endToken});
+ DirectParserASTContentRecoverableErrorHandle data =
+ new DirectParserASTContentRecoverableErrorHandle(
+ DirectParserASTType.HANDLE,
+ message: message,
+ startToken: startToken,
+ endToken: endToken);
+ seen(data);
}
void handleErrorToken(ErrorToken token) {
- seen("ErrorToken", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentErrorTokenHandle data =
+ new DirectParserASTContentErrorTokenHandle(DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleUnescapeError(
Message message, Token location, int stringOffset, int length) {
- seen("UnescapeError", DirectParserASTType.HANDLE, {
- "message": message,
- "location": location,
- "stringOffset": stringOffset,
- "length": length
- });
+ DirectParserASTContentUnescapeErrorHandle data =
+ new DirectParserASTContentUnescapeErrorHandle(
+ DirectParserASTType.HANDLE,
+ message: message,
+ location: location,
+ stringOffset: stringOffset,
+ length: length);
+ seen(data);
}
void handleInvalidStatement(Token token, Message message) {
- seen("InvalidStatement", DirectParserASTType.HANDLE,
- {"token": token, "message": message});
+ DirectParserASTContentInvalidStatementHandle data =
+ new DirectParserASTContentInvalidStatementHandle(
+ DirectParserASTType.HANDLE,
+ token: token,
+ message: message);
+ seen(data);
}
void handleScript(Token token) {
- seen("Script", DirectParserASTType.HANDLE, {"token": token});
+ DirectParserASTContentScriptHandle data =
+ new DirectParserASTContentScriptHandle(DirectParserASTType.HANDLE,
+ token: token);
+ seen(data);
}
void handleCommentReferenceText(String referenceSource, int referenceOffset) {
- seen("CommentReferenceText", DirectParserASTType.HANDLE, {
- "referenceSource": referenceSource,
- "referenceOffset": referenceOffset
- });
+ DirectParserASTContentCommentReferenceTextHandle data =
+ new DirectParserASTContentCommentReferenceTextHandle(
+ DirectParserASTType.HANDLE,
+ referenceSource: referenceSource,
+ referenceOffset: referenceOffset);
+ seen(data);
}
void handleCommentReference(
Token newKeyword, Token prefix, Token period, Token token) {
- seen("CommentReference", DirectParserASTType.HANDLE, {
- "newKeyword": newKeyword,
- "prefix": prefix,
- "period": period,
- "token": token
- });
+ DirectParserASTContentCommentReferenceHandle data =
+ new DirectParserASTContentCommentReferenceHandle(
+ DirectParserASTType.HANDLE,
+ newKeyword: newKeyword,
+ prefix: prefix,
+ period: period,
+ token: token);
+ seen(data);
}
void handleNoCommentReference() {
- seen("NoCommentReference", DirectParserASTType.HANDLE, {});
+ DirectParserASTContentNoCommentReferenceHandle data =
+ new DirectParserASTContentNoCommentReferenceHandle(
+ DirectParserASTType.HANDLE);
+ seen(data);
}
}
+
+class DirectParserASTContentArgumentsBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentArgumentsBegin(DirectParserASTType type, {this.token})
+ : super("Arguments", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentArgumentsEnd extends DirectParserASTContent {
+ final int count;
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentArgumentsEnd(DirectParserASTType type,
+ {this.count, this.beginToken, this.endToken})
+ : super("Arguments", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentAsyncModifierHandle extends DirectParserASTContent {
+ final Token asyncToken;
+ final Token starToken;
+
+ DirectParserASTContentAsyncModifierHandle(DirectParserASTType type,
+ {this.asyncToken, this.starToken})
+ : super("AsyncModifier", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "asyncToken": asyncToken,
+ "starToken": starToken,
+ };
+}
+
+class DirectParserASTContentAwaitExpressionBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentAwaitExpressionBegin(DirectParserASTType type,
+ {this.token})
+ : super("AwaitExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentAwaitExpressionEnd extends DirectParserASTContent {
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentAwaitExpressionEnd(DirectParserASTType type,
+ {this.beginToken, this.endToken})
+ : super("AwaitExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentInvalidAwaitExpressionEnd
+ extends DirectParserASTContent {
+ final Token beginToken;
+ final Token endToken;
+ final MessageCode errorCode;
+
+ DirectParserASTContentInvalidAwaitExpressionEnd(DirectParserASTType type,
+ {this.beginToken, this.endToken, this.errorCode})
+ : super("InvalidAwaitExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "endToken": endToken,
+ "errorCode": errorCode,
+ };
+}
+
+class DirectParserASTContentBlockBegin extends DirectParserASTContent {
+ final Token token;
+ final BlockKind blockKind;
+
+ DirectParserASTContentBlockBegin(DirectParserASTType type,
+ {this.token, this.blockKind})
+ : super("Block", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "blockKind": blockKind,
+ };
+}
+
+class DirectParserASTContentBlockEnd extends DirectParserASTContent {
+ final int count;
+ final Token beginToken;
+ final Token endToken;
+ final BlockKind blockKind;
+
+ DirectParserASTContentBlockEnd(DirectParserASTType type,
+ {this.count, this.beginToken, this.endToken, this.blockKind})
+ : super("Block", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ "blockKind": blockKind,
+ };
+}
+
+class DirectParserASTContentInvalidTopLevelBlockHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentInvalidTopLevelBlockHandle(DirectParserASTType type,
+ {this.token})
+ : super("InvalidTopLevelBlock", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentCascadeBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentCascadeBegin(DirectParserASTType type, {this.token})
+ : super("Cascade", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentCascadeEnd extends DirectParserASTContent {
+ DirectParserASTContentCascadeEnd(DirectParserASTType type)
+ : super("Cascade", type);
+
+ Map<String, Object> get deprecatedArguments => {};
+}
+
+class DirectParserASTContentCaseExpressionBegin extends DirectParserASTContent {
+ final Token caseKeyword;
+
+ DirectParserASTContentCaseExpressionBegin(DirectParserASTType type,
+ {this.caseKeyword})
+ : super("CaseExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "caseKeyword": caseKeyword,
+ };
+}
+
+class DirectParserASTContentCaseExpressionEnd extends DirectParserASTContent {
+ final Token colon;
+
+ DirectParserASTContentCaseExpressionEnd(DirectParserASTType type,
+ {this.colon})
+ : super("CaseExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "colon": colon,
+ };
+}
+
+class DirectParserASTContentClassOrMixinBodyBegin
+ extends DirectParserASTContent {
+ final DeclarationKind kind;
+ final Token token;
+
+ DirectParserASTContentClassOrMixinBodyBegin(DirectParserASTType type,
+ {this.kind, this.token})
+ : super("ClassOrMixinBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "kind": kind,
+ "token": token,
+ };
+}
+
+class DirectParserASTContentClassOrMixinBodyEnd extends DirectParserASTContent {
+ final DeclarationKind kind;
+ final int memberCount;
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentClassOrMixinBodyEnd(DirectParserASTType type,
+ {this.kind, this.memberCount, this.beginToken, this.endToken})
+ : super("ClassOrMixinBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "kind": kind,
+ "memberCount": memberCount,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin(
+ DirectParserASTType type,
+ {this.token})
+ : super("ClassOrNamedMixinApplicationPrelude", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentClassDeclarationBegin
+ extends DirectParserASTContent {
+ final Token begin;
+ final Token abstractToken;
+ final Token name;
+
+ DirectParserASTContentClassDeclarationBegin(DirectParserASTType type,
+ {this.begin, this.abstractToken, this.name})
+ : super("ClassDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "begin": begin,
+ "abstractToken": abstractToken,
+ "name": name,
+ };
+}
+
+class DirectParserASTContentClassExtendsHandle extends DirectParserASTContent {
+ final Token extendsKeyword;
+ final int typeCount;
+
+ DirectParserASTContentClassExtendsHandle(DirectParserASTType type,
+ {this.extendsKeyword, this.typeCount})
+ : super("ClassExtends", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "extendsKeyword": extendsKeyword,
+ "typeCount": typeCount,
+ };
+}
+
+class DirectParserASTContentClassOrMixinImplementsHandle
+ extends DirectParserASTContent {
+ final Token implementsKeyword;
+ final int interfacesCount;
+
+ DirectParserASTContentClassOrMixinImplementsHandle(DirectParserASTType type,
+ {this.implementsKeyword, this.interfacesCount})
+ : super("ClassOrMixinImplements", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "implementsKeyword": implementsKeyword,
+ "interfacesCount": interfacesCount,
+ };
+}
+
+class DirectParserASTContentClassHeaderHandle extends DirectParserASTContent {
+ final Token begin;
+ final Token classKeyword;
+ final Token nativeToken;
+
+ DirectParserASTContentClassHeaderHandle(DirectParserASTType type,
+ {this.begin, this.classKeyword, this.nativeToken})
+ : super("ClassHeader", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "begin": begin,
+ "classKeyword": classKeyword,
+ "nativeToken": nativeToken,
+ };
+}
+
+class DirectParserASTContentRecoverClassHeaderHandle
+ extends DirectParserASTContent {
+ DirectParserASTContentRecoverClassHeaderHandle(DirectParserASTType type)
+ : super("RecoverClassHeader", type);
+
+ Map<String, Object> get deprecatedArguments => {};
+}
+
+class DirectParserASTContentClassDeclarationEnd extends DirectParserASTContent {
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentClassDeclarationEnd(DirectParserASTType type,
+ {this.beginToken, this.endToken})
+ : super("ClassDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentMixinDeclarationBegin
+ extends DirectParserASTContent {
+ final Token mixinKeyword;
+ final Token name;
+
+ DirectParserASTContentMixinDeclarationBegin(DirectParserASTType type,
+ {this.mixinKeyword, this.name})
+ : super("MixinDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "mixinKeyword": mixinKeyword,
+ "name": name,
+ };
+}
+
+class DirectParserASTContentMixinOnHandle extends DirectParserASTContent {
+ final Token onKeyword;
+ final int typeCount;
+
+ DirectParserASTContentMixinOnHandle(DirectParserASTType type,
+ {this.onKeyword, this.typeCount})
+ : super("MixinOn", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "onKeyword": onKeyword,
+ "typeCount": typeCount,
+ };
+}
+
+class DirectParserASTContentMixinHeaderHandle extends DirectParserASTContent {
+ final Token mixinKeyword;
+
+ DirectParserASTContentMixinHeaderHandle(DirectParserASTType type,
+ {this.mixinKeyword})
+ : super("MixinHeader", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "mixinKeyword": mixinKeyword,
+ };
+}
+
+class DirectParserASTContentRecoverMixinHeaderHandle
+ extends DirectParserASTContent {
+ DirectParserASTContentRecoverMixinHeaderHandle(DirectParserASTType type)
+ : super("RecoverMixinHeader", type);
+
+ Map<String, Object> get deprecatedArguments => {};
+}
+
+class DirectParserASTContentMixinDeclarationEnd extends DirectParserASTContent {
+ final Token mixinKeyword;
+ final Token endToken;
+
+ DirectParserASTContentMixinDeclarationEnd(DirectParserASTType type,
+ {this.mixinKeyword, this.endToken})
+ : super("MixinDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "mixinKeyword": mixinKeyword,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentUncategorizedTopLevelDeclarationBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentUncategorizedTopLevelDeclarationBegin(
+ DirectParserASTType type,
+ {this.token})
+ : super("UncategorizedTopLevelDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentExtensionDeclarationPreludeBegin
+ extends DirectParserASTContent {
+ final Token extensionKeyword;
+
+ DirectParserASTContentExtensionDeclarationPreludeBegin(
+ DirectParserASTType type,
+ {this.extensionKeyword})
+ : super("ExtensionDeclarationPrelude", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "extensionKeyword": extensionKeyword,
+ };
+}
+
+class DirectParserASTContentExtensionDeclarationBegin
+ extends DirectParserASTContent {
+ final Token extensionKeyword;
+ final Token name;
+
+ DirectParserASTContentExtensionDeclarationBegin(DirectParserASTType type,
+ {this.extensionKeyword, this.name})
+ : super("ExtensionDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "extensionKeyword": extensionKeyword,
+ "name": name,
+ };
+}
+
+class DirectParserASTContentExtensionDeclarationEnd
+ extends DirectParserASTContent {
+ final Token extensionKeyword;
+ final Token onKeyword;
+ final Token endToken;
+
+ DirectParserASTContentExtensionDeclarationEnd(DirectParserASTType type,
+ {this.extensionKeyword, this.onKeyword, this.endToken})
+ : super("ExtensionDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "extensionKeyword": extensionKeyword,
+ "onKeyword": onKeyword,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentCombinatorsBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentCombinatorsBegin(DirectParserASTType type, {this.token})
+ : super("Combinators", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentCombinatorsEnd extends DirectParserASTContent {
+ final int count;
+
+ DirectParserASTContentCombinatorsEnd(DirectParserASTType type, {this.count})
+ : super("Combinators", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ };
+}
+
+class DirectParserASTContentCompilationUnitBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentCompilationUnitBegin(DirectParserASTType type,
+ {this.token})
+ : super("CompilationUnit", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentDirectivesOnlyHandle
+ extends DirectParserASTContent {
+ DirectParserASTContentDirectivesOnlyHandle(DirectParserASTType type)
+ : super("DirectivesOnly", type);
+
+ Map<String, Object> get deprecatedArguments => {};
+}
+
+class DirectParserASTContentCompilationUnitEnd extends DirectParserASTContent {
+ final int count;
+ final Token token;
+
+ DirectParserASTContentCompilationUnitEnd(DirectParserASTType type,
+ {this.count, this.token})
+ : super("CompilationUnit", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ "token": token,
+ };
+}
+
+class DirectParserASTContentConstLiteralBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentConstLiteralBegin(DirectParserASTType type,
+ {this.token})
+ : super("ConstLiteral", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentConstLiteralEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentConstLiteralEnd(DirectParserASTType type, {this.token})
+ : super("ConstLiteral", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentConstructorReferenceBegin
+ extends DirectParserASTContent {
+ final Token start;
+
+ DirectParserASTContentConstructorReferenceBegin(DirectParserASTType type,
+ {this.start})
+ : super("ConstructorReference", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "start": start,
+ };
+}
+
+class DirectParserASTContentConstructorReferenceEnd
+ extends DirectParserASTContent {
+ final Token start;
+ final Token periodBeforeName;
+ final Token endToken;
+
+ DirectParserASTContentConstructorReferenceEnd(DirectParserASTType type,
+ {this.start, this.periodBeforeName, this.endToken})
+ : super("ConstructorReference", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "start": start,
+ "periodBeforeName": periodBeforeName,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentDoWhileStatementBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentDoWhileStatementBegin(DirectParserASTType type,
+ {this.token})
+ : super("DoWhileStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentDoWhileStatementEnd extends DirectParserASTContent {
+ final Token doKeyword;
+ final Token whileKeyword;
+ final Token endToken;
+
+ DirectParserASTContentDoWhileStatementEnd(DirectParserASTType type,
+ {this.doKeyword, this.whileKeyword, this.endToken})
+ : super("DoWhileStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "doKeyword": doKeyword,
+ "whileKeyword": whileKeyword,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentDoWhileStatementBodyBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentDoWhileStatementBodyBegin(DirectParserASTType type,
+ {this.token})
+ : super("DoWhileStatementBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentDoWhileStatementBodyEnd
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentDoWhileStatementBodyEnd(DirectParserASTType type,
+ {this.token})
+ : super("DoWhileStatementBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentWhileStatementBodyBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentWhileStatementBodyBegin(DirectParserASTType type,
+ {this.token})
+ : super("WhileStatementBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentWhileStatementBodyEnd
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentWhileStatementBodyEnd(DirectParserASTType type,
+ {this.token})
+ : super("WhileStatementBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentEnumBegin extends DirectParserASTContent {
+ final Token enumKeyword;
+
+ DirectParserASTContentEnumBegin(DirectParserASTType type, {this.enumKeyword})
+ : super("Enum", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "enumKeyword": enumKeyword,
+ };
+}
+
+class DirectParserASTContentEnumEnd extends DirectParserASTContent {
+ final Token enumKeyword;
+ final Token leftBrace;
+ final int count;
+
+ DirectParserASTContentEnumEnd(DirectParserASTType type,
+ {this.enumKeyword, this.leftBrace, this.count})
+ : super("Enum", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "enumKeyword": enumKeyword,
+ "leftBrace": leftBrace,
+ "count": count,
+ };
+}
+
+class DirectParserASTContentExportBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentExportBegin(DirectParserASTType type, {this.token})
+ : super("Export", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentExportEnd extends DirectParserASTContent {
+ final Token exportKeyword;
+ final Token semicolon;
+
+ DirectParserASTContentExportEnd(DirectParserASTType type,
+ {this.exportKeyword, this.semicolon})
+ : super("Export", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "exportKeyword": exportKeyword,
+ "semicolon": semicolon,
+ };
+}
+
+class DirectParserASTContentExtraneousExpressionHandle
+ extends DirectParserASTContent {
+ final Token token;
+ final Message message;
+
+ DirectParserASTContentExtraneousExpressionHandle(DirectParserASTType type,
+ {this.token, this.message})
+ : super("ExtraneousExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "message": message,
+ };
+}
+
+class DirectParserASTContentExpressionStatementHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentExpressionStatementHandle(DirectParserASTType type,
+ {this.token})
+ : super("ExpressionStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentFactoryMethodBegin extends DirectParserASTContent {
+ final Token lastConsumed;
+ final Token externalToken;
+ final Token constToken;
+
+ DirectParserASTContentFactoryMethodBegin(DirectParserASTType type,
+ {this.lastConsumed, this.externalToken, this.constToken})
+ : super("FactoryMethod", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "lastConsumed": lastConsumed,
+ "externalToken": externalToken,
+ "constToken": constToken,
+ };
+}
+
+class DirectParserASTContentClassFactoryMethodEnd
+ extends DirectParserASTContent {
+ final Token beginToken;
+ final Token factoryKeyword;
+ final Token endToken;
+
+ DirectParserASTContentClassFactoryMethodEnd(DirectParserASTType type,
+ {this.beginToken, this.factoryKeyword, this.endToken})
+ : super("ClassFactoryMethod", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "factoryKeyword": factoryKeyword,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentMixinFactoryMethodEnd
+ extends DirectParserASTContent {
+ final Token beginToken;
+ final Token factoryKeyword;
+ final Token endToken;
+
+ DirectParserASTContentMixinFactoryMethodEnd(DirectParserASTType type,
+ {this.beginToken, this.factoryKeyword, this.endToken})
+ : super("MixinFactoryMethod", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "factoryKeyword": factoryKeyword,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentExtensionFactoryMethodEnd
+ extends DirectParserASTContent {
+ final Token beginToken;
+ final Token factoryKeyword;
+ final Token endToken;
+
+ DirectParserASTContentExtensionFactoryMethodEnd(DirectParserASTType type,
+ {this.beginToken, this.factoryKeyword, this.endToken})
+ : super("ExtensionFactoryMethod", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "factoryKeyword": factoryKeyword,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentFormalParameterBegin
+ extends DirectParserASTContent {
+ final Token token;
+ final MemberKind kind;
+ final Token requiredToken;
+ final Token covariantToken;
+ final Token varFinalOrConst;
+
+ DirectParserASTContentFormalParameterBegin(DirectParserASTType type,
+ {this.token,
+ this.kind,
+ this.requiredToken,
+ this.covariantToken,
+ this.varFinalOrConst})
+ : super("FormalParameter", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "kind": kind,
+ "requiredToken": requiredToken,
+ "covariantToken": covariantToken,
+ "varFinalOrConst": varFinalOrConst,
+ };
+}
+
+class DirectParserASTContentFormalParameterEnd extends DirectParserASTContent {
+ final Token thisKeyword;
+ final Token periodAfterThis;
+ final Token nameToken;
+ final Token initializerStart;
+ final Token initializerEnd;
+ final FormalParameterKind kind;
+ final MemberKind memberKind;
+
+ DirectParserASTContentFormalParameterEnd(DirectParserASTType type,
+ {this.thisKeyword,
+ this.periodAfterThis,
+ this.nameToken,
+ this.initializerStart,
+ this.initializerEnd,
+ this.kind,
+ this.memberKind})
+ : super("FormalParameter", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "thisKeyword": thisKeyword,
+ "periodAfterThis": periodAfterThis,
+ "nameToken": nameToken,
+ "initializerStart": initializerStart,
+ "initializerEnd": initializerEnd,
+ "kind": kind,
+ "memberKind": memberKind,
+ };
+}
+
+class DirectParserASTContentNoFormalParametersHandle
+ extends DirectParserASTContent {
+ final Token token;
+ final MemberKind kind;
+
+ DirectParserASTContentNoFormalParametersHandle(DirectParserASTType type,
+ {this.token, this.kind})
+ : super("NoFormalParameters", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "kind": kind,
+ };
+}
+
+class DirectParserASTContentFormalParametersBegin
+ extends DirectParserASTContent {
+ final Token token;
+ final MemberKind kind;
+
+ DirectParserASTContentFormalParametersBegin(DirectParserASTType type,
+ {this.token, this.kind})
+ : super("FormalParameters", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "kind": kind,
+ };
+}
+
+class DirectParserASTContentFormalParametersEnd extends DirectParserASTContent {
+ final int count;
+ final Token beginToken;
+ final Token endToken;
+ final MemberKind kind;
+
+ DirectParserASTContentFormalParametersEnd(DirectParserASTType type,
+ {this.count, this.beginToken, this.endToken, this.kind})
+ : super("FormalParameters", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ "kind": kind,
+ };
+}
+
+class DirectParserASTContentClassFieldsEnd extends DirectParserASTContent {
+ final Token abstractToken;
+ final Token externalToken;
+ final Token staticToken;
+ final Token covariantToken;
+ final Token lateToken;
+ final Token varFinalOrConst;
+ final int count;
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentClassFieldsEnd(DirectParserASTType type,
+ {this.abstractToken,
+ this.externalToken,
+ this.staticToken,
+ this.covariantToken,
+ this.lateToken,
+ this.varFinalOrConst,
+ this.count,
+ this.beginToken,
+ this.endToken})
+ : super("ClassFields", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "abstractToken": abstractToken,
+ "externalToken": externalToken,
+ "staticToken": staticToken,
+ "covariantToken": covariantToken,
+ "lateToken": lateToken,
+ "varFinalOrConst": varFinalOrConst,
+ "count": count,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentMixinFieldsEnd extends DirectParserASTContent {
+ final Token abstractToken;
+ final Token externalToken;
+ final Token staticToken;
+ final Token covariantToken;
+ final Token lateToken;
+ final Token varFinalOrConst;
+ final int count;
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentMixinFieldsEnd(DirectParserASTType type,
+ {this.abstractToken,
+ this.externalToken,
+ this.staticToken,
+ this.covariantToken,
+ this.lateToken,
+ this.varFinalOrConst,
+ this.count,
+ this.beginToken,
+ this.endToken})
+ : super("MixinFields", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "abstractToken": abstractToken,
+ "externalToken": externalToken,
+ "staticToken": staticToken,
+ "covariantToken": covariantToken,
+ "lateToken": lateToken,
+ "varFinalOrConst": varFinalOrConst,
+ "count": count,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentExtensionFieldsEnd extends DirectParserASTContent {
+ final Token abstractToken;
+ final Token externalToken;
+ final Token staticToken;
+ final Token covariantToken;
+ final Token lateToken;
+ final Token varFinalOrConst;
+ final int count;
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentExtensionFieldsEnd(DirectParserASTType type,
+ {this.abstractToken,
+ this.externalToken,
+ this.staticToken,
+ this.covariantToken,
+ this.lateToken,
+ this.varFinalOrConst,
+ this.count,
+ this.beginToken,
+ this.endToken})
+ : super("ExtensionFields", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "abstractToken": abstractToken,
+ "externalToken": externalToken,
+ "staticToken": staticToken,
+ "covariantToken": covariantToken,
+ "lateToken": lateToken,
+ "varFinalOrConst": varFinalOrConst,
+ "count": count,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentForInitializerEmptyStatementHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentForInitializerEmptyStatementHandle(
+ DirectParserASTType type,
+ {this.token})
+ : super("ForInitializerEmptyStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentForInitializerExpressionStatementHandle
+ extends DirectParserASTContent {
+ final Token token;
+ final bool forIn;
+
+ DirectParserASTContentForInitializerExpressionStatementHandle(
+ DirectParserASTType type,
+ {this.token,
+ this.forIn})
+ : super("ForInitializerExpressionStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "forIn": forIn,
+ };
+}
+
+class DirectParserASTContentForInitializerLocalVariableDeclarationHandle
+ extends DirectParserASTContent {
+ final Token token;
+ final bool forIn;
+
+ DirectParserASTContentForInitializerLocalVariableDeclarationHandle(
+ DirectParserASTType type,
+ {this.token,
+ this.forIn})
+ : super("ForInitializerLocalVariableDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "forIn": forIn,
+ };
+}
+
+class DirectParserASTContentForStatementBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentForStatementBegin(DirectParserASTType type,
+ {this.token})
+ : super("ForStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentForLoopPartsHandle extends DirectParserASTContent {
+ final Token forKeyword;
+ final Token leftParen;
+ final Token leftSeparator;
+ final int updateExpressionCount;
+
+ DirectParserASTContentForLoopPartsHandle(DirectParserASTType type,
+ {this.forKeyword,
+ this.leftParen,
+ this.leftSeparator,
+ this.updateExpressionCount})
+ : super("ForLoopParts", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "forKeyword": forKeyword,
+ "leftParen": leftParen,
+ "leftSeparator": leftSeparator,
+ "updateExpressionCount": updateExpressionCount,
+ };
+}
+
+class DirectParserASTContentForStatementEnd extends DirectParserASTContent {
+ final Token endToken;
+
+ DirectParserASTContentForStatementEnd(DirectParserASTType type,
+ {this.endToken})
+ : super("ForStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentForStatementBodyBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentForStatementBodyBegin(DirectParserASTType type,
+ {this.token})
+ : super("ForStatementBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentForStatementBodyEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentForStatementBodyEnd(DirectParserASTType type,
+ {this.token})
+ : super("ForStatementBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentForInLoopPartsHandle
+ extends DirectParserASTContent {
+ final Token awaitToken;
+ final Token forToken;
+ final Token leftParenthesis;
+ final Token inKeyword;
+
+ DirectParserASTContentForInLoopPartsHandle(DirectParserASTType type,
+ {this.awaitToken, this.forToken, this.leftParenthesis, this.inKeyword})
+ : super("ForInLoopParts", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "awaitToken": awaitToken,
+ "forToken": forToken,
+ "leftParenthesis": leftParenthesis,
+ "inKeyword": inKeyword,
+ };
+}
+
+class DirectParserASTContentForInEnd extends DirectParserASTContent {
+ final Token endToken;
+
+ DirectParserASTContentForInEnd(DirectParserASTType type, {this.endToken})
+ : super("ForIn", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentForInExpressionBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentForInExpressionBegin(DirectParserASTType type,
+ {this.token})
+ : super("ForInExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentForInExpressionEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentForInExpressionEnd(DirectParserASTType type,
+ {this.token})
+ : super("ForInExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentForInBodyBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentForInBodyBegin(DirectParserASTType type, {this.token})
+ : super("ForInBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentForInBodyEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentForInBodyEnd(DirectParserASTType type, {this.token})
+ : super("ForInBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentNamedFunctionExpressionBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentNamedFunctionExpressionBegin(DirectParserASTType type,
+ {this.token})
+ : super("NamedFunctionExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentNamedFunctionExpressionEnd
+ extends DirectParserASTContent {
+ final Token endToken;
+
+ DirectParserASTContentNamedFunctionExpressionEnd(DirectParserASTType type,
+ {this.endToken})
+ : super("NamedFunctionExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentLocalFunctionDeclarationBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentLocalFunctionDeclarationBegin(DirectParserASTType type,
+ {this.token})
+ : super("LocalFunctionDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentLocalFunctionDeclarationEnd
+ extends DirectParserASTContent {
+ final Token endToken;
+
+ DirectParserASTContentLocalFunctionDeclarationEnd(DirectParserASTType type,
+ {this.endToken})
+ : super("LocalFunctionDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentBlockFunctionBodyBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentBlockFunctionBodyBegin(DirectParserASTType type,
+ {this.token})
+ : super("BlockFunctionBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentBlockFunctionBodyEnd
+ extends DirectParserASTContent {
+ final int count;
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentBlockFunctionBodyEnd(DirectParserASTType type,
+ {this.count, this.beginToken, this.endToken})
+ : super("BlockFunctionBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentNoFunctionBodyHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentNoFunctionBodyHandle(DirectParserASTType type,
+ {this.token})
+ : super("NoFunctionBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentFunctionBodySkippedHandle
+ extends DirectParserASTContent {
+ final Token token;
+ final bool isExpressionBody;
+
+ DirectParserASTContentFunctionBodySkippedHandle(DirectParserASTType type,
+ {this.token, this.isExpressionBody})
+ : super("FunctionBodySkipped", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "isExpressionBody": isExpressionBody,
+ };
+}
+
+class DirectParserASTContentFunctionNameBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentFunctionNameBegin(DirectParserASTType type,
+ {this.token})
+ : super("FunctionName", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentFunctionNameEnd extends DirectParserASTContent {
+ final Token beginToken;
+ final Token token;
+
+ DirectParserASTContentFunctionNameEnd(DirectParserASTType type,
+ {this.beginToken, this.token})
+ : super("FunctionName", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "token": token,
+ };
+}
+
+class DirectParserASTContentFunctionTypeAliasBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentFunctionTypeAliasBegin(DirectParserASTType type,
+ {this.token})
+ : super("FunctionTypeAlias", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentFunctionTypeAliasEnd
+ extends DirectParserASTContent {
+ final Token typedefKeyword;
+ final Token equals;
+ final Token endToken;
+
+ DirectParserASTContentFunctionTypeAliasEnd(DirectParserASTType type,
+ {this.typedefKeyword, this.equals, this.endToken})
+ : super("FunctionTypeAlias", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "typedefKeyword": typedefKeyword,
+ "equals": equals,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentClassWithClauseHandle
+ extends DirectParserASTContent {
+ final Token withKeyword;
+
+ DirectParserASTContentClassWithClauseHandle(DirectParserASTType type,
+ {this.withKeyword})
+ : super("ClassWithClause", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "withKeyword": withKeyword,
+ };
+}
+
+class DirectParserASTContentClassNoWithClauseHandle
+ extends DirectParserASTContent {
+ DirectParserASTContentClassNoWithClauseHandle(DirectParserASTType type)
+ : super("ClassNoWithClause", type);
+
+ Map<String, Object> get deprecatedArguments => {};
+}
+
+class DirectParserASTContentNamedMixinApplicationBegin
+ extends DirectParserASTContent {
+ final Token begin;
+ final Token abstractToken;
+ final Token name;
+
+ DirectParserASTContentNamedMixinApplicationBegin(DirectParserASTType type,
+ {this.begin, this.abstractToken, this.name})
+ : super("NamedMixinApplication", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "begin": begin,
+ "abstractToken": abstractToken,
+ "name": name,
+ };
+}
+
+class DirectParserASTContentNamedMixinApplicationWithClauseHandle
+ extends DirectParserASTContent {
+ final Token withKeyword;
+
+ DirectParserASTContentNamedMixinApplicationWithClauseHandle(
+ DirectParserASTType type,
+ {this.withKeyword})
+ : super("NamedMixinApplicationWithClause", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "withKeyword": withKeyword,
+ };
+}
+
+class DirectParserASTContentNamedMixinApplicationEnd
+ extends DirectParserASTContent {
+ final Token begin;
+ final Token classKeyword;
+ final Token equals;
+ final Token implementsKeyword;
+ final Token endToken;
+
+ DirectParserASTContentNamedMixinApplicationEnd(DirectParserASTType type,
+ {this.begin,
+ this.classKeyword,
+ this.equals,
+ this.implementsKeyword,
+ this.endToken})
+ : super("NamedMixinApplication", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "begin": begin,
+ "classKeyword": classKeyword,
+ "equals": equals,
+ "implementsKeyword": implementsKeyword,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentHideBegin extends DirectParserASTContent {
+ final Token hideKeyword;
+
+ DirectParserASTContentHideBegin(DirectParserASTType type, {this.hideKeyword})
+ : super("Hide", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "hideKeyword": hideKeyword,
+ };
+}
+
+class DirectParserASTContentHideEnd extends DirectParserASTContent {
+ final Token hideKeyword;
+
+ DirectParserASTContentHideEnd(DirectParserASTType type, {this.hideKeyword})
+ : super("Hide", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "hideKeyword": hideKeyword,
+ };
+}
+
+class DirectParserASTContentIdentifierListHandle
+ extends DirectParserASTContent {
+ final int count;
+
+ DirectParserASTContentIdentifierListHandle(DirectParserASTType type,
+ {this.count})
+ : super("IdentifierList", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ };
+}
+
+class DirectParserASTContentTypeListBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentTypeListBegin(DirectParserASTType type, {this.token})
+ : super("TypeList", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentTypeListEnd extends DirectParserASTContent {
+ final int count;
+
+ DirectParserASTContentTypeListEnd(DirectParserASTType type, {this.count})
+ : super("TypeList", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ };
+}
+
+class DirectParserASTContentIfStatementBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentIfStatementBegin(DirectParserASTType type, {this.token})
+ : super("IfStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentIfStatementEnd extends DirectParserASTContent {
+ final Token ifToken;
+ final Token elseToken;
+
+ DirectParserASTContentIfStatementEnd(DirectParserASTType type,
+ {this.ifToken, this.elseToken})
+ : super("IfStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "ifToken": ifToken,
+ "elseToken": elseToken,
+ };
+}
+
+class DirectParserASTContentThenStatementBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentThenStatementBegin(DirectParserASTType type,
+ {this.token})
+ : super("ThenStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentThenStatementEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentThenStatementEnd(DirectParserASTType type, {this.token})
+ : super("ThenStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentElseStatementBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentElseStatementBegin(DirectParserASTType type,
+ {this.token})
+ : super("ElseStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentElseStatementEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentElseStatementEnd(DirectParserASTType type, {this.token})
+ : super("ElseStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentImportBegin extends DirectParserASTContent {
+ final Token importKeyword;
+
+ DirectParserASTContentImportBegin(DirectParserASTType type,
+ {this.importKeyword})
+ : super("Import", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "importKeyword": importKeyword,
+ };
+}
+
+class DirectParserASTContentImportPrefixHandle extends DirectParserASTContent {
+ final Token deferredKeyword;
+ final Token asKeyword;
+
+ DirectParserASTContentImportPrefixHandle(DirectParserASTType type,
+ {this.deferredKeyword, this.asKeyword})
+ : super("ImportPrefix", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "deferredKeyword": deferredKeyword,
+ "asKeyword": asKeyword,
+ };
+}
+
+class DirectParserASTContentImportEnd extends DirectParserASTContent {
+ final Token importKeyword;
+ final Token semicolon;
+
+ DirectParserASTContentImportEnd(DirectParserASTType type,
+ {this.importKeyword, this.semicolon})
+ : super("Import", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "importKeyword": importKeyword,
+ "semicolon": semicolon,
+ };
+}
+
+class DirectParserASTContentRecoverImportHandle extends DirectParserASTContent {
+ final Token semicolon;
+
+ DirectParserASTContentRecoverImportHandle(DirectParserASTType type,
+ {this.semicolon})
+ : super("RecoverImport", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "semicolon": semicolon,
+ };
+}
+
+class DirectParserASTContentConditionalUrisBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentConditionalUrisBegin(DirectParserASTType type,
+ {this.token})
+ : super("ConditionalUris", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentConditionalUrisEnd extends DirectParserASTContent {
+ final int count;
+
+ DirectParserASTContentConditionalUrisEnd(DirectParserASTType type,
+ {this.count})
+ : super("ConditionalUris", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ };
+}
+
+class DirectParserASTContentConditionalUriBegin extends DirectParserASTContent {
+ final Token ifKeyword;
+
+ DirectParserASTContentConditionalUriBegin(DirectParserASTType type,
+ {this.ifKeyword})
+ : super("ConditionalUri", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "ifKeyword": ifKeyword,
+ };
+}
+
+class DirectParserASTContentConditionalUriEnd extends DirectParserASTContent {
+ final Token ifKeyword;
+ final Token leftParen;
+ final Token equalSign;
+
+ DirectParserASTContentConditionalUriEnd(DirectParserASTType type,
+ {this.ifKeyword, this.leftParen, this.equalSign})
+ : super("ConditionalUri", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "ifKeyword": ifKeyword,
+ "leftParen": leftParen,
+ "equalSign": equalSign,
+ };
+}
+
+class DirectParserASTContentDottedNameHandle extends DirectParserASTContent {
+ final int count;
+ final Token firstIdentifier;
+
+ DirectParserASTContentDottedNameHandle(DirectParserASTType type,
+ {this.count, this.firstIdentifier})
+ : super("DottedName", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ "firstIdentifier": firstIdentifier,
+ };
+}
+
+class DirectParserASTContentImplicitCreationExpressionBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentImplicitCreationExpressionBegin(
+ DirectParserASTType type,
+ {this.token})
+ : super("ImplicitCreationExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentImplicitCreationExpressionEnd
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentImplicitCreationExpressionEnd(DirectParserASTType type,
+ {this.token})
+ : super("ImplicitCreationExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentInitializedIdentifierBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentInitializedIdentifierBegin(DirectParserASTType type,
+ {this.token})
+ : super("InitializedIdentifier", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentInitializedIdentifierEnd
+ extends DirectParserASTContent {
+ final Token nameToken;
+
+ DirectParserASTContentInitializedIdentifierEnd(DirectParserASTType type,
+ {this.nameToken})
+ : super("InitializedIdentifier", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "nameToken": nameToken,
+ };
+}
+
+class DirectParserASTContentFieldInitializerBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentFieldInitializerBegin(DirectParserASTType type,
+ {this.token})
+ : super("FieldInitializer", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentFieldInitializerEnd extends DirectParserASTContent {
+ final Token assignment;
+ final Token token;
+
+ DirectParserASTContentFieldInitializerEnd(DirectParserASTType type,
+ {this.assignment, this.token})
+ : super("FieldInitializer", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "assignment": assignment,
+ "token": token,
+ };
+}
+
+class DirectParserASTContentNoFieldInitializerHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentNoFieldInitializerHandle(DirectParserASTType type,
+ {this.token})
+ : super("NoFieldInitializer", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentVariableInitializerBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentVariableInitializerBegin(DirectParserASTType type,
+ {this.token})
+ : super("VariableInitializer", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentVariableInitializerEnd
+ extends DirectParserASTContent {
+ final Token assignmentOperator;
+
+ DirectParserASTContentVariableInitializerEnd(DirectParserASTType type,
+ {this.assignmentOperator})
+ : super("VariableInitializer", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "assignmentOperator": assignmentOperator,
+ };
+}
+
+class DirectParserASTContentNoVariableInitializerHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentNoVariableInitializerHandle(DirectParserASTType type,
+ {this.token})
+ : super("NoVariableInitializer", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentInitializerBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentInitializerBegin(DirectParserASTType type, {this.token})
+ : super("Initializer", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentInitializerEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentInitializerEnd(DirectParserASTType type, {this.token})
+ : super("Initializer", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentInitializersBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentInitializersBegin(DirectParserASTType type,
+ {this.token})
+ : super("Initializers", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentInitializersEnd extends DirectParserASTContent {
+ final int count;
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentInitializersEnd(DirectParserASTType type,
+ {this.count, this.beginToken, this.endToken})
+ : super("Initializers", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentNoInitializersHandle
+ extends DirectParserASTContent {
+ DirectParserASTContentNoInitializersHandle(DirectParserASTType type)
+ : super("NoInitializers", type);
+
+ Map<String, Object> get deprecatedArguments => {};
+}
+
+class DirectParserASTContentInvalidExpressionHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentInvalidExpressionHandle(DirectParserASTType type,
+ {this.token})
+ : super("InvalidExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentInvalidFunctionBodyHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentInvalidFunctionBodyHandle(DirectParserASTType type,
+ {this.token})
+ : super("InvalidFunctionBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentInvalidTypeReferenceHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentInvalidTypeReferenceHandle(DirectParserASTType type,
+ {this.token})
+ : super("InvalidTypeReference", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentLabelHandle extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentLabelHandle(DirectParserASTType type, {this.token})
+ : super("Label", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentLabeledStatementBegin
+ extends DirectParserASTContent {
+ final Token token;
+ final int labelCount;
+
+ DirectParserASTContentLabeledStatementBegin(DirectParserASTType type,
+ {this.token, this.labelCount})
+ : super("LabeledStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "labelCount": labelCount,
+ };
+}
+
+class DirectParserASTContentLabeledStatementEnd extends DirectParserASTContent {
+ final int labelCount;
+
+ DirectParserASTContentLabeledStatementEnd(DirectParserASTType type,
+ {this.labelCount})
+ : super("LabeledStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "labelCount": labelCount,
+ };
+}
+
+class DirectParserASTContentLibraryNameBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentLibraryNameBegin(DirectParserASTType type, {this.token})
+ : super("LibraryName", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentLibraryNameEnd extends DirectParserASTContent {
+ final Token libraryKeyword;
+ final Token semicolon;
+
+ DirectParserASTContentLibraryNameEnd(DirectParserASTType type,
+ {this.libraryKeyword, this.semicolon})
+ : super("LibraryName", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "libraryKeyword": libraryKeyword,
+ "semicolon": semicolon,
+ };
+}
+
+class DirectParserASTContentLiteralMapEntryHandle
+ extends DirectParserASTContent {
+ final Token colon;
+ final Token endToken;
+
+ DirectParserASTContentLiteralMapEntryHandle(DirectParserASTType type,
+ {this.colon, this.endToken})
+ : super("LiteralMapEntry", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "colon": colon,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentLiteralStringBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentLiteralStringBegin(DirectParserASTType type,
+ {this.token})
+ : super("LiteralString", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentInterpolationExpressionHandle
+ extends DirectParserASTContent {
+ final Token leftBracket;
+ final Token rightBracket;
+
+ DirectParserASTContentInterpolationExpressionHandle(DirectParserASTType type,
+ {this.leftBracket, this.rightBracket})
+ : super("InterpolationExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "leftBracket": leftBracket,
+ "rightBracket": rightBracket,
+ };
+}
+
+class DirectParserASTContentLiteralStringEnd extends DirectParserASTContent {
+ final int interpolationCount;
+ final Token endToken;
+
+ DirectParserASTContentLiteralStringEnd(DirectParserASTType type,
+ {this.interpolationCount, this.endToken})
+ : super("LiteralString", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "interpolationCount": interpolationCount,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentStringJuxtapositionHandle
+ extends DirectParserASTContent {
+ final Token startToken;
+ final int literalCount;
+
+ DirectParserASTContentStringJuxtapositionHandle(DirectParserASTType type,
+ {this.startToken, this.literalCount})
+ : super("StringJuxtaposition", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "startToken": startToken,
+ "literalCount": literalCount,
+ };
+}
+
+class DirectParserASTContentMemberBegin extends DirectParserASTContent {
+ DirectParserASTContentMemberBegin(DirectParserASTType type)
+ : super("Member", type);
+
+ Map<String, Object> get deprecatedArguments => {};
+}
+
+class DirectParserASTContentInvalidMemberHandle extends DirectParserASTContent {
+ final Token endToken;
+
+ DirectParserASTContentInvalidMemberHandle(DirectParserASTType type,
+ {this.endToken})
+ : super("InvalidMember", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentMemberEnd extends DirectParserASTContent {
+ DirectParserASTContentMemberEnd(DirectParserASTType type)
+ : super("Member", type);
+
+ Map<String, Object> get deprecatedArguments => {};
+}
+
+class DirectParserASTContentMethodBegin extends DirectParserASTContent {
+ final Token externalToken;
+ final Token staticToken;
+ final Token covariantToken;
+ final Token varFinalOrConst;
+ final Token getOrSet;
+ final Token name;
+
+ DirectParserASTContentMethodBegin(DirectParserASTType type,
+ {this.externalToken,
+ this.staticToken,
+ this.covariantToken,
+ this.varFinalOrConst,
+ this.getOrSet,
+ this.name})
+ : super("Method", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "externalToken": externalToken,
+ "staticToken": staticToken,
+ "covariantToken": covariantToken,
+ "varFinalOrConst": varFinalOrConst,
+ "getOrSet": getOrSet,
+ "name": name,
+ };
+}
+
+class DirectParserASTContentClassMethodEnd extends DirectParserASTContent {
+ final Token getOrSet;
+ final Token beginToken;
+ final Token beginParam;
+ final Token beginInitializers;
+ final Token endToken;
+
+ DirectParserASTContentClassMethodEnd(DirectParserASTType type,
+ {this.getOrSet,
+ this.beginToken,
+ this.beginParam,
+ this.beginInitializers,
+ this.endToken})
+ : super("ClassMethod", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "getOrSet": getOrSet,
+ "beginToken": beginToken,
+ "beginParam": beginParam,
+ "beginInitializers": beginInitializers,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentMixinMethodEnd extends DirectParserASTContent {
+ final Token getOrSet;
+ final Token beginToken;
+ final Token beginParam;
+ final Token beginInitializers;
+ final Token endToken;
+
+ DirectParserASTContentMixinMethodEnd(DirectParserASTType type,
+ {this.getOrSet,
+ this.beginToken,
+ this.beginParam,
+ this.beginInitializers,
+ this.endToken})
+ : super("MixinMethod", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "getOrSet": getOrSet,
+ "beginToken": beginToken,
+ "beginParam": beginParam,
+ "beginInitializers": beginInitializers,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentExtensionMethodEnd extends DirectParserASTContent {
+ final Token getOrSet;
+ final Token beginToken;
+ final Token beginParam;
+ final Token beginInitializers;
+ final Token endToken;
+
+ DirectParserASTContentExtensionMethodEnd(DirectParserASTType type,
+ {this.getOrSet,
+ this.beginToken,
+ this.beginParam,
+ this.beginInitializers,
+ this.endToken})
+ : super("ExtensionMethod", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "getOrSet": getOrSet,
+ "beginToken": beginToken,
+ "beginParam": beginParam,
+ "beginInitializers": beginInitializers,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentClassConstructorEnd extends DirectParserASTContent {
+ final Token getOrSet;
+ final Token beginToken;
+ final Token beginParam;
+ final Token beginInitializers;
+ final Token endToken;
+
+ DirectParserASTContentClassConstructorEnd(DirectParserASTType type,
+ {this.getOrSet,
+ this.beginToken,
+ this.beginParam,
+ this.beginInitializers,
+ this.endToken})
+ : super("ClassConstructor", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "getOrSet": getOrSet,
+ "beginToken": beginToken,
+ "beginParam": beginParam,
+ "beginInitializers": beginInitializers,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentMixinConstructorEnd extends DirectParserASTContent {
+ final Token getOrSet;
+ final Token beginToken;
+ final Token beginParam;
+ final Token beginInitializers;
+ final Token endToken;
+
+ DirectParserASTContentMixinConstructorEnd(DirectParserASTType type,
+ {this.getOrSet,
+ this.beginToken,
+ this.beginParam,
+ this.beginInitializers,
+ this.endToken})
+ : super("MixinConstructor", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "getOrSet": getOrSet,
+ "beginToken": beginToken,
+ "beginParam": beginParam,
+ "beginInitializers": beginInitializers,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentExtensionConstructorEnd
+ extends DirectParserASTContent {
+ final Token getOrSet;
+ final Token beginToken;
+ final Token beginParam;
+ final Token beginInitializers;
+ final Token endToken;
+
+ DirectParserASTContentExtensionConstructorEnd(DirectParserASTType type,
+ {this.getOrSet,
+ this.beginToken,
+ this.beginParam,
+ this.beginInitializers,
+ this.endToken})
+ : super("ExtensionConstructor", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "getOrSet": getOrSet,
+ "beginToken": beginToken,
+ "beginParam": beginParam,
+ "beginInitializers": beginInitializers,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentMetadataStarBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentMetadataStarBegin(DirectParserASTType type,
+ {this.token})
+ : super("MetadataStar", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentMetadataStarEnd extends DirectParserASTContent {
+ final int count;
+
+ DirectParserASTContentMetadataStarEnd(DirectParserASTType type, {this.count})
+ : super("MetadataStar", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ };
+}
+
+class DirectParserASTContentMetadataBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentMetadataBegin(DirectParserASTType type, {this.token})
+ : super("Metadata", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentMetadataEnd extends DirectParserASTContent {
+ final Token beginToken;
+ final Token periodBeforeName;
+ final Token endToken;
+
+ DirectParserASTContentMetadataEnd(DirectParserASTType type,
+ {this.beginToken, this.periodBeforeName, this.endToken})
+ : super("Metadata", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "periodBeforeName": periodBeforeName,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentOptionalFormalParametersBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentOptionalFormalParametersBegin(DirectParserASTType type,
+ {this.token})
+ : super("OptionalFormalParameters", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentOptionalFormalParametersEnd
+ extends DirectParserASTContent {
+ final int count;
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentOptionalFormalParametersEnd(DirectParserASTType type,
+ {this.count, this.beginToken, this.endToken})
+ : super("OptionalFormalParameters", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentPartBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentPartBegin(DirectParserASTType type, {this.token})
+ : super("Part", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentPartEnd extends DirectParserASTContent {
+ final Token partKeyword;
+ final Token semicolon;
+
+ DirectParserASTContentPartEnd(DirectParserASTType type,
+ {this.partKeyword, this.semicolon})
+ : super("Part", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "partKeyword": partKeyword,
+ "semicolon": semicolon,
+ };
+}
+
+class DirectParserASTContentPartOfBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentPartOfBegin(DirectParserASTType type, {this.token})
+ : super("PartOf", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentPartOfEnd extends DirectParserASTContent {
+ final Token partKeyword;
+ final Token ofKeyword;
+ final Token semicolon;
+ final bool hasName;
+
+ DirectParserASTContentPartOfEnd(DirectParserASTType type,
+ {this.partKeyword, this.ofKeyword, this.semicolon, this.hasName})
+ : super("PartOf", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "partKeyword": partKeyword,
+ "ofKeyword": ofKeyword,
+ "semicolon": semicolon,
+ "hasName": hasName,
+ };
+}
+
+class DirectParserASTContentRedirectingFactoryBodyBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentRedirectingFactoryBodyBegin(DirectParserASTType type,
+ {this.token})
+ : super("RedirectingFactoryBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentRedirectingFactoryBodyEnd
+ extends DirectParserASTContent {
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentRedirectingFactoryBodyEnd(DirectParserASTType type,
+ {this.beginToken, this.endToken})
+ : super("RedirectingFactoryBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentReturnStatementBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentReturnStatementBegin(DirectParserASTType type,
+ {this.token})
+ : super("ReturnStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentNativeFunctionBodyHandle
+ extends DirectParserASTContent {
+ final Token nativeToken;
+ final Token semicolon;
+
+ DirectParserASTContentNativeFunctionBodyHandle(DirectParserASTType type,
+ {this.nativeToken, this.semicolon})
+ : super("NativeFunctionBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "nativeToken": nativeToken,
+ "semicolon": semicolon,
+ };
+}
+
+class DirectParserASTContentNativeFunctionBodyIgnoredHandle
+ extends DirectParserASTContent {
+ final Token nativeToken;
+ final Token semicolon;
+
+ DirectParserASTContentNativeFunctionBodyIgnoredHandle(
+ DirectParserASTType type,
+ {this.nativeToken,
+ this.semicolon})
+ : super("NativeFunctionBodyIgnored", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "nativeToken": nativeToken,
+ "semicolon": semicolon,
+ };
+}
+
+class DirectParserASTContentNativeFunctionBodySkippedHandle
+ extends DirectParserASTContent {
+ final Token nativeToken;
+ final Token semicolon;
+
+ DirectParserASTContentNativeFunctionBodySkippedHandle(
+ DirectParserASTType type,
+ {this.nativeToken,
+ this.semicolon})
+ : super("NativeFunctionBodySkipped", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "nativeToken": nativeToken,
+ "semicolon": semicolon,
+ };
+}
+
+class DirectParserASTContentEmptyFunctionBodyHandle
+ extends DirectParserASTContent {
+ final Token semicolon;
+
+ DirectParserASTContentEmptyFunctionBodyHandle(DirectParserASTType type,
+ {this.semicolon})
+ : super("EmptyFunctionBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "semicolon": semicolon,
+ };
+}
+
+class DirectParserASTContentExpressionFunctionBodyHandle
+ extends DirectParserASTContent {
+ final Token arrowToken;
+ final Token endToken;
+
+ DirectParserASTContentExpressionFunctionBodyHandle(DirectParserASTType type,
+ {this.arrowToken, this.endToken})
+ : super("ExpressionFunctionBody", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "arrowToken": arrowToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentReturnStatementEnd extends DirectParserASTContent {
+ final bool hasExpression;
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentReturnStatementEnd(DirectParserASTType type,
+ {this.hasExpression, this.beginToken, this.endToken})
+ : super("ReturnStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "hasExpression": hasExpression,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentSendHandle extends DirectParserASTContent {
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentSendHandle(DirectParserASTType type,
+ {this.beginToken, this.endToken})
+ : super("Send", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentShowBegin extends DirectParserASTContent {
+ final Token showKeyword;
+
+ DirectParserASTContentShowBegin(DirectParserASTType type, {this.showKeyword})
+ : super("Show", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "showKeyword": showKeyword,
+ };
+}
+
+class DirectParserASTContentShowEnd extends DirectParserASTContent {
+ final Token showKeyword;
+
+ DirectParserASTContentShowEnd(DirectParserASTType type, {this.showKeyword})
+ : super("Show", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "showKeyword": showKeyword,
+ };
+}
+
+class DirectParserASTContentSwitchStatementBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentSwitchStatementBegin(DirectParserASTType type,
+ {this.token})
+ : super("SwitchStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentSwitchStatementEnd extends DirectParserASTContent {
+ final Token switchKeyword;
+ final Token endToken;
+
+ DirectParserASTContentSwitchStatementEnd(DirectParserASTType type,
+ {this.switchKeyword, this.endToken})
+ : super("SwitchStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "switchKeyword": switchKeyword,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentSwitchBlockBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentSwitchBlockBegin(DirectParserASTType type, {this.token})
+ : super("SwitchBlock", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentSwitchBlockEnd extends DirectParserASTContent {
+ final int caseCount;
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentSwitchBlockEnd(DirectParserASTType type,
+ {this.caseCount, this.beginToken, this.endToken})
+ : super("SwitchBlock", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "caseCount": caseCount,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentLiteralSymbolBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentLiteralSymbolBegin(DirectParserASTType type,
+ {this.token})
+ : super("LiteralSymbol", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentLiteralSymbolEnd extends DirectParserASTContent {
+ final Token hashToken;
+ final int identifierCount;
+
+ DirectParserASTContentLiteralSymbolEnd(DirectParserASTType type,
+ {this.hashToken, this.identifierCount})
+ : super("LiteralSymbol", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "hashToken": hashToken,
+ "identifierCount": identifierCount,
+ };
+}
+
+class DirectParserASTContentThrowExpressionHandle
+ extends DirectParserASTContent {
+ final Token throwToken;
+ final Token endToken;
+
+ DirectParserASTContentThrowExpressionHandle(DirectParserASTType type,
+ {this.throwToken, this.endToken})
+ : super("ThrowExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "throwToken": throwToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentRethrowStatementBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentRethrowStatementBegin(DirectParserASTType type,
+ {this.token})
+ : super("RethrowStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentRethrowStatementEnd extends DirectParserASTContent {
+ final Token rethrowToken;
+ final Token endToken;
+
+ DirectParserASTContentRethrowStatementEnd(DirectParserASTType type,
+ {this.rethrowToken, this.endToken})
+ : super("RethrowStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "rethrowToken": rethrowToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentTopLevelDeclarationEnd
+ extends DirectParserASTContent {
+ final Token nextToken;
+
+ DirectParserASTContentTopLevelDeclarationEnd(DirectParserASTType type,
+ {this.nextToken})
+ : super("TopLevelDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "nextToken": nextToken,
+ };
+}
+
+class DirectParserASTContentInvalidTopLevelDeclarationHandle
+ extends DirectParserASTContent {
+ final Token endToken;
+
+ DirectParserASTContentInvalidTopLevelDeclarationHandle(
+ DirectParserASTType type,
+ {this.endToken})
+ : super("InvalidTopLevelDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentTopLevelMemberBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentTopLevelMemberBegin(DirectParserASTType type,
+ {this.token})
+ : super("TopLevelMember", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentFieldsBegin extends DirectParserASTContent {
+ final Token lastConsumed;
+
+ DirectParserASTContentFieldsBegin(DirectParserASTType type,
+ {this.lastConsumed})
+ : super("Fields", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "lastConsumed": lastConsumed,
+ };
+}
+
+class DirectParserASTContentTopLevelFieldsEnd extends DirectParserASTContent {
+ final Token externalToken;
+ final Token staticToken;
+ final Token covariantToken;
+ final Token lateToken;
+ final Token varFinalOrConst;
+ final int count;
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentTopLevelFieldsEnd(DirectParserASTType type,
+ {this.externalToken,
+ this.staticToken,
+ this.covariantToken,
+ this.lateToken,
+ this.varFinalOrConst,
+ this.count,
+ this.beginToken,
+ this.endToken})
+ : super("TopLevelFields", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "externalToken": externalToken,
+ "staticToken": staticToken,
+ "covariantToken": covariantToken,
+ "lateToken": lateToken,
+ "varFinalOrConst": varFinalOrConst,
+ "count": count,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentTopLevelMethodBegin extends DirectParserASTContent {
+ final Token lastConsumed;
+ final Token externalToken;
+
+ DirectParserASTContentTopLevelMethodBegin(DirectParserASTType type,
+ {this.lastConsumed, this.externalToken})
+ : super("TopLevelMethod", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "lastConsumed": lastConsumed,
+ "externalToken": externalToken,
+ };
+}
+
+class DirectParserASTContentTopLevelMethodEnd extends DirectParserASTContent {
+ final Token beginToken;
+ final Token getOrSet;
+ final Token endToken;
+
+ DirectParserASTContentTopLevelMethodEnd(DirectParserASTType type,
+ {this.beginToken, this.getOrSet, this.endToken})
+ : super("TopLevelMethod", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "getOrSet": getOrSet,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentTryStatementBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentTryStatementBegin(DirectParserASTType type,
+ {this.token})
+ : super("TryStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentCaseMatchHandle extends DirectParserASTContent {
+ final Token caseKeyword;
+ final Token colon;
+
+ DirectParserASTContentCaseMatchHandle(DirectParserASTType type,
+ {this.caseKeyword, this.colon})
+ : super("CaseMatch", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "caseKeyword": caseKeyword,
+ "colon": colon,
+ };
+}
+
+class DirectParserASTContentCatchClauseBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentCatchClauseBegin(DirectParserASTType type, {this.token})
+ : super("CatchClause", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentCatchClauseEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentCatchClauseEnd(DirectParserASTType type, {this.token})
+ : super("CatchClause", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentCatchBlockHandle extends DirectParserASTContent {
+ final Token onKeyword;
+ final Token catchKeyword;
+ final Token comma;
+
+ DirectParserASTContentCatchBlockHandle(DirectParserASTType type,
+ {this.onKeyword, this.catchKeyword, this.comma})
+ : super("CatchBlock", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "onKeyword": onKeyword,
+ "catchKeyword": catchKeyword,
+ "comma": comma,
+ };
+}
+
+class DirectParserASTContentFinallyBlockHandle extends DirectParserASTContent {
+ final Token finallyKeyword;
+
+ DirectParserASTContentFinallyBlockHandle(DirectParserASTType type,
+ {this.finallyKeyword})
+ : super("FinallyBlock", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "finallyKeyword": finallyKeyword,
+ };
+}
+
+class DirectParserASTContentTryStatementEnd extends DirectParserASTContent {
+ final int catchCount;
+ final Token tryKeyword;
+ final Token finallyKeyword;
+
+ DirectParserASTContentTryStatementEnd(DirectParserASTType type,
+ {this.catchCount, this.tryKeyword, this.finallyKeyword})
+ : super("TryStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "catchCount": catchCount,
+ "tryKeyword": tryKeyword,
+ "finallyKeyword": finallyKeyword,
+ };
+}
+
+class DirectParserASTContentTypeHandle extends DirectParserASTContent {
+ final Token beginToken;
+ final Token questionMark;
+
+ DirectParserASTContentTypeHandle(DirectParserASTType type,
+ {this.beginToken, this.questionMark})
+ : super("Type", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "questionMark": questionMark,
+ };
+}
+
+class DirectParserASTContentNonNullAssertExpressionHandle
+ extends DirectParserASTContent {
+ final Token bang;
+
+ DirectParserASTContentNonNullAssertExpressionHandle(DirectParserASTType type,
+ {this.bang})
+ : super("NonNullAssertExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "bang": bang,
+ };
+}
+
+class DirectParserASTContentNoNameHandle extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentNoNameHandle(DirectParserASTType type, {this.token})
+ : super("NoName", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentFunctionTypeBegin extends DirectParserASTContent {
+ final Token beginToken;
+
+ DirectParserASTContentFunctionTypeBegin(DirectParserASTType type,
+ {this.beginToken})
+ : super("FunctionType", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ };
+}
+
+class DirectParserASTContentFunctionTypeEnd extends DirectParserASTContent {
+ final Token functionToken;
+ final Token questionMark;
+
+ DirectParserASTContentFunctionTypeEnd(DirectParserASTType type,
+ {this.functionToken, this.questionMark})
+ : super("FunctionType", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "functionToken": functionToken,
+ "questionMark": questionMark,
+ };
+}
+
+class DirectParserASTContentTypeArgumentsBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentTypeArgumentsBegin(DirectParserASTType type,
+ {this.token})
+ : super("TypeArguments", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentTypeArgumentsEnd extends DirectParserASTContent {
+ final int count;
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentTypeArgumentsEnd(DirectParserASTType type,
+ {this.count, this.beginToken, this.endToken})
+ : super("TypeArguments", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentInvalidTypeArgumentsHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentInvalidTypeArgumentsHandle(DirectParserASTType type,
+ {this.token})
+ : super("InvalidTypeArguments", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentNoTypeArgumentsHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentNoTypeArgumentsHandle(DirectParserASTType type,
+ {this.token})
+ : super("NoTypeArguments", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentTypeVariableBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentTypeVariableBegin(DirectParserASTType type,
+ {this.token})
+ : super("TypeVariable", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentTypeVariablesDefinedHandle
+ extends DirectParserASTContent {
+ final Token token;
+ final int count;
+
+ DirectParserASTContentTypeVariablesDefinedHandle(DirectParserASTType type,
+ {this.token, this.count})
+ : super("TypeVariablesDefined", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "count": count,
+ };
+}
+
+class DirectParserASTContentTypeVariableEnd extends DirectParserASTContent {
+ final Token token;
+ final int index;
+ final Token extendsOrSuper;
+ final Token variance;
+
+ DirectParserASTContentTypeVariableEnd(DirectParserASTType type,
+ {this.token, this.index, this.extendsOrSuper, this.variance})
+ : super("TypeVariable", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "index": index,
+ "extendsOrSuper": extendsOrSuper,
+ "variance": variance,
+ };
+}
+
+class DirectParserASTContentTypeVariablesBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentTypeVariablesBegin(DirectParserASTType type,
+ {this.token})
+ : super("TypeVariables", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentTypeVariablesEnd extends DirectParserASTContent {
+ final Token beginToken;
+ final Token endToken;
+
+ DirectParserASTContentTypeVariablesEnd(DirectParserASTType type,
+ {this.beginToken, this.endToken})
+ : super("TypeVariables", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentFunctionExpressionBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentFunctionExpressionBegin(DirectParserASTType type,
+ {this.token})
+ : super("FunctionExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentFunctionExpressionEnd
+ extends DirectParserASTContent {
+ final Token beginToken;
+ final Token token;
+
+ DirectParserASTContentFunctionExpressionEnd(DirectParserASTType type,
+ {this.beginToken, this.token})
+ : super("FunctionExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "token": token,
+ };
+}
+
+class DirectParserASTContentVariablesDeclarationBegin
+ extends DirectParserASTContent {
+ final Token token;
+ final Token lateToken;
+ final Token varFinalOrConst;
+
+ DirectParserASTContentVariablesDeclarationBegin(DirectParserASTType type,
+ {this.token, this.lateToken, this.varFinalOrConst})
+ : super("VariablesDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "lateToken": lateToken,
+ "varFinalOrConst": varFinalOrConst,
+ };
+}
+
+class DirectParserASTContentVariablesDeclarationEnd
+ extends DirectParserASTContent {
+ final int count;
+ final Token endToken;
+
+ DirectParserASTContentVariablesDeclarationEnd(DirectParserASTType type,
+ {this.count, this.endToken})
+ : super("VariablesDeclaration", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentWhileStatementBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentWhileStatementBegin(DirectParserASTType type,
+ {this.token})
+ : super("WhileStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentWhileStatementEnd extends DirectParserASTContent {
+ final Token whileKeyword;
+ final Token endToken;
+
+ DirectParserASTContentWhileStatementEnd(DirectParserASTType type,
+ {this.whileKeyword, this.endToken})
+ : super("WhileStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "whileKeyword": whileKeyword,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentAsOperatorTypeBegin extends DirectParserASTContent {
+ final Token operator;
+
+ DirectParserASTContentAsOperatorTypeBegin(DirectParserASTType type,
+ {this.operator})
+ : super("AsOperatorType", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "operator": operator,
+ };
+}
+
+class DirectParserASTContentAsOperatorTypeEnd extends DirectParserASTContent {
+ final Token operator;
+
+ DirectParserASTContentAsOperatorTypeEnd(DirectParserASTType type,
+ {this.operator})
+ : super("AsOperatorType", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "operator": operator,
+ };
+}
+
+class DirectParserASTContentAsOperatorHandle extends DirectParserASTContent {
+ final Token operator;
+
+ DirectParserASTContentAsOperatorHandle(DirectParserASTType type,
+ {this.operator})
+ : super("AsOperator", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "operator": operator,
+ };
+}
+
+class DirectParserASTContentAssignmentExpressionHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentAssignmentExpressionHandle(DirectParserASTType type,
+ {this.token})
+ : super("AssignmentExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentBinaryExpressionBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentBinaryExpressionBegin(DirectParserASTType type,
+ {this.token})
+ : super("BinaryExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentBinaryExpressionEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentBinaryExpressionEnd(DirectParserASTType type,
+ {this.token})
+ : super("BinaryExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentEndingBinaryExpressionHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentEndingBinaryExpressionHandle(DirectParserASTType type,
+ {this.token})
+ : super("EndingBinaryExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentConditionalExpressionBegin
+ extends DirectParserASTContent {
+ final Token question;
+
+ DirectParserASTContentConditionalExpressionBegin(DirectParserASTType type,
+ {this.question})
+ : super("ConditionalExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "question": question,
+ };
+}
+
+class DirectParserASTContentConditionalExpressionColonHandle
+ extends DirectParserASTContent {
+ DirectParserASTContentConditionalExpressionColonHandle(
+ DirectParserASTType type)
+ : super("ConditionalExpressionColon", type);
+
+ Map<String, Object> get deprecatedArguments => {};
+}
+
+class DirectParserASTContentConditionalExpressionEnd
+ extends DirectParserASTContent {
+ final Token question;
+ final Token colon;
+
+ DirectParserASTContentConditionalExpressionEnd(DirectParserASTType type,
+ {this.question, this.colon})
+ : super("ConditionalExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "question": question,
+ "colon": colon,
+ };
+}
+
+class DirectParserASTContentConstExpressionBegin
+ extends DirectParserASTContent {
+ final Token constKeyword;
+
+ DirectParserASTContentConstExpressionBegin(DirectParserASTType type,
+ {this.constKeyword})
+ : super("ConstExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "constKeyword": constKeyword,
+ };
+}
+
+class DirectParserASTContentConstExpressionEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentConstExpressionEnd(DirectParserASTType type,
+ {this.token})
+ : super("ConstExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentForControlFlowBegin extends DirectParserASTContent {
+ final Token awaitToken;
+ final Token forToken;
+
+ DirectParserASTContentForControlFlowBegin(DirectParserASTType type,
+ {this.awaitToken, this.forToken})
+ : super("ForControlFlow", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "awaitToken": awaitToken,
+ "forToken": forToken,
+ };
+}
+
+class DirectParserASTContentForControlFlowEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentForControlFlowEnd(DirectParserASTType type,
+ {this.token})
+ : super("ForControlFlow", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentForInControlFlowEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentForInControlFlowEnd(DirectParserASTType type,
+ {this.token})
+ : super("ForInControlFlow", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentIfControlFlowBegin extends DirectParserASTContent {
+ final Token ifToken;
+
+ DirectParserASTContentIfControlFlowBegin(DirectParserASTType type,
+ {this.ifToken})
+ : super("IfControlFlow", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "ifToken": ifToken,
+ };
+}
+
+class DirectParserASTContentThenControlFlowHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentThenControlFlowHandle(DirectParserASTType type,
+ {this.token})
+ : super("ThenControlFlow", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentElseControlFlowHandle
+ extends DirectParserASTContent {
+ final Token elseToken;
+
+ DirectParserASTContentElseControlFlowHandle(DirectParserASTType type,
+ {this.elseToken})
+ : super("ElseControlFlow", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "elseToken": elseToken,
+ };
+}
+
+class DirectParserASTContentIfControlFlowEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentIfControlFlowEnd(DirectParserASTType type, {this.token})
+ : super("IfControlFlow", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentIfElseControlFlowEnd
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentIfElseControlFlowEnd(DirectParserASTType type,
+ {this.token})
+ : super("IfElseControlFlow", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentSpreadExpressionHandle
+ extends DirectParserASTContent {
+ final Token spreadToken;
+
+ DirectParserASTContentSpreadExpressionHandle(DirectParserASTType type,
+ {this.spreadToken})
+ : super("SpreadExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "spreadToken": spreadToken,
+ };
+}
+
+class DirectParserASTContentFunctionTypedFormalParameterBegin
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentFunctionTypedFormalParameterBegin(
+ DirectParserASTType type,
+ {this.token})
+ : super("FunctionTypedFormalParameter", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentFunctionTypedFormalParameterEnd
+ extends DirectParserASTContent {
+ final Token nameToken;
+ final Token question;
+
+ DirectParserASTContentFunctionTypedFormalParameterEnd(
+ DirectParserASTType type,
+ {this.nameToken,
+ this.question})
+ : super("FunctionTypedFormalParameter", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "nameToken": nameToken,
+ "question": question,
+ };
+}
+
+class DirectParserASTContentIdentifierHandle extends DirectParserASTContent {
+ final Token token;
+ final IdentifierContext context;
+
+ DirectParserASTContentIdentifierHandle(DirectParserASTType type,
+ {this.token, this.context})
+ : super("Identifier", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "context": context,
+ };
+}
+
+class DirectParserASTContentIndexedExpressionHandle
+ extends DirectParserASTContent {
+ final Token question;
+ final Token openSquareBracket;
+ final Token closeSquareBracket;
+
+ DirectParserASTContentIndexedExpressionHandle(DirectParserASTType type,
+ {this.question, this.openSquareBracket, this.closeSquareBracket})
+ : super("IndexedExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "question": question,
+ "openSquareBracket": openSquareBracket,
+ "closeSquareBracket": closeSquareBracket,
+ };
+}
+
+class DirectParserASTContentIsOperatorTypeBegin extends DirectParserASTContent {
+ final Token operator;
+
+ DirectParserASTContentIsOperatorTypeBegin(DirectParserASTType type,
+ {this.operator})
+ : super("IsOperatorType", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "operator": operator,
+ };
+}
+
+class DirectParserASTContentIsOperatorTypeEnd extends DirectParserASTContent {
+ final Token operator;
+
+ DirectParserASTContentIsOperatorTypeEnd(DirectParserASTType type,
+ {this.operator})
+ : super("IsOperatorType", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "operator": operator,
+ };
+}
+
+class DirectParserASTContentIsOperatorHandle extends DirectParserASTContent {
+ final Token isOperator;
+ final Token not;
+
+ DirectParserASTContentIsOperatorHandle(DirectParserASTType type,
+ {this.isOperator, this.not})
+ : super("IsOperator", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "isOperator": isOperator,
+ "not": not,
+ };
+}
+
+class DirectParserASTContentLiteralBoolHandle extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentLiteralBoolHandle(DirectParserASTType type,
+ {this.token})
+ : super("LiteralBool", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentBreakStatementHandle
+ extends DirectParserASTContent {
+ final bool hasTarget;
+ final Token breakKeyword;
+ final Token endToken;
+
+ DirectParserASTContentBreakStatementHandle(DirectParserASTType type,
+ {this.hasTarget, this.breakKeyword, this.endToken})
+ : super("BreakStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "hasTarget": hasTarget,
+ "breakKeyword": breakKeyword,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentContinueStatementHandle
+ extends DirectParserASTContent {
+ final bool hasTarget;
+ final Token continueKeyword;
+ final Token endToken;
+
+ DirectParserASTContentContinueStatementHandle(DirectParserASTType type,
+ {this.hasTarget, this.continueKeyword, this.endToken})
+ : super("ContinueStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "hasTarget": hasTarget,
+ "continueKeyword": continueKeyword,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentEmptyStatementHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentEmptyStatementHandle(DirectParserASTType type,
+ {this.token})
+ : super("EmptyStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentAssertBegin extends DirectParserASTContent {
+ final Token assertKeyword;
+ final Assert kind;
+
+ DirectParserASTContentAssertBegin(DirectParserASTType type,
+ {this.assertKeyword, this.kind})
+ : super("Assert", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "assertKeyword": assertKeyword,
+ "kind": kind,
+ };
+}
+
+class DirectParserASTContentAssertEnd extends DirectParserASTContent {
+ final Token assertKeyword;
+ final Assert kind;
+ final Token leftParenthesis;
+ final Token commaToken;
+ final Token semicolonToken;
+
+ DirectParserASTContentAssertEnd(DirectParserASTType type,
+ {this.assertKeyword,
+ this.kind,
+ this.leftParenthesis,
+ this.commaToken,
+ this.semicolonToken})
+ : super("Assert", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "assertKeyword": assertKeyword,
+ "kind": kind,
+ "leftParenthesis": leftParenthesis,
+ "commaToken": commaToken,
+ "semicolonToken": semicolonToken,
+ };
+}
+
+class DirectParserASTContentLiteralDoubleHandle extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentLiteralDoubleHandle(DirectParserASTType type,
+ {this.token})
+ : super("LiteralDouble", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentLiteralIntHandle extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentLiteralIntHandle(DirectParserASTType type, {this.token})
+ : super("LiteralInt", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentLiteralListHandle extends DirectParserASTContent {
+ final int count;
+ final Token leftBracket;
+ final Token constKeyword;
+ final Token rightBracket;
+
+ DirectParserASTContentLiteralListHandle(DirectParserASTType type,
+ {this.count, this.leftBracket, this.constKeyword, this.rightBracket})
+ : super("LiteralList", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ "leftBracket": leftBracket,
+ "constKeyword": constKeyword,
+ "rightBracket": rightBracket,
+ };
+}
+
+class DirectParserASTContentLiteralSetOrMapHandle
+ extends DirectParserASTContent {
+ final int count;
+ final Token leftBrace;
+ final Token constKeyword;
+ final Token rightBrace;
+ final bool hasSetEntry;
+
+ DirectParserASTContentLiteralSetOrMapHandle(DirectParserASTType type,
+ {this.count,
+ this.leftBrace,
+ this.constKeyword,
+ this.rightBrace,
+ this.hasSetEntry})
+ : super("LiteralSetOrMap", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "count": count,
+ "leftBrace": leftBrace,
+ "constKeyword": constKeyword,
+ "rightBrace": rightBrace,
+ "hasSetEntry": hasSetEntry,
+ };
+}
+
+class DirectParserASTContentLiteralNullHandle extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentLiteralNullHandle(DirectParserASTType type,
+ {this.token})
+ : super("LiteralNull", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentNativeClauseHandle extends DirectParserASTContent {
+ final Token nativeToken;
+ final bool hasName;
+
+ DirectParserASTContentNativeClauseHandle(DirectParserASTType type,
+ {this.nativeToken, this.hasName})
+ : super("NativeClause", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "nativeToken": nativeToken,
+ "hasName": hasName,
+ };
+}
+
+class DirectParserASTContentNamedArgumentHandle extends DirectParserASTContent {
+ final Token colon;
+
+ DirectParserASTContentNamedArgumentHandle(DirectParserASTType type,
+ {this.colon})
+ : super("NamedArgument", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "colon": colon,
+ };
+}
+
+class DirectParserASTContentNewExpressionBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentNewExpressionBegin(DirectParserASTType type,
+ {this.token})
+ : super("NewExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentNewExpressionEnd extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentNewExpressionEnd(DirectParserASTType type, {this.token})
+ : super("NewExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentNoArgumentsHandle extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentNoArgumentsHandle(DirectParserASTType type,
+ {this.token})
+ : super("NoArguments", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentNoConstructorReferenceContinuationAfterTypeArgumentsHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentNoConstructorReferenceContinuationAfterTypeArgumentsHandle(
+ DirectParserASTType type,
+ {this.token})
+ : super("NoConstructorReferenceContinuationAfterTypeArguments", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentNoTypeHandle extends DirectParserASTContent {
+ final Token lastConsumed;
+
+ DirectParserASTContentNoTypeHandle(DirectParserASTType type,
+ {this.lastConsumed})
+ : super("NoType", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "lastConsumed": lastConsumed,
+ };
+}
+
+class DirectParserASTContentNoTypeVariablesHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentNoTypeVariablesHandle(DirectParserASTType type,
+ {this.token})
+ : super("NoTypeVariables", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentOperatorHandle extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentOperatorHandle(DirectParserASTType type, {this.token})
+ : super("Operator", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentSymbolVoidHandle extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentSymbolVoidHandle(DirectParserASTType type, {this.token})
+ : super("SymbolVoid", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentOperatorNameHandle extends DirectParserASTContent {
+ final Token operatorKeyword;
+ final Token token;
+
+ DirectParserASTContentOperatorNameHandle(DirectParserASTType type,
+ {this.operatorKeyword, this.token})
+ : super("OperatorName", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "operatorKeyword": operatorKeyword,
+ "token": token,
+ };
+}
+
+class DirectParserASTContentInvalidOperatorNameHandle
+ extends DirectParserASTContent {
+ final Token operatorKeyword;
+ final Token token;
+
+ DirectParserASTContentInvalidOperatorNameHandle(DirectParserASTType type,
+ {this.operatorKeyword, this.token})
+ : super("InvalidOperatorName", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "operatorKeyword": operatorKeyword,
+ "token": token,
+ };
+}
+
+class DirectParserASTContentParenthesizedConditionHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentParenthesizedConditionHandle(DirectParserASTType type,
+ {this.token})
+ : super("ParenthesizedCondition", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentParenthesizedExpressionHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentParenthesizedExpressionHandle(DirectParserASTType type,
+ {this.token})
+ : super("ParenthesizedExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentQualifiedHandle extends DirectParserASTContent {
+ final Token period;
+
+ DirectParserASTContentQualifiedHandle(DirectParserASTType type, {this.period})
+ : super("Qualified", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "period": period,
+ };
+}
+
+class DirectParserASTContentStringPartHandle extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentStringPartHandle(DirectParserASTType type, {this.token})
+ : super("StringPart", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentSuperExpressionHandle
+ extends DirectParserASTContent {
+ final Token token;
+ final IdentifierContext context;
+
+ DirectParserASTContentSuperExpressionHandle(DirectParserASTType type,
+ {this.token, this.context})
+ : super("SuperExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "context": context,
+ };
+}
+
+class DirectParserASTContentSwitchCaseBegin extends DirectParserASTContent {
+ final int labelCount;
+ final int expressionCount;
+ final Token firstToken;
+
+ DirectParserASTContentSwitchCaseBegin(DirectParserASTType type,
+ {this.labelCount, this.expressionCount, this.firstToken})
+ : super("SwitchCase", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "labelCount": labelCount,
+ "expressionCount": expressionCount,
+ "firstToken": firstToken,
+ };
+}
+
+class DirectParserASTContentSwitchCaseEnd extends DirectParserASTContent {
+ final int labelCount;
+ final int expressionCount;
+ final Token defaultKeyword;
+ final Token colonAfterDefault;
+ final int statementCount;
+ final Token firstToken;
+ final Token endToken;
+
+ DirectParserASTContentSwitchCaseEnd(DirectParserASTType type,
+ {this.labelCount,
+ this.expressionCount,
+ this.defaultKeyword,
+ this.colonAfterDefault,
+ this.statementCount,
+ this.firstToken,
+ this.endToken})
+ : super("SwitchCase", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "labelCount": labelCount,
+ "expressionCount": expressionCount,
+ "defaultKeyword": defaultKeyword,
+ "colonAfterDefault": colonAfterDefault,
+ "statementCount": statementCount,
+ "firstToken": firstToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentThisExpressionHandle
+ extends DirectParserASTContent {
+ final Token token;
+ final IdentifierContext context;
+
+ DirectParserASTContentThisExpressionHandle(DirectParserASTType type,
+ {this.token, this.context})
+ : super("ThisExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "context": context,
+ };
+}
+
+class DirectParserASTContentUnaryPostfixAssignmentExpressionHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentUnaryPostfixAssignmentExpressionHandle(
+ DirectParserASTType type,
+ {this.token})
+ : super("UnaryPostfixAssignmentExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentUnaryPrefixExpressionHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentUnaryPrefixExpressionHandle(DirectParserASTType type,
+ {this.token})
+ : super("UnaryPrefixExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentUnaryPrefixAssignmentExpressionHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentUnaryPrefixAssignmentExpressionHandle(
+ DirectParserASTType type,
+ {this.token})
+ : super("UnaryPrefixAssignmentExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentFormalParameterDefaultValueExpressionBegin
+ extends DirectParserASTContent {
+ DirectParserASTContentFormalParameterDefaultValueExpressionBegin(
+ DirectParserASTType type)
+ : super("FormalParameterDefaultValueExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {};
+}
+
+class DirectParserASTContentFormalParameterDefaultValueExpressionEnd
+ extends DirectParserASTContent {
+ DirectParserASTContentFormalParameterDefaultValueExpressionEnd(
+ DirectParserASTType type)
+ : super("FormalParameterDefaultValueExpression", type);
+
+ Map<String, Object> get deprecatedArguments => {};
+}
+
+class DirectParserASTContentValuedFormalParameterHandle
+ extends DirectParserASTContent {
+ final Token equals;
+ final Token token;
+
+ DirectParserASTContentValuedFormalParameterHandle(DirectParserASTType type,
+ {this.equals, this.token})
+ : super("ValuedFormalParameter", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "equals": equals,
+ "token": token,
+ };
+}
+
+class DirectParserASTContentFormalParameterWithoutValueHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentFormalParameterWithoutValueHandle(
+ DirectParserASTType type,
+ {this.token})
+ : super("FormalParameterWithoutValue", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentVoidKeywordHandle extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentVoidKeywordHandle(DirectParserASTType type,
+ {this.token})
+ : super("VoidKeyword", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentVoidKeywordWithTypeArgumentsHandle
+ extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentVoidKeywordWithTypeArgumentsHandle(
+ DirectParserASTType type,
+ {this.token})
+ : super("VoidKeywordWithTypeArguments", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentYieldStatementBegin extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentYieldStatementBegin(DirectParserASTType type,
+ {this.token})
+ : super("YieldStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentYieldStatementEnd extends DirectParserASTContent {
+ final Token yieldToken;
+ final Token starToken;
+ final Token endToken;
+
+ DirectParserASTContentYieldStatementEnd(DirectParserASTType type,
+ {this.yieldToken, this.starToken, this.endToken})
+ : super("YieldStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "yieldToken": yieldToken,
+ "starToken": starToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentInvalidYieldStatementEnd
+ extends DirectParserASTContent {
+ final Token beginToken;
+ final Token starToken;
+ final Token endToken;
+ final MessageCode errorCode;
+
+ DirectParserASTContentInvalidYieldStatementEnd(DirectParserASTType type,
+ {this.beginToken, this.starToken, this.endToken, this.errorCode})
+ : super("InvalidYieldStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "beginToken": beginToken,
+ "starToken": starToken,
+ "endToken": endToken,
+ "errorCode": errorCode,
+ };
+}
+
+class DirectParserASTContentRecoverableErrorHandle
+ extends DirectParserASTContent {
+ final Message message;
+ final Token startToken;
+ final Token endToken;
+
+ DirectParserASTContentRecoverableErrorHandle(DirectParserASTType type,
+ {this.message, this.startToken, this.endToken})
+ : super("RecoverableError", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "message": message,
+ "startToken": startToken,
+ "endToken": endToken,
+ };
+}
+
+class DirectParserASTContentErrorTokenHandle extends DirectParserASTContent {
+ final ErrorToken token;
+
+ DirectParserASTContentErrorTokenHandle(DirectParserASTType type, {this.token})
+ : super("ErrorToken", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentUnescapeErrorHandle extends DirectParserASTContent {
+ final Message message;
+ final Token location;
+ final int stringOffset;
+ final int length;
+
+ DirectParserASTContentUnescapeErrorHandle(DirectParserASTType type,
+ {this.message, this.location, this.stringOffset, this.length})
+ : super("UnescapeError", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "message": message,
+ "location": location,
+ "stringOffset": stringOffset,
+ "length": length,
+ };
+}
+
+class DirectParserASTContentInvalidStatementHandle
+ extends DirectParserASTContent {
+ final Token token;
+ final Message message;
+
+ DirectParserASTContentInvalidStatementHandle(DirectParserASTType type,
+ {this.token, this.message})
+ : super("InvalidStatement", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ "message": message,
+ };
+}
+
+class DirectParserASTContentScriptHandle extends DirectParserASTContent {
+ final Token token;
+
+ DirectParserASTContentScriptHandle(DirectParserASTType type, {this.token})
+ : super("Script", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "token": token,
+ };
+}
+
+class DirectParserASTContentCommentReferenceTextHandle
+ extends DirectParserASTContent {
+ final String referenceSource;
+ final int referenceOffset;
+
+ DirectParserASTContentCommentReferenceTextHandle(DirectParserASTType type,
+ {this.referenceSource, this.referenceOffset})
+ : super("CommentReferenceText", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "referenceSource": referenceSource,
+ "referenceOffset": referenceOffset,
+ };
+}
+
+class DirectParserASTContentCommentReferenceHandle
+ extends DirectParserASTContent {
+ final Token newKeyword;
+ final Token prefix;
+ final Token period;
+ final Token token;
+
+ DirectParserASTContentCommentReferenceHandle(DirectParserASTType type,
+ {this.newKeyword, this.prefix, this.period, this.token})
+ : super("CommentReference", type);
+
+ Map<String, Object> get deprecatedArguments => {
+ "newKeyword": newKeyword,
+ "prefix": prefix,
+ "period": period,
+ "token": token,
+ };
+}
+
+class DirectParserASTContentNoCommentReferenceHandle
+ extends DirectParserASTContent {
+ DirectParserASTContentNoCommentReferenceHandle(DirectParserASTType type)
+ : super("NoCommentReference", type);
+
+ Map<String, Object> get deprecatedArguments => {};
+}
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index 8c1ad37..e504875 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -113,6 +113,7 @@
bit2
bj
bk
+blindly
blob
blocking
bmp
diff --git a/pkg/front_end/test/spell_checking_list_tests.txt b/pkg/front_end/test/spell_checking_list_tests.txt
index 6d17e58..d4f79ca 100644
--- a/pkg/front_end/test/spell_checking_list_tests.txt
+++ b/pkg/front_end/test/spell_checking_list_tests.txt
@@ -292,6 +292,7 @@
forty
foundation
fox
+frozen
fulfill
func
futures
@@ -460,6 +461,7 @@
mul
mx
mysdk
+naively
naturally
negatable
newworld
@@ -698,6 +700,7 @@
unversioned
upload
upward
+usages
uses8
uuid
v1
diff --git a/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart b/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
index 2153705..8b7cf18 100644
--- a/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
+++ b/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
@@ -48,6 +48,8 @@
import 'package:_fe_analyzer_shared/src/scanner/token.dart';
import 'package:front_end/src/fasta/messages.dart';
+// ignore_for_file: lines_longer_than_80_chars
+
// THIS FILE IS AUTO GENERATED BY
// 'tool/_fasta/direct_parser_ast_helper_creator.dart'
// Run e.g.
@@ -57,23 +59,23 @@
> pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
*/
-class DirectParserASTContent {
+abstract class DirectParserASTContent {
final String what;
final DirectParserASTType type;
- final Map<String, Object> arguments;
- List<DirectParserASTContent> content;
+ Map<String, Object> get deprecatedArguments;
+ List<DirectParserASTContent> children;
- DirectParserASTContent(this.what, this.type, this.arguments);
+ DirectParserASTContent(this.what, this.type);
// TODO(jensj): Compare two ASTs.
}
-enum DirectParserASTType { BEGIN, END, HANDLE, DONE }
+enum DirectParserASTType { BEGIN, END, HANDLE }
abstract class AbstractDirectParserASTListener implements Listener {
List<DirectParserASTContent> data = [];
- void seen(String what, DirectParserASTType type, Map<String, Object> arguments);
+ void seen(DirectParserASTContent entry);
""");
@@ -82,6 +84,8 @@
parser.parseUnit(firstToken);
out.writeln("}");
+ out.writeln("");
+ out.write(listener.newClasses.toString());
if (out is StringBuffer) {
String text = new DartFormatter().format("$out");
@@ -99,6 +103,7 @@
String latestSeenParameterTypeToken;
List<String> parameters = <String>[];
List<String> parameterTypes = <String>[];
+ StringBuffer newClasses = new StringBuffer();
void beginClassDeclaration(Token begin, Token abstractToken, Token name) {
if (name.lexeme == "Listener") insideListenerClass = true;
@@ -150,39 +155,79 @@
return end();
} else {
sb.write("\n ");
- sb.write('seen("');
String typeString;
+ String typeStringCamel;
String name;
if (currentMethodName.startsWith("begin")) {
typeString = "BEGIN";
+ typeStringCamel = "Begin";
name = currentMethodName.substring("begin".length);
} else if (currentMethodName.startsWith("end")) {
typeString = "END";
+ typeStringCamel = "End";
name = currentMethodName.substring("end".length);
} else if (currentMethodName.startsWith("handle")) {
typeString = "HANDLE";
+ typeStringCamel = "Handle";
name = currentMethodName.substring("handle".length);
} else {
throw "Unexpected.";
}
- sb.write(name);
- sb.write('", DirectParserASTType.');
+
+ String className = "DirectParserASTContent${name}${typeStringCamel}";
+ sb.write("$className data = new $className(");
+ sb.write("DirectParserASTType.");
sb.write(typeString);
- sb.write(", {");
- String separator = "";
for (int i = 0; i < parameters.length; i++) {
- sb.write(separator);
- sb.write('"');
+ sb.write(', ');
sb.write(parameters[i]);
- sb.write('": ');
+ sb.write(': ');
sb.write(parameters[i]);
- separator = ", ";
}
- sb.write("});\n ");
+ sb.write(");");
+ sb.write("\n ");
+ sb.write("seen(data);");
+ sb.write("\n ");
- sb.write("}");
+ newClasses
+ .write("class DirectParserASTContent${name}${typeStringCamel} "
+ "extends DirectParserASTContent {\n");
+
+ for (int i = 0; i < parameters.length; i++) {
+ newClasses.write(" final ");
+ newClasses.write(parameterTypes[i]);
+ newClasses.write(' ');
+ newClasses.write(parameters[i]);
+ newClasses.write(';\n');
+ }
+ newClasses.write('\n');
+ newClasses.write(" DirectParserASTContent${name}${typeStringCamel}"
+ "(DirectParserASTType type");
+ String separator = ", {";
+ for (int i = 0; i < parameters.length; i++) {
+ newClasses.write(separator);
+ newClasses.write('this.');
+ newClasses.write(parameters[i]);
+ separator = ", ";
+ }
+ if (parameters.isNotEmpty) {
+ newClasses.write('}');
+ }
+ newClasses.write(') : super("$name", type);\n\n');
+ newClasses.write("Map<String, Object> get deprecatedArguments => {");
+ for (int i = 0; i < parameters.length; i++) {
+ newClasses.write('"');
+ newClasses.write(parameters[i]);
+ newClasses.write('": ');
+ newClasses.write(parameters[i]);
+ newClasses.write(',');
+ }
+ newClasses.write("};\n");
+ newClasses.write("}\n");
}
+
+ sb.write("}");
sb.write("\n\n");
out.write(sb.toString());
diff --git a/pkg/front_end/tool/kernel_ast_file_rewriter.dart b/pkg/front_end/tool/kernel_ast_file_rewriter.dart
new file mode 100644
index 0000000..35c5daa
--- /dev/null
+++ b/pkg/front_end/tool/kernel_ast_file_rewriter.dart
@@ -0,0 +1,429 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import "dart:io" show File, Platform, stdout;
+import "dart:typed_data" show Uint8List;
+
+import 'package:_fe_analyzer_shared/src/scanner/token.dart';
+import 'package:analyzer/dart/ast/token.dart';
+import "package:front_end/src/fasta/util/direct_parser_ast.dart";
+import "package:front_end/src/fasta/util/direct_parser_ast_helper.dart"
+ show DirectParserASTContent;
+import 'package:_fe_analyzer_shared/src/parser/parser.dart'
+ show IdentifierContext;
+import 'package:front_end/src/fasta/util/direct_parser_ast_helper.dart';
+
+void main(List<String> args) {
+ Uri uri = Platform.script;
+ uri = uri.resolve("../../kernel/lib/ast.dart");
+ Uint8List bytes = new File.fromUri(uri).readAsBytesSync();
+ DirectParserASTContentCompilationUnitEnd ast =
+ getAST(bytes, includeBody: true, includeComments: true);
+ Map<String, DirectParserASTContentTopLevelDeclarationEnd> classes = {};
+ for (DirectParserASTContentTopLevelDeclarationEnd cls in ast.getClasses()) {
+ DirectParserASTContentIdentifierHandle identifier =
+ cls.getClassIdentifier();
+ assert(classes[identifier.token] == null);
+ classes[identifier.token.toString()] = cls;
+ }
+
+ Set<String> goodNames = {"TreeNode"};
+ Map<Token, Replacement> replacements = {};
+ for (MapEntry<String, DirectParserASTContentTopLevelDeclarationEnd> entry
+ in classes.entries) {
+ DirectParserASTContentTopLevelDeclarationEnd cls = entry.value;
+
+ // Simple "class hierarchy" to only work on TreeNodes.
+ if (goodNames.contains(entry.key)) {
+ // Cached good.
+ } else {
+ // Check if good.
+ String parent = getExtends(cls);
+ DirectParserASTContentTopLevelDeclarationEnd parentCls = classes[parent];
+ List<String> allParents = [parent];
+ while (
+ parent != null && parentCls != null && !goodNames.contains(parent)) {
+ parent = getExtends(parentCls);
+ allParents.add(parent);
+ parentCls = classes[parent];
+ }
+ if (goodNames.contains(parent)) {
+ goodNames.addAll(allParents);
+ } else {
+ continue;
+ }
+ }
+
+ DirectParserASTContentClassDeclarationEnd classDeclaration =
+ cls.getClassDeclaration();
+ DirectParserASTContentClassOrMixinBodyEnd classOrMixinBody =
+ classDeclaration.getClassOrMixinBody();
+
+ Set<String> namedClassConstructors = {};
+ Set<String> namedFields = {};
+ for (DirectParserASTContentMemberEnd member
+ in classOrMixinBody.getMembers()) {
+ if (member.isClassConstructor()) {
+ DirectParserASTContentClassConstructorEnd constructor =
+ member.getClassConstructor();
+ Token nameToken = constructor.beginToken;
+ // String name = nameToken.lexeme;
+ if (nameToken.next.lexeme == ".") {
+ nameToken = nameToken.next.next;
+ // name += ".$nameToken";
+ namedClassConstructors.add(nameToken.lexeme);
+ }
+ if (nameToken.next.lexeme == ".") {
+ throw "Unexpected";
+ }
+ } else if (member.isClassFields()) {
+ DirectParserASTContentClassFieldsEnd classFields =
+ member.getClassFields();
+ Token identifierToken = classFields.getFieldIdentifiers().single.token;
+ String identifier = identifierToken.toString();
+ namedFields.add(identifier);
+ }
+ }
+
+ // If there isn't a `frozen` field in `TreeNode` we insert one.
+ if (entry.key == "TreeNode" && !namedFields.contains("frozen")) {
+ Token classBraceToken = classOrMixinBody.beginToken;
+ assert(classBraceToken.lexeme == "{");
+ replacements[classBraceToken] = new Replacement(
+ classBraceToken, classBraceToken, "{\n bool frozen = false;");
+ }
+
+ for (DirectParserASTContentMemberEnd member
+ in classOrMixinBody.getMembers()) {
+ if (member.isClassConstructor()) {
+ processConstructor(
+ member, replacements, namedClassConstructors, namedFields);
+ } else if (member.isClassFields()) {
+ processField(member, entry, replacements);
+ }
+ }
+ }
+ Token token = ast.getBegin().token;
+
+ int endOfLast = token.end;
+ while (token != null) {
+ CommentToken comment = token.precedingComments;
+ while (comment != null) {
+ if (comment.offset > endOfLast) {
+ for (int i = endOfLast; i < comment.offset; i++) {
+ int byte = bytes[i];
+ stdout.writeCharCode(byte);
+ }
+ }
+
+ stdout.write(comment.value());
+ endOfLast = comment.end;
+ comment = comment.next;
+ }
+
+ if (token.isEof) break;
+ if (token.offset > endOfLast) {
+ for (int i = endOfLast; i < token.offset; i++) {
+ int byte = bytes[i];
+ stdout.writeCharCode(byte);
+ }
+ }
+
+ Replacement replacement = replacements[token];
+ if (replacement != null) {
+ stdout.write(replacement.replacement);
+ token = replacement.endToken;
+ } else {
+ stdout.write(token.lexeme);
+ }
+ endOfLast = token.end;
+ token = token.next;
+ }
+}
+
+void processField(
+ DirectParserASTContentMemberEnd member,
+ MapEntry<String, DirectParserASTContentTopLevelDeclarationEnd> entry,
+ Map<Token, Replacement> replacements) {
+ DirectParserASTContentClassFieldsEnd classFields = member.getClassFields();
+
+ if (classFields.count != 1) {
+ throw "Notice ${classFields.count}";
+ }
+
+ Token identifierToken = classFields.getFieldIdentifiers().single.token;
+ String identifier = identifierToken.toString();
+
+ if (identifier == "frozen" && entry.key == "TreeNode") return;
+
+ if (classFields.staticToken != null) {
+ return;
+ }
+ bool isFinal = false;
+ if (classFields.varFinalOrConst?.toString() == "final") {
+ isFinal = true;
+ }
+
+ DirectParserASTContentTypeHandle type = classFields.getFirstType();
+ String typeString = "dynamic";
+ if (type != null) {
+ Token token = type.beginToken;
+ typeString = "";
+ while (token != identifierToken) {
+ typeString += " ${token.lexeme}";
+ token = token.next;
+ }
+ typeString = typeString.trim();
+ }
+
+ DirectParserASTContentFieldInitializerEnd initializer =
+ classFields.getFieldInitializer();
+ String initializerString = "";
+ if (initializer != null) {
+ Token token = initializer.assignment;
+ Token endToken = initializer.token;
+ while (token != endToken) {
+ initializerString += " ${token.lexeme}";
+ token = token.next;
+ }
+ initializerString = initializerString.trim();
+ }
+
+ Token beginToken = classFields.beginToken;
+ Token endToken = classFields.endToken;
+ assert(beginToken != null);
+ assert(endToken != null);
+
+ String frozenCheckCode =
+ """if (frozen) throw "Trying to modify frozen node!";""";
+
+ if (identifier == "parent" && entry.key == "TreeNode") {
+ // We update the parent for libraries for instance all the time (e.g.
+ // when we link).
+ frozenCheckCode = "";
+ } else if (identifier == "transformerFlags" && entry.key == "Member") {
+ // The verifier changes this for all libraries
+ // (and then change it back again).
+ frozenCheckCode = "";
+ } else if (identifier == "initializer" && entry.key == "Field") {
+ // The constant evaluator does some stuff here. Only allow that
+ // when it's basically a no-op though!
+ frozenCheckCode = """
+ if (frozen) {
+ if (_initializer is ConstantExpression && newValue is ConstantExpression) {
+ if ((_initializer as ConstantExpression).constant == newValue.constant) {
+ _initializer = newValue;
+ return;
+ }
+ }
+ throw "Trying to modify frozen node!";
+ }""";
+ }
+
+ if (!isFinal) {
+ replacements[beginToken] = new Replacement(beginToken, endToken, """
+$typeString _$identifier$initializerString;
+$typeString get $identifier => _$identifier;
+void set $identifier($typeString newValue) {
+ $frozenCheckCode
+ _$identifier = newValue;
+}""");
+ } else {
+ // Don't create setter for final field.
+ // TODO: Possibly wrap a list for instance of a non-writable one.
+ replacements[beginToken] = new Replacement(beginToken, endToken, """
+final $typeString _$identifier$initializerString;
+$typeString get $identifier => _$identifier;""");
+ }
+}
+
+void processConstructor(
+ DirectParserASTContentMemberEnd member,
+ Map<Token, Replacement> replacements,
+ Set<String> namedClassConstructors,
+ Set<String> namedFields) {
+ DirectParserASTContentClassConstructorEnd constructor =
+ member.getClassConstructor();
+ DirectParserASTContentFormalParametersEnd formalParameters =
+ constructor.getFormalParameters();
+ List<DirectParserASTContentFormalParameterEnd> parameters =
+ formalParameters.getFormalParameters();
+
+ for (DirectParserASTContentFormalParameterEnd parameter in parameters) {
+ Token token = parameter.getBegin().token;
+ if (token?.lexeme != "this") {
+ continue;
+ }
+ // Here `this.foo` can just be replace with `this._foo`.
+ Token afterDot = token.next.next;
+ replacements[afterDot] = new Replacement(afterDot, afterDot, "_$afterDot");
+ }
+
+ DirectParserASTContentOptionalFormalParametersEnd optionalFormalParameters =
+ formalParameters.getOptionalFormalParameters();
+ Set<String> addInitializers = {};
+ if (optionalFormalParameters != null) {
+ List<DirectParserASTContentFormalParameterEnd> parameters =
+ optionalFormalParameters.getFormalParameters();
+
+ for (DirectParserASTContentFormalParameterEnd parameter in parameters) {
+ Token token = parameter.getBegin().token;
+ if (token?.lexeme != "this") {
+ continue;
+ }
+ // Here `this.foo` can't just be replace with `this._foo` as it is
+ // (possibly) named and we can't use private stuff in named.
+ // Instead we replace it with `dynamic foo` here and add an
+ // initializer `this._foo = foo`.
+ Token afterDot = token.next.next;
+ addInitializers.add(afterDot.lexeme);
+ replacements[token] = new Replacement(token, token.next, "dynamic ");
+ }
+ }
+
+ DirectParserASTContentInitializersEnd initializers =
+ constructor.getInitializers();
+
+ // First patch up any existing initializers.
+ if (initializers != null) {
+ List<DirectParserASTContentInitializerEnd> actualInitializers =
+ initializers.getInitializers();
+ for (DirectParserASTContentInitializerEnd initializer
+ in actualInitializers) {
+ Token token = initializer.getBegin().token;
+ // This is only afterDot if there's a dot --- which (probably) is
+ // only there if there's a `this`.
+ Token afterDot = token.next.next;
+
+ // We need to check it's not a redirecting call!
+ // TODO(jensj): Handle redirects like this:
+ // class C {
+ // C();
+ // C.redirect() : this();
+ // }
+ if (token.lexeme == "this" &&
+ namedClassConstructors.contains(afterDot.lexeme)) {
+ // Redirect!
+ continue;
+ }
+
+ if (token.lexeme == "this") {
+ // Here `this.foo` can just be replace with `this._foo`.
+ assert(namedFields.contains(afterDot.lexeme));
+ replacements[afterDot] =
+ new Replacement(afterDot, afterDot, "_$afterDot");
+ } else if (token.lexeme == "super") {
+ // Don't try to patch this one.
+ } else if (token.lexeme == "assert") {
+ List<DirectParserASTContentIdentifierHandle> identifiers = initializer
+ .recursivelyFind<DirectParserASTContentIdentifierHandle>();
+ for (Token token in identifiers.map((e) => e.token)) {
+ if (namedFields.contains(token.lexeme)) {
+ replacements[token] = new Replacement(token, token, "_$token");
+ }
+ }
+ } else {
+ assert(namedFields.contains(token.lexeme),
+ "${token.lexeme} isn't a known field among ${namedFields}");
+ replacements[token] = new Replacement(token, token, "_$token");
+ }
+ }
+ }
+
+ // Then add any new ones.
+ if (addInitializers.isNotEmpty && initializers == null) {
+ // No initializers => Fake one by inserting `:` and all `_foo = foo`
+ // entries.
+ Token endToken = formalParameters.endToken;
+ String initializerString =
+ addInitializers.map((e) => "this._$e = $e").join(",\n");
+ replacements[endToken] =
+ new Replacement(endToken, endToken, ") : $initializerString");
+ } else if (addInitializers.isNotEmpty) {
+ // Add to existing initializer list. We add them as the first one(s)
+ // so we don't have to insert before the potential super call.
+ DirectParserASTContentInitializersBegin firstOne = initializers.getBegin();
+ Token colon = firstOne.token;
+ assert(colon.lexeme == ":");
+ String initializerString =
+ addInitializers.map((e) => "this._$e = $e").join(", ");
+ replacements[colon] =
+ new Replacement(colon, colon, ": $initializerString,");
+ }
+
+ // If there are anything in addInitializers we need to patch
+ // up the body too -- if we replace `{this.foo}` with `{dynamic foo}`
+ // and the body says `foo = 42;` before that would change the field,
+ // now it will change the parameter value. We must patch up all usages
+ // - even reads to work on things like
+ // class C {
+ // int field1;
+ // int field2;
+ // C(this.field1) : field2 = field1 + 1;
+ // }
+ if (addInitializers.isNotEmpty) {
+ DirectParserASTContentBlockFunctionBodyEnd blockFunctionBody =
+ constructor.getBlockFunctionBody();
+ if (blockFunctionBody != null) {
+ List<DirectParserASTContentIdentifierHandle> identifiers =
+ blockFunctionBody
+ .recursivelyFind<DirectParserASTContentIdentifierHandle>();
+ for (DirectParserASTContentIdentifierHandle identifier in identifiers) {
+ Token token = identifier.token;
+ IdentifierContext context = identifier.context;
+ if (namedFields.contains(token.lexeme) &&
+ addInitializers.contains(token.lexeme)) {
+ // For now naively assume that if it's a continuation it says
+ // `this.`
+ if (!context.isContinuation) {
+ replacements[token] = new Replacement(token, token, "_$token");
+ }
+ }
+ }
+ }
+ }
+}
+
+class Replacement {
+ final Token beginToken;
+ final Token endToken;
+ final String replacement;
+
+ Replacement(this.beginToken, this.endToken, this.replacement);
+}
+
+String getExtends(DirectParserASTContentTopLevelDeclarationEnd cls) {
+ DirectParserASTContentClassDeclarationEnd classDeclaration =
+ cls.getClassDeclaration();
+
+ DirectParserASTContentClassExtendsHandle classExtends =
+ classDeclaration.getClassExtends();
+ Token extendsKeyword = classExtends.extendsKeyword;
+ if (extendsKeyword == null) {
+ return null;
+ } else {
+ return extendsKeyword.next.toString();
+ }
+}
+
+void debugDumpNode(DirectParserASTContent node) {
+ node.children.forEach((element) {
+ print("${element.what} (${element.deprecatedArguments}) "
+ "(${element.children})");
+ });
+}
+
+void debugDumpNodeRecursively(DirectParserASTContent node,
+ {String indent = ""}) {
+ print("$indent${node.what} (${node.deprecatedArguments})");
+ if (node.children == null) return;
+ node.children.forEach((element) {
+ print("$indent${element.what} (${element.deprecatedArguments})");
+ if (element.children != null) {
+ element.children.forEach((element) {
+ debugDumpNodeRecursively(element, indent: " $indent");
+ });
+ }
+ });
+}
diff --git a/pkg/front_end/tool/parser_direct_ast/viewer.dart b/pkg/front_end/tool/parser_direct_ast/viewer.dart
index 8bcf65e..c516101 100644
--- a/pkg/front_end/tool/parser_direct_ast/viewer.dart
+++ b/pkg/front_end/tool/parser_direct_ast/viewer.dart
@@ -64,22 +64,20 @@
case DirectParserASTType.BEGIN:
header = "begin";
break;
- case DirectParserASTType.END:
- throw "Unexpected";
case DirectParserASTType.HANDLE:
header = "handle";
break;
- case DirectParserASTType.DONE:
+ case DirectParserASTType.END:
header = withEndHeader ? "end" : "";
break;
}
String extra = " ";
- if (element.content != null) {
- extra += element.content.first.arguments.toString();
+ if (element.children != null) {
+ extra += element.children.first.deprecatedArguments.toString();
}
return "${indent ? " " : ""}"
"${header}${element.what} "
- "${element.arguments.toString()}${extra}";
+ "${element.deprecatedArguments.toString()}${extra}";
}
@override
@@ -116,7 +114,7 @@
selected = selectedElement.selected;
} else {
shown = [new PrintedLine.parent(shown, selected)];
- List<DirectParserASTContent> children = selectedElement.ast.content;
+ List<DirectParserASTContent> children = selectedElement.ast.children;
if (children != null) {
for (int i = 0; i < children.length; i++) {
shown.add(new PrintedLine.ast(
diff --git a/pkg/vm/lib/transformations/protobuf_aware_treeshaker/transformer.dart b/pkg/vm/lib/transformations/protobuf_aware_treeshaker/transformer.dart
index 2a88c7c..e216685 100644
--- a/pkg/vm/lib/transformations/protobuf_aware_treeshaker/transformer.dart
+++ b/pkg/vm/lib/transformations/protobuf_aware_treeshaker/transformer.dart
@@ -50,6 +50,16 @@
component.metadata.clear();
}
+/// Called by the signature shaker to exclude the positional parameters of
+/// certain members whose first few parameters are depended upon by the
+/// protobuf-aware tree shaker.
+bool excludePositionalParametersFromSignatureShaking(Member member) {
+ return member.enclosingClass?.name == 'BuilderInfo' &&
+ member.enclosingLibrary.importUri ==
+ Uri.parse('package:protobuf/protobuf.dart') &&
+ _UnusedFieldMetadataPruner.fieldAddingMethods.contains(member.name.name);
+}
+
InfoCollector removeUnusedProtoReferences(
Component component, CoreTypes coreTypes, TransformationInfo info) {
final protobufUri = Uri.parse('package:protobuf/protobuf.dart');
diff --git a/pkg/vm/lib/transformations/type_flow/signature_shaking.dart b/pkg/vm/lib/transformations/type_flow/signature_shaking.dart
index 096acaf..8be7d86 100644
--- a/pkg/vm/lib/transformations/type_flow/signature_shaking.dart
+++ b/pkg/vm/lib/transformations/type_flow/signature_shaking.dart
@@ -10,6 +10,8 @@
import 'table_selector_assigner.dart';
import 'types.dart';
import 'utils.dart';
+import '../protobuf_aware_treeshaker/transformer.dart'
+ show excludePositionalParametersFromSignatureShaking;
import '../../metadata/procedure_attributes.dart';
/// Transform parameters from optional to required when they are always passed,
@@ -19,23 +21,32 @@
/// are grouped by table selector ID and thus can cover several implementations.
///
/// Definitions:
+/// - A parameter is checked if it requires a runtime check, either because it
+/// is covariant or it is non-nullable and sound null safety is not enabled.
+/// If sound null safety is not enabled, the analysis currently conservatively
+/// assumes that null assertions are enabled. If we add a flag for null
+/// assertions to gen_kernel, this flag can form part of the definition.
/// - A parameter is used if it is mentioned in the body (or, for constructors,
-/// an initializer) of any implementation.
+/// an initializer) of any implementation, or it is checked. An occurrence as
+/// an argument to a call (a use dependency) is only considered a use if the
+/// corresponding target parameter is used.
/// - A parameter can be eliminated if either:
-/// 1. it is not used; or
-/// 2. it is never passed and is not written to in any implementation.
+/// 1. it is not used,
+/// 2. it is never passed and is not written to in any implementation, or
+/// 3. it is a constant (though not necessarily the same constant) in every
+/// implementation and is neither written to nor checked.
/// - A function is eligible if it is not external and is guaranteed to not be
/// called with an unknown call signature.
///
/// All eligible signatures are transformed such that they contain, in order:
-/// 1. All used positional parameters that are always passed, as required
-/// positional parameters.
-/// 2. All used named parameters that are always passed, as required positional
-/// parameters, alphabetically by name.
-/// 3. All used positional parameters that are not always passed and can't be
+/// 1. All positional parameters that are always passed and can't be
+/// eliminated, as required positional parameters.
+/// 2. All named parameters that are always passed and can't be eliminated,
+/// as required positional parameters, alphabetically by name.
+/// 3. All positional parameters that are not always passed and can't be
/// eliminated, as positional parameters, each one required iff it was
/// originally required.
-/// 4. All used named parameters that are not always passed and can't be
+/// 4. All named parameters that are not always passed and can't be
/// eliminated, as named parameters in alphabetical order.
class SignatureShaker {
final TypeFlowAnalysis typeFlowAnalysis;
@@ -64,8 +75,48 @@
void transformComponent(Component component) {
_Collect(this).visitComponent(component);
+ _resolveUseDependencies();
_Transform(this).visitComponent(component);
}
+
+ void _resolveUseDependencies() {
+ List<_ParameterInfo> worklist = [];
+ for (_ProcedureInfo info in _memberInfo.values) {
+ _addUseDependenciesForProcedure(info, worklist);
+ }
+ for (_ProcedureInfo info in _selectorInfo.values) {
+ _addUseDependenciesForProcedure(info, worklist);
+ }
+ while (worklist.isNotEmpty) {
+ _ParameterInfo param = worklist.removeLast();
+ for (_ParameterInfo dependencyParam in param.useDependencies) {
+ if (!dependencyParam.isRead) {
+ dependencyParam.isRead = true;
+ if (dependencyParam.useDependencies != null) {
+ worklist.add(dependencyParam);
+ }
+ }
+ }
+ }
+ }
+
+ void _addUseDependenciesForProcedure(
+ _ProcedureInfo info, List<_ParameterInfo> worklist) {
+ for (_ParameterInfo param in info.positional) {
+ _addUseDependenciesForParameter(param, worklist);
+ }
+ for (_ParameterInfo param in info.named.values) {
+ _addUseDependenciesForParameter(param, worklist);
+ }
+ }
+
+ void _addUseDependenciesForParameter(
+ _ParameterInfo param, List<_ParameterInfo> worklist) {
+ if ((param.isUsed || !param.info.eligible) &&
+ param.useDependencies != null) {
+ worklist.add(param);
+ }
+ }
}
class _ProcedureInfo {
@@ -74,6 +125,11 @@
int callCount = 0;
bool eligible = true;
+ /// Whether positional parameters can be eliminated from this member. Some
+ /// protobuf methods require these parameters to be preserved for the
+ /// protobuf-aware tree shaker to function.
+ bool canEliminatePositional = true;
+
_ParameterInfo ensurePositional(int i) {
if (positional.length <= i) {
assert(positional.length == i);
@@ -103,32 +159,49 @@
int passCount = 0;
bool isRead = false;
bool isWritten = false;
+ bool isChecked = false;
+ bool isConstant = true;
+
+ /// List of parameter variables which were passed as arguments via this
+ /// parameter. When this parameter is considered used, all [useDependencies]
+ /// parameters should be transitively marked as read.
+ List<_ParameterInfo> useDependencies = null;
_ParameterInfo(this.info, this.index);
bool get isNamed => index == null;
- bool get isUsed => isRead || isWritten;
+ bool get isUsed => isRead || isWritten || isChecked;
bool get isAlwaysPassed => passCount == info.callCount;
bool get isNeverPassed => passCount == 0;
- bool get canBeEliminated => !isUsed || isNeverPassed && !isWritten;
+ bool get canBeEliminated =>
+ (!isUsed || (isNeverPassed || isConstant && !isChecked) && !isWritten) &&
+ (isNamed || info.canEliminatePositional);
- void observeImplicitChecks(
+ void observeParameter(
Member member, VariableDeclaration param, SignatureShaker shaker) {
- if (param.isCovariant || param.isGenericCovariantImpl) {
- // Covariant parameters have implicit type checks, which count as reads.
- isRead = true;
- } else if (param.type.nullability == Nullability.nonNullable) {
- // When run in weak mode with null assertions enabled, parameters with
- // non-nullable types have implicit null checks, which count as reads.
- Type type = shaker.typeFlowAnalysis.argumentType(member, param);
- if (type == null || type is NullableType) {
- // TFA can't guarantee that the value isn't null. Preserve check.
- isRead = true;
- }
+ final Type type = shaker.typeFlowAnalysis.argumentType(member, param);
+
+ // A parameter is considered constant if the TFA has inferred it to have a
+ // constant value in every implementation. The constant value inferred does
+ // not have to be the same across implementations, as it is specialized in
+ // each implementation individually.
+ if (!(type is ConcreteType && type.constant != null ||
+ type is NullableType && type.baseType is EmptyType)) {
+ isConstant = false;
+ }
+
+ // Covariant parameters have implicit type checks, which count as reads.
+ // When run in weak mode with null assertions enabled, parameters with
+ // non-nullable types have implicit null checks, which count as reads.
+ if ((param.isCovariant || param.isGenericCovariantImpl) ||
+ (!shaker.typeFlowAnalysis.target.flags.enableNullSafety &&
+ param.type.nullability == Nullability.nonNullable &&
+ (type == null || type is NullableType))) {
+ isChecked = true;
}
}
}
@@ -136,8 +209,14 @@
class _Collect extends RecursiveVisitor<void> {
final SignatureShaker shaker;
+ /// Parameters of the current function.
final Map<VariableDeclaration, _ParameterInfo> localParameters = {};
+ /// Set of [VariableGet] nodes corresponding to parameters in the current
+ /// function which are passed as arguments to eligible calls. They are tracked
+ /// via [_ParameterInfo.useDependencies] and not marked as read immediately.
+ final Set<VariableGet> useDependencies = {};
+
_Collect(this.shaker);
void enterFunction(Member member) {
@@ -145,15 +224,16 @@
if (info == null) return;
localParameters.clear();
+ useDependencies.clear();
final FunctionNode fun = member.function;
for (int i = 0; i < fun.positionalParameters.length; i++) {
final VariableDeclaration param = fun.positionalParameters[i];
localParameters[param] = info.ensurePositional(i)
- ..observeImplicitChecks(member, param, shaker);
+ ..observeParameter(member, param, shaker);
}
for (VariableDeclaration param in fun.namedParameters) {
localParameters[param] = info.ensureNamed(param.name)
- ..observeImplicitChecks(member, param, shaker);
+ ..observeParameter(member, param, shaker);
}
if (shaker.typeFlowAnalysis.isCalledDynamically(member) ||
@@ -164,6 +244,10 @@
getExternalName(member) != null) {
info.eligible = false;
}
+
+ if (excludePositionalParametersFromSignatureShaking(member)) {
+ info.canEliminatePositional = false;
+ }
}
@override
@@ -180,7 +264,10 @@
@override
void visitVariableGet(VariableGet node) {
- localParameters[node.variable]?.isRead = true;
+ // Variable reads marked as use dependencies are not considered reads
+ // immediately. Their status as a read or not will be computed after all use
+ // dependencies have been collected.
+ localParameters[node.variable]?.isRead |= !useDependencies.contains(node);
super.visitVariableGet(node);
}
@@ -190,15 +277,32 @@
super.visitVariableSet(node);
}
+ void addUseDependency(Expression arg, _ParameterInfo param) {
+ if (arg is VariableGet) {
+ _ParameterInfo localParam = localParameters[arg.variable];
+ if (localParam != null && !localParam.isUsed) {
+ // This is a parameter passed as an argument. Mark it as a use
+ // dependency.
+ param.useDependencies ??= [];
+ param.useDependencies.add(localParam);
+ useDependencies.add(arg);
+ }
+ }
+ }
+
void collectCall(Member member, Arguments args) {
final _ProcedureInfo info = shaker._infoForMember(member);
if (info == null) return;
for (int i = 0; i < args.positional.length; i++) {
- info.ensurePositional(i).passCount++;
+ _ParameterInfo param = info.ensurePositional(i);
+ param.passCount++;
+ addUseDependency(args.positional[i], param);
}
for (NamedExpression named in args.named) {
- info.ensureNamed(named.name).passCount++;
+ _ParameterInfo param = info.ensureNamed(named.name);
+ param.passCount++;
+ addUseDependency(named.value, param);
}
info.callCount++;
}
@@ -244,15 +348,36 @@
final SignatureShaker shaker;
StaticTypeContext typeContext;
- final Set<VariableDeclaration> eliminatedParams = {};
+ final Map<VariableDeclaration, Constant> eliminatedParams = {};
+ final Set<VariableDeclaration> unusedParams = {};
final List<LocalInitializer> addedInitializers = [];
_Transform(this.shaker);
+ void eliminateUsedParameter(
+ Member member, _ParameterInfo param, VariableDeclaration variable) {
+ Constant value;
+ if (param.isConstant) {
+ Type type = shaker.typeFlowAnalysis.argumentType(member, variable);
+ if (type is ConcreteType) {
+ assert(type.constant != null);
+ value = type.constant;
+ } else {
+ assert(type is NullableType && type.baseType is EmptyType);
+ value = NullConstant();
+ }
+ } else {
+ value = (variable.initializer as ConstantExpression)?.constant ??
+ NullConstant();
+ }
+ eliminatedParams[variable] = value;
+ }
+
void transformMemberSignature(Member member) {
typeContext =
StaticTypeContext(member, shaker.typeFlowAnalysis.environment);
eliminatedParams.clear();
+ unusedParams.clear();
final _ProcedureInfo info = shaker._infoForMember(member);
if (info == null || !info.eligible || info.callCount == 0) return;
@@ -263,42 +388,61 @@
final List<VariableDeclaration> positional = [];
final List<VariableDeclaration> named = [];
- // 1. All used positional parameters that are always passed, as required
- // positional parameters.
+ // 1. All positional parameters that are always passed and can't be
+ // eliminated, as required positional parameters.
+ int firstNotAlwaysPassed = function.positionalParameters.length;
for (int i = 0; i < function.positionalParameters.length; i++) {
final _ParameterInfo param = info.positional[i];
- if (!param.isAlwaysPassed) break;
+ if (!param.isAlwaysPassed) {
+ firstNotAlwaysPassed = i;
+ break;
+ }
+ final VariableDeclaration variable = function.positionalParameters[i];
if (param.isUsed) {
- final VariableDeclaration variable = function.positionalParameters[i];
- positional.add(variable);
- variable.initializer = null;
+ if (param.canBeEliminated) {
+ eliminateUsedParameter(member, param, variable);
+ } else {
+ positional.add(variable);
+ variable.initializer = null;
+ }
+ } else {
+ unusedParams.add(variable);
}
}
- // 2. All used named parameters that are always passed, as required
- // positional parameters, alphabetically by name.
+ // 2. All named parameters that are always passed and can't be eliminated,
+ // as required positional parameters, alphabetically by name.
final List<VariableDeclaration> sortedNamed = function.namedParameters
.toList()
..sort((var1, var2) => var1.name.compareTo(var2.name));
for (VariableDeclaration variable in sortedNamed) {
final _ParameterInfo param = info.named[variable.name];
- if (param.isUsed && param.isAlwaysPassed) {
- variable.initializer = null;
- variable.isRequired = false;
- positional.add(variable);
+ if (param.isAlwaysPassed) {
+ if (param.isUsed) {
+ if (param.canBeEliminated) {
+ eliminateUsedParameter(member, param, variable);
+ } else {
+ variable.initializer = null;
+ variable.isRequired = false;
+ positional.add(variable);
+ }
+ } else {
+ unusedParams.add(variable);
+ }
}
}
int requiredParameterCount = positional.length;
- // 3. All used positional parameters that are not always passed and can't be
+ // 3. All positional parameters that are not always passed and can't be
// eliminated, as positional parameters, each one required iff it was
// originally required.
- for (int i = 0; i < function.positionalParameters.length; i++) {
+ for (int i = firstNotAlwaysPassed;
+ i < function.positionalParameters.length;
+ i++) {
final _ParameterInfo param = info.positional[i];
+ assert(!param.isAlwaysPassed);
+ final VariableDeclaration variable = function.positionalParameters[i];
if (param.isUsed) {
- final VariableDeclaration variable = function.positionalParameters[i];
if (param.canBeEliminated) {
- assert(variable.initializer == null ||
- variable.initializer is ConstantExpression);
- eliminatedParams.add(variable);
+ eliminateUsedParameter(member, param, variable);
} else if (!param.isAlwaysPassed) {
positional.add(variable);
if (i < function.requiredParameterCount) {
@@ -309,19 +453,23 @@
requiredParameterCount++;
}
}
+ } else {
+ unusedParams.add(variable);
}
}
- // 4. All used named parameters that are not always passed and can't be
+ // 4. All named parameters that are not always passed and can't be
// eliminated, as named parameters in alphabetical order.
for (VariableDeclaration variable in sortedNamed) {
final _ParameterInfo param = info.named[variable.name];
- if (param.isUsed) {
- if (param.canBeEliminated) {
- assert(variable.initializer == null ||
- variable.initializer is ConstantExpression);
- eliminatedParams.add(variable);
- } else if (!param.isAlwaysPassed) {
- named.add(variable);
+ if (!param.isAlwaysPassed) {
+ if (param.isUsed) {
+ if (param.canBeEliminated) {
+ eliminateUsedParameter(member, param, variable);
+ } else {
+ named.add(variable);
+ }
+ } else {
+ unusedParams.add(variable);
}
}
}
@@ -336,10 +484,9 @@
@override
void visitVariableGet(VariableGet node) {
- if (eliminatedParams.contains(node.variable)) {
- final ConstantExpression initializer = node.variable.initializer;
- node.replaceWith(
- ConstantExpression(initializer?.constant ?? NullConstant()));
+ Constant constantValue = eliminatedParams[node.variable];
+ if (constantValue != null) {
+ node.replaceWith(ConstantExpression(constantValue));
}
}
@@ -383,7 +530,7 @@
bool hoistingNeeded = false;
forEachArgumentRev(args, info, (Expression arg, _ParameterInfo param) {
assert(!param.isNeverPassed);
- if (!param.isUsed || param.isNamed && param.isAlwaysPassed) {
+ if (param.canBeEliminated || param.isNamed && param.isAlwaysPassed) {
transformNeeded = true;
if (mayHaveSideEffects(arg)) {
hoistingNeeded = true;
@@ -393,12 +540,16 @@
if (!transformNeeded) return;
+ bool isUnusedParam(Expression exp) {
+ return exp is VariableGet && unusedParams.contains(exp.variable);
+ }
+
Map<Expression, VariableDeclaration> hoisted = {};
if (hoistingNeeded) {
if (call is Initializer) {
final Constructor constructor = call.parent;
forEachArgumentRev(args, info, (Expression arg, _ParameterInfo param) {
- if (mayHaveOrSeeSideEffects(arg)) {
+ if (mayHaveOrSeeSideEffects(arg) && !isUnusedParam(arg)) {
VariableDeclaration argVar = VariableDeclaration(null,
initializer: arg,
type: arg.getStaticType(typeContext),
@@ -412,7 +563,7 @@
final TreeNode parent = call.parent;
Expression current = call;
forEachArgumentRev(args, info, (Expression arg, _ParameterInfo param) {
- if (mayHaveOrSeeSideEffects(arg)) {
+ if (mayHaveOrSeeSideEffects(arg) && !isUnusedParam(arg)) {
VariableDeclaration argVar = VariableDeclaration(null,
initializer: arg,
type: arg.getStaticType(typeContext),
@@ -422,6 +573,7 @@
}
});
if (receiver != null && mayHaveOrSeeSideEffects(receiver)) {
+ assert(!isUnusedParam(receiver));
assert(receiver.parent == call);
final VariableDeclaration receiverVar = VariableDeclaration(null,
initializer: receiver,
@@ -443,41 +595,41 @@
final List<Expression> positional = [];
final List<NamedExpression> named = [];
- // 1. All used positional parameters that are always passed, as required
- // positional parameters.
+ // 1. All positional parameters that are always passed and can't be
+ // eliminated, as required positional parameters.
for (int i = 0; i < args.positional.length; i++) {
final _ParameterInfo param = info.positional[i];
final Expression arg = args.positional[i];
- if (param.isUsed && param.isAlwaysPassed) {
+ if (param.isAlwaysPassed && !param.canBeEliminated) {
positional.add(getMaybeHoistedArg(arg));
}
}
- // 2. All used named parameters that are always passed, as required
- // positional parameters, alphabetically by name.
+ // 2. All named parameters that are always passed and can't be eliminated,
+ // as required positional parameters, alphabetically by name.
final List<NamedExpression> sortedNamed = args.named.toList()
..sort((var1, var2) => var1.name.compareTo(var2.name));
for (NamedExpression arg in sortedNamed) {
final _ParameterInfo param = info.named[arg.name];
- if (param.isUsed && param.isAlwaysPassed) {
+ if (param.isAlwaysPassed && !param.canBeEliminated) {
positional.add(getMaybeHoistedArg(arg.value));
}
}
- // 3. All used positional parameters that are not always passed and can't be
+ // 3. All positional parameters that are not always passed and can't be
// eliminated, as positional parameters, each one required iff it was
// originally required.
for (int i = 0; i < args.positional.length; i++) {
final _ParameterInfo param = info.positional[i];
final Expression arg = args.positional[i];
- if (param.isUsed && !param.isAlwaysPassed) {
+ if (!param.isAlwaysPassed && !param.canBeEliminated) {
positional.add(getMaybeHoistedArg(arg));
}
}
- // 4. All used named parameters that are not always passed and can't be
+ // 4. All named parameters that are not always passed and can't be
// eliminated, as named parameters in alphabetical order.
// (Arguments are kept in original order.)
for (NamedExpression arg in args.named) {
final _ParameterInfo param = info.named[arg.name];
- if (param.isUsed && !param.isAlwaysPassed) {
+ if (!param.isAlwaysPassed && !param.canBeEliminated) {
arg.value = getMaybeHoistedArg(arg.value)..parent = arg;
named.add(arg);
}
diff --git a/pkg/vm/test/transformations/protobuf_aware_treeshaker/treeshaker_test.dart b/pkg/vm/test/transformations/protobuf_aware_treeshaker/treeshaker_test.dart
index 707b1fd..4a29089 100644
--- a/pkg/vm/test/transformations/protobuf_aware_treeshaker/treeshaker_test.dart
+++ b/pkg/vm/test/transformations/protobuf_aware_treeshaker/treeshaker_test.dart
@@ -12,6 +12,8 @@
import 'package:path/path.dart' as path;
import 'package:test/test.dart';
+import 'package:vm/kernel_front_end.dart'
+ show runGlobalTransformations, ErrorDetector;
import 'package:vm/transformations/protobuf_aware_treeshaker/transformer.dart'
as treeshaker;
@@ -20,7 +22,12 @@
final String pkgVmDir = Platform.script.resolve('../../..').toFilePath();
runTestCase(Uri source) async {
- final target = new TestingVmTarget(new TargetFlags());
+ await shakeAndRun(source);
+ await compileAOT(source);
+}
+
+Future<void> shakeAndRun(Uri source) async {
+ final target = TestingVmTarget(TargetFlags());
Component component =
await compileTestCaseToKernelProgram(source, target: target);
@@ -42,8 +49,7 @@
}
final systemTempDir = Directory.systemTemp;
- final file =
- new File('${systemTempDir.path}/${source.pathSegments.last}.dill');
+ final file = File('${systemTempDir.path}/${source.pathSegments.last}.dill');
try {
final sink = file.openWrite();
final printer = BinaryPrinter(sink, includeSources: false);
@@ -61,6 +67,30 @@
}
}
+Future<void> compileAOT(Uri source) async {
+ final target = TestingVmTarget(TargetFlags());
+ Component component =
+ await compileTestCaseToKernelProgram(source, target: target);
+
+ // Imitate the global transformations as run by the protobuf-aware tree shaker
+ // in AOT mode.
+ // Copied verbatim from pkg/vm/bin/protobuf_aware_treeshaker.dart.
+ const bool useGlobalTypeFlowAnalysis = true;
+ const bool enableAsserts = false;
+ const bool useProtobufAwareTreeShaker = true;
+ const bool useProtobufAwareTreeShakerV2 = false;
+ final nopErrorDetector = ErrorDetector();
+ runGlobalTransformations(
+ target,
+ component,
+ useGlobalTypeFlowAnalysis,
+ enableAsserts,
+ useProtobufAwareTreeShaker,
+ useProtobufAwareTreeShakerV2,
+ nopErrorDetector,
+ );
+}
+
main() async {
final testCases = Directory(path.join(
pkgVmDir,
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect
index d9f0804..173e18b 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect
@@ -12,19 +12,19 @@
}
return true;
}
-[@vm.unboxing-info.metadata=(i)->b]static method nThPrimeNumber([@vm.inferred-type.metadata=dart.core::_Smi (value: 50000)] core::int* n) → core::int* {
+static method nThPrimeNumber() → core::int* {
core::int* counter = 0;
for (core::int* i = 1; ; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+??] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1)) {
if([@vm.inferred-type.metadata=dart.core::bool] self::isPrime(i))
counter = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+??] [@vm.inferred-type.metadata=int (skip check)] counter.{core::num::+}(1);
- if([@vm.inferred-type.metadata=dart.core::bool] counter.{core::num::==}(n)) {
+ if([@vm.inferred-type.metadata=dart.core::bool] counter.{core::num::==}(#C1)) {
return i;
}
}
}
static method run() → void {
core::int* e = 611953;
- core::int* p = [@vm.inferred-type.metadata=int?] self::nThPrimeNumber(50000);
+ core::int* p = [@vm.inferred-type.metadata=int?] self::nThPrimeNumber();
if(![@vm.inferred-type.metadata=dart.core::bool] p.{core::num::==}(e)) {
throw core::Exception::•("Unexpected result: ${p} != ${e}");
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect
index f30eaeb..71bb393 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect
@@ -9,8 +9,8 @@
[@vm.inferred-type.metadata=dart.core::_Smi (value: 0)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] [@vm.unboxing-info.metadata=()->i] final field core::int* _offset;
[@vm.inferred-type.metadata=dart.core::_Smi (value: 10)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:2] [@vm.unboxing-info.metadata=()->i] final field core::int* _length;
[@vm.inferred-type.metadata=dart.typed_data::_Float64List] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] final field core::List<core::double*>* _elements;
-[@vm.unboxing-info.metadata=(i)->b] constructor •([@vm.inferred-type.metadata=dart.core::_Smi (value: 10)] core::int* size) → self::_Vector*
- : self::_Vector::_offset = 0, self::_Vector::_length = size, self::_Vector::_elements = [@vm.inferred-type.metadata=dart.typed_data::_Float64List] typ::Float64List::•(size), super core::Object::•()
+ constructor •() → self::_Vector*
+ : self::_Vector::_offset = 0, self::_Vector::_length = #C1, self::_Vector::_elements = [@vm.inferred-type.metadata=dart.typed_data::_Float64List] typ::Float64List::•(#C1), super core::Object::•()
;
[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:4] [@vm.unboxing-info.metadata=(b)->d] operator []([@vm.inferred-type.metadata=!] core::int* i) → core::double*
return [@vm.direct-call.metadata=dart.typed_data::_Float64List.[]] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.direct-call.metadata=#lib::_Vector._elements] [@vm.inferred-type.metadata=dart.typed_data::_Float64List] this.{self::_Vector::_elements}.{core::List::[]}([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}([@vm.direct-call.metadata=#lib::_Vector._offset] [@vm.inferred-type.metadata=dart.core::_Smi (value: 0)] this.{self::_Vector::_offset}));
@@ -24,7 +24,7 @@
return result;
}
}
-[@vm.inferred-type.metadata=#lib::_Vector?]static field self::_Vector* v = new self::_Vector::•(10);
+[@vm.inferred-type.metadata=#lib::_Vector?]static field self::_Vector* v = new self::_Vector::•();
[@vm.inferred-type.metadata=dart.core::_Double?]static field core::double* x = 0.0;
static method main(core::List<core::String*>* args) → dynamic {
core::Stopwatch* timer = let final core::Stopwatch* #t3 = new core::Stopwatch::•() in block {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect
index 8d122c1..29abf49 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect
@@ -17,44 +17,44 @@
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7] method toString() → core::String*
return [@vm.direct-call.metadata=#lib::B._name] [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "B.b2")] this.{self::B::_name};
}
-[@vm.unboxing-info.metadata=(i)->b]static method test0([@vm.inferred-type.metadata=dart.core::_Smi (value: 40)] core::int* arg) → void {
- core::print(arg);
-}
-static method test1() → void {
+static method test0() → void {
core::print(#C1);
}
-static method test2() → void {
+static method test1() → void {
core::print(#C2);
}
+static method test2() → void {
+ core::print(#C3);
+}
[@vm.unboxing-info.metadata=()->d]static get getD() → dynamic
return 100.0;
-[@vm.unboxing-info.metadata=(d)->b]static method testDouble([@vm.inferred-type.metadata=dart.core::_Double (value: 3.14)] core::double* arg) → void {
- core::print(arg);
+static method testDouble() → void {
+ core::print(#C4);
core::print([@vm.inferred-type.metadata=dart.core::_Double (value: 100.0)] self::getD);
}
-static method testStrings([@vm.inferred-type.metadata=#lib::A] self::A* a0, [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "bazz")] core::String* a1) → void {
+static method testStrings([@vm.inferred-type.metadata=#lib::A] self::A* a0) → void {
core::print([@vm.direct-call.metadata=#lib::A.foo] [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "foo")] a0.{self::A::foo});
core::print([@vm.direct-call.metadata=#lib::A.getBar] [@vm.inferred-type.metadata=dart.core::_OneByteString (skip check) (value: "bar")] a0.{self::A::getBar}());
- core::print(a1);
+ core::print(#C5);
}
-static method testPassEnum([@vm.inferred-type.metadata=#lib::B (value: const #lib::B{#lib::B.index: 1, #lib::B._name: "B.b2"})] self::B* arg) → void {
- self::testPassEnum2(arg);
+static method testPassEnum() → void {
+ self::testPassEnum2();
}
-static method testPassEnum2([@vm.inferred-type.metadata=#lib::B (value: const #lib::B{#lib::B.index: 1, #lib::B._name: "B.b2"})] self::B* arg) → void {
- core::print(arg);
+static method testPassEnum2() → void {
+ core::print(#C8);
}
static method getList() → dynamic
- return #C6;
-static method testList([@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[1, 2, 3])] dynamic arg1) → void {
- core::print(arg1);
- core::print(#C9);
+ return #C11;
+static method testList() → void {
+ core::print(#C11);
+ core::print(#C14);
}
static method main() → dynamic {
- self::test0(40);
+ self::test0();
self::test1();
self::test2();
- self::testDouble(3.14);
- self::testStrings(new self::A::•(), "bazz");
- self::testPassEnum(#C11);
- self::testList([@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[1, 2, 3])] self::getList());
+ self::testDouble();
+ self::testStrings(new self::A::•());
+ self::testPassEnum();
+ let final dynamic #t1 = [@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[1, 2, 3])] self::getList() in self::testList();
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect
index 79e29be..cb18067 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect
@@ -48,8 +48,8 @@
static method callerA4([@vm.inferred-type.metadata=#lib::D?] self::A* aa) → void {
[@vm.direct-call.metadata=#lib::C.foo??] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}();
}
-static method callerE1([@vm.inferred-type.metadata=dart.core::_OneByteString (value: "abc")] dynamic x) → void {
- [@vm.direct-call.metadata=dart.core::_StringBase.toString] [@vm.inferred-type.metadata=!? (skip check) (receiver not int)] x.{core::Object::toString}();
+static method callerE1() → void {
+ [@vm.direct-call.metadata=dart.core::_StringBase.toString] [@vm.inferred-type.metadata=!? (skip check) (receiver not int)](#C1).{core::Object::toString}();
}
static method callerE2([@vm.inferred-type.metadata=#lib::E?] dynamic x) → void {
[@vm.inferred-type.metadata=!? (receiver not int)] x.{core::Object::toString}();
@@ -61,6 +61,6 @@
let final self::C* #t1 = new self::C::•() in self::callerA3(#t1);
self::callerA4([@vm.inferred-type.metadata=#lib::D?] self::dd);
self::dd = new self::D::•();
- self::callerE1("abc");
+ self::callerE1();
self::callerE2([@vm.inferred-type.metadata=#lib::E?] self::ee);
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect
index 387080e..59e2b69 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect
@@ -21,14 +21,14 @@
synthetic constructor •() → self::Stream*
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] abstract method foobar((dynamic) →* void onData, {core::Function* onError = #C1}) → self::StreamSubscription*;
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] abstract method foobar() → self::StreamSubscription*;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3] abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
}
abstract class _StreamImpl extends self::Stream {
synthetic constructor •() → self::_StreamImpl*
: super self::Stream::•()
;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method foobar([@vm.inferred-type.metadata=dart.core::Null? (value: null)] (dynamic) →* void onData, {[@vm.inferred-type.metadata=dart.core::Null? (value: null)] core::Function* onError = #C1}) → self::StreamSubscription* {
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method foobar() → self::StreamSubscription* {
return [@vm.inferred-type.metadata=! (skip check)] this.{self::_StreamImpl::_createSubscription}();
}
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] method _createSubscription() → self::StreamSubscription* {
@@ -53,22 +53,22 @@
constructor •([@vm.inferred-type.metadata=!] self::Stream* stream) → self::StreamView*
: self::StreamView::_stream = stream, super self::Stream::•()
;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method foobar([@vm.inferred-type.metadata=dart.core::Null? (value: null)] (dynamic) →* void onData, {[@vm.inferred-type.metadata=dart.core::Null? (value: null)] core::Function* onError = #C1}) → self::StreamSubscription* {
- return [@vm.direct-call.metadata=#lib::StreamView._stream] [@vm.inferred-type.metadata=!] this.{self::StreamView::_stream}.{self::Stream::foobar}(onData, onError: onError);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method foobar() → self::StreamSubscription* {
+ return [@vm.direct-call.metadata=#lib::StreamView._stream] [@vm.inferred-type.metadata=!] this.{self::StreamView::_stream}.{self::Stream::foobar}();
}
}
class ByteStream extends self::StreamView {
constructor •([@vm.inferred-type.metadata=!] self::Stream* stream) → self::ByteStream*
: super self::StreamView::•(stream)
;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method super_foobar1([@vm.inferred-type.metadata=dart.core::Null? (value: null)] (dynamic) →* void onData) → dynamic {
- super.{self::StreamView::foobar}(onData);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method super_foobar1() → dynamic {
+ super.{self::StreamView::foobar}();
}
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method super_foobar2([@vm.inferred-type.metadata=dart.core::Null? (value: null)] (dynamic) →* void onData) → dynamic {
- super.{self::StreamView::foobar}(onData);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method super_foobar2() → dynamic {
+ super.{self::StreamView::foobar}();
}
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] method super_foobar3() → dynamic {
- super.{self::StreamView::foobar}(#C1, onError: #C1);
+ super.{self::StreamView::foobar}();
}
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:13] get super_stream() → self::Stream*
return [@vm.inferred-type.metadata=!] super.{self::StreamView::_stream};
@@ -83,26 +83,26 @@
}
static method round1() → void {
self::ByteStream* x = new self::ByteStream::•(new self::ByteStream::•(new self::_GeneratedStreamImpl::•()));
- [@vm.direct-call.metadata=#lib::ByteStream.super_foobar1] [@vm.inferred-type.metadata=!? (skip check)] x.{self::ByteStream::super_foobar1}(#C1);
+ [@vm.direct-call.metadata=#lib::ByteStream.super_foobar1] [@vm.inferred-type.metadata=!? (skip check)] x.{self::ByteStream::super_foobar1}();
}
static method round2() → void {
new self::_ControllerStream::•();
self::Stream* x = new self::_GeneratedStreamImpl::•();
x = new self::ByteStream::•(x);
- [@vm.direct-call.metadata=#lib::StreamView.foobar] [@vm.inferred-type.metadata=!? (skip check)] x.{self::Stream::foobar}(#C1, onError: #C1);
+ [@vm.direct-call.metadata=#lib::StreamView.foobar] [@vm.inferred-type.metadata=!? (skip check)] x.{self::Stream::foobar}();
}
static method round3() → void {
self::Stream* x = new self::_GeneratedStreamImpl::•();
x = new self::ByteStream::•(x);
x = new self::_ControllerStream::•();
- [@vm.direct-call.metadata=#lib::_StreamImpl.foobar] [@vm.inferred-type.metadata=!? (skip check)] x.{self::Stream::foobar}(#C1, onError: #C1);
+ [@vm.direct-call.metadata=#lib::_StreamImpl.foobar] [@vm.inferred-type.metadata=!? (skip check)] x.{self::Stream::foobar}();
}
static method round4() → void {
self::ByteStream* x = new self::ByteStream::•(new self::_ControllerStream::•());
self::Stream* y = [@vm.direct-call.metadata=#lib::ByteStream.super_stream] [@vm.inferred-type.metadata=!] x.{self::ByteStream::super_stream};
self::Stream* z = [@vm.direct-call.metadata=#lib::StreamView._stream] [@vm.inferred-type.metadata=!] x.{self::StreamView::_stream};
if([@vm.direct-call.metadata=dart.core::Object.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] y.{self::Stream::==}(z)) {
- [@vm.direct-call.metadata=#lib::ByteStream.super_foobar2] [@vm.inferred-type.metadata=!? (skip check)] x.{self::ByteStream::super_foobar2}(#C1);
+ [@vm.direct-call.metadata=#lib::ByteStream.super_foobar2] [@vm.inferred-type.metadata=!? (skip check)] x.{self::ByteStream::super_foobar2}();
}
}
static method round5() → void {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/lists.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/lists.dart.expect
index 0fd6e10..c02e36d 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/lists.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/lists.dart.expect
@@ -11,7 +11,7 @@
[@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:5] final field core::List<core::int*>* defaultConstructor1 = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] core::_GrowableList::•<core::int*>(0);
[@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:6] final field core::List<core::int*>* defaultConstructor2 = [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] core::_List::•<core::int*>(3);
[@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:7] final field core::List<core::int*>* filledFactory1 = [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] core::_List::filled<core::int*>(2, 0);
-[@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:8] final field core::List<core::int*>* filledFactory2 = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] core::_GrowableList::filled<core::int*>(2, 0);
+[@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:8] final field core::List<core::int*>* filledFactory2 = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] core::_GrowableList::filled<core::int*>();
[@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:9] final field core::List<core::int*>* filledFactory3 = [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] core::_List::filled<core::int*>(2, 0);
[@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:10] final field core::List<core::int*>* filledFactory4 = let final core::bool #t1 = _in::unsafeCast<core::bool>([@vm.inferred-type.metadata=dart.core::bool] self::nonConstant()) in [@vm.inferred-type.metadata=!] core::List::filled<core::int*>(2, 0, #t1);
[@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:11] final field core::List<core::int*>* filledFactory5 = [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] core::_List::•<core::int*>(2);
@@ -20,8 +20,8 @@
[@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:14] final field core::List<core::int*>* filledFactory8 = let final core::bool #t2 = _in::unsafeCast<core::bool>([@vm.inferred-type.metadata=dart.core::bool] self::nonConstant()) in [@vm.inferred-type.metadata=!] core::List::filled<core::int*>(2, null, #t2);
[@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:15] final field core::List<core::int*>* generateFactory1 = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] core::_GrowableList::generate<core::int*>(2, (core::int* i) → core::int* => i);
[@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:16] final field core::List<core::int*>* generateFactory2 = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] core::_GrowableList::generate<core::int*>(2, (core::int* i) → core::int* => i);
-[@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:17] final field core::List<core::int*>* generateFactory3 = [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] core::_List::generate<core::int*>(2, (core::int* i) → core::int* => i);
-[@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:18] final field core::List<core::int*>* generateFactory4 = let final (core::int*) →* core::int* #t3 = (core::int* i) → core::int* => i in let final core::bool #t4 = _in::unsafeCast<core::bool>([@vm.inferred-type.metadata=dart.core::bool] self::nonConstant()) in [@vm.inferred-type.metadata=!] core::List::generate<core::int*>(2, #t3, #t4);
+[@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:17] final field core::List<core::int*>* generateFactory3 = [@vm.inferred-type.metadata=dart.core::_List<dart.core::int*>] core::_List::generate<core::int*>((core::int* i) → core::int* => i);
+[@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:18] final field core::List<core::int*>* generateFactory4 = let final (core::int*) →* core::int* #t3 = (core::int* i) → core::int* => i in let final core::bool #t4 = _in::unsafeCast<core::bool>([@vm.inferred-type.metadata=dart.core::bool] self::nonConstant()) in [@vm.inferred-type.metadata=!] core::List::generate<core::int*>(#t3, #t4);
[@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::List<dart.core::int*>*>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:19] final field core::List<core::List<core::int*>*>* generateFactory5 = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::List<dart.core::int*>*>] core::_GrowableList::generate<core::List<core::int*>*>(2, (core::int* _) → core::List<core::int*>* => <core::int*>[]);
synthetic constructor •() → self::A*
: super core::Object::•()
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/lists_nnbd.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/lists_nnbd.dart.expect
index 8a54bb1..8d53437 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/lists_nnbd.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/lists_nnbd.dart.expect
@@ -9,7 +9,7 @@
[@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[])] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] final field core::List<core::int> constLiteral1 = #C1;
[@vm.inferred-type.metadata=dart.core::_ImmutableList (value: const <dart.core::int*>[1, 2])] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] final field core::List<core::int> constLiteral2 = #C4;
[@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:5] final field core::List<core::int> filledFactory1 = [@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] core::_List::filled<core::int>(2, 0);
-[@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:6] final field core::List<core::int> filledFactory2 = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] core::_GrowableList::filled<core::int>(2, 0);
+[@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:6] final field core::List<core::int> filledFactory2 = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] core::_GrowableList::filled<core::int>();
[@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:7] final field core::List<core::int> filledFactory3 = [@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] core::_List::filled<core::int>(2, 0);
[@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:8] final field core::List<core::int> filledFactory4 = let final core::bool #t1 = _in::unsafeCast<core::bool>([@vm.inferred-type.metadata=dart.core::bool] self::nonConstant()) in [@vm.inferred-type.metadata=!] core::List::filled<core::int>(2, 0, #t1);
[@vm.inferred-type.metadata=dart.core::_List<dart.core::int?>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:9] final field core::List<core::int?> filledFactory5 = [@vm.inferred-type.metadata=dart.core::_List<dart.core::int?>] core::_List::•<core::int?>(2);
@@ -18,8 +18,8 @@
[@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:12] final field core::List<core::int?> filledFactory8 = let final core::bool #t2 = _in::unsafeCast<core::bool>([@vm.inferred-type.metadata=dart.core::bool] self::nonConstant()) in [@vm.inferred-type.metadata=!] core::List::filled<core::int?>(2, null, #t2);
[@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:13] final field core::List<core::int> generateFactory1 = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] core::_GrowableList::generate<core::int>(2, (core::int i) → core::int => i);
[@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:14] final field core::List<core::int> generateFactory2 = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] core::_GrowableList::generate<core::int>(2, (core::int i) → core::int => i);
-[@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:15] final field core::List<core::int> generateFactory3 = [@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] core::_List::generate<core::int>(2, (core::int i) → core::int => i);
-[@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:16] final field core::List<core::int> generateFactory4 = let final (core::int) → core::int #t3 = (core::int i) → core::int => i in let final core::bool #t4 = _in::unsafeCast<core::bool>([@vm.inferred-type.metadata=dart.core::bool] self::nonConstant()) in [@vm.inferred-type.metadata=!] core::List::generate<core::int>(2, #t3, #t4);
+[@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:15] final field core::List<core::int> generateFactory3 = [@vm.inferred-type.metadata=dart.core::_List<dart.core::int>] core::_List::generate<core::int>((core::int i) → core::int => i);
+[@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:16] final field core::List<core::int> generateFactory4 = let final (core::int) → core::int #t3 = (core::int i) → core::int => i in let final core::bool #t4 = _in::unsafeCast<core::bool>([@vm.inferred-type.metadata=dart.core::bool] self::nonConstant()) in [@vm.inferred-type.metadata=!] core::List::generate<core::int>(#t3, #t4);
[@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::List<dart.core::int>>] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:17] final field core::List<core::List<core::int>> generateFactory5 = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::List<dart.core::int>>] core::_GrowableList::generate<core::List<core::int>>(2, (core::int _) → core::List<core::int> => <core::int>[]);
synthetic constructor •() → self::A
: super core::Object::•()
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
index d80f88a..1b24ebc 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
@@ -7,8 +7,8 @@
[@vm.inferred-type.metadata=dart.core::_OneByteString] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] field core::String? nonNullable;
[@vm.inferred-type.metadata=dart.core::_OneByteString?] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] field core::String? nullable;
[@vm.inferred-type.metadata=dart.core::Null? (value: null)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] field core::String? alwaysNull;
- constructor •([@vm.inferred-type.metadata=dart.core::_OneByteString] core::String? nonNullable, [@vm.inferred-type.metadata=dart.core::_OneByteString?] core::String? nullable, {[@vm.inferred-type.metadata=dart.core::Null? (value: null)] core::String? alwaysNull = #C1}) → self::A
- : self::A::nonNullable = nonNullable, self::A::nullable = nullable, self::A::alwaysNull = alwaysNull, super core::Object::•()
+ constructor •([@vm.inferred-type.metadata=dart.core::_OneByteString] core::String? nonNullable, [@vm.inferred-type.metadata=dart.core::_OneByteString?] core::String? nullable) → self::A
+ : self::A::nonNullable = nonNullable, self::A::nullable = nullable, self::A::alwaysNull = #C1, super core::Object::•()
;
}
[@vm.inferred-type.metadata=#lib::A?]static field self::A staticField = new self::A::•("hi", "bye");
@@ -19,7 +19,7 @@
static method testAlwaysNull([@vm.inferred-type.metadata=#lib::A?] self::A a) → dynamic
return [@vm.direct-call.metadata=#lib::A.alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull}!;
static method main() → void {
- final core::List<self::A> list = <self::A>[new self::A::•("foo", null, alwaysNull: null), self::staticField];
+ final core::List<self::A> list = <self::A>[new self::A::•("foo", null), self::staticField];
{
core::Iterator<self::A> :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A>] list.{core::Iterable::iterator};
for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect
index 615c0d7..17ed46c 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect
@@ -7,8 +7,8 @@
[@vm.inferred-type.metadata=dart.core::_OneByteString] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] field core::String* nonNullable;
[@vm.inferred-type.metadata=dart.core::_OneByteString?] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] field core::String* nullable;
[@vm.inferred-type.metadata=dart.core::Null? (value: null)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] field core::String* alwaysNull;
- constructor •([@vm.inferred-type.metadata=dart.core::_OneByteString] core::String* nonNullable, [@vm.inferred-type.metadata=dart.core::_OneByteString?] core::String* nullable, {[@vm.inferred-type.metadata=dart.core::Null? (value: null)] core::String* alwaysNull = #C1}) → self::A*
- : self::A::nonNullable = nonNullable, self::A::nullable = nullable, self::A::alwaysNull = alwaysNull, super core::Object::•()
+ constructor •([@vm.inferred-type.metadata=dart.core::_OneByteString] core::String* nonNullable, [@vm.inferred-type.metadata=dart.core::_OneByteString?] core::String* nullable) → self::A*
+ : self::A::nonNullable = nonNullable, self::A::nullable = nullable, self::A::alwaysNull = #C1, super core::Object::•()
;
}
[@vm.inferred-type.metadata=#lib::A?]static field self::A* staticField = new self::A::•("hi", "bye");
@@ -51,7 +51,7 @@
static method someCondition() → dynamic
return [@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.inferred-type.metadata=int] core::int::parse("1").{core::num::==}(1);
static method main() → void {
- final core::List<self::A*>* list = <self::A*>[new self::A::•("foo", null, alwaysNull: null), self::staticField];
+ final core::List<self::A*>* list = <self::A*>[new self::A::•("foo", null), self::staticField];
{
core::Iterator<self::A*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A*>] list.{core::Iterable::iterator};
for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect
index 3c20021..a697cdd 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect
@@ -18,7 +18,7 @@
} =>#t3);
[@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pb::FooKeep::aKeep} = 43;
} =>#t1;
- tes::test("retrieving values", () → Null {
+ tes::test(() → Null {
exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.barKeep] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] foo.{pb::FooKeep::barKeep}.{pb::BarKeep::aKeep}, 5);
exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] foo.{pb::FooKeep::mapKeep}.{core::Map::[]}("foo").{pb::BarKeep::aKeep}, 2);
exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.hasHasKeep] [@vm.inferred-type.metadata=dart.core::bool (skip check)] foo.{pb::FooKeep::hasHasKeep}(), false);
@@ -38,11 +38,11 @@
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "FooKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, (#C1) ?{core::String} "" : "barKeep", "barKeep", #C2);
[@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(3, (#C1) ?{core::String} "" : "mapKeep", "FooKeep.MapKeepEntry", #C3, "mapKeep", #C2, #C4);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(3, (#C1) ?{core::String} "" : "mapKeep", #C2);
[@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep", #C5, "aKeep");
- [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C6);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C7);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep", #C3);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C4);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C5);
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t1;
constructor _() → self::FooKeep
@@ -52,36 +52,36 @@
return [@vm.inferred-type.metadata=foo.pb.dart::FooKeep] self::FooKeep::create();
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::FooKeep::_i;
- @#C10
+ @#C8
static method create() → self::FooKeep
return new self::FooKeep::_();
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] @#C12
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] @#C10
get barKeep() → self::BarKeep
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep? (skip check)] this.{pro::GeneratedMessage::$_getN}<self::BarKeep>(0);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] @#C12
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep? (skip check)] this.{pro::GeneratedMessage::$_getN}<self::BarKeep>();
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] @#C10
set barKeep([@vm.inferred-type.metadata=foo.pb.dart::BarKeep] self::BarKeep v) → void {
- [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(1, v);
+ [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(v);
}
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] @#C14
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] @#C12
get mapKeep() → core::Map<core::String, self::BarKeep>
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>(2);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=()->i] @#C16
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>();
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=()->i] @#C14
get aKeep() → core::int
return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(4);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=(i)->b] @#C16
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=(i)->b] @#C14
set aKeep([@vm.inferred-type.metadata=dart.core::_Smi (value: 43)] core::int v) → void {
[@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(4, v);
}
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] @#C18
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] @#C16
method hasHasKeep() → core::bool
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}(5);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] @#C20
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}();
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] @#C18
method clearClearKeep() → void
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.clearField] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] this.{pro::GeneratedMessage::clearField}(7);
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.clearField] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] this.{pro::GeneratedMessage::clearField}();
}
class BarKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t2 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "BarKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep", #C5, "aKeep");
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep", #C3);
[@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t2;
@@ -92,13 +92,13 @@
return [@vm.inferred-type.metadata=foo.pb.dart::BarKeep] self::BarKeep::create();
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::BarKeep::_i;
- @#C10
+ @#C8
static method create() → self::BarKeep
return new self::BarKeep::_();
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=()->i] @#C12
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=()->i] @#C10
get aKeep() → core::int
return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(0);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=(i)->b] @#C12
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=(i)->b] @#C10
set aKeep([@vm.inferred-type.metadata=dart.core::_Smi] core::int v) → void {
[@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v);
}
@@ -113,7 +113,7 @@
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::HasKeep::_i;
- @#C10
+ @#C8
static method create() → self::HasKeep
return new self::HasKeep::_();
}
@@ -127,7 +127,7 @@
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::ClearKeep::_i;
- @#C10
+ @#C8
static method create() → self::ClearKeep
return new self::ClearKeep::_();
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect
index 73d4dc4..14a4689 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect
@@ -11,7 +11,7 @@
[@vm.inferred-type.metadata=dart.core::_GrowableList?<dart.core::int*>]static field core::List<core::int*>* buffer = <core::int*>[10, 4, 8, 5, 16, 4, 26, 9, 10, 3, 102, 111, 111, 18, 2, 8, 42, 34, 9, 10, 3, 122, 111, 112, 18, 2, 8, 3, 40, 43, 50, 0, 58, 0];
static method main() → dynamic {
pb::FooKeep* foo = [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep] pb::FooKeep::fromBuffer([@vm.inferred-type.metadata=dart.core::_GrowableList?<dart.core::int*>] self::buffer);
- tes::test("Kept values are restored correctly", () → Null {
+ tes::test(() → Null {
exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] foo.{pb::FooKeep::mapKeep}.{core::Map::[]}("foo").{pb::BarKeep::aKeep}, 42);
exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.barKeep] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] foo.{pb::FooKeep::barKeep}.{pb::BarKeep::aKeep}, 5);
exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=int] foo.{pb::FooKeep::aKeep}, 43);
@@ -31,11 +31,11 @@
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "FooKeep", createEmptyInstance: #C2) in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, (#C1) ?{core::String} "" : "barKeep", "barKeep", #C3);
[@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(3, (#C1) ?{core::String} "" : "mapKeep", "FooKeep.MapKeepEntry", #C4, "mapKeep", #C3, #C5);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(3, (#C1) ?{core::String} "" : "mapKeep", #C3);
[@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep", #C6, "aKeep");
- [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C7);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C8);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep", #C4);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C5);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C6);
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t1;
constructor _() → self::FooKeep
@@ -43,32 +43,32 @@
;
static factory fromBuffer([@vm.inferred-type.metadata=dart.core::_GrowableList?<dart.core::int*>] core::List<core::int> i) → self::FooKeep
return let final self::FooKeep #t2 = [@vm.inferred-type.metadata=foo.pb.dart::FooKeep] self::FooKeep::create() in block {
- [@vm.direct-call.metadata=protobuf::GeneratedMessage.mergeFromBuffer] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::GeneratedMessage::mergeFromBuffer}(i, #C9);
+ [@vm.direct-call.metadata=protobuf::GeneratedMessage.mergeFromBuffer] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::GeneratedMessage::mergeFromBuffer}(i);
} =>#t2;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::FooKeep::_i;
- @#C12
+ @#C9
static method create() → self::FooKeep
return new self::FooKeep::_();
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:2] @#C14
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:2] @#C11
get barKeep() → self::BarKeep
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep? (skip check)] this.{pro::GeneratedMessage::$_getN}<self::BarKeep>(0);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] @#C16
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep? (skip check)] this.{pro::GeneratedMessage::$_getN}<self::BarKeep>();
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] @#C13
get mapKeep() → core::Map<core::String, self::BarKeep>
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>(2);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] [@vm.unboxing-info.metadata=()->i] @#C18
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>();
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] [@vm.unboxing-info.metadata=()->i] @#C15
get aKeep() → core::int
return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(4);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] @#C20
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] @#C17
method hasHasKeep() → core::bool
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}(5);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] @#C22
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}();
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] @#C19
method clearClearKeep() → void
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.clearField] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] this.{pro::GeneratedMessage::clearField}(7);
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.clearField] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] this.{pro::GeneratedMessage::clearField}();
}
class BarKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t3 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "BarKeep", createEmptyInstance: #C3) in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep", #C6, "aKeep");
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep", #C4);
[@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t3;
@@ -77,15 +77,15 @@
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::BarKeep::_i;
- @#C12
+ @#C9
static method create() → self::BarKeep
return new self::BarKeep::_();
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:9] [@vm.unboxing-info.metadata=()->i] @#C14
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:9] [@vm.unboxing-info.metadata=()->i] @#C11
get aKeep() → core::int
return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(0);
}
class HasKeep extends pro::GeneratedMessage {
-[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t4 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "HasKeep", createEmptyInstance: #C7) in block {
+[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t4 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "HasKeep", createEmptyInstance: #C5) in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t4;
@@ -94,12 +94,12 @@
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::HasKeep::_i;
- @#C12
+ @#C9
static method create() → self::HasKeep
return new self::HasKeep::_();
}
class ClearKeep extends pro::GeneratedMessage {
-[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t5 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "ClearKeep", createEmptyInstance: #C8) in block {
+[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t5 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "ClearKeep", createEmptyInstance: #C6) in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t5;
@@ -108,7 +108,7 @@
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::ClearKeep::_i;
- @#C12
+ @#C9
static method create() → self::ClearKeep
return new self::ClearKeep::_();
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect
index 09a43b0..4980123 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect
@@ -45,11 +45,11 @@
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "FooKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, (#C1) ?{core::String} "" : "barKeep", "barKeep", #C2);
[@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(3, (#C1) ?{core::String} "" : "mapKeep", "FooKeep.MapKeepEntry", #C3, "mapKeep", #C2, #C4);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::ZopDrop>(4, (#C1) ?{core::String} "" : "mapDrop", "FooKeep.MapDropEntry", #C3, "mapDrop", #C5, #C4);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep", #C6, "aKeep");
- [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C7);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C8);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(3, (#C1) ?{core::String} "" : "mapKeep", "FooKeep.MapKeepEntry", "mapKeep", #C2);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::ZopDrop>(4, (#C1) ?{core::String} "" : "mapDrop", "FooKeep.MapDropEntry", "mapDrop", #C3);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep", #C4, "aKeep");
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C5);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C6);
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t1;
constructor _() → self::FooKeep
@@ -59,36 +59,36 @@
return [@vm.inferred-type.metadata=foo.pb.dart::FooKeep] self::FooKeep::create();
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::FooKeep::_i;
- @#C11
+ @#C9
static method create() → self::FooKeep
return new self::FooKeep::_();
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2] @#C13
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2] @#C11
set barKeep([@vm.inferred-type.metadata=foo.pb.dart::BarKeep] self::BarKeep v) → void {
[@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(1, v);
}
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] @#C15
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] @#C13
get mapKeep() → core::Map<core::String, self::BarKeep>
return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>(2);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] @#C17
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] @#C15
get mapDrop() → core::Map<core::String, self::ZopDrop>
return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::ZopDrop>(3);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5] [@vm.unboxing-info.metadata=(i)->b] @#C19
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5] [@vm.unboxing-info.metadata=(i)->b] @#C17
set aKeep([@vm.inferred-type.metadata=dart.core::_Smi (value: 43)] core::int v) → void {
[@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(4, v);
}
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6] @#C21
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6] @#C19
set hasKeep([@vm.inferred-type.metadata=foo.pb.dart::HasKeep] self::HasKeep v) → void {
[@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(6, v);
}
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7] @#C23
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7] @#C21
set clearKeep([@vm.inferred-type.metadata=foo.pb.dart::ClearKeep] self::ClearKeep v) → void {
[@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(7, v);
}
}
class BarKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t2 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "BarKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep", #C6, "aKeep");
- [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(2, (#C1) ?{core::String} "" : "bDrop", #C6, "bDrop");
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep", #C4, "aKeep");
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(2, (#C1) ?{core::String} "" : "bDrop", #C4, "bDrop");
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t2;
constructor _() → self::BarKeep
@@ -98,14 +98,14 @@
return [@vm.inferred-type.metadata=foo.pb.dart::BarKeep] self::BarKeep::create();
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::BarKeep::_i;
- @#C11
+ @#C9
static method create() → self::BarKeep
return new self::BarKeep::_();
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:8] [@vm.unboxing-info.metadata=(i)->b] @#C13
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:8] [@vm.unboxing-info.metadata=(i)->b] @#C11
set aKeep([@vm.inferred-type.metadata=dart.core::_Smi] core::int v) → void {
[@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v);
}
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9] [@vm.unboxing-info.metadata=(i)->b] @#C25
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9] [@vm.unboxing-info.metadata=(i)->b] @#C23
set bDrop([@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] core::int v) → void {
[@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(1, v);
}
@@ -122,7 +122,7 @@
return [@vm.inferred-type.metadata=foo.pb.dart::HasKeep] self::HasKeep::create();
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::HasKeep::_i;
- @#C11
+ @#C9
static method create() → self::HasKeep
return new self::HasKeep::_();
}
@@ -138,13 +138,13 @@
return [@vm.inferred-type.metadata=foo.pb.dart::ClearKeep] self::ClearKeep::create();
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::ClearKeep::_i;
- @#C11
+ @#C9
static method create() → self::ClearKeep
return new self::ClearKeep::_();
}
class ZopDrop extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t5 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "ZopDrop") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aDrop", #C6, "aDrop");
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aDrop", #C4, "aDrop");
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t5;
constructor _() → self::ZopDrop
@@ -154,10 +154,10 @@
return [@vm.inferred-type.metadata=foo.pb.dart::ZopDrop] self::ZopDrop::create();
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::ZopDrop::_i;
- @#C11
+ @#C9
static method create() → self::ZopDrop
return new self::ZopDrop::_();
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:10] [@vm.unboxing-info.metadata=(i)->b] @#C13
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:10] [@vm.unboxing-info.metadata=(i)->b] @#C11
set aDrop([@vm.inferred-type.metadata=dart.core::_Smi (value: 3)] core::int v) → void {
[@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v);
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect
index 50cebc8..15a7ebf 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect
@@ -6,7 +6,6 @@
import "package:protobuf/protobuf.dart" as pro;
import "package:test_api/src/frontend/expect.dart" as exp;
import "package:test_api/src/frontend/throws_matcher.dart" as thr;
-import "package:matcher/src/type_matcher.dart" as typ;
import "package:test/test.dart";
import "file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart";
@@ -21,13 +20,13 @@
} =>#t3);
[@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pb::FooKeep::aKeep} = 43;
} =>#t1;
- tes::test("Freezing a message works", () → Null {
+ tes::test(() → Null {
[@vm.direct-call.metadata=protobuf::GeneratedMessage.freeze] [@vm.inferred-type.metadata=!? (skip check)] foo.{pro::GeneratedMessage::freeze}();
exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.barKeep] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] foo.{pb::FooKeep::barKeep}.{pb::BarKeep::aKeep}, 5);
exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep.aKeep??] [@vm.inferred-type.metadata=int] [@vm.inferred-type.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::BarKeep?] [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.mapKeep] [@vm.inferred-type.metadata=!] foo.{pb::FooKeep::mapKeep}.{core::Map::[]}("foo").{pb::BarKeep::aKeep}, 2);
exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.hasHasKeep] [@vm.inferred-type.metadata=dart.core::bool (skip check)] foo.{pb::FooKeep::hasHasKeep}(), false);
exp::expect([@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.aKeep] [@vm.inferred-type.metadata=int] foo.{pb::FooKeep::aKeep}, 43);
- exp::expect(() → void => [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.clearClearKeep] [@vm.inferred-type.metadata=!? (skip check)] foo.{pb::FooKeep::clearClearKeep}(), [@vm.inferred-type.metadata=library package:test_api/src/frontend/throws_matcher.dart::Throws] thr::throwsA(#C2));
+ exp::expect(() → void => [@vm.direct-call.metadata=library file:pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/generated/foo.pb.dart::FooKeep.clearClearKeep] [@vm.inferred-type.metadata=!? (skip check)] foo.{pb::FooKeep::clearClearKeep}(), [@vm.inferred-type.metadata=library package:test_api/src/frontend/throws_matcher.dart::Throws] thr::throwsA());
});
}
library foo.pb.dart /*isNonNullableByDefault*/;
@@ -42,11 +41,11 @@
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "FooKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, (#C1) ?{core::String} "" : "barKeep", "barKeep", #C2);
[@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(3, (#C1) ?{core::String} "" : "mapKeep", "FooKeep.MapKeepEntry", #C3, "mapKeep", #C2, #C4);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(3, (#C1) ?{core::String} "" : "mapKeep", #C2);
[@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep", #C5, "aKeep");
- [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C6);
- [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C7);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, (#C1) ?{core::String} "" : "aKeep", #C3);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, (#C1) ?{core::String} "" : "hasKeep", "hasKeep", #C4);
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, (#C1) ?{core::String} "" : "clearKeep", "clearKeep", #C5);
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t1;
constructor _() → self::FooKeep
@@ -56,36 +55,36 @@
return [@vm.inferred-type.metadata=foo.pb.dart::FooKeep] self::FooKeep::create();
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::FooKeep::_i;
- @#C10
+ @#C8
static method create() → self::FooKeep
return new self::FooKeep::_();
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] @#C12
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] @#C10
get barKeep() → self::BarKeep
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep? (skip check)] this.{pro::GeneratedMessage::$_getN}<self::BarKeep>(0);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] @#C12
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep? (skip check)] this.{pro::GeneratedMessage::$_getN}<self::BarKeep>();
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] @#C10
set barKeep([@vm.inferred-type.metadata=foo.pb.dart::BarKeep] self::BarKeep v) → void {
- [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(1, v);
+ [@vm.direct-call.metadata=protobuf::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(v);
}
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] @#C14
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] @#C12
get mapKeep() → core::Map<core::String, self::BarKeep>
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>(2);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=()->i] @#C16
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}<core::String, self::BarKeep>();
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=()->i] @#C14
get aKeep() → core::int
return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(4);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=(i)->b] @#C16
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=(i)->b] @#C14
set aKeep([@vm.inferred-type.metadata=dart.core::_Smi (value: 43)] core::int v) → void {
[@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(4, v);
}
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] @#C18
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] @#C16
method hasHasKeep() → core::bool
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}(5);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] @#C20
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}();
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] @#C18
method clearClearKeep() → void
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.clearField] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] this.{pro::GeneratedMessage::clearField}(7);
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.clearField] [@vm.inferred-type.metadata=dart.core::Null? (skip check) (value: null)] this.{pro::GeneratedMessage::clearField}();
}
class BarKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t2 = new pro::BuilderInfo::•((#C1) ?{core::String} "" : "BarKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep", #C5, "aKeep");
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, (#C1) ?{core::String} "" : "aKeep", #C3);
[@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null);
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t2;
@@ -96,13 +95,13 @@
return [@vm.inferred-type.metadata=foo.pb.dart::BarKeep] self::BarKeep::create();
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::BarKeep::_i;
- @#C10
+ @#C8
static method create() → self::BarKeep
return new self::BarKeep::_();
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=()->i] @#C12
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=()->i] @#C10
get aKeep() → core::int
return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(0);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=(i)->b] @#C12
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=(i)->b] @#C10
set aKeep([@vm.inferred-type.metadata=dart.core::_Smi] core::int v) → void {
[@vm.direct-call.metadata=protobuf::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v);
}
@@ -117,7 +116,7 @@
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::HasKeep::_i;
- @#C10
+ @#C8
static method create() → self::HasKeep
return new self::HasKeep::_();
}
@@ -131,7 +130,7 @@
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::ClearKeep::_i;
- @#C10
+ @#C8
static method create() → self::ClearKeep
return new self::ClearKeep::_();
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/name_mangling_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/name_mangling_test.dart.expect
index 7f311bf..6f760ed 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/name_mangling_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/name_mangling_test.dart.expect
@@ -43,14 +43,14 @@
;
static factory fromBuffer([@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int*>] core::List<core::int> i) → self::NameManglingKeep
return let final self::NameManglingKeep #t3 = [@vm.inferred-type.metadata=name_mangling.pb.dart::NameManglingKeep] self::NameManglingKeep::create() in block {
- [@vm.direct-call.metadata=protobuf::GeneratedMessage.mergeFromBuffer] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::GeneratedMessage::mergeFromBuffer}(i, #C7);
+ [@vm.direct-call.metadata=protobuf::GeneratedMessage.mergeFromBuffer] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::GeneratedMessage::mergeFromBuffer}(i);
} =>#t3;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get info_() → pro::BuilderInfo
return [@vm.inferred-type.metadata=protobuf::BuilderInfo?] self::NameManglingKeep::_i;
@#C5
static method create() → self::NameManglingKeep
return new self::NameManglingKeep::_();
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] @#C9
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] @#C8
method hasClone_10() → core::bool
- return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}(0);
+ return [@vm.direct-call.metadata=protobuf::GeneratedMessage.$_has] [@vm.inferred-type.metadata=dart.core::bool (skip check)] this.{pro::GeneratedMessage::$_has}();
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination.dart.expect
index 101cd55..72a2ae0 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination.dart.expect
@@ -12,8 +12,8 @@
synthetic constructor •() → self::B<self::B::T*>*
: super self::A::•()
;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->i] method testT1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] dynamic x) → dynamic
- return _in::unsafeCast<self::B::T*>(x);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=()->i] method testT1() → dynamic
+ return _in::unsafeCast<self::B::T*>(#C1);
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method testT2negative([@vm.inferred-type.metadata=#lib::A<dart.core::String*>] dynamic x) → dynamic
return x as self::B::T*;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method testAOfT1([@vm.inferred-type.metadata=#lib::A<#lib::A<dart.core::int*>*>] dynamic x) → dynamic
@@ -21,14 +21,14 @@
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method testAOfT2negative([@vm.inferred-type.metadata=#lib::A<#lib::A<dart.core::num*>*>] dynamic x) → dynamic
return x as self::A<self::B::T*>*;
}
-[@vm.unboxing-info.metadata=(i)->i]static method testInt1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] dynamic x) → dynamic
- return _in::unsafeCast<core::int*>(x);
-static method testInt2([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return _in::unsafeCast<core::int*>(x);
-static method testDynamic([@vm.inferred-type.metadata=dart.core::_OneByteString (value: "hi")] dynamic x) → dynamic
- return _in::unsafeCast<dynamic>(x);
-static method testObject([@vm.inferred-type.metadata=dart.core::_OneByteString (value: "bye")] dynamic x) → dynamic
- return x;
+[@vm.unboxing-info.metadata=()->i]static method testInt1() → dynamic
+ return _in::unsafeCast<core::int*>(#C1);
+static method testInt2() → dynamic
+ return _in::unsafeCast<core::int*>(#C2);
+static method testDynamic() → dynamic
+ return _in::unsafeCast<dynamic>(#C3);
+static method testObject() → dynamic
+ return #C4;
static method testBOfInt([@vm.inferred-type.metadata=#lib::B<dart.core::int*>] dynamic x) → dynamic
return _in::unsafeCast<self::B<core::int*>*>(x);
static method testAOfInt([@vm.inferred-type.metadata=#lib::B<dart.core::int*>] dynamic x) → dynamic
@@ -40,16 +40,16 @@
static method testAOfAOfB2negative([@vm.inferred-type.metadata=#lib::A<#lib::A<#lib::A<dynamic>*>*>] dynamic x) → dynamic
return x as self::A<self::A<self::B<dynamic>*>*>*;
static method main() → void {
- self::testInt1(42);
- self::testInt2(null);
- self::testDynamic("hi");
- self::testObject("bye");
+ self::testInt1();
+ self::testInt2();
+ self::testDynamic();
+ self::testObject();
self::testBOfInt(new self::B::•<core::int*>());
self::testAOfInt(new self::B::•<core::int*>());
self::testAOfNum(new self::B::•<core::int*>());
self::testAOfAOfB1(new self::A::•<self::A<self::B<dynamic>*>*>());
self::testAOfAOfB2negative(new self::A::•<self::A<self::A<dynamic>*>*>());
- [@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int*>().{self::B::testT1}(42);
+ [@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int*>().{self::B::testT1}();
[@vm.direct-call.metadata=#lib::B.testT2negative] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<self::A<core::int*>*>().{self::B::testT2negative}(new self::A::•<core::String*>());
[@vm.direct-call.metadata=#lib::B.testAOfT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<self::A<core::int*>*>().{self::B::testAOfT1}(new self::A::•<self::A<core::int*>*>());
[@vm.direct-call.metadata=#lib::B.testAOfT2negative] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<self::A<core::int*>*>().{self::B::testAOfT2negative}(new self::A::•<self::A<core::num*>*>());
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd.dart.expect
index 11d1e0b..95e736c 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd.dart.expect
@@ -12,60 +12,60 @@
synthetic constructor •() → self::B<self::B::T%>
: super self::A::•()
;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->i] method testT1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] dynamic x) → dynamic
- return _in::unsafeCast<self::B::T%>(x);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method testT2([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return _in::unsafeCast<self::B::T%>(x);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method testT3([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return _in::unsafeCast<self::B::T%>(x);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] [@vm.unboxing-info.metadata=(i)->i] method testNullableT1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] dynamic x) → dynamic
- return _in::unsafeCast<self::B::T?>(x);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method testNullableT2([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return _in::unsafeCast<self::B::T?>(x);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=()->i] method testT1() → dynamic
+ return _in::unsafeCast<self::B::T%>(#C1);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method testT2() → dynamic
+ return _in::unsafeCast<self::B::T%>(#C2);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method testT3() → dynamic
+ return _in::unsafeCast<self::B::T%>(#C2);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] [@vm.unboxing-info.metadata=()->i] method testNullableT1() → dynamic
+ return _in::unsafeCast<self::B::T?>(#C1);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method testNullableT2() → dynamic
+ return _in::unsafeCast<self::B::T?>(#C2);
}
-[@vm.unboxing-info.metadata=(i)->i]static method testInt1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] dynamic x) → dynamic
- return _in::unsafeCast<core::int>(x);
-static method testInt2([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return _in::unsafeCast<core::int>(x);
-[@vm.unboxing-info.metadata=(i)->i]static method testNullableInt1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] dynamic x) → dynamic
- return _in::unsafeCast<core::int?>(x);
-static method testNullableInt2([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return _in::unsafeCast<core::int?>(x);
-static method testDynamic([@vm.inferred-type.metadata=dart.core::_OneByteString (value: "hi")] dynamic x) → dynamic
- return _in::unsafeCast<dynamic>(x);
-static method testObject([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return x;
-static method testNullableObject([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return x;
+[@vm.unboxing-info.metadata=()->i]static method testInt1() → dynamic
+ return _in::unsafeCast<core::int>(#C1);
+static method testInt2() → dynamic
+ return _in::unsafeCast<core::int>(#C2);
+[@vm.unboxing-info.metadata=()->i]static method testNullableInt1() → dynamic
+ return _in::unsafeCast<core::int?>(#C1);
+static method testNullableInt2() → dynamic
+ return _in::unsafeCast<core::int?>(#C2);
+static method testDynamic() → dynamic
+ return _in::unsafeCast<dynamic>(#C3);
+static method testObject() → dynamic
+ return #C2;
+static method testNullableObject() → dynamic
+ return #C2;
static method testAOfNum1([@vm.inferred-type.metadata=#lib::B<dart.core::int>] dynamic x) → dynamic
return _in::unsafeCast<self::A<core::num>>(x);
static method testAOfNum2([@vm.inferred-type.metadata=#lib::B<dart.core::int?>] dynamic x) → dynamic
return _in::unsafeCast<self::A<core::num>>(x);
-static method testAOfNum3([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return _in::unsafeCast<self::A<core::num>>(x);
+static method testAOfNum3() → dynamic
+ return _in::unsafeCast<self::A<core::num>>(#C2);
static method testAOfNullableNum([@vm.inferred-type.metadata=#lib::B<dart.core::int?>] dynamic x) → dynamic
return _in::unsafeCast<self::A<core::num?>>(x);
-static method testNullableAOfNum([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return _in::unsafeCast<self::A<core::num>?>(x);
+static method testNullableAOfNum() → dynamic
+ return _in::unsafeCast<self::A<core::num>?>(#C2);
static method testNullableAOfNullableNum([@vm.inferred-type.metadata=#lib::B<dart.core::int?>] dynamic x) → dynamic
return _in::unsafeCast<self::A<core::num?>?>(x);
static method main() → void {
- self::testInt1(42);
- self::testInt2(null);
- self::testNullableInt1(42);
- self::testNullableInt2(null);
- self::testDynamic("hi");
- self::testObject(null);
- self::testNullableObject(null);
+ self::testInt1();
+ self::testInt2();
+ self::testNullableInt1();
+ self::testNullableInt2();
+ self::testDynamic();
+ self::testObject();
+ self::testNullableObject();
self::testAOfNum1(new self::B::•<core::int>());
self::testAOfNum2(new self::B::•<core::int?>());
- self::testAOfNum3(null);
+ self::testAOfNum3();
self::testAOfNullableNum(new self::B::•<core::int?>());
- self::testNullableAOfNum(null);
+ self::testNullableAOfNum();
self::testNullableAOfNullableNum(new self::B::•<core::int?>());
- [@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT1}(42);
- [@vm.direct-call.metadata=#lib::B.testT2] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT2}(null);
- [@vm.direct-call.metadata=#lib::B.testT3] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int?>().{self::B::testT3}(null);
- [@vm.direct-call.metadata=#lib::B.testNullableT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT1}(42);
- [@vm.direct-call.metadata=#lib::B.testNullableT2] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT2}(null);
+ [@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT1}();
+ [@vm.direct-call.metadata=#lib::B.testT2] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT2}();
+ [@vm.direct-call.metadata=#lib::B.testT3] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int?>().{self::B::testT3}();
+ [@vm.direct-call.metadata=#lib::B.testNullableT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT1}();
+ [@vm.direct-call.metadata=#lib::B.testNullableT2] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT2}();
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd_strong.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd_strong.dart.expect
index 10ac8a6..8ad5b44 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd_strong.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination_nnbd_strong.dart.expect
@@ -12,63 +12,63 @@
synthetic constructor •() → self::B<self::B::T%>
: super self::A::•()
;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->i] method testT1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] dynamic x) → dynamic
- return _in::unsafeCast<self::B::T%>(x);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method testT2negative([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return x as{ForNonNullableByDefault} self::B::T%;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method testT3([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return _in::unsafeCast<self::B::T%>(x);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] [@vm.unboxing-info.metadata=(i)->i] method testNullableT1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] dynamic x) → dynamic
- return _in::unsafeCast<self::B::T?>(x);
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method testNullableT2([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return _in::unsafeCast<self::B::T?>(x);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=()->i] method testT1() → dynamic
+ return _in::unsafeCast<self::B::T%>(#C1);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method testT2negative() → dynamic
+ return (#C2) as{ForNonNullableByDefault} self::B::T%;
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method testT3() → dynamic
+ return _in::unsafeCast<self::B::T%>(#C2);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] [@vm.unboxing-info.metadata=()->i] method testNullableT1() → dynamic
+ return _in::unsafeCast<self::B::T?>(#C1);
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method testNullableT2() → dynamic
+ return _in::unsafeCast<self::B::T?>(#C2);
}
-[@vm.unboxing-info.metadata=(i)->i]static method testInt1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] dynamic x) → dynamic
- return _in::unsafeCast<core::int>(x);
-static method testInt2negative([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return x as{ForNonNullableByDefault} core::int;
-[@vm.unboxing-info.metadata=(i)->i]static method testNullableInt1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] dynamic x) → dynamic
- return _in::unsafeCast<core::int?>(x);
-static method testNullableInt2([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return _in::unsafeCast<core::int?>(x);
-static method testDynamic([@vm.inferred-type.metadata=dart.core::_OneByteString (value: "hi")] dynamic x) → dynamic
- return _in::unsafeCast<dynamic>(x);
-static method testObjectNegative([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return let dynamic #t1 = x in true ?{core::Object} #t1 as{ForNonNullableByDefault} core::Object : #t1{core::Object};
-static method testNullableObject([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return x;
+[@vm.unboxing-info.metadata=()->i]static method testInt1() → dynamic
+ return _in::unsafeCast<core::int>(#C1);
+static method testInt2negative() → dynamic
+ return (#C2) as{ForNonNullableByDefault} core::int;
+[@vm.unboxing-info.metadata=()->i]static method testNullableInt1() → dynamic
+ return _in::unsafeCast<core::int?>(#C1);
+static method testNullableInt2() → dynamic
+ return _in::unsafeCast<core::int?>(#C2);
+static method testDynamic() → dynamic
+ return _in::unsafeCast<dynamic>(#C3);
+static method testObjectNegative() → dynamic
+ return let dynamic #t1 = #C2 in true ?{core::Object} #t1 as{ForNonNullableByDefault} core::Object : #t1{core::Object};
+static method testNullableObject() → dynamic
+ return #C2;
static method testAOfNum1([@vm.inferred-type.metadata=#lib::B<dart.core::int>] dynamic x) → dynamic
return _in::unsafeCast<self::A<core::num>>(x);
static method testAOfNum2negative([@vm.inferred-type.metadata=#lib::B<dart.core::int?>] dynamic x) → dynamic
return x as{ForNonNullableByDefault} self::A<core::num>;
-static method testAOfNum3negative([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return x as{ForNonNullableByDefault} self::A<core::num>;
+static method testAOfNum3negative() → dynamic
+ return (#C2) as{ForNonNullableByDefault} self::A<core::num>;
static method testAOfNullableNum([@vm.inferred-type.metadata=#lib::B<dart.core::int?>] dynamic x) → dynamic
return _in::unsafeCast<self::A<core::num?>>(x);
-static method testNullableAOfNum([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) → dynamic
- return _in::unsafeCast<self::A<core::num>?>(x);
+static method testNullableAOfNum() → dynamic
+ return _in::unsafeCast<self::A<core::num>?>(#C2);
static method testNullableAOfNumNegative([@vm.inferred-type.metadata=#lib::B<dart.core::int?>] dynamic x) → dynamic
return x as{ForNonNullableByDefault} self::A<core::num>?;
static method testNullableAOfNullableNum([@vm.inferred-type.metadata=#lib::B<dart.core::int?>] dynamic x) → dynamic
return _in::unsafeCast<self::A<core::num?>?>(x);
static method main() → void {
- self::testInt1(42);
- self::testInt2negative(null);
- self::testNullableInt1(42);
- self::testNullableInt2(null);
- self::testDynamic("hi");
- self::testObjectNegative(null);
- self::testNullableObject(null);
+ self::testInt1();
+ self::testInt2negative();
+ self::testNullableInt1();
+ self::testNullableInt2();
+ self::testDynamic();
+ self::testObjectNegative();
+ self::testNullableObject();
self::testAOfNum1(new self::B::•<core::int>());
self::testAOfNum2negative(new self::B::•<core::int?>());
- self::testAOfNum3negative(null);
+ self::testAOfNum3negative();
self::testAOfNullableNum(new self::B::•<core::int?>());
- self::testNullableAOfNum(null);
+ self::testNullableAOfNum();
self::testNullableAOfNumNegative(new self::B::•<core::int?>());
self::testNullableAOfNullableNum(new self::B::•<core::int?>());
- [@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT1}(42);
- [@vm.direct-call.metadata=#lib::B.testT2negative] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT2negative}(null);
- [@vm.direct-call.metadata=#lib::B.testT3] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int?>().{self::B::testT3}(null);
- [@vm.direct-call.metadata=#lib::B.testNullableT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT1}(42);
- [@vm.direct-call.metadata=#lib::B.testNullableT2] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT2}(null);
+ [@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT1}();
+ [@vm.direct-call.metadata=#lib::B.testT2negative] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testT2negative}();
+ [@vm.direct-call.metadata=#lib::B.testT3] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int?>().{self::B::testT3}();
+ [@vm.direct-call.metadata=#lib::B.testNullableT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT1}();
+ [@vm.direct-call.metadata=#lib::B.testNullableT2] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int>().{self::B::testNullableT2}();
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_getters.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_getters.dart.expect
index 4dbd258..2109c6a 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_getters.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_getters.dart.expect
@@ -23,8 +23,8 @@
}
class BI2A extends core::Object implements self::BI2 {
[@vm.inferred-type.metadata=dart.core::Null? (value: null)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:2] final field core::int* value;
- constructor •([@vm.inferred-type.metadata=dart.core::Null? (value: null)] core::int* value) → self::BI2A*
- : self::BI2A::value = value, super core::Object::•()
+ constructor •() → self::BI2A*
+ : self::BI2A::value = #C1, super core::Object::•()
;
}
class BI2B extends core::Object implements self::BI2 {
@@ -81,7 +81,7 @@
final self::BI1A* bi1a = new self::BI1A::•([@vm.inferred-type.metadata=int] self::smiOrMint);
final self::BI1B* bi1b = new self::BI1B::•();
self::use([@vm.inferred-type.metadata=int?]([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::BI1*} bi1a : bi1b).{self::BI1::value});
- final self::BI2A* bi2a = new self::BI2A::•(null);
+ final self::BI2A* bi2a = new self::BI2A::•();
final self::BI2B* bi2b = new self::BI2B::•();
self::use([@vm.inferred-type.metadata=int?]([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::BI2*} bi2a : bi2b).{self::BI2::value});
final self::BI3A* bi3a = new self::BI3A::•([@vm.inferred-type.metadata=int] self::smiOrMint);
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field2.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field2.dart.expect
index c2f2f87..664dad2 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field2.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field2.dart.expect
@@ -61,7 +61,7 @@
[@vm.call-site-attributes.metadata=receiverType:#lib::C<dart.core::num*>*] [@vm.direct-call.metadata=#lib::D.bar] c.{self::C::bar} = 3.14;
});
self::E* e = new self::F::•();
- exp::Expect::equals(42, [@vm.direct-call.metadata=#lib::F.bar] [@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] e.{self::E::bar});
+ let final core::int* #t2 = [@vm.direct-call.metadata=#lib::F.bar] [@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] e.{self::E::bar} in exp::Expect::equals();
exp::Expect::isTrue(![@vm.inferred-type.metadata=dart.core::bool] core::identical(#C2, #C4));
[@vm.direct-call.metadata=#lib::I.foo] [@vm.inferred-type.metadata=!? (skip check)] new self::I::•().{self::I::foo}();
5;
diff --git a/runtime/vm/compiler/backend/flow_graph.cc b/runtime/vm/compiler/backend/flow_graph.cc
index dc5b713..0b7acfc 100644
--- a/runtime/vm/compiler/backend/flow_graph.cc
+++ b/runtime/vm/compiler/backend/flow_graph.cc
@@ -2382,10 +2382,9 @@
int num_args_checked =
MethodRecognizer::NumArgsCheckedForStaticCall(target);
const ICData& ic_data = ICData::ZoneHandle(
- zone, ICData::New(function, String::Handle(zone, target.name()),
- arguments_descriptor, call->deopt_id(),
- num_args_checked, ICData::kStatic));
- ic_data.AddTarget(target);
+ zone, ICData::NewForStaticCall(
+ function, target, arguments_descriptor,
+ call->deopt_id(), num_args_checked, ICData::kStatic));
call->set_ic_data(&ic_data);
}
}
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.cc b/runtime/vm/compiler/backend/flow_graph_compiler.cc
index 0502402..c06d36d 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.cc
@@ -1932,12 +1932,10 @@
return res;
}
- const ICData& ic_data = ICData::ZoneHandle(
- zone(),
- ICData::New(parsed_function().function(),
- String::Handle(zone(), target.name()), arguments_descriptor,
- deopt_id, num_args_tested, rebind_rule));
- ic_data.AddTarget(target);
+ const auto& ic_data = ICData::ZoneHandle(
+ zone(), ICData::NewForStaticCall(parsed_function().function(), target,
+ arguments_descriptor, deopt_id,
+ num_args_tested, rebind_rule));
if (deopt_id_to_ic_data_ != NULL) {
(*deopt_id_to_ic_data_)[deopt_id] = &ic_data;
}
diff --git a/runtime/vm/compiler/backend/il_deserializer.cc b/runtime/vm/compiler/backend/il_deserializer.cc
index dcc40c0..6c30d95 100644
--- a/runtime/vm/compiler/backend/il_deserializer.cc
+++ b/runtime/vm/compiler/backend/il_deserializer.cc
@@ -2327,7 +2327,7 @@
}
ASSERT(parsed_function_ != nullptr);
- const auto& ic_data = ICData::ZoneHandle(
+ auto& ic_data = ICData::ZoneHandle(
zone(), ICData::New(parsed_function_->function(), *function_name,
arguments_descriptor, inst->deopt_id(),
num_args_checked, rebind_rule, *type_ptr));
@@ -2360,7 +2360,9 @@
StoreError(entry, "expected a zero count for no checked args");
return false;
}
- ic_data.AddTarget(target);
+ ic_data = ICData::NewForStaticCall(parsed_function_->function(), target,
+ arguments_descriptor, inst->deopt_id(),
+ num_args_checked, rebind_rule);
continue;
}
@@ -2386,7 +2388,7 @@
}
if (auto const call = inst->AsInstanceCall()) {
- call->set_ic_data(&ic_data);
+ call->set_ic_data(const_cast<const ICData*>(&ic_data));
} else if (auto const call = inst->AsStaticCall()) {
call->set_ic_data(&ic_data);
}
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index e1e4f70..9c47fa6 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -11331,33 +11331,36 @@
if (src.IsNull()) {
return Symbols::OptimizedOut().raw();
}
- intptr_t relative_line_number = line_number - line_offset();
+ intptr_t target_line = line_number - line_offset();
intptr_t current_line = 1;
- intptr_t line_start_idx = -1;
- intptr_t last_char_idx = -1;
- for (intptr_t ix = 0;
- (ix < src.Length()) && (current_line <= relative_line_number); ix++) {
- if ((current_line == relative_line_number) && (line_start_idx < 0)) {
- line_start_idx = ix;
+ intptr_t start = 0;
+ // First find the right line, if present...
+ for (; start < src.Length(); start++) {
+ if (current_line == target_line) {
+ break;
}
- if (src.CharAt(ix) == '\n') {
+ const uint16_t c = src.CharAt(start);
+ // Only count '\r' as a line terminator if not followed by a '\n'.
+ if (c == '\n' || (c == '\r' && (start + 1 >= src.Length() ||
+ src.CharAt(start + 1) != '\n'))) {
current_line++;
- } else if (src.CharAt(ix) == '\r') {
- if ((ix + 1 != src.Length()) && (src.CharAt(ix + 1) != '\n')) {
- current_line++;
- }
- } else {
- last_char_idx = ix;
}
}
- // Guarantee that returned string is never NULL.
-
- if (line_start_idx >= 0) {
- return String::SubString(src, line_start_idx,
- last_char_idx - line_start_idx + 1, space);
- } else {
- return Symbols::Empty().raw();
+ if (current_line == target_line) {
+ // ... and then find its end, excluding any line terminator.
+ intptr_t end = start;
+ for (; end < src.Length(); end++) {
+ const uint16_t c = src.CharAt(end);
+ if (c == '\n' || c == '\r') {
+ break;
+ }
+ }
+ // Return the contents of the line.
+ return String::SubString(src, start, end - start, space);
}
+
+ // Not found, so return the empty string.
+ return Symbols::Empty().raw();
}
StringPtr Script::GetSnippet(TokenPosition from, TokenPosition to) const {
@@ -15252,44 +15255,6 @@
return is_smi_two_args_op;
}
-// Used for unoptimized static calls when no class-ids are checked.
-void ICData::AddTarget(const Function& target) const {
- ASSERT(!target.IsNull());
- if (NumArgsTested() > 0) {
- // Create a fake cid entry, so that we can store the target.
- if (NumArgsTested() == 1) {
- AddReceiverCheck(kObjectCid, target, 1);
- } else {
- GrowableArray<intptr_t> class_ids(NumArgsTested());
- for (intptr_t i = 0; i < NumArgsTested(); i++) {
- class_ids.Add(kObjectCid);
- }
- AddCheck(class_ids, target);
- }
- return;
- }
- ASSERT(NumArgsTested() == 0);
- // Can add only once.
- const intptr_t old_num = NumberOfChecks();
- ASSERT(old_num == 0);
- Thread* thread = Thread::Current();
- REUSABLE_ARRAY_HANDLESCOPE(thread);
- Array& data = thread->ArrayHandle();
- data = entries();
- const intptr_t new_len = data.Length() + TestEntryLength();
- data = Array::Grow(data, new_len, Heap::kOld);
- WriteSentinel(data, TestEntryLength());
- intptr_t data_pos = old_num * TestEntryLength();
- ASSERT(!target.IsNull());
- data.SetAt(data_pos + TargetIndexFor(NumArgsTested()), target);
- // Set count to 0 as this is called during compilation, before the
- // call has been executed.
- data.SetAt(data_pos + CountIndexFor(NumArgsTested()), Object::smi_zero());
- // Multithreaded access to ICData requires setting of array to be the last
- // operation.
- set_entries(data);
-}
-
bool ICData::ValidateInterceptor(const Function& target) const {
#if !defined(DART_PRECOMPILED_RUNTIME)
const String& name = String::Handle(target_name());
@@ -15319,17 +15284,14 @@
ASSERT(class_ids.length() == num_args_tested);
const intptr_t old_num = NumberOfChecks();
Array& data = Array::Handle(entries());
+
// ICData of static calls with NumArgsTested() > 0 have initially a
- // dummy set of cids entered (see ICData::AddTarget). That entry is
+ // dummy set of cids entered (see ICData::NewForStaticCall). That entry is
// overwritten by first real type feedback data.
- if (old_num == 1) {
- bool has_dummy_entry = true;
- for (intptr_t i = 0; i < num_args_tested; i++) {
- if (Smi::Value(Smi::RawCast(data.At(i))) != kObjectCid) {
- has_dummy_entry = false;
- break;
- }
- }
+ if (old_num == 1 && num_args_tested == 2) {
+ const bool has_dummy_entry =
+ Smi::Value(Smi::RawCast(data.At(0))) == kObjectCid &&
+ Smi::Value(Smi::RawCast(data.At(1))) == kObjectCid;
if (has_dummy_entry) {
ASSERT(target.raw() == data.At(TargetIndexFor(num_args_tested)));
// Replace dummy entry.
@@ -15885,6 +15847,43 @@
return result.raw();
}
+ICDataPtr ICData::NewForStaticCall(const Function& owner,
+ const Function& target,
+ const Array& arguments_descriptor,
+ intptr_t deopt_id,
+ intptr_t num_args_tested,
+ RebindRule rebind_rule) {
+ ASSERT(!target.IsNull());
+
+ Zone* zone = Thread::Current()->zone();
+ const auto& target_name = String::Handle(zone, target.name());
+ const auto& result = ICData::Handle(
+ zone, NewDescriptor(zone, owner, target_name, arguments_descriptor,
+ deopt_id, num_args_tested, rebind_rule,
+ Object::null_abstract_type()));
+
+ const intptr_t kNumEntries = 2; // 1 entry and a sentinel.
+ const intptr_t entry_len =
+ TestEntryLengthFor(num_args_tested, /*tracking_exactness=*/false);
+ const auto& array =
+ Array::Handle(zone, Array::New(kNumEntries * entry_len, Heap::kOld));
+
+ // See `MethodRecognizer::NumArgsCheckedForStaticCall`.
+ ASSERT(num_args_tested == 0 || num_args_tested == 2);
+ if (num_args_tested == 2) {
+ const auto& object_cid = Smi::Handle(zone, Smi::New(kObjectCid));
+ array.SetAt(0, object_cid);
+ array.SetAt(1, object_cid);
+ }
+ array.SetAt(CountIndexFor(num_args_tested), Object::smi_zero());
+ array.SetAt(TargetIndexFor(num_args_tested), target);
+ WriteSentinel(array, entry_len);
+
+ result.set_entries(array);
+
+ return result.raw();
+}
+
#if !defined(DART_PRECOMPILED_RUNTIME)
ICDataPtr ICData::NewFrom(const ICData& from, intptr_t num_args_tested) {
// See comment in [ICData::Clone] why we access the megamorphic bit first.
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 0ec0812..d9429bb 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -2089,9 +2089,6 @@
// Returns true if this is a two arg smi operation.
bool AddSmiSmiCheckForFastSmiStubs() const;
- // Used for unoptimized static calls when no class-ids are checked.
- void AddTarget(const Function& target) const;
-
// Adding checks.
// Adds one more class test to ICData. Length of 'classes' must be equal to
@@ -2162,6 +2159,13 @@
intptr_t num_args_tested,
RebindRule rebind_rule,
const AbstractType& receiver_type = Object::null_abstract_type());
+ static ICDataPtr NewForStaticCall(const Function& owner,
+ const Function& target,
+ const Array& arguments_descriptor,
+ intptr_t deopt_id,
+ intptr_t num_args_tested,
+ RebindRule rebind_rule);
+
static ICDataPtr NewFrom(const ICData& from, intptr_t num_args_tested);
// Generates a new ICData with descriptor and data array copied (deep clone).
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index 336008f..47f28ff 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -2354,24 +2354,104 @@
}
}
-ISOLATE_UNIT_TEST_CASE(Script) {
- const char* url_chars = "builtin:test-case";
- const char* source_chars = "This will not compile.";
- const String& url = String::Handle(String::New(url_chars));
- const String& source = String::Handle(String::New(source_chars));
- const Script& script = Script::Handle(Script::New(url, source));
+static void CheckLinesWithOffset(Zone* zone, const intptr_t offset) {
+ const char* url_chars = "";
+ // Eight lines, mix of \n, \r, \r\n line terminators, lines 3, 4, 7, and 8
+ // are non-empty. Ends with a \r as a double-check that the \r followed by
+ // \n check doesn't go out of bounds.
+ const char* source_chars = "\n\nxyz\nabc\r\n\n\r\ndef\rghi\r";
+ const String& url = String::Handle(zone, String::New(url_chars));
+ const String& source = String::Handle(zone, String::New(source_chars));
+ const Script& script = Script::Handle(zone, Script::New(url, source));
EXPECT(!script.IsNull());
EXPECT(script.IsScript());
- String& str = String::Handle(script.url());
- EXPECT_EQ(17, str.Length());
- EXPECT_EQ('b', str.CharAt(0));
- EXPECT_EQ(':', str.CharAt(7));
- EXPECT_EQ('e', str.CharAt(16));
- str = script.Source();
- EXPECT_EQ(22, str.Length());
- EXPECT_EQ('T', str.CharAt(0));
- EXPECT_EQ('n', str.CharAt(10));
- EXPECT_EQ('.', str.CharAt(21));
+ script.SetLocationOffset(offset, 10);
+ auto& str = String::Handle(zone);
+ str = script.GetLine(offset + 1);
+ EXPECT_STREQ("", str.ToCString());
+ str = script.GetLine(offset + 2);
+ EXPECT_STREQ("", str.ToCString());
+ str = script.GetLine(offset + 3);
+ EXPECT_STREQ("xyz", str.ToCString());
+ str = script.GetLine(offset + 4);
+ EXPECT_STREQ("abc", str.ToCString());
+ str = script.GetLine(offset + 5);
+ EXPECT_STREQ("", str.ToCString());
+ str = script.GetLine(offset + 6);
+ EXPECT_STREQ("", str.ToCString());
+ str = script.GetLine(offset + 7);
+ EXPECT_STREQ("def", str.ToCString());
+ str = script.GetLine(offset + 8);
+ EXPECT_STREQ("ghi", str.ToCString());
+ // Lines not in the range of (1-based) line indices in the source should
+ // return the empty string.
+ str = script.GetLine(-500);
+ EXPECT_STREQ("", str.ToCString());
+ str = script.GetLine(0);
+ EXPECT_STREQ("", str.ToCString());
+ if (offset > 0) {
+ str = script.GetLine(1); // Absolute, not relative to offset.
+ EXPECT_STREQ("", str.ToCString());
+ }
+ if (offset > 2) {
+ str = script.GetLine(3); // Absolute, not relative to offset.
+ EXPECT_STREQ("", str.ToCString());
+ }
+ str = script.GetLine(offset);
+ EXPECT_STREQ("", str.ToCString());
+ str = script.GetLine(offset + 9);
+ EXPECT_STREQ("", str.ToCString());
+ str = script.GetLine(offset + 10000);
+ EXPECT_STREQ("", str.ToCString());
+}
+
+ISOLATE_UNIT_TEST_CASE(Script) {
+ {
+ const char* url_chars = "builtin:test-case";
+ const char* source_chars = "This will not compile.";
+ const String& url = String::Handle(String::New(url_chars));
+ const String& source = String::Handle(String::New(source_chars));
+ const Script& script = Script::Handle(Script::New(url, source));
+ EXPECT(!script.IsNull());
+ EXPECT(script.IsScript());
+ String& str = String::Handle(script.url());
+ EXPECT_EQ(17, str.Length());
+ EXPECT_EQ('b', str.CharAt(0));
+ EXPECT_EQ(':', str.CharAt(7));
+ EXPECT_EQ('e', str.CharAt(16));
+ str = script.Source();
+ EXPECT_EQ(22, str.Length());
+ EXPECT_EQ('T', str.CharAt(0));
+ EXPECT_EQ('n', str.CharAt(10));
+ EXPECT_EQ('.', str.CharAt(21));
+ }
+
+ CheckLinesWithOffset(Z, 0);
+ CheckLinesWithOffset(Z, 500);
+ CheckLinesWithOffset(Z, 10000);
+
+ {
+ const char* url_chars = "";
+ // Single line, no terminators.
+ const char* source_chars = "abc";
+ const String& url = String::Handle(String::New(url_chars));
+ const String& source = String::Handle(String::New(source_chars));
+ const Script& script = Script::Handle(Script::New(url, source));
+ EXPECT(!script.IsNull());
+ EXPECT(script.IsScript());
+ auto& str = String::Handle(Z);
+ str = script.GetLine(1);
+ EXPECT_STREQ("abc", str.ToCString());
+ // Lines not in the source should return the empty string.
+ str = script.GetLine(-500);
+ EXPECT_STREQ("", str.ToCString());
+ str = script.GetLine(0);
+ EXPECT_STREQ("", str.ToCString());
+ str = script.GetLine(2);
+ EXPECT_STREQ("", str.ToCString());
+ str = script.GetLine(10000);
+ EXPECT_STREQ("", str.ToCString());
+ }
TransitionVMToNative transition(thread);
const char* kScript = "main() {}";
@@ -3066,10 +3146,9 @@
// Check ICData for unoptimized static calls.
const intptr_t kNumArgsChecked = 0;
- const ICData& scall_icdata =
- ICData::Handle(ICData::New(function, target_name, args_descriptor, 57,
- kNumArgsChecked, ICData::kInstance));
- scall_icdata.AddTarget(target1);
+ const ICData& scall_icdata = ICData::Handle(
+ ICData::NewForStaticCall(function, target1, args_descriptor, 57,
+ kNumArgsChecked, ICData::kInstance));
EXPECT_EQ(target1.raw(), scall_icdata.GetTargetAt(0));
}
diff --git a/tools/VERSION b/tools/VERSION
index 21097be..5c1cbeb 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 12
PATCH 0
-PRERELEASE 80
+PRERELEASE 81
PRERELEASE_PATCH 0
\ No newline at end of file