Version 1.11.0-dev.1.0
svn merge -r 45518:45726 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
git-svn-id: http://dart.googlecode.com/svn/trunk@45728 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/client/tools/buildbot_annotated_steps.py b/client/tools/buildbot_annotated_steps.py
index 32f8579..658e25c 100755
--- a/client/tools/buildbot_annotated_steps.py
+++ b/client/tools/buildbot_annotated_steps.py
@@ -185,20 +185,17 @@
# The buildbot will set a BUILDBOT_JAVA_HOME relative to the dart
# root directory, set JAVA_HOME based on that.
FixJavaHome()
- if name.startswith('dart-editor'):
- # Run the old annotated steps script
- status = ProcessTools('release', name, version)
- elif name.startswith('pub-'):
+ if name.startswith('pub-'):
status = ProcessBot(name, 'pub')
elif name.startswith('vm-android'):
status = ProcessBot(name, 'android')
+ elif name.startswith('dart-sdk'):
+ status = ProcessBot(name, 'dart_sdk')
elif name.startswith('cross') or name.startswith('target'):
status = ProcessBot(name, 'cross-vm',
custom_env=EnvironmentWithoutBotoConfig())
elif name.startswith('linux-distribution-support'):
status = ProcessBot(name, 'linux_distribution_support')
- elif name.startswith('ft'):
- status = ProcessBot(name, 'functional_testing')
elif name.startswith('version-checker'):
status = ProcessBot(name, 'version_checker')
elif name.startswith('dart2js-dump-info'):
diff --git a/dart.gyp b/dart.gyp
index 93d2214..fb973e1 100644
--- a/dart.gyp
+++ b/dart.gyp
@@ -9,11 +9,9 @@
'type': 'none',
'dependencies': [
'analysis_server',
- 'analyzer_java',
'create_sdk',
'dart2js',
'dartanalyzer',
- 'editor',
'packages',
'runtime',
'samples',
@@ -57,13 +55,6 @@
],
},
{
- 'target_name': 'analyzer_java',
- 'type': 'none',
- 'dependencies': [
- 'editor/analyzer_java.gyp:analyzer',
- ],
- },
- {
'target_name': 'dartfmt',
'type': 'none',
'dependencies': [
@@ -78,28 +69,6 @@
],
},
{
- # This is the target that is built on the dart2dart bots.
- # It must depend on anything that is required by dart2dart
- # tests.
- 'target_name': 'dart2dart_bot',
- 'type': 'none',
- 'dependencies': [
- 'create_sdk',
- 'packages',
- ],
- },
- {
- # This is the target that is built on the dartc bots.
- # It must depend on anything that is required by dartc
- # tests.
- 'target_name': 'dartc_bot',
- 'type': 'none',
- 'dependencies': [
- 'create_sdk',
- 'packages',
- ],
- },
- {
# This is the target that is built on the dart2js build bots.
# It must depend on anything that is required by the dart2js
# test suites.
@@ -132,45 +101,6 @@
],
},
{
- 'target_name': 'editor',
- 'type': 'none',
- 'dependencies': [
- 'editor/build/generated/editor_deps.gyp:editor_deps',
-
- # This dependency on create_sdk does not mean that the
- # Editor is rebuilt if the SDK is. It only means that when you build
- # the Editor, you should also build the SDK. If we wanted to
- # make sure that the editor is rebuilt when the SDK is, we
- # should list a *file* in PRODUCT_DIR which the action below
- # uses as input.
- # This is the desired behavior as we would otherwise have to
- # rebuild the editor each time the VM, dart2js, or library
- # code changes.
- 'create_sdk',
- ],
- 'actions': [
- {
- 'action_name': 'create_editor_py',
- 'inputs': [
- 'tools/create_editor.py',
- '<(SHARED_INTERMEDIATE_DIR)/editor_deps/editor.stamp',
- '<!@(["python", "tools/list_files.py", "", "editor/tools/features/'
- 'com.google.dart.tools.deploy.feature_releng"])',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/editor/VERSION',
- ],
- 'action': [
- 'python',
- 'tools/create_editor.py',
- '--out', '<(PRODUCT_DIR)/editor',
- '--build', '<(INTERMEDIATE_DIR)',
- ],
- 'message': 'Creating editor.',
- },
- ],
- },
- {
'target_name': 'samples',
'type': 'none',
'dependencies': [],
diff --git a/pkg/analysis_server/AUTHORS b/pkg/analysis_server/AUTHORS
old mode 100755
new mode 100644
diff --git a/pkg/analysis_server/CHANGELOG.md b/pkg/analysis_server/CHANGELOG.md
old mode 100755
new mode 100644
diff --git a/pkg/analysis_server/CONTRIBUTING.md b/pkg/analysis_server/CONTRIBUTING.md
old mode 100755
new mode 100644
diff --git a/pkg/analysis_server/README.md b/pkg/analysis_server/README.md
old mode 100755
new mode 100644
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index 121227a..b101f37 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -564,7 +564,7 @@
List<CompilationUnit> units = getResolvedCompilationUnits(file);
List<AstNode> nodes = <AstNode>[];
for (CompilationUnit unit in units) {
- AstNode node = new NodeLocator.con1(offset).searchWithin(unit);
+ AstNode node = new NodeLocator(offset).searchWithin(unit);
if (node != null) {
nodes.add(node);
}
@@ -979,7 +979,7 @@
folderMap.forEach((Folder folder, AnalysisContext context) {
List<Source> sourceList = sourceMap[context];
if (sourceList == null) {
- sourceList = Source.EMPTY_ARRAY;
+ sourceList = Source.EMPTY_LIST;
}
context.analysisPriorityOrder = sourceList;
// Schedule the context for analysis so that it has the opportunity to
@@ -1139,7 +1139,7 @@
//
folderMap.forEach((Folder folder, AnalysisContext context) {
AnalysisOptionsImpl options =
- new AnalysisOptionsImpl.con1(context.analysisOptions);
+ new AnalysisOptionsImpl.from(context.analysisOptions);
optionUpdaters.forEach((OptionUpdater optionUpdater) {
optionUpdater(options);
});
@@ -1321,7 +1321,7 @@
context.contentCache = analysisServer.overlayState;
analysisServer.folderMap[folder] = context;
context.sourceFactory = _createSourceFactory(packageUriResolver);
- context.analysisOptions = new AnalysisOptionsImpl.con1(defaultOptions);
+ context.analysisOptions = new AnalysisOptionsImpl.from(defaultOptions);
_onContextsChangedController
.add(new ContextsChangedEvent(added: [context]));
analysisServer.schedulePerformAnalysisOperation(context);
diff --git a/pkg/analysis_server/lib/src/computer/computer_hover.dart b/pkg/analysis_server/lib/src/computer/computer_hover.dart
index ceafb22e..e80a243 100644
--- a/pkg/analysis_server/lib/src/computer/computer_hover.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_hover.dart
@@ -65,7 +65,7 @@
* Returns the computed hover, maybe `null`.
*/
HoverInformation compute() {
- AstNode node = new NodeLocator.con1(_offset).searchWithin(_unit);
+ AstNode node = new NodeLocator(_offset).searchWithin(_unit);
if (node == null) {
return null;
}
diff --git a/pkg/analysis_server/lib/src/operation/operation_analysis.dart b/pkg/analysis_server/lib/src/operation/operation_analysis.dart
index 7f0fe1a..6ac3935 100644
--- a/pkg/analysis_server/lib/src/operation/operation_analysis.dart
+++ b/pkg/analysis_server/lib/src/operation/operation_analysis.dart
@@ -174,7 +174,7 @@
*/
void setCacheSize(AnalysisContext context, int cacheSize) {
AnalysisOptionsImpl options =
- new AnalysisOptionsImpl.con1(context.analysisOptions);
+ new AnalysisOptionsImpl.from(context.analysisOptions);
options.cacheSize = cacheSize;
context.analysisOptions = options;
}
diff --git a/pkg/analysis_server/lib/src/services/completion/import_uri_contributor.dart b/pkg/analysis_server/lib/src/services/completion/import_uri_contributor.dart
index 8551852..0d56e98 100644
--- a/pkg/analysis_server/lib/src/services/completion/import_uri_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/import_uri_contributor.dart
@@ -137,7 +137,9 @@
String prefix = 'package:$pkgName/';
_addSuggestion(prefix);
for (Folder folder in folders) {
- _addPackageFolderSuggestions(partial, prefix, folder);
+ if (folder.exists) {
+ _addPackageFolderSuggestions(partial, prefix, folder);
+ }
}
});
}
diff --git a/pkg/analysis_server/lib/src/services/completion/keyword_contributor.dart b/pkg/analysis_server/lib/src/services/completion/keyword_contributor.dart
index 5414bcc..d4379d9 100644
--- a/pkg/analysis_server/lib/src/services/completion/keyword_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/keyword_contributor.dart
@@ -52,6 +52,23 @@
@override
visitBlock(Block node) {
+ if (entity is ExpressionStatement) {
+ Expression expression = (entity as ExpressionStatement).expression;
+ if (expression is SimpleIdentifier) {
+ Token token = expression.token;
+ Token previous = token.previous;
+ if (previous.isSynthetic) {
+ previous = previous.previous;
+ }
+ Token next = token.next;
+ if (next.isSynthetic) {
+ next = next.next;
+ }
+ if (previous.lexeme == ')' && next.lexeme == '{') {
+ _addSuggestion2(ASYNC);
+ }
+ }
+ }
_addStatementKeywords(node);
}
@@ -128,6 +145,11 @@
}
@override
+ visitExpression(Expression node) {
+ _addExpressionKeywords(node);
+ }
+
+ @override
visitExpressionFunctionBody(ExpressionFunctionBody node) {
if (entity == node.expression) {
_addExpressionKeywords(node);
@@ -146,7 +168,9 @@
@override
visitFunctionExpression(FunctionExpression node) {
if (entity == node.body) {
- _addSuggestion2(ASYNC, relevance: DART_RELEVANCE_HIGH);
+ if (!node.body.isAsynchronous) {
+ _addSuggestion2(ASYNC, relevance: DART_RELEVANCE_HIGH);
+ }
if (node.body is EmptyFunctionBody &&
node.parent is FunctionDeclaration &&
node.parent.parent is CompilationUnit) {
@@ -199,6 +223,25 @@
}
@override
+ visitPrefixedIdentifier(PrefixedIdentifier node) {
+ if (entity != node.identifier) {
+ _addExpressionKeywords(node);
+ }
+ }
+
+ @override
+ visitReturnStatement(ReturnStatement node) {
+ if (entity == node.expression) {
+ _addExpressionKeywords(node);
+ }
+ }
+
+ @override
+ visitStringLiteral(StringLiteral node) {
+ // ignored
+ }
+
+ @override
visitSwitchStatement(SwitchStatement node) {
if (entity == node.expression) {
_addExpressionKeywords(node);
diff --git a/pkg/analysis_server/lib/src/services/completion/prefixed_element_contributor.dart b/pkg/analysis_server/lib/src/services/completion/prefixed_element_contributor.dart
index 296ca24..5abb208 100644
--- a/pkg/analysis_server/lib/src/services/completion/prefixed_element_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/prefixed_element_contributor.dart
@@ -73,7 +73,20 @@
}
}
if (node is Expression) {
- InterfaceTypeSuggestionBuilder.suggestionsFor(request, node.bestType);
+ String containingMethodName;
+ bool isSuper = node is SuperExpression;
+ if (isSuper) {
+ MethodDeclaration containingMethod =
+ node.getAncestor((p) => p is MethodDeclaration);
+ if (containingMethod != null) {
+ SimpleIdentifier id = containingMethod.name;
+ if (id != null) {
+ containingMethodName = id.name;
+ }
+ }
+ }
+ InterfaceTypeSuggestionBuilder.suggestionsFor(request, node.bestType,
+ isSuper: isSuper, containingMethodName: containingMethodName);
return new Future.value(true);
}
return new Future.value(false);
diff --git a/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart
index 80ddd85..07ee074 100644
--- a/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart
+++ b/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart
@@ -294,7 +294,7 @@
* Add a suggestion based upon the given element, provided that it is not
* shadowed by a previously added suggestion.
*/
- void addSuggestion(Element element) {
+ void addSuggestion(Element element, {int relevance: DART_RELEVANCE_DEFAULT}) {
if (element.isPrivate) {
LibraryElement elementLibrary = element.library;
LibraryElement unitLibrary = request.unit.element.library;
@@ -339,22 +339,35 @@
assert(false);
return;
}
- CompletionSuggestion suggestion = createSuggestion(element, kind: kind);
+ CompletionSuggestion suggestion =
+ createSuggestion(element, kind: kind, relevance: relevance);
if (suggestion != null) {
request.addSuggestion(suggestion);
}
}
- void _buildSuggestions(InterfaceType type, LibraryElement library) {
+ void _buildSuggestions(InterfaceType type, LibraryElement library,
+ bool isSuper, String containingMethodName) {
+ if (isSuper) {
+ // Suggest members from superclass if the target is "super"
+ type = type.superclass;
+ if (type == null) {
+ return;
+ }
+ }
// Visit all of the types in the class hierarchy, collecting possible
// completions. If multiple elements are found that complete to the same
// identifier, addSuggestion will discard all but the first (with a few
// exceptions to handle getter/setter pairs).
- for (InterfaceType targetType in _getTypeOrdering(type)) {
+ List<InterfaceType> types = _getTypeOrdering(type);
+ for (InterfaceType targetType in types) {
for (MethodElement method in targetType.methods) {
// Exclude static methods when completion on an instance
if (!method.isStatic) {
- addSuggestion(method);
+ addSuggestion(method,
+ relevance: method.name == containingMethodName
+ ? DART_RELEVANCE_HIGH
+ : DART_RELEVANCE_DEFAULT);
}
}
for (PropertyAccessorElement propertyAccessor in targetType.accessors) {
@@ -412,7 +425,8 @@
/**
* Add suggestions for the visible members in the given interface
*/
- static void suggestionsFor(DartCompletionRequest request, DartType type) {
+ static void suggestionsFor(DartCompletionRequest request, DartType type,
+ {bool isSuper: false, String containingMethodName: null}) {
CompilationUnit compilationUnit =
request.target.containingNode.getAncestor((n) => n is CompilationUnit);
LibraryElement library = compilationUnit.element.library;
@@ -421,7 +435,7 @@
}
if (type is InterfaceType) {
return new InterfaceTypeSuggestionBuilder(request)._buildSuggestions(
- type, library);
+ type, library, isSuper, containingMethodName);
}
}
}
diff --git a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
index dbb8255..5d03c83 100644
--- a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
@@ -72,8 +72,7 @@
List<Assist> compute() {
utils = new CorrectionUtils(unit);
- node =
- new NodeLocator.con2(selectionOffset, selectionEnd).searchWithin(unit);
+ node = new NodeLocator(selectionOffset, selectionEnd).searchWithin(unit);
if (node == null) {
return assists;
}
@@ -1093,7 +1092,7 @@
return;
}
int declOffset = element.nameOffset;
- AstNode declNode = new NodeLocator.con1(declOffset).searchWithin(unit);
+ AstNode declNode = new NodeLocator(declOffset).searchWithin(unit);
if (declNode != null &&
declNode.parent is VariableDeclaration &&
(declNode.parent as VariableDeclaration).name == declNode &&
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 9ae3c0e..25dfa1c 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -107,8 +107,8 @@
errorLength = error.length;
errorEnd = errorOffset + errorLength;
errorRange = new SourceRange(errorOffset, errorLength);
- node = new NodeLocator.con1(errorOffset).searchWithin(unit);
- coveredNode = new NodeLocator.con2(errorOffset, errorOffset + errorLength)
+ node = new NodeLocator(errorOffset).searchWithin(unit);
+ coveredNode = new NodeLocator(errorOffset, errorOffset + errorLength)
.searchWithin(unit);
// analyze ErrorCode
ErrorCode errorCode = error.errorCode;
@@ -813,7 +813,7 @@
DartType parameterType = parameterElement.type;
if (parameterType is InterfaceType && parameterType.isDartCoreFunction) {
ExecutableElement element = new MethodElementImpl('', -1);
- parameterType = new FunctionTypeImpl.con1(element);
+ parameterType = new FunctionTypeImpl(element);
}
if (parameterType is! FunctionType) {
return;
diff --git a/pkg/analysis_server/lib/src/services/correction/util.dart b/pkg/analysis_server/lib/src/services/correction/util.dart
index ba7a858..67ab4db 100644
--- a/pkg/analysis_server/lib/src/services/correction/util.dart
+++ b/pkg/analysis_server/lib/src/services/correction/util.dart
@@ -442,7 +442,7 @@
classElement.getAncestor((e) => e is CompilationUnitElement);
CompilationUnit unit = getParsedUnit(unitElement);
int offset = classElement.nameOffset;
- AstNode classNameNode = new NodeLocator.con1(offset).searchWithin(unit);
+ AstNode classNameNode = new NodeLocator(offset).searchWithin(unit);
if (classElement.isEnum) {
return classNameNode.getAncestor((node) => node is EnumDeclaration);
} else {
@@ -642,8 +642,7 @@
/**
* Returns the [AstNode] that encloses the given offset.
*/
- AstNode findNode(int offset) =>
- new NodeLocator.con1(offset).searchWithin(unit);
+ AstNode findNode(int offset) => new NodeLocator(offset).searchWithin(unit);
/**
* Returns names of elements that might conflict with a new local variable
diff --git a/pkg/analysis_server/lib/src/services/generated/util.dart b/pkg/analysis_server/lib/src/services/generated/util.dart
index 0650257..31a15c3 100644
--- a/pkg/analysis_server/lib/src/services/generated/util.dart
+++ b/pkg/analysis_server/lib/src/services/generated/util.dart
@@ -83,8 +83,7 @@
*/
AstNode get coveredNode {
if (_coveredNode == null) {
- NodeLocator locator =
- new NodeLocator.con2(selectionOffset, selectionOffset);
+ NodeLocator locator = new NodeLocator(selectionOffset, selectionOffset);
_coveredNode = locator.searchWithin(compilationUnit);
}
return _coveredNode;
@@ -95,8 +94,8 @@
*/
AstNode get coveringNode {
if (_coveringNode == null) {
- NodeLocator locator = new NodeLocator.con2(
- selectionOffset, selectionOffset + selectionLength);
+ NodeLocator locator =
+ new NodeLocator(selectionOffset, selectionOffset + selectionLength);
_coveringNode = locator.searchWithin(compilationUnit);
}
return _coveringNode;
@@ -935,8 +934,7 @@
/**
* @return the [AstNode] that encloses the given offset.
*/
- AstNode findNode(int offset) =>
- new NodeLocator.con1(offset).searchWithin(unit);
+ AstNode findNode(int offset) => new NodeLocator(offset).searchWithin(unit);
/**
* TODO(scheglov) replace with nodes once there will be [CompilationUnit.comments].
diff --git a/pkg/analysis_server/lib/src/services/index/index.dart b/pkg/analysis_server/lib/src/services/index/index.dart
index 4582ac8..00bfeab 100644
--- a/pkg/analysis_server/lib/src/services/index/index.dart
+++ b/pkg/analysis_server/lib/src/services/index/index.dart
@@ -224,7 +224,7 @@
/**
* An empty array of locations.
*/
- static const List<LocationImpl> EMPTY_ARRAY = const <LocationImpl>[];
+ static const List<LocationImpl> EMPTY_LIST = const <LocationImpl>[];
/**
* The element containing this location.
diff --git a/pkg/analysis_server/lib/src/services/index/store/split_store.dart b/pkg/analysis_server/lib/src/services/index/store/split_store.dart
index bde1d08..594e18d 100644
--- a/pkg/analysis_server/lib/src/services/index/store/split_store.dart
+++ b/pkg/analysis_server/lib/src/services/index/store/split_store.dart
@@ -283,7 +283,7 @@
// find LocationData(s)
List<LocationData> locationDatas = _relations[key];
if (locationDatas == null) {
- return LocationImpl.EMPTY_ARRAY;
+ return LocationImpl.EMPTY_LIST;
}
// convert to Location(s)
List<LocationImpl> locations = <LocationImpl>[];
@@ -733,7 +733,7 @@
Future<List<LocationImpl>> locationsFuture = nodeFuture.then((node) {
if (node == null) {
// TODO(scheglov) remove node
- return LocationImpl.EMPTY_ARRAY;
+ return LocationImpl.EMPTY_LIST;
}
return node.getRelationships(element, relationship);
});
diff --git a/pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart b/pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart
index e0182cc..22adfa3 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart
@@ -124,7 +124,7 @@
{
CompilationUnit refUnit = refElement.unit;
AstNode refNode =
- new NodeLocator.con1(refRange.offset).searchWithin(refUnit);
+ new NodeLocator(refRange.offset).searchWithin(refUnit);
invocation = refNode.getAncestor((node) => node is MethodInvocation);
}
// we need invocation
diff --git a/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart
index 8d7782c..3acc982 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart
@@ -319,7 +319,7 @@
List<AstNode> _findNodes(List<SourceRange> ranges) {
List<AstNode> nodes = <AstNode>[];
for (SourceRange range in ranges) {
- AstNode node = new NodeLocator.con1(range.offset).searchWithin(unit);
+ AstNode node = new NodeLocator(range.offset).searchWithin(unit);
nodes.add(node);
}
return nodes;
@@ -402,7 +402,7 @@
AstNode enclosingFunction;
{
AstNode selectionNode =
- new NodeLocator.con1(selectionOffset).searchWithin(unit);
+ new NodeLocator(selectionOffset).searchWithin(unit);
enclosingFunction = getEnclosingExecutableNode(selectionNode);
}
// visit function
diff --git a/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
index 2f85e83..be9162d 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
@@ -125,7 +125,7 @@
@override
String get refactoringName {
- AstNode node = new NodeLocator.con1(selectionOffset).searchWithin(unit);
+ AstNode node = new NodeLocator(selectionOffset).searchWithin(unit);
if (node != null &&
node.getAncestor((node) => node is ClassDeclaration) != null) {
return 'Extract Method';
diff --git a/pkg/analysis_server/lib/src/services/refactoring/inline_local.dart b/pkg/analysis_server/lib/src/services/refactoring/inline_local.dart
index 350517a..8ae9b94 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/inline_local.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/inline_local.dart
@@ -69,7 +69,7 @@
RefactoringStatus result = new RefactoringStatus();
// prepare variable
{
- AstNode offsetNode = new NodeLocator.con1(offset).searchWithin(unit);
+ AstNode offsetNode = new NodeLocator(offset).searchWithin(unit);
if (offsetNode is SimpleIdentifier) {
Element element = offsetNode.staticElement;
if (element is LocalVariableElement) {
diff --git a/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart b/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
index fb8791f..f3100ef 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
@@ -324,7 +324,7 @@
RefactoringStatus fatalStatus = new RefactoringStatus.fatal(
'Method declaration or reference must be selected to activate this refactoring.');
// prepare selected SimpleIdentifier
- AstNode node = new NodeLocator.con1(offset).searchWithin(unit);
+ AstNode node = new NodeLocator(offset).searchWithin(unit);
if (node is! SimpleIdentifier) {
return fatalStatus;
}
diff --git a/pkg/analysis_server/lib/src/services/refactoring/rename_import.dart b/pkg/analysis_server/lib/src/services/refactoring/rename_import.dart
index 6f910a9..608eb73 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/rename_import.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/rename_import.dart
@@ -101,7 +101,7 @@
SimpleIdentifier _getInterpolationIdentifier(SourceReference reference) {
Source source = reference.element.source;
CompilationUnit unit = context.parseCompilationUnit(source);
- NodeLocator nodeLocator = new NodeLocator.con1(reference.range.offset);
+ NodeLocator nodeLocator = new NodeLocator(reference.range.offset);
AstNode node = nodeLocator.searchWithin(unit);
if (node is SimpleIdentifier) {
AstNode parent = node.parent;
diff --git a/pkg/analysis_server/test/abstract_single_unit.dart b/pkg/analysis_server/test/abstract_single_unit.dart
index 6d0e7a0..757c819 100644
--- a/pkg/analysis_server/test/abstract_single_unit.dart
+++ b/pkg/analysis_server/test/abstract_single_unit.dart
@@ -49,7 +49,7 @@
}
AstNode findNodeAtOffset(int offset, [Predicate<AstNode> predicate]) {
- AstNode result = new NodeLocator.con1(offset).searchWithin(testUnit);
+ AstNode result = new NodeLocator(offset).searchWithin(testUnit);
if (result != null && predicate != null) {
result = result.getAncestor(predicate);
}
diff --git a/pkg/analysis_server/test/completion_test.dart b/pkg/analysis_server/test/completion_test.dart
index 1101d88..0d96743 100644
--- a/pkg/analysis_server/test/completion_test.dart
+++ b/pkg/analysis_server/test/completion_test.dart
@@ -1421,7 +1421,7 @@
main() {
super.!1
}
-}''', <String>["1+fa", "1-fb", "1+ma", "1-mb"], failingTests: '1');
+}''', <String>["1+fa", "1-fb", "1+ma", "1-mb"]);
buildTests('testCompletion_superConstructorInvocation_noNamePrefix', '''
class A {
diff --git a/pkg/analysis_server/test/mocks.dart b/pkg/analysis_server/test/mocks.dart
index 94bc8c6..1aa8f47 100644
--- a/pkg/analysis_server/test/mocks.dart
+++ b/pkg/analysis_server/test/mocks.dart
@@ -21,7 +21,6 @@
import 'package:analyzer/src/generated/element.dart';
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/source.dart';
-import 'package:matcher/matcher.dart';
import 'package:typed_mock/typed_mock.dart';
import 'package:unittest/unittest.dart';
diff --git a/pkg/analysis_server/test/services/completion/completion_test_util.dart b/pkg/analysis_server/test/services/completion/completion_test_util.dart
index 3e44f63..6e76a4e 100644
--- a/pkg/analysis_server/test/services/completion/completion_test_util.dart
+++ b/pkg/analysis_server/test/services/completion/completion_test_util.dart
@@ -634,7 +634,7 @@
CompletionSuggestion assertSuggestInvocationMethod(
String name, String declaringType, String returnType,
- [int relevance = DART_RELEVANCE_DEFAULT]) {
+ {int relevance: DART_RELEVANCE_DEFAULT}) {
if (contributor is PrefixedElementContributor) {
return assertSuggestMethod(name, declaringType, returnType,
relevance: relevance);
diff --git a/pkg/analysis_server/test/services/completion/import_uri_contributor_test.dart b/pkg/analysis_server/test/services/completion/import_uri_contributor_test.dart
index bfea35a..e584c4d 100644
--- a/pkg/analysis_server/test/services/completion/import_uri_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/import_uri_contributor_test.dart
@@ -164,6 +164,18 @@
csKind: CompletionSuggestionKind.IMPORT);
}
+ test_import_package_missing_lib() {
+ var pkgSrc = addPackageSource('bar', 'bar.dart', 'library bar;');
+ provider.deleteFolder(dirname(pkgSrc.fullName));
+ addTestSource('import "p^" class');
+ computeFast();
+ expect(request.replacementOffset, completionOffset - 1);
+ expect(request.replacementLength, 1);
+ assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
+ assertSuggest('package:bar/', csKind: CompletionSuggestionKind.IMPORT);
+ assertNotSuggested('package:bar/bar.dart');
+ }
+
test_outside_import() {
addTestSource('import ^"d" import');
computeFast();
diff --git a/pkg/analysis_server/test/services/completion/keyword_contributor_test.dart b/pkg/analysis_server/test/services/completion/keyword_contributor_test.dart
index 46940bf..9569141 100644
--- a/pkg/analysis_server/test/services/completion/keyword_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/keyword_contributor_test.dart
@@ -258,6 +258,25 @@
relevance: DART_RELEVANCE_HIGH);
}
+ test_anonymous_function_async() {
+ addTestSource('main() {foo(() ^ {}}}');
+ expect(computeFast(), isTrue);
+ assertSuggestKeywords([],
+ pseudoKeywords: ['async'], relevance: DART_RELEVANCE_HIGH);
+ }
+
+ test_anonymous_function_async2() {
+ addTestSource('main() {foo(() a^ {}}}');
+ expect(computeFast(), isTrue);
+ assertSuggestKeywords(STMT_START_OUTSIDE_CLASS, pseudoKeywords: ['async']);
+ }
+
+ test_anonymous_function_async3() {
+ addTestSource('main() {foo(() async ^ {}}}');
+ expect(computeFast(), isTrue);
+ assertSuggestKeywords([]);
+ }
+
test_argument() {
addTestSource('main() {foo(^);}');
expect(computeFast(), isTrue);
@@ -880,6 +899,24 @@
assertSuggestKeywords(EXPRESSION_START_INSTANCE, pseudoKeywords: ['await']);
}
+ test_method_body_expression1() {
+ addTestSource('class A { foo() {return b == true ? ^}}');
+ expect(computeFast(), isTrue);
+ assertSuggestKeywords(EXPRESSION_START_INSTANCE);
+ }
+
+ test_method_body_expression2() {
+ addTestSource('class A { foo() {return b == true ? 1 : ^}}');
+ expect(computeFast(), isTrue);
+ assertSuggestKeywords(EXPRESSION_START_INSTANCE);
+ }
+
+ test_method_body_return() {
+ addTestSource('class A { foo() {return ^}}');
+ expect(computeFast(), isTrue);
+ assertSuggestKeywords(EXPRESSION_START_INSTANCE);
+ }
+
test_method_param() {
addTestSource('class A { foo(^) {});}');
expect(computeFast(), isTrue);
diff --git a/pkg/analysis_server/test/services/completion/prefixed_element_contributor_test.dart b/pkg/analysis_server/test/services/completion/prefixed_element_contributor_test.dart
index 5c4bfc8..8015d8f 100644
--- a/pkg/analysis_server/test/services/completion/prefixed_element_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/prefixed_element_contributor_test.dart
@@ -523,4 +523,46 @@
assertSuggestMethod('f', 'Base', 'void');
});
}
+
+ test_super() {
+ // SimpleIdentifier MethodInvocation ExpressionStatement
+ addTestSource('''
+class C3 {
+ int fi3;
+ static int fs3;
+ m() {}
+ mi3() {}
+ static ms3() {}
+}
+class C2 {
+ int fi2;
+ static int fs2;
+ m() {}
+ mi2() {}
+ static ms2() {}
+}
+class C1 extends C2 implements C3 {
+ int fi1;
+ static int fs1;
+ m() {super.^}
+ mi1() {}
+ static ms1() {}
+}''');
+ return computeFull((bool result) {
+ assertNotSuggested('fi1');
+ assertNotSuggested('fs1');
+ assertNotSuggested('mi1');
+ assertNotSuggested('ms1');
+ assertSuggestInvocationField('fi2', 'int');
+ assertNotSuggested('fs2');
+ assertSuggestInvocationMethod('mi2', 'C2', null);
+ assertNotSuggested('ms2');
+ assertSuggestInvocationMethod('m', 'C2', null,
+ relevance: DART_RELEVANCE_HIGH);
+ assertNotSuggested('fi3');
+ assertNotSuggested('fs3');
+ assertNotSuggested('mi3');
+ assertNotSuggested('ms3');
+ });
+ }
}
diff --git a/pkg/analysis_server/test/services/correction/source_range_test.dart b/pkg/analysis_server/test/services/correction/source_range_test.dart
index 41bb641..4754b56 100644
--- a/pkg/analysis_server/test/services/correction/source_range_test.dart
+++ b/pkg/analysis_server/test/services/correction/source_range_test.dart
@@ -46,7 +46,7 @@
void test_rangeError() {
AnalysisError error =
- new AnalysisError.con2(null, 10, 5, ParserErrorCode.CONST_CLASS, []);
+ new AnalysisError(null, 10, 5, ParserErrorCode.CONST_CLASS, []);
expect(rangeError(error), new SourceRange(10, 5));
}
diff --git a/pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart b/pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart
index 3e73a39..513fbd8 100644
--- a/pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart
+++ b/pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart
@@ -5,9 +5,7 @@
library analysis_server.test.src.utilities.change_builder_dart_test;
import 'package:analysis_server/src/protocol.dart';
-import 'package:analysis_server/src/utilities/change_builder_core.dart';
import 'package:analysis_server/src/utilities/change_builder_dart.dart';
-import 'package:analysis_server/utilities/change_builder_core.dart';
import 'package:analysis_server/utilities/change_builder_dart.dart';
import 'package:analyzer/src/generated/ast.dart';
import 'package:analyzer/src/generated/source.dart';
@@ -15,7 +13,6 @@
import 'package:unittest/unittest.dart';
import '../../abstract_context.dart';
-import '../../domain_execution_test.dart';
main() {
groupSep = ' | ';
diff --git a/pkg/analysis_server/tool/spec/codegen_analysis_server.dart b/pkg/analysis_server/tool/spec/codegen_analysis_server.dart
index 497460a..db90acc 100644
--- a/pkg/analysis_server/tool/spec/codegen_analysis_server.dart
+++ b/pkg/analysis_server/tool/spec/codegen_analysis_server.dart
@@ -12,7 +12,7 @@
import 'codegen_tools.dart';
final GeneratedFile target = javaGeneratedFile(
- '../../../../editor/tools/plugins/com.google.dart.server/src/com/google/dart/server/generated/AnalysisServer.java',
+ 'generated/java/AnalysisServer.java',
(Api api) => new CodegenAnalysisServer(api));
/**
diff --git a/pkg/analysis_server/tool/spec/codegen_java_types.dart b/pkg/analysis_server/tool/spec/codegen_java_types.dart
index 16bfade..b6915b1 100644
--- a/pkg/analysis_server/tool/spec/codegen_java_types.dart
+++ b/pkg/analysis_server/tool/spec/codegen_java_types.dart
@@ -15,8 +15,7 @@
import 'from_html.dart';
import 'implied_types.dart';
-final String pathToGenTypes =
- '../../../../editor/tools/plugins/com.google.dart.server/src/com/google/dart/server/generated/types/';
+final String pathToGenTypes = 'generated/java/types/';
final GeneratedDirectory targetDir = new GeneratedDirectory(pathToGenTypes, () {
Api api = readApi();
diff --git a/pkg/analysis_server/tool/spec/generated/java/AnalysisServer.java b/pkg/analysis_server/tool/spec/generated/java/AnalysisServer.java
new file mode 100644
index 0000000..2f39f5e
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/AnalysisServer.java
@@ -0,0 +1,520 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated;
+
+import com.google.dart.server.*;
+import com.google.dart.server.generated.types.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * The interface {@code AnalysisServer} defines the behavior of objects that interface to an
+ * analysis server.
+ *
+ * @coverage dart.server
+ */
+public interface AnalysisServer {
+
+ /**
+ * Add the given listener to the list of listeners that will receive notification when new
+ * analysis results become available.
+ *
+ * @param listener the listener to be added
+ */
+ public void addAnalysisServerListener(AnalysisServerListener listener);
+
+ /**
+ * Add the given listener to the list of listeners that will receive notification when the server
+ * is not active
+ *
+ * @param listener the listener to be added
+ */
+ public void addStatusListener(AnalysisServerStatusListener listener);
+
+ /**
+ * {@code analysis.getErrors}
+ *
+ * Return the errors associated with the given file. If the errors for the given file have not yet
+ * been computed, or the most recently computed errors for the given file are out of date, then the
+ * response for this request will be delayed until they have been computed. If some or all of the
+ * errors for the file cannot be computed, then the subset of the errors that can be computed will
+ * be returned and the response will contain an error to indicate why the errors could not be
+ * computed. If the content of the file changes after this request was received but before a
+ * response could be sent, then an error of type CONTENT_MODIFIED will be generated.
+ *
+ * This request is intended to be used by clients that cannot asynchronously apply updated error
+ * information. Clients that can apply error information as it becomes available should use the
+ * information provided by the 'analysis.errors' notification.
+ *
+ * If a request is made for a file which does not exist, or which is not currently subject to
+ * analysis (e.g. because it is not associated with any analysis root specified to
+ * analysis.setAnalysisRoots), an error of type GET_ERRORS_INVALID_FILE will be generated.
+ *
+ * @param file The file for which errors are being requested.
+ */
+ public void analysis_getErrors(String file, GetErrorsConsumer consumer);
+
+ /**
+ * {@code analysis.getHover}
+ *
+ * Return the hover information associate with the given location. If some or all of the hover
+ * information is not available at the time this request is processed the information will be
+ * omitted from the response.
+ *
+ * @param file The file in which hover information is being requested.
+ * @param offset The offset for which hover information is being requested.
+ */
+ public void analysis_getHover(String file, int offset, GetHoverConsumer consumer);
+
+ /**
+ * {@code analysis.getLibraryDependencies}
+ *
+ * Return library dependency information for use in client-side indexing and package URI
+ * resolution.
+ */
+ public void analysis_getLibraryDependencies(GetLibraryDependenciesConsumer consumer);
+
+ /**
+ * {@code analysis.getNavigation}
+ *
+ * Return the navigation information associated with the given region of the given file. If the
+ * navigation information for the given file has not yet been computed, or the most recently
+ * computed navigation information for the given file is out of date, then the response for this
+ * request will be delayed until it has been computed. If the content of the file changes after
+ * this request was received but before a response could be sent, then an error of type
+ * CONTENT_MODIFIED will be generated.
+ *
+ * If a navigation region overlaps (but extends either before or after) the given region of the
+ * file it will be included in the result. This means that it is theoretically possible to get the
+ * same navigation region in response to multiple requests. Clients can avoid this by always
+ * choosing a region that starts at the beginning of a line and ends at the end of a (possibly
+ * different) line in the file.
+ *
+ * @param file The file in which navigation information is being requested.
+ * @param offset The offset of the region for which navigation information is being requested.
+ * @param length The length of the region for which navigation information is being requested.
+ */
+ public void analysis_getNavigation(String file, int offset, int length, GetNavigationConsumer consumer);
+
+ /**
+ * {@code analysis.reanalyze}
+ *
+ * Force the re-analysis of everything contained in the specified analysis roots. This will cause
+ * all previously computed analysis results to be discarded and recomputed, and will cause all
+ * subscribed notifications to be re-sent.
+ *
+ * If no analysis roots are provided, then all current analysis roots will be re-analyzed. If an
+ * empty list of analysis roots is provided, then nothing will be re-analyzed. If the list contains
+ * one or more paths that are not currently analysis roots, then an error of type
+ * INVALID_ANALYSIS_ROOT will be generated.
+ *
+ * @param roots A list of the analysis roots that are to be re-analyzed.
+ */
+ public void analysis_reanalyze(List<String> roots);
+
+ /**
+ * {@code analysis.setAnalysisRoots}
+ *
+ * Sets the root paths used to determine which files to analyze. The set of files to be analyzed
+ * are all of the files in one of the root paths that are not either explicitly or implicitly
+ * excluded. A file is explicitly excluded if it is in one of the excluded paths. A file is
+ * implicitly excluded if it is in a subdirectory of one of the root paths where the name of the
+ * subdirectory starts with a period (that is, a hidden directory).
+ *
+ * Note that this request determines the set of requested analysis roots. The actual set of
+ * analysis roots at any given time is the intersection of this set with the set of files and
+ * directories actually present on the filesystem. When the filesystem changes, the actual set of
+ * analysis roots is automatically updated, but the set of requested analysis roots is unchanged.
+ * This means that if the client sets an analysis root before the root becomes visible to server in
+ * the filesystem, there is no error; once the server sees the root in the filesystem it will start
+ * analyzing it. Similarly, server will stop analyzing files that are removed from the file system
+ * but they will remain in the set of requested roots.
+ *
+ * If an included path represents a file, then server will look in the directory containing the
+ * file for a pubspec.yaml file. If none is found, then the parents of the directory will be
+ * searched until such a file is found or the root of the file system is reached. If such a file is
+ * found, it will be used to resolve package: URI’s within the file.
+ *
+ * @param included A list of the files and directories that should be analyzed.
+ * @param excluded A list of the files and directories within the included directories that should
+ * not be analyzed.
+ * @param packageRoots A mapping from source directories to target directories that should override
+ * the normal package: URI resolution mechanism. The analyzer will behave as though each
+ * source directory in the map contains a special pubspec.yaml file which resolves any
+ * package: URI to the corresponding path within the target directory. The effect is the
+ * same as specifying the target directory as a "--package_root" parameter to the Dart VM
+ * when executing any Dart file inside the source directory. Files in any directories that
+ * are not overridden by this mapping have their package: URI's resolved using the normal
+ * pubspec.yaml mechanism. If this field is absent, or the empty map is specified, that
+ * indicates that the normal pubspec.yaml mechanism should always be used.
+ */
+ public void analysis_setAnalysisRoots(List<String> included, List<String> excluded, Map<String, String> packageRoots);
+
+ /**
+ * {@code analysis.setPriorityFiles}
+ *
+ * Set the priority files to the files in the given list. A priority file is a file that is given
+ * priority when scheduling which analysis work to do first. The list typically contains those
+ * files that are visible to the user and those for which analysis results will have the biggest
+ * impact on the user experience. The order of the files within the list is significant: the first
+ * file will be given higher priority than the second, the second higher priority than the third,
+ * and so on.
+ *
+ * Note that this request determines the set of requested priority files. The actual set of
+ * priority files is the intersection of the requested set of priority files with the set of files
+ * currently subject to analysis. (See analysis.setSubscriptions for a description of files that
+ * are subject to analysis.)
+ *
+ * If a requested priority file is a directory it is ignored, but remains in the set of requested
+ * priority files so that if it later becomes a file it can be included in the set of actual
+ * priority files.
+ *
+ * @param files The files that are to be a priority for analysis.
+ */
+ public void analysis_setPriorityFiles(List<String> files);
+
+ /**
+ * {@code analysis.setSubscriptions}
+ *
+ * Subscribe for services. All previous subscriptions are replaced by the current set of
+ * subscriptions. If a given service is not included as a key in the map then no files will be
+ * subscribed to the service, exactly as if the service had been included in the map with an
+ * explicit empty list of files.
+ *
+ * Note that this request determines the set of requested subscriptions. The actual set of
+ * subscriptions at any given time is the intersection of this set with the set of files currently
+ * subject to analysis. The files currently subject to analysis are the set of files contained
+ * within an actual analysis root but not excluded, plus all of the files transitively reachable
+ * from those files via import, export and part directives. (See analysis.setAnalysisRoots for an
+ * explanation of how the actual analysis roots are determined.) When the actual analysis roots
+ * change, the actual set of subscriptions is automatically updated, but the set of requested
+ * subscriptions is unchanged.
+ *
+ * If a requested subscription is a directory it is ignored, but remains in the set of requested
+ * subscriptions so that if it later becomes a file it can be included in the set of actual
+ * subscriptions.
+ *
+ * It is an error if any of the keys in the map are not valid services. If there is an error, then
+ * the existing subscriptions will remain unchanged.
+ *
+ * @param subscriptions A table mapping services to a list of the files being subscribed to the
+ * service.
+ */
+ public void analysis_setSubscriptions(Map<String, List<String>> subscriptions);
+
+ /**
+ * {@code analysis.updateContent}
+ *
+ * Update the content of one or more files. Files that were previously updated but not included in
+ * this update remain unchanged. This effectively represents an overlay of the filesystem. The
+ * files whose content is overridden are therefore seen by server as being files with the given
+ * content, even if the files do not exist on the filesystem or if the file path represents the
+ * path to a directory on the filesystem.
+ *
+ * @param files A table mapping the files whose content has changed to a description of the content
+ * change.
+ */
+ public void analysis_updateContent(Map<String, Object> files, UpdateContentConsumer consumer);
+
+ /**
+ * {@code analysis.updateOptions}
+ *
+ * Update the options controlling analysis based on the given set of options. Any options that are
+ * not included in the analysis options will not be changed. If there are options in the analysis
+ * options that are not valid, they will be silently ignored.
+ *
+ * @param options The options that are to be used to control analysis.
+ */
+ public void analysis_updateOptions(AnalysisOptions options);
+
+ /**
+ * {@code completion.getSuggestions}
+ *
+ * Request that completion suggestions for the given offset in the given file be returned.
+ *
+ * @param file The file containing the point at which suggestions are to be made.
+ * @param offset The offset within the file at which suggestions are to be made.
+ */
+ public void completion_getSuggestions(String file, int offset, GetSuggestionsConsumer consumer);
+
+ /**
+ * {@code edit.format}
+ *
+ * Format the contents of a single file. The currently selected region of text is passed in so that
+ * the selection can be preserved across the formatting operation. The updated selection will be as
+ * close to matching the original as possible, but whitespace at the beginning or end of the
+ * selected region will be ignored. If preserving selection information is not required, zero (0)
+ * can be specified for both the selection offset and selection length.
+ *
+ * If a request is made for a file which does not exist, or which is not currently subject to
+ * analysis (e.g. because it is not associated with any analysis root specified to
+ * analysis.setAnalysisRoots), an error of type FORMAT_INVALID_FILE will be generated. If the
+ * source contains syntax errors, an error of type FORMAT_WITH_ERRORS will be generated.
+ *
+ * @param file The file containing the code to be formatted.
+ * @param selectionOffset The offset of the current selection in the file.
+ * @param selectionLength The length of the current selection in the file.
+ */
+ public void edit_format(String file, int selectionOffset, int selectionLength, FormatConsumer consumer);
+
+ /**
+ * {@code edit.getAssists}
+ *
+ * Return the set of assists that are available at the given location. An assist is distinguished
+ * from a refactoring primarily by the fact that it affects a single file and does not require user
+ * input in order to be performed.
+ *
+ * @param file The file containing the code for which assists are being requested.
+ * @param offset The offset of the code for which assists are being requested.
+ * @param length The length of the code for which assists are being requested.
+ */
+ public void edit_getAssists(String file, int offset, int length, GetAssistsConsumer consumer);
+
+ /**
+ * {@code edit.getAvailableRefactorings}
+ *
+ * Get a list of the kinds of refactorings that are valid for the given selection in the given
+ * file.
+ *
+ * @param file The file containing the code on which the refactoring would be based.
+ * @param offset The offset of the code on which the refactoring would be based.
+ * @param length The length of the code on which the refactoring would be based.
+ */
+ public void edit_getAvailableRefactorings(String file, int offset, int length, GetAvailableRefactoringsConsumer consumer);
+
+ /**
+ * {@code edit.getFixes}
+ *
+ * Return the set of fixes that are available for the errors at a given offset in a given file.
+ *
+ * @param file The file containing the errors for which fixes are being requested.
+ * @param offset The offset used to select the errors for which fixes will be returned.
+ */
+ public void edit_getFixes(String file, int offset, GetFixesConsumer consumer);
+
+ /**
+ * {@code edit.getRefactoring}
+ *
+ * Get the changes required to perform a refactoring.
+ *
+ * If another refactoring request is received during the processing of this one, an error of type
+ * REFACTORING_REQUEST_CANCELLED will be generated.
+ *
+ * @param kind The kind of refactoring to be performed.
+ * @param file The file containing the code involved in the refactoring.
+ * @param offset The offset of the region involved in the refactoring.
+ * @param length The length of the region involved in the refactoring.
+ * @param validateOnly True if the client is only requesting that the values of the options be
+ * validated and no change be generated.
+ * @param options Data used to provide values provided by the user. The structure of the data is
+ * dependent on the kind of refactoring being performed. The data that is expected is
+ * documented in the section titled Refactorings, labeled as “Options”. This field can be
+ * omitted if the refactoring does not require any options or if the values of those
+ * options are not known.
+ */
+ public void edit_getRefactoring(String kind, String file, int offset, int length, boolean validateOnly, RefactoringOptions options, GetRefactoringConsumer consumer);
+
+ /**
+ * {@code edit.sortMembers}
+ *
+ * Sort all of the directives, unit and class members of the given Dart file.
+ *
+ * If a request is made for a file that does not exist, does not belong to an analysis root or is
+ * not a Dart file, SORT_MEMBERS_INVALID_FILE will be generated.
+ *
+ * If the Dart file has scan or parse errors, SORT_MEMBERS_PARSE_ERRORS will be generated.
+ *
+ * @param file The Dart file to sort.
+ */
+ public void edit_sortMembers(String file, SortMembersConsumer consumer);
+
+ /**
+ * {@code execution.createContext}
+ *
+ * Create an execution context for the executable file with the given path. The context that is
+ * created will persist until execution.deleteContext is used to delete it. Clients, therefore, are
+ * responsible for managing the lifetime of execution contexts.
+ *
+ * @param contextRoot The path of the Dart or HTML file that will be launched, or the path of the
+ * directory containing the file.
+ */
+ public void execution_createContext(String contextRoot, CreateContextConsumer consumer);
+
+ /**
+ * {@code execution.deleteContext}
+ *
+ * Delete the execution context with the given identifier. The context id is no longer valid after
+ * this command. The server is allowed to re-use ids when they are no longer valid.
+ *
+ * @param id The identifier of the execution context that is to be deleted.
+ */
+ public void execution_deleteContext(String id);
+
+ /**
+ * {@code execution.mapUri}
+ *
+ * Map a URI from the execution context to the file that it corresponds to, or map a file to the
+ * URI that it corresponds to in the execution context.
+ *
+ * Exactly one of the file and uri fields must be provided. If both fields are provided, then an
+ * error of type INVALID_PARAMETER will be generated. Similarly, if neither field is provided, then
+ * an error of type INVALID_PARAMETER will be generated.
+ *
+ * If the file field is provided and the value is not the path of a file (either the file does not
+ * exist or the path references something other than a file), then an error of type
+ * INVALID_PARAMETER will be generated.
+ *
+ * If the uri field is provided and the value is not a valid URI or if the URI references something
+ * that is not a file (either a file that does not exist or something other than a file), then an
+ * error of type INVALID_PARAMETER will be generated.
+ *
+ * If the contextRoot used to create the execution context does not exist, then an error of type
+ * INVALID_EXECUTION_CONTEXT will be generated.
+ *
+ * @param id The identifier of the execution context in which the URI is to be mapped.
+ * @param file The path of the file to be mapped into a URI.
+ * @param uri The URI to be mapped into a file path.
+ */
+ public void execution_mapUri(String id, String file, String uri, MapUriConsumer consumer);
+
+ /**
+ * {@code execution.setSubscriptions}
+ *
+ * Subscribe for services. All previous subscriptions are replaced by the given set of services.
+ *
+ * It is an error if any of the elements in the list are not valid services. If there is an error,
+ * then the current subscriptions will remain unchanged.
+ *
+ * @param subscriptions A list of the services being subscribed to.
+ */
+ public void execution_setSubscriptions(List<String> subscriptions);
+
+ /**
+ * Return {@code true} if the socket is open.
+ */
+ public boolean isSocketOpen();
+
+ /**
+ * Remove the given listener from the list of listeners that will receive notification when new
+ * analysis results become available.
+ *
+ * @param listener the listener to be removed
+ */
+ public void removeAnalysisServerListener(AnalysisServerListener listener);
+
+ /**
+ * {@code search.findElementReferences}
+ *
+ * Perform a search for references to the element defined or referenced at the given offset in the
+ * given file.
+ *
+ * An identifier is returned immediately, and individual results will be returned via the
+ * search.results notification as they become available.
+ *
+ * @param file The file containing the declaration of or reference to the element used to define
+ * the search.
+ * @param offset The offset within the file of the declaration of or reference to the element.
+ * @param includePotential True if potential matches are to be included in the results.
+ */
+ public void search_findElementReferences(String file, int offset, boolean includePotential, FindElementReferencesConsumer consumer);
+
+ /**
+ * {@code search.findMemberDeclarations}
+ *
+ * Perform a search for declarations of members whose name is equal to the given name.
+ *
+ * An identifier is returned immediately, and individual results will be returned via the
+ * search.results notification as they become available.
+ *
+ * @param name The name of the declarations to be found.
+ */
+ public void search_findMemberDeclarations(String name, FindMemberDeclarationsConsumer consumer);
+
+ /**
+ * {@code search.findMemberReferences}
+ *
+ * Perform a search for references to members whose name is equal to the given name. This search
+ * does not check to see that there is a member defined with the given name, so it is able to find
+ * references to undefined members as well.
+ *
+ * An identifier is returned immediately, and individual results will be returned via the
+ * search.results notification as they become available.
+ *
+ * @param name The name of the references to be found.
+ */
+ public void search_findMemberReferences(String name, FindMemberReferencesConsumer consumer);
+
+ /**
+ * {@code search.findTopLevelDeclarations}
+ *
+ * Perform a search for declarations of top-level elements (classes, typedefs, getters, setters,
+ * functions and fields) whose name matches the given pattern.
+ *
+ * An identifier is returned immediately, and individual results will be returned via the
+ * search.results notification as they become available.
+ *
+ * @param pattern The regular expression used to match the names of the declarations to be found.
+ */
+ public void search_findTopLevelDeclarations(String pattern, FindTopLevelDeclarationsConsumer consumer);
+
+ /**
+ * {@code search.getTypeHierarchy}
+ *
+ * Return the type hierarchy of the class declared or referenced at the given location.
+ *
+ * @param file The file containing the declaration or reference to the type for which a hierarchy
+ * is being requested.
+ * @param offset The offset of the name of the type within the file.
+ */
+ public void search_getTypeHierarchy(String file, int offset, GetTypeHierarchyConsumer consumer);
+
+ /**
+ * {@code server.getVersion}
+ *
+ * Return the version number of the analysis server.
+ */
+ public void server_getVersion(GetVersionConsumer consumer);
+
+ /**
+ * {@code server.setSubscriptions}
+ *
+ * Subscribe for services. All previous subscriptions are replaced by the given set of services.
+ *
+ * It is an error if any of the elements in the list are not valid services. If there is an error,
+ * then the current subscriptions will remain unchanged.
+ *
+ * @param subscriptions A list of the services being subscribed to.
+ */
+ public void server_setSubscriptions(List<String> subscriptions);
+
+ /**
+ * {@code server.shutdown}
+ *
+ * Cleanly shutdown the analysis server. Requests that are received after this request will not be
+ * processed. Requests that were received before this request, but for which a response has not yet
+ * been sent, will not be responded to. No further responses or notifications will be sent after
+ * the response to this request has been sent.
+ */
+ public void server_shutdown();
+
+ /**
+ * Start the analysis server.
+ */
+ public void start() throws Exception;
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AddContentOverlay.java b/pkg/analysis_server/tool/spec/generated/java/types/AddContentOverlay.java
new file mode 100644
index 0000000..3ffc75f
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AddContentOverlay.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A directive to begin overlaying the contents of a file. The supplied content will be used for
+ * analysis in place of the file contents in the filesystem.
+ *
+ * If this directive is used on a file that already has a file content overlay, the old overlay is
+ * discarded and replaced with the new one.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class AddContentOverlay {
+
+ public static final AddContentOverlay[] EMPTY_ARRAY = new AddContentOverlay[0];
+
+ public static final List<AddContentOverlay> EMPTY_LIST = Lists.newArrayList();
+
+ private final String type;
+
+ /**
+ * The new content of the file.
+ */
+ private final String content;
+
+ /**
+ * Constructor for {@link AddContentOverlay}.
+ */
+ public AddContentOverlay(String content) {
+ this.type = "add";
+ this.content = content;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof AddContentOverlay) {
+ AddContentOverlay other = (AddContentOverlay) obj;
+ return
+ ObjectUtilities.equals(other.type, type) &&
+ ObjectUtilities.equals(other.content, content);
+ }
+ return false;
+ }
+
+ public static AddContentOverlay fromJson(JsonObject jsonObject) {
+ String type = jsonObject.get("type").getAsString();
+ String content = jsonObject.get("content").getAsString();
+ return new AddContentOverlay(content);
+ }
+
+ public static List<AddContentOverlay> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<AddContentOverlay> list = new ArrayList<AddContentOverlay>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The new content of the file.
+ */
+ public String getContent() {
+ return content;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(type);
+ builder.append(content);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("type", type);
+ jsonObject.addProperty("content", content);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("type=");
+ builder.append(type + ", ");
+ builder.append("content=");
+ builder.append(content);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisError.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisError.java
new file mode 100644
index 0000000..c9b75e8
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisError.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * An indication of an error, warning, or hint that was produced by the analysis.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class AnalysisError {
+
+ public static final AnalysisError[] EMPTY_ARRAY = new AnalysisError[0];
+
+ public static final List<AnalysisError> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The severity of the error.
+ */
+ private final String severity;
+
+ /**
+ * The type of the error.
+ */
+ private final String type;
+
+ /**
+ * The location associated with the error.
+ */
+ private final Location location;
+
+ /**
+ * The message to be displayed for this error. The message should indicate what is wrong with the
+ * code and why it is wrong.
+ */
+ private final String message;
+
+ /**
+ * The correction message to be displayed for this error. The correction message should indicate
+ * how the user can fix the error. The field is omitted if there is no correction message
+ * associated with the error code.
+ */
+ private final String correction;
+
+ /**
+ * Constructor for {@link AnalysisError}.
+ */
+ public AnalysisError(String severity, String type, Location location, String message, String correction) {
+ this.severity = severity;
+ this.type = type;
+ this.location = location;
+ this.message = message;
+ this.correction = correction;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof AnalysisError) {
+ AnalysisError other = (AnalysisError) obj;
+ return
+ ObjectUtilities.equals(other.severity, severity) &&
+ ObjectUtilities.equals(other.type, type) &&
+ ObjectUtilities.equals(other.location, location) &&
+ ObjectUtilities.equals(other.message, message) &&
+ ObjectUtilities.equals(other.correction, correction);
+ }
+ return false;
+ }
+
+ public static AnalysisError fromJson(JsonObject jsonObject) {
+ String severity = jsonObject.get("severity").getAsString();
+ String type = jsonObject.get("type").getAsString();
+ Location location = Location.fromJson(jsonObject.get("location").getAsJsonObject());
+ String message = jsonObject.get("message").getAsString();
+ String correction = jsonObject.get("correction") == null ? null : jsonObject.get("correction").getAsString();
+ return new AnalysisError(severity, type, location, message, correction);
+ }
+
+ public static List<AnalysisError> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<AnalysisError> list = new ArrayList<AnalysisError>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The correction message to be displayed for this error. The correction message should indicate
+ * how the user can fix the error. The field is omitted if there is no correction message
+ * associated with the error code.
+ */
+ public String getCorrection() {
+ return correction;
+ }
+
+ /**
+ * The location associated with the error.
+ */
+ public Location getLocation() {
+ return location;
+ }
+
+ /**
+ * The message to be displayed for this error. The message should indicate what is wrong with the
+ * code and why it is wrong.
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * The severity of the error.
+ */
+ public String getSeverity() {
+ return severity;
+ }
+
+ /**
+ * The type of the error.
+ */
+ public String getType() {
+ return type;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(severity);
+ builder.append(type);
+ builder.append(location);
+ builder.append(message);
+ builder.append(correction);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("severity", severity);
+ jsonObject.addProperty("type", type);
+ jsonObject.add("location", location.toJson());
+ jsonObject.addProperty("message", message);
+ if (correction != null) {
+ jsonObject.addProperty("correction", correction);
+ }
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("severity=");
+ builder.append(severity + ", ");
+ builder.append("type=");
+ builder.append(type + ", ");
+ builder.append("location=");
+ builder.append(location + ", ");
+ builder.append("message=");
+ builder.append(message + ", ");
+ builder.append("correction=");
+ builder.append(correction);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorFixes.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorFixes.java
new file mode 100644
index 0000000..1868fbd
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorFixes.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A list of fixes associated with a specific error
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class AnalysisErrorFixes {
+
+ public static final AnalysisErrorFixes[] EMPTY_ARRAY = new AnalysisErrorFixes[0];
+
+ public static final List<AnalysisErrorFixes> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The error with which the fixes are associated.
+ */
+ private final AnalysisError error;
+
+ /**
+ * The fixes associated with the error.
+ */
+ private final List<SourceChange> fixes;
+
+ /**
+ * Constructor for {@link AnalysisErrorFixes}.
+ */
+ public AnalysisErrorFixes(AnalysisError error, List<SourceChange> fixes) {
+ this.error = error;
+ this.fixes = fixes;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof AnalysisErrorFixes) {
+ AnalysisErrorFixes other = (AnalysisErrorFixes) obj;
+ return
+ ObjectUtilities.equals(other.error, error) &&
+ ObjectUtilities.equals(other.fixes, fixes);
+ }
+ return false;
+ }
+
+ public static AnalysisErrorFixes fromJson(JsonObject jsonObject) {
+ AnalysisError error = AnalysisError.fromJson(jsonObject.get("error").getAsJsonObject());
+ List<SourceChange> fixes = SourceChange.fromJsonArray(jsonObject.get("fixes").getAsJsonArray());
+ return new AnalysisErrorFixes(error, fixes);
+ }
+
+ public static List<AnalysisErrorFixes> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<AnalysisErrorFixes> list = new ArrayList<AnalysisErrorFixes>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The error with which the fixes are associated.
+ */
+ public AnalysisError getError() {
+ return error;
+ }
+
+ /**
+ * The fixes associated with the error.
+ */
+ public List<SourceChange> getFixes() {
+ return fixes;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(error);
+ builder.append(fixes);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.add("error", error.toJson());
+ JsonArray jsonArrayFixes = new JsonArray();
+ for (SourceChange elt : fixes) {
+ jsonArrayFixes.add(elt.toJson());
+ }
+ jsonObject.add("fixes", jsonArrayFixes);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("error=");
+ builder.append(error + ", ");
+ builder.append("fixes=");
+ builder.append(StringUtils.join(fixes, ", "));
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorSeverity.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorSeverity.java
new file mode 100644
index 0000000..6fbfabb
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorSeverity.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the possible severities of analysis errors.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class AnalysisErrorSeverity {
+
+ public static final String INFO = "INFO";
+
+ public static final String WARNING = "WARNING";
+
+ public static final String ERROR = "ERROR";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorType.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorType.java
new file mode 100644
index 0000000..eb45b09
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorType.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the possible types of analysis errors.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class AnalysisErrorType {
+
+ public static final String CHECKED_MODE_COMPILE_TIME_ERROR = "CHECKED_MODE_COMPILE_TIME_ERROR";
+
+ public static final String COMPILE_TIME_ERROR = "COMPILE_TIME_ERROR";
+
+ public static final String HINT = "HINT";
+
+ public static final String LINT = "LINT";
+
+ public static final String STATIC_TYPE_WARNING = "STATIC_TYPE_WARNING";
+
+ public static final String STATIC_WARNING = "STATIC_WARNING";
+
+ public static final String SYNTACTIC_ERROR = "SYNTACTIC_ERROR";
+
+ public static final String TODO = "TODO";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisOptions.java
new file mode 100644
index 0000000..9ec191d
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisOptions.java
@@ -0,0 +1,258 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A set of options controlling what kind of analysis is to be performed. If the value of a field
+ * is omitted the value of the option will not be changed.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class AnalysisOptions {
+
+ public static final AnalysisOptions[] EMPTY_ARRAY = new AnalysisOptions[0];
+
+ public static final List<AnalysisOptions> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * Deprecated
+ *
+ * True if the client wants to enable support for the proposed async feature.
+ */
+ private final Boolean enableAsync;
+
+ /**
+ * Deprecated
+ *
+ * True if the client wants to enable support for the proposed deferred loading feature.
+ */
+ private final Boolean enableDeferredLoading;
+
+ /**
+ * Deprecated
+ *
+ * True if the client wants to enable support for the proposed enum feature.
+ */
+ private final Boolean enableEnums;
+
+ /**
+ * True if the client wants to enable support for the proposed "null aware operators" feature.
+ */
+ private final Boolean enableNullAwareOperators;
+
+ /**
+ * True if hints that are specific to dart2js should be generated. This option is ignored if
+ * generateHints is false.
+ */
+ private final Boolean generateDart2jsHints;
+
+ /**
+ * True if hints should be generated as part of generating errors and warnings.
+ */
+ private final Boolean generateHints;
+
+ /**
+ * True if lints should be generated as part of generating errors and warnings.
+ */
+ private final Boolean generateLints;
+
+ /**
+ * Constructor for {@link AnalysisOptions}.
+ */
+ public AnalysisOptions(Boolean enableAsync, Boolean enableDeferredLoading, Boolean enableEnums, Boolean enableNullAwareOperators, Boolean generateDart2jsHints, Boolean generateHints, Boolean generateLints) {
+ this.enableAsync = enableAsync;
+ this.enableDeferredLoading = enableDeferredLoading;
+ this.enableEnums = enableEnums;
+ this.enableNullAwareOperators = enableNullAwareOperators;
+ this.generateDart2jsHints = generateDart2jsHints;
+ this.generateHints = generateHints;
+ this.generateLints = generateLints;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof AnalysisOptions) {
+ AnalysisOptions other = (AnalysisOptions) obj;
+ return
+ ObjectUtilities.equals(other.enableAsync, enableAsync) &&
+ ObjectUtilities.equals(other.enableDeferredLoading, enableDeferredLoading) &&
+ ObjectUtilities.equals(other.enableEnums, enableEnums) &&
+ ObjectUtilities.equals(other.enableNullAwareOperators, enableNullAwareOperators) &&
+ ObjectUtilities.equals(other.generateDart2jsHints, generateDart2jsHints) &&
+ ObjectUtilities.equals(other.generateHints, generateHints) &&
+ ObjectUtilities.equals(other.generateLints, generateLints);
+ }
+ return false;
+ }
+
+ public static AnalysisOptions fromJson(JsonObject jsonObject) {
+ Boolean enableAsync = jsonObject.get("enableAsync") == null ? null : jsonObject.get("enableAsync").getAsBoolean();
+ Boolean enableDeferredLoading = jsonObject.get("enableDeferredLoading") == null ? null : jsonObject.get("enableDeferredLoading").getAsBoolean();
+ Boolean enableEnums = jsonObject.get("enableEnums") == null ? null : jsonObject.get("enableEnums").getAsBoolean();
+ Boolean enableNullAwareOperators = jsonObject.get("enableNullAwareOperators") == null ? null : jsonObject.get("enableNullAwareOperators").getAsBoolean();
+ Boolean generateDart2jsHints = jsonObject.get("generateDart2jsHints") == null ? null : jsonObject.get("generateDart2jsHints").getAsBoolean();
+ Boolean generateHints = jsonObject.get("generateHints") == null ? null : jsonObject.get("generateHints").getAsBoolean();
+ Boolean generateLints = jsonObject.get("generateLints") == null ? null : jsonObject.get("generateLints").getAsBoolean();
+ return new AnalysisOptions(enableAsync, enableDeferredLoading, enableEnums, enableNullAwareOperators, generateDart2jsHints, generateHints, generateLints);
+ }
+
+ public static List<AnalysisOptions> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<AnalysisOptions> list = new ArrayList<AnalysisOptions>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * Deprecated
+ *
+ * True if the client wants to enable support for the proposed async feature.
+ */
+ public Boolean getEnableAsync() {
+ return enableAsync;
+ }
+
+ /**
+ * Deprecated
+ *
+ * True if the client wants to enable support for the proposed deferred loading feature.
+ */
+ public Boolean getEnableDeferredLoading() {
+ return enableDeferredLoading;
+ }
+
+ /**
+ * Deprecated
+ *
+ * True if the client wants to enable support for the proposed enum feature.
+ */
+ public Boolean getEnableEnums() {
+ return enableEnums;
+ }
+
+ /**
+ * True if the client wants to enable support for the proposed "null aware operators" feature.
+ */
+ public Boolean getEnableNullAwareOperators() {
+ return enableNullAwareOperators;
+ }
+
+ /**
+ * True if hints that are specific to dart2js should be generated. This option is ignored if
+ * generateHints is false.
+ */
+ public Boolean getGenerateDart2jsHints() {
+ return generateDart2jsHints;
+ }
+
+ /**
+ * True if hints should be generated as part of generating errors and warnings.
+ */
+ public Boolean getGenerateHints() {
+ return generateHints;
+ }
+
+ /**
+ * True if lints should be generated as part of generating errors and warnings.
+ */
+ public Boolean getGenerateLints() {
+ return generateLints;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(enableAsync);
+ builder.append(enableDeferredLoading);
+ builder.append(enableEnums);
+ builder.append(enableNullAwareOperators);
+ builder.append(generateDart2jsHints);
+ builder.append(generateHints);
+ builder.append(generateLints);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ if (enableAsync != null) {
+ jsonObject.addProperty("enableAsync", enableAsync);
+ }
+ if (enableDeferredLoading != null) {
+ jsonObject.addProperty("enableDeferredLoading", enableDeferredLoading);
+ }
+ if (enableEnums != null) {
+ jsonObject.addProperty("enableEnums", enableEnums);
+ }
+ if (enableNullAwareOperators != null) {
+ jsonObject.addProperty("enableNullAwareOperators", enableNullAwareOperators);
+ }
+ if (generateDart2jsHints != null) {
+ jsonObject.addProperty("generateDart2jsHints", generateDart2jsHints);
+ }
+ if (generateHints != null) {
+ jsonObject.addProperty("generateHints", generateHints);
+ }
+ if (generateLints != null) {
+ jsonObject.addProperty("generateLints", generateLints);
+ }
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("enableAsync=");
+ builder.append(enableAsync + ", ");
+ builder.append("enableDeferredLoading=");
+ builder.append(enableDeferredLoading + ", ");
+ builder.append("enableEnums=");
+ builder.append(enableEnums + ", ");
+ builder.append("enableNullAwareOperators=");
+ builder.append(enableNullAwareOperators + ", ");
+ builder.append("generateDart2jsHints=");
+ builder.append(generateDart2jsHints + ", ");
+ builder.append("generateHints=");
+ builder.append(generateHints + ", ");
+ builder.append("generateLints=");
+ builder.append(generateLints);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisService.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisService.java
new file mode 100644
index 0000000..eef2903
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisService.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the services provided by the analysis domain.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class AnalysisService {
+
+ public static final String FOLDING = "FOLDING";
+
+ public static final String HIGHLIGHTS = "HIGHLIGHTS";
+
+ public static final String INVALIDATE = "INVALIDATE";
+
+ public static final String NAVIGATION = "NAVIGATION";
+
+ public static final String OCCURRENCES = "OCCURRENCES";
+
+ public static final String OUTLINE = "OUTLINE";
+
+ public static final String OVERRIDES = "OVERRIDES";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisStatus.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisStatus.java
new file mode 100644
index 0000000..fcff703
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisStatus.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * An indication of the current state of analysis.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class AnalysisStatus {
+
+ public static final AnalysisStatus[] EMPTY_ARRAY = new AnalysisStatus[0];
+
+ public static final List<AnalysisStatus> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * True if analysis is currently being performed.
+ */
+ private final boolean isAnalyzing;
+
+ /**
+ * The name of the current target of analysis. This field is omitted if analyzing is false.
+ */
+ private final String analysisTarget;
+
+ /**
+ * Constructor for {@link AnalysisStatus}.
+ */
+ public AnalysisStatus(boolean isAnalyzing, String analysisTarget) {
+ this.isAnalyzing = isAnalyzing;
+ this.analysisTarget = analysisTarget;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof AnalysisStatus) {
+ AnalysisStatus other = (AnalysisStatus) obj;
+ return
+ other.isAnalyzing == isAnalyzing &&
+ ObjectUtilities.equals(other.analysisTarget, analysisTarget);
+ }
+ return false;
+ }
+
+ public static AnalysisStatus fromJson(JsonObject jsonObject) {
+ boolean isAnalyzing = jsonObject.get("isAnalyzing").getAsBoolean();
+ String analysisTarget = jsonObject.get("analysisTarget") == null ? null : jsonObject.get("analysisTarget").getAsString();
+ return new AnalysisStatus(isAnalyzing, analysisTarget);
+ }
+
+ public static List<AnalysisStatus> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<AnalysisStatus> list = new ArrayList<AnalysisStatus>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The name of the current target of analysis. This field is omitted if analyzing is false.
+ */
+ public String getAnalysisTarget() {
+ return analysisTarget;
+ }
+
+ /**
+ * True if analysis is currently being performed.
+ */
+ public boolean isAnalyzing() {
+ return isAnalyzing;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(isAnalyzing);
+ builder.append(analysisTarget);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("isAnalyzing", isAnalyzing);
+ if (analysisTarget != null) {
+ jsonObject.addProperty("analysisTarget", analysisTarget);
+ }
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("isAnalyzing=");
+ builder.append(isAnalyzing + ", ");
+ builder.append("analysisTarget=");
+ builder.append(analysisTarget);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ChangeContentOverlay.java b/pkg/analysis_server/tool/spec/generated/java/types/ChangeContentOverlay.java
new file mode 100644
index 0000000..468bb07
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ChangeContentOverlay.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A directive to modify an existing file content overlay. One or more ranges of text are deleted
+ * from the old file content overlay and replaced with new text.
+ *
+ * The edits are applied in the order in which they occur in the list. This means that the offset
+ * of each edit must be correct under the assumption that all previous edits have been applied.
+ *
+ * It is an error to use this overlay on a file that does not yet have a file content overlay or
+ * that has had its overlay removed via RemoveContentOverlay.
+ *
+ * If any of the edits cannot be applied due to its offset or length being out of range, an
+ * INVALID_OVERLAY_CHANGE error will be reported.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class ChangeContentOverlay {
+
+ public static final ChangeContentOverlay[] EMPTY_ARRAY = new ChangeContentOverlay[0];
+
+ public static final List<ChangeContentOverlay> EMPTY_LIST = Lists.newArrayList();
+
+ private final String type;
+
+ /**
+ * The edits to be applied to the file.
+ */
+ private final List<SourceEdit> edits;
+
+ /**
+ * Constructor for {@link ChangeContentOverlay}.
+ */
+ public ChangeContentOverlay(List<SourceEdit> edits) {
+ this.type = "change";
+ this.edits = edits;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof ChangeContentOverlay) {
+ ChangeContentOverlay other = (ChangeContentOverlay) obj;
+ return
+ ObjectUtilities.equals(other.type, type) &&
+ ObjectUtilities.equals(other.edits, edits);
+ }
+ return false;
+ }
+
+ public static ChangeContentOverlay fromJson(JsonObject jsonObject) {
+ String type = jsonObject.get("type").getAsString();
+ List<SourceEdit> edits = SourceEdit.fromJsonArray(jsonObject.get("edits").getAsJsonArray());
+ return new ChangeContentOverlay(edits);
+ }
+
+ public static List<ChangeContentOverlay> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<ChangeContentOverlay> list = new ArrayList<ChangeContentOverlay>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The edits to be applied to the file.
+ */
+ public List<SourceEdit> getEdits() {
+ return edits;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(type);
+ builder.append(edits);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("type", type);
+ JsonArray jsonArrayEdits = new JsonArray();
+ for (SourceEdit elt : edits) {
+ jsonArrayEdits.add(elt.toJson());
+ }
+ jsonObject.add("edits", jsonArrayEdits);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("type=");
+ builder.append(type + ", ");
+ builder.append("edits=");
+ builder.append(StringUtils.join(edits, ", "));
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestion.java b/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestion.java
new file mode 100644
index 0000000..922dbf4
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestion.java
@@ -0,0 +1,520 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A suggestion for how to complete partially entered text. Many of the fields are optional,
+ * depending on the kind of element being suggested.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class CompletionSuggestion {
+
+ public static final CompletionSuggestion[] EMPTY_ARRAY = new CompletionSuggestion[0];
+
+ public static final List<CompletionSuggestion> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The kind of element being suggested.
+ */
+ private final String kind;
+
+ /**
+ * The relevance of this completion suggestion where a higher number indicates a higher relevance.
+ */
+ private final int relevance;
+
+ /**
+ * The identifier to be inserted if the suggestion is selected. If the suggestion is for a method
+ * or function, the client might want to additionally insert a template for the parameters. The
+ * information required in order to do so is contained in other fields.
+ */
+ private final String completion;
+
+ /**
+ * The offset, relative to the beginning of the completion, of where the selection should be placed
+ * after insertion.
+ */
+ private final int selectionOffset;
+
+ /**
+ * The number of characters that should be selected after insertion.
+ */
+ private final int selectionLength;
+
+ /**
+ * True if the suggested element is deprecated.
+ */
+ private final boolean isDeprecated;
+
+ /**
+ * True if the element is not known to be valid for the target. This happens if the type of the
+ * target is dynamic.
+ */
+ private final boolean isPotential;
+
+ /**
+ * An abbreviated version of the Dartdoc associated with the element being suggested, This field is
+ * omitted if there is no Dartdoc associated with the element.
+ */
+ private final String docSummary;
+
+ /**
+ * The Dartdoc associated with the element being suggested, This field is omitted if there is no
+ * Dartdoc associated with the element.
+ */
+ private final String docComplete;
+
+ /**
+ * The class that declares the element being suggested. This field is omitted if the suggested
+ * element is not a member of a class.
+ */
+ private final String declaringType;
+
+ /**
+ * Information about the element reference being suggested.
+ */
+ private final Element element;
+
+ /**
+ * The return type of the getter, function or method or the type of the field being suggested. This
+ * field is omitted if the suggested element is not a getter, function or method.
+ */
+ private final String returnType;
+
+ /**
+ * The names of the parameters of the function or method being suggested. This field is omitted if
+ * the suggested element is not a setter, function or method.
+ */
+ private final List<String> parameterNames;
+
+ /**
+ * The types of the parameters of the function or method being suggested. This field is omitted if
+ * the parameterNames field is omitted.
+ */
+ private final List<String> parameterTypes;
+
+ /**
+ * The number of required parameters for the function or method being suggested. This field is
+ * omitted if the parameterNames field is omitted.
+ */
+ private final Integer requiredParameterCount;
+
+ /**
+ * True if the function or method being suggested has at least one named parameter. This field is
+ * omitted if the parameterNames field is omitted.
+ */
+ private final Boolean hasNamedParameters;
+
+ /**
+ * The name of the optional parameter being suggested. This field is omitted if the suggestion is
+ * not the addition of an optional argument within an argument list.
+ */
+ private final String parameterName;
+
+ /**
+ * The type of the options parameter being suggested. This field is omitted if the parameterName
+ * field is omitted.
+ */
+ private final String parameterType;
+
+ /**
+ * The import to be added if the suggestion is out of scope and needs an import to be added to be
+ * in scope.
+ */
+ private final String importUri;
+
+ /**
+ * Constructor for {@link CompletionSuggestion}.
+ */
+ public CompletionSuggestion(String kind, int relevance, String completion, int selectionOffset, int selectionLength, boolean isDeprecated, boolean isPotential, String docSummary, String docComplete, String declaringType, Element element, String returnType, List<String> parameterNames, List<String> parameterTypes, Integer requiredParameterCount, Boolean hasNamedParameters, String parameterName, String parameterType, String importUri) {
+ this.kind = kind;
+ this.relevance = relevance;
+ this.completion = completion;
+ this.selectionOffset = selectionOffset;
+ this.selectionLength = selectionLength;
+ this.isDeprecated = isDeprecated;
+ this.isPotential = isPotential;
+ this.docSummary = docSummary;
+ this.docComplete = docComplete;
+ this.declaringType = declaringType;
+ this.element = element;
+ this.returnType = returnType;
+ this.parameterNames = parameterNames;
+ this.parameterTypes = parameterTypes;
+ this.requiredParameterCount = requiredParameterCount;
+ this.hasNamedParameters = hasNamedParameters;
+ this.parameterName = parameterName;
+ this.parameterType = parameterType;
+ this.importUri = importUri;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof CompletionSuggestion) {
+ CompletionSuggestion other = (CompletionSuggestion) obj;
+ return
+ ObjectUtilities.equals(other.kind, kind) &&
+ other.relevance == relevance &&
+ ObjectUtilities.equals(other.completion, completion) &&
+ other.selectionOffset == selectionOffset &&
+ other.selectionLength == selectionLength &&
+ other.isDeprecated == isDeprecated &&
+ other.isPotential == isPotential &&
+ ObjectUtilities.equals(other.docSummary, docSummary) &&
+ ObjectUtilities.equals(other.docComplete, docComplete) &&
+ ObjectUtilities.equals(other.declaringType, declaringType) &&
+ ObjectUtilities.equals(other.element, element) &&
+ ObjectUtilities.equals(other.returnType, returnType) &&
+ ObjectUtilities.equals(other.parameterNames, parameterNames) &&
+ ObjectUtilities.equals(other.parameterTypes, parameterTypes) &&
+ ObjectUtilities.equals(other.requiredParameterCount, requiredParameterCount) &&
+ ObjectUtilities.equals(other.hasNamedParameters, hasNamedParameters) &&
+ ObjectUtilities.equals(other.parameterName, parameterName) &&
+ ObjectUtilities.equals(other.parameterType, parameterType) &&
+ ObjectUtilities.equals(other.importUri, importUri);
+ }
+ return false;
+ }
+
+ public static CompletionSuggestion fromJson(JsonObject jsonObject) {
+ String kind = jsonObject.get("kind").getAsString();
+ int relevance = jsonObject.get("relevance").getAsInt();
+ String completion = jsonObject.get("completion").getAsString();
+ int selectionOffset = jsonObject.get("selectionOffset").getAsInt();
+ int selectionLength = jsonObject.get("selectionLength").getAsInt();
+ boolean isDeprecated = jsonObject.get("isDeprecated").getAsBoolean();
+ boolean isPotential = jsonObject.get("isPotential").getAsBoolean();
+ String docSummary = jsonObject.get("docSummary") == null ? null : jsonObject.get("docSummary").getAsString();
+ String docComplete = jsonObject.get("docComplete") == null ? null : jsonObject.get("docComplete").getAsString();
+ String declaringType = jsonObject.get("declaringType") == null ? null : jsonObject.get("declaringType").getAsString();
+ Element element = jsonObject.get("element") == null ? null : Element.fromJson(jsonObject.get("element").getAsJsonObject());
+ String returnType = jsonObject.get("returnType") == null ? null : jsonObject.get("returnType").getAsString();
+ List<String> parameterNames = jsonObject.get("parameterNames") == null ? null : JsonUtilities.decodeStringList(jsonObject.get("parameterNames").getAsJsonArray());
+ List<String> parameterTypes = jsonObject.get("parameterTypes") == null ? null : JsonUtilities.decodeStringList(jsonObject.get("parameterTypes").getAsJsonArray());
+ Integer requiredParameterCount = jsonObject.get("requiredParameterCount") == null ? null : jsonObject.get("requiredParameterCount").getAsInt();
+ Boolean hasNamedParameters = jsonObject.get("hasNamedParameters") == null ? null : jsonObject.get("hasNamedParameters").getAsBoolean();
+ String parameterName = jsonObject.get("parameterName") == null ? null : jsonObject.get("parameterName").getAsString();
+ String parameterType = jsonObject.get("parameterType") == null ? null : jsonObject.get("parameterType").getAsString();
+ String importUri = jsonObject.get("importUri") == null ? null : jsonObject.get("importUri").getAsString();
+ return new CompletionSuggestion(kind, relevance, completion, selectionOffset, selectionLength, isDeprecated, isPotential, docSummary, docComplete, declaringType, element, returnType, parameterNames, parameterTypes, requiredParameterCount, hasNamedParameters, parameterName, parameterType, importUri);
+ }
+
+ public static List<CompletionSuggestion> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<CompletionSuggestion> list = new ArrayList<CompletionSuggestion>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The identifier to be inserted if the suggestion is selected. If the suggestion is for a method
+ * or function, the client might want to additionally insert a template for the parameters. The
+ * information required in order to do so is contained in other fields.
+ */
+ public String getCompletion() {
+ return completion;
+ }
+
+ /**
+ * The class that declares the element being suggested. This field is omitted if the suggested
+ * element is not a member of a class.
+ */
+ public String getDeclaringType() {
+ return declaringType;
+ }
+
+ /**
+ * The Dartdoc associated with the element being suggested, This field is omitted if there is no
+ * Dartdoc associated with the element.
+ */
+ public String getDocComplete() {
+ return docComplete;
+ }
+
+ /**
+ * An abbreviated version of the Dartdoc associated with the element being suggested, This field is
+ * omitted if there is no Dartdoc associated with the element.
+ */
+ public String getDocSummary() {
+ return docSummary;
+ }
+
+ /**
+ * Information about the element reference being suggested.
+ */
+ public Element getElement() {
+ return element;
+ }
+
+ /**
+ * True if the function or method being suggested has at least one named parameter. This field is
+ * omitted if the parameterNames field is omitted.
+ */
+ public Boolean getHasNamedParameters() {
+ return hasNamedParameters;
+ }
+
+ /**
+ * The import to be added if the suggestion is out of scope and needs an import to be added to be
+ * in scope.
+ */
+ public String getImportUri() {
+ return importUri;
+ }
+
+ /**
+ * True if the suggested element is deprecated.
+ */
+ public boolean isDeprecated() {
+ return isDeprecated;
+ }
+
+ /**
+ * True if the element is not known to be valid for the target. This happens if the type of the
+ * target is dynamic.
+ */
+ public boolean isPotential() {
+ return isPotential;
+ }
+
+ /**
+ * The kind of element being suggested.
+ */
+ public String getKind() {
+ return kind;
+ }
+
+ /**
+ * The name of the optional parameter being suggested. This field is omitted if the suggestion is
+ * not the addition of an optional argument within an argument list.
+ */
+ public String getParameterName() {
+ return parameterName;
+ }
+
+ /**
+ * The names of the parameters of the function or method being suggested. This field is omitted if
+ * the suggested element is not a setter, function or method.
+ */
+ public List<String> getParameterNames() {
+ return parameterNames;
+ }
+
+ /**
+ * The type of the options parameter being suggested. This field is omitted if the parameterName
+ * field is omitted.
+ */
+ public String getParameterType() {
+ return parameterType;
+ }
+
+ /**
+ * The types of the parameters of the function or method being suggested. This field is omitted if
+ * the parameterNames field is omitted.
+ */
+ public List<String> getParameterTypes() {
+ return parameterTypes;
+ }
+
+ /**
+ * The relevance of this completion suggestion where a higher number indicates a higher relevance.
+ */
+ public int getRelevance() {
+ return relevance;
+ }
+
+ /**
+ * The number of required parameters for the function or method being suggested. This field is
+ * omitted if the parameterNames field is omitted.
+ */
+ public Integer getRequiredParameterCount() {
+ return requiredParameterCount;
+ }
+
+ /**
+ * The return type of the getter, function or method or the type of the field being suggested. This
+ * field is omitted if the suggested element is not a getter, function or method.
+ */
+ public String getReturnType() {
+ return returnType;
+ }
+
+ /**
+ * The number of characters that should be selected after insertion.
+ */
+ public int getSelectionLength() {
+ return selectionLength;
+ }
+
+ /**
+ * The offset, relative to the beginning of the completion, of where the selection should be placed
+ * after insertion.
+ */
+ public int getSelectionOffset() {
+ return selectionOffset;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(kind);
+ builder.append(relevance);
+ builder.append(completion);
+ builder.append(selectionOffset);
+ builder.append(selectionLength);
+ builder.append(isDeprecated);
+ builder.append(isPotential);
+ builder.append(docSummary);
+ builder.append(docComplete);
+ builder.append(declaringType);
+ builder.append(element);
+ builder.append(returnType);
+ builder.append(parameterNames);
+ builder.append(parameterTypes);
+ builder.append(requiredParameterCount);
+ builder.append(hasNamedParameters);
+ builder.append(parameterName);
+ builder.append(parameterType);
+ builder.append(importUri);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("kind", kind);
+ jsonObject.addProperty("relevance", relevance);
+ jsonObject.addProperty("completion", completion);
+ jsonObject.addProperty("selectionOffset", selectionOffset);
+ jsonObject.addProperty("selectionLength", selectionLength);
+ jsonObject.addProperty("isDeprecated", isDeprecated);
+ jsonObject.addProperty("isPotential", isPotential);
+ if (docSummary != null) {
+ jsonObject.addProperty("docSummary", docSummary);
+ }
+ if (docComplete != null) {
+ jsonObject.addProperty("docComplete", docComplete);
+ }
+ if (declaringType != null) {
+ jsonObject.addProperty("declaringType", declaringType);
+ }
+ if (element != null) {
+ jsonObject.add("element", element.toJson());
+ }
+ if (returnType != null) {
+ jsonObject.addProperty("returnType", returnType);
+ }
+ if (parameterNames != null) {
+ JsonArray jsonArrayParameterNames = new JsonArray();
+ for (String elt : parameterNames) {
+ jsonArrayParameterNames.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("parameterNames", jsonArrayParameterNames);
+ }
+ if (parameterTypes != null) {
+ JsonArray jsonArrayParameterTypes = new JsonArray();
+ for (String elt : parameterTypes) {
+ jsonArrayParameterTypes.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("parameterTypes", jsonArrayParameterTypes);
+ }
+ if (requiredParameterCount != null) {
+ jsonObject.addProperty("requiredParameterCount", requiredParameterCount);
+ }
+ if (hasNamedParameters != null) {
+ jsonObject.addProperty("hasNamedParameters", hasNamedParameters);
+ }
+ if (parameterName != null) {
+ jsonObject.addProperty("parameterName", parameterName);
+ }
+ if (parameterType != null) {
+ jsonObject.addProperty("parameterType", parameterType);
+ }
+ if (importUri != null) {
+ jsonObject.addProperty("importUri", importUri);
+ }
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("kind=");
+ builder.append(kind + ", ");
+ builder.append("relevance=");
+ builder.append(relevance + ", ");
+ builder.append("completion=");
+ builder.append(completion + ", ");
+ builder.append("selectionOffset=");
+ builder.append(selectionOffset + ", ");
+ builder.append("selectionLength=");
+ builder.append(selectionLength + ", ");
+ builder.append("isDeprecated=");
+ builder.append(isDeprecated + ", ");
+ builder.append("isPotential=");
+ builder.append(isPotential + ", ");
+ builder.append("docSummary=");
+ builder.append(docSummary + ", ");
+ builder.append("docComplete=");
+ builder.append(docComplete + ", ");
+ builder.append("declaringType=");
+ builder.append(declaringType + ", ");
+ builder.append("element=");
+ builder.append(element + ", ");
+ builder.append("returnType=");
+ builder.append(returnType + ", ");
+ builder.append("parameterNames=");
+ builder.append(StringUtils.join(parameterNames, ", ") + ", ");
+ builder.append("parameterTypes=");
+ builder.append(StringUtils.join(parameterTypes, ", ") + ", ");
+ builder.append("requiredParameterCount=");
+ builder.append(requiredParameterCount + ", ");
+ builder.append("hasNamedParameters=");
+ builder.append(hasNamedParameters + ", ");
+ builder.append("parameterName=");
+ builder.append(parameterName + ", ");
+ builder.append("parameterType=");
+ builder.append(parameterType + ", ");
+ builder.append("importUri=");
+ builder.append(importUri);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestionKind.java b/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestionKind.java
new file mode 100644
index 0000000..3e79fab
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestionKind.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the kinds of elements that can be included in a completion suggestion.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class CompletionSuggestionKind {
+
+ /**
+ * A list of arguments for the method or function that is being invoked. For this suggestion kind,
+ * the completion field is a textual representation of the invocation and the parameterNames,
+ * parameterTypes, and requiredParameterCount attributes are defined.
+ */
+ public static final String ARGUMENT_LIST = "ARGUMENT_LIST";
+
+ public static final String IMPORT = "IMPORT";
+
+ /**
+ * The element identifier should be inserted at the completion location. For example "someMethod"
+ * in import 'myLib.dart' show someMethod; . For suggestions of this kind, the element attribute is
+ * defined and the completion field is the element's identifier.
+ */
+ public static final String IDENTIFIER = "IDENTIFIER";
+
+ /**
+ * The element is being invoked at the completion location. For example, "someMethod" in
+ * x.someMethod(); . For suggestions of this kind, the element attribute is defined and the
+ * completion field is the element's identifier.
+ */
+ public static final String INVOCATION = "INVOCATION";
+
+ /**
+ * A keyword is being suggested. For suggestions of this kind, the completion is the keyword.
+ */
+ public static final String KEYWORD = "KEYWORD";
+
+ /**
+ * A named argument for the current callsite is being suggested. For suggestions of this kind, the
+ * completion is the named argument identifier including a trailing ':' and space.
+ */
+ public static final String NAMED_ARGUMENT = "NAMED_ARGUMENT";
+
+ public static final String OPTIONAL_ARGUMENT = "OPTIONAL_ARGUMENT";
+
+ public static final String PARAMETER = "PARAMETER";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/Element.java b/pkg/analysis_server/tool/spec/generated/java/types/Element.java
new file mode 100644
index 0000000..cbef7ea
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/Element.java
@@ -0,0 +1,297 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * Information about an element (something that can be declared in code).
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class Element {
+
+ public static final Element[] EMPTY_ARRAY = new Element[0];
+
+ public static final List<Element> EMPTY_LIST = Lists.newArrayList();
+
+ private static final int ABSTRACT = 0x01;
+
+ private static final int CONST = 0x02;
+
+ private static final int FINAL = 0x04;
+
+ private static final int TOP_LEVEL_STATIC = 0x08;
+
+ private static final int PRIVATE = 0x10;
+
+ private static final int DEPRECATED = 0x20;
+
+ /**
+ * The kind of the element.
+ */
+ private final String kind;
+
+ /**
+ * The name of the element. This is typically used as the label in the outline.
+ */
+ private final String name;
+
+ /**
+ * The location of the name in the declaration of the element.
+ */
+ private final Location location;
+
+ /**
+ * A bit-map containing the following flags:
+ *
+ * - 0x01 - set if the element is explicitly or implicitly abstract
+ * - 0x02 - set if the element was declared to be ‘const’
+ * - 0x04 - set if the element was declared to be ‘final’
+ * - 0x08 - set if the element is a static member of a class or is a top-level function or field
+ * - 0x10 - set if the element is private
+ * - 0x20 - set if the element is deprecated
+ */
+ private final int flags;
+
+ /**
+ * The parameter list for the element. If the element is not a method or function this field will
+ * not be defined. If the element doesn't have parameters (e.g. getter), this field will not be
+ * defined. If the element has zero parameters, this field will have a value of "()".
+ */
+ private final String parameters;
+
+ /**
+ * The return type of the element. If the element is not a method or function this field will not
+ * be defined. If the element does not have a declared return type, this field will contain an
+ * empty string.
+ */
+ private final String returnType;
+
+ /**
+ * The type parameter list for the element. If the element doesn't have type parameters, this field
+ * will not be defined.
+ */
+ private final String typeParameters;
+
+ /**
+ * Constructor for {@link Element}.
+ */
+ public Element(String kind, String name, Location location, int flags, String parameters, String returnType, String typeParameters) {
+ this.kind = kind;
+ this.name = name;
+ this.location = location;
+ this.flags = flags;
+ this.parameters = parameters;
+ this.returnType = returnType;
+ this.typeParameters = typeParameters;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof Element) {
+ Element other = (Element) obj;
+ return
+ ObjectUtilities.equals(other.kind, kind) &&
+ ObjectUtilities.equals(other.name, name) &&
+ ObjectUtilities.equals(other.location, location) &&
+ other.flags == flags &&
+ ObjectUtilities.equals(other.parameters, parameters) &&
+ ObjectUtilities.equals(other.returnType, returnType) &&
+ ObjectUtilities.equals(other.typeParameters, typeParameters);
+ }
+ return false;
+ }
+
+ public static Element fromJson(JsonObject jsonObject) {
+ String kind = jsonObject.get("kind").getAsString();
+ String name = jsonObject.get("name").getAsString();
+ Location location = jsonObject.get("location") == null ? null : Location.fromJson(jsonObject.get("location").getAsJsonObject());
+ int flags = jsonObject.get("flags").getAsInt();
+ String parameters = jsonObject.get("parameters") == null ? null : jsonObject.get("parameters").getAsString();
+ String returnType = jsonObject.get("returnType") == null ? null : jsonObject.get("returnType").getAsString();
+ String typeParameters = jsonObject.get("typeParameters") == null ? null : jsonObject.get("typeParameters").getAsString();
+ return new Element(kind, name, location, flags, parameters, returnType, typeParameters);
+ }
+
+ public static List<Element> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<Element> list = new ArrayList<Element>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * A bit-map containing the following flags:
+ *
+ * - 0x01 - set if the element is explicitly or implicitly abstract
+ * - 0x02 - set if the element was declared to be ‘const’
+ * - 0x04 - set if the element was declared to be ‘final’
+ * - 0x08 - set if the element is a static member of a class or is a top-level function or field
+ * - 0x10 - set if the element is private
+ * - 0x20 - set if the element is deprecated
+ */
+ public int getFlags() {
+ return flags;
+ }
+
+ /**
+ * The kind of the element.
+ */
+ public String getKind() {
+ return kind;
+ }
+
+ /**
+ * The location of the name in the declaration of the element.
+ */
+ public Location getLocation() {
+ return location;
+ }
+
+ /**
+ * The name of the element. This is typically used as the label in the outline.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * The parameter list for the element. If the element is not a method or function this field will
+ * not be defined. If the element doesn't have parameters (e.g. getter), this field will not be
+ * defined. If the element has zero parameters, this field will have a value of "()".
+ */
+ public String getParameters() {
+ return parameters;
+ }
+
+ /**
+ * The return type of the element. If the element is not a method or function this field will not
+ * be defined. If the element does not have a declared return type, this field will contain an
+ * empty string.
+ */
+ public String getReturnType() {
+ return returnType;
+ }
+
+ /**
+ * The type parameter list for the element. If the element doesn't have type parameters, this field
+ * will not be defined.
+ */
+ public String getTypeParameters() {
+ return typeParameters;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(kind);
+ builder.append(name);
+ builder.append(location);
+ builder.append(flags);
+ builder.append(parameters);
+ builder.append(returnType);
+ builder.append(typeParameters);
+ return builder.toHashCode();
+ }
+
+ public boolean isAbstract() {
+ return (flags & ABSTRACT) != 0;
+ }
+
+ public boolean isConst() {
+ return (flags & CONST) != 0;
+ }
+
+ public boolean isDeprecated() {
+ return (flags & DEPRECATED) != 0;
+ }
+
+ public boolean isFinal() {
+ return (flags & FINAL) != 0;
+ }
+
+ public boolean isPrivate() {
+ return (flags & PRIVATE) != 0;
+ }
+
+ public boolean isTopLevelOrStatic() {
+ return (flags & TOP_LEVEL_STATIC) != 0;
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("kind", kind);
+ jsonObject.addProperty("name", name);
+ if (location != null) {
+ jsonObject.add("location", location.toJson());
+ }
+ jsonObject.addProperty("flags", flags);
+ if (parameters != null) {
+ jsonObject.addProperty("parameters", parameters);
+ }
+ if (returnType != null) {
+ jsonObject.addProperty("returnType", returnType);
+ }
+ if (typeParameters != null) {
+ jsonObject.addProperty("typeParameters", typeParameters);
+ }
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("kind=");
+ builder.append(kind + ", ");
+ builder.append("name=");
+ builder.append(name + ", ");
+ builder.append("location=");
+ builder.append(location + ", ");
+ builder.append("flags=");
+ builder.append(flags + ", ");
+ builder.append("parameters=");
+ builder.append(parameters + ", ");
+ builder.append("returnType=");
+ builder.append(returnType + ", ");
+ builder.append("typeParameters=");
+ builder.append(typeParameters);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ElementKind.java b/pkg/analysis_server/tool/spec/generated/java/types/ElementKind.java
new file mode 100644
index 0000000..ff0b4ee
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ElementKind.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the kinds of elements.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class ElementKind {
+
+ public static final String CLASS = "CLASS";
+
+ public static final String CLASS_TYPE_ALIAS = "CLASS_TYPE_ALIAS";
+
+ public static final String COMPILATION_UNIT = "COMPILATION_UNIT";
+
+ public static final String CONSTRUCTOR = "CONSTRUCTOR";
+
+ public static final String ENUM = "ENUM";
+
+ public static final String ENUM_CONSTANT = "ENUM_CONSTANT";
+
+ public static final String FIELD = "FIELD";
+
+ public static final String FUNCTION = "FUNCTION";
+
+ public static final String FUNCTION_TYPE_ALIAS = "FUNCTION_TYPE_ALIAS";
+
+ public static final String GETTER = "GETTER";
+
+ public static final String LABEL = "LABEL";
+
+ public static final String LIBRARY = "LIBRARY";
+
+ public static final String LOCAL_VARIABLE = "LOCAL_VARIABLE";
+
+ public static final String METHOD = "METHOD";
+
+ public static final String PARAMETER = "PARAMETER";
+
+ public static final String PREFIX = "PREFIX";
+
+ public static final String SETTER = "SETTER";
+
+ public static final String TOP_LEVEL_VARIABLE = "TOP_LEVEL_VARIABLE";
+
+ public static final String TYPE_PARAMETER = "TYPE_PARAMETER";
+
+ public static final String UNIT_TEST_GROUP = "UNIT_TEST_GROUP";
+
+ public static final String UNIT_TEST_TEST = "UNIT_TEST_TEST";
+
+ public static final String UNKNOWN = "UNKNOWN";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExecutableFile.java b/pkg/analysis_server/tool/spec/generated/java/types/ExecutableFile.java
new file mode 100644
index 0000000..140984a
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExecutableFile.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of an executable file.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class ExecutableFile {
+
+ public static final ExecutableFile[] EMPTY_ARRAY = new ExecutableFile[0];
+
+ public static final List<ExecutableFile> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The path of the executable file.
+ */
+ private final String file;
+
+ /**
+ * The kind of the executable file.
+ */
+ private final String kind;
+
+ /**
+ * Constructor for {@link ExecutableFile}.
+ */
+ public ExecutableFile(String file, String kind) {
+ this.file = file;
+ this.kind = kind;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof ExecutableFile) {
+ ExecutableFile other = (ExecutableFile) obj;
+ return
+ ObjectUtilities.equals(other.file, file) &&
+ ObjectUtilities.equals(other.kind, kind);
+ }
+ return false;
+ }
+
+ public static ExecutableFile fromJson(JsonObject jsonObject) {
+ String file = jsonObject.get("file").getAsString();
+ String kind = jsonObject.get("kind").getAsString();
+ return new ExecutableFile(file, kind);
+ }
+
+ public static List<ExecutableFile> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<ExecutableFile> list = new ArrayList<ExecutableFile>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The path of the executable file.
+ */
+ public String getFile() {
+ return file;
+ }
+
+ /**
+ * The kind of the executable file.
+ */
+ public String getKind() {
+ return kind;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(file);
+ builder.append(kind);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("file", file);
+ jsonObject.addProperty("kind", kind);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("file=");
+ builder.append(file + ", ");
+ builder.append("kind=");
+ builder.append(kind);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExecutableKind.java b/pkg/analysis_server/tool/spec/generated/java/types/ExecutableKind.java
new file mode 100644
index 0000000..a206c9c
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExecutableKind.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the kinds of executable files.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class ExecutableKind {
+
+ public static final String CLIENT = "CLIENT";
+
+ public static final String EITHER = "EITHER";
+
+ public static final String NOT_EXECUTABLE = "NOT_EXECUTABLE";
+
+ public static final String SERVER = "SERVER";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExecutionService.java b/pkg/analysis_server/tool/spec/generated/java/types/ExecutionService.java
new file mode 100644
index 0000000..499982a
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExecutionService.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the services provided by the execution domain.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class ExecutionService {
+
+ public static final String LAUNCH_DATA = "LAUNCH_DATA";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableFeedback.java
new file mode 100644
index 0000000..8dc8afc
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableFeedback.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class ExtractLocalVariableFeedback extends RefactoringFeedback {
+
+ public static final ExtractLocalVariableFeedback[] EMPTY_ARRAY = new ExtractLocalVariableFeedback[0];
+
+ public static final List<ExtractLocalVariableFeedback> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The proposed names for the local variable.
+ */
+ private final List<String> names;
+
+ /**
+ * The offsets of the expressions that would be replaced by a reference to the variable.
+ */
+ private final int[] offsets;
+
+ /**
+ * The lengths of the expressions that would be replaced by a reference to the variable. The
+ * lengths correspond to the offsets. In other words, for a given expression, if the offset of that
+ * expression is offsets[i], then the length of that expression is lengths[i].
+ */
+ private final int[] lengths;
+
+ /**
+ * Constructor for {@link ExtractLocalVariableFeedback}.
+ */
+ public ExtractLocalVariableFeedback(List<String> names, int[] offsets, int[] lengths) {
+ this.names = names;
+ this.offsets = offsets;
+ this.lengths = lengths;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof ExtractLocalVariableFeedback) {
+ ExtractLocalVariableFeedback other = (ExtractLocalVariableFeedback) obj;
+ return
+ ObjectUtilities.equals(other.names, names) &&
+ Arrays.equals(other.offsets, offsets) &&
+ Arrays.equals(other.lengths, lengths);
+ }
+ return false;
+ }
+
+ public static ExtractLocalVariableFeedback fromJson(JsonObject jsonObject) {
+ List<String> names = JsonUtilities.decodeStringList(jsonObject.get("names").getAsJsonArray());
+ int[] offsets = JsonUtilities.decodeIntArray(jsonObject.get("offsets").getAsJsonArray());
+ int[] lengths = JsonUtilities.decodeIntArray(jsonObject.get("lengths").getAsJsonArray());
+ return new ExtractLocalVariableFeedback(names, offsets, lengths);
+ }
+
+ public static List<ExtractLocalVariableFeedback> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<ExtractLocalVariableFeedback> list = new ArrayList<ExtractLocalVariableFeedback>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The lengths of the expressions that would be replaced by a reference to the variable. The
+ * lengths correspond to the offsets. In other words, for a given expression, if the offset of that
+ * expression is offsets[i], then the length of that expression is lengths[i].
+ */
+ public int[] getLengths() {
+ return lengths;
+ }
+
+ /**
+ * The proposed names for the local variable.
+ */
+ public List<String> getNames() {
+ return names;
+ }
+
+ /**
+ * The offsets of the expressions that would be replaced by a reference to the variable.
+ */
+ public int[] getOffsets() {
+ return offsets;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(names);
+ builder.append(offsets);
+ builder.append(lengths);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ JsonArray jsonArrayNames = new JsonArray();
+ for (String elt : names) {
+ jsonArrayNames.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("names", jsonArrayNames);
+ JsonArray jsonArrayOffsets = new JsonArray();
+ for (int elt : offsets) {
+ jsonArrayOffsets.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("offsets", jsonArrayOffsets);
+ JsonArray jsonArrayLengths = new JsonArray();
+ for (int elt : lengths) {
+ jsonArrayLengths.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("lengths", jsonArrayLengths);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("names=");
+ builder.append(StringUtils.join(names, ", ") + ", ");
+ builder.append("offsets=");
+ builder.append(StringUtils.join(offsets, ", ") + ", ");
+ builder.append("lengths=");
+ builder.append(StringUtils.join(lengths, ", "));
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableOptions.java
new file mode 100644
index 0000000..543d20db
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableOptions.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class ExtractLocalVariableOptions extends RefactoringOptions {
+
+ public static final ExtractLocalVariableOptions[] EMPTY_ARRAY = new ExtractLocalVariableOptions[0];
+
+ public static final List<ExtractLocalVariableOptions> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The name that the local variable should be given.
+ */
+ private String name;
+
+ /**
+ * True if all occurrences of the expression within the scope in which the variable will be defined
+ * should be replaced by a reference to the local variable. The expression used to initiate the
+ * refactoring will always be replaced.
+ */
+ private boolean extractAll;
+
+ /**
+ * Constructor for {@link ExtractLocalVariableOptions}.
+ */
+ public ExtractLocalVariableOptions(String name, boolean extractAll) {
+ this.name = name;
+ this.extractAll = extractAll;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof ExtractLocalVariableOptions) {
+ ExtractLocalVariableOptions other = (ExtractLocalVariableOptions) obj;
+ return
+ ObjectUtilities.equals(other.name, name) &&
+ other.extractAll == extractAll;
+ }
+ return false;
+ }
+
+ public static ExtractLocalVariableOptions fromJson(JsonObject jsonObject) {
+ String name = jsonObject.get("name").getAsString();
+ boolean extractAll = jsonObject.get("extractAll").getAsBoolean();
+ return new ExtractLocalVariableOptions(name, extractAll);
+ }
+
+ public static List<ExtractLocalVariableOptions> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<ExtractLocalVariableOptions> list = new ArrayList<ExtractLocalVariableOptions>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * True if all occurrences of the expression within the scope in which the variable will be defined
+ * should be replaced by a reference to the local variable. The expression used to initiate the
+ * refactoring will always be replaced.
+ */
+ public boolean extractAll() {
+ return extractAll;
+ }
+
+ /**
+ * The name that the local variable should be given.
+ */
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(name);
+ builder.append(extractAll);
+ return builder.toHashCode();
+ }
+
+ /**
+ * True if all occurrences of the expression within the scope in which the variable will be defined
+ * should be replaced by a reference to the local variable. The expression used to initiate the
+ * refactoring will always be replaced.
+ */
+ public void setExtractAll(boolean extractAll) {
+ this.extractAll = extractAll;
+ }
+
+ /**
+ * The name that the local variable should be given.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("name", name);
+ jsonObject.addProperty("extractAll", extractAll);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("name=");
+ builder.append(name + ", ");
+ builder.append("extractAll=");
+ builder.append(extractAll);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodFeedback.java
new file mode 100644
index 0000000..7e446a9
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodFeedback.java
@@ -0,0 +1,272 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class ExtractMethodFeedback extends RefactoringFeedback {
+
+ public static final ExtractMethodFeedback[] EMPTY_ARRAY = new ExtractMethodFeedback[0];
+
+ public static final List<ExtractMethodFeedback> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The offset to the beginning of the expression or statements that will be extracted.
+ */
+ private final int offset;
+
+ /**
+ * The length of the expression or statements that will be extracted.
+ */
+ private final int length;
+
+ /**
+ * The proposed return type for the method. If the returned element does not have a declared return
+ * type, this field will contain an empty string.
+ */
+ private final String returnType;
+
+ /**
+ * The proposed names for the method.
+ */
+ private final List<String> names;
+
+ /**
+ * True if a getter could be created rather than a method.
+ */
+ private final boolean canCreateGetter;
+
+ /**
+ * The proposed parameters for the method.
+ */
+ private final List<RefactoringMethodParameter> parameters;
+
+ /**
+ * The offsets of the expressions or statements that would be replaced by an invocation of the
+ * method.
+ */
+ private final int[] offsets;
+
+ /**
+ * The lengths of the expressions or statements that would be replaced by an invocation of the
+ * method. The lengths correspond to the offsets. In other words, for a given expression (or block
+ * of statements), if the offset of that expression is offsets[i], then the length of that
+ * expression is lengths[i].
+ */
+ private final int[] lengths;
+
+ /**
+ * Constructor for {@link ExtractMethodFeedback}.
+ */
+ public ExtractMethodFeedback(int offset, int length, String returnType, List<String> names, boolean canCreateGetter, List<RefactoringMethodParameter> parameters, int[] offsets, int[] lengths) {
+ this.offset = offset;
+ this.length = length;
+ this.returnType = returnType;
+ this.names = names;
+ this.canCreateGetter = canCreateGetter;
+ this.parameters = parameters;
+ this.offsets = offsets;
+ this.lengths = lengths;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof ExtractMethodFeedback) {
+ ExtractMethodFeedback other = (ExtractMethodFeedback) obj;
+ return
+ other.offset == offset &&
+ other.length == length &&
+ ObjectUtilities.equals(other.returnType, returnType) &&
+ ObjectUtilities.equals(other.names, names) &&
+ other.canCreateGetter == canCreateGetter &&
+ ObjectUtilities.equals(other.parameters, parameters) &&
+ Arrays.equals(other.offsets, offsets) &&
+ Arrays.equals(other.lengths, lengths);
+ }
+ return false;
+ }
+
+ public static ExtractMethodFeedback fromJson(JsonObject jsonObject) {
+ int offset = jsonObject.get("offset").getAsInt();
+ int length = jsonObject.get("length").getAsInt();
+ String returnType = jsonObject.get("returnType").getAsString();
+ List<String> names = JsonUtilities.decodeStringList(jsonObject.get("names").getAsJsonArray());
+ boolean canCreateGetter = jsonObject.get("canCreateGetter").getAsBoolean();
+ List<RefactoringMethodParameter> parameters = RefactoringMethodParameter.fromJsonArray(jsonObject.get("parameters").getAsJsonArray());
+ int[] offsets = JsonUtilities.decodeIntArray(jsonObject.get("offsets").getAsJsonArray());
+ int[] lengths = JsonUtilities.decodeIntArray(jsonObject.get("lengths").getAsJsonArray());
+ return new ExtractMethodFeedback(offset, length, returnType, names, canCreateGetter, parameters, offsets, lengths);
+ }
+
+ public static List<ExtractMethodFeedback> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<ExtractMethodFeedback> list = new ArrayList<ExtractMethodFeedback>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * True if a getter could be created rather than a method.
+ */
+ public boolean canCreateGetter() {
+ return canCreateGetter;
+ }
+
+ /**
+ * The length of the expression or statements that will be extracted.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The lengths of the expressions or statements that would be replaced by an invocation of the
+ * method. The lengths correspond to the offsets. In other words, for a given expression (or block
+ * of statements), if the offset of that expression is offsets[i], then the length of that
+ * expression is lengths[i].
+ */
+ public int[] getLengths() {
+ return lengths;
+ }
+
+ /**
+ * The proposed names for the method.
+ */
+ public List<String> getNames() {
+ return names;
+ }
+
+ /**
+ * The offset to the beginning of the expression or statements that will be extracted.
+ */
+ public int getOffset() {
+ return offset;
+ }
+
+ /**
+ * The offsets of the expressions or statements that would be replaced by an invocation of the
+ * method.
+ */
+ public int[] getOffsets() {
+ return offsets;
+ }
+
+ /**
+ * The proposed parameters for the method.
+ */
+ public List<RefactoringMethodParameter> getParameters() {
+ return parameters;
+ }
+
+ /**
+ * The proposed return type for the method. If the returned element does not have a declared return
+ * type, this field will contain an empty string.
+ */
+ public String getReturnType() {
+ return returnType;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(offset);
+ builder.append(length);
+ builder.append(returnType);
+ builder.append(names);
+ builder.append(canCreateGetter);
+ builder.append(parameters);
+ builder.append(offsets);
+ builder.append(lengths);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("offset", offset);
+ jsonObject.addProperty("length", length);
+ jsonObject.addProperty("returnType", returnType);
+ JsonArray jsonArrayNames = new JsonArray();
+ for (String elt : names) {
+ jsonArrayNames.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("names", jsonArrayNames);
+ jsonObject.addProperty("canCreateGetter", canCreateGetter);
+ JsonArray jsonArrayParameters = new JsonArray();
+ for (RefactoringMethodParameter elt : parameters) {
+ jsonArrayParameters.add(elt.toJson());
+ }
+ jsonObject.add("parameters", jsonArrayParameters);
+ JsonArray jsonArrayOffsets = new JsonArray();
+ for (int elt : offsets) {
+ jsonArrayOffsets.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("offsets", jsonArrayOffsets);
+ JsonArray jsonArrayLengths = new JsonArray();
+ for (int elt : lengths) {
+ jsonArrayLengths.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("lengths", jsonArrayLengths);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("offset=");
+ builder.append(offset + ", ");
+ builder.append("length=");
+ builder.append(length + ", ");
+ builder.append("returnType=");
+ builder.append(returnType + ", ");
+ builder.append("names=");
+ builder.append(StringUtils.join(names, ", ") + ", ");
+ builder.append("canCreateGetter=");
+ builder.append(canCreateGetter + ", ");
+ builder.append("parameters=");
+ builder.append(StringUtils.join(parameters, ", ") + ", ");
+ builder.append("offsets=");
+ builder.append(StringUtils.join(offsets, ", ") + ", ");
+ builder.append("lengths=");
+ builder.append(StringUtils.join(lengths, ", "));
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodOptions.java
new file mode 100644
index 0000000..54b2a6b
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodOptions.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class ExtractMethodOptions extends RefactoringOptions {
+
+ public static final ExtractMethodOptions[] EMPTY_ARRAY = new ExtractMethodOptions[0];
+
+ public static final List<ExtractMethodOptions> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The return type that should be defined for the method.
+ */
+ private String returnType;
+
+ /**
+ * True if a getter should be created rather than a method. It is an error if this field is true
+ * and the list of parameters is non-empty.
+ */
+ private boolean createGetter;
+
+ /**
+ * The name that the method should be given.
+ */
+ private String name;
+
+ /**
+ * The parameters that should be defined for the method.
+ *
+ * It is an error if a REQUIRED or NAMED parameter follows a POSITIONAL parameter. It is an error
+ * if a REQUIRED or POSITIONAL parameter follows a NAMED parameter.
+ *
+ * - To change the order and/or update proposed parameters, add parameters with the same
+ * identifiers as proposed.
+ * - To add new parameters, omit their identifier.
+ * - To remove some parameters, omit them in this list.
+ */
+ private List<RefactoringMethodParameter> parameters;
+
+ /**
+ * True if all occurrences of the expression or statements should be replaced by an invocation of
+ * the method. The expression or statements used to initiate the refactoring will always be
+ * replaced.
+ */
+ private boolean extractAll;
+
+ /**
+ * Constructor for {@link ExtractMethodOptions}.
+ */
+ public ExtractMethodOptions(String returnType, boolean createGetter, String name, List<RefactoringMethodParameter> parameters, boolean extractAll) {
+ this.returnType = returnType;
+ this.createGetter = createGetter;
+ this.name = name;
+ this.parameters = parameters;
+ this.extractAll = extractAll;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof ExtractMethodOptions) {
+ ExtractMethodOptions other = (ExtractMethodOptions) obj;
+ return
+ ObjectUtilities.equals(other.returnType, returnType) &&
+ other.createGetter == createGetter &&
+ ObjectUtilities.equals(other.name, name) &&
+ ObjectUtilities.equals(other.parameters, parameters) &&
+ other.extractAll == extractAll;
+ }
+ return false;
+ }
+
+ public static ExtractMethodOptions fromJson(JsonObject jsonObject) {
+ String returnType = jsonObject.get("returnType").getAsString();
+ boolean createGetter = jsonObject.get("createGetter").getAsBoolean();
+ String name = jsonObject.get("name").getAsString();
+ List<RefactoringMethodParameter> parameters = RefactoringMethodParameter.fromJsonArray(jsonObject.get("parameters").getAsJsonArray());
+ boolean extractAll = jsonObject.get("extractAll").getAsBoolean();
+ return new ExtractMethodOptions(returnType, createGetter, name, parameters, extractAll);
+ }
+
+ public static List<ExtractMethodOptions> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<ExtractMethodOptions> list = new ArrayList<ExtractMethodOptions>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * True if a getter should be created rather than a method. It is an error if this field is true
+ * and the list of parameters is non-empty.
+ */
+ public boolean createGetter() {
+ return createGetter;
+ }
+
+ /**
+ * True if all occurrences of the expression or statements should be replaced by an invocation of
+ * the method. The expression or statements used to initiate the refactoring will always be
+ * replaced.
+ */
+ public boolean extractAll() {
+ return extractAll;
+ }
+
+ /**
+ * The name that the method should be given.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * The parameters that should be defined for the method.
+ *
+ * It is an error if a REQUIRED or NAMED parameter follows a POSITIONAL parameter. It is an error
+ * if a REQUIRED or POSITIONAL parameter follows a NAMED parameter.
+ *
+ * - To change the order and/or update proposed parameters, add parameters with the same
+ * identifiers as proposed.
+ * - To add new parameters, omit their identifier.
+ * - To remove some parameters, omit them in this list.
+ */
+ public List<RefactoringMethodParameter> getParameters() {
+ return parameters;
+ }
+
+ /**
+ * The return type that should be defined for the method.
+ */
+ public String getReturnType() {
+ return returnType;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(returnType);
+ builder.append(createGetter);
+ builder.append(name);
+ builder.append(parameters);
+ builder.append(extractAll);
+ return builder.toHashCode();
+ }
+
+ /**
+ * True if a getter should be created rather than a method. It is an error if this field is true
+ * and the list of parameters is non-empty.
+ */
+ public void setCreateGetter(boolean createGetter) {
+ this.createGetter = createGetter;
+ }
+
+ /**
+ * True if all occurrences of the expression or statements should be replaced by an invocation of
+ * the method. The expression or statements used to initiate the refactoring will always be
+ * replaced.
+ */
+ public void setExtractAll(boolean extractAll) {
+ this.extractAll = extractAll;
+ }
+
+ /**
+ * The name that the method should be given.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * The parameters that should be defined for the method.
+ *
+ * It is an error if a REQUIRED or NAMED parameter follows a POSITIONAL parameter. It is an error
+ * if a REQUIRED or POSITIONAL parameter follows a NAMED parameter.
+ *
+ * - To change the order and/or update proposed parameters, add parameters with the same
+ * identifiers as proposed.
+ * - To add new parameters, omit their identifier.
+ * - To remove some parameters, omit them in this list.
+ */
+ public void setParameters(List<RefactoringMethodParameter> parameters) {
+ this.parameters = parameters;
+ }
+
+ /**
+ * The return type that should be defined for the method.
+ */
+ public void setReturnType(String returnType) {
+ this.returnType = returnType;
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("returnType", returnType);
+ jsonObject.addProperty("createGetter", createGetter);
+ jsonObject.addProperty("name", name);
+ JsonArray jsonArrayParameters = new JsonArray();
+ for (RefactoringMethodParameter elt : parameters) {
+ jsonArrayParameters.add(elt.toJson());
+ }
+ jsonObject.add("parameters", jsonArrayParameters);
+ jsonObject.addProperty("extractAll", extractAll);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("returnType=");
+ builder.append(returnType + ", ");
+ builder.append("createGetter=");
+ builder.append(createGetter + ", ");
+ builder.append("name=");
+ builder.append(name + ", ");
+ builder.append("parameters=");
+ builder.append(StringUtils.join(parameters, ", ") + ", ");
+ builder.append("extractAll=");
+ builder.append(extractAll);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/FoldingKind.java b/pkg/analysis_server/tool/spec/generated/java/types/FoldingKind.java
new file mode 100644
index 0000000..f48452c
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/FoldingKind.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the kinds of folding regions.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class FoldingKind {
+
+ public static final String COMMENT = "COMMENT";
+
+ public static final String CLASS_MEMBER = "CLASS_MEMBER";
+
+ public static final String DIRECTIVES = "DIRECTIVES";
+
+ public static final String DOCUMENTATION_COMMENT = "DOCUMENTATION_COMMENT";
+
+ public static final String TOP_LEVEL_DECLARATION = "TOP_LEVEL_DECLARATION";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/FoldingRegion.java b/pkg/analysis_server/tool/spec/generated/java/types/FoldingRegion.java
new file mode 100644
index 0000000..75b0736
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/FoldingRegion.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of a region that can be folded.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class FoldingRegion {
+
+ public static final FoldingRegion[] EMPTY_ARRAY = new FoldingRegion[0];
+
+ public static final List<FoldingRegion> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The kind of the region.
+ */
+ private final String kind;
+
+ /**
+ * The offset of the region to be folded.
+ */
+ private final int offset;
+
+ /**
+ * The length of the region to be folded.
+ */
+ private final int length;
+
+ /**
+ * Constructor for {@link FoldingRegion}.
+ */
+ public FoldingRegion(String kind, int offset, int length) {
+ this.kind = kind;
+ this.offset = offset;
+ this.length = length;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof FoldingRegion) {
+ FoldingRegion other = (FoldingRegion) obj;
+ return
+ ObjectUtilities.equals(other.kind, kind) &&
+ other.offset == offset &&
+ other.length == length;
+ }
+ return false;
+ }
+
+ public static FoldingRegion fromJson(JsonObject jsonObject) {
+ String kind = jsonObject.get("kind").getAsString();
+ int offset = jsonObject.get("offset").getAsInt();
+ int length = jsonObject.get("length").getAsInt();
+ return new FoldingRegion(kind, offset, length);
+ }
+
+ public static List<FoldingRegion> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<FoldingRegion> list = new ArrayList<FoldingRegion>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The kind of the region.
+ */
+ public String getKind() {
+ return kind;
+ }
+
+ /**
+ * The length of the region to be folded.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The offset of the region to be folded.
+ */
+ public int getOffset() {
+ return offset;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(kind);
+ builder.append(offset);
+ builder.append(length);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("kind", kind);
+ jsonObject.addProperty("offset", offset);
+ jsonObject.addProperty("length", length);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("kind=");
+ builder.append(kind + ", ");
+ builder.append("offset=");
+ builder.append(offset + ", ");
+ builder.append("length=");
+ builder.append(length);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegion.java b/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegion.java
new file mode 100644
index 0000000..11b64e0
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegion.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of a region that could have special highlighting associated with it.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class HighlightRegion {
+
+ public static final HighlightRegion[] EMPTY_ARRAY = new HighlightRegion[0];
+
+ public static final List<HighlightRegion> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The type of highlight associated with the region.
+ */
+ private final String type;
+
+ /**
+ * The offset of the region to be highlighted.
+ */
+ private final int offset;
+
+ /**
+ * The length of the region to be highlighted.
+ */
+ private final int length;
+
+ /**
+ * Constructor for {@link HighlightRegion}.
+ */
+ public HighlightRegion(String type, int offset, int length) {
+ this.type = type;
+ this.offset = offset;
+ this.length = length;
+ }
+
+ public boolean containsInclusive(int x) {
+ return offset <= x && x <= offset + length;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof HighlightRegion) {
+ HighlightRegion other = (HighlightRegion) obj;
+ return
+ ObjectUtilities.equals(other.type, type) &&
+ other.offset == offset &&
+ other.length == length;
+ }
+ return false;
+ }
+
+ public static HighlightRegion fromJson(JsonObject jsonObject) {
+ String type = jsonObject.get("type").getAsString();
+ int offset = jsonObject.get("offset").getAsInt();
+ int length = jsonObject.get("length").getAsInt();
+ return new HighlightRegion(type, offset, length);
+ }
+
+ public static List<HighlightRegion> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<HighlightRegion> list = new ArrayList<HighlightRegion>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The length of the region to be highlighted.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The offset of the region to be highlighted.
+ */
+ public int getOffset() {
+ return offset;
+ }
+
+ /**
+ * The type of highlight associated with the region.
+ */
+ public String getType() {
+ return type;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(type);
+ builder.append(offset);
+ builder.append(length);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("type", type);
+ jsonObject.addProperty("offset", offset);
+ jsonObject.addProperty("length", length);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("type=");
+ builder.append(type + ", ");
+ builder.append("offset=");
+ builder.append(offset + ", ");
+ builder.append("length=");
+ builder.append(length);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegionType.java b/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegionType.java
new file mode 100644
index 0000000..cf9d006
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegionType.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the kinds of highlighting that can be applied to files.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class HighlightRegionType {
+
+ public static final String ANNOTATION = "ANNOTATION";
+
+ public static final String BUILT_IN = "BUILT_IN";
+
+ public static final String CLASS = "CLASS";
+
+ public static final String COMMENT_BLOCK = "COMMENT_BLOCK";
+
+ public static final String COMMENT_DOCUMENTATION = "COMMENT_DOCUMENTATION";
+
+ public static final String COMMENT_END_OF_LINE = "COMMENT_END_OF_LINE";
+
+ public static final String CONSTRUCTOR = "CONSTRUCTOR";
+
+ public static final String DIRECTIVE = "DIRECTIVE";
+
+ public static final String DYNAMIC_TYPE = "DYNAMIC_TYPE";
+
+ public static final String ENUM = "ENUM";
+
+ public static final String ENUM_CONSTANT = "ENUM_CONSTANT";
+
+ public static final String FIELD = "FIELD";
+
+ public static final String FIELD_STATIC = "FIELD_STATIC";
+
+ public static final String FUNCTION = "FUNCTION";
+
+ public static final String FUNCTION_DECLARATION = "FUNCTION_DECLARATION";
+
+ public static final String FUNCTION_TYPE_ALIAS = "FUNCTION_TYPE_ALIAS";
+
+ public static final String GETTER_DECLARATION = "GETTER_DECLARATION";
+
+ public static final String IDENTIFIER_DEFAULT = "IDENTIFIER_DEFAULT";
+
+ public static final String IMPORT_PREFIX = "IMPORT_PREFIX";
+
+ public static final String KEYWORD = "KEYWORD";
+
+ public static final String LABEL = "LABEL";
+
+ public static final String LITERAL_BOOLEAN = "LITERAL_BOOLEAN";
+
+ public static final String LITERAL_DOUBLE = "LITERAL_DOUBLE";
+
+ public static final String LITERAL_INTEGER = "LITERAL_INTEGER";
+
+ public static final String LITERAL_LIST = "LITERAL_LIST";
+
+ public static final String LITERAL_MAP = "LITERAL_MAP";
+
+ public static final String LITERAL_STRING = "LITERAL_STRING";
+
+ public static final String LOCAL_VARIABLE = "LOCAL_VARIABLE";
+
+ public static final String LOCAL_VARIABLE_DECLARATION = "LOCAL_VARIABLE_DECLARATION";
+
+ public static final String METHOD = "METHOD";
+
+ public static final String METHOD_DECLARATION = "METHOD_DECLARATION";
+
+ public static final String METHOD_DECLARATION_STATIC = "METHOD_DECLARATION_STATIC";
+
+ public static final String METHOD_STATIC = "METHOD_STATIC";
+
+ public static final String PARAMETER = "PARAMETER";
+
+ public static final String SETTER_DECLARATION = "SETTER_DECLARATION";
+
+ public static final String TOP_LEVEL_VARIABLE = "TOP_LEVEL_VARIABLE";
+
+ public static final String TYPE_NAME_DYNAMIC = "TYPE_NAME_DYNAMIC";
+
+ public static final String TYPE_PARAMETER = "TYPE_PARAMETER";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/HoverInformation.java b/pkg/analysis_server/tool/spec/generated/java/types/HoverInformation.java
new file mode 100644
index 0000000..b203bcb
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/HoverInformation.java
@@ -0,0 +1,351 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * The hover information associated with a specific location.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class HoverInformation {
+
+ public static final HoverInformation[] EMPTY_ARRAY = new HoverInformation[0];
+
+ public static final List<HoverInformation> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The offset of the range of characters that encompases the cursor position and has the same hover
+ * information as the cursor position.
+ */
+ private final int offset;
+
+ /**
+ * The length of the range of characters that encompases the cursor position and has the same hover
+ * information as the cursor position.
+ */
+ private final int length;
+
+ /**
+ * The path to the defining compilation unit of the library in which the referenced element is
+ * declared. This data is omitted if there is no referenced element, or if the element is declared
+ * inside an HTML file.
+ */
+ private final String containingLibraryPath;
+
+ /**
+ * The name of the library in which the referenced element is declared. This data is omitted if
+ * there is no referenced element, or if the element is declared inside an HTML file.
+ */
+ private final String containingLibraryName;
+
+ /**
+ * A human-readable description of the class declaring the element being referenced. This data is
+ * omitted if there is no referenced element, or if the element is not a class member.
+ */
+ private final String containingClassDescription;
+
+ /**
+ * The dartdoc associated with the referenced element. Other than the removal of the comment
+ * delimiters, including leading asterisks in the case of a block comment, the dartdoc is
+ * unprocessed markdown. This data is omitted if there is no referenced element, or if the element
+ * has no dartdoc.
+ */
+ private final String dartdoc;
+
+ /**
+ * A human-readable description of the element being referenced. This data is omitted if there is
+ * no referenced element.
+ */
+ private final String elementDescription;
+
+ /**
+ * A human-readable description of the kind of element being referenced (such as “class” or
+ * “function type alias”). This data is omitted if there is no referenced element.
+ */
+ private final String elementKind;
+
+ /**
+ * A human-readable description of the parameter corresponding to the expression being hovered
+ * over. This data is omitted if the location is not in an argument to a function.
+ */
+ private final String parameter;
+
+ /**
+ * The name of the propagated type of the expression. This data is omitted if the location does not
+ * correspond to an expression or if there is no propagated type information.
+ */
+ private final String propagatedType;
+
+ /**
+ * The name of the static type of the expression. This data is omitted if the location does not
+ * correspond to an expression.
+ */
+ private final String staticType;
+
+ /**
+ * Constructor for {@link HoverInformation}.
+ */
+ public HoverInformation(int offset, int length, String containingLibraryPath, String containingLibraryName, String containingClassDescription, String dartdoc, String elementDescription, String elementKind, String parameter, String propagatedType, String staticType) {
+ this.offset = offset;
+ this.length = length;
+ this.containingLibraryPath = containingLibraryPath;
+ this.containingLibraryName = containingLibraryName;
+ this.containingClassDescription = containingClassDescription;
+ this.dartdoc = dartdoc;
+ this.elementDescription = elementDescription;
+ this.elementKind = elementKind;
+ this.parameter = parameter;
+ this.propagatedType = propagatedType;
+ this.staticType = staticType;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof HoverInformation) {
+ HoverInformation other = (HoverInformation) obj;
+ return
+ other.offset == offset &&
+ other.length == length &&
+ ObjectUtilities.equals(other.containingLibraryPath, containingLibraryPath) &&
+ ObjectUtilities.equals(other.containingLibraryName, containingLibraryName) &&
+ ObjectUtilities.equals(other.containingClassDescription, containingClassDescription) &&
+ ObjectUtilities.equals(other.dartdoc, dartdoc) &&
+ ObjectUtilities.equals(other.elementDescription, elementDescription) &&
+ ObjectUtilities.equals(other.elementKind, elementKind) &&
+ ObjectUtilities.equals(other.parameter, parameter) &&
+ ObjectUtilities.equals(other.propagatedType, propagatedType) &&
+ ObjectUtilities.equals(other.staticType, staticType);
+ }
+ return false;
+ }
+
+ public static HoverInformation fromJson(JsonObject jsonObject) {
+ int offset = jsonObject.get("offset").getAsInt();
+ int length = jsonObject.get("length").getAsInt();
+ String containingLibraryPath = jsonObject.get("containingLibraryPath") == null ? null : jsonObject.get("containingLibraryPath").getAsString();
+ String containingLibraryName = jsonObject.get("containingLibraryName") == null ? null : jsonObject.get("containingLibraryName").getAsString();
+ String containingClassDescription = jsonObject.get("containingClassDescription") == null ? null : jsonObject.get("containingClassDescription").getAsString();
+ String dartdoc = jsonObject.get("dartdoc") == null ? null : jsonObject.get("dartdoc").getAsString();
+ String elementDescription = jsonObject.get("elementDescription") == null ? null : jsonObject.get("elementDescription").getAsString();
+ String elementKind = jsonObject.get("elementKind") == null ? null : jsonObject.get("elementKind").getAsString();
+ String parameter = jsonObject.get("parameter") == null ? null : jsonObject.get("parameter").getAsString();
+ String propagatedType = jsonObject.get("propagatedType") == null ? null : jsonObject.get("propagatedType").getAsString();
+ String staticType = jsonObject.get("staticType") == null ? null : jsonObject.get("staticType").getAsString();
+ return new HoverInformation(offset, length, containingLibraryPath, containingLibraryName, containingClassDescription, dartdoc, elementDescription, elementKind, parameter, propagatedType, staticType);
+ }
+
+ public static List<HoverInformation> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<HoverInformation> list = new ArrayList<HoverInformation>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * A human-readable description of the class declaring the element being referenced. This data is
+ * omitted if there is no referenced element, or if the element is not a class member.
+ */
+ public String getContainingClassDescription() {
+ return containingClassDescription;
+ }
+
+ /**
+ * The name of the library in which the referenced element is declared. This data is omitted if
+ * there is no referenced element, or if the element is declared inside an HTML file.
+ */
+ public String getContainingLibraryName() {
+ return containingLibraryName;
+ }
+
+ /**
+ * The path to the defining compilation unit of the library in which the referenced element is
+ * declared. This data is omitted if there is no referenced element, or if the element is declared
+ * inside an HTML file.
+ */
+ public String getContainingLibraryPath() {
+ return containingLibraryPath;
+ }
+
+ /**
+ * The dartdoc associated with the referenced element. Other than the removal of the comment
+ * delimiters, including leading asterisks in the case of a block comment, the dartdoc is
+ * unprocessed markdown. This data is omitted if there is no referenced element, or if the element
+ * has no dartdoc.
+ */
+ public String getDartdoc() {
+ return dartdoc;
+ }
+
+ /**
+ * A human-readable description of the element being referenced. This data is omitted if there is
+ * no referenced element.
+ */
+ public String getElementDescription() {
+ return elementDescription;
+ }
+
+ /**
+ * A human-readable description of the kind of element being referenced (such as “class” or
+ * “function type alias”). This data is omitted if there is no referenced element.
+ */
+ public String getElementKind() {
+ return elementKind;
+ }
+
+ /**
+ * The length of the range of characters that encompases the cursor position and has the same hover
+ * information as the cursor position.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The offset of the range of characters that encompases the cursor position and has the same hover
+ * information as the cursor position.
+ */
+ public int getOffset() {
+ return offset;
+ }
+
+ /**
+ * A human-readable description of the parameter corresponding to the expression being hovered
+ * over. This data is omitted if the location is not in an argument to a function.
+ */
+ public String getParameter() {
+ return parameter;
+ }
+
+ /**
+ * The name of the propagated type of the expression. This data is omitted if the location does not
+ * correspond to an expression or if there is no propagated type information.
+ */
+ public String getPropagatedType() {
+ return propagatedType;
+ }
+
+ /**
+ * The name of the static type of the expression. This data is omitted if the location does not
+ * correspond to an expression.
+ */
+ public String getStaticType() {
+ return staticType;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(offset);
+ builder.append(length);
+ builder.append(containingLibraryPath);
+ builder.append(containingLibraryName);
+ builder.append(containingClassDescription);
+ builder.append(dartdoc);
+ builder.append(elementDescription);
+ builder.append(elementKind);
+ builder.append(parameter);
+ builder.append(propagatedType);
+ builder.append(staticType);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("offset", offset);
+ jsonObject.addProperty("length", length);
+ if (containingLibraryPath != null) {
+ jsonObject.addProperty("containingLibraryPath", containingLibraryPath);
+ }
+ if (containingLibraryName != null) {
+ jsonObject.addProperty("containingLibraryName", containingLibraryName);
+ }
+ if (containingClassDescription != null) {
+ jsonObject.addProperty("containingClassDescription", containingClassDescription);
+ }
+ if (dartdoc != null) {
+ jsonObject.addProperty("dartdoc", dartdoc);
+ }
+ if (elementDescription != null) {
+ jsonObject.addProperty("elementDescription", elementDescription);
+ }
+ if (elementKind != null) {
+ jsonObject.addProperty("elementKind", elementKind);
+ }
+ if (parameter != null) {
+ jsonObject.addProperty("parameter", parameter);
+ }
+ if (propagatedType != null) {
+ jsonObject.addProperty("propagatedType", propagatedType);
+ }
+ if (staticType != null) {
+ jsonObject.addProperty("staticType", staticType);
+ }
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("offset=");
+ builder.append(offset + ", ");
+ builder.append("length=");
+ builder.append(length + ", ");
+ builder.append("containingLibraryPath=");
+ builder.append(containingLibraryPath + ", ");
+ builder.append("containingLibraryName=");
+ builder.append(containingLibraryName + ", ");
+ builder.append("containingClassDescription=");
+ builder.append(containingClassDescription + ", ");
+ builder.append("dartdoc=");
+ builder.append(dartdoc + ", ");
+ builder.append("elementDescription=");
+ builder.append(elementDescription + ", ");
+ builder.append("elementKind=");
+ builder.append(elementKind + ", ");
+ builder.append("parameter=");
+ builder.append(parameter + ", ");
+ builder.append("propagatedType=");
+ builder.append(propagatedType + ", ");
+ builder.append("staticType=");
+ builder.append(staticType);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/InlineLocalVariableFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/InlineLocalVariableFeedback.java
new file mode 100644
index 0000000..4e8503b
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/InlineLocalVariableFeedback.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class InlineLocalVariableFeedback extends RefactoringFeedback {
+
+ public static final InlineLocalVariableFeedback[] EMPTY_ARRAY = new InlineLocalVariableFeedback[0];
+
+ public static final List<InlineLocalVariableFeedback> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The name of the variable being inlined.
+ */
+ private final String name;
+
+ /**
+ * The number of times the variable occurs.
+ */
+ private final int occurrences;
+
+ /**
+ * Constructor for {@link InlineLocalVariableFeedback}.
+ */
+ public InlineLocalVariableFeedback(String name, int occurrences) {
+ this.name = name;
+ this.occurrences = occurrences;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof InlineLocalVariableFeedback) {
+ InlineLocalVariableFeedback other = (InlineLocalVariableFeedback) obj;
+ return
+ ObjectUtilities.equals(other.name, name) &&
+ other.occurrences == occurrences;
+ }
+ return false;
+ }
+
+ public static InlineLocalVariableFeedback fromJson(JsonObject jsonObject) {
+ String name = jsonObject.get("name").getAsString();
+ int occurrences = jsonObject.get("occurrences").getAsInt();
+ return new InlineLocalVariableFeedback(name, occurrences);
+ }
+
+ public static List<InlineLocalVariableFeedback> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<InlineLocalVariableFeedback> list = new ArrayList<InlineLocalVariableFeedback>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The name of the variable being inlined.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * The number of times the variable occurs.
+ */
+ public int getOccurrences() {
+ return occurrences;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(name);
+ builder.append(occurrences);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("name", name);
+ jsonObject.addProperty("occurrences", occurrences);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("name=");
+ builder.append(name + ", ");
+ builder.append("occurrences=");
+ builder.append(occurrences);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodFeedback.java
new file mode 100644
index 0000000..6cd3e0c
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodFeedback.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class InlineMethodFeedback extends RefactoringFeedback {
+
+ public static final InlineMethodFeedback[] EMPTY_ARRAY = new InlineMethodFeedback[0];
+
+ public static final List<InlineMethodFeedback> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The name of the class enclosing the method being inlined. If not a class member is being
+ * inlined, this field will be absent.
+ */
+ private final String className;
+
+ /**
+ * The name of the method (or function) being inlined.
+ */
+ private final String methodName;
+
+ /**
+ * True if the declaration of the method is selected. So all references should be inlined.
+ */
+ private final boolean isDeclaration;
+
+ /**
+ * Constructor for {@link InlineMethodFeedback}.
+ */
+ public InlineMethodFeedback(String className, String methodName, boolean isDeclaration) {
+ this.className = className;
+ this.methodName = methodName;
+ this.isDeclaration = isDeclaration;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof InlineMethodFeedback) {
+ InlineMethodFeedback other = (InlineMethodFeedback) obj;
+ return
+ ObjectUtilities.equals(other.className, className) &&
+ ObjectUtilities.equals(other.methodName, methodName) &&
+ other.isDeclaration == isDeclaration;
+ }
+ return false;
+ }
+
+ public static InlineMethodFeedback fromJson(JsonObject jsonObject) {
+ String className = jsonObject.get("className") == null ? null : jsonObject.get("className").getAsString();
+ String methodName = jsonObject.get("methodName").getAsString();
+ boolean isDeclaration = jsonObject.get("isDeclaration").getAsBoolean();
+ return new InlineMethodFeedback(className, methodName, isDeclaration);
+ }
+
+ public static List<InlineMethodFeedback> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<InlineMethodFeedback> list = new ArrayList<InlineMethodFeedback>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The name of the class enclosing the method being inlined. If not a class member is being
+ * inlined, this field will be absent.
+ */
+ public String getClassName() {
+ return className;
+ }
+
+ /**
+ * True if the declaration of the method is selected. So all references should be inlined.
+ */
+ public boolean isDeclaration() {
+ return isDeclaration;
+ }
+
+ /**
+ * The name of the method (or function) being inlined.
+ */
+ public String getMethodName() {
+ return methodName;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(className);
+ builder.append(methodName);
+ builder.append(isDeclaration);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ if (className != null) {
+ jsonObject.addProperty("className", className);
+ }
+ jsonObject.addProperty("methodName", methodName);
+ jsonObject.addProperty("isDeclaration", isDeclaration);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("className=");
+ builder.append(className + ", ");
+ builder.append("methodName=");
+ builder.append(methodName + ", ");
+ builder.append("isDeclaration=");
+ builder.append(isDeclaration);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodOptions.java
new file mode 100644
index 0000000..707977e
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodOptions.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class InlineMethodOptions extends RefactoringOptions {
+
+ public static final InlineMethodOptions[] EMPTY_ARRAY = new InlineMethodOptions[0];
+
+ public static final List<InlineMethodOptions> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * True if the method being inlined should be removed. It is an error if this field is true and
+ * inlineAll is false.
+ */
+ private boolean deleteSource;
+
+ /**
+ * True if all invocations of the method should be inlined, or false if only the invocation site
+ * used to create this refactoring should be inlined.
+ */
+ private boolean inlineAll;
+
+ /**
+ * Constructor for {@link InlineMethodOptions}.
+ */
+ public InlineMethodOptions(boolean deleteSource, boolean inlineAll) {
+ this.deleteSource = deleteSource;
+ this.inlineAll = inlineAll;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof InlineMethodOptions) {
+ InlineMethodOptions other = (InlineMethodOptions) obj;
+ return
+ other.deleteSource == deleteSource &&
+ other.inlineAll == inlineAll;
+ }
+ return false;
+ }
+
+ public static InlineMethodOptions fromJson(JsonObject jsonObject) {
+ boolean deleteSource = jsonObject.get("deleteSource").getAsBoolean();
+ boolean inlineAll = jsonObject.get("inlineAll").getAsBoolean();
+ return new InlineMethodOptions(deleteSource, inlineAll);
+ }
+
+ public static List<InlineMethodOptions> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<InlineMethodOptions> list = new ArrayList<InlineMethodOptions>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * True if the method being inlined should be removed. It is an error if this field is true and
+ * inlineAll is false.
+ */
+ public boolean deleteSource() {
+ return deleteSource;
+ }
+
+ /**
+ * True if all invocations of the method should be inlined, or false if only the invocation site
+ * used to create this refactoring should be inlined.
+ */
+ public boolean inlineAll() {
+ return inlineAll;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(deleteSource);
+ builder.append(inlineAll);
+ return builder.toHashCode();
+ }
+
+ /**
+ * True if the method being inlined should be removed. It is an error if this field is true and
+ * inlineAll is false.
+ */
+ public void setDeleteSource(boolean deleteSource) {
+ this.deleteSource = deleteSource;
+ }
+
+ /**
+ * True if all invocations of the method should be inlined, or false if only the invocation site
+ * used to create this refactoring should be inlined.
+ */
+ public void setInlineAll(boolean inlineAll) {
+ this.inlineAll = inlineAll;
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("deleteSource", deleteSource);
+ jsonObject.addProperty("inlineAll", inlineAll);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("deleteSource=");
+ builder.append(deleteSource + ", ");
+ builder.append("inlineAll=");
+ builder.append(inlineAll);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditGroup.java b/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditGroup.java
new file mode 100644
index 0000000..06e1e26
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditGroup.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A collection of positions that should be linked (edited simultaneously) for the purposes of
+ * updating code after a source change. For example, if a set of edits introduced a new variable
+ * name, the group would contain all of the positions of the variable name so that if the client
+ * wanted to let the user edit the variable name after the operation, all occurrences of the name
+ * could be edited simultaneously.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class LinkedEditGroup {
+
+ public static final LinkedEditGroup[] EMPTY_ARRAY = new LinkedEditGroup[0];
+
+ public static final List<LinkedEditGroup> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The positions of the regions that should be edited simultaneously.
+ */
+ private final List<Position> positions;
+
+ /**
+ * The length of the regions that should be edited simultaneously.
+ */
+ private final int length;
+
+ /**
+ * Pre-computed suggestions for what every region might want to be changed to.
+ */
+ private final List<LinkedEditSuggestion> suggestions;
+
+ /**
+ * Constructor for {@link LinkedEditGroup}.
+ */
+ public LinkedEditGroup(List<Position> positions, int length, List<LinkedEditSuggestion> suggestions) {
+ this.positions = positions;
+ this.length = length;
+ this.suggestions = suggestions;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof LinkedEditGroup) {
+ LinkedEditGroup other = (LinkedEditGroup) obj;
+ return
+ ObjectUtilities.equals(other.positions, positions) &&
+ other.length == length &&
+ ObjectUtilities.equals(other.suggestions, suggestions);
+ }
+ return false;
+ }
+
+ public static LinkedEditGroup fromJson(JsonObject jsonObject) {
+ List<Position> positions = Position.fromJsonArray(jsonObject.get("positions").getAsJsonArray());
+ int length = jsonObject.get("length").getAsInt();
+ List<LinkedEditSuggestion> suggestions = LinkedEditSuggestion.fromJsonArray(jsonObject.get("suggestions").getAsJsonArray());
+ return new LinkedEditGroup(positions, length, suggestions);
+ }
+
+ public static List<LinkedEditGroup> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<LinkedEditGroup> list = new ArrayList<LinkedEditGroup>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The length of the regions that should be edited simultaneously.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The positions of the regions that should be edited simultaneously.
+ */
+ public List<Position> getPositions() {
+ return positions;
+ }
+
+ /**
+ * Pre-computed suggestions for what every region might want to be changed to.
+ */
+ public List<LinkedEditSuggestion> getSuggestions() {
+ return suggestions;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(positions);
+ builder.append(length);
+ builder.append(suggestions);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ JsonArray jsonArrayPositions = new JsonArray();
+ for (Position elt : positions) {
+ jsonArrayPositions.add(elt.toJson());
+ }
+ jsonObject.add("positions", jsonArrayPositions);
+ jsonObject.addProperty("length", length);
+ JsonArray jsonArraySuggestions = new JsonArray();
+ for (LinkedEditSuggestion elt : suggestions) {
+ jsonArraySuggestions.add(elt.toJson());
+ }
+ jsonObject.add("suggestions", jsonArraySuggestions);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("positions=");
+ builder.append(StringUtils.join(positions, ", ") + ", ");
+ builder.append("length=");
+ builder.append(length + ", ");
+ builder.append("suggestions=");
+ builder.append(StringUtils.join(suggestions, ", "));
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestion.java b/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestion.java
new file mode 100644
index 0000000..4301ff1
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestion.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A suggestion of a value that could be used to replace all of the linked edit regions in a
+ * LinkedEditGroup.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class LinkedEditSuggestion {
+
+ public static final LinkedEditSuggestion[] EMPTY_ARRAY = new LinkedEditSuggestion[0];
+
+ public static final List<LinkedEditSuggestion> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The value that could be used to replace all of the linked edit regions.
+ */
+ private final String value;
+
+ /**
+ * The kind of value being proposed.
+ */
+ private final String kind;
+
+ /**
+ * Constructor for {@link LinkedEditSuggestion}.
+ */
+ public LinkedEditSuggestion(String value, String kind) {
+ this.value = value;
+ this.kind = kind;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof LinkedEditSuggestion) {
+ LinkedEditSuggestion other = (LinkedEditSuggestion) obj;
+ return
+ ObjectUtilities.equals(other.value, value) &&
+ ObjectUtilities.equals(other.kind, kind);
+ }
+ return false;
+ }
+
+ public static LinkedEditSuggestion fromJson(JsonObject jsonObject) {
+ String value = jsonObject.get("value").getAsString();
+ String kind = jsonObject.get("kind").getAsString();
+ return new LinkedEditSuggestion(value, kind);
+ }
+
+ public static List<LinkedEditSuggestion> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<LinkedEditSuggestion> list = new ArrayList<LinkedEditSuggestion>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The kind of value being proposed.
+ */
+ public String getKind() {
+ return kind;
+ }
+
+ /**
+ * The value that could be used to replace all of the linked edit regions.
+ */
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(value);
+ builder.append(kind);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("value", value);
+ jsonObject.addProperty("kind", kind);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("value=");
+ builder.append(value + ", ");
+ builder.append("kind=");
+ builder.append(kind);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestionKind.java b/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestionKind.java
new file mode 100644
index 0000000..25343a2
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestionKind.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the kind of values that can be suggested for a linked edit.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class LinkedEditSuggestionKind {
+
+ public static final String METHOD = "METHOD";
+
+ public static final String PARAMETER = "PARAMETER";
+
+ public static final String TYPE = "TYPE";
+
+ public static final String VARIABLE = "VARIABLE";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/Location.java b/pkg/analysis_server/tool/spec/generated/java/types/Location.java
new file mode 100644
index 0000000..a0eac20
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/Location.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A location (character range) within a file.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class Location {
+
+ public static final Location[] EMPTY_ARRAY = new Location[0];
+
+ public static final List<Location> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The file containing the range.
+ */
+ private final String file;
+
+ /**
+ * The offset of the range.
+ */
+ private final int offset;
+
+ /**
+ * The length of the range.
+ */
+ private final int length;
+
+ /**
+ * The one-based index of the line containing the first character of the range.
+ */
+ private final int startLine;
+
+ /**
+ * The one-based index of the column containing the first character of the range.
+ */
+ private final int startColumn;
+
+ /**
+ * Constructor for {@link Location}.
+ */
+ public Location(String file, int offset, int length, int startLine, int startColumn) {
+ this.file = file;
+ this.offset = offset;
+ this.length = length;
+ this.startLine = startLine;
+ this.startColumn = startColumn;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof Location) {
+ Location other = (Location) obj;
+ return
+ ObjectUtilities.equals(other.file, file) &&
+ other.offset == offset &&
+ other.length == length &&
+ other.startLine == startLine &&
+ other.startColumn == startColumn;
+ }
+ return false;
+ }
+
+ public static Location fromJson(JsonObject jsonObject) {
+ String file = jsonObject.get("file").getAsString();
+ int offset = jsonObject.get("offset").getAsInt();
+ int length = jsonObject.get("length").getAsInt();
+ int startLine = jsonObject.get("startLine").getAsInt();
+ int startColumn = jsonObject.get("startColumn").getAsInt();
+ return new Location(file, offset, length, startLine, startColumn);
+ }
+
+ public static List<Location> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<Location> list = new ArrayList<Location>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The file containing the range.
+ */
+ public String getFile() {
+ return file;
+ }
+
+ /**
+ * The length of the range.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The offset of the range.
+ */
+ public int getOffset() {
+ return offset;
+ }
+
+ /**
+ * The one-based index of the column containing the first character of the range.
+ */
+ public int getStartColumn() {
+ return startColumn;
+ }
+
+ /**
+ * The one-based index of the line containing the first character of the range.
+ */
+ public int getStartLine() {
+ return startLine;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(file);
+ builder.append(offset);
+ builder.append(length);
+ builder.append(startLine);
+ builder.append(startColumn);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("file", file);
+ jsonObject.addProperty("offset", offset);
+ jsonObject.addProperty("length", length);
+ jsonObject.addProperty("startLine", startLine);
+ jsonObject.addProperty("startColumn", startColumn);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("file=");
+ builder.append(file + ", ");
+ builder.append("offset=");
+ builder.append(offset + ", ");
+ builder.append("length=");
+ builder.append(length + ", ");
+ builder.append("startLine=");
+ builder.append(startLine + ", ");
+ builder.append("startColumn=");
+ builder.append(startColumn);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/MoveFileOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/MoveFileOptions.java
new file mode 100644
index 0000000..a24c3eb
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/MoveFileOptions.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class MoveFileOptions extends RefactoringOptions {
+
+ public static final MoveFileOptions[] EMPTY_ARRAY = new MoveFileOptions[0];
+
+ public static final List<MoveFileOptions> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The new file path to which the given file is being moved.
+ */
+ private String newFile;
+
+ /**
+ * Constructor for {@link MoveFileOptions}.
+ */
+ public MoveFileOptions(String newFile) {
+ this.newFile = newFile;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof MoveFileOptions) {
+ MoveFileOptions other = (MoveFileOptions) obj;
+ return
+ ObjectUtilities.equals(other.newFile, newFile);
+ }
+ return false;
+ }
+
+ public static MoveFileOptions fromJson(JsonObject jsonObject) {
+ String newFile = jsonObject.get("newFile").getAsString();
+ return new MoveFileOptions(newFile);
+ }
+
+ public static List<MoveFileOptions> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<MoveFileOptions> list = new ArrayList<MoveFileOptions>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The new file path to which the given file is being moved.
+ */
+ public String getNewFile() {
+ return newFile;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(newFile);
+ return builder.toHashCode();
+ }
+
+ /**
+ * The new file path to which the given file is being moved.
+ */
+ public void setNewFile(String newFile) {
+ this.newFile = newFile;
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("newFile", newFile);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("newFile=");
+ builder.append(newFile);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/NavigationRegion.java b/pkg/analysis_server/tool/spec/generated/java/types/NavigationRegion.java
new file mode 100644
index 0000000..a968156
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/NavigationRegion.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of a region from which the user can navigate to the declaration of an element.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class NavigationRegion {
+
+ public static final NavigationRegion[] EMPTY_ARRAY = new NavigationRegion[0];
+
+ public static final List<NavigationRegion> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The offset of the region from which the user can navigate.
+ */
+ private final int offset;
+
+ /**
+ * The length of the region from which the user can navigate.
+ */
+ private final int length;
+
+ /**
+ * The indexes of the targets (in the enclosing navigation response) to which the given region is
+ * bound. By opening the target, clients can implement one form of navigation.
+ */
+ private final int[] targets;
+
+ private final List<NavigationTarget> targetObjects = Lists.newArrayList();
+
+ /**
+ * Constructor for {@link NavigationRegion}.
+ */
+ public NavigationRegion(int offset, int length, int[] targets) {
+ this.offset = offset;
+ this.length = length;
+ this.targets = targets;
+ }
+
+ public boolean containsInclusive(int x) {
+ return offset <= x && x <= offset + length;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof NavigationRegion) {
+ NavigationRegion other = (NavigationRegion) obj;
+ return
+ other.offset == offset &&
+ other.length == length &&
+ Arrays.equals(other.targets, targets);
+ }
+ return false;
+ }
+
+ public static NavigationRegion fromJson(JsonObject jsonObject) {
+ int offset = jsonObject.get("offset").getAsInt();
+ int length = jsonObject.get("length").getAsInt();
+ int[] targets = JsonUtilities.decodeIntArray(jsonObject.get("targets").getAsJsonArray());
+ return new NavigationRegion(offset, length, targets);
+ }
+
+ public static List<NavigationRegion> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<NavigationRegion> list = new ArrayList<NavigationRegion>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ public List<NavigationTarget> getTargetObjects() {
+ return targetObjects;
+ }
+
+ /**
+ * The length of the region from which the user can navigate.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The offset of the region from which the user can navigate.
+ */
+ public int getOffset() {
+ return offset;
+ }
+
+ /**
+ * The indexes of the targets (in the enclosing navigation response) to which the given region is
+ * bound. By opening the target, clients can implement one form of navigation.
+ */
+ public int[] getTargets() {
+ return targets;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(offset);
+ builder.append(length);
+ builder.append(targets);
+ return builder.toHashCode();
+ }
+
+ public void lookupTargets(List<NavigationTarget> allTargets) {
+ for (int i = 0; i < targets.length; i++) {
+ int targetIndex = targets[i];
+ NavigationTarget target = allTargets.get(targetIndex);
+ targetObjects.add(target);
+ }
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("offset", offset);
+ jsonObject.addProperty("length", length);
+ JsonArray jsonArrayTargets = new JsonArray();
+ for (int elt : targets) {
+ jsonArrayTargets.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("targets", jsonArrayTargets);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("offset=");
+ builder.append(offset + ", ");
+ builder.append("length=");
+ builder.append(length + ", ");
+ builder.append("targets=");
+ builder.append(StringUtils.join(targets, ", "));
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/NavigationTarget.java b/pkg/analysis_server/tool/spec/generated/java/types/NavigationTarget.java
new file mode 100644
index 0000000..9290862
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/NavigationTarget.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of a target to which the user can navigate.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class NavigationTarget {
+
+ public static final NavigationTarget[] EMPTY_ARRAY = new NavigationTarget[0];
+
+ public static final List<NavigationTarget> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The kind of the element.
+ */
+ private final String kind;
+
+ /**
+ * The index of the file (in the enclosing navigation response) to navigate to.
+ */
+ private final int fileIndex;
+
+ /**
+ * The offset of the region from which the user can navigate.
+ */
+ private final int offset;
+
+ /**
+ * The length of the region from which the user can navigate.
+ */
+ private final int length;
+
+ /**
+ * The one-based index of the line containing the first character of the region.
+ */
+ private final int startLine;
+
+ /**
+ * The one-based index of the column containing the first character of the region.
+ */
+ private final int startColumn;
+
+ private String file;
+
+ /**
+ * Constructor for {@link NavigationTarget}.
+ */
+ public NavigationTarget(String kind, int fileIndex, int offset, int length, int startLine, int startColumn) {
+ this.kind = kind;
+ this.fileIndex = fileIndex;
+ this.offset = offset;
+ this.length = length;
+ this.startLine = startLine;
+ this.startColumn = startColumn;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof NavigationTarget) {
+ NavigationTarget other = (NavigationTarget) obj;
+ return
+ ObjectUtilities.equals(other.kind, kind) &&
+ other.fileIndex == fileIndex &&
+ other.offset == offset &&
+ other.length == length &&
+ other.startLine == startLine &&
+ other.startColumn == startColumn;
+ }
+ return false;
+ }
+
+ public static NavigationTarget fromJson(JsonObject jsonObject) {
+ String kind = jsonObject.get("kind").getAsString();
+ int fileIndex = jsonObject.get("fileIndex").getAsInt();
+ int offset = jsonObject.get("offset").getAsInt();
+ int length = jsonObject.get("length").getAsInt();
+ int startLine = jsonObject.get("startLine").getAsInt();
+ int startColumn = jsonObject.get("startColumn").getAsInt();
+ return new NavigationTarget(kind, fileIndex, offset, length, startLine, startColumn);
+ }
+
+ public static List<NavigationTarget> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<NavigationTarget> list = new ArrayList<NavigationTarget>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ public String getFile() {
+ return file;
+ }
+
+ /**
+ * The index of the file (in the enclosing navigation response) to navigate to.
+ */
+ public int getFileIndex() {
+ return fileIndex;
+ }
+
+ /**
+ * The kind of the element.
+ */
+ public String getKind() {
+ return kind;
+ }
+
+ /**
+ * The length of the region from which the user can navigate.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The offset of the region from which the user can navigate.
+ */
+ public int getOffset() {
+ return offset;
+ }
+
+ /**
+ * The one-based index of the column containing the first character of the region.
+ */
+ public int getStartColumn() {
+ return startColumn;
+ }
+
+ /**
+ * The one-based index of the line containing the first character of the region.
+ */
+ public int getStartLine() {
+ return startLine;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(kind);
+ builder.append(fileIndex);
+ builder.append(offset);
+ builder.append(length);
+ builder.append(startLine);
+ builder.append(startColumn);
+ return builder.toHashCode();
+ }
+
+ public void lookupFile(String[] allTargetFiles) {
+ file = allTargetFiles[fileIndex];
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("kind", kind);
+ jsonObject.addProperty("fileIndex", fileIndex);
+ jsonObject.addProperty("offset", offset);
+ jsonObject.addProperty("length", length);
+ jsonObject.addProperty("startLine", startLine);
+ jsonObject.addProperty("startColumn", startColumn);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("kind=");
+ builder.append(kind + ", ");
+ builder.append("fileIndex=");
+ builder.append(fileIndex + ", ");
+ builder.append("offset=");
+ builder.append(offset + ", ");
+ builder.append("length=");
+ builder.append(length + ", ");
+ builder.append("startLine=");
+ builder.append(startLine + ", ");
+ builder.append("startColumn=");
+ builder.append(startColumn);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/Occurrences.java b/pkg/analysis_server/tool/spec/generated/java/types/Occurrences.java
new file mode 100644
index 0000000..db04138
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/Occurrences.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of the references to a single element within a single file.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class Occurrences {
+
+ public static final Occurrences[] EMPTY_ARRAY = new Occurrences[0];
+
+ public static final List<Occurrences> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The element that was referenced.
+ */
+ private final Element element;
+
+ /**
+ * The offsets of the name of the referenced element within the file.
+ */
+ private final int[] offsets;
+
+ /**
+ * The length of the name of the referenced element.
+ */
+ private final int length;
+
+ /**
+ * Constructor for {@link Occurrences}.
+ */
+ public Occurrences(Element element, int[] offsets, int length) {
+ this.element = element;
+ this.offsets = offsets;
+ this.length = length;
+ }
+
+ public boolean containsInclusive(int x) {
+ for (int offset : offsets) {
+ if (offset <= x && x <= offset + length) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof Occurrences) {
+ Occurrences other = (Occurrences) obj;
+ return
+ ObjectUtilities.equals(other.element, element) &&
+ Arrays.equals(other.offsets, offsets) &&
+ other.length == length;
+ }
+ return false;
+ }
+
+ public static Occurrences fromJson(JsonObject jsonObject) {
+ Element element = Element.fromJson(jsonObject.get("element").getAsJsonObject());
+ int[] offsets = JsonUtilities.decodeIntArray(jsonObject.get("offsets").getAsJsonArray());
+ int length = jsonObject.get("length").getAsInt();
+ return new Occurrences(element, offsets, length);
+ }
+
+ public static List<Occurrences> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<Occurrences> list = new ArrayList<Occurrences>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The element that was referenced.
+ */
+ public Element getElement() {
+ return element;
+ }
+
+ /**
+ * The length of the name of the referenced element.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The offsets of the name of the referenced element within the file.
+ */
+ public int[] getOffsets() {
+ return offsets;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(element);
+ builder.append(offsets);
+ builder.append(length);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.add("element", element.toJson());
+ JsonArray jsonArrayOffsets = new JsonArray();
+ for (int elt : offsets) {
+ jsonArrayOffsets.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("offsets", jsonArrayOffsets);
+ jsonObject.addProperty("length", length);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("element=");
+ builder.append(element + ", ");
+ builder.append("offsets=");
+ builder.append(StringUtils.join(offsets, ", ") + ", ");
+ builder.append("length=");
+ builder.append(length);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/Outline.java b/pkg/analysis_server/tool/spec/generated/java/types/Outline.java
new file mode 100644
index 0000000..5a6576f
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/Outline.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * An node in the outline structure of a file.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class Outline {
+
+ public static final Outline[] EMPTY_ARRAY = new Outline[0];
+
+ public static final List<Outline> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * A description of the element represented by this node.
+ */
+ private Element element;
+
+ /**
+ * The offset of the first character of the element. This is different than the offset in the
+ * Element, which if the offset of the name of the element. It can be used, for example, to map
+ * locations in the file back to an outline.
+ */
+ private int offset;
+
+ /**
+ * The length of the element.
+ */
+ private int length;
+
+ private final Outline parent;
+
+ private List<Outline> children;
+
+ /**
+ * Constructor for {@link Outline}.
+ */
+ public Outline(Outline parent, Element element, int offset, int length) {
+ this.parent = parent;
+ this.element = element;
+ this.offset = offset;
+ this.length = length;
+ }
+
+ public boolean containsInclusive(int x) {
+ return offset <= x && x <= offset + length;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof Outline) {
+ Outline other = (Outline) obj;
+ return
+ ObjectUtilities.equals(other.element, element) &&
+ other.offset == offset &&
+ other.length == length &&
+ ObjectUtilities.equals(other.children, children);
+ }
+ return false;
+ }
+
+ public static Outline fromJson(Outline parent, JsonObject outlineObject) {
+ JsonObject elementObject = outlineObject.get("element").getAsJsonObject();
+ Element element = Element.fromJson(elementObject);
+ int offset = outlineObject.get("offset").getAsInt();
+ int length = outlineObject.get("length").getAsInt();
+
+ // create outline object
+ Outline outline = new Outline(parent, element, offset, length);
+
+ // compute children recursively
+ List<Outline> childrenList = Lists.newArrayList();
+ JsonElement childrenJsonArray = outlineObject.get("children");
+ if (childrenJsonArray instanceof JsonArray) {
+ Iterator<JsonElement> childrenElementIterator = ((JsonArray) childrenJsonArray).iterator();
+ while (childrenElementIterator.hasNext()) {
+ JsonObject childObject = childrenElementIterator.next().getAsJsonObject();
+ childrenList.add(fromJson(outline, childObject));
+ }
+ }
+ outline.setChildren(childrenList);
+ return outline;
+ }
+
+ public Outline getParent() {
+ return parent;
+ }
+
+ /**
+ * The children of the node. The field will be omitted if the node has no children.
+ */
+ public List<Outline> getChildren() {
+ return children;
+ }
+
+ /**
+ * A description of the element represented by this node.
+ */
+ public Element getElement() {
+ return element;
+ }
+
+ /**
+ * The length of the element.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The offset of the first character of the element. This is different than the offset in the
+ * Element, which if the offset of the name of the element. It can be used, for example, to map
+ * locations in the file back to an outline.
+ */
+ public int getOffset() {
+ return offset;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(element);
+ builder.append(offset);
+ builder.append(length);
+ builder.append(children);
+ return builder.toHashCode();
+ }
+
+ /**
+ * The children of the node. The field will be omitted if the node has no children.
+ */
+ public void setChildren(List<Outline> children) {
+ this.children = children;
+ }
+
+ /**
+ * A description of the element represented by this node.
+ */
+ public void setElement(Element element) {
+ this.element = element;
+ }
+
+ /**
+ * The length of the element.
+ */
+ public void setLength(int length) {
+ this.length = length;
+ }
+
+ /**
+ * The offset of the first character of the element. This is different than the offset in the
+ * Element, which if the offset of the name of the element. It can be used, for example, to map
+ * locations in the file back to an outline.
+ */
+ public void setOffset(int offset) {
+ this.offset = offset;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("element=");
+ builder.append(element + ", ");
+ builder.append("offset=");
+ builder.append(offset + ", ");
+ builder.append("length=");
+ builder.append(length + ", ");
+ builder.append("children=");
+ builder.append(StringUtils.join(children, ", "));
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/OverriddenMember.java b/pkg/analysis_server/tool/spec/generated/java/types/OverriddenMember.java
new file mode 100644
index 0000000..47c085f
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/OverriddenMember.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of a member that is being overridden.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class OverriddenMember {
+
+ public static final OverriddenMember[] EMPTY_ARRAY = new OverriddenMember[0];
+
+ public static final List<OverriddenMember> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The element that is being overridden.
+ */
+ private final Element element;
+
+ /**
+ * The name of the class in which the member is defined.
+ */
+ private final String className;
+
+ /**
+ * Constructor for {@link OverriddenMember}.
+ */
+ public OverriddenMember(Element element, String className) {
+ this.element = element;
+ this.className = className;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof OverriddenMember) {
+ OverriddenMember other = (OverriddenMember) obj;
+ return
+ ObjectUtilities.equals(other.element, element) &&
+ ObjectUtilities.equals(other.className, className);
+ }
+ return false;
+ }
+
+ public static OverriddenMember fromJson(JsonObject jsonObject) {
+ Element element = Element.fromJson(jsonObject.get("element").getAsJsonObject());
+ String className = jsonObject.get("className").getAsString();
+ return new OverriddenMember(element, className);
+ }
+
+ public static List<OverriddenMember> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<OverriddenMember> list = new ArrayList<OverriddenMember>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The name of the class in which the member is defined.
+ */
+ public String getClassName() {
+ return className;
+ }
+
+ /**
+ * The element that is being overridden.
+ */
+ public Element getElement() {
+ return element;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(element);
+ builder.append(className);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.add("element", element.toJson());
+ jsonObject.addProperty("className", className);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("element=");
+ builder.append(element + ", ");
+ builder.append("className=");
+ builder.append(className);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/OverrideMember.java b/pkg/analysis_server/tool/spec/generated/java/types/OverrideMember.java
new file mode 100644
index 0000000..6fb38e1
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/OverrideMember.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of a member that overrides an inherited member.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class OverrideMember {
+
+ public static final OverrideMember[] EMPTY_ARRAY = new OverrideMember[0];
+
+ public static final List<OverrideMember> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The offset of the name of the overriding member.
+ */
+ private final int offset;
+
+ /**
+ * The length of the name of the overriding member.
+ */
+ private final int length;
+
+ /**
+ * The member inherited from a superclass that is overridden by the overriding member. The field is
+ * omitted if there is no superclass member, in which case there must be at least one interface
+ * member.
+ */
+ private final OverriddenMember superclassMember;
+
+ /**
+ * The members inherited from interfaces that are overridden by the overriding member. The field is
+ * omitted if there are no interface members, in which case there must be a superclass member.
+ */
+ private final List<OverriddenMember> interfaceMembers;
+
+ /**
+ * Constructor for {@link OverrideMember}.
+ */
+ public OverrideMember(int offset, int length, OverriddenMember superclassMember, List<OverriddenMember> interfaceMembers) {
+ this.offset = offset;
+ this.length = length;
+ this.superclassMember = superclassMember;
+ this.interfaceMembers = interfaceMembers;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof OverrideMember) {
+ OverrideMember other = (OverrideMember) obj;
+ return
+ other.offset == offset &&
+ other.length == length &&
+ ObjectUtilities.equals(other.superclassMember, superclassMember) &&
+ ObjectUtilities.equals(other.interfaceMembers, interfaceMembers);
+ }
+ return false;
+ }
+
+ public static OverrideMember fromJson(JsonObject jsonObject) {
+ int offset = jsonObject.get("offset").getAsInt();
+ int length = jsonObject.get("length").getAsInt();
+ OverriddenMember superclassMember = jsonObject.get("superclassMember") == null ? null : OverriddenMember.fromJson(jsonObject.get("superclassMember").getAsJsonObject());
+ List<OverriddenMember> interfaceMembers = jsonObject.get("interfaceMembers") == null ? null : OverriddenMember.fromJsonArray(jsonObject.get("interfaceMembers").getAsJsonArray());
+ return new OverrideMember(offset, length, superclassMember, interfaceMembers);
+ }
+
+ public static List<OverrideMember> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<OverrideMember> list = new ArrayList<OverrideMember>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The members inherited from interfaces that are overridden by the overriding member. The field is
+ * omitted if there are no interface members, in which case there must be a superclass member.
+ */
+ public List<OverriddenMember> getInterfaceMembers() {
+ return interfaceMembers;
+ }
+
+ /**
+ * The length of the name of the overriding member.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The offset of the name of the overriding member.
+ */
+ public int getOffset() {
+ return offset;
+ }
+
+ /**
+ * The member inherited from a superclass that is overridden by the overriding member. The field is
+ * omitted if there is no superclass member, in which case there must be at least one interface
+ * member.
+ */
+ public OverriddenMember getSuperclassMember() {
+ return superclassMember;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(offset);
+ builder.append(length);
+ builder.append(superclassMember);
+ builder.append(interfaceMembers);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("offset", offset);
+ jsonObject.addProperty("length", length);
+ if (superclassMember != null) {
+ jsonObject.add("superclassMember", superclassMember.toJson());
+ }
+ if (interfaceMembers != null) {
+ JsonArray jsonArrayInterfaceMembers = new JsonArray();
+ for (OverriddenMember elt : interfaceMembers) {
+ jsonArrayInterfaceMembers.add(elt.toJson());
+ }
+ jsonObject.add("interfaceMembers", jsonArrayInterfaceMembers);
+ }
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("offset=");
+ builder.append(offset + ", ");
+ builder.append("length=");
+ builder.append(length + ", ");
+ builder.append("superclassMember=");
+ builder.append(superclassMember + ", ");
+ builder.append("interfaceMembers=");
+ builder.append(StringUtils.join(interfaceMembers, ", "));
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/Position.java b/pkg/analysis_server/tool/spec/generated/java/types/Position.java
new file mode 100644
index 0000000..f5c7acb
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/Position.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A position within a file.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class Position {
+
+ public static final Position[] EMPTY_ARRAY = new Position[0];
+
+ public static final List<Position> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The file containing the position.
+ */
+ private final String file;
+
+ /**
+ * The offset of the position.
+ */
+ private final int offset;
+
+ /**
+ * Constructor for {@link Position}.
+ */
+ public Position(String file, int offset) {
+ this.file = file;
+ this.offset = offset;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof Position) {
+ Position other = (Position) obj;
+ return
+ ObjectUtilities.equals(other.file, file) &&
+ other.offset == offset;
+ }
+ return false;
+ }
+
+ public static Position fromJson(JsonObject jsonObject) {
+ String file = jsonObject.get("file").getAsString();
+ int offset = jsonObject.get("offset").getAsInt();
+ return new Position(file, offset);
+ }
+
+ public static List<Position> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<Position> list = new ArrayList<Position>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The file containing the position.
+ */
+ public String getFile() {
+ return file;
+ }
+
+ /**
+ * The offset of the position.
+ */
+ public int getOffset() {
+ return offset;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(file);
+ builder.append(offset);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("file", file);
+ jsonObject.addProperty("offset", offset);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("file=");
+ builder.append(file + ", ");
+ builder.append("offset=");
+ builder.append(offset);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/PubStatus.java b/pkg/analysis_server/tool/spec/generated/java/types/PubStatus.java
new file mode 100644
index 0000000..c46b87a
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/PubStatus.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * An indication of the current state of pub execution.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class PubStatus {
+
+ public static final PubStatus[] EMPTY_ARRAY = new PubStatus[0];
+
+ public static final List<PubStatus> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * True if the server is currently running pub to produce a list of package directories.
+ */
+ private final boolean isListingPackageDirs;
+
+ /**
+ * Constructor for {@link PubStatus}.
+ */
+ public PubStatus(boolean isListingPackageDirs) {
+ this.isListingPackageDirs = isListingPackageDirs;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof PubStatus) {
+ PubStatus other = (PubStatus) obj;
+ return
+ other.isListingPackageDirs == isListingPackageDirs;
+ }
+ return false;
+ }
+
+ public static PubStatus fromJson(JsonObject jsonObject) {
+ boolean isListingPackageDirs = jsonObject.get("isListingPackageDirs").getAsBoolean();
+ return new PubStatus(isListingPackageDirs);
+ }
+
+ public static List<PubStatus> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<PubStatus> list = new ArrayList<PubStatus>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * True if the server is currently running pub to produce a list of package directories.
+ */
+ public boolean isListingPackageDirs() {
+ return isListingPackageDirs;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(isListingPackageDirs);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("isListingPackageDirs", isListingPackageDirs);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("isListingPackageDirs=");
+ builder.append(isListingPackageDirs);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringFeedback.java
new file mode 100644
index 0000000..c1864b7
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringFeedback.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * An abstract superclass of all refactoring feedbacks.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class RefactoringFeedback {
+
+ public static final RefactoringFeedback[] EMPTY_ARRAY = new RefactoringFeedback[0];
+
+ public static final List<RefactoringFeedback> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * Constructor for {@link RefactoringFeedback}.
+ */
+ public RefactoringFeedback() {
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof RefactoringFeedback) {
+ RefactoringFeedback other = (RefactoringFeedback) obj;
+ return
+ true;
+ }
+ return false;
+ }
+
+ public static RefactoringFeedback fromJson(JsonObject jsonObject) {
+ return new RefactoringFeedback();
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringKind.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringKind.java
new file mode 100644
index 0000000..822770d
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringKind.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the kinds of refactorings that can be created.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class RefactoringKind {
+
+ public static final String CONVERT_GETTER_TO_METHOD = "CONVERT_GETTER_TO_METHOD";
+
+ public static final String CONVERT_METHOD_TO_GETTER = "CONVERT_METHOD_TO_GETTER";
+
+ public static final String EXTRACT_LOCAL_VARIABLE = "EXTRACT_LOCAL_VARIABLE";
+
+ public static final String EXTRACT_METHOD = "EXTRACT_METHOD";
+
+ public static final String INLINE_LOCAL_VARIABLE = "INLINE_LOCAL_VARIABLE";
+
+ public static final String INLINE_METHOD = "INLINE_METHOD";
+
+ public static final String MOVE_FILE = "MOVE_FILE";
+
+ public static final String RENAME = "RENAME";
+
+ public static final String SORT_MEMBERS = "SORT_MEMBERS";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameter.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameter.java
new file mode 100644
index 0000000..d5f7dfe
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameter.java
@@ -0,0 +1,242 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of a parameter in a method refactoring.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class RefactoringMethodParameter {
+
+ public static final RefactoringMethodParameter[] EMPTY_ARRAY = new RefactoringMethodParameter[0];
+
+ public static final List<RefactoringMethodParameter> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The unique identifier of the parameter. Clients may omit this field for the parameters they want
+ * to add.
+ */
+ private String id;
+
+ /**
+ * The kind of the parameter.
+ */
+ private String kind;
+
+ /**
+ * The type that should be given to the parameter, or the return type of the parameter's function
+ * type.
+ */
+ private String type;
+
+ /**
+ * The name that should be given to the parameter.
+ */
+ private String name;
+
+ /**
+ * The parameter list of the parameter's function type. If the parameter is not of a function type,
+ * this field will not be defined. If the function type has zero parameters, this field will have a
+ * value of "()".
+ */
+ private String parameters;
+
+ /**
+ * Constructor for {@link RefactoringMethodParameter}.
+ */
+ public RefactoringMethodParameter(String id, String kind, String type, String name, String parameters) {
+ this.id = id;
+ this.kind = kind;
+ this.type = type;
+ this.name = name;
+ this.parameters = parameters;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof RefactoringMethodParameter) {
+ RefactoringMethodParameter other = (RefactoringMethodParameter) obj;
+ return
+ ObjectUtilities.equals(other.id, id) &&
+ ObjectUtilities.equals(other.kind, kind) &&
+ ObjectUtilities.equals(other.type, type) &&
+ ObjectUtilities.equals(other.name, name) &&
+ ObjectUtilities.equals(other.parameters, parameters);
+ }
+ return false;
+ }
+
+ public static RefactoringMethodParameter fromJson(JsonObject jsonObject) {
+ String id = jsonObject.get("id") == null ? null : jsonObject.get("id").getAsString();
+ String kind = jsonObject.get("kind").getAsString();
+ String type = jsonObject.get("type").getAsString();
+ String name = jsonObject.get("name").getAsString();
+ String parameters = jsonObject.get("parameters") == null ? null : jsonObject.get("parameters").getAsString();
+ return new RefactoringMethodParameter(id, kind, type, name, parameters);
+ }
+
+ public static List<RefactoringMethodParameter> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<RefactoringMethodParameter> list = new ArrayList<RefactoringMethodParameter>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The unique identifier of the parameter. Clients may omit this field for the parameters they want
+ * to add.
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * The kind of the parameter.
+ */
+ public String getKind() {
+ return kind;
+ }
+
+ /**
+ * The name that should be given to the parameter.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * The parameter list of the parameter's function type. If the parameter is not of a function type,
+ * this field will not be defined. If the function type has zero parameters, this field will have a
+ * value of "()".
+ */
+ public String getParameters() {
+ return parameters;
+ }
+
+ /**
+ * The type that should be given to the parameter, or the return type of the parameter's function
+ * type.
+ */
+ public String getType() {
+ return type;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(id);
+ builder.append(kind);
+ builder.append(type);
+ builder.append(name);
+ builder.append(parameters);
+ return builder.toHashCode();
+ }
+
+ /**
+ * The unique identifier of the parameter. Clients may omit this field for the parameters they want
+ * to add.
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * The kind of the parameter.
+ */
+ public void setKind(String kind) {
+ this.kind = kind;
+ }
+
+ /**
+ * The name that should be given to the parameter.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * The parameter list of the parameter's function type. If the parameter is not of a function type,
+ * this field will not be defined. If the function type has zero parameters, this field will have a
+ * value of "()".
+ */
+ public void setParameters(String parameters) {
+ this.parameters = parameters;
+ }
+
+ /**
+ * The type that should be given to the parameter, or the return type of the parameter's function
+ * type.
+ */
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ if (id != null) {
+ jsonObject.addProperty("id", id);
+ }
+ jsonObject.addProperty("kind", kind);
+ jsonObject.addProperty("type", type);
+ jsonObject.addProperty("name", name);
+ if (parameters != null) {
+ jsonObject.addProperty("parameters", parameters);
+ }
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("id=");
+ builder.append(id + ", ");
+ builder.append("kind=");
+ builder.append(kind + ", ");
+ builder.append("type=");
+ builder.append(type + ", ");
+ builder.append("name=");
+ builder.append(name + ", ");
+ builder.append("parameters=");
+ builder.append(parameters);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameterKind.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameterKind.java
new file mode 100644
index 0000000..c7a059a
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameterKind.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the kinds of parameters.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class RefactoringMethodParameterKind {
+
+ public static final String REQUIRED = "REQUIRED";
+
+ public static final String POSITIONAL = "POSITIONAL";
+
+ public static final String NAMED = "NAMED";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringOptions.java
new file mode 100644
index 0000000..05af2ff
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringOptions.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * An abstract superclass of all refactoring options.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class RefactoringOptions {
+
+ public static final RefactoringOptions[] EMPTY_ARRAY = new RefactoringOptions[0];
+
+ public static final List<RefactoringOptions> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * Constructor for {@link RefactoringOptions}.
+ */
+ public RefactoringOptions() {
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof RefactoringOptions) {
+ RefactoringOptions other = (RefactoringOptions) obj;
+ return
+ true;
+ }
+ return false;
+ }
+
+ public static RefactoringOptions fromJson(JsonObject jsonObject) {
+ return new RefactoringOptions();
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblem.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblem.java
new file mode 100644
index 0000000..da87988
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblem.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of a problem related to a refactoring.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class RefactoringProblem {
+
+ public static final RefactoringProblem[] EMPTY_ARRAY = new RefactoringProblem[0];
+
+ public static final List<RefactoringProblem> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The severity of the problem being represented.
+ */
+ private final String severity;
+
+ /**
+ * A human-readable description of the problem being represented.
+ */
+ private final String message;
+
+ /**
+ * The location of the problem being represented. This field is omitted unless there is a specific
+ * location associated with the problem (such as a location where an element being renamed will be
+ * shadowed).
+ */
+ private final Location location;
+
+ /**
+ * Constructor for {@link RefactoringProblem}.
+ */
+ public RefactoringProblem(String severity, String message, Location location) {
+ this.severity = severity;
+ this.message = message;
+ this.location = location;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof RefactoringProblem) {
+ RefactoringProblem other = (RefactoringProblem) obj;
+ return
+ ObjectUtilities.equals(other.severity, severity) &&
+ ObjectUtilities.equals(other.message, message) &&
+ ObjectUtilities.equals(other.location, location);
+ }
+ return false;
+ }
+
+ public static RefactoringProblem fromJson(JsonObject jsonObject) {
+ String severity = jsonObject.get("severity").getAsString();
+ String message = jsonObject.get("message").getAsString();
+ Location location = jsonObject.get("location") == null ? null : Location.fromJson(jsonObject.get("location").getAsJsonObject());
+ return new RefactoringProblem(severity, message, location);
+ }
+
+ public static List<RefactoringProblem> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<RefactoringProblem> list = new ArrayList<RefactoringProblem>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The location of the problem being represented. This field is omitted unless there is a specific
+ * location associated with the problem (such as a location where an element being renamed will be
+ * shadowed).
+ */
+ public Location getLocation() {
+ return location;
+ }
+
+ /**
+ * A human-readable description of the problem being represented.
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * The severity of the problem being represented.
+ */
+ public String getSeverity() {
+ return severity;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(severity);
+ builder.append(message);
+ builder.append(location);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("severity", severity);
+ jsonObject.addProperty("message", message);
+ if (location != null) {
+ jsonObject.add("location", location.toJson());
+ }
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("severity=");
+ builder.append(severity + ", ");
+ builder.append("message=");
+ builder.append(message + ", ");
+ builder.append("location=");
+ builder.append(location);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblemSeverity.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblemSeverity.java
new file mode 100644
index 0000000..823eacc
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblemSeverity.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the severities of problems that can be returned by the refactoring requests.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class RefactoringProblemSeverity {
+
+ public static final String INFO = "INFO";
+
+ public static final String WARNING = "WARNING";
+
+ public static final String ERROR = "ERROR";
+
+ public static final String FATAL = "FATAL";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RemoveContentOverlay.java b/pkg/analysis_server/tool/spec/generated/java/types/RemoveContentOverlay.java
new file mode 100644
index 0000000..fb284da
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RemoveContentOverlay.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A directive to remove an existing file content overlay. After processing this directive, the
+ * file contents will once again be read from the file system.
+ *
+ * If this directive is used on a file that doesn't currently have a content overlay, it has no
+ * effect.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class RemoveContentOverlay {
+
+ public static final RemoveContentOverlay[] EMPTY_ARRAY = new RemoveContentOverlay[0];
+
+ public static final List<RemoveContentOverlay> EMPTY_LIST = Lists.newArrayList();
+
+ private final String type;
+
+ /**
+ * Constructor for {@link RemoveContentOverlay}.
+ */
+ public RemoveContentOverlay() {
+ this.type = "remove";
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof RemoveContentOverlay) {
+ RemoveContentOverlay other = (RemoveContentOverlay) obj;
+ return
+ ObjectUtilities.equals(other.type, type);
+ }
+ return false;
+ }
+
+ public static RemoveContentOverlay fromJson(JsonObject jsonObject) {
+ String type = jsonObject.get("type").getAsString();
+ return new RemoveContentOverlay();
+ }
+
+ public static List<RemoveContentOverlay> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<RemoveContentOverlay> list = new ArrayList<RemoveContentOverlay>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(type);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("type", type);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("type=");
+ builder.append(type);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RenameFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/RenameFeedback.java
new file mode 100644
index 0000000..c94f2e6
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RenameFeedback.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class RenameFeedback extends RefactoringFeedback {
+
+ public static final RenameFeedback[] EMPTY_ARRAY = new RenameFeedback[0];
+
+ public static final List<RenameFeedback> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The offset to the beginning of the name selected to be renamed.
+ */
+ private final int offset;
+
+ /**
+ * The length of the name selected to be renamed.
+ */
+ private final int length;
+
+ /**
+ * The human-readable description of the kind of element being renamed (such as “class” or
+ * “function type alias”).
+ */
+ private final String elementKindName;
+
+ /**
+ * The old name of the element before the refactoring.
+ */
+ private final String oldName;
+
+ /**
+ * Constructor for {@link RenameFeedback}.
+ */
+ public RenameFeedback(int offset, int length, String elementKindName, String oldName) {
+ this.offset = offset;
+ this.length = length;
+ this.elementKindName = elementKindName;
+ this.oldName = oldName;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof RenameFeedback) {
+ RenameFeedback other = (RenameFeedback) obj;
+ return
+ other.offset == offset &&
+ other.length == length &&
+ ObjectUtilities.equals(other.elementKindName, elementKindName) &&
+ ObjectUtilities.equals(other.oldName, oldName);
+ }
+ return false;
+ }
+
+ public static RenameFeedback fromJson(JsonObject jsonObject) {
+ int offset = jsonObject.get("offset").getAsInt();
+ int length = jsonObject.get("length").getAsInt();
+ String elementKindName = jsonObject.get("elementKindName").getAsString();
+ String oldName = jsonObject.get("oldName").getAsString();
+ return new RenameFeedback(offset, length, elementKindName, oldName);
+ }
+
+ public static List<RenameFeedback> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<RenameFeedback> list = new ArrayList<RenameFeedback>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The human-readable description of the kind of element being renamed (such as “class” or
+ * “function type alias”).
+ */
+ public String getElementKindName() {
+ return elementKindName;
+ }
+
+ /**
+ * The length of the name selected to be renamed.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The offset to the beginning of the name selected to be renamed.
+ */
+ public int getOffset() {
+ return offset;
+ }
+
+ /**
+ * The old name of the element before the refactoring.
+ */
+ public String getOldName() {
+ return oldName;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(offset);
+ builder.append(length);
+ builder.append(elementKindName);
+ builder.append(oldName);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("offset", offset);
+ jsonObject.addProperty("length", length);
+ jsonObject.addProperty("elementKindName", elementKindName);
+ jsonObject.addProperty("oldName", oldName);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("offset=");
+ builder.append(offset + ", ");
+ builder.append("length=");
+ builder.append(length + ", ");
+ builder.append("elementKindName=");
+ builder.append(elementKindName + ", ");
+ builder.append("oldName=");
+ builder.append(oldName);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RenameOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/RenameOptions.java
new file mode 100644
index 0000000..e17d49e
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RenameOptions.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class RenameOptions extends RefactoringOptions {
+
+ public static final RenameOptions[] EMPTY_ARRAY = new RenameOptions[0];
+
+ public static final List<RenameOptions> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The name that the element should have after the refactoring.
+ */
+ private String newName;
+
+ /**
+ * Constructor for {@link RenameOptions}.
+ */
+ public RenameOptions(String newName) {
+ this.newName = newName;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof RenameOptions) {
+ RenameOptions other = (RenameOptions) obj;
+ return
+ ObjectUtilities.equals(other.newName, newName);
+ }
+ return false;
+ }
+
+ public static RenameOptions fromJson(JsonObject jsonObject) {
+ String newName = jsonObject.get("newName").getAsString();
+ return new RenameOptions(newName);
+ }
+
+ public static List<RenameOptions> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<RenameOptions> list = new ArrayList<RenameOptions>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * The name that the element should have after the refactoring.
+ */
+ public String getNewName() {
+ return newName;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(newName);
+ return builder.toHashCode();
+ }
+
+ /**
+ * The name that the element should have after the refactoring.
+ */
+ public void setNewName(String newName) {
+ this.newName = newName;
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("newName", newName);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("newName=");
+ builder.append(newName);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RequestError.java b/pkg/analysis_server/tool/spec/generated/java/types/RequestError.java
new file mode 100644
index 0000000..20c9b3a
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RequestError.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * An indication of a problem with the execution of the server, typically in response to a request.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class RequestError {
+
+ public static final RequestError[] EMPTY_ARRAY = new RequestError[0];
+
+ public static final List<RequestError> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * A code that uniquely identifies the error that occurred.
+ */
+ private final String code;
+
+ /**
+ * A short description of the error.
+ */
+ private final String message;
+
+ /**
+ * The stack trace associated with processing the request, used for debugging the server.
+ */
+ private final String stackTrace;
+
+ /**
+ * Constructor for {@link RequestError}.
+ */
+ public RequestError(String code, String message, String stackTrace) {
+ this.code = code;
+ this.message = message;
+ this.stackTrace = stackTrace;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof RequestError) {
+ RequestError other = (RequestError) obj;
+ return
+ ObjectUtilities.equals(other.code, code) &&
+ ObjectUtilities.equals(other.message, message) &&
+ ObjectUtilities.equals(other.stackTrace, stackTrace);
+ }
+ return false;
+ }
+
+ public static RequestError fromJson(JsonObject jsonObject) {
+ String code = jsonObject.get("code").getAsString();
+ String message = jsonObject.get("message").getAsString();
+ String stackTrace = jsonObject.get("stackTrace") == null ? null : jsonObject.get("stackTrace").getAsString();
+ return new RequestError(code, message, stackTrace);
+ }
+
+ public static List<RequestError> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<RequestError> list = new ArrayList<RequestError>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * A code that uniquely identifies the error that occurred.
+ */
+ public String getCode() {
+ return code;
+ }
+
+ /**
+ * A short description of the error.
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * The stack trace associated with processing the request, used for debugging the server.
+ */
+ public String getStackTrace() {
+ return stackTrace;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(code);
+ builder.append(message);
+ builder.append(stackTrace);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("code", code);
+ jsonObject.addProperty("message", message);
+ if (stackTrace != null) {
+ jsonObject.addProperty("stackTrace", stackTrace);
+ }
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("code=");
+ builder.append(code + ", ");
+ builder.append("message=");
+ builder.append(message + ", ");
+ builder.append("stackTrace=");
+ builder.append(stackTrace);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RequestErrorCode.java b/pkg/analysis_server/tool/spec/generated/java/types/RequestErrorCode.java
new file mode 100644
index 0000000..99f418a
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RequestErrorCode.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the types of errors that can occur in the execution of the server.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class RequestErrorCode {
+
+ /**
+ * An "analysis.getErrors" or "analysis.getNavigation" request could not be satisfied because the
+ * content of the file changed before the requested results could be computed.
+ */
+ public static final String CONTENT_MODIFIED = "CONTENT_MODIFIED";
+
+ /**
+ * An "edit.format" request specified a FilePath which does not match a Dart file in an analysis
+ * root.
+ */
+ public static final String FORMAT_INVALID_FILE = "FORMAT_INVALID_FILE";
+
+ /**
+ * An "edit.format" request specified a file that contains syntax errors.
+ */
+ public static final String FORMAT_WITH_ERRORS = "FORMAT_WITH_ERRORS";
+
+ /**
+ * An "analysis.getErrors" request specified a FilePath which does not match a file currently
+ * subject to analysis.
+ */
+ public static final String GET_ERRORS_INVALID_FILE = "GET_ERRORS_INVALID_FILE";
+
+ /**
+ * A path passed as an argument to a request (such as analysis.reanalyze) is required to be an
+ * analysis root, but isn't.
+ */
+ public static final String INVALID_ANALYSIS_ROOT = "INVALID_ANALYSIS_ROOT";
+
+ /**
+ * The context root used to create an execution context does not exist.
+ */
+ public static final String INVALID_EXECUTION_CONTEXT = "INVALID_EXECUTION_CONTEXT";
+
+ /**
+ * An "analysis.updateContent" request contained a ChangeContentOverlay object which can't be
+ * applied, due to an edit having an offset or length that is out of range.
+ */
+ public static final String INVALID_OVERLAY_CHANGE = "INVALID_OVERLAY_CHANGE";
+
+ /**
+ * One of the method parameters was invalid.
+ */
+ public static final String INVALID_PARAMETER = "INVALID_PARAMETER";
+
+ /**
+ * A malformed request was received.
+ */
+ public static final String INVALID_REQUEST = "INVALID_REQUEST";
+
+ /**
+ * The "--no-index" flag was passed when the analysis server created, but this API call requires an
+ * index to have been generated.
+ */
+ public static final String NO_INDEX_GENERATED = "NO_INDEX_GENERATED";
+
+ /**
+ * Another refactoring request was received during processing of this one.
+ */
+ public static final String REFACTORING_REQUEST_CANCELLED = "REFACTORING_REQUEST_CANCELLED";
+
+ /**
+ * The analysis server has already been started (and hence won't accept new connections).
+ *
+ * This error is included for future expansion; at present the analysis server can only speak to
+ * one client at a time so this error will never occur.
+ */
+ public static final String SERVER_ALREADY_STARTED = "SERVER_ALREADY_STARTED";
+
+ /**
+ * An internal error occurred in the analysis server. Also see the server.error notification.
+ */
+ public static final String SERVER_ERROR = "SERVER_ERROR";
+
+ /**
+ * An "edit.sortMembers" request specified a FilePath which does not match a Dart file in an
+ * analysis root.
+ */
+ public static final String SORT_MEMBERS_INVALID_FILE = "SORT_MEMBERS_INVALID_FILE";
+
+ /**
+ * An "edit.sortMembers" request specified a Dart file that has scan or parse errors.
+ */
+ public static final String SORT_MEMBERS_PARSE_ERRORS = "SORT_MEMBERS_PARSE_ERRORS";
+
+ /**
+ * An "analysis.setPriorityFiles" request includes one or more files that are not being analyzed.
+ *
+ * This is a legacy error; it will be removed before the API reaches version 1.0.
+ */
+ public static final String UNANALYZED_PRIORITY_FILES = "UNANALYZED_PRIORITY_FILES";
+
+ /**
+ * A request was received which the analysis server does not recognize, or cannot handle in its
+ * current configuation.
+ */
+ public static final String UNKNOWN_REQUEST = "UNKNOWN_REQUEST";
+
+ /**
+ * The analysis server was requested to perform an action on a source that does not exist.
+ */
+ public static final String UNKNOWN_SOURCE = "UNKNOWN_SOURCE";
+
+ /**
+ * The analysis server was requested to perform an action which is not supported.
+ *
+ * This is a legacy error; it will be removed before the API reaches version 1.0.
+ */
+ public static final String UNSUPPORTED_FEATURE = "UNSUPPORTED_FEATURE";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/SearchResult.java b/pkg/analysis_server/tool/spec/generated/java/types/SearchResult.java
new file mode 100644
index 0000000..19f4eac
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/SearchResult.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A single result from a search request.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class SearchResult {
+
+ public static final SearchResult[] EMPTY_ARRAY = new SearchResult[0];
+
+ public static final List<SearchResult> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The location of the code that matched the search criteria.
+ */
+ private final Location location;
+
+ /**
+ * The kind of element that was found or the kind of reference that was found.
+ */
+ private final String kind;
+
+ /**
+ * True if the result is a potential match but cannot be confirmed to be a match. For example, if
+ * all references to a method m defined in some class were requested, and a reference to a method m
+ * from an unknown class were found, it would be marked as being a potential match.
+ */
+ private final boolean isPotential;
+
+ /**
+ * The elements that contain the result, starting with the most immediately enclosing ancestor and
+ * ending with the library.
+ */
+ private final List<Element> path;
+
+ /**
+ * Constructor for {@link SearchResult}.
+ */
+ public SearchResult(Location location, String kind, boolean isPotential, List<Element> path) {
+ this.location = location;
+ this.kind = kind;
+ this.isPotential = isPotential;
+ this.path = path;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof SearchResult) {
+ SearchResult other = (SearchResult) obj;
+ return
+ ObjectUtilities.equals(other.location, location) &&
+ ObjectUtilities.equals(other.kind, kind) &&
+ other.isPotential == isPotential &&
+ ObjectUtilities.equals(other.path, path);
+ }
+ return false;
+ }
+
+ public static SearchResult fromJson(JsonObject jsonObject) {
+ Location location = Location.fromJson(jsonObject.get("location").getAsJsonObject());
+ String kind = jsonObject.get("kind").getAsString();
+ boolean isPotential = jsonObject.get("isPotential").getAsBoolean();
+ List<Element> path = Element.fromJsonArray(jsonObject.get("path").getAsJsonArray());
+ return new SearchResult(location, kind, isPotential, path);
+ }
+
+ public static List<SearchResult> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<SearchResult> list = new ArrayList<SearchResult>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * True if the result is a potential match but cannot be confirmed to be a match. For example, if
+ * all references to a method m defined in some class were requested, and a reference to a method m
+ * from an unknown class were found, it would be marked as being a potential match.
+ */
+ public boolean isPotential() {
+ return isPotential;
+ }
+
+ /**
+ * The kind of element that was found or the kind of reference that was found.
+ */
+ public String getKind() {
+ return kind;
+ }
+
+ /**
+ * The location of the code that matched the search criteria.
+ */
+ public Location getLocation() {
+ return location;
+ }
+
+ /**
+ * The elements that contain the result, starting with the most immediately enclosing ancestor and
+ * ending with the library.
+ */
+ public List<Element> getPath() {
+ return path;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(location);
+ builder.append(kind);
+ builder.append(isPotential);
+ builder.append(path);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.add("location", location.toJson());
+ jsonObject.addProperty("kind", kind);
+ jsonObject.addProperty("isPotential", isPotential);
+ JsonArray jsonArrayPath = new JsonArray();
+ for (Element elt : path) {
+ jsonArrayPath.add(elt.toJson());
+ }
+ jsonObject.add("path", jsonArrayPath);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("location=");
+ builder.append(location + ", ");
+ builder.append("kind=");
+ builder.append(kind + ", ");
+ builder.append("isPotential=");
+ builder.append(isPotential + ", ");
+ builder.append("path=");
+ builder.append(StringUtils.join(path, ", "));
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/SearchResultKind.java b/pkg/analysis_server/tool/spec/generated/java/types/SearchResultKind.java
new file mode 100644
index 0000000..4cf530d
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/SearchResultKind.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the kinds of search results returned by the search domain.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class SearchResultKind {
+
+ /**
+ * The declaration of an element.
+ */
+ public static final String DECLARATION = "DECLARATION";
+
+ /**
+ * The invocation of a function or method.
+ */
+ public static final String INVOCATION = "INVOCATION";
+
+ /**
+ * A reference to a field, parameter or variable where it is being read.
+ */
+ public static final String READ = "READ";
+
+ /**
+ * A reference to a field, parameter or variable where it is being read and written.
+ */
+ public static final String READ_WRITE = "READ_WRITE";
+
+ /**
+ * A reference to an element.
+ */
+ public static final String REFERENCE = "REFERENCE";
+
+ /**
+ * Some other kind of search result.
+ */
+ public static final String UNKNOWN = "UNKNOWN";
+
+ /**
+ * A reference to a field, parameter or variable where it is being written.
+ */
+ public static final String WRITE = "WRITE";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ServerService.java b/pkg/analysis_server/tool/spec/generated/java/types/ServerService.java
new file mode 100644
index 0000000..4878287
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ServerService.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+/**
+ * An enumeration of the services provided by the server domain.
+ *
+ * @coverage dart.server.generated.types
+ */
+public class ServerService {
+
+ public static final String STATUS = "STATUS";
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/SourceChange.java b/pkg/analysis_server/tool/spec/generated/java/types/SourceChange.java
new file mode 100644
index 0000000..7d39be9
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/SourceChange.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of a set of edits that implement a single conceptual change.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class SourceChange {
+
+ public static final SourceChange[] EMPTY_ARRAY = new SourceChange[0];
+
+ public static final List<SourceChange> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * A human-readable description of the change to be applied.
+ */
+ private final String message;
+
+ /**
+ * A list of the edits used to effect the change, grouped by file.
+ */
+ private final List<SourceFileEdit> edits;
+
+ /**
+ * A list of the linked editing groups used to customize the changes that were made.
+ */
+ private final List<LinkedEditGroup> linkedEditGroups;
+
+ /**
+ * The position that should be selected after the edits have been applied.
+ */
+ private final Position selection;
+
+ /**
+ * Constructor for {@link SourceChange}.
+ */
+ public SourceChange(String message, List<SourceFileEdit> edits, List<LinkedEditGroup> linkedEditGroups, Position selection) {
+ this.message = message;
+ this.edits = edits;
+ this.linkedEditGroups = linkedEditGroups;
+ this.selection = selection;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof SourceChange) {
+ SourceChange other = (SourceChange) obj;
+ return
+ ObjectUtilities.equals(other.message, message) &&
+ ObjectUtilities.equals(other.edits, edits) &&
+ ObjectUtilities.equals(other.linkedEditGroups, linkedEditGroups) &&
+ ObjectUtilities.equals(other.selection, selection);
+ }
+ return false;
+ }
+
+ public static SourceChange fromJson(JsonObject jsonObject) {
+ String message = jsonObject.get("message").getAsString();
+ List<SourceFileEdit> edits = SourceFileEdit.fromJsonArray(jsonObject.get("edits").getAsJsonArray());
+ List<LinkedEditGroup> linkedEditGroups = LinkedEditGroup.fromJsonArray(jsonObject.get("linkedEditGroups").getAsJsonArray());
+ Position selection = jsonObject.get("selection") == null ? null : Position.fromJson(jsonObject.get("selection").getAsJsonObject());
+ return new SourceChange(message, edits, linkedEditGroups, selection);
+ }
+
+ public static List<SourceChange> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<SourceChange> list = new ArrayList<SourceChange>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * A list of the edits used to effect the change, grouped by file.
+ */
+ public List<SourceFileEdit> getEdits() {
+ return edits;
+ }
+
+ /**
+ * A list of the linked editing groups used to customize the changes that were made.
+ */
+ public List<LinkedEditGroup> getLinkedEditGroups() {
+ return linkedEditGroups;
+ }
+
+ /**
+ * A human-readable description of the change to be applied.
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * The position that should be selected after the edits have been applied.
+ */
+ public Position getSelection() {
+ return selection;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(message);
+ builder.append(edits);
+ builder.append(linkedEditGroups);
+ builder.append(selection);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("message", message);
+ JsonArray jsonArrayEdits = new JsonArray();
+ for (SourceFileEdit elt : edits) {
+ jsonArrayEdits.add(elt.toJson());
+ }
+ jsonObject.add("edits", jsonArrayEdits);
+ JsonArray jsonArrayLinkedEditGroups = new JsonArray();
+ for (LinkedEditGroup elt : linkedEditGroups) {
+ jsonArrayLinkedEditGroups.add(elt.toJson());
+ }
+ jsonObject.add("linkedEditGroups", jsonArrayLinkedEditGroups);
+ if (selection != null) {
+ jsonObject.add("selection", selection.toJson());
+ }
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("message=");
+ builder.append(message + ", ");
+ builder.append("edits=");
+ builder.append(StringUtils.join(edits, ", ") + ", ");
+ builder.append("linkedEditGroups=");
+ builder.append(StringUtils.join(linkedEditGroups, ", ") + ", ");
+ builder.append("selection=");
+ builder.append(selection);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/SourceEdit.java b/pkg/analysis_server/tool/spec/generated/java/types/SourceEdit.java
new file mode 100644
index 0000000..adcf771
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/SourceEdit.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of a single change to a single file.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class SourceEdit {
+
+ public static final SourceEdit[] EMPTY_ARRAY = new SourceEdit[0];
+
+ public static final List<SourceEdit> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The offset of the region to be modified.
+ */
+ private final int offset;
+
+ /**
+ * The length of the region to be modified.
+ */
+ private final int length;
+
+ /**
+ * The code that is to replace the specified region in the original code.
+ */
+ private final String replacement;
+
+ /**
+ * An identifier that uniquely identifies this source edit from other edits in the same response.
+ * This field is omitted unless a containing structure needs to be able to identify the edit for
+ * some reason.
+ *
+ * For example, some refactoring operations can produce edits that might not be appropriate
+ * (referred to as potential edits). Such edits will have an id so that they can be referenced.
+ * Edits in the same response that do not need to be referenced will not have an id.
+ */
+ private final String id;
+
+ /**
+ * Constructor for {@link SourceEdit}.
+ */
+ public SourceEdit(int offset, int length, String replacement, String id) {
+ this.offset = offset;
+ this.length = length;
+ this.replacement = replacement;
+ this.id = id;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof SourceEdit) {
+ SourceEdit other = (SourceEdit) obj;
+ return
+ other.offset == offset &&
+ other.length == length &&
+ ObjectUtilities.equals(other.replacement, replacement) &&
+ ObjectUtilities.equals(other.id, id);
+ }
+ return false;
+ }
+
+ public static SourceEdit fromJson(JsonObject jsonObject) {
+ int offset = jsonObject.get("offset").getAsInt();
+ int length = jsonObject.get("length").getAsInt();
+ String replacement = jsonObject.get("replacement").getAsString();
+ String id = jsonObject.get("id") == null ? null : jsonObject.get("id").getAsString();
+ return new SourceEdit(offset, length, replacement, id);
+ }
+
+ public static List<SourceEdit> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<SourceEdit> list = new ArrayList<SourceEdit>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * An identifier that uniquely identifies this source edit from other edits in the same response.
+ * This field is omitted unless a containing structure needs to be able to identify the edit for
+ * some reason.
+ *
+ * For example, some refactoring operations can produce edits that might not be appropriate
+ * (referred to as potential edits). Such edits will have an id so that they can be referenced.
+ * Edits in the same response that do not need to be referenced will not have an id.
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * The length of the region to be modified.
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * The offset of the region to be modified.
+ */
+ public int getOffset() {
+ return offset;
+ }
+
+ /**
+ * The code that is to replace the specified region in the original code.
+ */
+ public String getReplacement() {
+ return replacement;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(offset);
+ builder.append(length);
+ builder.append(replacement);
+ builder.append(id);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("offset", offset);
+ jsonObject.addProperty("length", length);
+ jsonObject.addProperty("replacement", replacement);
+ if (id != null) {
+ jsonObject.addProperty("id", id);
+ }
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("offset=");
+ builder.append(offset + ", ");
+ builder.append("length=");
+ builder.append(length + ", ");
+ builder.append("replacement=");
+ builder.append(replacement + ", ");
+ builder.append("id=");
+ builder.append(id);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/SourceFileEdit.java b/pkg/analysis_server/tool/spec/generated/java/types/SourceFileEdit.java
new file mode 100644
index 0000000..d9d247d
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/SourceFileEdit.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A description of a set of changes to a single file.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class SourceFileEdit {
+
+ public static final SourceFileEdit[] EMPTY_ARRAY = new SourceFileEdit[0];
+
+ public static final List<SourceFileEdit> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The file containing the code to be modified.
+ */
+ private final String file;
+
+ /**
+ * The modification stamp of the file at the moment when the change was created, in milliseconds
+ * since the "Unix epoch". Will be -1 if the file did not exist and should be created. The client
+ * may use this field to make sure that the file was not changed since then, so it is safe to apply
+ * the change.
+ */
+ private final long fileStamp;
+
+ /**
+ * A list of the edits used to effect the change.
+ */
+ private final List<SourceEdit> edits;
+
+ /**
+ * Constructor for {@link SourceFileEdit}.
+ */
+ public SourceFileEdit(String file, long fileStamp, List<SourceEdit> edits) {
+ this.file = file;
+ this.fileStamp = fileStamp;
+ this.edits = edits;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof SourceFileEdit) {
+ SourceFileEdit other = (SourceFileEdit) obj;
+ return
+ ObjectUtilities.equals(other.file, file) &&
+ other.fileStamp == fileStamp &&
+ ObjectUtilities.equals(other.edits, edits);
+ }
+ return false;
+ }
+
+ public static SourceFileEdit fromJson(JsonObject jsonObject) {
+ String file = jsonObject.get("file").getAsString();
+ long fileStamp = jsonObject.get("fileStamp").getAsLong();
+ List<SourceEdit> edits = SourceEdit.fromJsonArray(jsonObject.get("edits").getAsJsonArray());
+ return new SourceFileEdit(file, fileStamp, edits);
+ }
+
+ public static List<SourceFileEdit> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<SourceFileEdit> list = new ArrayList<SourceFileEdit>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ /**
+ * A list of the edits used to effect the change.
+ */
+ public List<SourceEdit> getEdits() {
+ return edits;
+ }
+
+ /**
+ * The file containing the code to be modified.
+ */
+ public String getFile() {
+ return file;
+ }
+
+ /**
+ * The modification stamp of the file at the moment when the change was created, in milliseconds
+ * since the "Unix epoch". Will be -1 if the file did not exist and should be created. The client
+ * may use this field to make sure that the file was not changed since then, so it is safe to apply
+ * the change.
+ */
+ public long getFileStamp() {
+ return fileStamp;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(file);
+ builder.append(fileStamp);
+ builder.append(edits);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("file", file);
+ jsonObject.addProperty("fileStamp", fileStamp);
+ JsonArray jsonArrayEdits = new JsonArray();
+ for (SourceEdit elt : edits) {
+ jsonArrayEdits.add(elt.toJson());
+ }
+ jsonObject.add("edits", jsonArrayEdits);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("file=");
+ builder.append(file + ", ");
+ builder.append("fileStamp=");
+ builder.append(fileStamp + ", ");
+ builder.append("edits=");
+ builder.append(StringUtils.join(edits, ", "));
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/TypeHierarchyItem.java b/pkg/analysis_server/tool/spec/generated/java/types/TypeHierarchyItem.java
new file mode 100644
index 0000000..2c14939
--- /dev/null
+++ b/pkg/analysis_server/tool/spec/generated/java/types/TypeHierarchyItem.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright (c) 2014, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * This file has been automatically generated. Please do not edit it manually.
+ * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
+ */
+package com.google.dart.server.generated.types;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Lists;
+import com.google.dart.server.utilities.general.JsonUtilities;
+import com.google.dart.server.utilities.general.ObjectUtilities;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * A representation of a class in a type hierarchy.
+ *
+ * @coverage dart.server.generated.types
+ */
+@SuppressWarnings("unused")
+public class TypeHierarchyItem {
+
+ public static final TypeHierarchyItem[] EMPTY_ARRAY = new TypeHierarchyItem[0];
+
+ public static final List<TypeHierarchyItem> EMPTY_LIST = Lists.newArrayList();
+
+ /**
+ * The class element represented by this item.
+ */
+ private final Element classElement;
+
+ /**
+ * The name to be displayed for the class. This field will be omitted if the display name is the
+ * same as the name of the element. The display name is different if there is additional type
+ * information to be displayed, such as type arguments.
+ */
+ private final String displayName;
+
+ /**
+ * The member in the class corresponding to the member on which the hierarchy was requested. This
+ * field will be omitted if the hierarchy was not requested for a member or if the class does not
+ * have a corresponding member.
+ */
+ private final Element memberElement;
+
+ /**
+ * The index of the item representing the superclass of this class. This field will be omitted if
+ * this item represents the class Object.
+ */
+ private final Integer superclass;
+
+ /**
+ * The indexes of the items representing the interfaces implemented by this class. The list will be
+ * empty if there are no implemented interfaces.
+ */
+ private final int[] interfaces;
+
+ /**
+ * The indexes of the items representing the mixins referenced by this class. The list will be
+ * empty if there are no classes mixed in to this class.
+ */
+ private final int[] mixins;
+
+ /**
+ * The indexes of the items representing the subtypes of this class. The list will be empty if
+ * there are no subtypes or if this item represents a supertype of the pivot type.
+ */
+ private final int[] subclasses;
+
+ /**
+ * Constructor for {@link TypeHierarchyItem}.
+ */
+ public TypeHierarchyItem(Element classElement, String displayName, Element memberElement, Integer superclass, int[] interfaces, int[] mixins, int[] subclasses) {
+ this.classElement = classElement;
+ this.displayName = displayName;
+ this.memberElement = memberElement;
+ this.superclass = superclass;
+ this.interfaces = interfaces;
+ this.mixins = mixins;
+ this.subclasses = subclasses;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof TypeHierarchyItem) {
+ TypeHierarchyItem other = (TypeHierarchyItem) obj;
+ return
+ ObjectUtilities.equals(other.classElement, classElement) &&
+ ObjectUtilities.equals(other.displayName, displayName) &&
+ ObjectUtilities.equals(other.memberElement, memberElement) &&
+ ObjectUtilities.equals(other.superclass, superclass) &&
+ Arrays.equals(other.interfaces, interfaces) &&
+ Arrays.equals(other.mixins, mixins) &&
+ Arrays.equals(other.subclasses, subclasses);
+ }
+ return false;
+ }
+
+ public static TypeHierarchyItem fromJson(JsonObject jsonObject) {
+ Element classElement = Element.fromJson(jsonObject.get("classElement").getAsJsonObject());
+ String displayName = jsonObject.get("displayName") == null ? null : jsonObject.get("displayName").getAsString();
+ Element memberElement = jsonObject.get("memberElement") == null ? null : Element.fromJson(jsonObject.get("memberElement").getAsJsonObject());
+ Integer superclass = jsonObject.get("superclass") == null ? null : jsonObject.get("superclass").getAsInt();
+ int[] interfaces = JsonUtilities.decodeIntArray(jsonObject.get("interfaces").getAsJsonArray());
+ int[] mixins = JsonUtilities.decodeIntArray(jsonObject.get("mixins").getAsJsonArray());
+ int[] subclasses = JsonUtilities.decodeIntArray(jsonObject.get("subclasses").getAsJsonArray());
+ return new TypeHierarchyItem(classElement, displayName, memberElement, superclass, interfaces, mixins, subclasses);
+ }
+
+ public static List<TypeHierarchyItem> fromJsonArray(JsonArray jsonArray) {
+ if (jsonArray == null) {
+ return EMPTY_LIST;
+ }
+ ArrayList<TypeHierarchyItem> list = new ArrayList<TypeHierarchyItem>(jsonArray.size());
+ Iterator<JsonElement> iterator = jsonArray.iterator();
+ while (iterator.hasNext()) {
+ list.add(fromJson(iterator.next().getAsJsonObject()));
+ }
+ return list;
+ }
+
+ public String getBestName() {
+ if (displayName == null) {
+ return classElement.getName();
+ } else {
+ return displayName;
+ }
+ }
+
+ /**
+ * The class element represented by this item.
+ */
+ public Element getClassElement() {
+ return classElement;
+ }
+
+ /**
+ * The name to be displayed for the class. This field will be omitted if the display name is the
+ * same as the name of the element. The display name is different if there is additional type
+ * information to be displayed, such as type arguments.
+ */
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ /**
+ * The indexes of the items representing the interfaces implemented by this class. The list will be
+ * empty if there are no implemented interfaces.
+ */
+ public int[] getInterfaces() {
+ return interfaces;
+ }
+
+ /**
+ * The member in the class corresponding to the member on which the hierarchy was requested. This
+ * field will be omitted if the hierarchy was not requested for a member or if the class does not
+ * have a corresponding member.
+ */
+ public Element getMemberElement() {
+ return memberElement;
+ }
+
+ /**
+ * The indexes of the items representing the mixins referenced by this class. The list will be
+ * empty if there are no classes mixed in to this class.
+ */
+ public int[] getMixins() {
+ return mixins;
+ }
+
+ /**
+ * The indexes of the items representing the subtypes of this class. The list will be empty if
+ * there are no subtypes or if this item represents a supertype of the pivot type.
+ */
+ public int[] getSubclasses() {
+ return subclasses;
+ }
+
+ /**
+ * The index of the item representing the superclass of this class. This field will be omitted if
+ * this item represents the class Object.
+ */
+ public Integer getSuperclass() {
+ return superclass;
+ }
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(classElement);
+ builder.append(displayName);
+ builder.append(memberElement);
+ builder.append(superclass);
+ builder.append(interfaces);
+ builder.append(mixins);
+ builder.append(subclasses);
+ return builder.toHashCode();
+ }
+
+ public JsonObject toJson() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.add("classElement", classElement.toJson());
+ if (displayName != null) {
+ jsonObject.addProperty("displayName", displayName);
+ }
+ if (memberElement != null) {
+ jsonObject.add("memberElement", memberElement.toJson());
+ }
+ if (superclass != null) {
+ jsonObject.addProperty("superclass", superclass);
+ }
+ JsonArray jsonArrayInterfaces = new JsonArray();
+ for (int elt : interfaces) {
+ jsonArrayInterfaces.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("interfaces", jsonArrayInterfaces);
+ JsonArray jsonArrayMixins = new JsonArray();
+ for (int elt : mixins) {
+ jsonArrayMixins.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("mixins", jsonArrayMixins);
+ JsonArray jsonArraySubclasses = new JsonArray();
+ for (int elt : subclasses) {
+ jsonArraySubclasses.add(new JsonPrimitive(elt));
+ }
+ jsonObject.add("subclasses", jsonArraySubclasses);
+ return jsonObject;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ builder.append("classElement=");
+ builder.append(classElement + ", ");
+ builder.append("displayName=");
+ builder.append(displayName + ", ");
+ builder.append("memberElement=");
+ builder.append(memberElement + ", ");
+ builder.append("superclass=");
+ builder.append(superclass + ", ");
+ builder.append("interfaces=");
+ builder.append(StringUtils.join(interfaces, ", ") + ", ");
+ builder.append("mixins=");
+ builder.append(StringUtils.join(mixins, ", ") + ", ");
+ builder.append("subclasses=");
+ builder.append(StringUtils.join(subclasses, ", "));
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/pkg/analyzer/example/resolver_driver.dart b/pkg/analyzer/example/resolver_driver.dart
index 44d9635..59e66e7 100755
--- a/pkg/analyzer/example/resolver_driver.dart
+++ b/pkg/analyzer/example/resolver_driver.dart
@@ -14,9 +14,6 @@
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/source_io.dart';
-const _usage =
- 'Usage: resolve_driver <path_to_sdk> <file_to_resolve> [<packages_root>]';
-
void main(List<String> args) {
print('working dir ${new File('.').resolveSymbolicLinksSync()}');
@@ -43,7 +40,7 @@
AnalysisContext context = AnalysisEngine.instance.createAnalysisContext()
..sourceFactory = new SourceFactory(resolvers);
- Source source = new FileBasedSource.con1(new JavaFile(args[1]));
+ Source source = new FileBasedSource(new JavaFile(args[1]));
ChangeSet changeSet = new ChangeSet()..addedSource(source);
context.applyChanges(changeSet);
LibraryElement libElement = context.computeLibraryElement(source);
@@ -55,6 +52,9 @@
resolvedUnit.accept(visitor);
}
+const _usage =
+ 'Usage: resolve_driver <path_to_sdk> <file_to_resolve> [<packages_root>]';
+
class _ASTVisitor extends GeneralizingAstVisitor {
visitNode(AstNode node) {
var lines = <String>['${node.runtimeType} : <"$node">'];
diff --git a/pkg/analyzer/lib/file_system/physical_file_system.dart b/pkg/analyzer/lib/file_system/physical_file_system.dart
index 2cd391a..139d67d 100644
--- a/pkg/analyzer/lib/file_system/physical_file_system.dart
+++ b/pkg/analyzer/lib/file_system/physical_file_system.dart
@@ -91,7 +91,7 @@
if (uri == null) {
uri = javaFile.toURI();
}
- return new FileBasedSource.con2(uri, javaFile);
+ return new FileBasedSource(javaFile, uri);
}
@override
diff --git a/pkg/analyzer/lib/src/context/cache.dart b/pkg/analyzer/lib/src/context/cache.dart
index 5ae41bd..4c4c46fd 100644
--- a/pkg/analyzer/lib/src/context/cache.dart
+++ b/pkg/analyzer/lib/src/context/cache.dart
@@ -6,10 +6,8 @@
import 'dart:collection';
-import 'package:analyzer/src/generated/ast.dart';
import 'package:analyzer/src/generated/engine.dart'
show AnalysisEngine, CacheState, InternalAnalysisContext, RetentionPriority;
-import 'package:analyzer/src/generated/html.dart';
import 'package:analyzer/src/generated/java_engine.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_collection.dart';
@@ -17,6 +15,11 @@
import 'package:analyzer/task/model.dart';
/**
+ * Return `true` if the given [target] is a priority one.
+ */
+typedef bool IsPriorityAnalysisTarget(AnalysisTarget target);
+
+/**
* An LRU cache of results produced by analysis.
*/
class AnalysisCache {
@@ -39,12 +42,6 @@
*/
AnalysisCache(this._partitions);
- /**
- * Return the number of entries in this cache that have an AST associated with
- * them.
- */
- int get astSize => _partitions[_partitions.length - 1].astSize;
-
// TODO(brianwilkerson) Implement or delete this.
// /**
// * Return information about each of the partitions in this cache.
@@ -63,29 +60,14 @@
// }
/**
- * Record that the AST associated with the given [target] was just read from
- * the cache.
- */
- void accessedAst(AnalysisTarget target) {
- // TODO(brianwilkerson) Extract this logic to a helper method (here and
- // elsewhere)
- int count = _partitions.length;
- for (int i = 0; i < count; i++) {
- if (_partitions[i].contains(target)) {
- _partitions[i].accessedAst(target);
- return;
- }
- }
- }
-
- /**
* Return the entry associated with the given [target].
*/
CacheEntry get(AnalysisTarget target) {
int count = _partitions.length;
for (int i = 0; i < count; i++) {
- if (_partitions[i].contains(target)) {
- return _partitions[i].get(target);
+ CachePartition partition = _partitions[i];
+ if (partition.isResponsibleFor(target)) {
+ return partition.get(target);
}
}
//
@@ -102,8 +84,9 @@
InternalAnalysisContext getContextFor(AnalysisTarget target) {
int count = _partitions.length;
for (int i = 0; i < count; i++) {
- if (_partitions[i].contains(target)) {
- return _partitions[i].context;
+ CachePartition partition = _partitions[i];
+ if (partition.isResponsibleFor(target)) {
+ return partition.context;
}
}
//
@@ -119,6 +102,34 @@
}
/**
+ * Return the state of the given [result] for the given [target].
+ *
+ * It does not update the cache, if the corresponding [CacheEntry] does not
+ * exist, then [CacheState.INVALID] is returned.
+ */
+ CacheState getState(AnalysisTarget target, ResultDescriptor result) {
+ CacheEntry entry = get(target);
+ if (entry == null) {
+ return CacheState.INVALID;
+ }
+ return entry.getState(result);
+ }
+
+ /**
+ * Return the value of the given [result] for the given [target].
+ *
+ * It does not update the cache, if the corresponding [CacheEntry] does not
+ * exist, then the default value is returned.
+ */
+ Object getValue(AnalysisTarget target, ResultDescriptor result) {
+ CacheEntry entry = get(target);
+ if (entry == null) {
+ return result.defaultValue;
+ }
+ return entry.getValue(result);
+ }
+
+ /**
* Return an iterator returning all of the map entries mapping targets to
* cache entries.
*/
@@ -132,17 +143,17 @@
}
/**
- * Associate the given [entry] with the given [target].
+ * Puts the given [entry] into the cache.
*/
- void put(AnalysisTarget target, CacheEntry entry) {
- entry._cache = this;
- entry._target = target;
+ void put(CacheEntry entry) {
+ AnalysisTarget target = entry.target;
entry.fixExceptionState();
int count = _partitions.length;
for (int i = 0; i < count; i++) {
- if (_partitions[i].contains(target)) {
+ CachePartition partition = _partitions[i];
+ if (partition.isResponsibleFor(target)) {
if (_TRACE_CHANGES) {
- CacheEntry oldEntry = _partitions[i].get(target);
+ CacheEntry oldEntry = partition.get(target);
if (oldEntry == null) {
AnalysisEngine.instance.logger
.logInformation('Added a cache entry for $target.');
@@ -152,7 +163,7 @@
// 'Diff = ${entry.getDiff(oldEntry)}');
}
}
- _partitions[i].put(target, entry);
+ partition.put(entry);
return;
}
}
@@ -166,26 +177,13 @@
void remove(AnalysisTarget target) {
int count = _partitions.length;
for (int i = 0; i < count; i++) {
- if (_partitions[i].contains(target)) {
+ CachePartition partition = _partitions[i];
+ if (partition.isResponsibleFor(target)) {
if (_TRACE_CHANGES) {
AnalysisEngine.instance.logger
.logInformation('Removed the cache entry for $target.');
}
- _partitions[i].remove(target);
- return;
- }
- }
- }
-
- /**
- * Record that the AST associated with the given [target] was just removed
- * from the cache.
- */
- void removedAst(AnalysisTarget target) {
- int count = _partitions.length;
- for (int i = 0; i < count; i++) {
- if (_partitions[i].contains(target)) {
- _partitions[i].removedAst(target);
+ partition.remove(target);
return;
}
}
@@ -202,32 +200,6 @@
}
return size;
}
-
- /**
- * Record that the AST associated with the given [target] was just stored to
- * the cache.
- */
- void storedAst(AnalysisTarget target) {
- int count = _partitions.length;
- for (int i = 0; i < count; i++) {
- if (_partitions[i].contains(target)) {
- _partitions[i].storedAst(target);
- return;
- }
- }
- }
-
- ResultData _getDataFor(TargetedResult result) {
- AnalysisTarget target = result.target;
- int count = _partitions.length;
- for (int i = 0; i < count; i++) {
- if (_partitions[i].contains(target)) {
- CacheEntry entry = _partitions[i].get(target);
- return entry._getResultData(result.result);
- }
- }
- return null;
- }
}
/**
@@ -242,14 +214,14 @@
static int _EXPLICITLY_ADDED_FLAG = 0;
/**
- * The cache that contains this entry.
- */
- AnalysisCache _cache;
-
- /**
* The target this entry is about.
*/
- AnalysisTarget _target;
+ final AnalysisTarget target;
+
+ /**
+ * The partition that is responsible for this entry.
+ */
+ CachePartition _partition;
/**
* The most recent time at which the state of the target matched the state
@@ -274,6 +246,8 @@
Map<ResultDescriptor, ResultData> _resultMap =
new HashMap<ResultDescriptor, ResultData>();
+ CacheEntry(this.target);
+
/**
* The exception that caused one or more values to have a state of
* [CacheState.ERROR].
@@ -296,19 +270,6 @@
}
/**
- * Return `true` if this entry contains at least one result whose value is an
- * AST structure.
- */
- bool get hasAstStructure {
- for (ResultData data in _resultMap.values) {
- if (data.value is AstNode || data.value is XmlNode) {
- return true;
- }
- }
- return false;
- }
-
- /**
* Fix the state of the [exception] to match the current state of the entry.
*/
void fixExceptionState() {
@@ -318,30 +279,6 @@
}
/**
- * Mark any AST structures associated with this cache entry as being flushed.
- */
- void flushAstStructures() {
- _resultMap.forEach((ResultDescriptor descriptor, ResultData data) {
- if (data.value is AstNode || data.value is XmlNode) {
- _validateStateChange(descriptor, CacheState.FLUSHED);
- data.state = CacheState.FLUSHED;
- data.value = descriptor.defaultValue;
- }
- });
- }
-
- /**
- * Return the memento of the result represented by the given [descriptor].
- */
- Object getMemento(ResultDescriptor descriptor) {
- ResultData data = _resultMap[descriptor];
- if (data == null) {
- return null;
- }
- return data.memento;
- }
-
- /**
* Return the state of the result represented by the given [descriptor].
*/
CacheState getState(ResultDescriptor descriptor) {
@@ -361,6 +298,9 @@
if (data == null) {
return descriptor.defaultValue;
}
+ if (_partition != null) {
+ _partition.resultAccessed(target, descriptor);
+ }
return data.value;
}
@@ -413,9 +353,7 @@
}
this._exception = exception;
for (ResultDescriptor descriptor in descriptors) {
- ResultData data = _getResultData(descriptor);
- TargetedResult thisResult = new TargetedResult(_target, descriptor);
- data.invalidate(_cache, thisResult, CacheState.ERROR);
+ _setErrorState(descriptor, exception);
}
}
@@ -434,8 +372,7 @@
if (state == CacheState.INVALID) {
ResultData data = _resultMap[descriptor];
if (data != null) {
- TargetedResult thisResult = new TargetedResult(_target, descriptor);
- data.invalidate(_cache, thisResult, CacheState.INVALID);
+ _invalidate(descriptor, true);
}
} else {
ResultData data = _getResultData(descriptor);
@@ -452,21 +389,20 @@
/**
* Set the value of the result represented by the given [descriptor] to the
- * given [value]. The optional [memento] may help to recompute [value] more
- * efficiently after invalidation.
+ * given [value].
*/
/*<V>*/ void setValue(ResultDescriptor /*<V>*/ descriptor, dynamic /*V*/
- value, List<TargetedResult> dependedOn, Object memento) {
+ value, List<TargetedResult> dependedOn) {
_validateStateChange(descriptor, CacheState.VALID);
- ResultData data = _getResultData(descriptor);
- {
- TargetedResult thisResult = new TargetedResult(_target, descriptor);
- data.invalidate(_cache, thisResult, CacheState.INVALID);
- data.setDependedOnResults(_cache, thisResult, dependedOn);
+ TargetedResult thisResult = new TargetedResult(target, descriptor);
+ if (_partition != null) {
+ _partition.resultStored(thisResult, value);
}
+ _invalidate(descriptor, false);
+ ResultData data = _getResultData(descriptor);
+ _setDependedOnResults(data, thisResult, dependedOn);
data.state = CacheState.VALID;
data.value = value == null ? descriptor.defaultValue : value;
- data.memento = memento;
}
@override
@@ -490,6 +426,81 @@
}
/**
+ * Invalidate the result represented by the given [descriptor] if
+ * [includeThis] is true. Propagate invalidation to other results that
+ * depend on it.
+ */
+ void _invalidate(ResultDescriptor descriptor, bool includeThis) {
+ ResultData thisData;
+ if (includeThis) {
+ thisData = _resultMap.remove(descriptor);
+ } else {
+ thisData = _resultMap[descriptor];
+ }
+ if (thisData == null) {
+ return;
+ }
+ // Stop depending on other results.
+ TargetedResult thisResult = new TargetedResult(target, descriptor);
+ thisData.dependedOnResults.forEach((TargetedResult dependedOnResult) {
+ ResultData data = _partition._getDataFor(dependedOnResult, orNull: true);
+ if (data != null) {
+ data.dependentResults.remove(thisResult);
+ }
+ });
+ // Invalidate results that depend on this result.
+ List<TargetedResult> dependentResults = thisData.dependentResults;
+ thisData.dependentResults = <TargetedResult>[];
+ dependentResults.forEach((TargetedResult dependentResult) {
+ CacheEntry entry = _partition.get(dependentResult.target);
+ entry._invalidate(dependentResult.result, true);
+ });
+ // If empty, remove the entry altogether.
+ if (_resultMap.isEmpty) {
+ _partition._targetMap.remove(target);
+ }
+ }
+
+ /**
+ * Invalidates all the results of this entry, with propagation.
+ */
+ void _invalidateAll() {
+ List<ResultDescriptor> results = _resultMap.keys.toList();
+ for (ResultDescriptor result in results) {
+ _invalidate(result, true);
+ }
+ }
+
+ /**
+ * Set the [dependedOn] on which this result depends.
+ */
+ void _setDependedOnResults(ResultData thisData, TargetedResult thisResult,
+ List<TargetedResult> dependedOn) {
+ thisData.dependedOnResults = dependedOn;
+ thisData.dependedOnResults.forEach((TargetedResult dependentResult) {
+ ResultData data = _partition._getDataFor(dependentResult);
+ data.dependentResults.add(thisResult);
+ });
+ }
+
+ /**
+ * Set states of the given and dependent results to [CacheState.ERROR] and
+ * their values to the corresponding default values
+ */
+ void _setErrorState(ResultDescriptor descriptor, CaughtException exception) {
+ ResultData thisData = _getResultData(descriptor);
+ // Set the error state.
+ _exception = exception;
+ thisData.state = CacheState.ERROR;
+ thisData.value = descriptor.defaultValue;
+ // Propagate the error state.
+ thisData.dependentResults.forEach((TargetedResult dependentResult) {
+ CacheEntry entry = _partition.get(dependentResult.target);
+ entry._setErrorState(dependentResult.result, exception);
+ });
+ }
+
+ /**
* Set the value of the flag with the given [index] to the given [value].
*/
void _setFlag(int index, bool value) {
@@ -540,6 +551,134 @@
}
/**
+ * An object that controls flushing of analysis results from the cache.
+ */
+class CacheFlushManager<T> {
+ final IsPriorityAnalysisTarget isPriorityAnalysisTarget;
+ final ResultCachingPolicy<T> policy;
+ final int maxActiveSize;
+ final int maxIdleSize;
+
+ /**
+ * A map of the stored [TargetedResult] to their sizes.
+ */
+ final HashMap<TargetedResult, int> resultSizeMap =
+ new HashMap<TargetedResult, int>();
+
+ /**
+ * A linked set containing the most recently accessed results with the most
+ * recently used at the end of the list. When more results are added than the
+ * maximum size allowed then the least recently used results will be flushed
+ * from the cache.
+ */
+ final LinkedHashSet<TargetedResult> recentlyUsed =
+ new LinkedHashSet<TargetedResult>();
+
+ /**
+ * The current size of stored results.
+ */
+ int currentSize = 0;
+
+ /**
+ * The current maximum cache size.
+ */
+ int maxSize;
+
+ CacheFlushManager(
+ ResultCachingPolicy<T> policy, this.isPriorityAnalysisTarget)
+ : policy = policy,
+ maxActiveSize = policy.maxActiveSize,
+ maxIdleSize = policy.maxIdleSize,
+ maxSize = policy.maxIdleSize;
+
+ /**
+ * If [currentSize] is already less than [maxSize], returns an empty list.
+ * Otherwise returns [TargetedResult]s to flush from the cache to make
+ * [currentSize] less or equal to [maxSize].
+ *
+ * Results for priority files are never flushed, so this method might leave
+ * [currentSize] greater than [maxSize].
+ */
+ List<TargetedResult> flushToSize() {
+ // If still under the cap, done.
+ if (maxSize == -1 || currentSize <= maxSize) {
+ return TargetedResult.EMPTY_LIST;
+ }
+ // Flush results until we are under the cap.
+ List<TargetedResult> resultsToFlush = <TargetedResult>[];
+ for (TargetedResult result in recentlyUsed) {
+ if (isPriorityAnalysisTarget(result.target)) {
+ continue;
+ }
+ resultsToFlush.add(result);
+ int size = resultSizeMap.remove(result);
+ assert(size != null);
+ currentSize -= size;
+ if (currentSize <= maxSize) {
+ break;
+ }
+ }
+ recentlyUsed.removeAll(resultsToFlush);
+ return resultsToFlush;
+ }
+
+ /**
+ * Notifies this manager that the corresponding analysis context is active.
+ */
+ void madeActive() {
+ maxSize = maxActiveSize;
+ }
+
+ /**
+ * Notifies this manager that the corresponding analysis context is idle.
+ * Returns [TargetedResult]s that should be flushed from the cache.
+ */
+ List<TargetedResult> madeIdle() {
+ maxSize = maxIdleSize;
+ return flushToSize();
+ }
+
+ /**
+ * Records that the given [result] was just read from the cache.
+ */
+ void resultAccessed(TargetedResult result) {
+ if (recentlyUsed.remove(result)) {
+ recentlyUsed.add(result);
+ }
+ }
+
+ /**
+ * Records that the given [newResult] and [newValue] were stored to the cache.
+ * Returns [TargetedResult]s that should be flushed from the cache.
+ */
+ List<TargetedResult> resultStored(TargetedResult newResult, T newValue) {
+ if (!recentlyUsed.remove(newResult)) {
+ int size = policy.measure(newValue);
+ resultSizeMap[newResult] = size;
+ currentSize += size;
+ }
+ recentlyUsed.add(newResult);
+ return flushToSize();
+ }
+
+ /**
+ * Records that the given [target] was just removed from to the cache.
+ */
+ void targetRemoved(AnalysisTarget target) {
+ List<TargetedResult> resultsToRemove = <TargetedResult>[];
+ for (TargetedResult result in recentlyUsed) {
+ if (result.target == target) {
+ resultsToRemove.add(result);
+ int size = resultSizeMap.remove(result);
+ assert(size != null);
+ currentSize -= size;
+ }
+ }
+ recentlyUsed.removeAll(resultsToRemove);
+ }
+}
+
+/**
* A single partition in an LRU cache of information related to analysis.
*/
abstract class CachePartition {
@@ -550,15 +689,10 @@
final InternalAnalysisContext context;
/**
- * The maximum number of sources for which AST structures should be kept in
- * the cache.
+ * A table mapping caching policies to the cache flush managers.
*/
- int _maxCacheSize = 0;
-
- /**
- * The policy used to determine which results to remove from the cache.
- */
- final CacheRetentionPolicy _retentionPolicy;
+ final HashMap<ResultCachingPolicy, CacheFlushManager> _flushManagerMap =
+ new HashMap<ResultCachingPolicy, CacheFlushManager>();
/**
* A table mapping the targets belonging to this partition to the information
@@ -568,37 +702,10 @@
new HashMap<AnalysisTarget, CacheEntry>();
/**
- * A list containing the most recently accessed targets with the most recently
- * used at the end of the list. When more targets are added than the maximum
- * allowed then the least recently used target will be removed and will have
- * it's cached AST structure flushed.
- */
- List<AnalysisTarget> _recentlyUsed = <AnalysisTarget>[];
-
- /**
* Initialize a newly created cache partition, belonging to the given
- * [context]. The partition will maintain at most [_maxCacheSize] AST
- * structures in the cache, using the [_retentionPolicy] to determine which
- * AST structures to flush.
+ * [context].
*/
- CachePartition(this.context, this._maxCacheSize, this._retentionPolicy);
-
- /**
- * Return the number of entries in this partition that have an AST associated
- * with them.
- */
- int get astSize {
- int astSize = 0;
- int count = _recentlyUsed.length;
- for (int i = 0; i < count; i++) {
- AnalysisTarget target = _recentlyUsed[i];
- CacheEntry entry = _targetMap[target];
- if (entry.hasAstStructure) {
- astSize++;
- }
- }
- return astSize;
- }
+ CachePartition(this.context);
/**
* Return a table mapping the targets known to the context to the information
@@ -610,52 +717,16 @@
Map<AnalysisTarget, CacheEntry> get map => _targetMap;
/**
- * Return the maximum size of the cache.
- */
- int get maxCacheSize => _maxCacheSize;
-
- /**
- * Set the maximum size of the cache to the given [size].
- */
- void set maxCacheSize(int size) {
- _maxCacheSize = size;
- while (_recentlyUsed.length > _maxCacheSize) {
- if (!_flushAstFromCache()) {
- break;
- }
- }
- }
-
- /**
- * Record that the AST associated with the given [target] was just read from
- * the cache.
- */
- void accessedAst(AnalysisTarget target) {
- if (_recentlyUsed.remove(target)) {
- _recentlyUsed.add(target);
- return;
- }
- while (_recentlyUsed.length >= _maxCacheSize) {
- if (!_flushAstFromCache()) {
- break;
- }
- }
- _recentlyUsed.add(target);
- }
-
- /**
- * Return `true` if the given [target] is contained in this partition.
- */
- // TODO(brianwilkerson) Rename this to something more meaningful, such as
- // isResponsibleFor.
- bool contains(AnalysisTarget target);
-
- /**
* Return the entry associated with the given [target].
*/
CacheEntry get(AnalysisTarget target) => _targetMap[target];
/**
+ * Return `true` if this partition is responsible for the given [target].
+ */
+ bool isResponsibleFor(AnalysisTarget target);
+
+ /**
* Return an iterator returning all of the map entries mapping targets to
* cache entries.
*/
@@ -663,9 +734,15 @@
new SingleMapIterator<AnalysisTarget, CacheEntry>(_targetMap);
/**
- * Associate the given [entry] with the given [target].
+ * Puts the given [entry] into the partition.
*/
- void put(AnalysisTarget target, CacheEntry entry) {
+ void put(CacheEntry entry) {
+ AnalysisTarget target = entry.target;
+ if (entry._partition != null) {
+ throw new StateError(
+ 'The entry for $target is already in ${entry._partition}');
+ }
+ entry._partition = this;
entry.fixExceptionState();
_targetMap[target] = entry;
}
@@ -674,16 +751,41 @@
* Remove all information related to the given [target] from this cache.
*/
void remove(AnalysisTarget target) {
- _recentlyUsed.remove(target);
- _targetMap.remove(target);
+ for (CacheFlushManager flushManager in _flushManagerMap.values) {
+ flushManager.targetRemoved(target);
+ }
+ CacheEntry entry = _targetMap.remove(target);
+ if (entry != null) {
+ entry._invalidateAll();
+ }
}
/**
- * Record that the AST associated with the given [target] was just removed
- * from the cache.
+ * Records that a value of the result described by the given [descriptor]
+ * for the given [target] was just read from the cache.
*/
- void removedAst(AnalysisTarget target) {
- _recentlyUsed.remove(target);
+ void resultAccessed(AnalysisTarget target, ResultDescriptor descriptor) {
+ CacheFlushManager flushManager = _getFlushManager(descriptor);
+ TargetedResult result = new TargetedResult(target, descriptor);
+ flushManager.resultAccessed(result);
+ }
+
+ /**
+ * Records that the given [result] was just stored into the cache.
+ */
+ void resultStored(TargetedResult result, Object value) {
+ CacheFlushManager flushManager = _getFlushManager(result.result);
+ List<TargetedResult> resultsToFlush =
+ flushManager.resultStored(result, value);
+ for (TargetedResult result in resultsToFlush) {
+ CacheEntry entry = get(result.target);
+ if (entry != null) {
+ ResultData data = entry._resultMap[result.result];
+ if (data != null) {
+ data.flush();
+ }
+ }
+ }
}
/**
@@ -691,123 +793,26 @@
*/
int size() => _targetMap.length;
- /**
- * Record that the AST associated with the given [target] was just stored to
- * the cache.
- */
- void storedAst(AnalysisTarget target) {
- if (_recentlyUsed.contains(target)) {
- return;
+ ResultData _getDataFor(TargetedResult result, {bool orNull: false}) {
+ CacheEntry entry = context.analysisCache.get(result.target);
+ if (orNull) {
+ return entry != null ? entry._resultMap[result.result] : null;
+ } else {
+ return entry._getResultData(result.result);
}
- while (_recentlyUsed.length >= _maxCacheSize) {
- if (!_flushAstFromCache()) {
- break;
- }
- }
- _recentlyUsed.add(target);
}
/**
- * Attempt to flush one AST structure from the cache. Return `true` if a
- * structure was flushed.
+ * Return the [CacheFlushManager] for the given [descriptor], not `null`.
*/
- bool _flushAstFromCache() {
- AnalysisTarget removedTarget = _removeAstToFlush();
- if (removedTarget == null) {
- return false;
- }
- CacheEntry entry = _targetMap[removedTarget];
- entry.flushAstStructures();
- return true;
+ CacheFlushManager _getFlushManager(ResultDescriptor descriptor) {
+ ResultCachingPolicy policy = descriptor.cachingPolicy;
+ return _flushManagerMap.putIfAbsent(
+ policy, () => new CacheFlushManager(policy, _isPriorityAnalysisTarget));
}
- /**
- * Remove and return one target from the list of recently used targets whose
- * AST structure can be flushed from the cache, or `null` if none of the
- * targets can be removed. The target that will be returned will be the target
- * that has been unreferenced for the longest period of time but that is not a
- * priority for analysis.
- */
- AnalysisTarget _removeAstToFlush() {
- int targetToRemove = -1;
- for (int i = 0; i < _recentlyUsed.length; i++) {
- AnalysisTarget target = _recentlyUsed[i];
- RetentionPriority priority =
- _retentionPolicy.getAstPriority(target, _targetMap[target]);
- if (priority == RetentionPriority.LOW) {
- return _recentlyUsed.removeAt(i);
- } else if (priority == RetentionPriority.MEDIUM && targetToRemove < 0) {
- targetToRemove = i;
- }
- }
- if (targetToRemove < 0) {
- // This happens if the retention policy returns a priority of HIGH for all
- // of the targets that have been recently used. This is the case, for
- // example, when the list of priority sources is bigger than the current
- // cache size.
- return null;
- }
- return _recentlyUsed.removeAt(targetToRemove);
- }
-}
-
-/**
- * A policy objecy that determines how important it is for data to be retained
- * in the analysis cache.
- */
-abstract class CacheRetentionPolicy {
- /**
- * Return the priority of retaining the AST structure for the given [target]
- * in the given [entry].
- */
- // TODO(brianwilkerson) Find a more general mechanism, probably based on task
- // descriptors, to determine which data is still needed for analysis and which
- // can be removed from the cache. Ideally we could (a) remove the need for
- // this class and (b) be able to flush all result data (not just AST's).
- RetentionPriority getAstPriority(AnalysisTarget target, CacheEntry entry);
-}
-
-/**
- * A retention policy that will keep AST's in the cache if there is analysis
- * information that needs to be computed for a source, where the computation is
- * dependent on having the AST.
- */
-class DefaultRetentionPolicy implements CacheRetentionPolicy {
- /**
- * An instance of this class that can be shared.
- */
- static const DefaultRetentionPolicy POLICY = const DefaultRetentionPolicy();
-
- /**
- * Initialize a newly created instance of this class.
- */
- const DefaultRetentionPolicy();
-
- // TODO(brianwilkerson) Implement or delete this.
-// /**
-// * Return `true` if there is analysis information in the given entry that needs to be
-// * computed, where the computation is dependent on having the AST.
-// *
-// * @param dartEntry the entry being tested
-// * @return `true` if there is analysis information that needs to be computed from the AST
-// */
-// bool astIsNeeded(DartEntry dartEntry) =>
-// dartEntry.hasInvalidData(DartEntry.HINTS) ||
-// dartEntry.hasInvalidData(DartEntry.LINTS) ||
-// dartEntry.hasInvalidData(DartEntry.VERIFICATION_ERRORS) ||
-// dartEntry.hasInvalidData(DartEntry.RESOLUTION_ERRORS);
-
- @override
- RetentionPriority getAstPriority(AnalysisTarget target, CacheEntry entry) {
- // TODO(brianwilkerson) Implement or replace this.
-// if (sourceEntry is DartEntry) {
-// DartEntry dartEntry = sourceEntry;
-// if (astIsNeeded(dartEntry)) {
-// return RetentionPriority.MEDIUM;
-// }
-// }
-// return RetentionPriority.LOW;
- return RetentionPriority.MEDIUM;
+ bool _isPriorityAnalysisTarget(AnalysisTarget target) {
+ return context.priorityTargets.contains(target);
}
}
@@ -834,12 +839,6 @@
Object value;
/**
- * The optional data that is remembered with [value] and, when [value] is
- * invalidated, may help to recompute it more efficiently.
- */
- Object memento;
-
- /**
* A list of the results on which this result depends.
*/
List<TargetedResult> dependedOnResults = <TargetedResult>[];
@@ -859,58 +858,11 @@
}
/**
- * Add the given [result] to the list of dependent results.
+ * Flush this value.
*/
- void addDependentResult(TargetedResult result) {
- dependentResults.add(result);
- }
-
- /**
- * Invalidate this [ResultData] that corresponds to [thisResult] and
- * propagate invalidation to the results that depend on this one.
- */
- void invalidate(
- AnalysisCache cache, TargetedResult thisResult, CacheState newState) {
- // Invalidate this result.
- state = newState;
+ void flush() {
+ state = CacheState.FLUSHED;
value = descriptor.defaultValue;
- // Stop depending on other results.
- List<TargetedResult> dependedOnResults = this.dependedOnResults;
- this.dependedOnResults = <TargetedResult>[];
- dependedOnResults.forEach((TargetedResult dependedOnResult) {
- ResultData data = cache._getDataFor(dependedOnResult);
- data.removeDependentResult(thisResult);
- });
- // Invalidate results that depend on this result.
- List<TargetedResult> dependentResults = this.dependentResults;
- this.dependentResults = <TargetedResult>[];
- dependentResults.forEach((TargetedResult dependentResult) {
- ResultData data = cache._getDataFor(dependentResult);
- data.invalidate(cache, dependentResult, newState);
- });
- }
-
- /**
- * Remove the given [result] from the list of dependent results.
- */
- void removeDependentResult(TargetedResult result) {
- dependentResults.remove(result);
- }
-
- /**
- * Set the [dependedOn] on which this result depends.
- */
- void setDependedOnResults(AnalysisCache cache, TargetedResult thisResult,
- List<TargetedResult> dependedOn) {
- dependedOnResults.forEach((TargetedResult dependedOnResult) {
- ResultData data = cache._getDataFor(dependedOnResult);
- data.removeDependentResult(thisResult);
- });
- dependedOnResults = dependedOn;
- dependedOnResults.forEach((TargetedResult dependentResult) {
- ResultData data = cache._getDataFor(dependentResult);
- data.addDependentResult(thisResult);
- });
}
}
@@ -920,14 +872,15 @@
class SdkCachePartition extends CachePartition {
/**
* Initialize a newly created cache partition, belonging to the given
- * [context]. The partition will maintain at most [maxCacheSize] AST
- * structures in the cache.
+ * [context].
*/
- SdkCachePartition(InternalAnalysisContext context, int maxCacheSize)
- : super(context, maxCacheSize, DefaultRetentionPolicy.POLICY);
+ SdkCachePartition(InternalAnalysisContext context) : super(context);
@override
- bool contains(AnalysisTarget target) {
+ bool isResponsibleFor(AnalysisTarget target) {
+ if (target is AnalysisContextTarget) {
+ return true;
+ }
Source source = target.source;
return source != null && source.isInSystemLibrary;
}
@@ -979,14 +932,10 @@
class UniversalCachePartition extends CachePartition {
/**
* Initialize a newly created cache partition, belonging to the given
- * [context]. The partition will maintain at most [maxCacheSize] AST
- * structures in the cache, using the [retentionPolicy] to determine which
- * AST structures to flush.
+ * [context].
*/
- UniversalCachePartition(InternalAnalysisContext context, int maxCacheSize,
- CacheRetentionPolicy retentionPolicy)
- : super(context, maxCacheSize, retentionPolicy);
+ UniversalCachePartition(InternalAnalysisContext context) : super(context);
@override
- bool contains(AnalysisTarget target) => true;
+ bool isResponsibleFor(AnalysisTarget target) => true;
}
diff --git a/pkg/analyzer/lib/src/context/context.dart b/pkg/analyzer/lib/src/context/context.dart
index debb32e..bbf7128 100644
--- a/pkg/analyzer/lib/src/context/context.dart
+++ b/pkg/analyzer/lib/src/context/context.dart
@@ -8,11 +8,17 @@
import 'dart:collection';
import 'package:analyzer/src/cancelable_future.dart';
-import 'package:analyzer/src/context/cache.dart' as cache;
+import 'package:analyzer/src/context/cache.dart';
import 'package:analyzer/src/generated/ast.dart';
import 'package:analyzer/src/generated/constant.dart';
import 'package:analyzer/src/generated/element.dart';
-import 'package:analyzer/src/generated/engine.dart';
+import 'package:analyzer/src/generated/engine.dart'
+ hide
+ AnalysisCache,
+ CachePartition,
+ SdkCachePartition,
+ UniversalCachePartition,
+ WorkManager;
import 'package:analyzer/src/generated/error.dart';
import 'package:analyzer/src/generated/html.dart' as ht;
import 'package:analyzer/src/generated/java_core.dart';
@@ -23,6 +29,7 @@
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_collection.dart';
import 'package:analyzer/src/task/dart.dart';
+import 'package:analyzer/src/task/dart_work_manager.dart';
import 'package:analyzer/src/task/driver.dart';
import 'package:analyzer/src/task/manager.dart';
import 'package:analyzer/task/dart.dart';
@@ -42,7 +49,7 @@
* it should be free of side effects so that it doesn't cause reentrant changes
* to the analysis state.
*/
-typedef T PendingFutureComputer<T>(cache.CacheEntry entry);
+typedef T PendingFutureComputer<T>(CacheEntry entry);
/**
* An [AnalysisContext] in which analysis can be performed.
@@ -84,13 +91,13 @@
* The partition that contains analysis results that are not shared with other
* contexts.
*/
- cache.CachePartition _privatePartition;
+ CachePartition _privatePartition;
/**
* The cache in which information about the results associated with targets
* are stored.
*/
- cache.AnalysisCache _cache;
+ AnalysisCache _cache;
/**
* The task manager used to manage the tasks used to analyze code.
@@ -98,9 +105,14 @@
TaskManager _taskManager;
/**
+ * The [DartWorkManager] instance that performs Dart specific scheduling.
+ */
+ DartWorkManager dartWorkManager;
+
+ /**
* The analysis driver used to perform analysis.
*/
- AnalysisDriver _driver;
+ AnalysisDriver driver;
/**
* A list containing sources for which data should not be flushed.
@@ -181,17 +193,21 @@
* Initialize a newly created analysis context.
*/
AnalysisContextImpl() {
- _privatePartition = new cache.UniversalCachePartition(this,
- AnalysisOptionsImpl.DEFAULT_CACHE_SIZE,
- new ContextRetentionPolicy(this));
+ _privatePartition = new UniversalCachePartition(this);
_cache = createCacheFromSourceFactory(null);
_taskManager = AnalysisEngine.instance.taskManager;
- _driver = new AnalysisDriver(_taskManager, this);
+ // TODO(scheglov) Get WorkManager(Factory)(s) from plugins.
+ dartWorkManager = new DartWorkManager(this);
+ driver =
+ new AnalysisDriver(_taskManager, <WorkManager>[dartWorkManager], this);
_onSourcesChangedController =
new StreamController<SourcesChangedEvent>.broadcast();
}
@override
+ AnalysisCache get analysisCache => _cache;
+
+ @override
AnalysisOptions get analysisOptions => _options;
@override
@@ -203,6 +219,7 @@
this._options.generateSdkErrors != options.generateSdkErrors ||
this._options.dart2jsHint != options.dart2jsHint ||
(this._options.hint && !options.hint) ||
+ (this._options.lint && !options.lint) ||
this._options.preserveComments != options.preserveComments ||
this._options.enableNullAwareOperators !=
options.enableNullAwareOperators ||
@@ -210,7 +227,6 @@
int cacheSize = options.cacheSize;
if (this._options.cacheSize != cacheSize) {
this._options.cacheSize = cacheSize;
- _privatePartition.maxCacheSize = cacheSize;
}
this._options.analyzeFunctionBodiesPredicate =
options.analyzeFunctionBodiesPredicate;
@@ -233,17 +249,18 @@
@override
void set analysisPriorityOrder(List<Source> sources) {
if (sources == null || sources.isEmpty) {
- _priorityOrder = Source.EMPTY_ARRAY;
+ _priorityOrder = Source.EMPTY_LIST;
} else {
while (sources.remove(null)) {
// Nothing else to do.
}
if (sources.isEmpty) {
- _priorityOrder = Source.EMPTY_ARRAY;
+ _priorityOrder = Source.EMPTY_LIST;
} else {
_priorityOrder = sources;
}
}
+ dartWorkManager.applyPriorityTargets(_priorityOrder);
}
@override
@@ -257,7 +274,7 @@
@override
List<AnalysisTarget> get explicitTargets {
List<AnalysisTarget> targets = <AnalysisTarget>[];
- MapIterator<AnalysisTarget, cache.CacheEntry> iterator = _cache.iterator();
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
while (iterator.moveNext()) {
if (iterator.value.explicitlyAdded) {
targets.add(iterator.key);
@@ -275,10 +292,10 @@
@override
List<Source> get launchableClientLibrarySources {
List<Source> sources = new List<Source>();
- MapIterator<AnalysisTarget, cache.CacheEntry> iterator = _cache.iterator();
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
while (iterator.moveNext()) {
AnalysisTarget target = iterator.key;
- cache.CacheEntry entry = iterator.value;
+ CacheEntry entry = iterator.value;
if (target is Source &&
entry.getValue(SOURCE_KIND) == SourceKind.LIBRARY &&
!target.isInSystemLibrary &&
@@ -292,10 +309,10 @@
@override
List<Source> get launchableServerLibrarySources {
List<Source> sources = new List<Source>();
- MapIterator<AnalysisTarget, cache.CacheEntry> iterator = _cache.iterator();
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
while (iterator.moveNext()) {
AnalysisTarget target = iterator.key;
- cache.CacheEntry entry = iterator.value;
+ CacheEntry entry = iterator.value;
if (target is Source &&
entry.getValue(SOURCE_KIND) == SourceKind.LIBRARY &&
!target.isInSystemLibrary &&
@@ -348,7 +365,7 @@
@override
List<Source> get sources {
List<Source> sources = new List<Source>();
- MapIterator<AnalysisTarget, cache.CacheEntry> iterator = _cache.iterator();
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
while (iterator.moveNext()) {
AnalysisTarget target = iterator.key;
if (target is Source) {
@@ -369,7 +386,8 @@
bool hintsEnabled = _options.hint;
bool lintsEnabled = _options.lint;
- MapIterator<AnalysisTarget, cache.CacheEntry> iterator = _cache.iterator();
+ MapIterator<AnalysisTarget, CacheEntry> iterator =
+ _privatePartition.iterator();
while (iterator.moveNext()) {
AnalysisTarget target = iterator.key;
if (target is Source) {
@@ -440,13 +458,6 @@
}
@override
- void addSourceInfo(Source source, SourceEntry info) {
- // TODO(brianwilkerson) This method needs to be replaced by something that
- // will copy CacheEntry's.
-// _cache.put(source, info);
- }
-
- @override
void applyAnalysisDelta(AnalysisDelta delta) {
ChangeSet changeSet = new ChangeSet();
delta.analysisLevels.forEach((Source source, AnalysisLevel level) {
@@ -501,6 +512,8 @@
for (Source source in removedSources) {
_sourceRemoved(source);
}
+ dartWorkManager.applyChange(
+ changeSet.addedSources, changeSet.changedSources, removedSources);
_onSourcesChangedController.add(new SourcesChangedEvent(changeSet));
}
@@ -517,7 +530,7 @@
if (unit == null) {
return null;
}
- NodeLocator locator = new NodeLocator.con1(element.nameOffset);
+ NodeLocator locator = new NodeLocator(element.nameOffset);
AstNode nameNode = locator.searchWithin(unit);
while (nameNode != null) {
if (nameNode is AnnotatedNode) {
@@ -554,15 +567,24 @@
@override
List<Source> computeImportedLibraries(Source source) =>
- _computeResult(source, IMPORTED_LIBRARIES);
+ _computeResult(source, EXPLICITLY_IMPORTED_LIBRARIES);
@override
- SourceKind computeKindOf(Source source) =>
- _computeResult(source, SOURCE_KIND);
+ SourceKind computeKindOf(Source source) {
+ String name = source.shortName;
+ if (AnalysisEngine.isDartFileName(name)) {
+ return _computeResult(source, SOURCE_KIND);
+ } else if (AnalysisEngine.isHtmlFileName(name)) {
+ return SourceKind.HTML;
+ }
+ return SourceKind.UNKNOWN;
+ }
@override
- LibraryElement computeLibraryElement(Source source) => _computeResult(
- source, LIBRARY_ELEMENT); //_computeResult(source, HtmlEntry.ELEMENT);
+ LibraryElement computeLibraryElement(Source source) {
+ //_computeResult(source, HtmlEntry.ELEMENT);
+ return _computeResult(source, LIBRARY_ELEMENT);
+ }
@override
LineInfo computeLineInfo(Source source) => _computeResult(source, LINE_INFO);
@@ -581,8 +603,7 @@
return new CancelableFuture.error(new AnalysisNotScheduledError());
}
return new _AnalysisFutureHelper<CompilationUnit>(this).computeAsync(
- new LibrarySpecificUnit(librarySource, unitSource),
- (cache.CacheEntry entry) {
+ new LibrarySpecificUnit(librarySource, unitSource), (CacheEntry entry) {
CacheState state = entry.getState(RESOLVED_UNIT);
if (state == CacheState.ERROR) {
throw entry.exception;
@@ -596,15 +617,15 @@
/**
* Create an analysis cache based on the given source [factory].
*/
- cache.AnalysisCache createCacheFromSourceFactory(SourceFactory factory) {
+ AnalysisCache createCacheFromSourceFactory(SourceFactory factory) {
if (factory == null) {
- return new cache.AnalysisCache(<cache.CachePartition>[_privatePartition]);
+ return new AnalysisCache(<CachePartition>[_privatePartition]);
}
DartSdk sdk = factory.dartSdk;
if (sdk == null) {
- return new cache.AnalysisCache(<cache.CachePartition>[_privatePartition]);
+ return new AnalysisCache(<CachePartition>[_privatePartition]);
}
- return new cache.AnalysisCache(<cache.CachePartition>[
+ return new AnalysisCache(<CachePartition>[
AnalysisEngine.instance.partitionManager_new.forSdk(sdk),
_privatePartition
]);
@@ -623,41 +644,32 @@
@override
List<CompilationUnit> ensureResolvedDartUnits(Source unitSource) {
- // TODO(brianwilkerson) Implement this.
+ // Check every library.
+ List<CompilationUnit> units = <CompilationUnit>[];
+ List<Source> containingLibraries = getLibrariesContaining(unitSource);
+ for (Source librarySource in containingLibraries) {
+ LibrarySpecificUnit target =
+ new LibrarySpecificUnit(librarySource, unitSource);
+ CompilationUnit unit = _cache.getValue(target, RESOLVED_UNIT);
+ if (unit == null) {
+ units = null;
+ break;
+ }
+ units.add(unit);
+ }
+ // If we have results, then we're done.
+ if (units != null) {
+ return units;
+ }
+ // Schedule recomputing RESOLVED_UNIT results.
+ for (Source librarySource in containingLibraries) {
+ LibrarySpecificUnit target =
+ new LibrarySpecificUnit(librarySource, unitSource);
+ if (_cache.getState(target, RESOLVED_UNIT) == CacheState.FLUSHED) {
+ dartWorkManager.addPriorityResult(target, RESOLVED_UNIT);
+ }
+ }
return null;
-// cache.CacheEntry entry = _cache.get(unitSource);
-// // Check every library.
-// List<CompilationUnit> units = <CompilationUnit>[];
-// List<Source> containingLibraries = entry.containingLibraries;
-// for (Source librarySource in containingLibraries) {
-// CompilationUnit unit =
-// entry.getValueInLibrary(DartEntry.RESOLVED_UNIT, librarySource);
-// if (unit == null) {
-// units = null;
-// break;
-// }
-// units.add(unit);
-// }
-// // Invalidate the flushed RESOLVED_UNIT to force it eventually.
-// if (units == null) {
-// bool shouldBeScheduled = false;
-// for (Source librarySource in containingLibraries) {
-// if (entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, librarySource) ==
-// CacheState.FLUSHED) {
-// entry.setStateInLibrary(
-// DartEntry.RESOLVED_UNIT, librarySource, CacheState.INVALID);
-// shouldBeScheduled = true;
-// }
-// }
-// if (shouldBeScheduled) {
-// _workManager.add(unitSource, SourcePriority.UNKNOWN);
-// }
-// // We cannot provide resolved units right now,
-// // but the future analysis will.
-// return null;
-// }
-// // done
-// return units;
}
@override
@@ -671,35 +683,12 @@
return source.exists();
}
- Element findElementById(int id) {
- // TODO(brianwilkerson) Implement this.
- return null;
-// _ElementByIdFinder finder = new _ElementByIdFinder(id);
-// try {
-// MapIterator<AnalysisTarget, cache.CacheEntry> iterator =
-// _cache.iterator();
-// while (iterator.moveNext()) {
-// cache.CacheEntry entry = iterator.value;
-// if (entry.getValue(SOURCE_KIND) == SourceKind.LIBRARY) {
-// DartEntry dartEntry = entry;
-// LibraryElement library = dartEntry.getValue(DartEntry.ELEMENT);
-// if (library != null) {
-// library.accept(finder);
-// }
-// }
-// }
-// } on _ElementByIdFinderException {
-// return finder.result;
-// }
-// return null;
- }
-
@override
- cache.CacheEntry getCacheEntry(AnalysisTarget target) {
- cache.CacheEntry entry = _cache.get(target);
+ CacheEntry getCacheEntry(AnalysisTarget target) {
+ CacheEntry entry = _cache.get(target);
if (entry == null) {
- entry = new cache.CacheEntry();
- _cache.put(target, entry);
+ entry = new CacheEntry(target);
+ _cache.put(entry);
}
return entry;
}
@@ -708,7 +697,7 @@
CompilationUnitElement getCompilationUnitElement(
Source unitSource, Source librarySource) {
AnalysisTarget target = new LibrarySpecificUnit(librarySource, unitSource);
- return _getResult(target, COMPILATION_UNIT_ELEMENT);
+ return _cache.getValue(target, COMPILATION_UNIT_ELEMENT);
}
@override
@@ -757,9 +746,27 @@
@override
AnalysisErrorInfo getErrors(Source source) {
- List<AnalysisError> errors = _getResult(source, DART_ERRORS);
- LineInfo lineInfo = _getResult(source, LINE_INFO);
- return new AnalysisErrorInfoImpl(errors, lineInfo);
+ // TODO(brianwilkerson) Figure out how to implement this cleanly. The
+ // problem is that _getResult doesn't know to go into the individual inputs
+ // for the task to get their values for tasks that are just merging other
+ // result values. Therefore, if some, but not all, of the error lists have
+ // been computed, no errors will be returned by it.
+ List<List<AnalysisError>> errorLists = <List<AnalysisError>>[];
+ errorLists.add(_cache.getValue(source, BUILD_DIRECTIVES_ERRORS));
+ errorLists.add(_cache.getValue(source, BUILD_LIBRARY_ERRORS));
+ errorLists.add(_cache.getValue(source, PARSE_ERRORS));
+ errorLists.add(_cache.getValue(source, SCAN_ERRORS));
+ for (Source library in getLibrariesContaining(source)) {
+ LibrarySpecificUnit unit = new LibrarySpecificUnit(library, source);
+ errorLists.add(_cache.getValue(unit, BUILD_FUNCTION_TYPE_ALIASES_ERRORS));
+ errorLists.add(_cache.getValue(unit, HINTS));
+ errorLists.add(_cache.getValue(unit, RESOLVE_REFERENCES_ERRORS));
+ errorLists.add(_cache.getValue(unit, RESOLVE_TYPE_NAMES_ERRORS));
+ errorLists.add(_cache.getValue(unit, VERIFY_ERRORS));
+ }
+ LineInfo lineInfo = _cache.getValue(source, LINE_INFO);
+ return new AnalysisErrorInfoImpl(
+ AnalysisError.mergeLists(errorLists), lineInfo);
}
@override
@@ -776,16 +783,15 @@
List<Source> getHtmlFilesReferencing(Source source) {
SourceKind sourceKind = getKindOf(source);
if (sourceKind == null) {
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
List<Source> htmlSources = new List<Source>();
while (true) {
if (sourceKind == SourceKind.PART) {
List<Source> librarySources = getLibrariesContaining(source);
- MapIterator<AnalysisTarget, cache.CacheEntry> iterator =
- _cache.iterator();
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
while (iterator.moveNext()) {
- cache.CacheEntry entry = iterator.value;
+ CacheEntry entry = iterator.value;
if (entry.getValue(SOURCE_KIND) == SourceKind.HTML) {
List<Source> referencedLibraries =
(entry as HtmlEntry).getValue(HtmlEntry.REFERENCED_LIBRARIES);
@@ -795,10 +801,9 @@
}
}
} else {
- MapIterator<AnalysisTarget, cache.CacheEntry> iterator =
- _cache.iterator();
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
while (iterator.moveNext()) {
- cache.CacheEntry entry = iterator.value;
+ CacheEntry entry = iterator.value;
if (entry.getValue(SOURCE_KIND) == SourceKind.HTML) {
List<Source> referencedLibraries =
(entry as HtmlEntry).getValue(HtmlEntry.REFERENCED_LIBRARIES);
@@ -811,30 +816,52 @@
break;
}
if (htmlSources.isEmpty) {
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
return htmlSources;
}
@override
- SourceKind getKindOf(Source source) => _getResult(source, SOURCE_KIND);
+ SourceKind getKindOf(Source source) {
+ String name = source.shortName;
+ if (AnalysisEngine.isDartFileName(name)) {
+ return _cache.getValue(source, SOURCE_KIND);
+ } else if (AnalysisEngine.isHtmlFileName(name)) {
+ return SourceKind.HTML;
+ }
+ return SourceKind.UNKNOWN;
+ }
@override
List<Source> getLibrariesContaining(Source source) {
- // TODO(brianwilkerson) Implement this.
-// cache.CacheEntry sourceEntry = _cache.get(source);
-// if (sourceEntry is DartEntry) {
-// return sourceEntry.containingLibraries;
-// }
+ SourceKind kind = getKindOf(source);
+ if (kind == SourceKind.LIBRARY) {
+ return <Source>[source];
+ } else if (kind == SourceKind.PART) {
+ List<Source> libraries = <Source>[];
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
+ while (iterator.moveNext()) {
+ AnalysisTarget target = iterator.key;
+ if (target is Source && getKindOf(target) == SourceKind.LIBRARY) {
+ List<Source> parts = _cache.getValue(target, INCLUDED_PARTS);
+ if (parts.contains(source)) {
+ libraries.add(target);
+ }
+ }
+ }
+ if (libraries.isNotEmpty) {
+ return libraries;
+ }
+ }
return Source.EMPTY_ARRAY;
}
@override
List<Source> getLibrariesDependingOn(Source librarySource) {
List<Source> dependentLibraries = new List<Source>();
- MapIterator<AnalysisTarget, cache.CacheEntry> iterator = _cache.iterator();
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
while (iterator.moveNext()) {
- cache.CacheEntry entry = iterator.value;
+ CacheEntry entry = iterator.value;
if (entry.getValue(SOURCE_KIND) == SourceKind.LIBRARY) {
if (_contains(entry.getValue(EXPORTED_LIBRARIES), librarySource)) {
dependentLibraries.add(iterator.key);
@@ -845,7 +872,7 @@
}
}
if (dependentLibraries.isEmpty) {
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
return dependentLibraries;
}
@@ -858,15 +885,15 @@
// HtmlEntry htmlEntry = entry;
// return htmlEntry.getValue(HtmlEntry.REFERENCED_LIBRARIES);
// }
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
@override
LibraryElement getLibraryElement(Source source) =>
- _getResult(source, LIBRARY_ELEMENT);
+ _cache.getValue(source, LIBRARY_ELEMENT);
@override
- LineInfo getLineInfo(Source source) => _getResult(source, LINE_INFO);
+ LineInfo getLineInfo(Source source) => _cache.getValue(source, LINE_INFO);
@override
int getModificationStamp(Source source) {
@@ -891,11 +918,11 @@
}
/**
- * Return the cache entry associated with the given [source], or `null` if
- * there is no entry associated with the source.
+ * Return the cache entry associated with the given [target], or `null` if
+ * there is no entry associated with the target.
*/
- cache.CacheEntry getReadableSourceEntryOrNull(Source source) =>
- _cache.get(source);
+ CacheEntry getReadableSourceEntryOrNull(AnalysisTarget target) =>
+ _cache.get(target);
@override
CompilationUnit getResolvedCompilationUnit(
@@ -914,7 +941,7 @@
!AnalysisEngine.isDartFileName(librarySource.shortName)) {
return null;
}
- return _getResult(
+ return _cache.getValue(
new LibrarySpecificUnit(librarySource, unitSource), RESOLVED_UNIT);
}
@@ -932,7 +959,7 @@
@override
List<Source> getSourcesWithFullName(String path) {
List<Source> sources = <Source>[];
- MapIterator<AnalysisTarget, cache.CacheEntry> iterator = _cache.iterator();
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
while (iterator.moveNext()) {
AnalysisTarget target = iterator.key;
if (target is Source && target.fullName == path) {
@@ -945,7 +972,7 @@
@override
bool handleContentsChanged(
Source source, String originalContents, String newContents, bool notify) {
- cache.CacheEntry entry = _cache.get(source);
+ CacheEntry entry = _cache.get(source);
if (entry == null) {
return false;
}
@@ -959,8 +986,7 @@
_sourceChanged(source);
}
entry.modificationTime = _contentCache.getModificationStamp(source);
- entry.setValue(
- CONTENT, newContents, cache.TargetedResult.EMPTY_LIST, null);
+ entry.setValue(CONTENT, newContents, TargetedResult.EMPTY_LIST);
} else {
entry.modificationTime = _contentCache.getModificationStamp(source);
}
@@ -974,8 +1000,7 @@
TimestampedData<String> fileContents = getContents(source);
String fileContentsData = fileContents.data;
if (fileContentsData == originalContents) {
- entry.setValue(
- CONTENT, fileContentsData, cache.TargetedResult.EMPTY_LIST, null);
+ entry.setValue(CONTENT, fileContentsData, TargetedResult.EMPTY_LIST);
entry.modificationTime = fileContents.modificationTime;
changed = false;
}
@@ -993,34 +1018,15 @@
return changed;
}
- /**
- * Invalidates hints in the given [librarySource] and included parts.
- */
- void invalidateLibraryHints(Source librarySource) {
- cache.CacheEntry entry = _cache.get(librarySource);
- // Prepare sources to invalidate hints in.
- List<Source> sources = <Source>[librarySource];
- sources.addAll(entry.getValue(INCLUDED_PARTS));
- // Invalidate hints.
- for (Source source in sources) {
- LibrarySpecificUnit unitTarget =
- new LibrarySpecificUnit(librarySource, source);
- cache.CacheEntry unitEntry = _cache.get(unitTarget);
- if (unitEntry.getState(HINTS) == CacheState.VALID) {
- unitEntry.setState(HINTS, CacheState.INVALID);
- }
- }
- }
-
@override
bool isClientLibrary(Source librarySource) {
- cache.CacheEntry entry = _cache.get(librarySource);
+ CacheEntry entry = _cache.get(librarySource);
return entry.getValue(IS_CLIENT) && entry.getValue(IS_LAUNCHABLE);
}
@override
bool isServerLibrary(Source librarySource) {
- cache.CacheEntry entry = _cache.get(librarySource);
+ CacheEntry entry = _cache.get(librarySource);
return !entry.getValue(IS_CLIENT) && entry.getValue(IS_LAUNCHABLE);
}
@@ -1044,7 +1050,7 @@
@override
AnalysisResult performAnalysisTask() {
return PerformanceStatistics.performAnaysis.makeCurrentWhile(() {
- bool done = !_driver.performAnalysisTask();
+ bool done = !driver.performAnalysisTask();
if (done) {
done = !_validateCacheConsistency();
}
@@ -1066,9 +1072,9 @@
//
// Cache the element in the library's info.
//
- cache.CacheEntry entry = getCacheEntry(librarySource);
+ CacheEntry entry = getCacheEntry(librarySource);
setValue(ResultDescriptor result, value) {
- entry.setValue(result, value, cache.TargetedResult.EMPTY_LIST, null);
+ entry.setValue(result, value, TargetedResult.EMPTY_LIST);
}
setValue(BUILD_DIRECTIVES_ERRORS, AnalysisError.NO_ERRORS);
setValue(BUILD_FUNCTION_TYPE_ALIASES_ERRORS, AnalysisError.NO_ERRORS);
@@ -1078,11 +1084,11 @@
// CONSTRUCTORS
// CONSTRUCTORS_ERRORS
entry.setState(CONTENT, CacheState.FLUSHED);
- setValue(EXPORTED_LIBRARIES, Source.EMPTY_ARRAY);
+ setValue(EXPORTED_LIBRARIES, Source.EMPTY_LIST);
// EXPORT_SOURCE_CLOSURE
- setValue(IMPORTED_LIBRARIES, Source.EMPTY_ARRAY);
+ setValue(IMPORTED_LIBRARIES, Source.EMPTY_LIST);
// IMPORT_SOURCE_CLOSURE
- setValue(INCLUDED_PARTS, Source.EMPTY_ARRAY);
+ setValue(INCLUDED_PARTS, Source.EMPTY_LIST);
setValue(IS_CLIENT, true);
setValue(IS_LAUNCHABLE, false);
setValue(LIBRARY_ELEMENT, library);
@@ -1117,9 +1123,8 @@
setValue(VERIFY_ERRORS, AnalysisError.NO_ERRORS);
});
- cache.CacheEntry entry = getCacheEntry(AnalysisContextTarget.request);
- entry.setValue(
- TYPE_PROVIDER, typeProvider, cache.TargetedResult.EMPTY_LIST, null);
+ CacheEntry entry = getCacheEntry(AnalysisContextTarget.request);
+ entry.setValue(TYPE_PROVIDER, typeProvider, TargetedResult.EMPTY_LIST);
}
@override
@@ -1165,6 +1170,8 @@
@override
void setContents(Source source, String contents) {
_contentsChanged(source, contents, true);
+ dartWorkManager.applyChange(
+ Source.EMPTY_LIST, <Source>[source], Source.EMPTY_LIST);
}
@override
@@ -1244,7 +1251,7 @@
* given list of [sources].
*/
void _addSourcesInContainer(List<Source> sources, SourceContainer container) {
- MapIterator<AnalysisTarget, cache.CacheEntry> iterator = _cache.iterator();
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
while (iterator.moveNext()) {
Source source = iterator.key;
if (container.contains(source)) {
@@ -1268,35 +1275,12 @@
}
}
- /**
- * Return the priority that should be used when the source associated with
- * the given [entry] is added to the work manager.
- */
- SourcePriority _computePriority(cache.CacheEntry entry) {
- // Used in commented out code.
- SourceKind kind = entry.getValue(SOURCE_KIND);
- if (kind == SourceKind.LIBRARY) {
- return SourcePriority.LIBRARY;
- } else if (kind == SourceKind.PART) {
- return SourcePriority.NORMAL_PART;
- }
- return SourcePriority.UNKNOWN;
- }
-
Object /*V*/ _computeResult(
AnalysisTarget target, ResultDescriptor /*<V>*/ descriptor) {
- cache.CacheEntry entry = getCacheEntry(target);
- if (descriptor is CompositeResultDescriptor) {
- List compositeResults = [];
- for (ResultDescriptor descriptor in descriptor.contributors) {
- List value = _computeResult(target, descriptor);
- compositeResults.addAll(value);
- }
- return compositeResults;
- }
+ CacheEntry entry = getCacheEntry(target);
CacheState state = entry.getState(descriptor);
if (state == CacheState.FLUSHED || state == CacheState.INVALID) {
- _driver.computeResult(target, descriptor);
+ driver.computeResult(target, descriptor);
}
state = entry.getState(descriptor);
if (state == CacheState.ERROR) {
@@ -1360,11 +1344,10 @@
// }
_sourceChanged(source);
changed = true;
- cache.CacheEntry entry = _cache.get(source);
+ CacheEntry entry = _cache.get(source);
if (entry != null) {
entry.modificationTime = _contentCache.getModificationStamp(source);
- entry.setValue(
- CONTENT, contents, cache.TargetedResult.EMPTY_LIST, null);
+ entry.setValue(CONTENT, contents, TargetedResult.EMPTY_LIST);
}
}
} else if (originalContents != null) {
@@ -1393,15 +1376,30 @@
* added to this context if [explicitlyAdded] is `true`. Return the cache
* entry that was created.
*/
- cache.CacheEntry _createCacheEntry(Source source, bool explicitlyAdded) {
- cache.CacheEntry entry = new cache.CacheEntry();
+ CacheEntry _createCacheEntry(Source source, bool explicitlyAdded) {
+ CacheEntry entry = new CacheEntry(source);
entry.modificationTime = getModificationStamp(source);
entry.explicitlyAdded = explicitlyAdded;
- _cache.put(source, entry);
+ _cache.put(entry);
return entry;
}
/**
+ * Return a list containing all of the cache entries for targets associated
+ * with the given [source].
+ */
+ List<CacheEntry> _entriesFor(Source source) {
+ List<CacheEntry> entries = <CacheEntry>[];
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
+ while (iterator.moveNext()) {
+ if (iterator.key.source == source) {
+ entries.add(iterator.value);
+ }
+ }
+ return entries;
+ }
+
+ /**
* Return a list containing all of the change notices that are waiting to be
* returned. If there are no notices, then return either `null` or an empty
* list, depending on the value of [nullIfEmpty].
@@ -1411,7 +1409,7 @@
if (nullIfEmpty) {
return null;
}
- return ChangeNoticeImpl.EMPTY_ARRAY;
+ return ChangeNoticeImpl.EMPTY_LIST;
}
List<ChangeNotice> notices = new List.from(_pendingNotices.values);
_pendingNotices.clear();
@@ -1432,32 +1430,13 @@
return notice;
}
- Object _getResult(AnalysisTarget target, ResultDescriptor descriptor) {
- cache.CacheEntry entry = _cache.get(target);
- if (entry == null) {
- return descriptor.defaultValue;
- }
- if (descriptor is CompositeResultDescriptor) {
- List compositeResults = [];
- for (ResultDescriptor descriptor in descriptor.contributors) {
- List value = _getResult(target, descriptor);
- compositeResults.addAll(value);
- }
- return compositeResults;
- }
- if (entry.isValid(descriptor)) {
- return entry.getValue(descriptor);
- }
- return descriptor.defaultValue;
- }
-
/**
* Return a list containing all of the sources known to this context that have
* the given [kind].
*/
List<Source> _getSources(SourceKind kind) {
List<Source> sources = new List<Source>();
- MapIterator<AnalysisTarget, cache.CacheEntry> iterator = _cache.iterator();
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
while (iterator.moveNext()) {
if (iterator.value.getValue(SOURCE_KIND) == kind &&
iterator.key is Source) {
@@ -1472,7 +1451,7 @@
* related to it. If so, add the source to the set of sources that need to be
* processed. This method is intended to be used for testing purposes only.
*/
- void _getSourcesNeedingProcessing(Source source, cache.CacheEntry entry,
+ void _getSourcesNeedingProcessing(Source source, CacheEntry entry,
bool isPriority, bool hintsEnabled, bool lintsEnabled,
HashSet<Source> sources) {
CacheState state = entry.getState(CONTENT);
@@ -1516,7 +1495,7 @@
// }
// }
for (Source librarySource in getLibrariesContaining(source)) {
- cache.CacheEntry libraryEntry = _cache.get(librarySource);
+ CacheEntry libraryEntry = _cache.get(librarySource);
state = libraryEntry.getState(LIBRARY_ELEMENT);
if (state == CacheState.INVALID ||
(isPriority && state == CacheState.FLUSHED)) {
@@ -1525,7 +1504,7 @@
} else if (state == CacheState.ERROR) {
return;
}
- cache.CacheEntry unitEntry =
+ CacheEntry unitEntry =
_cache.get(new LibrarySpecificUnit(librarySource, source));
state = unitEntry.getState(RESOLVED_UNIT);
if (state == CacheState.INVALID ||
@@ -1614,35 +1593,6 @@
}
/**
- * In response to a change to at least one of the compilation units in the
- * library defined by the given [librarySource], invalidate any results that
- * are dependent on the result of resolving that library.
- *
- * <b>Note:</b> Any cache entries that were accessed before this method was
- * invoked must be re-accessed after this method returns.
- */
- void _invalidateLibraryResolution(Source librarySource) {
- // TODO(brianwilkerson) Figure out whether we still need this.
- // TODO(brianwilkerson) This could be optimized. There's no need to flush
- // all of these entries if the public namespace hasn't changed, which will
- // be a fairly common case. The question is whether we can afford the time
- // to compute the namespace to look for differences.
-// DartEntry libraryEntry = _getReadableDartEntry(librarySource);
-// if (libraryEntry != null) {
-// List<Source> includedParts =
-// libraryEntry.getValue(DartEntry.INCLUDED_PARTS);
-// libraryEntry.invalidateAllResolutionInformation(false);
-// _workManager.add(librarySource, SourcePriority.LIBRARY);
-// for (Source partSource in includedParts) {
-// SourceEntry partEntry = _cache.get(partSource);
-// if (partEntry is DartEntry) {
-// partEntry.invalidateAllResolutionInformation(false);
-// }
-// }
-// }
- }
-
- /**
* Log the given debugging [message].
*/
void _logInformation(String message) {
@@ -1704,7 +1654,7 @@
* Return `true` if errors should be produced for the given [source]. The
* [entry] associated with the source is passed in for efficiency.
*/
- bool _shouldErrorsBeAnalyzed(Source source, cache.CacheEntry entry) {
+ bool _shouldErrorsBeAnalyzed(Source source, CacheEntry entry) {
if (source.isInSystemLibrary) {
return _options.generateSdkErrors;
} else if (!entry.explicitlyAdded) {
@@ -1719,7 +1669,7 @@
* that referenced the source before it existed.
*/
void _sourceAvailable(Source source) {
- cache.CacheEntry entry = _cache.get(source);
+ CacheEntry entry = _cache.get(source);
if (entry == null) {
_createCacheEntry(source, true);
} else {
@@ -1733,7 +1683,7 @@
* the source before it existed.
*/
void _sourceChanged(Source source) {
- cache.CacheEntry entry = _cache.get(source);
+ CacheEntry entry = _cache.get(source);
// If the source is removed, we don't care about it.
if (entry == null) {
return;
@@ -1746,6 +1696,10 @@
try {
TimestampedData<String> fileContents = getContents(source);
if (fileContents.data == sourceContent) {
+ int time = fileContents.modificationTime;
+ for (CacheEntry entry in _entriesFor(source)) {
+ entry.modificationTime = time;
+ }
return;
}
} catch (e) {}
@@ -1790,20 +1744,6 @@
* Record that the given [source] has been removed.
*/
void _sourceRemoved(Source source) {
- List<Source> containingLibraries = getLibrariesContaining(source);
- if (containingLibraries != null && containingLibraries.isNotEmpty) {
- HashSet<Source> libraries = new HashSet<Source>();
- for (Source librarySource in containingLibraries) {
- libraries.add(librarySource);
- for (Source dependentLibrary
- in getLibrariesDependingOn(librarySource)) {
- libraries.add(dependentLibrary);
- }
- }
- for (Source librarySource in libraries) {
- _invalidateLibraryResolution(librarySource);
- }
- }
_cache.remove(source);
_removeFromPriorityOrder(source);
}
@@ -1880,117 +1820,69 @@
*/
bool _validateCacheConsistency() {
int consistencyCheckStart = JavaSystem.nanoTime();
- List<AnalysisTarget> changedTargets = new List<AnalysisTarget>();
- List<AnalysisTarget> missingTargets = new List<AnalysisTarget>();
- MapIterator<AnalysisTarget, cache.CacheEntry> iterator = _cache.iterator();
+ HashSet<Source> changedSources = new HashSet<Source>();
+ HashSet<Source> missingSources = new HashSet<Source>();
+ MapIterator<AnalysisTarget, CacheEntry> iterator = _cache.iterator();
while (iterator.moveNext()) {
AnalysisTarget target = iterator.key;
- cache.CacheEntry entry = iterator.value;
if (target is Source) {
+ CacheEntry entry = iterator.value;
int sourceTime = getModificationStamp(target);
if (sourceTime != entry.modificationTime) {
- changedTargets.add(target);
+ changedSources.add(target);
}
- }
- if (entry.exception != null) {
- if (!exists(target)) {
- missingTargets.add(target);
+ if (entry.exception != null) {
+ if (!exists(target)) {
+ missingSources.add(target);
+ }
}
}
}
- int count = changedTargets.length;
- for (int i = 0; i < count; i++) {
- _sourceChanged(changedTargets[i]);
+ for (Source source in changedSources) {
+ _sourceChanged(source);
}
int removalCount = 0;
- for (AnalysisTarget target in missingTargets) {
- if (target is Source &&
- getLibrariesContaining(target).isEmpty &&
- getLibrariesDependingOn(target).isEmpty) {
- _cache.remove(target);
+ for (Source source in missingSources) {
+ if (getLibrariesContaining(source).isEmpty &&
+ getLibrariesDependingOn(source).isEmpty) {
+ _cache.remove(source);
removalCount++;
}
}
int consistencyCheckEnd = JavaSystem.nanoTime();
- if (changedTargets.length > 0 || missingTargets.length > 0) {
+ if (changedSources.length > 0 || missingSources.length > 0) {
StringBuffer buffer = new StringBuffer();
buffer.write("Consistency check took ");
buffer.write((consistencyCheckEnd - consistencyCheckStart) / 1000000.0);
buffer.writeln(" ms and found");
buffer.write(" ");
- buffer.write(changedTargets.length);
+ buffer.write(changedSources.length);
buffer.writeln(" inconsistent entries");
buffer.write(" ");
- buffer.write(missingTargets.length);
+ buffer.write(missingSources.length);
buffer.write(" missing sources (");
buffer.write(removalCount);
buffer.writeln(" removed");
- for (Source source in missingTargets) {
+ for (Source source in missingSources) {
buffer.write(" ");
buffer.writeln(source.fullName);
}
_logInformation(buffer.toString());
}
- return changedTargets.length > 0;
+ return changedSources.length > 0;
}
}
/**
- * A retention policy used by an analysis context.
- */
-class ContextRetentionPolicy implements cache.CacheRetentionPolicy {
- /**
- * The context associated with this policy.
- */
- final AnalysisContextImpl context;
-
- /**
- * Initialize a newly created policy to be associated with the given
- * [context].
- */
- ContextRetentionPolicy(this.context);
-
- @override
- RetentionPriority getAstPriority(
- AnalysisTarget target, cache.CacheEntry entry) {
- int priorityCount = context._priorityOrder.length;
- for (int i = 0; i < priorityCount; i++) {
- if (target == context._priorityOrder[i]) {
- return RetentionPriority.HIGH;
- }
- }
- if (_astIsNeeded(entry)) {
- return RetentionPriority.MEDIUM;
- }
- return RetentionPriority.LOW;
- }
-
- bool _astIsNeeded(cache.CacheEntry entry) =>
- entry.isInvalid(BUILD_FUNCTION_TYPE_ALIASES_ERRORS) ||
- entry.isInvalid(BUILD_LIBRARY_ERRORS) ||
- entry.isInvalid(CONSTRUCTORS_ERRORS) ||
- entry.isInvalid(HINTS) ||
- //entry.isInvalid(LINTS) ||
- entry.isInvalid(RESOLVE_REFERENCES_ERRORS) ||
- entry.isInvalid(RESOLVE_TYPE_NAMES_ERRORS) ||
- entry.isInvalid(VERIFY_ERRORS);
-}
-
-/**
* An object that manages the partitions that can be shared between analysis
* contexts.
*/
class PartitionManager {
/**
- * The default cache size for a Dart SDK partition.
- */
- static int _DEFAULT_SDK_CACHE_SIZE = 256;
-
- /**
* A table mapping SDK's to the partitions used for those SDK's.
*/
- HashMap<DartSdk, cache.SdkCachePartition> _sdkPartitions =
- new HashMap<DartSdk, cache.SdkCachePartition>();
+ HashMap<DartSdk, SdkCachePartition> _sdkPartitions =
+ new HashMap<DartSdk, SdkCachePartition>();
/**
* Clear any cached data being maintained by this manager.
@@ -2003,7 +1895,7 @@
* Return the partition being used for the given [sdk], creating the partition
* if necessary.
*/
- cache.SdkCachePartition forSdk(DartSdk sdk) {
+ SdkCachePartition forSdk(DartSdk sdk) {
// Call sdk.context now, because when it creates a new
// InternalAnalysisContext instance, it calls forSdk() again, so creates an
// SdkCachePartition instance.
@@ -2011,10 +1903,9 @@
// with two SdkCachePartition instances.
InternalAnalysisContext sdkContext = sdk.context;
// Check cache for an existing partition.
- cache.SdkCachePartition partition = _sdkPartitions[sdk];
+ SdkCachePartition partition = _sdkPartitions[sdk];
if (partition == null) {
- partition =
- new cache.SdkCachePartition(sdkContext, _DEFAULT_SDK_CACHE_SIZE);
+ partition = new SdkCachePartition(sdkContext);
_sdkPartitions[sdk] = partition;
}
return partition;
@@ -2068,7 +1959,7 @@
* in a microtask, so there is no danger of side effects occurring due to
* client callbacks.
*/
- bool evaluate(cache.CacheEntry entry) {
+ bool evaluate(CacheEntry entry) {
assert(!_completer.isCompleted);
try {
T result = _computeValue(entry);
@@ -2128,13 +2019,13 @@
* reentrant changes to the analysis state.
*/
CancelableFuture<T> computeAsync(
- AnalysisTarget target, T computeValue(cache.CacheEntry entry)) {
+ AnalysisTarget target, T computeValue(CacheEntry entry)) {
if (_context.isDisposed) {
// No further analysis is expected, so return a future that completes
// immediately with AnalysisNotScheduledError.
return new CancelableFuture.error(new AnalysisNotScheduledError());
}
- cache.CacheEntry entry = _context.getReadableSourceEntryOrNull(target);
+ CacheEntry entry = _context.getReadableSourceEntryOrNull(target);
if (entry == null) {
return new CancelableFuture.error(new AnalysisNotScheduledError());
}
diff --git a/pkg/analyzer/lib/src/generated/ast.dart b/pkg/analyzer/lib/src/generated/ast.dart
index 384593e..ee68939 100644
--- a/pkg/analyzer/lib/src/generated/ast.dart
+++ b/pkg/analyzer/lib/src/generated/ast.dart
@@ -9,7 +9,6 @@
import 'dart:collection';
-import 'constant.dart';
import 'element.dart';
import 'engine.dart' show AnalysisEngine;
import 'java_core.dart';
@@ -595,8 +594,10 @@
Token get beginToken => _expression.beginToken;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_expression)..add(asOperator)..add(_type);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_expression)
+ ..add(asOperator)
+ ..add(_type);
@override
Token get endToken => _type.endToken;
@@ -1252,13 +1253,13 @@
ForEachStatement visitForEachStatement(ForEachStatement node) {
DeclaredIdentifier loopVariable = node.loopVariable;
if (loopVariable == null) {
- return new ForEachStatement.con2(cloneToken(node.awaitKeyword),
+ return new ForEachStatement.withReference(cloneToken(node.awaitKeyword),
cloneToken(node.forKeyword), cloneToken(node.leftParenthesis),
cloneNode(node.identifier), cloneToken(node.inKeyword),
cloneNode(node.iterable), cloneToken(node.rightParenthesis),
cloneNode(node.body));
}
- return new ForEachStatement.con1(cloneToken(node.awaitKeyword),
+ return new ForEachStatement.withDeclaration(cloneToken(node.awaitKeyword),
cloneToken(node.forKeyword), cloneToken(node.leftParenthesis),
cloneNode(loopVariable), cloneToken(node.inKeyword),
cloneNode(node.iterable), cloneToken(node.rightParenthesis),
@@ -3191,8 +3192,9 @@
}
@override
- Iterable get childEntities =>
- new ChildEntities()..add(awaitKeyword)..add(_expression);
+ Iterable get childEntities => new ChildEntities()
+ ..add(awaitKeyword)
+ ..add(_expression);
@override
Token get endToken => _expression.endToken;
@@ -3286,8 +3288,10 @@
}
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_leftOperand)..add(operator)..add(_rightOperand);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_leftOperand)
+ ..add(operator)
+ ..add(_rightOperand);
@override
Token get endToken => _rightOperand.endToken;
@@ -3492,8 +3496,10 @@
}
@override
- Iterable get childEntities =>
- new ChildEntities()..add(keyword)..add(star)..add(_block);
+ Iterable get childEntities => new ChildEntities()
+ ..add(keyword)
+ ..add(star)
+ ..add(_block);
@override
Token get endToken => _block.endToken;
@@ -3659,8 +3665,10 @@
Token get beginToken => breakKeyword;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(breakKeyword)..add(_label)..add(semicolon);
+ Iterable get childEntities => new ChildEntities()
+ ..add(breakKeyword)
+ ..add(_label)
+ ..add(semicolon);
@override
Token get endToken => semicolon;
@@ -4567,8 +4575,9 @@
Token get beginToken => _identifier.beginToken;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(newKeyword)..add(_identifier);
+ Iterable get childEntities => new ChildEntities()
+ ..add(newKeyword)
+ ..add(_identifier);
@override
Token get endToken => _identifier.endToken;
@@ -4709,7 +4718,9 @@
Iterable get childEntities {
ChildEntities result = new ChildEntities()..add(_scriptTag);
if (_directivesAreBeforeDeclarations) {
- result..addAll(_directives)..addAll(_declarations);
+ result
+ ..addAll(_directives)
+ ..addAll(_declarations);
} else {
result.addAll(sortedDirectivesAndDeclarations);
}
@@ -5261,18 +5272,6 @@
}
/**
- * Object representing a "const" instance creation expression, and its
- * evaluation result. This is used as the AnalysisTarget for constant
- * evaluation of instance creation expressions.
- */
-class ConstantInstanceCreationHandle {
- /**
- * The result of evaluating the constant.
- */
- EvaluationResultImpl evaluationResult;
-}
-
-/**
* A constructor declaration.
*
* > constructorDeclaration ::=
@@ -5684,8 +5683,10 @@
Token get beginToken => _type.beginToken;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_type)..add(period)..add(_name);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_type)
+ ..add(period)
+ ..add(_name);
@override
Token get endToken {
@@ -5775,8 +5776,10 @@
Token get beginToken => continueKeyword;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(continueKeyword)..add(_label)..add(semicolon);
+ Iterable get childEntities => new ChildEntities()
+ ..add(continueKeyword)
+ ..add(_label)
+ ..add(semicolon);
@override
Token get endToken => semicolon;
@@ -5877,8 +5880,10 @@
}
@override
- Iterable get childEntities =>
- super._childEntities..add(keyword)..add(_type)..add(_identifier);
+ Iterable get childEntities => super._childEntities
+ ..add(keyword)
+ ..add(_type)
+ ..add(_identifier);
@override
LocalVariableElement get element {
@@ -5999,8 +6004,10 @@
Token get beginToken => _parameter.beginToken;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_parameter)..add(separator)..add(_defaultValue);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_parameter)
+ ..add(separator)
+ ..add(_defaultValue);
/**
* Return the expression computing the default value for the parameter, or
@@ -6953,8 +6960,9 @@
Token get beginToken => _expression.beginToken;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_expression)..add(semicolon);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_expression)
+ ..add(semicolon);
@override
Token get endToken {
@@ -7016,8 +7024,9 @@
Token get beginToken => extendsKeyword;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(extendsKeyword)..add(_superclass);
+ Iterable get childEntities => new ChildEntities()
+ ..add(extendsKeyword)
+ ..add(_superclass);
@override
Token get endToken => _superclass.endToken;
@@ -7093,8 +7102,10 @@
}
@override
- Iterable get childEntities =>
- super._childEntities..add(staticKeyword)..add(_fieldList)..add(semicolon);
+ Iterable get childEntities => super._childEntities
+ ..add(staticKeyword)
+ ..add(_fieldList)
+ ..add(semicolon);
@override
Element get element => null;
@@ -7339,6 +7350,7 @@
* Initialize a newly created for-each statement. The [awaitKeyword] can be
* `null` if this is not an asynchronous for loop.
*/
+ @deprecated // Use new ForEachStatement.withDeclaration(...)
ForEachStatement.con1(this.awaitKeyword, this.forKeyword,
this.leftParenthesis, DeclaredIdentifier loopVariable, this.inKeyword,
Expression iterator, this.rightParenthesis, Statement body) {
@@ -7351,6 +7363,7 @@
* Initialize a newly created for-each statement. The [awaitKeyword] can be
* `null` if this is not an asynchronous for loop.
*/
+ @deprecated // Use new ForEachStatement.withReference(...)
ForEachStatement.con2(this.awaitKeyword, this.forKeyword,
this.leftParenthesis, SimpleIdentifier identifier, this.inKeyword,
Expression iterator, this.rightParenthesis, Statement body) {
@@ -7359,6 +7372,32 @@
_body = _becomeParentOf(body);
}
+ /**
+ * Initialize a newly created for-each statement whose loop control variable
+ * is declared internally (in the for-loop part). The [awaitKeyword] can be
+ * `null` if this is not an asynchronous for loop.
+ */
+ ForEachStatement.withDeclaration(this.awaitKeyword, this.forKeyword,
+ this.leftParenthesis, DeclaredIdentifier loopVariable, this.inKeyword,
+ Expression iterator, this.rightParenthesis, Statement body) {
+ _loopVariable = _becomeParentOf(loopVariable);
+ _iterable = _becomeParentOf(iterator);
+ _body = _becomeParentOf(body);
+ }
+
+ /**
+ * Initialize a newly created for-each statement whose loop control variable
+ * is declared outside the for loop. The [awaitKeyword] can be `null` if this
+ * is not an asynchronous for loop.
+ */
+ ForEachStatement.withReference(this.awaitKeyword, this.forKeyword,
+ this.leftParenthesis, SimpleIdentifier identifier, this.inKeyword,
+ Expression iterator, this.rightParenthesis, Statement body) {
+ _identifier = _becomeParentOf(identifier);
+ _iterable = _becomeParentOf(iterator);
+ _body = _becomeParentOf(body);
+ }
+
@override
Token get beginToken => forKeyword;
@@ -7570,7 +7609,9 @@
}
result.add(parameter);
}
- return result..add(rightDelimiter)..add(rightParenthesis);
+ return result
+ ..add(rightDelimiter)
+ ..add(rightParenthesis);
}
@override
@@ -8047,8 +8088,9 @@
}
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_parameters)..add(_body);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_parameters)
+ ..add(_body);
@override
Token get endToken {
@@ -8161,8 +8203,9 @@
}
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_function)..add(_argumentList);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_function)
+ ..add(_argumentList);
@override
Token get endToken => _argumentList.endToken;
@@ -8345,8 +8388,10 @@
}
@override
- Iterable get childEntities =>
- super._childEntities..add(_returnType)..add(identifier)..add(parameters);
+ Iterable get childEntities => super._childEntities
+ ..add(_returnType)
+ ..add(identifier)
+ ..add(parameters);
@override
Token get endToken => _parameters.endToken;
@@ -9642,13 +9687,13 @@
ForEachStatement visitForEachStatement(ForEachStatement node) {
DeclaredIdentifier loopVariable = node.loopVariable;
if (loopVariable == null) {
- return new ForEachStatement.con2(_mapToken(node.awaitKeyword),
+ return new ForEachStatement.withReference(_mapToken(node.awaitKeyword),
_mapToken(node.forKeyword), _mapToken(node.leftParenthesis),
_cloneNode(node.identifier), _mapToken(node.inKeyword),
_cloneNode(node.iterable), _mapToken(node.rightParenthesis),
_cloneNode(node.body));
}
- return new ForEachStatement.con1(_mapToken(node.awaitKeyword),
+ return new ForEachStatement.withDeclaration(_mapToken(node.awaitKeyword),
_mapToken(node.forKeyword), _mapToken(node.leftParenthesis),
_cloneNode(loopVariable), _mapToken(node.inKeyword),
_cloneNode(node.iterable), _mapToken(node.rightParenthesis),
@@ -10519,12 +10564,6 @@
ConstructorElement staticElement;
/**
- * The [ConstantInstanceCreationHandle] holding the result of evaluating this
- * expression, if it is constant.
- */
- ConstantInstanceCreationHandle constantHandle;
-
- /**
* Initialize a newly created instance creation expression.
*/
InstanceCreationExpression(this.keyword, ConstructorName constructorName,
@@ -10570,16 +10609,6 @@
Token get endToken => _argumentList.endToken;
/**
- * The result of evaluating this expression, if it is constant.
- */
- EvaluationResultImpl get evaluationResult {
- if (constantHandle != null) {
- return constantHandle.evaluationResult;
- }
- return null;
- }
-
- /**
* Return `true` if this creation expression is used to invoke a constant
* constructor.
*/
@@ -10916,7 +10945,9 @@
Token get beginToken => _label.beginToken;
@override
- Iterable get childEntities => new ChildEntities()..add(_label)..add(colon);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_label)
+ ..add(colon);
@override
Token get endToken => colon;
@@ -11048,8 +11079,10 @@
}
@override
- Iterable get childEntities =>
- super._childEntities..add(libraryKeyword)..add(_name)..add(semicolon);
+ Iterable get childEntities => super._childEntities
+ ..add(libraryKeyword)
+ ..add(_name)
+ ..add(semicolon);
@override
Token get endToken => semicolon;
@@ -11365,8 +11398,10 @@
Token get beginToken => _key.beginToken;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_key)..add(separator)..add(_value);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_key)
+ ..add(separator)
+ ..add(_value);
@override
Token get endToken => _value.endToken;
@@ -11728,10 +11763,8 @@
* if there is no target. In an ordinary method invocation this will be a
* period ('.'). In a cascade section this will be the cascade operator
* ('..').
- *
- * Deprecated: use [operator] instead.
*/
- @deprecated
+ @deprecated // Use this.operator
Token get period => operator;
/**
@@ -11739,10 +11772,8 @@
* if there is no target. In an ordinary method invocation this will be a
* period ('.'). In a cascade section this will be the cascade operator
* ('..').
- *
- * Deprecated: use [operator] instead.
*/
- @deprecated
+ @deprecated // Use this.operator
void set period(Token value) {
operator = value;
}
@@ -11862,8 +11893,9 @@
Token get beginToken => _name.beginToken;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_name)..add(_expression);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_name)
+ ..add(_expression);
/**
* Return the element representing the parameter being named by this
@@ -11997,8 +12029,9 @@
Token get beginToken => nativeKeyword;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(nativeKeyword)..add(_name);
+ Iterable get childEntities => new ChildEntities()
+ ..add(nativeKeyword)
+ ..add(_name);
@override
Token get endToken => _name.endToken;
@@ -12278,16 +12311,27 @@
/**
* Initialize a newly created locator to locate an [AstNode] by locating the
+ * node within an AST structure that corresponds to the given range of
+ * characters (between the [startOffset] and [endOffset] in the source.
+ */
+ NodeLocator(int startOffset, [int endOffset])
+ : this._startOffset = startOffset,
+ this._endOffset = endOffset == null ? startOffset : endOffset;
+
+ /**
+ * Initialize a newly created locator to locate an [AstNode] by locating the
* node within an AST structure that corresponds to the given [offset] in the
* source.
*/
- NodeLocator.con1(int offset) : this.con2(offset, offset);
+ @deprecated // Use new NodeLocator(offset)
+ NodeLocator.con1(int offset) : this(offset);
/**
* Initialize a newly created locator to locate an [AstNode] by locating the
* node within an AST structure that corresponds to the given range of
* characters (between the [startOffset] and [endOffset] in the source.
*/
+ @deprecated // Use new NodeLocator(startOffset, endOffset)
NodeLocator.con2(this._startOffset, this._endOffset);
/**
@@ -13788,8 +13832,10 @@
: super(comment, metadata, partUri);
@override
- Iterable get childEntities =>
- super._childEntities..add(partKeyword)..add(_uri)..add(semicolon);
+ Iterable get childEntities => super._childEntities
+ ..add(partKeyword)
+ ..add(_uri)
+ ..add(semicolon);
@override
Token get endToken => semicolon;
@@ -13985,8 +14031,9 @@
}
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_operand)..add(operator);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_operand)
+ ..add(operator);
@override
Token get endToken => operator;
@@ -14116,8 +14163,10 @@
}
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_prefix)..add(period)..add(_identifier);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_prefix)
+ ..add(period)
+ ..add(_identifier);
@override
Token get endToken => _identifier.endToken;
@@ -14258,8 +14307,9 @@
}
@override
- Iterable get childEntities =>
- new ChildEntities()..add(operator)..add(_operand);
+ Iterable get childEntities => new ChildEntities()
+ ..add(operator)
+ ..add(_operand);
@override
Token get endToken => _operand.endToken;
@@ -14389,8 +14439,10 @@
}
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_target)..add(operator)..add(_propertyName);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_target)
+ ..add(operator)
+ ..add(_propertyName);
@override
Token get endToken => _propertyName.endToken;
@@ -15316,8 +15368,10 @@
Token get beginToken => returnKeyword;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(returnKeyword)..add(_expression)..add(semicolon);
+ Iterable get childEntities => new ChildEntities()
+ ..add(returnKeyword)
+ ..add(_expression)
+ ..add(semicolon);
@override
Token get endToken => semicolon;
@@ -16001,8 +16055,10 @@
}
@override
- Iterable get childEntities =>
- super._childEntities..add(keyword)..add(_type)..add(identifier);
+ Iterable get childEntities => super._childEntities
+ ..add(keyword)
+ ..add(_type)
+ ..add(identifier);
@override
Token get endToken => identifier.endToken;
@@ -17280,8 +17336,9 @@
Token get beginToken => throwKeyword;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(throwKeyword)..add(_expression);
+ Iterable get childEntities => new ChildEntities()
+ ..add(throwKeyword)
+ ..add(_expression);
@override
Token get endToken {
@@ -17360,8 +17417,9 @@
}
@override
- Iterable get childEntities =>
- super._childEntities..add(_variableList)..add(semicolon);
+ Iterable get childEntities => super._childEntities
+ ..add(_variableList)
+ ..add(semicolon);
@override
Element get element => null;
@@ -18773,8 +18831,9 @@
_typeArguments = _becomeParentOf(typeArguments);
}
- ChildEntities get _childEntities =>
- new ChildEntities()..add(constKeyword)..add(_typeArguments);
+ ChildEntities get _childEntities => new ChildEntities()
+ ..add(constKeyword)
+ ..add(_typeArguments);
@override
void visitChildren(AstVisitor visitor) {
@@ -18818,8 +18877,9 @@
Token get beginToken => _name.beginToken;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_name)..add(_typeArguments);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_name)
+ ..add(_typeArguments);
@override
Token get endToken {
@@ -18934,8 +18994,10 @@
}
@override
- Iterable get childEntities =>
- super._childEntities..add(_name)..add(extendsKeyword)..add(_bound);
+ Iterable get childEntities => super._childEntities
+ ..add(_name)
+ ..add(extendsKeyword)
+ ..add(_bound);
@override
TypeParameterElement get element =>
@@ -19555,8 +19617,10 @@
}
@override
- Iterable get childEntities =>
- super._childEntities..add(_name)..add(equals)..add(_initializer);
+ Iterable get childEntities => super._childEntities
+ ..add(_name)
+ ..add(equals)
+ ..add(_initializer);
/**
* This overridden implementation of getDocumentationComment() looks in the
@@ -19786,8 +19850,9 @@
Token get beginToken => _variableList.beginToken;
@override
- Iterable get childEntities =>
- new ChildEntities()..add(_variableList)..add(semicolon);
+ Iterable get childEntities => new ChildEntities()
+ ..add(_variableList)
+ ..add(semicolon);
@override
Token get endToken => semicolon;
diff --git a/pkg/analyzer/lib/src/generated/constant.dart b/pkg/analyzer/lib/src/generated/constant.dart
index 6aafe29..1fb7b7f 100644
--- a/pkg/analyzer/lib/src/generated/constant.dart
+++ b/pkg/analyzer/lib/src/generated/constant.dart
@@ -9,7 +9,9 @@
import 'dart:collection';
+import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
+import 'package:analyzer/src/task/dart.dart';
import 'ast.dart';
import 'element.dart';
@@ -23,6 +25,11 @@
import 'utilities_dart.dart' show ParameterKind;
/**
+ * Callback used by [ReferenceFinder] to report that a dependency was found.
+ */
+typedef void ReferenceFinderCallback(ConstantEvaluationTarget dependency);
+
+/**
* The state of an object representing a boolean value.
*/
class BoolState extends InstanceState {
@@ -155,7 +162,7 @@
InstanceCreationExpression node) {
InstanceCreationExpression expression =
super.visitInstanceCreationExpression(node);
- expression.constantHandle = node.constantHandle;
+ expression.staticElement = node.staticElement;
return expression;
}
@@ -186,6 +193,794 @@
}
/**
+ * Helper class encapsulating the methods for evaluating constants and
+ * constant instance creation expressions.
+ */
+class ConstantEvaluationEngine {
+ /**
+ * Parameter to "fromEnvironment" methods that denotes the default value.
+ */
+ static String _DEFAULT_VALUE_PARAM = "defaultValue";
+
+ /**
+ * Source of RegExp matching any public identifier.
+ * From sdk/lib/internal/symbol.dart.
+ */
+ static String _PUBLIC_IDENTIFIER_RE =
+ "(?!${ConstantValueComputer._RESERVED_WORD_RE}\\b(?!\\\$))[a-zA-Z\$][\\w\$]*";
+
+ /**
+ * RegExp that validates a non-empty non-private symbol.
+ * From sdk/lib/internal/symbol.dart.
+ */
+ static RegExp _PUBLIC_SYMBOL_PATTERN = new RegExp(
+ "^(?:${ConstantValueComputer._OPERATOR_RE}\$|$_PUBLIC_IDENTIFIER_RE(?:=?\$|[.](?!\$)))+?\$");
+
+ /**
+ * The type provider used to access the known types.
+ */
+ final TypeProvider typeProvider;
+
+ /**
+ * The set of variables declared on the command line using '-D'.
+ */
+ final DeclaredVariables _declaredVariables;
+
+ /**
+ * Validator used to verify correct dependency analysis when running unit
+ * tests.
+ */
+ final ConstantEvaluationValidator validator;
+
+ /**
+ * Initialize a newly created [ConstantEvaluationEngine]. The [typeProvider]
+ * is used to access known types. [_declaredVariables] is the set of
+ * variables declared on the command line using '-D'. The [validator], if
+ * given, is used to verify correct dependency analysis when running unit
+ * tests.
+ */
+ ConstantEvaluationEngine(this.typeProvider, this._declaredVariables,
+ {ConstantEvaluationValidator validator})
+ : validator = validator != null
+ ? validator
+ : new ConstantEvaluationValidator_ForProduction();
+
+ /**
+ * Check that the arguments to a call to fromEnvironment() are correct. The
+ * [arguments] are the AST nodes of the arguments. The [argumentValues] are
+ * the values of the unnamed arguments. The [namedArgumentValues] are the
+ * values of the named arguments. The [expectedDefaultValueType] is the
+ * allowed type of the "defaultValue" parameter (if present). Note:
+ * "defaultValue" is always allowed to be null. Return `true` if the arguments
+ * are correct, `false` if there is an error.
+ */
+ bool checkFromEnvironmentArguments(NodeList<Expression> arguments,
+ List<DartObjectImpl> argumentValues,
+ HashMap<String, DartObjectImpl> namedArgumentValues,
+ InterfaceType expectedDefaultValueType) {
+ int argumentCount = arguments.length;
+ if (argumentCount < 1 || argumentCount > 2) {
+ return false;
+ }
+ if (arguments[0] is NamedExpression) {
+ return false;
+ }
+ if (!identical(argumentValues[0].type, typeProvider.stringType)) {
+ return false;
+ }
+ if (argumentCount == 2) {
+ if (arguments[1] is! NamedExpression) {
+ return false;
+ }
+ if (!((arguments[1] as NamedExpression).name.label.name ==
+ _DEFAULT_VALUE_PARAM)) {
+ return false;
+ }
+ ParameterizedType defaultValueType =
+ namedArgumentValues[_DEFAULT_VALUE_PARAM].type;
+ if (!(identical(defaultValueType, expectedDefaultValueType) ||
+ identical(defaultValueType, typeProvider.nullType))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Check that the arguments to a call to Symbol() are correct. The [arguments]
+ * are the AST nodes of the arguments. The [argumentValues] are the values of
+ * the unnamed arguments. The [namedArgumentValues] are the values of the
+ * named arguments. Return `true` if the arguments are correct, `false` if
+ * there is an error.
+ */
+ bool checkSymbolArguments(NodeList<Expression> arguments,
+ List<DartObjectImpl> argumentValues,
+ HashMap<String, DartObjectImpl> namedArgumentValues) {
+ if (arguments.length != 1) {
+ return false;
+ }
+ if (arguments[0] is NamedExpression) {
+ return false;
+ }
+ if (!identical(argumentValues[0].type, typeProvider.stringType)) {
+ return false;
+ }
+ String name = argumentValues[0].stringValue;
+ return isValidPublicSymbol(name);
+ }
+
+ /**
+ * Compute the constant value associated with the given [constant].
+ */
+ void computeConstantValue(ConstantEvaluationTarget constant) {
+ validator.beforeComputeValue(constant);
+ if (constant is ParameterElement) {
+ if (constant.initializer != null) {
+ Expression defaultValue =
+ (constant as PotentiallyConstVariableElement).constantInitializer;
+ if (defaultValue != null) {
+ RecordingErrorListener errorListener = new RecordingErrorListener();
+ ErrorReporter errorReporter =
+ new ErrorReporter(errorListener, constant.source);
+ DartObjectImpl dartObject =
+ defaultValue.accept(new ConstantVisitor(this, errorReporter));
+ (constant as ParameterElementImpl).evaluationResult =
+ new EvaluationResultImpl(dartObject, errorListener.errors);
+ }
+ }
+ } else if (constant is VariableElement) {
+ RecordingErrorListener errorListener = new RecordingErrorListener();
+ ErrorReporter errorReporter =
+ new ErrorReporter(errorListener, constant.source);
+ DartObjectImpl dartObject =
+ (constant as PotentiallyConstVariableElement).constantInitializer
+ .accept(new ConstantVisitor(this, errorReporter));
+ // Only check the type for truly const declarations (don't check final
+ // fields with initializers, since their types may be generic. The type
+ // of the final field will be checked later, when the constructor is
+ // invoked).
+ if (dartObject != null && constant.isConst) {
+ if (!runtimeTypeMatch(dartObject, constant.type)) {
+ errorReporter.reportErrorForElement(
+ CheckedModeCompileTimeErrorCode.VARIABLE_TYPE_MISMATCH, constant,
+ [dartObject.type, constant.type]);
+ }
+ }
+ (constant as VariableElementImpl).evaluationResult =
+ new EvaluationResultImpl(dartObject, errorListener.errors);
+ } else if (constant is ConstructorElement) {
+ // No evaluation needs to be done; constructor declarations are only in
+ // the dependency graph to ensure that any constants referred to in
+ // initializer lists and parameter defaults are evaluated before
+ // invocations of the constructor. However we do need to annotate the
+ // element as being free of constant evaluation cycles so that later code
+ // will know that it is safe to evaluate.
+ (constant as ConstructorElementImpl).isCycleFree = true;
+ } else if (constant is ConstantEvaluationTarget_Annotation) {
+ Annotation constNode = constant.annotation;
+ ElementAnnotationImpl elementAnnotation = constNode.elementAnnotation;
+ // elementAnnotation is null if the annotation couldn't be resolved, in
+ // which case we skip it.
+ if (elementAnnotation != null) {
+ Element element = elementAnnotation.element;
+ if (element is PropertyAccessorElement &&
+ element.variable is VariableElementImpl) {
+ // The annotation is a reference to a compile-time constant variable.
+ // Just copy the evaluation result.
+ VariableElementImpl variableElement =
+ element.variable as VariableElementImpl;
+ elementAnnotation.evaluationResult = variableElement.evaluationResult;
+ } else if (element is ConstructorElementImpl &&
+ constNode.arguments != null) {
+ RecordingErrorListener errorListener = new RecordingErrorListener();
+ CompilationUnit sourceCompilationUnit =
+ constNode.getAncestor((node) => node is CompilationUnit);
+ ErrorReporter errorReporter = new ErrorReporter(
+ errorListener, sourceCompilationUnit.element.source);
+ ConstantVisitor constantVisitor =
+ new ConstantVisitor(this, errorReporter);
+ DartObjectImpl result = evaluateConstructorCall(constNode,
+ constNode.arguments.arguments, element, constantVisitor,
+ errorReporter);
+ elementAnnotation.evaluationResult =
+ new EvaluationResultImpl(result, errorListener.errors);
+ } else {
+ // This may happen for invalid code (e.g. failing to pass arguments
+ // to an annotation which references a const constructor). The error
+ // is detected elsewhere, so just silently ignore it here.
+ elementAnnotation.evaluationResult = new EvaluationResultImpl(null);
+ }
+ }
+ } else {
+ // Should not happen.
+ assert(false);
+ AnalysisEngine.instance.logger.logError(
+ "Constant value computer trying to compute the value of a node of type ${constant.runtimeType}");
+ return;
+ }
+ }
+
+ /**
+ * Determine which constant elements need to have their values computed
+ * prior to computing the value of [constant], and report them using
+ * [callback].
+ */
+ void computeDependencies(
+ ConstantEvaluationTarget constant, ReferenceFinderCallback callback) {
+ ReferenceFinder referenceFinder = new ReferenceFinder(callback);
+ if (constant is ParameterElement) {
+ if (constant.initializer != null) {
+ Expression defaultValue =
+ (constant as ConstVariableElement).constantInitializer;
+ if (defaultValue != null) {
+ defaultValue.accept(referenceFinder);
+ }
+ }
+ } else if (constant is PotentiallyConstVariableElement) {
+ constant.constantInitializer.accept(referenceFinder);
+ } else if (constant is ConstructorElementImpl) {
+ constant.isCycleFree = false;
+ ConstructorElement redirectedConstructor =
+ getConstRedirectedConstructor(constant);
+ if (redirectedConstructor != null) {
+ ConstructorElement redirectedConstructorBase =
+ ConstantEvaluationEngine._getConstructorBase(redirectedConstructor);
+ callback(redirectedConstructorBase);
+ return;
+ }
+ bool superInvocationFound = false;
+ List<ConstructorInitializer> initializers = constant.constantInitializers;
+ for (ConstructorInitializer initializer in initializers) {
+ if (initializer is SuperConstructorInvocation) {
+ superInvocationFound = true;
+ }
+ initializer.accept(referenceFinder);
+ }
+ if (!superInvocationFound) {
+ // No explicit superconstructor invocation found, so we need to
+ // manually insert a reference to the implicit superconstructor.
+ InterfaceType superclass =
+ (constant.returnType as InterfaceType).superclass;
+ if (superclass != null && !superclass.isObject) {
+ ConstructorElement unnamedConstructor = ConstantEvaluationEngine
+ ._getConstructorBase(superclass.element.unnamedConstructor);
+ if (unnamedConstructor != null) {
+ callback(unnamedConstructor);
+ }
+ }
+ }
+ for (FieldElement field in constant.enclosingElement.fields) {
+ // Note: non-static const isn't allowed but we handle it anyway so that
+ // we won't be confused by incorrect code.
+ if ((field.isFinal || field.isConst) &&
+ !field.isStatic &&
+ field.initializer != null) {
+ callback(field);
+ }
+ }
+ for (ParameterElement parameterElement in constant.parameters) {
+ callback(parameterElement);
+ }
+ } else if (constant is ConstantEvaluationTarget_Annotation) {
+ Annotation constNode = constant.annotation;
+ ElementAnnotationImpl elementAnnotation = constNode.elementAnnotation;
+ // elementAnnotation is null if the annotation couldn't be resolved, in
+ // which case we skip it.
+ if (elementAnnotation != null) {
+ Element element = elementAnnotation.element;
+ if (element is PropertyAccessorElement &&
+ element.variable is VariableElementImpl) {
+ // The annotation is a reference to a compile-time constant variable,
+ // so it depends on the variable.
+ callback(element.variable);
+ } else if (element is ConstructorElementImpl && element.isConst) {
+ // The annotation is a constructor invocation, so it depends on the
+ // constructor.
+ // TODO(paulberry): make sure the right thing happens if the
+ // constructor is non-const.
+ callback(element);
+ } else {
+ // This could happen in the event of invalid code. The error will be
+ // reported at constant evaluation time.
+ }
+ }
+ if (constNode.arguments != null) {
+ constNode.arguments.accept(referenceFinder);
+ }
+ } else {
+ // Should not happen.
+ assert(false);
+ AnalysisEngine.instance.logger.logError(
+ "Constant value computer trying to compute the value of a node of type ${constant.runtimeType}");
+ }
+ }
+
+ /**
+ * Evaluate a call to fromEnvironment() on the bool, int, or String class. The
+ * [environmentValue] is the value fetched from the environment. The
+ * [builtInDefaultValue] is the value that should be used as the default if no
+ * "defaultValue" argument appears in [namedArgumentValues]. The
+ * [namedArgumentValues] are the values of the named parameters passed to
+ * fromEnvironment(). Return a [DartObjectImpl] object corresponding to the
+ * evaluated result.
+ */
+ DartObjectImpl computeValueFromEnvironment(DartObject environmentValue,
+ DartObjectImpl builtInDefaultValue,
+ HashMap<String, DartObjectImpl> namedArgumentValues) {
+ DartObjectImpl value = environmentValue as DartObjectImpl;
+ if (value.isUnknown || value.isNull) {
+ // The name either doesn't exist in the environment or we couldn't parse
+ // the corresponding value.
+ // If the code supplied an explicit default, use it.
+ if (namedArgumentValues.containsKey(_DEFAULT_VALUE_PARAM)) {
+ value = namedArgumentValues[_DEFAULT_VALUE_PARAM];
+ } else if (value.isNull) {
+ // The code didn't supply an explicit default.
+ // The name exists in the environment but we couldn't parse the
+ // corresponding value.
+ // So use the built-in default value, because this is what the VM does.
+ value = builtInDefaultValue;
+ } else {
+ // The code didn't supply an explicit default.
+ // The name doesn't exist in the environment.
+ // The VM would use the built-in default value, but we don't want to do
+ // that for analysis because it's likely to lead to cascading errors.
+ // So just leave [value] in the unknown state.
+ }
+ }
+ return value;
+ }
+
+ DartObjectImpl evaluateConstructorCall(AstNode node,
+ NodeList<Expression> arguments, ConstructorElement constructor,
+ ConstantVisitor constantVisitor, ErrorReporter errorReporter) {
+ if (!_getConstructorBase(constructor).isCycleFree) {
+ // It's not safe to evaluate this constructor, so bail out.
+ // TODO(paulberry): ensure that a reasonable error message is produced
+ // in this case, as well as other cases involving constant expression
+ // circularities (e.g. "compile-time constant expression depends on
+ // itself")
+ return new DartObjectImpl.validWithUnknownValue(constructor.returnType);
+ }
+ int argumentCount = arguments.length;
+ List<DartObjectImpl> argumentValues =
+ new List<DartObjectImpl>(argumentCount);
+ List<Expression> argumentNodes = new List<Expression>(argumentCount);
+ HashMap<String, DartObjectImpl> namedArgumentValues =
+ new HashMap<String, DartObjectImpl>();
+ HashMap<String, NamedExpression> namedArgumentNodes =
+ new HashMap<String, NamedExpression>();
+ for (int i = 0; i < argumentCount; i++) {
+ Expression argument = arguments[i];
+ if (argument is NamedExpression) {
+ String name = argument.name.label.name;
+ namedArgumentValues[name] =
+ constantVisitor._valueOf(argument.expression);
+ namedArgumentNodes[name] = argument;
+ argumentValues[i] = typeProvider.nullObject;
+ } else {
+ argumentValues[i] = constantVisitor._valueOf(argument);
+ argumentNodes[i] = argument;
+ }
+ }
+ constructor = followConstantRedirectionChain(constructor);
+ InterfaceType definingClass = constructor.returnType as InterfaceType;
+ if (constructor.isFactory) {
+ // We couldn't find a non-factory constructor.
+ // See if it's because we reached an external const factory constructor
+ // that we can emulate.
+ if (constructor.name == "fromEnvironment") {
+ if (!checkFromEnvironmentArguments(
+ arguments, argumentValues, namedArgumentValues, definingClass)) {
+ errorReporter.reportErrorForNode(
+ CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
+ return null;
+ }
+ String variableName =
+ argumentCount < 1 ? null : argumentValues[0].stringValue;
+ if (identical(definingClass, typeProvider.boolType)) {
+ DartObject valueFromEnvironment;
+ valueFromEnvironment =
+ _declaredVariables.getBool(typeProvider, variableName);
+ return computeValueFromEnvironment(valueFromEnvironment,
+ new DartObjectImpl(typeProvider.boolType, BoolState.FALSE_STATE),
+ namedArgumentValues);
+ } else if (identical(definingClass, typeProvider.intType)) {
+ DartObject valueFromEnvironment;
+ valueFromEnvironment =
+ _declaredVariables.getInt(typeProvider, variableName);
+ return computeValueFromEnvironment(valueFromEnvironment,
+ new DartObjectImpl(typeProvider.nullType, NullState.NULL_STATE),
+ namedArgumentValues);
+ } else if (identical(definingClass, typeProvider.stringType)) {
+ DartObject valueFromEnvironment;
+ valueFromEnvironment =
+ _declaredVariables.getString(typeProvider, variableName);
+ return computeValueFromEnvironment(valueFromEnvironment,
+ new DartObjectImpl(typeProvider.nullType, NullState.NULL_STATE),
+ namedArgumentValues);
+ }
+ } else if (constructor.name == "" &&
+ identical(definingClass, typeProvider.symbolType) &&
+ argumentCount == 1) {
+ if (!checkSymbolArguments(
+ arguments, argumentValues, namedArgumentValues)) {
+ errorReporter.reportErrorForNode(
+ CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
+ return null;
+ }
+ String argumentValue = argumentValues[0].stringValue;
+ return new DartObjectImpl(
+ definingClass, new SymbolState(argumentValue));
+ }
+ // Either it's an external const factory constructor that we can't
+ // emulate, or an error occurred (a cycle, or a const constructor trying
+ // to delegate to a non-const constructor).
+ // In the former case, the best we can do is consider it an unknown value.
+ // In the latter case, the error has already been reported, so considering
+ // it an unknown value will suppress further errors.
+ return new DartObjectImpl.validWithUnknownValue(definingClass);
+ }
+ ConstructorElementImpl constructorBase = _getConstructorBase(constructor);
+ validator.beforeGetConstantInitializers(constructorBase);
+ List<ConstructorInitializer> initializers =
+ constructorBase.constantInitializers;
+ if (initializers == null) {
+ // This can happen in some cases where there are compile errors in the
+ // code being analyzed (for example if the code is trying to create a
+ // const instance using a non-const constructor, or the node we're
+ // visiting is involved in a cycle). The error has already been reported,
+ // so consider it an unknown value to suppress further errors.
+ return new DartObjectImpl.validWithUnknownValue(definingClass);
+ }
+ HashMap<String, DartObjectImpl> fieldMap =
+ new HashMap<String, DartObjectImpl>();
+ // Start with final fields that are initialized at their declaration site.
+ for (FieldElement field in constructor.enclosingElement.fields) {
+ if ((field.isFinal || field.isConst) &&
+ !field.isStatic &&
+ field is ConstFieldElementImpl) {
+ validator.beforeGetFieldEvaluationResult(field);
+ EvaluationResultImpl evaluationResult = field.evaluationResult;
+ DartType fieldType =
+ FieldMember.from(field, constructor.returnType).type;
+ DartObjectImpl fieldValue = evaluationResult.value;
+ if (fieldValue != null && !runtimeTypeMatch(fieldValue, fieldType)) {
+ errorReporter.reportErrorForNode(
+ CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH,
+ node, [fieldValue.type, field.name, fieldType]);
+ }
+ fieldMap[field.name] = evaluationResult.value;
+ }
+ }
+ // Now evaluate the constructor declaration.
+ HashMap<String, DartObjectImpl> parameterMap =
+ new HashMap<String, DartObjectImpl>();
+ List<ParameterElement> parameters = constructor.parameters;
+ int parameterCount = parameters.length;
+ for (int i = 0; i < parameterCount; i++) {
+ ParameterElement parameter = parameters[i];
+ ParameterElement baseParameter = parameter;
+ while (baseParameter is ParameterMember) {
+ baseParameter = (baseParameter as ParameterMember).baseElement;
+ }
+ DartObjectImpl argumentValue = null;
+ AstNode errorTarget = null;
+ if (baseParameter.parameterKind == ParameterKind.NAMED) {
+ argumentValue = namedArgumentValues[baseParameter.name];
+ errorTarget = namedArgumentNodes[baseParameter.name];
+ } else if (i < argumentCount) {
+ argumentValue = argumentValues[i];
+ errorTarget = argumentNodes[i];
+ }
+ if (errorTarget == null) {
+ // No argument node that we can direct error messages to, because we
+ // are handling an optional parameter that wasn't specified. So just
+ // direct error messages to the constructor call.
+ errorTarget = node;
+ }
+ if (argumentValue == null && baseParameter is ParameterElementImpl) {
+ // The parameter is an optional positional parameter for which no value
+ // was provided, so use the default value.
+ validator.beforeGetParameterDefault(baseParameter);
+ EvaluationResultImpl evaluationResult = baseParameter.evaluationResult;
+ if (evaluationResult == null) {
+ // No default was provided, so the default value is null.
+ argumentValue = typeProvider.nullObject;
+ } else if (evaluationResult.value != null) {
+ argumentValue = evaluationResult.value;
+ }
+ }
+ if (argumentValue != null) {
+ if (!runtimeTypeMatch(argumentValue, parameter.type)) {
+ errorReporter.reportErrorForNode(
+ CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
+ errorTarget, [argumentValue.type, parameter.type]);
+ }
+ if (baseParameter.isInitializingFormal) {
+ FieldElement field = (parameter as FieldFormalParameterElement).field;
+ if (field != null) {
+ DartType fieldType = field.type;
+ if (fieldType != parameter.type) {
+ // We've already checked that the argument can be assigned to the
+ // parameter; we also need to check that it can be assigned to
+ // the field.
+ if (!runtimeTypeMatch(argumentValue, fieldType)) {
+ errorReporter.reportErrorForNode(
+ CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
+ errorTarget, [argumentValue.type, fieldType]);
+ }
+ }
+ String fieldName = field.name;
+ fieldMap[fieldName] = argumentValue;
+ }
+ } else {
+ String name = baseParameter.name;
+ parameterMap[name] = argumentValue;
+ }
+ }
+ }
+ ConstantVisitor initializerVisitor = new ConstantVisitor(
+ this, errorReporter, lexicalEnvironment: parameterMap);
+ String superName = null;
+ NodeList<Expression> superArguments = null;
+ for (ConstructorInitializer initializer in initializers) {
+ if (initializer is ConstructorFieldInitializer) {
+ ConstructorFieldInitializer constructorFieldInitializer = initializer;
+ Expression initializerExpression =
+ constructorFieldInitializer.expression;
+ DartObjectImpl evaluationResult =
+ initializerExpression.accept(initializerVisitor);
+ if (evaluationResult != null) {
+ String fieldName = constructorFieldInitializer.fieldName.name;
+ fieldMap[fieldName] = evaluationResult;
+ PropertyAccessorElement getter = definingClass.getGetter(fieldName);
+ if (getter != null) {
+ PropertyInducingElement field = getter.variable;
+ if (!runtimeTypeMatch(evaluationResult, field.type)) {
+ errorReporter.reportErrorForNode(
+ CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH,
+ node, [evaluationResult.type, fieldName, field.type]);
+ }
+ }
+ }
+ } else if (initializer is SuperConstructorInvocation) {
+ SuperConstructorInvocation superConstructorInvocation = initializer;
+ SimpleIdentifier name = superConstructorInvocation.constructorName;
+ if (name != null) {
+ superName = name.name;
+ }
+ superArguments = superConstructorInvocation.argumentList.arguments;
+ } else if (initializer is RedirectingConstructorInvocation) {
+ // This is a redirecting constructor, so just evaluate the constructor
+ // it redirects to.
+ ConstructorElement constructor = initializer.staticElement;
+ if (constructor != null && constructor.isConst) {
+ return evaluateConstructorCall(node,
+ initializer.argumentList.arguments, constructor,
+ initializerVisitor, errorReporter);
+ }
+ }
+ }
+ // Evaluate explicit or implicit call to super().
+ InterfaceType superclass = definingClass.superclass;
+ if (superclass != null && !superclass.isObject) {
+ ConstructorElement superConstructor =
+ superclass.lookUpConstructor(superName, constructor.library);
+ if (superConstructor != null) {
+ if (superArguments == null) {
+ superArguments = new NodeList<Expression>(null);
+ }
+ evaluateSuperConstructorCall(node, fieldMap, superConstructor,
+ superArguments, initializerVisitor, errorReporter);
+ }
+ }
+ return new DartObjectImpl(definingClass, new GenericState(fieldMap));
+ }
+
+ void evaluateSuperConstructorCall(AstNode node,
+ HashMap<String, DartObjectImpl> fieldMap,
+ ConstructorElement superConstructor, NodeList<Expression> superArguments,
+ ConstantVisitor initializerVisitor, ErrorReporter errorReporter) {
+ if (superConstructor != null && superConstructor.isConst) {
+ DartObjectImpl evaluationResult = evaluateConstructorCall(node,
+ superArguments, superConstructor, initializerVisitor, errorReporter);
+ if (evaluationResult != null) {
+ fieldMap[GenericState.SUPERCLASS_FIELD] = evaluationResult;
+ }
+ }
+ }
+
+ /**
+ * Attempt to follow the chain of factory redirections until a constructor is
+ * reached which is not a const factory constructor. Return the constant
+ * constructor which terminates the chain of factory redirections, if the
+ * chain terminates. If there is a problem (e.g. a redirection can't be found,
+ * or a cycle is encountered), the chain will be followed as far as possible
+ * and then a const factory constructor will be returned.
+ */
+ ConstructorElement followConstantRedirectionChain(
+ ConstructorElement constructor) {
+ HashSet<ConstructorElement> constructorsVisited =
+ new HashSet<ConstructorElement>();
+ while (true) {
+ ConstructorElement redirectedConstructor =
+ getConstRedirectedConstructor(constructor);
+ if (redirectedConstructor == null) {
+ break;
+ } else {
+ ConstructorElement constructorBase = _getConstructorBase(constructor);
+ constructorsVisited.add(constructorBase);
+ ConstructorElement redirectedConstructorBase =
+ _getConstructorBase(redirectedConstructor);
+ if (constructorsVisited.contains(redirectedConstructorBase)) {
+ // Cycle in redirecting factory constructors--this is not allowed
+ // and is checked elsewhere--see
+ // [ErrorVerifier.checkForRecursiveFactoryRedirect()]).
+ break;
+ }
+ }
+ constructor = redirectedConstructor;
+ }
+ return constructor;
+ }
+
+ /**
+ * If [constructor] redirects to another const constructor, return the
+ * const constructor it redirects to. Otherwise return `null`.
+ */
+ ConstructorElement getConstRedirectedConstructor(
+ ConstructorElement constructor) {
+ if (!constructor.isFactory) {
+ return null;
+ }
+ if (identical(constructor.enclosingElement.type, typeProvider.symbolType)) {
+ // The dart:core.Symbol has a const factory constructor that redirects
+ // to dart:_internal.Symbol. That in turn redirects to an external
+ // const constructor, which we won't be able to evaluate.
+ // So stop following the chain of redirections at dart:core.Symbol, and
+ // let [evaluateInstanceCreationExpression] handle it specially.
+ return null;
+ }
+ ConstructorElement redirectedConstructor =
+ constructor.redirectedConstructor;
+ if (redirectedConstructor == null) {
+ // This can happen if constructor is an external factory constructor.
+ return null;
+ }
+ if (!redirectedConstructor.isConst) {
+ // Delegating to a non-const constructor--this is not allowed (and
+ // is checked elsewhere--see
+ // [ErrorVerifier.checkForRedirectToNonConstConstructor()]).
+ return null;
+ }
+ return redirectedConstructor;
+ }
+
+ /**
+ * Check if the object [obj] matches the type [type] according to runtime type
+ * checking rules.
+ */
+ bool runtimeTypeMatch(DartObjectImpl obj, DartType type) {
+ if (obj.isNull) {
+ return true;
+ }
+ if (type.isUndefined) {
+ return false;
+ }
+ return obj.type.isSubtypeOf(type);
+ }
+
+ /**
+ * Determine whether the given string is a valid name for a public symbol
+ * (i.e. whether it is allowed for a call to the Symbol constructor).
+ */
+ static bool isValidPublicSymbol(String name) => name.isEmpty ||
+ name == "void" ||
+ new JavaPatternMatcher(_PUBLIC_SYMBOL_PATTERN, name).matches();
+
+ static ConstructorElementImpl _getConstructorBase(
+ ConstructorElement constructor) {
+ while (constructor is ConstructorMember) {
+ constructor = (constructor as ConstructorMember).baseElement;
+ }
+ return constructor;
+ }
+}
+
+/**
+ * Wrapper around an [Annotation] which can be used as a
+ * [ConstantEvaluationTarget].
+ */
+class ConstantEvaluationTarget_Annotation implements ConstantEvaluationTarget {
+ final AnalysisContext context;
+ final Source source;
+ final Source librarySource;
+ final Annotation annotation;
+
+ ConstantEvaluationTarget_Annotation(
+ this.context, this.source, this.librarySource, this.annotation);
+
+ @override
+ int get hashCode => JenkinsSmiHash.hash4(context.hashCode, source.hashCode,
+ librarySource.hashCode, annotation.hashCode);
+
+ @override
+ bool operator ==(other) {
+ if (other is ConstantEvaluationTarget_Annotation) {
+ return this.context == other.context &&
+ this.source == other.source &&
+ this.librarySource == other.librarySource &&
+ this.annotation == other.annotation;
+ } else {
+ return false;
+ }
+ }
+}
+
+/**
+ * Interface used by unit tests to verify correct dependency analysis during
+ * constant evaluation.
+ */
+abstract class ConstantEvaluationValidator {
+ /**
+ * This method is called just before computing the constant value associated
+ * with [constant]. Unit tests will override this method to introduce
+ * additional error checking.
+ */
+ void beforeComputeValue(ConstantEvaluationTarget constant);
+
+ /**
+ * This method is called just before getting the constant initializers
+ * associated with the [constructor]. Unit tests will override this method to
+ * introduce additional error checking.
+ */
+ void beforeGetConstantInitializers(ConstructorElement constructor);
+
+ /**
+ * This method is called just before retrieving an evaluation result from an
+ * element. Unit tests will override it to introduce additional error
+ * checking.
+ */
+ void beforeGetEvaluationResult(ConstantEvaluationTarget constant);
+
+ /**
+ * This method is called just before getting the constant value of a field
+ * with an initializer. Unit tests will override this method to introduce
+ * additional error checking.
+ */
+ void beforeGetFieldEvaluationResult(FieldElementImpl field);
+
+ /**
+ * This method is called just before getting a parameter's default value. Unit
+ * tests will override this method to introduce additional error checking.
+ */
+ void beforeGetParameterDefault(ParameterElement parameter);
+}
+
+/**
+ * Implementation of [ConstantEvaluationValidator] used in production; does no
+ * validation.
+ */
+class ConstantEvaluationValidator_ForProduction
+ implements ConstantEvaluationValidator {
+ @override
+ void beforeComputeValue(ConstantEvaluationTarget constant) {}
+
+ @override
+ void beforeGetConstantInitializers(ConstructorElement constructor) {}
+
+ @override
+ void beforeGetEvaluationResult(ConstantEvaluationTarget constant) {}
+
+ @override
+ void beforeGetFieldEvaluationResult(FieldElementImpl field) {}
+
+ @override
+ void beforeGetParameterDefault(ParameterElement parameter) {}
+}
+
+/**
* Instances of the class `ConstantEvaluator` evaluate constant expressions to
* produce their compile-time value. According to the Dart Language
* Specification:
@@ -262,8 +1057,9 @@
EvaluationResult evaluate(Expression expression) {
RecordingErrorListener errorListener = new RecordingErrorListener();
ErrorReporter errorReporter = new ErrorReporter(errorListener, _source);
- DartObjectImpl result = expression
- .accept(new ConstantVisitor.con1(_typeProvider, errorReporter));
+ DartObjectImpl result = expression.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(_typeProvider, new DeclaredVariables()),
+ errorReporter));
if (result != null) {
return EvaluationResult.forValue(result);
}
@@ -278,40 +1074,28 @@
* those compilation units.
*/
class ConstantFinder extends RecursiveAstVisitor<Object> {
- /**
- * A table mapping constant variable elements to the declarations of those
- * variables.
- */
- final HashMap<PotentiallyConstVariableElement, VariableDeclaration> variableMap =
- new HashMap<PotentiallyConstVariableElement, VariableDeclaration>();
+ final AnalysisContext context;
+ final Source source;
+ final Source librarySource;
/**
- * A table mapping constant constructors to the declarations of those
- * constructors.
+ * The elements and AST nodes whose constant values need to be computed.
*/
- final HashMap<ConstructorElement, ConstructorDeclaration> constructorMap =
- new HashMap<ConstructorElement, ConstructorDeclaration>();
-
- /**
- * A collection of constant constructor invocations.
- */
- final List<InstanceCreationExpression> constructorInvocations =
- new List<InstanceCreationExpression>();
-
- /**
- * A collection of annotations.
- */
- final List<Annotation> annotations = <Annotation>[];
+ HashSet<ConstantEvaluationTarget> constantsToCompute =
+ new HashSet<ConstantEvaluationTarget>();
/**
* True if instance variables marked as "final" should be treated as "const".
*/
bool treatFinalInstanceVarAsConst = false;
+ ConstantFinder(this.context, this.source, this.librarySource);
+
@override
Object visitAnnotation(Annotation node) {
super.visitAnnotation(node);
- annotations.add(node);
+ constantsToCompute.add(new ConstantEvaluationTarget_Annotation(
+ context, source, librarySource, node));
return null;
}
@@ -337,22 +1121,14 @@
if (node.constKeyword != null) {
ConstructorElement element = node.element;
if (element != null) {
- constructorMap[element] = node;
+ constantsToCompute.add(element);
+ constantsToCompute.addAll(element.parameters);
}
}
return null;
}
@override
- Object visitInstanceCreationExpression(InstanceCreationExpression node) {
- super.visitInstanceCreationExpression(node);
- if (node.isConst) {
- constructorInvocations.add(node);
- }
- return null;
- }
-
- @override
Object visitVariableDeclaration(VariableDeclaration node) {
super.visitVariableDeclaration(node);
Expression initializer = node.initializer;
@@ -364,7 +1140,7 @@
node.isFinal &&
!element.isStatic)) {
if (node.element != null) {
- variableMap[node.element as PotentiallyConstVariableElement] = node;
+ constantsToCompute.add(node.element);
}
}
return null;
@@ -381,11 +1157,6 @@
*/
class ConstantValueComputer {
/**
- * Parameter to "fromEnvironment" methods that denotes the default value.
- */
- static String _DEFAULT_VALUE_PARAM = "defaultValue";
-
- /**
* Source of RegExp matching declarable operator names.
* From sdk/lib/internal/symbol.dart.
*/
@@ -393,13 +1164,6 @@
"(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)";
/**
- * Source of RegExp matching any public identifier.
- * From sdk/lib/internal/symbol.dart.
- */
- static String _PUBLIC_IDENTIFIER_RE =
- "(?!${ConstantValueComputer._RESERVED_WORD_RE}\\b(?!\\\$))[a-zA-Z\$][\\w\$]*";
-
- /**
* Source of RegExp matching Dart reserved words.
* From sdk/lib/internal/symbol.dart.
*/
@@ -407,733 +1171,91 @@
"(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|v(?:ar|oid)|w(?:hile|ith))";
/**
- * RegExp that validates a non-empty non-private symbol.
- * From sdk/lib/internal/symbol.dart.
- */
- static RegExp _PUBLIC_SYMBOL_PATTERN = new RegExp(
- "^(?:${ConstantValueComputer._OPERATOR_RE}\$|$_PUBLIC_IDENTIFIER_RE(?:=?\$|[.](?!\$)))+?\$");
-
- /**
- * The type provider used to access the known types.
- */
- TypeProvider typeProvider;
-
- /**
- * The object used to find constant variables and constant constructor
- * invocations in the compilation units that were added.
- */
- ConstantFinder _constantFinder = new ConstantFinder();
-
- /**
* A graph in which the nodes are the constants, and the edges are from each
* constant to the other constants that are referenced by it.
*/
- DirectedGraph<AstNode> referenceGraph = new DirectedGraph<AstNode>();
+ DirectedGraph<ConstantEvaluationTarget> referenceGraph =
+ new DirectedGraph<ConstantEvaluationTarget>();
/**
- * A table mapping constant variables to the declarations of those variables.
+ * The elements whose constant values need to be computed. Any elements
+ * which appear in [referenceGraph] but not in this set either belong to a
+ * different library cycle (and hence don't need to be recomputed) or were
+ * computed during a previous stage of resolution stage (e.g. constants
+ * associated with enums).
*/
- HashMap<PotentiallyConstVariableElement, VariableDeclaration> _variableDeclarationMap;
+ HashSet<ConstantEvaluationTarget> _constantsToCompute =
+ new HashSet<ConstantEvaluationTarget>();
/**
- * A table mapping constant constructors to the declarations of those
- * constructors.
+ * The evaluation engine that does the work of evaluating instance creation
+ * expressions.
*/
- HashMap<ConstructorElement, ConstructorDeclaration> constructorDeclarationMap;
+ final ConstantEvaluationEngine evaluationEngine;
- /**
- * A collection of constant constructor invocations.
- */
- List<InstanceCreationExpression> _constructorInvocations;
-
- /**
- * A collection of annotations.
- */
- List<Annotation> _annotations;
-
- /**
- * The set of variables declared on the command line using '-D'.
- */
- final DeclaredVariables _declaredVariables;
+ final AnalysisContext _context;
/**
* Initialize a newly created constant value computer. The [typeProvider] is
* the type provider used to access known types. The [declaredVariables] is
* the set of variables declared on the command line using '-D'.
*/
- ConstantValueComputer(TypeProvider typeProvider, this._declaredVariables) {
- this.typeProvider = typeProvider;
- }
+ ConstantValueComputer(this._context, TypeProvider typeProvider,
+ DeclaredVariables declaredVariables,
+ [ConstantEvaluationValidator validator])
+ : evaluationEngine = new ConstantEvaluationEngine(
+ typeProvider, declaredVariables, validator: validator);
/**
* Add the constants in the given compilation [unit] to the list of constants
* whose value needs to be computed.
*/
- void add(CompilationUnit unit) {
- unit.accept(_constantFinder);
+ void add(CompilationUnit unit, Source source, Source librarySource) {
+ ConstantFinder constantFinder =
+ new ConstantFinder(_context, source, librarySource);
+ unit.accept(constantFinder);
+ _constantsToCompute.addAll(constantFinder.constantsToCompute);
}
/**
- * This method is called just before computing the constant value associated
- * with [constNode]. Unit tests will override this method to introduce
- * additional error checking.
- */
- void beforeComputeValue(AstNode constNode) {}
-
- /**
- * This method is called just before getting the constant value of a field
- * with an initializer. Unit tests will override this method to introduce
- * additional error checking.
- */
- void beforeGetFieldEvaluationResult(FieldElementImpl field) {}
-
- /**
- * This method is called just before getting the constant initializers
- * associated with the [constructor]. Unit tests will override this method to
- * introduce additional error checking.
- */
- void beforeGetConstantInitializers(ConstructorElement constructor) {}
-
- /**
- * This method is called just before getting a parameter's default value. Unit
- * tests will override this method to introduce additional error checking.
- */
- void beforeGetParameterDefault(ParameterElement parameter) {}
-
- /**
* Compute values for all of the constants in the compilation units that were
* added.
*/
void computeValues() {
- _variableDeclarationMap = _constantFinder.variableMap;
- constructorDeclarationMap = _constantFinder.constructorMap;
- _constructorInvocations = _constantFinder.constructorInvocations;
- _annotations = _constantFinder.annotations;
- _variableDeclarationMap.values.forEach((VariableDeclaration declaration) {
- ReferenceFinder referenceFinder = new ReferenceFinder(declaration,
- referenceGraph, _variableDeclarationMap, constructorDeclarationMap);
- referenceGraph.addNode(declaration);
- declaration.initializer.accept(referenceFinder);
- });
- constructorDeclarationMap.forEach((ConstructorElementImpl element,
- ConstructorDeclaration declaration) {
- element.isCycleFree = false;
- ConstructorElement redirectedConstructor =
- _getConstRedirectedConstructor(element);
- if (redirectedConstructor != null) {
- ConstructorElement redirectedConstructorBase =
- _getConstructorBase(redirectedConstructor);
- ConstructorDeclaration redirectedConstructorDeclaration =
- findConstructorDeclaration(redirectedConstructorBase);
- referenceGraph.addEdge(declaration, redirectedConstructorDeclaration);
- return;
- }
- ReferenceFinder referenceFinder = new ReferenceFinder(declaration,
- referenceGraph, _variableDeclarationMap, constructorDeclarationMap);
- referenceGraph.addNode(declaration);
- bool superInvocationFound = false;
- NodeList<ConstructorInitializer> initializers = declaration.initializers;
- for (ConstructorInitializer initializer in initializers) {
- if (initializer is SuperConstructorInvocation) {
- superInvocationFound = true;
- }
- initializer.accept(referenceFinder);
- }
- if (!superInvocationFound) {
- // No explicit superconstructor invocation found, so we need to
- // manually insert a reference to the implicit superconstructor.
- InterfaceType superclass =
- (element.returnType as InterfaceType).superclass;
- if (superclass != null && !superclass.isObject) {
- ConstructorElement unnamedConstructor =
- superclass.element.unnamedConstructor;
- ConstructorDeclaration superConstructorDeclaration =
- findConstructorDeclaration(unnamedConstructor);
- if (superConstructorDeclaration != null) {
- referenceGraph.addEdge(declaration, superConstructorDeclaration);
- }
- }
- }
- for (FieldElement field in element.enclosingElement.fields) {
- // Note: non-static const isn't allowed but we handle it anyway so that
- // we won't be confused by incorrect code.
- if ((field.isFinal || field.isConst) && !field.isStatic) {
- VariableDeclaration fieldDeclaration = _variableDeclarationMap[field];
- if (fieldDeclaration != null) {
- referenceGraph.addEdge(declaration, fieldDeclaration);
- }
- }
- }
- for (FormalParameter parameter in declaration.parameters.parameters) {
- referenceGraph.addNode(parameter);
- referenceGraph.addEdge(declaration, parameter);
- if (parameter is DefaultFormalParameter) {
- Expression defaultValue = parameter.defaultValue;
- if (defaultValue != null) {
- ReferenceFinder parameterReferenceFinder = new ReferenceFinder(
- parameter, referenceGraph, _variableDeclarationMap,
- constructorDeclarationMap);
- defaultValue.accept(parameterReferenceFinder);
- }
- }
- }
- });
- for (InstanceCreationExpression expression in _constructorInvocations) {
- referenceGraph.addNode(expression);
- ConstructorElement constructor = expression.staticElement;
- if (constructor == null) {
- continue;
- }
- ConstructorDeclaration declaration =
- findConstructorDeclaration(constructor);
- // An instance creation expression depends both on the constructor and
- // the arguments passed to it.
- ReferenceFinder referenceFinder = new ReferenceFinder(expression,
- referenceGraph, _variableDeclarationMap, constructorDeclarationMap);
- if (declaration != null) {
- referenceGraph.addEdge(expression, declaration);
- }
- expression.argumentList.accept(referenceFinder);
+ for (ConstantEvaluationTarget constant in _constantsToCompute) {
+ referenceGraph.addNode(constant);
+ evaluationEngine.computeDependencies(constant,
+ (ConstantEvaluationTarget dependency) {
+ referenceGraph.addEdge(constant, dependency);
+ });
}
- List<List<AstNode>> topologicalSort =
+ List<List<ConstantEvaluationTarget>> topologicalSort =
referenceGraph.computeTopologicalSort();
- for (List<AstNode> constantsInCycle in topologicalSort) {
+ for (List<ConstantEvaluationTarget> constantsInCycle in topologicalSort) {
if (constantsInCycle.length == 1) {
_computeValueFor(constantsInCycle[0]);
} else {
- for (AstNode constant in constantsInCycle) {
+ for (ConstantEvaluationTarget constant in constantsInCycle) {
_generateCycleError(constantsInCycle, constant);
}
}
}
- // Since no constant can depend on an annotation, we don't waste time
- // including them in the topological sort. We just process all the
- // annotations after all other constants are finished.
- for (Annotation annotation in _annotations) {
- _computeValueFor(annotation);
- }
}
/**
- * Create the ConstantVisitor used to evaluate constants. Unit tests will
- * override this method to introduce additional error checking.
+ * Compute a value for the given [constant].
*/
- ConstantVisitor createConstantVisitor(ErrorReporter errorReporter) =>
- new ConstantVisitor.con1(typeProvider, errorReporter);
-
- ConstructorDeclaration findConstructorDeclaration(
- ConstructorElement constructor) =>
- constructorDeclarationMap[_getConstructorBase(constructor)];
-
- VariableDeclaration findVariableDeclaration(
- PotentiallyConstVariableElement variable) =>
- _variableDeclarationMap[variable];
-
- /**
- * Check that the arguments to a call to fromEnvironment() are correct. The
- * [arguments] are the AST nodes of the arguments. The [argumentValues] are
- * the values of the unnamed arguments. The [namedArgumentValues] are the
- * values of the named arguments. The [expectedDefaultValueType] is the
- * allowed type of the "defaultValue" parameter (if present). Note:
- * "defaultValue" is always allowed to be null. Return `true` if the arguments
- * are correct, `false` if there is an error.
- */
- bool _checkFromEnvironmentArguments(NodeList<Expression> arguments,
- List<DartObjectImpl> argumentValues,
- HashMap<String, DartObjectImpl> namedArgumentValues,
- InterfaceType expectedDefaultValueType) {
- int argumentCount = arguments.length;
- if (argumentCount < 1 || argumentCount > 2) {
- return false;
- }
- if (arguments[0] is NamedExpression) {
- return false;
- }
- if (!identical(argumentValues[0].type, typeProvider.stringType)) {
- return false;
- }
- if (argumentCount == 2) {
- if (arguments[1] is! NamedExpression) {
- return false;
- }
- if (!((arguments[1] as NamedExpression).name.label.name ==
- _DEFAULT_VALUE_PARAM)) {
- return false;
- }
- ParameterizedType defaultValueType =
- namedArgumentValues[_DEFAULT_VALUE_PARAM].type;
- if (!(identical(defaultValueType, expectedDefaultValueType) ||
- identical(defaultValueType, typeProvider.nullType))) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Check that the arguments to a call to Symbol() are correct. The [arguments]
- * are the AST nodes of the arguments. The [argumentValues] are the values of
- * the unnamed arguments. The [namedArgumentValues] are the values of the
- * named arguments. Return `true` if the arguments are correct, `false` if
- * there is an error.
- */
- bool _checkSymbolArguments(NodeList<Expression> arguments,
- List<DartObjectImpl> argumentValues,
- HashMap<String, DartObjectImpl> namedArgumentValues) {
- if (arguments.length != 1) {
- return false;
- }
- if (arguments[0] is NamedExpression) {
- return false;
- }
- if (!identical(argumentValues[0].type, typeProvider.stringType)) {
- return false;
- }
- String name = argumentValues[0].stringValue;
- return isValidPublicSymbol(name);
- }
-
- /**
- * Compute a value for the given [constNode].
- */
- void _computeValueFor(AstNode constNode) {
- beforeComputeValue(constNode);
- if (constNode is VariableDeclaration) {
- VariableElement element = constNode.element;
- RecordingErrorListener errorListener = new RecordingErrorListener();
- ErrorReporter errorReporter =
- new ErrorReporter(errorListener, element.source);
- DartObjectImpl dartObject =
- (element as PotentiallyConstVariableElement).constantInitializer
- .accept(createConstantVisitor(errorReporter));
- if (dartObject != null) {
- if (!_runtimeTypeMatch(dartObject, element.type)) {
- errorReporter.reportErrorForElement(
- CheckedModeCompileTimeErrorCode.VARIABLE_TYPE_MISMATCH, element, [
- dartObject.type,
- element.type
- ]);
- }
- }
- (element as VariableElementImpl).evaluationResult =
- new EvaluationResultImpl.con2(dartObject, errorListener.errors);
- } else if (constNode is InstanceCreationExpression) {
- InstanceCreationExpression expression = constNode;
- ConstructorElement constructor = expression.staticElement;
- if (constructor == null) {
- // Couldn't resolve the constructor so we can't compute a value.
- // No problem - the error has already been reported.
- // But we still need to store an evaluation result.
- expression.constantHandle.evaluationResult =
- new EvaluationResultImpl.con1(null);
- return;
- }
- RecordingErrorListener errorListener = new RecordingErrorListener();
- CompilationUnit sourceCompilationUnit =
- expression.getAncestor((node) => node is CompilationUnit);
- ErrorReporter errorReporter = new ErrorReporter(
- errorListener, sourceCompilationUnit.element.source);
- ConstantVisitor constantVisitor = createConstantVisitor(errorReporter);
- DartObjectImpl result = _evaluateConstructorCall(constNode,
- expression.argumentList.arguments, constructor, constantVisitor,
- errorReporter);
- expression.constantHandle.evaluationResult =
- new EvaluationResultImpl.con2(result, errorListener.errors);
- } else if (constNode is ConstructorDeclaration) {
- // No evaluation needs to be done; constructor declarations are only in
- // the dependency graph to ensure that any constants referred to in
- // initializer lists and parameter defaults are evaluated before
- // invocations of the constructor. However we do need to annotate the
- // element as being free of constant evaluation cycles so that later code
- // will know that it is safe to evaluate.
- ConstructorElementImpl constructor = constNode.element;
- constructor.isCycleFree = true;
- } else if (constNode is FormalParameter) {
- if (constNode is DefaultFormalParameter) {
- DefaultFormalParameter parameter = constNode;
- ParameterElement element = parameter.element;
- Expression defaultValue = parameter.defaultValue;
- if (defaultValue != null) {
- RecordingErrorListener errorListener = new RecordingErrorListener();
- ErrorReporter errorReporter =
- new ErrorReporter(errorListener, element.source);
- DartObjectImpl dartObject =
- defaultValue.accept(createConstantVisitor(errorReporter));
- (element as ParameterElementImpl).evaluationResult =
- new EvaluationResultImpl.con2(dartObject, errorListener.errors);
- }
- }
- } else if (constNode is Annotation) {
- ElementAnnotationImpl elementAnnotation = constNode.elementAnnotation;
- // elementAnnotation is null if the annotation couldn't be resolved, in
- // which case we skip it.
- if (elementAnnotation != null) {
- Element element = elementAnnotation.element;
- if (element is PropertyAccessorElement &&
- element.variable is VariableElementImpl) {
- // The annotation is a reference to a compile-time constant variable.
- // Just copy the evaluation result.
- VariableElementImpl variableElement =
- element.variable as VariableElementImpl;
- elementAnnotation.evaluationResult = variableElement.evaluationResult;
- } else if (element is ConstructorElementImpl &&
- constNode.arguments != null) {
- RecordingErrorListener errorListener = new RecordingErrorListener();
- CompilationUnit sourceCompilationUnit =
- constNode.getAncestor((node) => node is CompilationUnit);
- ErrorReporter errorReporter = new ErrorReporter(
- errorListener, sourceCompilationUnit.element.source);
- ConstantVisitor constantVisitor =
- createConstantVisitor(errorReporter);
- DartObjectImpl result = _evaluateConstructorCall(constNode,
- constNode.arguments.arguments, element, constantVisitor,
- errorReporter);
- elementAnnotation.evaluationResult =
- new EvaluationResultImpl.con2(result, errorListener.errors);
- } else {
- // This may happen for invalid code (e.g. failing to pass arguments
- // to an annotation which references a const constructor). The error
- // is detected elsewhere, so just silently ignore it here.
- elementAnnotation.evaluationResult =
- new EvaluationResultImpl.con1(null);
- }
- }
- } else {
- // Should not happen.
- AnalysisEngine.instance.logger.logError(
- "Constant value computer trying to compute the value of a node which is not a VariableDeclaration, InstanceCreationExpression, FormalParameter, or ConstructorDeclaration");
+ void _computeValueFor(ConstantEvaluationTarget constant) {
+ if (!_constantsToCompute.contains(constant)) {
+ // Element is in the dependency graph but should have been computed by
+ // a previous stage of analysis.
+ // TODO(paulberry): once we have moved over to the new task model, this
+ // should only occur for constants associated with enum members. Once
+ // that happens we should add an assertion to verify that it doesn't
+ // occur in any other cases.
return;
}
- }
-
- /**
- * Evaluate a call to fromEnvironment() on the bool, int, or String class. The
- * [environmentValue] is the value fetched from the environment. The
- * [builtInDefaultValue] is the value that should be used as the default if no
- * "defaultValue" argument appears in [namedArgumentValues]. The
- * [namedArgumentValues] are the values of the named parameters passed to
- * fromEnvironment(). Return a [DartObjectImpl] object corresponding to the
- * evaluated result.
- */
- DartObjectImpl _computeValueFromEnvironment(DartObject environmentValue,
- DartObjectImpl builtInDefaultValue,
- HashMap<String, DartObjectImpl> namedArgumentValues) {
- DartObjectImpl value = environmentValue as DartObjectImpl;
- if (value.isUnknown || value.isNull) {
- // The name either doesn't exist in the environment or we couldn't parse
- // the corresponding value.
- // If the code supplied an explicit default, use it.
- if (namedArgumentValues.containsKey(_DEFAULT_VALUE_PARAM)) {
- value = namedArgumentValues[_DEFAULT_VALUE_PARAM];
- } else if (value.isNull) {
- // The code didn't supply an explicit default.
- // The name exists in the environment but we couldn't parse the
- // corresponding value.
- // So use the built-in default value, because this is what the VM does.
- value = builtInDefaultValue;
- } else {
- // The code didn't supply an explicit default.
- // The name doesn't exist in the environment.
- // The VM would use the built-in default value, but we don't want to do
- // that for analysis because it's likely to lead to cascading errors.
- // So just leave [value] in the unknown state.
- }
- }
- return value;
- }
-
- DartObjectImpl _evaluateConstructorCall(AstNode node,
- NodeList<Expression> arguments, ConstructorElement constructor,
- ConstantVisitor constantVisitor, ErrorReporter errorReporter) {
- if (!_getConstructorBase(constructor).isCycleFree) {
- // It's not safe to evaluate this constructor, so bail out.
- // TODO(paulberry): ensure that a reasonable error message is produced
- // in this case, as well as other cases involving constant expression
- // circularities (e.g. "compile-time constant expression depends on
- // itself")
- return new DartObjectImpl.validWithUnknownValue(constructor.returnType);
- }
- int argumentCount = arguments.length;
- List<DartObjectImpl> argumentValues =
- new List<DartObjectImpl>(argumentCount);
- List<Expression> argumentNodes = new List<Expression>(argumentCount);
- HashMap<String, DartObjectImpl> namedArgumentValues =
- new HashMap<String, DartObjectImpl>();
- HashMap<String, NamedExpression> namedArgumentNodes =
- new HashMap<String, NamedExpression>();
- for (int i = 0; i < argumentCount; i++) {
- Expression argument = arguments[i];
- if (argument is NamedExpression) {
- String name = argument.name.label.name;
- namedArgumentValues[name] =
- constantVisitor._valueOf(argument.expression);
- namedArgumentNodes[name] = argument;
- argumentValues[i] = typeProvider.nullObject;
- } else {
- argumentValues[i] = constantVisitor._valueOf(argument);
- argumentNodes[i] = argument;
- }
- }
- constructor = _followConstantRedirectionChain(constructor);
- InterfaceType definingClass = constructor.returnType as InterfaceType;
- if (constructor.isFactory) {
- // We couldn't find a non-factory constructor.
- // See if it's because we reached an external const factory constructor
- // that we can emulate.
- if (constructor.name == "fromEnvironment") {
- if (!_checkFromEnvironmentArguments(
- arguments, argumentValues, namedArgumentValues, definingClass)) {
- errorReporter.reportErrorForNode(
- CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
- return null;
- }
- String variableName =
- argumentCount < 1 ? null : argumentValues[0].stringValue;
- if (identical(definingClass, typeProvider.boolType)) {
- DartObject valueFromEnvironment;
- valueFromEnvironment =
- _declaredVariables.getBool(typeProvider, variableName);
- return _computeValueFromEnvironment(valueFromEnvironment,
- new DartObjectImpl(typeProvider.boolType, BoolState.FALSE_STATE),
- namedArgumentValues);
- } else if (identical(definingClass, typeProvider.intType)) {
- DartObject valueFromEnvironment;
- valueFromEnvironment =
- _declaredVariables.getInt(typeProvider, variableName);
- return _computeValueFromEnvironment(valueFromEnvironment,
- new DartObjectImpl(typeProvider.nullType, NullState.NULL_STATE),
- namedArgumentValues);
- } else if (identical(definingClass, typeProvider.stringType)) {
- DartObject valueFromEnvironment;
- valueFromEnvironment =
- _declaredVariables.getString(typeProvider, variableName);
- return _computeValueFromEnvironment(valueFromEnvironment,
- new DartObjectImpl(typeProvider.nullType, NullState.NULL_STATE),
- namedArgumentValues);
- }
- } else if (constructor.name == "" &&
- identical(definingClass, typeProvider.symbolType) &&
- argumentCount == 1) {
- if (!_checkSymbolArguments(
- arguments, argumentValues, namedArgumentValues)) {
- errorReporter.reportErrorForNode(
- CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
- return null;
- }
- String argumentValue = argumentValues[0].stringValue;
- return new DartObjectImpl(
- definingClass, new SymbolState(argumentValue));
- }
- // Either it's an external const factory constructor that we can't
- // emulate, or an error occurred (a cycle, or a const constructor trying
- // to delegate to a non-const constructor).
- // In the former case, the best we can do is consider it an unknown value.
- // In the latter case, the error has already been reported, so considering
- // it an unknown value will suppress further errors.
- return new DartObjectImpl.validWithUnknownValue(definingClass);
- }
- beforeGetConstantInitializers(constructor);
- ConstructorElementImpl constructorBase = _getConstructorBase(constructor);
- List<ConstructorInitializer> initializers =
- constructorBase.constantInitializers;
- if (initializers == null) {
- // This can happen in some cases where there are compile errors in the
- // code being analyzed (for example if the code is trying to create a
- // const instance using a non-const constructor, or the node we're
- // visiting is involved in a cycle). The error has already been reported,
- // so consider it an unknown value to suppress further errors.
- return new DartObjectImpl.validWithUnknownValue(definingClass);
- }
- HashMap<String, DartObjectImpl> fieldMap =
- new HashMap<String, DartObjectImpl>();
- // Start with final fields that are initialized at their declaration site.
- for (FieldElement field in constructor.enclosingElement.fields) {
- if ((field.isFinal || field.isConst) &&
- !field.isStatic &&
- field is ConstFieldElementImpl) {
- beforeGetFieldEvaluationResult(field);
- EvaluationResultImpl evaluationResult = field.evaluationResult;
- DartType fieldType =
- FieldMember.from(field, constructor.returnType).type;
- DartObjectImpl fieldValue = evaluationResult.value;
- if (fieldValue != null && !_runtimeTypeMatch(fieldValue, fieldType)) {
- errorReporter.reportErrorForNode(
- CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH,
- node, [fieldValue.type, field.name, fieldType]);
- }
- fieldMap[field.name] = evaluationResult.value;
- }
- }
- // Now evaluate the constructor declaration.
- HashMap<String, DartObjectImpl> parameterMap =
- new HashMap<String, DartObjectImpl>();
- List<ParameterElement> parameters = constructor.parameters;
- int parameterCount = parameters.length;
- for (int i = 0; i < parameterCount; i++) {
- ParameterElement parameter = parameters[i];
- ParameterElement baseParameter = parameter;
- while (baseParameter is ParameterMember) {
- baseParameter = (baseParameter as ParameterMember).baseElement;
- }
- DartObjectImpl argumentValue = null;
- AstNode errorTarget = null;
- if (baseParameter.parameterKind == ParameterKind.NAMED) {
- argumentValue = namedArgumentValues[baseParameter.name];
- errorTarget = namedArgumentNodes[baseParameter.name];
- } else if (i < argumentCount) {
- argumentValue = argumentValues[i];
- errorTarget = argumentNodes[i];
- }
- if (errorTarget == null) {
- // No argument node that we can direct error messages to, because we
- // are handling an optional parameter that wasn't specified. So just
- // direct error messages to the constructor call.
- errorTarget = node;
- }
- if (argumentValue == null && baseParameter is ParameterElementImpl) {
- // The parameter is an optional positional parameter for which no value
- // was provided, so use the default value.
- beforeGetParameterDefault(baseParameter);
- EvaluationResultImpl evaluationResult = baseParameter.evaluationResult;
- if (evaluationResult == null) {
- // No default was provided, so the default value is null.
- argumentValue = typeProvider.nullObject;
- } else if (evaluationResult.value != null) {
- argumentValue = evaluationResult.value;
- }
- }
- if (argumentValue != null) {
- if (!_runtimeTypeMatch(argumentValue, parameter.type)) {
- errorReporter.reportErrorForNode(
- CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
- errorTarget, [argumentValue.type, parameter.type]);
- }
- if (baseParameter.isInitializingFormal) {
- FieldElement field = (parameter as FieldFormalParameterElement).field;
- if (field != null) {
- DartType fieldType = field.type;
- if (fieldType != parameter.type) {
- // We've already checked that the argument can be assigned to the
- // parameter; we also need to check that it can be assigned to
- // the field.
- if (!_runtimeTypeMatch(argumentValue, fieldType)) {
- errorReporter.reportErrorForNode(
- CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
- errorTarget, [argumentValue.type, fieldType]);
- }
- }
- String fieldName = field.name;
- fieldMap[fieldName] = argumentValue;
- }
- } else {
- String name = baseParameter.name;
- parameterMap[name] = argumentValue;
- }
- }
- }
- ConstantVisitor initializerVisitor =
- new ConstantVisitor.con2(typeProvider, parameterMap, errorReporter);
- String superName = null;
- NodeList<Expression> superArguments = null;
- for (ConstructorInitializer initializer in initializers) {
- if (initializer is ConstructorFieldInitializer) {
- ConstructorFieldInitializer constructorFieldInitializer = initializer;
- Expression initializerExpression =
- constructorFieldInitializer.expression;
- DartObjectImpl evaluationResult =
- initializerExpression.accept(initializerVisitor);
- if (evaluationResult != null) {
- String fieldName = constructorFieldInitializer.fieldName.name;
- fieldMap[fieldName] = evaluationResult;
- PropertyAccessorElement getter = definingClass.getGetter(fieldName);
- if (getter != null) {
- PropertyInducingElement field = getter.variable;
- if (!_runtimeTypeMatch(evaluationResult, field.type)) {
- errorReporter.reportErrorForNode(
- CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH,
- node, [evaluationResult.type, fieldName, field.type]);
- }
- }
- }
- } else if (initializer is SuperConstructorInvocation) {
- SuperConstructorInvocation superConstructorInvocation = initializer;
- SimpleIdentifier name = superConstructorInvocation.constructorName;
- if (name != null) {
- superName = name.name;
- }
- superArguments = superConstructorInvocation.argumentList.arguments;
- } else if (initializer is RedirectingConstructorInvocation) {
- // This is a redirecting constructor, so just evaluate the constructor
- // it redirects to.
- ConstructorElement constructor = initializer.staticElement;
- if (constructor != null && constructor.isConst) {
- return _evaluateConstructorCall(node,
- initializer.argumentList.arguments, constructor,
- initializerVisitor, errorReporter);
- }
- }
- }
- // Evaluate explicit or implicit call to super().
- InterfaceType superclass = definingClass.superclass;
- if (superclass != null && !superclass.isObject) {
- ConstructorElement superConstructor =
- superclass.lookUpConstructor(superName, constructor.library);
- if (superConstructor != null) {
- if (superArguments == null) {
- superArguments = new NodeList<Expression>(null);
- }
- _evaluateSuperConstructorCall(node, fieldMap, superConstructor,
- superArguments, initializerVisitor, errorReporter);
- }
- }
- return new DartObjectImpl(definingClass, new GenericState(fieldMap));
- }
-
- void _evaluateSuperConstructorCall(AstNode node,
- HashMap<String, DartObjectImpl> fieldMap,
- ConstructorElement superConstructor, NodeList<Expression> superArguments,
- ConstantVisitor initializerVisitor, ErrorReporter errorReporter) {
- if (superConstructor != null && superConstructor.isConst) {
- DartObjectImpl evaluationResult = _evaluateConstructorCall(node,
- superArguments, superConstructor, initializerVisitor, errorReporter);
- if (evaluationResult != null) {
- fieldMap[GenericState.SUPERCLASS_FIELD] = evaluationResult;
- }
- }
- }
-
- /**
- * Attempt to follow the chain of factory redirections until a constructor is
- * reached which is not a const factory constructor. Return the constant
- * constructor which terminates the chain of factory redirections, if the
- * chain terminates. If there is a problem (e.g. a redirection can't be found,
- * or a cycle is encountered), the chain will be followed as far as possible
- * and then a const factory constructor will be returned.
- */
- ConstructorElement _followConstantRedirectionChain(
- ConstructorElement constructor) {
- HashSet<ConstructorElement> constructorsVisited =
- new HashSet<ConstructorElement>();
- while (true) {
- ConstructorElement redirectedConstructor =
- _getConstRedirectedConstructor(constructor);
- if (redirectedConstructor == null) {
- break;
- } else {
- ConstructorElement constructorBase = _getConstructorBase(constructor);
- constructorsVisited.add(constructorBase);
- ConstructorElement redirectedConstructorBase =
- _getConstructorBase(redirectedConstructor);
- if (constructorsVisited.contains(redirectedConstructorBase)) {
- // Cycle in redirecting factory constructors--this is not allowed
- // and is checked elsewhere--see
- // [ErrorVerifier.checkForRecursiveFactoryRedirect()]).
- break;
- }
- }
- constructor = redirectedConstructor;
- }
- return constructor;
+ evaluationEngine.computeConstantValue(constant);
}
/**
@@ -1142,70 +1264,30 @@
* in the given [cycle], each of which directly or indirectly references the
* constant.
*/
- void _generateCycleError(List<AstNode> cycle, AstNode constant) {
- // TODO(brianwilkerson) Implement this.
+ void _generateCycleError(
+ List<ConstantEvaluationTarget> cycle, ConstantEvaluationTarget constant) {
+ if (constant is VariableElement) {
+ RecordingErrorListener errorListener = new RecordingErrorListener();
+ ErrorReporter errorReporter =
+ new ErrorReporter(errorListener, constant.source);
+ // TODO(paulberry): It would be really nice if we could extract enough
+ // information from the 'cycle' argument to provide the user with a
+ // description of the cycle.
+ errorReporter.reportErrorForElement(
+ CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT, constant, []);
+ (constant as VariableElementImpl).evaluationResult =
+ new EvaluationResultImpl(null, errorListener.errors);
+ } else if (constant is ConstructorElement) {
+ // We don't report cycle errors on constructor declarations since there
+ // is nowhere to put the error information.
+ } else {
+ // Should not happen. Formal parameter defaults and annotations should
+ // never appear as part of a cycle because they can't be referred to.
+ assert(false);
+ AnalysisEngine.instance.logger.logError(
+ "Constant value computer trying to report a cycle error for a node of type ${constant.runtimeType}");
+ }
}
-
- /**
- * If [constructor] redirects to another const constructor, return the
- * const constructor it redirects to. Otherwise return `null`.
- */
- ConstructorElement _getConstRedirectedConstructor(
- ConstructorElement constructor) {
- if (!constructor.isFactory) {
- return null;
- }
- if (identical(constructor.enclosingElement.type, typeProvider.symbolType)) {
- // The dart:core.Symbol has a const factory constructor that redirects
- // to dart:_internal.Symbol. That in turn redirects to an external
- // const constructor, which we won't be able to evaluate.
- // So stop following the chain of redirections at dart:core.Symbol, and
- // let [evaluateInstanceCreationExpression] handle it specially.
- return null;
- }
- ConstructorElement redirectedConstructor =
- constructor.redirectedConstructor;
- if (redirectedConstructor == null) {
- // This can happen if constructor is an external factory constructor.
- return null;
- }
- if (!redirectedConstructor.isConst) {
- // Delegating to a non-const constructor--this is not allowed (and
- // is checked elsewhere--see
- // [ErrorVerifier.checkForRedirectToNonConstConstructor()]).
- return null;
- }
- return redirectedConstructor;
- }
-
- ConstructorElementImpl _getConstructorBase(ConstructorElement constructor) {
- while (constructor is ConstructorMember) {
- constructor = (constructor as ConstructorMember).baseElement;
- }
- return constructor;
- }
-
- /**
- * Check if the object [obj] matches the type [type] according to runtime type
- * checking rules.
- */
- bool _runtimeTypeMatch(DartObjectImpl obj, DartType type) {
- if (obj.isNull) {
- return true;
- }
- if (type.isUndefined) {
- return false;
- }
- return obj.type.isSubtypeOf(type);
- }
-
- /**
- * Determine whether the given string is a valid name for a public symbol
- * (i.e. whether it is allowed for a call to the Symbol constructor).
- */
- static bool isValidPublicSymbol(String name) => name.isEmpty ||
- name == "void" ||
- new JavaPatternMatcher(_PUBLIC_SYMBOL_PATTERN, name).matches();
}
/**
@@ -1267,9 +1349,9 @@
/**
* The type provider used to access the known types.
*/
- final TypeProvider _typeProvider;
+ final ConstantEvaluationEngine evaluationEngine;
- HashMap<String, DartObjectImpl> _lexicalEnvironment;
+ final HashMap<String, DartObjectImpl> _lexicalEnvironment;
/**
* Error reporter that we use to report errors accumulated while computing the
@@ -1283,49 +1365,25 @@
DartObjectComputer _dartObjectComputer;
/**
- * Initialize a newly created constant visitor. The [_typeProvider] is the
- * type provider used to access known types. The [_errorReporter] is used to
- * report errors found during evaluation.
+ * Initialize a newly created constant visitor. The [evaluationEngine] is
+ * used to evaluate instance creation expressions. The [lexicalEnvironment]
+ * is a map containing values which should override identifiers, or `null` if
+ * no overriding is necessary. The [_errorReporter] is used to report errors
+ * found during evaluation. The [validator] is used by unit tests to verify
+ * correct dependency analysis.
*/
- ConstantVisitor.con1(this._typeProvider, this._errorReporter) {
- this._lexicalEnvironment = null;
+ ConstantVisitor(this.evaluationEngine, this._errorReporter,
+ {HashMap<String, DartObjectImpl> lexicalEnvironment})
+ : _lexicalEnvironment = lexicalEnvironment {
this._dartObjectComputer =
- new DartObjectComputer(_errorReporter, _typeProvider);
+ new DartObjectComputer(_errorReporter, evaluationEngine.typeProvider);
}
/**
- * Initialize a newly created constant visitor. The [_typeProvider] is the
- * type provider used to access known types. The [lexicalEnvironment] is a map
- * containing values which should override identifiers, or `null` if no
- * overriding is necessary. The [_errorReporter] is used to report errors
- * found during evaluation.
+ * Convenience getter to gain access to the [evalationEngine]'s type
+ * provider.
*/
- ConstantVisitor.con2(this._typeProvider,
- HashMap<String, DartObjectImpl> lexicalEnvironment, this._errorReporter) {
- this._lexicalEnvironment = lexicalEnvironment;
- this._dartObjectComputer =
- new DartObjectComputer(_errorReporter, _typeProvider);
- }
-
- /**
- * This method is called just before retrieving an evaluation result from an
- * AST node. Unit tests will override it to introduce additional error
- * checking.
- */
- void beforeGetEvaluationResult(AstNode node) {}
-
- /**
- * Return `true` if the given [element] represents the `length` getter in
- * class 'String'.
- */
- bool isStringLength(Element element) {
- if (element is PropertyAccessorElement) {
- if (element.isGetter && element.name == 'length') {
- return element.enclosingElement == _typeProvider.stringType.element;
- }
- }
- return false;
- }
+ TypeProvider get _typeProvider => evaluationEngine.typeProvider;
@override
DartObjectImpl visitAdjacentStrings(AdjacentStrings node) {
@@ -1454,14 +1512,14 @@
_error(node, null);
return null;
}
- beforeGetEvaluationResult(node);
- EvaluationResultImpl result = node.evaluationResult;
- if (result != null) {
- return result.value;
+ ConstructorElement constructor = node.staticElement;
+ if (constructor == null) {
+ // Couldn't resolve the constructor so we can't compute a value. No
+ // problem - the error has already been reported.
+ return null;
}
- // TODO(brianwilkerson) Figure out which error to report.
- _error(node, null);
- return null;
+ return evaluationEngine.evaluateConstructorCall(
+ node, node.argumentList.arguments, constructor, this, _errorReporter);
}
@override
@@ -1600,17 +1658,16 @@
@override
DartObjectImpl visitPrefixedIdentifier(PrefixedIdentifier node) {
+ SimpleIdentifier prefixNode = node.prefix;
+ Element prefixElement = prefixNode.staticElement;
// String.length
- {
- Element element = node.staticElement;
- if (isStringLength(element)) {
- DartObjectImpl prefixResult = node.prefix.accept(this);
+ if (prefixElement is! PrefixElement && prefixElement is! ClassElement) {
+ DartObjectImpl prefixResult = node.prefix.accept(this);
+ if (_isStringLength(prefixResult, node.identifier)) {
return prefixResult.stringLength(_typeProvider);
}
}
// importPrefix.CONST
- SimpleIdentifier prefixNode = node.prefix;
- Element prefixElement = prefixNode.staticElement;
if (prefixElement is! PrefixElement) {
DartObjectImpl prefixResult = prefixNode.accept(this);
if (prefixResult == null) {
@@ -1647,12 +1704,13 @@
@override
DartObjectImpl visitPropertyAccess(PropertyAccess node) {
- Element element = node.propertyName.staticElement;
- if (isStringLength(element)) {
- DartObjectImpl prefixResult = node.realTarget.accept(this);
- return prefixResult.stringLength(_typeProvider);
+ if (node.target != null) {
+ DartObjectImpl prefixResult = node.target.accept(this);
+ if (_isStringLength(prefixResult, node.propertyName)) {
+ return prefixResult.stringLength(_typeProvider);
+ }
}
- return _getConstantValue(node, element);
+ return _getConstantValue(node, node.propertyName.staticElement);
}
@override
@@ -1718,7 +1776,7 @@
}
if (element is VariableElementImpl) {
VariableElementImpl variableElementImpl = element;
- beforeGetEvaluationResult(node);
+ evaluationEngine.validator.beforeGetEvaluationResult(element);
EvaluationResultImpl value = variableElementImpl.evaluationResult;
if (variableElementImpl.isConst && value != null) {
return value.value;
@@ -1743,6 +1801,18 @@
}
/**
+ * Return `true` if the given [targetResult] represents a string and the
+ * [identifier] is "length".
+ */
+ bool _isStringLength(
+ DartObjectImpl targetResult, SimpleIdentifier identifier) {
+ if (targetResult == null || targetResult.type != _typeProvider.stringType) {
+ return false;
+ }
+ return identifier.name == 'length';
+ }
+
+ /**
* Return the value of the given [expression], or a representation of 'null'
* if the expression cannot be evaluated.
*/
@@ -2145,13 +2215,13 @@
Expression node, EvaluationResultImpl evaluationResult) {
if (evaluationResult.value != null) {
try {
- return new EvaluationResultImpl.con1(
+ return new EvaluationResultImpl(
evaluationResult.value.stringLength(_typeProvider));
} on EvaluationException catch (exception) {
_errorReporter.reportErrorForNode(exception.errorCode, node);
}
}
- return new EvaluationResultImpl.con1(null);
+ return new EvaluationResultImpl(null);
}
DartObjectImpl times(BinaryExpression node, DartObjectImpl leftOperand,
@@ -3388,10 +3458,16 @@
*/
final DartObjectImpl value;
+ EvaluationResultImpl(this.value, [List<AnalysisError> errors]) {
+ this._errors = errors == null ? <AnalysisError>[] : errors;
+ }
+
+ @deprecated // Use new EvaluationResultImpl(value)
EvaluationResultImpl.con1(this.value) {
this._errors = new List<AnalysisError>(0);
}
+ @deprecated // Use new EvaluationResultImpl(value, errors)
EvaluationResultImpl.con2(this.value, List<AnalysisError> errors) {
this._errors = errors;
}
@@ -4859,60 +4935,38 @@
*/
class ReferenceFinder extends RecursiveAstVisitor<Object> {
/**
- * The element representing the construct that will be visited.
+ * The callback which should be used to report any dependencies that were
+ * found.
*/
- final AstNode _source;
-
- /**
- * A graph in which the nodes are the constant variables and the edges are
- * from each variable to the other constant variables that are referenced in
- * the head's initializer.
- */
- final DirectedGraph<AstNode> _referenceGraph;
-
- /**
- * A table mapping constant variables to the declarations of those variables.
- */
- final HashMap<PotentiallyConstVariableElement, VariableDeclaration> _variableDeclarationMap;
-
- /**
- * A table mapping constant constructors to the declarations of those
- * constructors.
- */
- final HashMap<ConstructorElement, ConstructorDeclaration> _constructorDeclarationMap;
+ final ReferenceFinderCallback _callback;
/**
* Initialize a newly created reference finder to find references from a given
* variable to other variables and to add those references to the given graph.
- * The [source] is the element representing the variable whose initializer
- * will be visited. The [referenceGraph] is a graph recording which variables
- * (heads) reference which other variables (tails) in their initializers. The
- * [variableDeclarationMap] is a table mapping constant variables to the
- * declarations of those variables. The [constructorDeclarationMap] is a table
- * mapping constant constructors to the declarations of those constructors.
+ * The [_callback] will be invoked for every dependency found.
*/
- ReferenceFinder(this._source, this._referenceGraph,
- this._variableDeclarationMap, this._constructorDeclarationMap);
+ ReferenceFinder(this._callback);
@override
Object visitInstanceCreationExpression(InstanceCreationExpression node) {
if (node.isConst) {
- _referenceGraph.addEdge(_source, node);
+ ConstructorElement constructor =
+ ConstantEvaluationEngine._getConstructorBase(node.staticElement);
+ if (constructor != null) {
+ _callback(constructor);
+ }
}
- return null;
+ return super.visitInstanceCreationExpression(node);
}
@override
Object visitRedirectingConstructorInvocation(
RedirectingConstructorInvocation node) {
super.visitRedirectingConstructorInvocation(node);
- ConstructorElement target = node.staticElement;
+ ConstructorElement target =
+ ConstantEvaluationEngine._getConstructorBase(node.staticElement);
if (target != null && target.isConst) {
- ConstructorDeclaration targetDeclaration =
- _constructorDeclarationMap[target];
- if (targetDeclaration != null) {
- _referenceGraph.addEdge(_source, targetDeclaration);
- }
+ _callback(target);
}
return null;
}
@@ -4925,16 +4979,7 @@
}
if (element is VariableElement) {
if (element.isConst) {
- VariableDeclaration variableDeclaration =
- _variableDeclarationMap[element];
- // The declaration will be null when the variable is not defined in the
- // compilation units that were used to produce the
- // variableDeclarationMap. In such cases, the variable should already
- // have a value associated with it, but we don't bother to check because
- // there's nothing we can do about it at this point.
- if (variableDeclaration != null) {
- _referenceGraph.addEdge(_source, variableDeclaration);
- }
+ _callback(element);
}
}
return null;
@@ -4943,18 +4988,10 @@
@override
Object visitSuperConstructorInvocation(SuperConstructorInvocation node) {
super.visitSuperConstructorInvocation(node);
- ConstructorElement constructor = node.staticElement;
+ ConstructorElement constructor =
+ ConstantEvaluationEngine._getConstructorBase(node.staticElement);
if (constructor != null && constructor.isConst) {
- ConstructorDeclaration constructorDeclaration =
- _constructorDeclarationMap[constructor];
- // The declaration will be null when the constructor is not defined in the
- // compilation units that were used to produce the
- // constructorDeclarationMap. In such cases, the constructor should
- // already have its initializer AST's stored in it, but we don't bother
- // to check because there's nothing we can do about it at this point.
- if (constructorDeclaration != null) {
- _referenceGraph.addEdge(_source, constructorDeclaration);
- }
+ _callback(constructor);
}
return null;
}
diff --git a/pkg/analyzer/lib/src/generated/element.dart b/pkg/analyzer/lib/src/generated/element.dart
index 46b6d03..f7278d4 100644
--- a/pkg/analyzer/lib/src/generated/element.dart
+++ b/pkg/analyzer/lib/src/generated/element.dart
@@ -10,7 +10,9 @@
import 'dart:collection';
import 'package:analyzer/src/generated/utilities_general.dart';
-import 'package:analyzer/task/model.dart' show AnalysisTarget;
+import 'package:analyzer/src/task/dart.dart';
+import 'package:analyzer/task/model.dart'
+ show AnalysisTarget, ConstantEvaluationTarget;
import 'ast.dart';
import 'constant.dart' show EvaluationResultImpl;
@@ -1276,6 +1278,15 @@
Source source;
/**
+ * The source of the library containing this compilation unit.
+ *
+ * This is the same as the source of the containing [LibraryElement],
+ * except that it does not require the containing [LibraryElement] to be
+ * computed.
+ */
+ Source librarySource;
+
+ /**
* A list containing all of the top-level accessors (getters and setters)
* contained in this compilation unit.
*/
@@ -1558,16 +1569,29 @@
EvaluationResultImpl _result;
/**
+ * Initialize a newly created synthetic field element to have the given
+ * [name] and [offset].
+ */
+ ConstFieldElementImpl(String name, int offset) : super(name, offset);
+
+ /**
* Initialize a newly created field element to have the given [name].
*/
+ @deprecated // Use new ConstFieldElementImpl.forNode(name)
ConstFieldElementImpl.con1(Identifier name) : super.forNode(name);
/**
* Initialize a newly created synthetic field element to have the given
* [name] and [offset].
*/
+ @deprecated // Use new ConstFieldElementImpl(name, offset)
ConstFieldElementImpl.con2(String name, int offset) : super(name, offset);
+ /**
+ * Initialize a newly created field element to have the given [name].
+ */
+ ConstFieldElementImpl.forNode(Identifier name) : super.forNode(name);
+
@override
EvaluationResultImpl get evaluationResult => _result;
@@ -1613,7 +1637,7 @@
* class.
*/
abstract class ConstructorElement
- implements ClassMemberElement, ExecutableElement {
+ implements ClassMemberElement, ExecutableElement, ConstantEvaluationTarget {
/**
* An empty list of constructor elements.
*/
@@ -2065,7 +2089,7 @@
* A [FieldFormalParameterElementImpl] for parameters that have an initializer.
*/
class DefaultFieldFormalParameterElementImpl
- extends FieldFormalParameterElementImpl {
+ extends FieldFormalParameterElementImpl with ConstVariableElement {
/**
* The result of evaluating this variable's initializer.
*/
@@ -2088,7 +2112,8 @@
/**
* A [ParameterElement] for parameters that have an initializer.
*/
-class DefaultParameterElementImpl extends ParameterElementImpl {
+class DefaultParameterElementImpl extends ParameterElementImpl
+ with ConstVariableElement {
/**
* The result of evaluating this variable's initializer.
*/
@@ -2840,7 +2865,7 @@
return null;
}
int offset = nameOffset;
- AstNode node = new NodeLocator.con1(offset).searchWithin(unit);
+ AstNode node = new NodeLocator(offset).searchWithin(unit);
if (node == null) {
return null;
}
@@ -4569,16 +4594,31 @@
* Initialize a newly created function type to be declared by the given
* [element].
*/
+ FunctionTypeImpl(ExecutableElement element) : super(element, null);
+
+ /**
+ * Initialize a newly created function type to be declared by the given
+ * [element].
+ */
+ @deprecated // Use new FunctionTypeImpl(element)
FunctionTypeImpl.con1(ExecutableElement element) : super(element, null);
/**
* Initialize a newly created function type to be declared by the given
* [element].
*/
+ @deprecated // Use new FunctionTypeImpl.forTypedef(element)
FunctionTypeImpl.con2(FunctionTypeAliasElement element)
: super(element, element == null ? null : element.name);
/**
+ * Initialize a newly created function type to be declared by the given
+ * [element].
+ */
+ FunctionTypeImpl.forTypedef(FunctionTypeAliasElement element)
+ : super(element, element == null ? null : element.name);
+
+ /**
* Return the base parameter elements of this function element.
*/
List<ParameterElement> get baseParameters {
@@ -5220,8 +5260,8 @@
}
Element element = this.element;
FunctionTypeImpl newType = (element is ExecutableElement)
- ? new FunctionTypeImpl.con1(element)
- : new FunctionTypeImpl.con2(element as FunctionTypeAliasElement);
+ ? new FunctionTypeImpl(element)
+ : new FunctionTypeImpl.forTypedef(element as FunctionTypeAliasElement);
newType.typeArguments =
TypeImpl.substitute(typeArguments, argumentTypes, parameterTypes);
return newType;
@@ -6035,7 +6075,7 @@
lubArguments[i] = DynamicTypeImpl.instance;
}
}
- InterfaceTypeImpl lub = new InterfaceTypeImpl.con1(firstElement);
+ InterfaceTypeImpl lub = new InterfaceTypeImpl(firstElement);
lub.typeArguments = lubArguments;
return lub;
}
@@ -6053,6 +6093,12 @@
/**
* Initialize a newly created type to be declared by the given [element].
*/
+ InterfaceTypeImpl(ClassElement element) : super(element, element.displayName);
+
+ /**
+ * Initialize a newly created type to be declared by the given [element].
+ */
+ @deprecated // Use new InterfaceTypeImpl(element)
InterfaceTypeImpl.con1(ClassElement element)
: super(element, element.displayName);
@@ -6060,8 +6106,15 @@
* Initialize a newly created type to have the given [name]. This constructor
* should only be used in cases where there is no declaration of the type.
*/
+ @deprecated // Use new InterfaceTypeImpl.named(name)
InterfaceTypeImpl.con2(String name) : super(null, name);
+ /**
+ * Initialize a newly created type to have the given [name]. This constructor
+ * should only be used in cases where there is no declaration of the type.
+ */
+ InterfaceTypeImpl.named(String name) : super(null, name);
+
@override
List<PropertyAccessorElement> get accessors {
List<PropertyAccessorElement> accessors = element.accessors;
@@ -6610,7 +6663,7 @@
if (JavaArrays.equals(newTypeArguments, typeArguments)) {
return this;
}
- InterfaceTypeImpl newType = new InterfaceTypeImpl.con1(element);
+ InterfaceTypeImpl newType = new InterfaceTypeImpl(element);
newType.typeArguments = newTypeArguments;
return newType;
}
@@ -7018,6 +7071,7 @@
* [unit].
*/
void set definingCompilationUnit(CompilationUnitElement unit) {
+ assert((unit as CompilationUnitElementImpl).librarySource == unit.source);
(unit as CompilationUnitElementImpl).enclosingElement = this;
this._definingCompilationUnit = unit;
}
@@ -7160,7 +7214,7 @@
function.synthetic = true;
function.enclosingElement = this;
function.returnType = loadLibraryReturnType;
- function.type = new FunctionTypeImpl.con1(function);
+ function.type = new FunctionTypeImpl(function);
_loadLibraryFunction = function;
}
return _loadLibraryFunction;
@@ -7209,6 +7263,8 @@
*/
void set parts(List<CompilationUnitElement> parts) {
for (CompilationUnitElement compilationUnit in parts) {
+ assert((compilationUnit as CompilationUnitElementImpl).librarySource ==
+ source);
(compilationUnit as CompilationUnitElementImpl).enclosingElement = this;
}
this._parts = parts;
@@ -8307,7 +8363,8 @@
/**
* A parameter defined within an executable element.
*/
-abstract class ParameterElement implements LocalElement, VariableElement {
+abstract class ParameterElement
+ implements LocalElement, VariableElement, ConstantEvaluationTarget {
/**
* An empty list of parameter elements.
*/
@@ -8343,7 +8400,7 @@
* A concrete implementation of a [ParameterElement].
*/
class ParameterElementImpl extends VariableElementImpl
- implements ParameterElement {
+ with PotentiallyConstVariableElement implements ParameterElement {
/**
* An empty list of parameter elements.
*/
@@ -8678,7 +8735,8 @@
*
* This class is not intended to be part of the public API for analyzer.
*/
-abstract class PotentiallyConstVariableElement {
+abstract class PotentiallyConstVariableElement
+ implements VariableElementImpl, ConstantEvaluationTarget {
/**
* If this element represents a constant variable, and it has an initializer,
* a copy of the initializer for the constant. Otherwise `null`.
@@ -10078,7 +10136,7 @@
/**
* A variable. There are concrete subclasses for different kinds of variables.
*/
-abstract class VariableElement implements Element {
+abstract class VariableElement implements Element, ConstantEvaluationTarget {
/**
* An empty list of variable elements.
*/
diff --git a/pkg/analyzer/lib/src/generated/element_resolver.dart b/pkg/analyzer/lib/src/generated/element_resolver.dart
index 33d1617..4754e33 100644
--- a/pkg/analyzer/lib/src/generated/element_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/element_resolver.dart
@@ -2009,8 +2009,8 @@
// Class(args)
if (element1 is ClassElement) {
ClassElement classElement = element1;
- constructor = new InterfaceTypeImpl.con1(classElement)
- .lookUpConstructor(null, _definingLibrary);
+ constructor = new InterfaceTypeImpl(classElement).lookUpConstructor(
+ null, _definingLibrary);
}
}
//
@@ -2038,8 +2038,8 @@
// Class.constructor(args)
if (element1 is ClassElement) {
ClassElement classElement = element1;
- constructor = new InterfaceTypeImpl.con1(classElement)
- .lookUpConstructor(nameNode2.name, _definingLibrary);
+ constructor = new InterfaceTypeImpl(classElement).lookUpConstructor(
+ nameNode2.name, _definingLibrary);
nameNode2.staticElement = constructor;
}
}
@@ -2062,8 +2062,8 @@
return;
}
// prefix.Class.constructor(args)
- constructor = new InterfaceTypeImpl.con1(classElement)
- .lookUpConstructor(name3, _definingLibrary);
+ constructor = new InterfaceTypeImpl(classElement).lookUpConstructor(
+ name3, _definingLibrary);
nameNode3.staticElement = constructor;
}
}
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index 2d482d8..234e817 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -19,6 +19,7 @@
import 'package:analyzer/src/services/lint.dart';
import 'package:analyzer/src/task/manager.dart';
import 'package:analyzer/src/task/task_dart.dart';
+import 'package:analyzer/task/dart.dart';
import 'package:analyzer/task/model.dart';
import '../../instrumentation/instrumentation.dart';
@@ -919,7 +920,7 @@
/**
* A list containing sources for which data should not be flushed.
*/
- List<Source> _priorityOrder = Source.EMPTY_ARRAY;
+ List<Source> _priorityOrder = Source.EMPTY_LIST;
/**
* A map from all sources for which there are futures pending to a list of
@@ -1033,6 +1034,9 @@
}
@override
+ AnalysisCache get analysisCache => _cache;
+
+ @override
AnalysisOptions get analysisOptions => _options;
@override
@@ -1090,13 +1094,13 @@
@override
void set analysisPriorityOrder(List<Source> sources) {
if (sources == null || sources.isEmpty) {
- _priorityOrder = Source.EMPTY_ARRAY;
+ _priorityOrder = Source.EMPTY_LIST;
} else {
while (sources.remove(null)) {
// Nothing else to do.
}
if (sources.isEmpty) {
- _priorityOrder = Source.EMPTY_ARRAY;
+ _priorityOrder = Source.EMPTY_LIST;
}
//
// Cap the size of the priority list to being less than the cache size.
@@ -1461,14 +1465,6 @@
}
@override
- void addSourceInfo(Source source, SourceEntry info) {
- // This implementation assumes that the access to the cache does not need to
- // be synchronized because no other object can have access to this context
- // while this method is being invoked.
- _cache.put(source, info);
- }
-
- @override
void applyAnalysisDelta(AnalysisDelta delta) {
ChangeSet changeSet = new ChangeSet();
delta.analysisLevels.forEach((Source source, AnalysisLevel level) {
@@ -1539,7 +1535,7 @@
if (unit == null) {
return null;
}
- NodeLocator locator = new NodeLocator.con1(element.nameOffset);
+ NodeLocator locator = new NodeLocator(element.nameOffset);
AstNode nameNode = locator.searchWithin(unit);
while (nameNode != null) {
if (nameNode is AnnotatedNode) {
@@ -1639,7 +1635,7 @@
@override
List<Source> computeExportedLibraries(Source source) => _getDartParseData2(
- source, DartEntry.EXPORTED_LIBRARIES, Source.EMPTY_ARRAY);
+ source, DartEntry.EXPORTED_LIBRARIES, Source.EMPTY_LIST);
@override
HtmlElement computeHtmlElement(Source source) =>
@@ -1647,7 +1643,7 @@
@override
List<Source> computeImportedLibraries(Source source) => _getDartParseData2(
- source, DartEntry.IMPORTED_LIBRARIES, Source.EMPTY_ARRAY);
+ source, DartEntry.IMPORTED_LIBRARIES, Source.EMPTY_LIST);
@override
SourceKind computeKindOf(Source source) {
@@ -1801,26 +1797,6 @@
return source.exists();
}
- Element findElementById(int id) {
- _ElementByIdFinder finder = new _ElementByIdFinder(id);
- try {
- MapIterator<Source, SourceEntry> iterator = _cache.iterator();
- while (iterator.moveNext()) {
- SourceEntry sourceEntry = iterator.value;
- if (sourceEntry.kind == SourceKind.LIBRARY) {
- DartEntry dartEntry = sourceEntry;
- LibraryElement library = dartEntry.getValue(DartEntry.ELEMENT);
- if (library != null) {
- library.accept(finder);
- }
- }
- }
- } on _ElementByIdFinderException {
- return finder.result;
- }
- return null;
- }
-
@override
cache.CacheEntry getCacheEntry(AnalysisTarget target) {
return null;
@@ -1919,7 +1895,7 @@
List<Source> getHtmlFilesReferencing(Source source) {
SourceKind sourceKind = getKindOf(source);
if (sourceKind == null) {
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
List<Source> htmlSources = new List<Source>();
while (true) {
@@ -1952,7 +1928,7 @@
break;
}
if (htmlSources.isEmpty) {
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
return htmlSources;
}
@@ -1972,7 +1948,7 @@
if (sourceEntry is DartEntry) {
return sourceEntry.containingLibraries;
}
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
@override
@@ -1995,7 +1971,7 @@
}
}
if (dependentLibraries.isEmpty) {
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
return dependentLibraries;
}
@@ -2007,7 +1983,7 @@
HtmlEntry htmlEntry = sourceEntry;
return htmlEntry.getValue(HtmlEntry.REFERENCED_LIBRARIES);
}
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
@override
@@ -2301,9 +2277,9 @@
dartEntry.setState(SourceEntry.CONTENT, CacheState.FLUSHED);
dartEntry.setValue(SourceEntry.LINE_INFO, new LineInfo(<int>[0]));
// DartEntry.ELEMENT - set in recordElementData
- dartEntry.setValue(DartEntry.EXPORTED_LIBRARIES, Source.EMPTY_ARRAY);
- dartEntry.setValue(DartEntry.IMPORTED_LIBRARIES, Source.EMPTY_ARRAY);
- dartEntry.setValue(DartEntry.INCLUDED_PARTS, Source.EMPTY_ARRAY);
+ dartEntry.setValue(DartEntry.EXPORTED_LIBRARIES, Source.EMPTY_LIST);
+ dartEntry.setValue(DartEntry.IMPORTED_LIBRARIES, Source.EMPTY_LIST);
+ dartEntry.setValue(DartEntry.INCLUDED_PARTS, Source.EMPTY_LIST);
// DartEntry.IS_CLIENT - set in recordElementData
// DartEntry.IS_LAUNCHABLE - set in recordElementData
dartEntry.setValue(DartEntry.PARSE_ERRORS, AnalysisError.NO_ERRORS);
@@ -3278,7 +3254,7 @@
if (nullIfEmpty) {
return null;
}
- return ChangeNoticeImpl.EMPTY_ARRAY;
+ return ChangeNoticeImpl.EMPTY_LIST;
}
List<ChangeNotice> notices = new List.from(_pendingNotices.values);
_pendingNotices.clear();
@@ -4057,28 +4033,6 @@
}
}
- /**
- * Record the results produced by performing a [task] and return the cache
- * entry associated with the results.
- */
- DartEntry _recordBuildUnitElementTask(BuildUnitElementTask task) {
- Source source = task.source;
- Source library = task.library;
- DartEntry dartEntry = _cache.get(source);
- CaughtException thrownException = task.exception;
- if (thrownException != null) {
- dartEntry.recordBuildElementErrorInLibrary(library, thrownException);
- throw new AnalysisException('<rethrow>', thrownException);
- }
- dartEntry.setValueInLibrary(DartEntry.BUILT_UNIT, library, task.unit);
- dartEntry.setValueInLibrary(
- DartEntry.BUILT_ELEMENT, library, task.unitElement);
- ChangeNoticeImpl notice = _getNotice(source);
- LineInfo lineInfo = dartEntry.getValue(SourceEntry.LINE_INFO);
- notice.setErrors(dartEntry.allErrors, lineInfo);
- return dartEntry;
- }
-
// /**
// * Notify all of the analysis listeners that the given source is no longer included in the set of
// * sources that are being analyzed.
@@ -4158,6 +4112,28 @@
// }
/**
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
+ */
+ DartEntry _recordBuildUnitElementTask(BuildUnitElementTask task) {
+ Source source = task.source;
+ Source library = task.library;
+ DartEntry dartEntry = _cache.get(source);
+ CaughtException thrownException = task.exception;
+ if (thrownException != null) {
+ dartEntry.recordBuildElementErrorInLibrary(library, thrownException);
+ throw new AnalysisException('<rethrow>', thrownException);
+ }
+ dartEntry.setValueInLibrary(DartEntry.BUILT_UNIT, library, task.unit);
+ dartEntry.setValueInLibrary(
+ DartEntry.BUILT_ELEMENT, library, task.unitElement);
+ ChangeNoticeImpl notice = _getNotice(source);
+ LineInfo lineInfo = dartEntry.getValue(SourceEntry.LINE_INFO);
+ notice.setErrors(dartEntry.allErrors, lineInfo);
+ return dartEntry;
+ }
+
+ /**
* Given a [dartEntry] and a [library] element, record the library element and
* other information gleaned from the element in the cache entry.
*/
@@ -5347,17 +5323,17 @@
List<Source> _getSources(Source source, DartEntry dartEntry,
DataDescriptor<List<Source>> descriptor) {
if (dartEntry == null) {
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
CacheState exportState = dartEntry.getState(descriptor);
if (exportState == CacheState.ERROR) {
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
} else if (exportState != CacheState.VALID) {
if (_taskData == null) {
_taskData =
AnalysisContextImpl_this._createParseDartTask(source, dartEntry);
}
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
return dartEntry.getValue(descriptor);
}
@@ -5798,6 +5774,9 @@
if (_taskManager == null) {
_taskManager = new TaskManager();
_taskManager.addTaskDescriptors(enginePlugin.taskDescriptors);
+ // TODO(brianwilkerson) Create a way to associate different results with
+ // different file suffixes, then make this pluggable.
+ _taskManager.addGeneralResult(DART_ERRORS);
}
return _taskManager;
}
@@ -6106,7 +6085,7 @@
* The default value for enabling enum support.
*/
@deprecated
- static bool DEFAULT_ENABLE_ENUM = false;
+ static bool DEFAULT_ENABLE_ENUM = true;
/**
* A predicate indicating whether analysis is to parse and analyze function
@@ -6193,6 +6172,7 @@
* Initialize a newly created set of analysis options to have the same values
* as those in the given set of analysis [options].
*/
+ @deprecated // Use new AnalysisOptionsImpl.from(options)
AnalysisOptionsImpl.con1(AnalysisOptions options) {
analyzeFunctionBodiesPredicate = options.analyzeFunctionBodiesPredicate;
cacheSize = options.cacheSize;
@@ -6209,6 +6189,26 @@
preserveComments = options.preserveComments;
}
+ /**
+ * Initialize a newly created set of analysis options to have the same values
+ * as those in the given set of analysis [options].
+ */
+ AnalysisOptionsImpl.from(AnalysisOptions options) {
+ analyzeFunctionBodiesPredicate = options.analyzeFunctionBodiesPredicate;
+ cacheSize = options.cacheSize;
+ dart2jsHint = options.dart2jsHint;
+ enableNullAwareOperators = options.enableNullAwareOperators;
+ enableStrictCallChecks = options.enableStrictCallChecks;
+ generateImplicitErrors = options.generateImplicitErrors;
+ generateSdkErrors = options.generateSdkErrors;
+ hint = options.hint;
+ incremental = options.incremental;
+ incrementalApi = options.incrementalApi;
+ incrementalValidation = options.incrementalValidation;
+ lint = options.lint;
+ preserveComments = options.preserveComments;
+ }
+
bool get analyzeFunctionBodies {
if (identical(analyzeFunctionBodiesPredicate, _analyzeAllFunctionBodies)) {
return true;
@@ -6861,7 +6861,7 @@
/**
* An empty list of change notices.
*/
- static const List<ChangeNoticeImpl> EMPTY_ARRAY = const <ChangeNoticeImpl>[];
+ static const List<ChangeNoticeImpl> EMPTY_LIST = const <ChangeNoticeImpl>[];
/**
* The source for which the result is being reported.
@@ -7252,7 +7252,7 @@
*/
static final DataDescriptor<List<Source>> CONTAINING_LIBRARIES =
new DataDescriptor<List<Source>>(
- "DartEntry.CONTAINING_LIBRARIES", Source.EMPTY_ARRAY);
+ "DartEntry.CONTAINING_LIBRARIES", Source.EMPTY_LIST);
/**
* The data descriptor representing the library element for the library. This
@@ -7269,7 +7269,7 @@
*/
static final DataDescriptor<List<Source>> EXPORTED_LIBRARIES =
new DataDescriptor<List<Source>>(
- "DartEntry.EXPORTED_LIBRARIES", Source.EMPTY_ARRAY);
+ "DartEntry.EXPORTED_LIBRARIES", Source.EMPTY_LIST);
/**
* The data descriptor representing the hints resulting from auditing the
@@ -7286,7 +7286,7 @@
*/
static final DataDescriptor<List<Source>> IMPORTED_LIBRARIES =
new DataDescriptor<List<Source>>(
- "DartEntry.IMPORTED_LIBRARIES", Source.EMPTY_ARRAY);
+ "DartEntry.IMPORTED_LIBRARIES", Source.EMPTY_LIST);
/**
* The data descriptor representing the list of included parts. This data is
@@ -7295,7 +7295,7 @@
*/
static final DataDescriptor<List<Source>> INCLUDED_PARTS =
new DataDescriptor<List<Source>>(
- "DartEntry.INCLUDED_PARTS", Source.EMPTY_ARRAY);
+ "DartEntry.INCLUDED_PARTS", Source.EMPTY_LIST);
/**
* The data descriptor representing the client flag. This data is only
@@ -8270,9 +8270,9 @@
}
}
StringLiteral uriLiteral = directive.uri;
- errorListener.onError(new AnalysisError.con2(librarySource,
- uriLiteral.offset, uriLiteral.length,
- CompileTimeErrorCode.URI_DOES_NOT_EXIST, [directive.uriContent]));
+ errorListener.onError(new AnalysisError(librarySource, uriLiteral.offset,
+ uriLiteral.length, CompileTimeErrorCode.URI_DOES_NOT_EXIST,
+ [directive.uriContent]));
}
}
@@ -8496,8 +8496,8 @@
AnalysisEngine.instance.instrumentationService.logFileRead(
source.fullName, _modificationTime, _content);
} catch (exception, stackTrace) {
- errors.add(new AnalysisError.con1(
- source, ScannerErrorCode.UNABLE_GET_CONTENT, [exception]));
+ errors.add(new AnalysisError(
+ source, 0, 0, ScannerErrorCode.UNABLE_GET_CONTENT, [exception]));
throw new AnalysisException("Could not get contents of $source",
new CaughtException(exception, stackTrace));
}
@@ -8547,7 +8547,7 @@
*/
static final DataDescriptor<List<Source>> REFERENCED_LIBRARIES =
new DataDescriptor<List<Source>>(
- "HtmlEntry.REFERENCED_LIBRARIES", Source.EMPTY_ARRAY);
+ "HtmlEntry.REFERENCED_LIBRARIES", Source.EMPTY_LIST);
/**
* The data descriptor representing the errors resulting from resolving the
@@ -9019,6 +9019,14 @@
*/
abstract class InternalAnalysisContext implements AnalysisContext {
/**
+ * A table mapping the sources known to the context to the information known
+ * about the source.
+ *
+ * TODO(scheglov) add the type, once we have only one cache.
+ */
+ dynamic get analysisCache;
+
+ /**
* Allow the client to supply its own content cache. This will take the
* place of the content cache created by default, allowing clients to share
* the content cache between contexts.
@@ -9067,11 +9075,6 @@
TypeResolverVisitorFactory get typeResolverVisitorFactory;
/**
- * Add the given [source] with the given [information] to this context.
- */
- void addSourceInfo(Source source, SourceEntry information);
-
- /**
* Return a list containing the sources of the libraries that are exported by
* the library with the given [source]. The list will be empty if the given
* source is invalid, if the given source does not represent a library, or if
@@ -9184,7 +9187,7 @@
* Log the given [exception] as one representing an error. The [message] is an
* explanation of why the error occurred or what it means.
*/
- @deprecated
+ @deprecated // Use logError(message, exception)
void logError2(String message, Object exception);
/**
@@ -9198,7 +9201,7 @@
* Log the given [exception] as one representing an informational message. The
* [message] is an explanation of why the error occurred or what it means.
*/
- @deprecated
+ @deprecated // Use logInformation(message, exception)
void logInformation2(String message, Object exception);
}
@@ -9427,7 +9430,7 @@
List<Source> _toArray(HashSet<Source> sources) {
int size = sources.length;
if (size == 0) {
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
return new List.from(sources);
}
@@ -9466,15 +9469,13 @@
return null;
}
if (code == UriValidationCode.URI_WITH_INTERPOLATION) {
- errorListener.onError(new AnalysisError.con2(librarySource,
- uriLiteral.offset, uriLiteral.length,
- CompileTimeErrorCode.URI_WITH_INTERPOLATION));
+ errorListener.onError(new AnalysisError(librarySource, uriLiteral.offset,
+ uriLiteral.length, CompileTimeErrorCode.URI_WITH_INTERPOLATION));
return null;
}
if (code == UriValidationCode.INVALID_URI) {
- errorListener.onError(new AnalysisError.con2(librarySource,
- uriLiteral.offset, uriLiteral.length,
- CompileTimeErrorCode.INVALID_URI, [uriContent]));
+ errorListener.onError(new AnalysisError(librarySource, uriLiteral.offset,
+ uriLiteral.length, CompileTimeErrorCode.INVALID_URI, [uriContent]));
return null;
}
throw new RuntimeException(
@@ -9524,7 +9525,7 @@
/**
* A list containing the sources of the libraries that are referenced within the HTML.
*/
- List<Source> _referencedLibraries = Source.EMPTY_ARRAY;
+ List<Source> _referencedLibraries = Source.EMPTY_LIST;
/**
* Initialize a newly created task to perform analysis within the given context.
@@ -9560,7 +9561,7 @@
List<Source> libraries = new List<Source>();
_unit.accept(new ParseHtmlTask_getLibrarySources(this, libraries));
if (libraries.isEmpty) {
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
return libraries;
}
@@ -11689,21 +11690,3 @@
return pendingFuture.future;
}
}
-
-class _ElementByIdFinder extends GeneralizingElementVisitor {
- final int _id;
- Element result;
-
- _ElementByIdFinder(this._id);
-
- @override
- visitElement(Element element) {
- if (element.id == _id) {
- result = element;
- throw new _ElementByIdFinderException();
- }
- super.visitElement(element);
- }
-}
-
-class _ElementByIdFinderException {}
diff --git a/pkg/analyzer/lib/src/generated/error.dart b/pkg/analyzer/lib/src/generated/error.dart
index 9a83ed4..13dd77c 100644
--- a/pkg/analyzer/lib/src/generated/error.dart
+++ b/pkg/analyzer/lib/src/generated/error.dart
@@ -89,21 +89,12 @@
bool isStaticOnly = false;
/**
- * Initialize a newly created analysis error for the specified [source]. The
- * error will have the given [errorCode] and the list of [arguments] will be
- * used to complete the message. The error has no location information.
+ * Initialize a newly created analysis error. The error is associated with the
+ * given [source] and is located at the given [offset] with the given
+ * [length]. The error will have the given [errorCode] and the list of
+ * [arguments] will be used to complete the message.
*/
- AnalysisError.con1(this.source, this.errorCode, [List<Object> arguments]) {
- this._message = formatList(errorCode.message, arguments);
- }
-
- /**
- * Initialize a newly created analysis error for the specified [source] at the
- * given [offset] with the given [length]. The error will have the given
- * [errorCode] and the list of [arguments] will be used to complete the
- * message.
- */
- AnalysisError.con2(this.source, this.offset, int length, this.errorCode,
+ AnalysisError(this.source, this.offset, int length, this.errorCode,
[List<Object> arguments]) {
this._length = length;
this._message = formatList(errorCode.message, arguments);
@@ -114,6 +105,27 @@
}
/**
+ * Initialize a newly created analysis error for the specified [source]. The
+ * error will have the given [errorCode] and the list of [arguments] will be
+ * used to complete the message. The error has no location information.
+ */
+ @deprecated // Use new AnalysisError(source, 0, 0, errorCode, arguments)
+ AnalysisError.con1(Source source, ErrorCode errorCode,
+ [List<Object> arguments])
+ : this(source, 0, 0, errorCode, arguments);
+
+ /**
+ * Initialize a newly created analysis error for the specified [source] at the
+ * given [offset] with the given [length]. The error will have the given
+ * [errorCode] and the list of [arguments] will be used to complete the
+ * message.
+ */
+ @deprecated // Use new AnalysisError(source, offset, length, errorCode, arguments)
+ AnalysisError.con2(Source source, int offset, int length, ErrorCode errorCode,
+ [List<Object> arguments])
+ : this(source, offset, length, errorCode, arguments);
+
+ /**
* Return the template used to create the correction to be displayed for this
* error, or `null` if there is no correction information for this error. The
* correction should indicate how the user can fix the error.
@@ -191,6 +203,18 @@
buffer.write(_message);
return buffer.toString();
}
+
+ /**
+ * Merge all of the errors in the lists in the given list of [errorLists] into
+ * a single list of errors.
+ */
+ static List<AnalysisError> mergeLists(List<List<AnalysisError>> errorLists) {
+ List<AnalysisError> errors = <AnalysisError>[];
+ for (List<AnalysisError> errorList in errorLists) {
+ errors.addAll(errorList);
+ }
+ return errors;
+ }
}
/**
@@ -232,13 +256,25 @@
new HashMap<ErrorProperty, Object>();
/**
+ * Initialize a newly created analysis error. The error is associated with the
+ * given [source] and is located at the given [offset] with the given
+ * [length]. The error will have the given [errorCode] and the list of
+ * [arguments] will be used to complete the message.
+ */
+ AnalysisErrorWithProperties(
+ Source source, int offset, int length, ErrorCode errorCode,
+ [List<Object> arguments])
+ : super(source, offset, length, errorCode, arguments);
+
+ /**
* Initialize a newly created analysis error for the specified [source]. The
* error will have the given [errorCode] and the list of [arguments] will be
* used to complete the message. The error has no location information.
*/
+ @deprecated // Use new AnalysisErrorWithProperties(source, 0, 0, errorCode, arguments)
AnalysisErrorWithProperties.con1(Source source, ErrorCode errorCode,
[List<Object> arguments])
- : super.con1(source, errorCode, arguments);
+ : this(source, 0, 0, errorCode, arguments);
/**
* Initialize a newly created analysis error for the specified [source] at the
@@ -246,10 +282,11 @@
* [errorCode] and the list of [arguments] will be used to complete the
* message.
*/
+ @deprecated // Use new AnalysisErrorWithProperties(source, offset, length, errorCode, arguments)
AnalysisErrorWithProperties.con2(
Source source, int offset, int length, ErrorCode errorCode,
[List<Object> arguments])
- : super.con2(source, offset, length, errorCode, arguments);
+ : this(source, offset, length, errorCode, arguments);
@override
Object getProperty(ErrorProperty property) => _propertyMap[property];
@@ -1924,7 +1961,8 @@
* constant expression depends on itself.
*/
static const CompileTimeErrorCode RECURSIVE_COMPILE_TIME_CONSTANT =
- const CompileTimeErrorCode('RECURSIVE_COMPILE_TIME_CONSTANT', "");
+ const CompileTimeErrorCode('RECURSIVE_COMPILE_TIME_CONSTANT',
+ "Compile-time constant expression depends on itself");
/**
* 7.6.1 Generative Constructors: A generative constructor may be redirecting,
@@ -2458,7 +2496,7 @@
*/
AnalysisErrorWithProperties newErrorWithProperties(
ErrorCode errorCode, AstNode node, List<Object> arguments) =>
- new AnalysisErrorWithProperties.con2(
+ new AnalysisErrorWithProperties(
_source, node.offset, node.length, errorCode, arguments);
/**
@@ -2506,7 +2544,7 @@
void reportErrorForOffset(ErrorCode errorCode, int offset, int length,
[List<Object> arguments]) {
_errorListener.onError(
- new AnalysisError.con2(_source, offset, length, errorCode, arguments));
+ new AnalysisError(_source, offset, length, errorCode, arguments));
}
/**
diff --git a/pkg/analyzer/lib/src/generated/incremental_resolver.dart b/pkg/analyzer/lib/src/generated/incremental_resolver.dart
index 531ac3b..789ab42 100644
--- a/pkg/analyzer/lib/src/generated/incremental_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/incremental_resolver.dart
@@ -964,16 +964,16 @@
// compute values
{
CompilationUnit unit = node.getAncestor((n) => n is CompilationUnit);
- ConstantValueComputer computer =
- new ConstantValueComputer(_typeProvider, _context.declaredVariables);
- computer.add(unit);
+ ConstantValueComputer computer = new ConstantValueComputer(
+ _context, _typeProvider, _context.declaredVariables);
+ computer.add(unit, _source, _librarySource);
computer.computeValues();
}
// validate
{
ErrorReporter errorReporter = new ErrorReporter(errorListener, _source);
- ConstantVerifier constantVerifier =
- new ConstantVerifier(errorReporter, _definingLibrary, _typeProvider);
+ ConstantVerifier constantVerifier = new ConstantVerifier(errorReporter,
+ _definingLibrary, _typeProvider, _context.declaredVariables);
node.accept(constantVerifier);
}
}
@@ -1546,7 +1546,7 @@
}
static AstNode _findNodeCovering(AstNode root, int offset, int end) {
- NodeLocator nodeLocator = new NodeLocator.con2(offset, end);
+ NodeLocator nodeLocator = new NodeLocator(offset, end);
return nodeLocator.searchWithin(root);
}
diff --git a/pkg/analyzer/lib/src/generated/parser.dart b/pkg/analyzer/lib/src/generated/parser.dart
index e040afd..2e5bca2 100644
--- a/pkg/analyzer/lib/src/generated/parser.dart
+++ b/pkg/analyzer/lib/src/generated/parser.dart
@@ -1681,10 +1681,9 @@
// tokens.
//
if (originalEnd < originalStart) {
- oldNode =
- new NodeLocator.con1(originalStart).searchWithin(originalStructure);
+ oldNode = new NodeLocator(originalStart).searchWithin(originalStructure);
} else {
- oldNode = new NodeLocator.con2(originalStart, originalEnd)
+ oldNode = new NodeLocator(originalStart, originalEnd)
.searchWithin(originalStructure);
}
//
@@ -5580,11 +5579,11 @@
Token rightParenthesis = _expect(TokenType.CLOSE_PAREN);
Statement body = parseStatement2();
if (loopVariable == null) {
- return new ForEachStatement.con2(awaitKeyword, forKeyword,
+ return new ForEachStatement.withReference(awaitKeyword, forKeyword,
leftParenthesis, identifier, inKeyword, iterator,
rightParenthesis, body);
}
- return new ForEachStatement.con1(awaitKeyword, forKeyword,
+ return new ForEachStatement.withDeclaration(awaitKeyword, forKeyword,
leftParenthesis, loopVariable, inKeyword, iterator,
rightParenthesis, body);
}
@@ -7663,7 +7662,7 @@
*/
void _reportErrorForNode(ParserErrorCode errorCode, AstNode node,
[List<Object> arguments]) {
- _reportError(new AnalysisError.con2(
+ _reportError(new AnalysisError(
_source, node.offset, node.length, errorCode, arguments));
}
@@ -7676,7 +7675,7 @@
if (token.type == TokenType.EOF) {
token = token.previous;
}
- _reportError(new AnalysisError.con2(_source, token.offset,
+ _reportError(new AnalysisError(_source, token.offset,
math.max(token.length, 1), errorCode, arguments));
}
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 29817fd..50f89a5 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -743,12 +743,12 @@
AnalysisError getErrorForDuplicate(Element existing, Element duplicate) {
if (existing is PropertyAccessorElement && duplicate is MethodElement) {
if (existing.nameOffset < duplicate.nameOffset) {
- return new AnalysisError.con2(duplicate.source, duplicate.nameOffset,
+ return new AnalysisError(duplicate.source, duplicate.nameOffset,
duplicate.displayName.length,
CompileTimeErrorCode.METHOD_AND_GETTER_WITH_SAME_NAME,
[existing.displayName]);
} else {
- return new AnalysisError.con2(existing.source, existing.nameOffset,
+ return new AnalysisError(existing.source, existing.nameOffset,
existing.displayName.length,
CompileTimeErrorCode.GETTER_AND_METHOD_WITH_SAME_NAME,
[existing.displayName]);
@@ -780,10 +780,11 @@
/**
* Build the compilation unit element for the given [source] based on the
* compilation [unit] associated with the source. Throw an AnalysisException
- * if the element could not be built.
+ * if the element could not be built. [librarySource] is the source for the
+ * containing library.
*/
CompilationUnitElementImpl buildCompilationUnit(
- Source source, CompilationUnit unit) {
+ Source source, CompilationUnit unit, Source librarySource) {
return PerformanceStatistics.resolve.makeCurrentWhile(() {
if (unit == null) {
return null;
@@ -797,6 +798,7 @@
element.enums = holder.enums;
element.functions = holder.functions;
element.source = source;
+ element.librarySource = librarySource;
element.typeAliases = holder.typeAliases;
element.types = holder.types;
element.topLevelVariables = holder.topLevelVariables;
@@ -824,6 +826,11 @@
final TypeProvider _typeProvider;
/**
+ * The set of variables declared using '-D' on the command line.
+ */
+ final DeclaredVariables declaredVariables;
+
+ /**
* The type representing the type 'bool'.
*/
InterfaceType _boolType;
@@ -853,8 +860,8 @@
*
* @param errorReporter the error reporter by which errors will be reported
*/
- ConstantVerifier(
- this._errorReporter, this._currentLibrary, this._typeProvider) {
+ ConstantVerifier(this._errorReporter, this._currentLibrary,
+ this._typeProvider, this.declaredVariables) {
this._boolType = _typeProvider.boolType;
this._intType = _typeProvider.intType;
this._numType = _typeProvider.numType;
@@ -907,11 +914,17 @@
@override
Object visitInstanceCreationExpression(InstanceCreationExpression node) {
if (node.isConst) {
- EvaluationResultImpl evaluationResult = node.evaluationResult;
- // Note: evaluationResult might be null if there are circular references
- // among constants.
- if (evaluationResult != null) {
- _reportErrors(evaluationResult.errors, null);
+ // We need to evaluate the constant to see if any errors occur during its
+ // evaluation.
+ ConstructorElement constructor = node.staticElement;
+ if (constructor != null) {
+ ConstantEvaluationEngine evaluationEngine =
+ new ConstantEvaluationEngine(_typeProvider, declaredVariables);
+ ConstantVisitor constantVisitor =
+ new ConstantVisitor(evaluationEngine, _errorReporter);
+ evaluationEngine.evaluateConstructorCall(node,
+ node.argumentList.arguments, constructor, constantVisitor,
+ _errorReporter);
}
}
_validateInstanceCreationArguments(node);
@@ -975,8 +988,9 @@
AnalysisErrorListener.NULL_LISTENER;
ErrorReporter subErrorReporter =
new ErrorReporter(errorListener, _errorReporter.source);
- DartObjectImpl result = key
- .accept(new ConstantVisitor.con1(_typeProvider, subErrorReporter));
+ DartObjectImpl result = key.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(_typeProvider, declaredVariables),
+ subErrorReporter));
if (result != null) {
if (keys.contains(result)) {
invalidKeys.add(key);
@@ -1046,18 +1060,15 @@
Object visitVariableDeclaration(VariableDeclaration node) {
super.visitVariableDeclaration(node);
Expression initializer = node.initializer;
- if (initializer != null && node.isConst) {
+ if (initializer != null && (node.isConst || node.isFinal)) {
VariableElementImpl element = node.element as VariableElementImpl;
EvaluationResultImpl result = element.evaluationResult;
if (result == null) {
- //
- // Normally we don't need to visit const variable declarations because
- // we have already computed their values. But if we missed it for some
- // reason, this gives us a second chance.
- //
- result = new EvaluationResultImpl.con1(_validate(initializer,
- CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE));
- element.evaluationResult = result;
+ // Variables marked "const" should have had their values computed by
+ // ConstantValueComputer. Other variables will only have had their
+ // values computed if the value was needed (e.g. final variables in a
+ // class containing const constructors).
+ assert(!node.isConst);
return null;
}
_reportErrors(result.errors,
@@ -1154,6 +1165,8 @@
identical(dataErrorCode, CompileTimeErrorCode.CONST_EVAL_TYPE_INT) ||
identical(dataErrorCode, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM) ||
identical(dataErrorCode,
+ CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT) ||
+ identical(dataErrorCode,
CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH) ||
identical(dataErrorCode,
CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH) ||
@@ -1179,8 +1192,9 @@
RecordingErrorListener errorListener = new RecordingErrorListener();
ErrorReporter subErrorReporter =
new ErrorReporter(errorListener, _errorReporter.source);
- DartObjectImpl result = expression
- .accept(new ConstantVisitor.con1(_typeProvider, subErrorReporter));
+ DartObjectImpl result = expression.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(_typeProvider, declaredVariables),
+ subErrorReporter));
_reportErrors(errorListener.errors, errorCode);
return result;
}
@@ -1256,7 +1270,7 @@
}
}
VariableElementImpl element = parameter.element as VariableElementImpl;
- element.evaluationResult = new EvaluationResultImpl.con1(result);
+ element.evaluationResult = new EvaluationResultImpl(result);
}
}
}
@@ -1286,8 +1300,9 @@
AnalysisErrorListener.NULL_LISTENER;
ErrorReporter subErrorReporter =
new ErrorReporter(errorListener, _errorReporter.source);
- DartObjectImpl result = initializer.accept(
- new ConstantVisitor.con1(_typeProvider, subErrorReporter));
+ DartObjectImpl result = initializer.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(
+ _typeProvider, declaredVariables), subErrorReporter));
if (result == null) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST,
@@ -1313,8 +1328,8 @@
ErrorReporter subErrorReporter =
new ErrorReporter(errorListener, _errorReporter.source);
DartObjectImpl result = expression.accept(
- new _ConstantVerifier_validateInitializerExpression(
- _typeProvider, subErrorReporter, this, parameterElements));
+ new _ConstantVerifier_validateInitializerExpression(_typeProvider,
+ subErrorReporter, this, parameterElements, declaredVariables));
_reportErrors(errorListener.errors,
CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER);
if (result != null) {
@@ -1703,10 +1718,10 @@
EvaluationResultImpl _getConstantBooleanValue(Expression expression) {
if (expression is BooleanLiteral) {
if (expression.value) {
- return new EvaluationResultImpl.con1(
+ return new EvaluationResultImpl(
new DartObjectImpl(null, BoolState.from(true)));
} else {
- return new EvaluationResultImpl.con1(
+ return new EvaluationResultImpl(
new DartObjectImpl(null, BoolState.from(false)));
}
}
@@ -2437,7 +2452,7 @@
ClassElementImpl element = new ClassElementImpl.forNode(className);
List<TypeParameterElement> typeParameters = holder.typeParameters;
List<DartType> typeArguments = _createTypeParameterTypes(typeParameters);
- InterfaceTypeImpl interfaceType = new InterfaceTypeImpl.con1(element);
+ InterfaceTypeImpl interfaceType = new InterfaceTypeImpl(element);
interfaceType.typeArguments = typeArguments;
element.type = interfaceType;
List<ConstructorElement> constructors = holder.constructors;
@@ -2492,7 +2507,7 @@
List<TypeParameterElement> typeParameters = holder.typeParameters;
element.typeParameters = typeParameters;
List<DartType> typeArguments = _createTypeParameterTypes(typeParameters);
- InterfaceTypeImpl interfaceType = new InterfaceTypeImpl.con1(element);
+ InterfaceTypeImpl interfaceType = new InterfaceTypeImpl(element);
interfaceType.typeArguments = typeArguments;
element.type = interfaceType;
// set default constructor
@@ -2616,7 +2631,7 @@
SimpleIdentifier enumName = node.name;
ClassElementImpl enumElement = new ClassElementImpl.forNode(enumName);
enumElement.enum2 = true;
- InterfaceTypeImpl enumType = new InterfaceTypeImpl.con1(enumElement);
+ InterfaceTypeImpl enumType = new InterfaceTypeImpl(enumElement);
enumElement.type = enumType;
_currentHolder.addEnum(enumElement);
enumName.staticElement = enumElement;
@@ -2800,7 +2815,7 @@
element.setVisibleRange(functionEnd, blockEnd - functionEnd - 1);
}
}
- FunctionTypeImpl type = new FunctionTypeImpl.con1(element);
+ FunctionTypeImpl type = new FunctionTypeImpl(element);
if (_functionTypesToFix != null) {
_functionTypesToFix.add(type);
}
@@ -2822,7 +2837,7 @@
new FunctionTypeAliasElementImpl.forNode(aliasName);
element.parameters = parameters;
element.typeParameters = typeParameters;
- FunctionTypeImpl type = new FunctionTypeImpl.con2(element);
+ FunctionTypeImpl type = new FunctionTypeImpl.forTypedef(element);
type.typeArguments = _createTypeParameterTypes(typeParameters);
element.type = type;
_currentHolder.addTypeAlias(element);
@@ -2854,14 +2869,6 @@
}
@override
- Object visitInstanceCreationExpression(InstanceCreationExpression node) {
- if (node.isConst) {
- node.constantHandle = new ConstantInstanceCreationHandle();
- }
- return super.visitInstanceCreationExpression(node);
- }
-
- @override
Object visitLabeledStatement(LabeledStatement node) {
bool onSwitchStatement = node.statement is SwitchStatement;
for (Label label in node.labels) {
@@ -3069,7 +3076,7 @@
SimpleIdentifier fieldName = node.name;
FieldElementImpl field;
if ((isConst || isFinal) && hasInitializer) {
- field = new ConstFieldElementImpl.con1(fieldName);
+ field = new ConstFieldElementImpl.forNode(fieldName);
} else {
field = new FieldElementImpl.forNode(fieldName);
}
@@ -3176,7 +3183,7 @@
new ConstructorElementImpl.forNode(null);
constructor.synthetic = true;
constructor.returnType = interfaceType;
- FunctionTypeImpl type = new FunctionTypeImpl.con1(constructor);
+ FunctionTypeImpl type = new FunctionTypeImpl(constructor);
_functionTypesToFix.add(type);
constructor.type = type;
return <ConstructorElement>[constructor];
@@ -3745,8 +3752,7 @@
indexField.type = intType;
fields.add(indexField);
getters.add(_createGetter(indexField));
- ConstFieldElementImpl valuesField =
- new ConstFieldElementImpl.con2("values", -1);
+ ConstFieldElementImpl valuesField = new ConstFieldElementImpl("values", -1);
valuesField.static = true;
valuesField.const3 = true;
valuesField.synthetic = true;
@@ -3762,7 +3768,7 @@
for (int i = 0; i < constantCount; i++) {
SimpleIdentifier constantName = constants[i].name;
FieldElementImpl constantField =
- new ConstFieldElementImpl.con1(constantName);
+ new ConstFieldElementImpl.forNode(constantName);
constantField.static = true;
constantField.const3 = true;
constantField.type = enumType;
@@ -3775,7 +3781,7 @@
DartObjectImpl value =
new DartObjectImpl(enumType, new GenericState(fieldMap));
constantValues.add(value);
- constantField.evaluationResult = new EvaluationResultImpl.con1(value);
+ constantField.evaluationResult = new EvaluationResultImpl(value);
fields.add(constantField);
getters.add(_createGetter(constantField));
constantName.staticElement = constantField;
@@ -3783,7 +3789,7 @@
//
// Build the value of the 'values' field.
//
- valuesField.evaluationResult = new EvaluationResultImpl.con1(
+ valuesField.evaluationResult = new EvaluationResultImpl(
new DartObjectImpl(valuesField.type, new ListState(constantValues)));
//
// Finish building the enum.
@@ -3806,7 +3812,7 @@
new PropertyAccessorElementImpl.forVariable(field);
getter.getter = true;
getter.returnType = field.type;
- getter.type = new FunctionTypeImpl.con1(getter);
+ getter.type = new FunctionTypeImpl(getter);
field.getter = getter;
return getter;
}
@@ -5207,7 +5213,7 @@
}
implicitConstructor.parameters = implicitParameters;
}
- FunctionTypeImpl type = new FunctionTypeImpl.con1(implicitConstructor);
+ FunctionTypeImpl type = new FunctionTypeImpl(implicitConstructor);
type.typeArguments = classType.typeArguments;
implicitConstructor.type = type;
return implicitConstructor;
@@ -5290,7 +5296,7 @@
if (_findForwardedConstructors(classElement, superType, callback) &&
!constructorFound) {
SourceRange withRange = classElement.withClauseRange;
- errorListener.onError(new AnalysisError.con2(classElement.source,
+ errorListener.onError(new AnalysisError(classElement.source,
withRange.offset, withRange.length,
CompileTimeErrorCode.MIXIN_HAS_NO_CONSTRUCTORS,
[superElement.name]));
@@ -5965,7 +5971,7 @@
if (!visitedClasses.contains(superclassElt)) {
visitedClasses.add(superclassElt);
try {
- resultMap = new MemberMap.con2(
+ resultMap = new MemberMap.from(
_computeClassChainLookupMap(superclassElt, visitedClasses));
//
// Substitute the super types down the hierarchy.
@@ -5998,7 +6004,7 @@
if (!visitedClasses.contains(mixinElement)) {
visitedClasses.add(mixinElement);
try {
- MemberMap map = new MemberMap.con2(
+ MemberMap map = new MemberMap.from(
_computeClassChainLookupMap(mixinElement, visitedClasses));
//
// Substitute the super types down the hierarchy.
@@ -6166,7 +6172,7 @@
//
MemberMap map =
_computeInterfaceLookupMap(superclassElement, visitedInterfaces);
- map = new MemberMap.con2(map);
+ map = new MemberMap.from(map);
//
// Substitute the super type down the hierarchy.
//
@@ -6198,7 +6204,7 @@
//
MemberMap map =
_computeInterfaceLookupMap(mixinElement, visitedInterfaces);
- map = new MemberMap.con2(map);
+ map = new MemberMap.from(map);
//
// Substitute the mixin type down the hierarchy.
//
@@ -6230,7 +6236,7 @@
//
MemberMap map =
_computeInterfaceLookupMap(interfaceElement, visitedInterfaces);
- map = new MemberMap.con2(map);
+ map = new MemberMap.from(map);
//
// Substitute the supertypes down the hierarchy
//
@@ -6331,7 +6337,7 @@
errorSet = new HashSet<AnalysisError>();
_errorsInClassElement[classElt] = errorSet;
}
- errorSet.add(new AnalysisError.con2(
+ errorSet.add(new AnalysisError(
classElt.source, offset, length, errorCode, arguments));
}
@@ -6677,7 +6683,7 @@
}
executable.returnType = dynamicType;
executable.parameters = parameters;
- FunctionTypeImpl methodType = new FunctionTypeImpl.con1(executable);
+ FunctionTypeImpl methodType = new FunctionTypeImpl(executable);
executable.type = methodType;
return executable;
}
@@ -7090,15 +7096,14 @@
Source source =
_analysisContext.sourceFactory.resolveUri(librarySource, uriContent);
if (!_analysisContext.exists(source)) {
- _errorListener.onError(new AnalysisError.con2(librarySource,
+ _errorListener.onError(new AnalysisError(librarySource,
uriLiteral.offset, uriLiteral.length,
CompileTimeErrorCode.URI_DOES_NOT_EXIST, [uriContent]));
}
return source;
} on URISyntaxException {
- _errorListener.onError(new AnalysisError.con2(librarySource,
- uriLiteral.offset, uriLiteral.length,
- CompileTimeErrorCode.INVALID_URI, [uriContent]));
+ _errorListener.onError(new AnalysisError(librarySource, uriLiteral.offset,
+ uriLiteral.length, CompileTimeErrorCode.INVALID_URI, [uriContent]));
}
return null;
}
@@ -7155,8 +7160,9 @@
CompilationUnitBuilder builder = new CompilationUnitBuilder();
Source librarySource = library.librarySource;
CompilationUnit definingCompilationUnit = library.definingCompilationUnit;
- CompilationUnitElementImpl definingCompilationUnitElement =
- builder.buildCompilationUnit(librarySource, definingCompilationUnit);
+ CompilationUnitElementImpl definingCompilationUnitElement = builder
+ .buildCompilationUnit(
+ librarySource, definingCompilationUnit, librarySource);
NodeList<Directive> directives = definingCompilationUnit.directives;
LibraryIdentifier libraryNameNode = null;
bool hasPartDirective = false;
@@ -7186,7 +7192,7 @@
hasPartDirective = true;
CompilationUnit partUnit = library.getAST(partSource);
CompilationUnitElementImpl part =
- builder.buildCompilationUnit(partSource, partUnit);
+ builder.buildCompilationUnit(partSource, partUnit, librarySource);
part.uriOffset = partUri.offset;
part.uriEnd = partUri.end;
part.uri = partDirective.uriContent;
@@ -7197,7 +7203,7 @@
String partLibraryName =
_getPartLibraryName(partSource, partUnit, directivesToResolve);
if (partLibraryName == null) {
- _errorListener.onError(new AnalysisError.con2(librarySource,
+ _errorListener.onError(new AnalysisError(librarySource,
partUri.offset, partUri.length,
CompileTimeErrorCode.PART_OF_NON_PART, [partUri.toSource()]));
} else if (libraryNameNode == null) {
@@ -7206,7 +7212,7 @@
// inferred name of the library and present it in a quick-fix.
// partLibraryNames.add(partLibraryName);
} else if (libraryNameNode.name != partLibraryName) {
- _errorListener.onError(new AnalysisError.con2(librarySource,
+ _errorListener.onError(new AnalysisError(librarySource,
partUri.offset, partUri.length,
StaticWarningCode.PART_OF_DIFFERENT_LIBRARY, [
libraryNameNode.name,
@@ -7222,7 +7228,7 @@
}
}
if (hasPartDirective && libraryNameNode == null) {
- _errorListener.onError(new AnalysisError.con1(librarySource,
+ _errorListener.onError(new AnalysisError(librarySource, 0, 0,
ResolverErrorCode.MISSING_LIBRARY_DIRECTIVE_WITH_PART));
}
//
@@ -7257,8 +7263,9 @@
CompilationUnitBuilder builder = new CompilationUnitBuilder();
Source librarySource = library.librarySource;
CompilationUnit definingCompilationUnit = library.definingCompilationUnit;
- CompilationUnitElementImpl definingCompilationUnitElement =
- builder.buildCompilationUnit(librarySource, definingCompilationUnit);
+ CompilationUnitElementImpl definingCompilationUnitElement = builder
+ .buildCompilationUnit(
+ librarySource, definingCompilationUnit, librarySource);
NodeList<Directive> directives = definingCompilationUnit.directives;
LibraryIdentifier libraryNameNode = null;
bool hasPartDirective = false;
@@ -7288,8 +7295,8 @@
hasPartDirective = true;
CompilationUnit partUnit = library.getAST(partSource);
if (partUnit != null) {
- CompilationUnitElementImpl part =
- builder.buildCompilationUnit(partSource, partUnit);
+ CompilationUnitElementImpl part = builder.buildCompilationUnit(
+ partSource, partUnit, librarySource);
part.uriOffset = partUri.offset;
part.uriEnd = partUri.end;
part.uri = partDirective.uriContent;
@@ -7300,7 +7307,7 @@
String partLibraryName =
_getPartLibraryName(partSource, partUnit, directivesToResolve);
if (partLibraryName == null) {
- _errorListener.onError(new AnalysisError.con2(librarySource,
+ _errorListener.onError(new AnalysisError(librarySource,
partUri.offset, partUri.length,
CompileTimeErrorCode.PART_OF_NON_PART, [partUri.toSource()]));
} else if (libraryNameNode == null) {
@@ -7309,7 +7316,7 @@
// inferred name of the library and present it in a quick-fix.
// partLibraryNames.add(partLibraryName);
} else if (libraryNameNode.name != partLibraryName) {
- _errorListener.onError(new AnalysisError.con2(librarySource,
+ _errorListener.onError(new AnalysisError(librarySource,
partUri.offset, partUri.length,
StaticWarningCode.PART_OF_DIFFERENT_LIBRARY, [
libraryNameNode.name,
@@ -7326,7 +7333,7 @@
}
}
if (hasPartDirective && libraryNameNode == null) {
- _errorListener.onError(new AnalysisError.con1(librarySource,
+ _errorListener.onError(new AnalysisError(librarySource, 0, 0,
ResolverErrorCode.MISSING_LIBRARY_DIRECTIVE_WITH_PART));
}
//
@@ -7519,7 +7526,7 @@
libraryNames[i] = _getLibraryName(conflictingMembers[i]);
}
libraryNames.sort();
- errorListener.onError(new AnalysisError.con2(getSource(identifier),
+ errorListener.onError(new AnalysisError(getSource(identifier),
identifier.offset, identifier.length,
StaticWarningCode.AMBIGUOUS_IMPORT, [
foundEltName,
@@ -7621,7 +7628,7 @@
if (sdkElement != null && nonSdkElements.length > 0) {
String sdkLibName = _getLibraryName(sdkElement);
String otherLibName = _getLibraryName(nonSdkElements[0]);
- errorListener.onError(new AnalysisError.con2(getSource(identifier),
+ errorListener.onError(new AnalysisError(getSource(identifier),
identifier.offset, identifier.length,
StaticWarningCode.CONFLICTING_DART_IMPORT, [
name,
@@ -8084,9 +8091,9 @@
ErrorCode errorCode = (importElement.isDeferred
? StaticWarningCode.IMPORT_OF_NON_LIBRARY
: CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY);
- _errorListener.onError(new AnalysisError.con2(
- library.librarySource, uriLiteral.offset, uriLiteral.length,
- errorCode, [uriLiteral.toSource()]));
+ _errorListener.onError(new AnalysisError(library.librarySource,
+ uriLiteral.offset, uriLiteral.length, errorCode,
+ [uriLiteral.toSource()]));
}
}
}
@@ -8114,8 +8121,8 @@
exports.add(exportElement);
if (analysisContext.computeKindOf(exportedSource) !=
SourceKind.LIBRARY) {
- _errorListener.onError(new AnalysisError.con2(
- library.librarySource, uriLiteral.offset, uriLiteral.length,
+ _errorListener.onError(new AnalysisError(library.librarySource,
+ uriLiteral.offset, uriLiteral.length,
CompileTimeErrorCode.EXPORT_OF_NON_LIBRARY,
[uriLiteral.toSource()]));
}
@@ -8446,13 +8453,13 @@
void _performConstantEvaluation() {
PerformanceStatistics.resolve.makeCurrentWhile(() {
ConstantValueComputer computer = new ConstantValueComputer(
- _typeProvider, analysisContext.declaredVariables);
+ analysisContext, _typeProvider, analysisContext.declaredVariables);
for (Library library in _librariesInCycles) {
for (Source source in library.compilationUnitSources) {
try {
CompilationUnit unit = library.getAST(source);
if (unit != null) {
- computer.add(unit);
+ computer.add(unit, source, library.librarySource);
}
} on AnalysisException catch (exception, stackTrace) {
AnalysisEngine.instance.logger.logError(
@@ -8471,7 +8478,8 @@
ErrorReporter errorReporter =
new ErrorReporter(_errorListener, source);
ConstantVerifier constantVerifier = new ConstantVerifier(
- errorReporter, library.libraryElement, _typeProvider);
+ errorReporter, library.libraryElement, _typeProvider,
+ analysisContext.declaredVariables);
unit.accept(constantVerifier);
} on AnalysisException catch (exception, stackTrace) {
AnalysisEngine.instance.logger.logError(
@@ -8771,9 +8779,9 @@
ErrorCode errorCode = (importElement.isDeferred
? StaticWarningCode.IMPORT_OF_NON_LIBRARY
: CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY);
- _errorListener.onError(new AnalysisError.con2(
- library.librarySource, uriLiteral.offset, uriLiteral.length,
- errorCode, [uriLiteral.toSource()]));
+ _errorListener.onError(new AnalysisError(library.librarySource,
+ uriLiteral.offset, uriLiteral.length, errorCode,
+ [uriLiteral.toSource()]));
}
}
}
@@ -8804,8 +8812,8 @@
exports.add(exportElement);
if (analysisContext.computeKindOf(exportedSource) !=
SourceKind.LIBRARY) {
- _errorListener.onError(new AnalysisError.con2(
- library.librarySource, uriLiteral.offset, uriLiteral.length,
+ _errorListener.onError(new AnalysisError(library.librarySource,
+ uriLiteral.offset, uriLiteral.length,
CompileTimeErrorCode.EXPORT_OF_NON_LIBRARY,
[uriLiteral.toSource()]));
}
@@ -8975,13 +8983,13 @@
void _performConstantEvaluation() {
PerformanceStatistics.resolve.makeCurrentWhile(() {
ConstantValueComputer computer = new ConstantValueComputer(
- _typeProvider, analysisContext.declaredVariables);
+ analysisContext, _typeProvider, analysisContext.declaredVariables);
for (ResolvableLibrary library in _librariesInCycle) {
for (ResolvableCompilationUnit unit
in library.resolvableCompilationUnits) {
CompilationUnit ast = unit.compilationUnit;
if (ast != null) {
- computer.add(ast);
+ computer.add(ast, unit.source, library.librarySource);
}
}
}
@@ -8995,7 +9003,8 @@
ErrorReporter errorReporter =
new ErrorReporter(_errorListener, unit.source);
ConstantVerifier constantVerifier = new ConstantVerifier(
- errorReporter, library.libraryElement, _typeProvider);
+ errorReporter, library.libraryElement, _typeProvider,
+ analysisContext.declaredVariables);
ast.accept(constantVerifier);
}
}
@@ -9129,7 +9138,7 @@
offset = accessor.variable.nameOffset;
}
}
- return new AnalysisError.con2(duplicate.source, offset,
+ return new AnalysisError(duplicate.source, offset,
duplicate.displayName.length,
CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER,
[existing.displayName]);
@@ -9181,8 +9190,8 @@
}
/**
- * This class is used to replace uses of `HashMap<String, ExecutableElement>` which are not as
- * performant as this class.
+ * This class is used to replace uses of `HashMap<String, ExecutableElement>`
+ * which are not as performant as this class.
*/
class MemberMap {
/**
@@ -9201,15 +9210,19 @@
List<ExecutableElement> _values;
/**
- * Default constructor.
+ * Initialize a newly created member map to have the given [initialCapacity].
+ * The map will grow if needed.
*/
- MemberMap() : this.con1(10);
+ MemberMap([int initialCapacity = 10]) {
+ _initArrays(initialCapacity);
+ }
/**
* This constructor takes an initial capacity of the map.
*
* @param initialCapacity the initial capacity
*/
+ @deprecated // Use new MemberMap(initialCapacity)
MemberMap.con1(int initialCapacity) {
_initArrays(initialCapacity);
}
@@ -9217,6 +9230,7 @@
/**
* Copy constructor.
*/
+ @deprecated // Use new MemberMap.from(memberMap)
MemberMap.con2(MemberMap memberMap) {
_initArrays(memberMap._size + 5);
for (int i = 0; i < memberMap._size; i++) {
@@ -9227,6 +9241,19 @@
}
/**
+ * Initialize a newly created member map to contain the same members as the
+ * given [memberMap].
+ */
+ MemberMap.from(MemberMap memberMap) {
+ _initArrays(memberMap._size + 5);
+ for (int i = 0; i < memberMap._size; i++) {
+ _keys[i] = memberMap._keys[i];
+ _values[i] = memberMap._values[i];
+ }
+ _size = memberMap._size;
+ }
+
+ /**
* The size of the map.
*
* @return the size of the map.
@@ -10910,6 +10937,22 @@
}
@override
+ Object visitDefaultFormalParameter(DefaultFormalParameter node) {
+ super.visitDefaultFormalParameter(node);
+ FormalParameterList parent = node.parent;
+ AstNode grandparent = parent.parent;
+ if (grandparent is ConstructorDeclaration &&
+ grandparent.constKeyword != null) {
+ // For const constructors, we need to clone the ASTs for default formal
+ // parameters, so that we can use them during constant evaluation.
+ ParameterElement element = node.element;
+ (element as ConstVariableElement).constantInitializer =
+ new ConstantAstCloner().cloneNode(node.defaultValue);
+ }
+ return null;
+ }
+
+ @override
Object visitDoStatement(DoStatement node) {
_overrideManager.enterScope();
try {
@@ -11830,7 +11873,7 @@
// TODO(jwren) There are 4 error codes for duplicate, but only 1 is being
// generated.
Source source = duplicate.source;
- return new AnalysisError.con2(source, duplicate.nameOffset,
+ return new AnalysisError(source, duplicate.nameOffset,
duplicate.displayName.length, CompileTimeErrorCode.DUPLICATE_DEFINITION,
[existing.displayName]);
}
@@ -12076,7 +12119,7 @@
*/
void reportErrorForNode(ErrorCode errorCode, AstNode node,
[List<Object> arguments]) {
- _errorListener.onError(new AnalysisError.con2(
+ _errorListener.onError(new AnalysisError(
source, node.offset, node.length, errorCode, arguments));
}
@@ -12091,7 +12134,7 @@
void reportErrorForOffset(ErrorCode errorCode, int offset, int length,
[List<Object> arguments]) {
_errorListener.onError(
- new AnalysisError.con2(source, offset, length, errorCode, arguments));
+ new AnalysisError(source, offset, length, errorCode, arguments));
}
/**
@@ -12103,7 +12146,7 @@
*/
void reportErrorForToken(ErrorCode errorCode, sc.Token token,
[List<Object> arguments]) {
- _errorListener.onError(new AnalysisError.con2(
+ _errorListener.onError(new AnalysisError(
source, token.offset, token.length, errorCode, arguments));
}
@@ -13897,7 +13940,7 @@
} else {
ClassElement definingClass = element.enclosingElement as ClassElement;
element.returnType = definingClass.type;
- FunctionTypeImpl type = new FunctionTypeImpl.con1(element);
+ FunctionTypeImpl type = new FunctionTypeImpl(element);
type.typeArguments = definingClass.type.typeArguments;
element.type = type;
}
@@ -13966,7 +14009,7 @@
new CaughtException(new AnalysisException(), null));
}
element.returnType = _computeReturnType(node.returnType);
- FunctionTypeImpl type = new FunctionTypeImpl.con1(element);
+ FunctionTypeImpl type = new FunctionTypeImpl(element);
ClassElement definingClass =
element.getAncestor((element) => element is ClassElement);
if (definingClass != null) {
@@ -14023,7 +14066,7 @@
new CaughtException(new AnalysisException(), null));
}
element.returnType = _computeReturnType(node.returnType);
- FunctionTypeImpl type = new FunctionTypeImpl.con1(element);
+ FunctionTypeImpl type = new FunctionTypeImpl(element);
ClassElement definingClass =
element.getAncestor((element) => element is ClassElement);
if (definingClass != null) {
@@ -14379,7 +14422,7 @@
PropertyAccessorElementImpl getter =
variableElement.getter as PropertyAccessorElementImpl;
getter.returnType = declaredType;
- FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter);
+ FunctionTypeImpl getterType = new FunctionTypeImpl(getter);
ClassElement definingClass =
element.getAncestor((element) => element is ClassElement);
if (definingClass != null) {
@@ -14394,7 +14437,7 @@
(parameters[0] as ParameterElementImpl).type = declaredType;
}
setter.returnType = VoidTypeImpl.instance;
- FunctionTypeImpl setterType = new FunctionTypeImpl.con1(setter);
+ FunctionTypeImpl setterType = new FunctionTypeImpl(setter);
if (definingClass != null) {
setterType.typeArguments = definingClass.type.typeArguments;
}
@@ -14815,7 +14858,7 @@
// compilation unit element.
aliasElement.enclosingElement =
element.getAncestor((element) => element is CompilationUnitElement);
- FunctionTypeImpl type = new FunctionTypeImpl.con2(aliasElement);
+ FunctionTypeImpl type = new FunctionTypeImpl.forTypedef(aliasElement);
ClassElement definingClass =
element.getAncestor((element) => element is ClassElement);
if (definingClass != null) {
@@ -15019,7 +15062,7 @@
void _reportErrorForElement(
ErrorCode errorCode, Element element, List<Object> arguments) {
if (element != null) {
- _errorListener.onError(new AnalysisError.con2(element.source,
+ _errorListener.onError(new AnalysisError(element.source,
element.nameOffset, element.displayName.length, errorCode,
arguments));
}
@@ -15274,9 +15317,11 @@
List<ParameterElement> parameterElements;
- _ConstantVerifier_validateInitializerExpression(TypeProvider arg0,
- ErrorReporter arg1, this.verifier, this.parameterElements)
- : super.con1(arg0, arg1);
+ _ConstantVerifier_validateInitializerExpression(TypeProvider typeProvider,
+ ErrorReporter errorReporter, this.verifier, this.parameterElements,
+ DeclaredVariables declaredVariables)
+ : super(new ConstantEvaluationEngine(typeProvider, declaredVariables),
+ errorReporter);
@override
DartObjectImpl visitSimpleIdentifier(SimpleIdentifier node) {
diff --git a/pkg/analyzer/lib/src/generated/scanner.dart b/pkg/analyzer/lib/src/generated/scanner.dart
index d7bc236..f79401e 100644
--- a/pkg/analyzer/lib/src/generated/scanner.dart
+++ b/pkg/analyzer/lib/src/generated/scanner.dart
@@ -1163,8 +1163,8 @@
* needed to complete the error message
*/
void _reportError(ScannerErrorCode errorCode, [List<Object> arguments]) {
- _errorListener.onError(new AnalysisError.con2(
- source, _reader.offset, 1, errorCode, arguments));
+ _errorListener.onError(
+ new AnalysisError(source, _reader.offset, 1, errorCode, arguments));
}
int _select(int choice, TokenType yesType, TokenType noType) {
diff --git a/pkg/analyzer/lib/src/generated/sdk_io.dart b/pkg/analyzer/lib/src/generated/sdk_io.dart
index 3a9f239..cd9c959 100644
--- a/pkg/analyzer/lib/src/generated/sdk_io.dart
+++ b/pkg/analyzer/lib/src/generated/sdk_io.dart
@@ -397,7 +397,7 @@
if (filePath.replaceAll('\\', '/') == libraryPath) {
String path = library.shortName;
try {
- return new FileBasedSource.con2(parseUriWithException(path), file);
+ return new FileBasedSource(file, parseUriWithException(path));
} on URISyntaxException catch (exception, stackTrace) {
AnalysisEngine.instance.logger.logInformation(
"Failed to create URI: $path",
@@ -410,7 +410,7 @@
String path =
"${library.shortName}/${filePath.substring(libraryPath.length + 1)}";
try {
- return new FileBasedSource.con2(parseUriWithException(path), file);
+ return new FileBasedSource(file, parseUriWithException(path));
} on URISyntaxException catch (exception, stackTrace) {
AnalysisEngine.instance.logger.logInformation(
"Failed to create URI: $path",
@@ -494,7 +494,7 @@
file = file.getParentFile();
file = new JavaFile.relative(file, relativePath);
}
- return new FileBasedSource.con2(parseUriWithException(dartUri), file);
+ return new FileBasedSource(file, parseUriWithException(dartUri));
} on URISyntaxException {
return null;
}
@@ -548,7 +548,7 @@
* of the file is already known to be [libraryFileContents].
*/
LibraryMap readFromFile(JavaFile file, String libraryFileContents) =>
- readFromSource(new FileBasedSource.con1(file), libraryFileContents);
+ readFromSource(new FileBasedSource(file), libraryFileContents);
/**
* Return the library map read from the given [source], given that the content
diff --git a/pkg/analyzer/lib/src/generated/source.dart b/pkg/analyzer/lib/src/generated/source.dart
index d0b5dde..8e42379 100644
--- a/pkg/analyzer/lib/src/generated/source.dart
+++ b/pkg/analyzer/lib/src/generated/source.dart
@@ -99,6 +99,24 @@
}
}
+class CustomUriResolver extends UriResolver {
+ final Map<String, String> _urlMappings;
+
+ CustomUriResolver(this._urlMappings);
+
+ @override
+ Source resolveAbsolute(Uri uri) {
+ String mapping = _urlMappings[uri.toString()];
+ if (mapping == null) return null;
+
+ Uri fileUri = new Uri.file(mapping);
+ if (!fileUri.isAbsolute) return null;
+
+ JavaFile javaFile = new JavaFile.fromUri(fileUri);
+ return new FileBasedSource(javaFile);
+ }
+}
+
/**
* Instances of the class `DartUriResolver` resolve `dart` URI's.
*/
@@ -159,24 +177,6 @@
static bool isDartUri(Uri uri) => DART_SCHEME == uri.scheme;
}
-class CustomUriResolver extends UriResolver {
- final Map<String, String> _urlMappings;
-
- CustomUriResolver(this._urlMappings);
-
- @override
- Source resolveAbsolute(Uri uri) {
- String mapping = _urlMappings[uri.toString()];
- if (mapping == null) return null;
-
- Uri fileUri = new Uri.file(mapping);
- if (!fileUri.isAbsolute) return null;
-
- JavaFile javaFile = new JavaFile.fromUri(fileUri);
- return new FileBasedSource.con1(javaFile);
- }
-}
-
/**
* Instances of the class `LineInfo` encapsulate information about line and column information
* within a source file.
@@ -399,7 +399,13 @@
/**
* An empty list of sources.
*/
- static const List<Source> EMPTY_ARRAY = const <Source>[];
+ @deprecated // Use Source.EMPTY_LIST
+ static const List<Source> EMPTY_ARRAY = EMPTY_LIST;
+
+ /**
+ * An empty list of sources.
+ */
+ static const List<Source> EMPTY_LIST = const <Source>[];
/**
* Get the contents and timestamp of this source.
@@ -422,9 +428,6 @@
*/
String get encoding;
- @override
- Source get source => this;
-
/**
* Return the full (long) version of the name that can be displayed to the user to denote this
* source. For example, for a source representing a file this would typically be the absolute path
@@ -472,6 +475,9 @@
*/
String get shortName;
+ @override
+ Source get source => this;
+
/**
* Return the URI from which this source was originally derived.
*
diff --git a/pkg/analyzer/lib/src/generated/source_io.dart b/pkg/analyzer/lib/src/generated/source_io.dart
index e885cd8f..1c60f5d 100644
--- a/pkg/analyzer/lib/src/generated/source_io.dart
+++ b/pkg/analyzer/lib/src/generated/source_io.dart
@@ -128,11 +128,24 @@
String _encoding;
/**
+ * Initialize a newly created source object to represent the given [file]. If
+ * a [uri] is given, then it will be used as the URI from which the source was
+ * derived, otherwise a `file:` URI will be created based on the [file].
+ */
+ FileBasedSource(JavaFile file, [Uri uri])
+ : this.uri = (uri == null ? file.toURI() : uri),
+ this.file = file,
+ id = _idTable.putIfAbsent(
+ '${uri == null ? file.toURI() : uri}@${file.getPath()}',
+ () => _idTable.length);
+
+ /**
* Initialize a newly created source object.
*
* @param file the file represented by this source
*/
- FileBasedSource.con1(JavaFile file) : this.con2(file.toURI(), file);
+ @deprecated // Use new FileBasedSource(file)
+ FileBasedSource.con1(JavaFile file) : this(file);
/**
* Initialize a newly created source object.
@@ -140,6 +153,7 @@
* @param file the file represented by this source
* @param uri the URI from which this source was originally derived
*/
+ @deprecated // Use new FileBasedSource(file, uri)
FileBasedSource.con2(Uri uri, JavaFile file)
: uri = uri,
file = file,
@@ -266,7 +280,7 @@
if (!isFileUri(uri)) {
return null;
}
- return new FileBasedSource.con2(uri, new JavaFile.fromUri(uri));
+ return new FileBasedSource(new JavaFile.fromUri(uri), uri);
}
/**
@@ -437,11 +451,11 @@
if (_isSelfReference(packagesDirectory, canonicalFile)) {
uri = canonicalFile.toURI();
}
- return new FileBasedSource.con2(uri, canonicalFile);
+ return new FileBasedSource(canonicalFile, uri);
}
}
- return new FileBasedSource.con2(
- uri, getCanonicalFile(_packagesDirectories[0], pkgName, relPath));
+ return new FileBasedSource(
+ getCanonicalFile(_packagesDirectories[0], pkgName, relPath), uri);
}
@override
@@ -523,7 +537,7 @@
for (JavaFile dir in _relativeDirectories) {
JavaFile file = new JavaFile.relative(dir, filePath);
if (file.exists()) {
- return new FileBasedSource.con2(uri, file);
+ return new FileBasedSource(file, uri);
}
}
}
diff --git a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
index b853626..f69d2a4 100644
--- a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
+++ b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
@@ -622,8 +622,7 @@
newFutureType = returnType as InterfaceTypeImpl;
} else {
InterfaceType futureType = targetType as InterfaceType;
- newFutureType =
- new InterfaceTypeImpl.con1(futureType.element);
+ newFutureType = new InterfaceTypeImpl(futureType.element);
newFutureType.typeArguments = <DartType>[returnType];
}
// set the 'then' invocation type
diff --git a/pkg/analyzer/lib/src/generated/testing/ast_factory.dart b/pkg/analyzer/lib/src/generated/testing/ast_factory.dart
index 00ee216..6125a9c 100644
--- a/pkg/analyzer/lib/src/generated/testing/ast_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/ast_factory.dart
@@ -368,15 +368,16 @@
fieldFormalParameter(null, null, identifier);
static ForEachStatement forEachStatement(DeclaredIdentifier loopVariable,
- Expression iterator, Statement body) => new ForEachStatement.con1(null,
- TokenFactory.tokenFromKeyword(Keyword.FOR),
- TokenFactory.tokenFromType(TokenType.OPEN_PAREN), loopVariable,
- TokenFactory.tokenFromKeyword(Keyword.IN), iterator,
- TokenFactory.tokenFromType(TokenType.CLOSE_PAREN), body);
+ Expression iterator, Statement body) =>
+ new ForEachStatement.withDeclaration(null,
+ TokenFactory.tokenFromKeyword(Keyword.FOR),
+ TokenFactory.tokenFromType(TokenType.OPEN_PAREN), loopVariable,
+ TokenFactory.tokenFromKeyword(Keyword.IN), iterator,
+ TokenFactory.tokenFromType(TokenType.CLOSE_PAREN), body);
static ForEachStatement forEachStatement2(
SimpleIdentifier identifier, Expression iterator, Statement body) =>
- new ForEachStatement.con2(null,
+ new ForEachStatement.withReference(null,
TokenFactory.tokenFromKeyword(Keyword.FOR),
TokenFactory.tokenFromType(TokenType.OPEN_PAREN), identifier,
TokenFactory.tokenFromKeyword(Keyword.IN), iterator,
diff --git a/pkg/analyzer/lib/src/generated/testing/element_factory.dart b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
index 497990c..29d6bbb 100644
--- a/pkg/analyzer/lib/src/generated/testing/element_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
@@ -43,7 +43,7 @@
[List<String> parameterNames]) {
ClassElementImpl element = new ClassElementImpl(typeName, 0);
element.supertype = superclassType;
- InterfaceTypeImpl type = new InterfaceTypeImpl.con1(element);
+ InterfaceTypeImpl type = new InterfaceTypeImpl(element);
element.type = type;
if (parameterNames != null) {
int count = parameterNames.length;
@@ -82,10 +82,15 @@
[List<String> parameterNames]) =>
classTypeAlias(typeName, objectType, parameterNames);
- static CompilationUnitElementImpl compilationUnit(String fileName) {
+ static CompilationUnitElementImpl compilationUnit(String fileName,
+ [Source librarySource]) {
Source source = new NonExistingSource(fileName, UriKind.FILE_URI);
CompilationUnitElementImpl unit = new CompilationUnitElementImpl(fileName);
unit.source = source;
+ if (librarySource == null) {
+ librarySource = source;
+ }
+ unit.librarySource = librarySource;
return unit;
}
@@ -114,7 +119,7 @@
constructor.parameters = <ParameterElement>[];
}
constructor.returnType = type;
- FunctionTypeImpl constructorType = new FunctionTypeImpl.con1(constructor);
+ FunctionTypeImpl constructorType = new FunctionTypeImpl(constructor);
constructor.type = constructorType;
return constructor;
}
@@ -131,7 +136,7 @@
// Build the enum.
//
ClassElementImpl enumElement = new ClassElementImpl(enumName, -1);
- InterfaceTypeImpl enumType = new InterfaceTypeImpl.con1(enumElement);
+ InterfaceTypeImpl enumType = new InterfaceTypeImpl(enumElement);
enumElement.type = enumType;
enumElement.supertype = objectType;
enumElement.enum2 = true;
@@ -164,7 +169,7 @@
for (int i = 0; i < constantCount; i++) {
String constantName = constantNames[i];
FieldElementImpl constantElement =
- new ConstFieldElementImpl.con2(constantName, -1);
+ new ConstFieldElementImpl(constantName, -1);
constantElement.static = true;
constantElement.const3 = true;
constantElement.type = enumType;
@@ -175,7 +180,7 @@
new DartObjectImpl(stringType, new StringState(constantName));
DartObjectImpl value =
new DartObjectImpl(enumType, new GenericState(fieldMap));
- constantElement.evaluationResult = new EvaluationResultImpl.con1(value);
+ constantElement.evaluationResult = new EvaluationResultImpl(value);
fields.add(constantElement);
}
}
@@ -209,7 +214,7 @@
getter.variable = field;
getter.returnType = type;
field.getter = getter;
- FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter);
+ FunctionTypeImpl getterType = new FunctionTypeImpl(getter);
getter.type = getterType;
if (!isConst && !isFinal) {
PropertyAccessorElementImpl setter =
@@ -220,7 +225,7 @@
setter.parameters =
<ParameterElement>[requiredParameter2("_$name", type)];
setter.returnType = VoidTypeImpl.instance;
- setter.type = new FunctionTypeImpl.con1(setter);
+ setter.type = new FunctionTypeImpl(setter);
field.setter = setter;
}
return field;
@@ -242,7 +247,7 @@
// We don't create parameter elements because we don't have parameter names
FunctionElementImpl functionElement =
new FunctionElementImpl(functionName, 0);
- FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement);
+ FunctionTypeImpl functionType = new FunctionTypeImpl(functionElement);
functionElement.type = functionType;
// return type
if (returnElement == null) {
@@ -277,7 +282,7 @@
List<String> names, List<ClassElement> namedParameters) {
FunctionElementImpl functionElement =
new FunctionElementImpl(functionName, 0);
- FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement);
+ FunctionTypeImpl functionType = new FunctionTypeImpl(functionElement);
functionElement.type = functionType;
// parameters
int normalCount = normalParameters == null ? 0 : normalParameters.length;
@@ -334,7 +339,7 @@
functionElement.returnType =
returnType == null ? VoidTypeImpl.instance : returnType;
functionElement.parameters = parameters;
- FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement);
+ FunctionTypeImpl functionType = new FunctionTypeImpl(functionElement);
functionElement.type = functionType;
return functionElement;
}
@@ -351,7 +356,7 @@
getter.variable = field;
getter.returnType = type;
field.getter = getter;
- FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter);
+ FunctionTypeImpl getterType = new FunctionTypeImpl(getter);
getter.type = getterType;
return getter;
}
@@ -406,7 +411,7 @@
method.parameters = parameters;
}
method.returnType = returnType;
- FunctionTypeImpl methodType = new FunctionTypeImpl.con1(method);
+ FunctionTypeImpl methodType = new FunctionTypeImpl(method);
method.type = methodType;
return method;
}
@@ -417,7 +422,7 @@
MethodElementImpl method = new MethodElementImpl(methodName, 0);
method.parameters = parameters;
method.returnType = returnType;
- FunctionTypeImpl methodType = new FunctionTypeImpl.con1(method);
+ FunctionTypeImpl methodType = new FunctionTypeImpl(method);
methodType.typeArguments = typeArguments;
method.type = methodType;
return method;
@@ -477,7 +482,7 @@
getter.variable = field;
getter.returnType = type;
field.getter = getter;
- FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter);
+ FunctionTypeImpl getterType = new FunctionTypeImpl(getter);
getter.type = getterType;
ParameterElementImpl parameter = requiredParameter2("a", type);
PropertyAccessorElementImpl setter =
@@ -487,7 +492,7 @@
setter.variable = field;
setter.parameters = <ParameterElement>[parameter];
setter.returnType = VoidTypeImpl.instance;
- setter.type = new FunctionTypeImpl.con1(setter);
+ setter.type = new FunctionTypeImpl(setter);
field.setter = setter;
return setter;
}
@@ -512,7 +517,7 @@
getter.variable = variable;
getter.returnType = type;
variable.getter = getter;
- FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter);
+ FunctionTypeImpl getterType = new FunctionTypeImpl(getter);
getter.type = getterType;
if (!isConst && !isFinal) {
PropertyAccessorElementImpl setter =
@@ -524,7 +529,7 @@
setter.parameters =
<ParameterElement>[requiredParameter2("_$name", type)];
setter.returnType = VoidTypeImpl.instance;
- setter.type = new FunctionTypeImpl.con1(setter);
+ setter.type = new FunctionTypeImpl(setter);
variable.setter = setter;
}
return variable;
diff --git a/pkg/analyzer/lib/src/plugin/engine_plugin.dart b/pkg/analyzer/lib/src/plugin/engine_plugin.dart
index 9cd0577..bed1191 100644
--- a/pkg/analyzer/lib/src/plugin/engine_plugin.dart
+++ b/pkg/analyzer/lib/src/plugin/engine_plugin.dart
@@ -72,9 +72,16 @@
registerExtension(taskId, BuildPublicNamespaceTask.DESCRIPTOR);
registerExtension(taskId, BuildSourceClosuresTask.DESCRIPTOR);
registerExtension(taskId, BuildTypeProviderTask.DESCRIPTOR);
+ registerExtension(taskId, ComputeConstantDependenciesTask.DESCRIPTOR);
+ registerExtension(taskId, ComputeConstantValueTask.DESCRIPTOR);
+ registerExtension(taskId, ContainingLibrariesTask.DESCRIPTOR);
+ registerExtension(taskId, DartErrorsTask.DESCRIPTOR);
+ registerExtension(taskId, EvaluateUnitConstantsTask.DESCRIPTOR);
registerExtension(taskId, GatherUsedImportedElementsTask.DESCRIPTOR);
registerExtension(taskId, GatherUsedLocalElementsTask.DESCRIPTOR);
registerExtension(taskId, GenerateHintsTask.DESCRIPTOR);
+ registerExtension(taskId, LibraryErrorsReadyTask.DESCRIPTOR);
+ registerExtension(taskId, LibraryUnitErrorsTask.DESCRIPTOR);
registerExtension(taskId, ParseDartTask.DESCRIPTOR);
registerExtension(taskId, ResolveLibraryTypeNamesTask.DESCRIPTOR);
registerExtension(taskId, ResolveReferencesTask.DESCRIPTOR);
diff --git a/pkg/analyzer/lib/src/task/dart.dart b/pkg/analyzer/lib/src/task/dart.dart
index 14f0d95..62d68b5 100644
--- a/pkg/analyzer/lib/src/task/dart.dart
+++ b/pkg/analyzer/lib/src/task/dart.dart
@@ -8,6 +8,7 @@
import 'dart:math' as math;
import 'package:analyzer/src/generated/ast.dart';
+import 'package:analyzer/src/generated/constant.dart';
import 'package:analyzer/src/generated/element.dart';
import 'package:analyzer/src/generated/engine.dart' hide AnalysisTask;
import 'package:analyzer/src/generated/error.dart';
@@ -19,66 +20,108 @@
import 'package:analyzer/src/generated/sdk.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/task/general.dart';
+import 'package:analyzer/src/task/model.dart';
import 'package:analyzer/task/dart.dart';
import 'package:analyzer/task/general.dart';
import 'package:analyzer/task/model.dart';
/**
+ * The [ResultCachingPolicy] for ASTs.
+ */
+const ResultCachingPolicy AST_CACHING_POLICY =
+ const SimpleResultCachingPolicy(256, 64);
+
+/**
* The errors produced while resolving a library directives.
*
* The list will be empty if there were no errors, but will not be `null`.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
-final ResultDescriptor<List<AnalysisError>> BUILD_DIRECTIVES_ERRORS =
- new ResultDescriptor<List<AnalysisError>>(
- 'BUILD_DIRECTIVES_ERRORS', AnalysisError.NO_ERRORS,
- contributesTo: DART_ERRORS);
+final ListResultDescriptor<AnalysisError> BUILD_DIRECTIVES_ERRORS =
+ new ListResultDescriptor<AnalysisError>(
+ 'BUILD_DIRECTIVES_ERRORS', AnalysisError.NO_ERRORS);
/**
* The errors produced while building function type aliases.
*
* The list will be empty if there were no errors, but will not be `null`.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
-final ResultDescriptor<List<AnalysisError>> BUILD_FUNCTION_TYPE_ALIASES_ERRORS =
- new ResultDescriptor<List<AnalysisError>>(
- 'BUILD_FUNCTION_TYPE_ALIASES_ERRORS', AnalysisError.NO_ERRORS,
- contributesTo: DART_ERRORS);
+final ListResultDescriptor<AnalysisError> BUILD_FUNCTION_TYPE_ALIASES_ERRORS =
+ new ListResultDescriptor<AnalysisError>(
+ 'BUILD_FUNCTION_TYPE_ALIASES_ERRORS', AnalysisError.NO_ERRORS);
/**
* The errors produced while building a library element.
*
* The list will be empty if there were no errors, but will not be `null`.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
-final ResultDescriptor<List<AnalysisError>> BUILD_LIBRARY_ERRORS =
- new ResultDescriptor<List<AnalysisError>>(
- 'BUILD_LIBRARY_ERRORS', AnalysisError.NO_ERRORS,
- contributesTo: DART_ERRORS);
+final ListResultDescriptor<AnalysisError> BUILD_LIBRARY_ERRORS =
+ new ListResultDescriptor<AnalysisError>(
+ 'BUILD_LIBRARY_ERRORS', AnalysisError.NO_ERRORS);
/**
- * The [ClassElement]s of a [LibrarySpecificUnit].
+ * The [ClassElement]s of a [Source] representing a Dart library.
+ *
+ * The list contains the elements for all of the classes defined in the library,
+ * not just those in the defining compilation unit. The list will be empty if
+ * there are no classes, but will not be `null`.
*/
final ListResultDescriptor<ClassElement> CLASS_ELEMENTS =
- new ListResultDescriptor<ClassElement>('CLASS_ELEMENTS', null);
+ new ListResultDescriptor<ClassElement>('CLASS_ELEMENTS', null,
+ cachingPolicy: ELEMENT_CACHING_POLICY);
+
+/**
+ * A list of the [ConstantEvaluationTarget]s defined in a unit. This includes
+ * constants defined at top level, statically inside classes, and local to
+ * functions, as well as constant constructors, annotations, and default values
+ * of parameters to constant constructors.
+ */
+final ListResultDescriptor<ConstantEvaluationTarget> COMPILATION_UNIT_CONSTANTS =
+ new ListResultDescriptor<ConstantEvaluationTarget>(
+ 'COMPILATION_UNIT_CONSTANTS', null,
+ cachingPolicy: ELEMENT_CACHING_POLICY);
/**
* The element model associated with a single compilation unit.
*
- * The result is only available for targets representing a Dart compilation unit.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
final ResultDescriptor<CompilationUnitElement> COMPILATION_UNIT_ELEMENT =
new ResultDescriptor<CompilationUnitElement>(
- 'COMPILATION_UNIT_ELEMENT', null);
+ 'COMPILATION_UNIT_ELEMENT', null,
+ cachingPolicy: ELEMENT_CACHING_POLICY);
+
+/**
+ * The list of [ConstantEvaluationTarget]s on which the target constant element
+ * depends.
+ *
+ * The result is only available for targets representing a
+ * [ConstantEvaluationTarget] (i.e. a constant variable declaration, a constant
+ * constructor, or a parameter element with a default value).
+ */
+final ListResultDescriptor<ConstantEvaluationTarget> CONSTANT_DEPENDENCIES =
+ new ListResultDescriptor<ConstantEvaluationTarget>(
+ 'CONSTANT_DEPENDENCIES', const <ConstantEvaluationTarget>[]);
+
+/**
+ * A [ConstantEvaluationTarget] that has been successfully constant-evaluated.
+ *
+ * TODO(paulberry): is ELEMENT_CACHING_POLICY the correct caching policy?
+ */
+final ResultDescriptor<ConstantEvaluationTarget> CONSTANT_VALUE =
+ new ResultDescriptor<ConstantEvaluationTarget>('CONSTANT_VALUE', null,
+ cachingPolicy: ELEMENT_CACHING_POLICY);
/**
* The [ConstructorElement]s of a [ClassElement].
*/
-final ResultDescriptor<List<ConstructorElement>> CONSTRUCTORS =
- new ResultDescriptor<List<ConstructorElement>>('CONSTRUCTORS', null);
+final ListResultDescriptor<ConstructorElement> CONSTRUCTORS =
+ new ListResultDescriptor<ConstructorElement>('CONSTRUCTORS', null);
/**
* The errors produced while building a [ClassElement] constructors.
@@ -87,15 +130,29 @@
*
* The result is only available for targets representing a [ClassElement].
*/
-final ResultDescriptor<List<AnalysisError>> CONSTRUCTORS_ERRORS =
- new ResultDescriptor<List<AnalysisError>>(
+final ListResultDescriptor<AnalysisError> CONSTRUCTORS_ERRORS =
+ new ListResultDescriptor<AnalysisError>(
'CONSTRUCTORS_ERRORS', AnalysisError.NO_ERRORS);
/**
+ * The sources representing the libraries that include a given source as a part.
+ *
+ * The result is only available for [Source]s representing a compilation unit.
+ */
+final ListResultDescriptor<Source> CONTAINING_LIBRARIES =
+ new ListResultDescriptor<Source>('CONTAINING_LIBRARIES', Source.EMPTY_LIST);
+
+/**
+ * The [ResultCachingPolicy] for [Element]s.
+ */
+const ResultCachingPolicy ELEMENT_CACHING_POLICY =
+ const SimpleResultCachingPolicy(-1, -1);
+
+/**
* The sources representing the export closure of a library.
* The [Source]s include only library sources, not their units.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ListResultDescriptor<Source> EXPORT_SOURCE_CLOSURE =
new ListResultDescriptor<Source>('EXPORT_SOURCE_CLOSURE', null);
@@ -105,17 +162,17 @@
*
* The list will be empty if there were no errors, but will not be `null`.
*
- * The result is only available for targets representing a Dart compilation unit.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
-final ResultDescriptor<List<AnalysisError>> HINTS =
- new ResultDescriptor<List<AnalysisError>>(
- 'HINT_ERRORS', AnalysisError.NO_ERRORS, contributesTo: DART_ERRORS);
+final ListResultDescriptor<AnalysisError> HINTS =
+ new ListResultDescriptor<AnalysisError>(
+ 'HINT_ERRORS', AnalysisError.NO_ERRORS);
/**
* The sources representing the import closure of a library.
* The [Source]s include only library sources, not their units.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ListResultDescriptor<Source> IMPORT_SOURCE_CLOSURE =
new ListResultDescriptor<Source>('IMPORT_SOURCE_CLOSURE', null);
@@ -126,10 +183,11 @@
* The [LibraryElement] and its [CompilationUnitElement]s are attached to each
* other. Directives 'library', 'part' and 'part of' are resolved.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT1 =
- new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT1', null);
+ new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT1', null,
+ cachingPolicy: ELEMENT_CACHING_POLICY);
/**
* The partial [LibraryElement] associated with a library.
@@ -137,20 +195,22 @@
* In addition to [LIBRARY_ELEMENT1] [LibraryElement.imports] and
* [LibraryElement.exports] are set.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT2 =
- new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT2', null);
+ new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT2', null,
+ cachingPolicy: ELEMENT_CACHING_POLICY);
/**
* The partial [LibraryElement] associated with a library.
*
* In addition to [LIBRARY_ELEMENT2] the [LibraryElement.publicNamespace] is set.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT3 =
- new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT3', null);
+ new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT3', null,
+ cachingPolicy: ELEMENT_CACHING_POLICY);
/**
* The partial [LibraryElement] associated with a library.
@@ -161,119 +221,148 @@
*
* Also [LibraryElement.exportNamespace] is set.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT4 =
- new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT4', null);
+ new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT4', null,
+ cachingPolicy: ELEMENT_CACHING_POLICY);
/**
* The partial [LibraryElement] associated with a library.
*
* [LIBRARY_ELEMENT4] plus [RESOLVED_UNIT4] for every unit.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT5 =
- new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT5', null);
+ new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT5', null,
+ cachingPolicy: ELEMENT_CACHING_POLICY);
+
+/**
+ * The flag specifying whether all analysis errors are computed in a specific
+ * library.
+ *
+ * The result is only available for [Source]s representing a library.
+ */
+final ResultDescriptor<bool> LIBRARY_ERRORS_READY =
+ new ResultDescriptor<bool>('LIBRARY_ERRORS_READY', false);
+
+/**
+ * The analysis errors associated with a compilation unit in a specific library.
+ *
+ * The result is only available for [LibrarySpecificUnit]s.
+ */
+final ListResultDescriptor<AnalysisError> LIBRARY_UNIT_ERRORS =
+ new ListResultDescriptor<AnalysisError>(
+ 'LIBRARY_UNIT_ERRORS', AnalysisError.NO_ERRORS);
/**
* The errors produced while parsing a compilation unit.
*
* The list will be empty if there were no errors, but will not be `null`.
*
- * The result is only available for targets representing a Dart compilation unit.
+ * The result is only available for [Source]s representing a compilation unit.
*/
-final ResultDescriptor<List<AnalysisError>> PARSE_ERRORS =
- new ResultDescriptor<List<AnalysisError>>(
- 'PARSE_ERRORS', AnalysisError.NO_ERRORS, contributesTo: DART_ERRORS);
+final ListResultDescriptor<AnalysisError> PARSE_ERRORS =
+ new ListResultDescriptor<AnalysisError>(
+ 'PARSE_ERRORS', AnalysisError.NO_ERRORS);
/**
* The errors produced while resolving references.
*
* The list will be empty if there were no errors, but will not be `null`.
*
- * The result is only available for targets representing a unit.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
-final ResultDescriptor<List<AnalysisError>> RESOLVE_REFERENCES_ERRORS =
- new ResultDescriptor<List<AnalysisError>>(
- 'RESOLVE_REFERENCES_ERRORS', AnalysisError.NO_ERRORS,
- contributesTo: DART_ERRORS);
+final ListResultDescriptor<AnalysisError> RESOLVE_REFERENCES_ERRORS =
+ new ListResultDescriptor<AnalysisError>(
+ 'RESOLVE_REFERENCES_ERRORS', AnalysisError.NO_ERRORS);
/**
* The errors produced while resolving type names.
*
* The list will be empty if there were no errors, but will not be `null`.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
-final ResultDescriptor<List<AnalysisError>> RESOLVE_TYPE_NAMES_ERRORS =
- new ResultDescriptor<List<AnalysisError>>(
- 'RESOLVE_TYPE_NAMES_ERRORS', AnalysisError.NO_ERRORS,
- contributesTo: DART_ERRORS);
+final ListResultDescriptor<AnalysisError> RESOLVE_TYPE_NAMES_ERRORS =
+ new ListResultDescriptor<AnalysisError>(
+ 'RESOLVE_TYPE_NAMES_ERRORS', AnalysisError.NO_ERRORS);
/**
* The partially resolved [CompilationUnit] associated with a unit.
*
* All declarations bound to the element defined by the declaration.
*
- * The result is only available for targets representing a unit.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
final ResultDescriptor<CompilationUnit> RESOLVED_UNIT1 =
- new ResultDescriptor<CompilationUnit>('RESOLVED_UNIT1', null);
+ new ResultDescriptor<CompilationUnit>('RESOLVED_UNIT1', null,
+ cachingPolicy: AST_CACHING_POLICY);
/**
* The partially resolved [CompilationUnit] associated with a unit.
*
* All the enum member elements are built.
*
- * The result is only available for targets representing a unit.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
final ResultDescriptor<CompilationUnit> RESOLVED_UNIT2 =
- new ResultDescriptor<CompilationUnit>('RESOLVED_UNIT2', null);
+ new ResultDescriptor<CompilationUnit>('RESOLVED_UNIT2', null,
+ cachingPolicy: AST_CACHING_POLICY);
/**
* The partially resolved [CompilationUnit] associated with a unit.
*
* All the function type aliases are resolved.
*
- * The result is only available for targets representing a unit.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
final ResultDescriptor<CompilationUnit> RESOLVED_UNIT3 =
- new ResultDescriptor<CompilationUnit>('RESOLVED_UNIT3', null);
+ new ResultDescriptor<CompilationUnit>('RESOLVED_UNIT3', null,
+ cachingPolicy: AST_CACHING_POLICY);
/**
* The partially resolved [CompilationUnit] associated with a unit.
*
* [RESOLVED_UNIT3] with resolved type names.
*
- * The result is only available for targets representing a unit.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
final ResultDescriptor<CompilationUnit> RESOLVED_UNIT4 =
- new ResultDescriptor<CompilationUnit>('RESOLVED_UNIT4', null);
+ new ResultDescriptor<CompilationUnit>('RESOLVED_UNIT4', null,
+ cachingPolicy: AST_CACHING_POLICY);
/**
* The partially resolved [CompilationUnit] associated with a unit.
*
* [RESOLVED_UNIT4] plus resolved local variables and formal parameters.
*
- * The result is only available for targets representing a unit.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
final ResultDescriptor<CompilationUnit> RESOLVED_UNIT5 =
- new ResultDescriptor<CompilationUnit>('RESOLVED_UNIT5', null);
+ new ResultDescriptor<CompilationUnit>('RESOLVED_UNIT5', null,
+ cachingPolicy: AST_CACHING_POLICY);
/**
* The errors produced while scanning a compilation unit.
*
* The list will be empty if there were no errors, but will not be `null`.
*
- * The result is only available for targets representing a Dart compilation unit.
+ * The result is only available for [Source]s representing a compilation unit.
*/
-final ResultDescriptor<List<AnalysisError>> SCAN_ERRORS =
- new ResultDescriptor<List<AnalysisError>>(
- 'SCAN_ERRORS', AnalysisError.NO_ERRORS, contributesTo: DART_ERRORS);
+final ListResultDescriptor<AnalysisError> SCAN_ERRORS =
+ new ListResultDescriptor<AnalysisError>(
+ 'SCAN_ERRORS', AnalysisError.NO_ERRORS);
/**
- * The [TypeProvider] of the context.
+ * The [ResultCachingPolicy] for [TOKEN_STREAM].
+ */
+const ResultCachingPolicy TOKEN_STREAM_CACHING_POLICY =
+ const SimpleResultCachingPolicy(1, 1);
+
+/**
+ * The [TypeProvider] of the [AnalysisContext].
*/
final ResultDescriptor<TypeProvider> TYPE_PROVIDER =
new ResultDescriptor<TypeProvider>('TYPE_PROVIDER', null);
@@ -282,24 +371,26 @@
* The [UsedImportedElements] of a [LibrarySpecificUnit].
*/
final ResultDescriptor<UsedImportedElements> USED_IMPORTED_ELEMENTS =
- new ResultDescriptor<UsedImportedElements>('USED_IMPORTED_ELEMENTS', null);
+ new ResultDescriptor<UsedImportedElements>('USED_IMPORTED_ELEMENTS', null,
+ cachingPolicy: ELEMENT_CACHING_POLICY);
/**
* The [UsedLocalElements] of a [LibrarySpecificUnit].
*/
final ResultDescriptor<UsedLocalElements> USED_LOCAL_ELEMENTS =
- new ResultDescriptor<UsedLocalElements>('USED_LOCAL_ELEMENTS', null);
+ new ResultDescriptor<UsedLocalElements>('USED_LOCAL_ELEMENTS', null,
+ cachingPolicy: ELEMENT_CACHING_POLICY);
/**
* The errors produced while verifying a compilation unit.
*
* The list will be empty if there were no errors, but will not be `null`.
*
- * The result is only available for targets representing a Dart compilation unit.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
-final ResultDescriptor<List<AnalysisError>> VERIFY_ERRORS =
- new ResultDescriptor<List<AnalysisError>>(
- 'VERIFY_ERRORS', AnalysisError.NO_ERRORS, contributesTo: DART_ERRORS);
+final ListResultDescriptor<AnalysisError> VERIFY_ERRORS =
+ new ListResultDescriptor<AnalysisError>(
+ 'VERIFY_ERRORS', AnalysisError.NO_ERRORS);
/**
* A task that builds implicit constructors for a [ClassElement], or keeps
@@ -358,7 +449,7 @@
}
if (_findForwardedConstructors(classElement, superType, callback)) {
if (implicitConstructors.isEmpty) {
- errors.add(new AnalysisError.con2(classElement.source,
+ errors.add(new AnalysisError(classElement.source,
classElement.nameOffset, classElement.name.length,
CompileTimeErrorCode.MIXIN_HAS_NO_CONSTRUCTORS,
[superType.element.name]));
@@ -381,7 +472,7 @@
if (_findForwardedConstructors(classElement, superType, callback) &&
!constructorFound) {
SourceRange withRange = classElement.withClauseRange;
- errors.add(new AnalysisError.con2(classElement.source, withRange.offset,
+ errors.add(new AnalysisError(classElement.source, withRange.offset,
withRange.length, CompileTimeErrorCode.MIXIN_HAS_NO_CONSTRUCTORS,
[superType.element.name]));
classElement.mixinErrorsReported = true;
@@ -460,7 +551,7 @@
}
implicitConstructor.parameters = implicitParameters;
}
- FunctionTypeImpl type = new FunctionTypeImpl.con1(implicitConstructor);
+ FunctionTypeImpl type = new FunctionTypeImpl(implicitConstructor);
type.typeArguments = classType.typeArguments;
implicitConstructor.type = type;
return implicitConstructor;
@@ -531,12 +622,6 @@
*/
class BuildCompilationUnitElementTask extends SourceBasedAnalysisTask {
/**
- * The name of the input whose value is the line information for the
- * compilation unit.
- */
- static const String LINE_INFO_INPUT_NAME = 'LINE_INFO_INPUT_NAME';
-
- /**
* The name of the input whose value is the AST for the compilation unit.
*/
static const String PARSED_UNIT_INPUT_NAME = 'PARSED_UNIT_INPUT_NAME';
@@ -547,9 +632,9 @@
static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
'BuildCompilationUnitElementTask', createTask, buildInputs,
<ResultDescriptor>[
- CLASS_ELEMENTS,
COMPILATION_UNIT_ELEMENT,
- RESOLVED_UNIT1
+ RESOLVED_UNIT1,
+ COMPILATION_UNIT_CONSTANTS
]);
/**
@@ -568,6 +653,7 @@
//
// Prepare inputs.
//
+ LibrarySpecificUnit librarySpecificUnit = target;
Source source = getRequiredSource();
CompilationUnit unit = getRequiredInput(PARSED_UNIT_INPUT_NAME);
//
@@ -575,13 +661,20 @@
//
unit = AstCloner.clone(unit);
CompilationUnitBuilder builder = new CompilationUnitBuilder();
- CompilationUnitElement element = builder.buildCompilationUnit(source, unit);
+ CompilationUnitElement element =
+ builder.buildCompilationUnit(source, unit, librarySpecificUnit.library);
+ ConstantFinder constantFinder =
+ new ConstantFinder(context, source, librarySpecificUnit.library);
+ unit.accept(constantFinder);
+ List<ConstantEvaluationTarget> constants =
+ new List<ConstantEvaluationTarget>.from(
+ constantFinder.constantsToCompute);
//
// Record outputs.
//
- outputs[CLASS_ELEMENTS] = element.types;
outputs[COMPILATION_UNIT_ELEMENT] = element;
outputs[RESOLVED_UNIT1] = unit;
+ outputs[COMPILATION_UNIT_CONSTANTS] = constants;
}
/**
@@ -724,9 +817,8 @@
ErrorCode errorCode = (importElement.isDeferred
? StaticWarningCode.IMPORT_OF_NON_LIBRARY
: CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY);
- errors.add(new AnalysisError.con2(importedSource,
- uriLiteral.offset, uriLiteral.length, errorCode,
- [uriLiteral.toSource()]));
+ errors.add(new AnalysisError(importedSource, uriLiteral.offset,
+ uriLiteral.length, errorCode, [uriLiteral.toSource()]));
}
}
}
@@ -751,9 +843,8 @@
directive.element = exportElement;
exports.add(exportElement);
if (exportSourceKindMap[exportedSource] != SourceKind.LIBRARY) {
- errors.add(new AnalysisError.con2(exportedSource,
- uriLiteral.offset, uriLiteral.length,
- CompileTimeErrorCode.EXPORT_OF_NON_LIBRARY,
+ errors.add(new AnalysisError(exportedSource, uriLiteral.offset,
+ uriLiteral.length, CompileTimeErrorCode.EXPORT_OF_NON_LIBRARY,
[uriLiteral.toSource()]));
}
}
@@ -1215,7 +1306,7 @@
String partLibraryName =
_getPartLibraryName(partSource, partUnit, directivesToResolve);
if (partLibraryName == null) {
- errors.add(new AnalysisError.con2(librarySource, partUri.offset,
+ errors.add(new AnalysisError(librarySource, partUri.offset,
partUri.length, CompileTimeErrorCode.PART_OF_NON_PART,
[partUri.toSource()]));
} else if (libraryNameNode == null) {
@@ -1225,7 +1316,7 @@
partsLibraryName = null;
}
} else if (libraryNameNode.name != partLibraryName) {
- errors.add(new AnalysisError.con2(librarySource, partUri.offset,
+ errors.add(new AnalysisError(librarySource, partUri.offset,
partUri.length, StaticWarningCode.PART_OF_DIFFERENT_LIBRARY, [
libraryNameNode.name,
partLibraryName
@@ -1243,11 +1334,11 @@
AnalysisError error;
if (partsLibraryName != _UNKNOWN_LIBRARY_NAME &&
partsLibraryName != null) {
- error = new AnalysisErrorWithProperties.con1(librarySource,
+ error = new AnalysisErrorWithProperties(librarySource, 0, 0,
ResolverErrorCode.MISSING_LIBRARY_DIRECTIVE_WITH_PART)
..setProperty(ErrorProperty.PARTS_LIBRARY_NAME, partsLibraryName);
} else {
- error = new AnalysisError.con1(librarySource,
+ error = new AnalysisError(librarySource, 0, 0,
ResolverErrorCode.MISSING_LIBRARY_DIRECTIVE_WITH_PART);
}
errors.add(error);
@@ -1571,6 +1662,381 @@
}
/**
+ * A task that computes [CONSTANT_DEPENDENCIES] for a constant.
+ */
+class ComputeConstantDependenciesTask extends ConstantEvaluationAnalysisTask {
+ /**
+ * The name of the [RESOLVED_UNIT] input.
+ */
+ static const String UNIT_INPUT = 'UNIT_INPUT';
+
+ static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
+ 'ComputeConstantDependenciesTask', createTask, buildInputs,
+ <ResultDescriptor>[CONSTANT_DEPENDENCIES]);
+
+ ComputeConstantDependenciesTask(
+ InternalAnalysisContext context, ConstantEvaluationTarget constant)
+ : super(context, constant);
+
+ @override
+ TaskDescriptor get descriptor => DESCRIPTOR;
+
+ @override
+ void internalPerform() {
+ //
+ // Prepare inputs.
+ //
+ // Note: UNIT_INPUT is not needed. It is merely a bookkeeping dependency
+ // to ensure that resolution has occurred before we attempt to determine
+ // constant dependencies.
+ //
+ ConstantEvaluationTarget constant = target;
+ AnalysisContext context = constant.context;
+ TypeProvider typeProvider = context.typeProvider;
+ //
+ // Compute dependencies.
+ //
+ List<ConstantEvaluationTarget> dependencies = <ConstantEvaluationTarget>[];
+ new ConstantEvaluationEngine(typeProvider, context.declaredVariables)
+ .computeDependencies(constant, dependencies.add);
+ //
+ // Record outputs.
+ //
+ outputs[CONSTANT_DEPENDENCIES] = dependencies;
+ }
+
+ /**
+ * Return a map from the names of the inputs of this kind of task to the task
+ * input descriptors describing those inputs for a task with the
+ * given [target].
+ */
+ static Map<String, TaskInput> buildInputs(ConstantEvaluationTarget target) {
+ if (target is Element) {
+ CompilationUnitElementImpl unit = (target as Element)
+ .getAncestor((Element element) => element is CompilationUnitElement);
+ return <String, TaskInput>{
+ UNIT_INPUT: RESOLVED_UNIT
+ .of(new LibrarySpecificUnit(unit.librarySource, target.source))
+ };
+ } else if (target is ConstantEvaluationTarget_Annotation) {
+ return <String, TaskInput>{
+ UNIT_INPUT: RESOLVED_UNIT
+ .of(new LibrarySpecificUnit(target.librarySource, target.source))
+ };
+ } else {
+ // Should never happen.
+ assert(false);
+ return <String, TaskInput>{};
+ }
+ }
+
+ /**
+ * Create a [ResolveReferencesTask] based on the given [target] in
+ * the given [context].
+ */
+ static ComputeConstantDependenciesTask createTask(
+ AnalysisContext context, AnalysisTarget target) {
+ return new ComputeConstantDependenciesTask(context, target);
+ }
+}
+
+/**
+ * A task that computes the value of a constant ([CONSTANT_VALUE]) and
+ * stores it in the element model.
+ */
+class ComputeConstantValueTask extends ConstantEvaluationAnalysisTask {
+ /**
+ * The name of the input which ensures that dependent constants are evaluated
+ * before the target.
+ */
+ static const String DEPENDENCIES_INPUT = 'DEPENDENCIES_INPUT';
+
+ static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
+ 'ComputeConstantValueTask', createTask, buildInputs,
+ <ResultDescriptor>[CONSTANT_VALUE]);
+
+ ComputeConstantValueTask(
+ InternalAnalysisContext context, ConstantEvaluationTarget constant)
+ : super(context, constant);
+
+ @override
+ TaskDescriptor get descriptor => DESCRIPTOR;
+
+ @override
+ void internalPerform() {
+ //
+ // Prepare inputs.
+ //
+ // Note: DEPENDENCIES_INPUT is not needed. It is merely a bookkeeping
+ // dependency to ensure that the constants that this constant depends on
+ // are computed first.
+ ConstantEvaluationTarget constant = target;
+ AnalysisContext context = constant.context;
+ TypeProvider typeProvider = context.typeProvider;
+ //
+ // Compute the value of the constant.
+ //
+ new ConstantEvaluationEngine(typeProvider, context.declaredVariables)
+ .computeConstantValue(constant);
+ //
+ // Record outputs.
+ //
+ outputs[CONSTANT_VALUE] = constant;
+ }
+
+ /**
+ * Return a map from the names of the inputs of this kind of task to the task
+ * input descriptors describing those inputs for a task with the given
+ * [target].
+ */
+ static Map<String, TaskInput> buildInputs(ConstantEvaluationTarget target) {
+ return <String, TaskInput>{
+ DEPENDENCIES_INPUT:
+ CONSTANT_DEPENDENCIES.of(target).toListOf(CONSTANT_VALUE)
+ };
+ }
+
+ /**
+ * Create a [ComputeConstantValueTask] based on the given [target] in the
+ * given [context].
+ */
+ static ComputeConstantValueTask createTask(
+ AnalysisContext context, AnalysisTarget target) {
+ return new ComputeConstantValueTask(context, target);
+ }
+}
+
+/**
+ * A base class for analysis tasks whose target is expected to be a
+ * [ConstantEvaluationTarget].
+ */
+abstract class ConstantEvaluationAnalysisTask extends AnalysisTask {
+ /**
+ * Initialize a newly created task to perform analysis within the given
+ * [context] in order to produce results for the given [constant].
+ */
+ ConstantEvaluationAnalysisTask(
+ AnalysisContext context, ConstantEvaluationTarget constant)
+ : super(context, constant);
+
+ @override
+ String get description {
+ Source source = target.source;
+ String sourceName = source == null ? '<unknown source>' : source.fullName;
+ return '${descriptor.name} for element $target in source $sourceName';
+ }
+}
+
+/**
+ * Interface for [AnalysisTarget]s for which constant evaluation can be
+ * performed.
+ */
+abstract class ConstantEvaluationTarget extends AnalysisTarget {
+ /**
+ * Return the [AnalysisContext] which should be used to evaluate this
+ * constant.
+ */
+ AnalysisContext get context;
+}
+
+/**
+ * A task that computes a list of the libraries containing the target source.
+ */
+class ContainingLibrariesTask extends SourceBasedAnalysisTask {
+ /**
+ * The task descriptor describing this kind of task.
+ */
+ static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
+ 'ContainingLibrariesTask', createTask, buildInputs,
+ <ResultDescriptor>[CONTAINING_LIBRARIES]);
+
+ ContainingLibrariesTask(
+ InternalAnalysisContext context, AnalysisTarget target)
+ : super(context, target);
+
+ @override
+ TaskDescriptor get descriptor => DESCRIPTOR;
+
+ @override
+ void internalPerform() {
+ // TODO(brianwilkerson) This value can change as new libraries are analyzed
+ // so we need some way of making sure that this result is removed from the
+ // cache appropriately.
+ Source source = getRequiredSource();
+ outputs[CONTAINING_LIBRARIES] = context.getLibrariesContaining(source);
+ }
+
+ /**
+ * Return a map from the names of the inputs of this kind of task to the task
+ * input descriptors describing those inputs for a task with the
+ * given [target].
+ */
+ static Map<String, TaskInput> buildInputs(Source target) {
+ return <String, TaskInput>{};
+ }
+
+ /**
+ * Create a [ContainingLibrariesTask] based on the given [target] in the given
+ * [context].
+ */
+ static ContainingLibrariesTask createTask(
+ AnalysisContext context, AnalysisTarget target) {
+ return new ContainingLibrariesTask(context, target);
+ }
+}
+
+/**
+ * A task that merges all of the errors for a single source into a single list
+ * of errors.
+ */
+class DartErrorsTask extends SourceBasedAnalysisTask {
+ /**
+ * The name of the [BUILD_DIRECTIVES_ERRORS] input.
+ */
+ static const String BUILD_DIRECTIVES_ERRORS_INPUT = 'BUILD_DIRECTIVES_ERRORS';
+
+ /**
+ * The name of the [BUILD_LIBRARY_ERRORS] input.
+ */
+ static const String BUILD_LIBRARY_ERRORS_INPUT = 'BUILD_LIBRARY_ERRORS';
+
+ /**
+ * The name of the [LIBRARY_UNIT_ERRORS] input.
+ */
+ static const String LIBRARY_UNIT_ERRORS_INPUT = 'LIBRARY_UNIT_ERRORS';
+
+ /**
+ * The name of the [PARSE_ERRORS] input.
+ */
+ static const String PARSE_ERRORS_INPUT = 'PARSE_ERRORS';
+
+ /**
+ * The name of the [SCAN_ERRORS] input.
+ */
+ static const String SCAN_ERRORS_INPUT = 'SCAN_ERRORS';
+
+ /**
+ * The task descriptor describing this kind of task.
+ */
+ static final TaskDescriptor DESCRIPTOR = new TaskDescriptor('DartErrorsTask',
+ createTask, buildInputs, <ResultDescriptor>[DART_ERRORS]);
+
+ DartErrorsTask(InternalAnalysisContext context, AnalysisTarget target)
+ : super(context, target);
+
+ @override
+ TaskDescriptor get descriptor => DESCRIPTOR;
+
+ @override
+ void internalPerform() {
+ //
+ // Prepare inputs.
+ //
+ List<List<AnalysisError>> errorLists = <List<AnalysisError>>[];
+ errorLists.add(getRequiredInput(BUILD_DIRECTIVES_ERRORS_INPUT));
+ errorLists.add(getRequiredInput(BUILD_LIBRARY_ERRORS_INPUT));
+ errorLists.add(getRequiredInput(PARSE_ERRORS_INPUT));
+ errorLists.add(getRequiredInput(SCAN_ERRORS_INPUT));
+ Map<Source, List<AnalysisError>> unitErrors =
+ getRequiredInput(LIBRARY_UNIT_ERRORS_INPUT);
+ for (List<AnalysisError> errors in unitErrors.values) {
+ errorLists.add(errors);
+ }
+ //
+ // Record outputs.
+ //
+ outputs[DART_ERRORS] = AnalysisError.mergeLists(errorLists);
+ }
+
+ /**
+ * Return a map from the names of the inputs of this kind of task to the task
+ * input descriptors describing those inputs for a task with the
+ * given [target].
+ */
+ static Map<String, TaskInput> buildInputs(Source target) {
+ return <String, TaskInput>{
+ BUILD_DIRECTIVES_ERRORS_INPUT: BUILD_DIRECTIVES_ERRORS.of(target),
+ BUILD_LIBRARY_ERRORS_INPUT: BUILD_LIBRARY_ERRORS.of(target),
+ PARSE_ERRORS_INPUT: PARSE_ERRORS.of(target),
+ SCAN_ERRORS_INPUT: SCAN_ERRORS.of(target),
+ LIBRARY_UNIT_ERRORS_INPUT: CONTAINING_LIBRARIES
+ .of(target)
+ .toMap((Source library) {
+ LibrarySpecificUnit unit = new LibrarySpecificUnit(library, target);
+ return LIBRARY_UNIT_ERRORS.of(unit);
+ })
+ };
+ }
+
+ /**
+ * Create a [DartErrorsTask] based on the given [target] in the given
+ * [context].
+ */
+ static DartErrorsTask createTask(
+ AnalysisContext context, AnalysisTarget target) {
+ return new DartErrorsTask(context, target);
+ }
+}
+
+/**
+ * A task that builds [CONSTANT_RESOLVED_UNIT] for a unit.
+ */
+class EvaluateUnitConstantsTask extends SourceBasedAnalysisTask {
+ /**
+ * The name of the [RESOLVED_UNIT] input.
+ */
+ static const String UNIT_INPUT = 'UNIT_INPUT';
+
+ /**
+ * The name of the [CONSTANT_VALUE] input.
+ */
+ static const String CONSTANT_VALUES = 'CONSTANT_VALUES';
+
+ /**
+ * The task descriptor describing this kind of task.
+ */
+ static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
+ 'EvaluateUnitConstantsTask', createTask, buildInputs,
+ <ResultDescriptor>[CONSTANT_RESOLVED_UNIT]);
+
+ EvaluateUnitConstantsTask(AnalysisContext context, LibrarySpecificUnit target)
+ : super(context, target);
+
+ @override
+ TaskDescriptor get descriptor => DESCRIPTOR;
+
+ @override
+ void internalPerform() {
+ // No actual work needs to be performed; the task manager will ensure that
+ // all constants are evaluated before this method is called.
+ CompilationUnit unit = getRequiredInput(UNIT_INPUT);
+ outputs[CONSTANT_RESOLVED_UNIT] = unit;
+ }
+
+ /**
+ * Return a map from the names of the inputs of this kind of task to the task
+ * input descriptors describing those inputs for a task with the
+ * given [target].
+ */
+ static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) {
+ return <String, TaskInput>{
+ UNIT_INPUT: RESOLVED_UNIT.of(target),
+ CONSTANT_VALUES:
+ COMPILATION_UNIT_CONSTANTS.of(target).toListOf(CONSTANT_VALUE)
+ };
+ }
+
+ /**
+ * Create an [EvaluateUnitConstantsTask] based on the given [target] in
+ * the given [context].
+ */
+ static EvaluateUnitConstantsTask createTask(
+ AnalysisContext context, LibrarySpecificUnit target) {
+ return new EvaluateUnitConstantsTask(context, target);
+ }
+}
+
+/**
* The helper for building the export [Namespace] of a [LibraryElement].
*/
class ExportNamespaceBuilder {
@@ -1798,7 +2264,7 @@
/**
* The name of the [RESOLVED_UNIT] input.
*/
- static const String UNIT_INPUT = 'UNIT_INPUT';
+ static const String RESOLVED_UNIT_INPUT = 'RESOLVED_UNIT';
/**
* The name of a list of [USED_LOCAL_ELEMENTS] for each library unit input.
@@ -1830,7 +2296,7 @@
//
// Prepare inputs.
//
- CompilationUnit unit = getRequiredInput(UNIT_INPUT);
+ CompilationUnit unit = getRequiredInput(RESOLVED_UNIT_INPUT);
List<UsedImportedElements> usedImportedElementsList =
getRequiredInput(USED_IMPORTED_ELEMENTS_INPUT);
List<UsedLocalElements> usedLocalElementsList =
@@ -1883,7 +2349,7 @@
static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) {
Source libSource = target.library;
return <String, TaskInput>{
- UNIT_INPUT: RESOLVED_UNIT.of(target),
+ RESOLVED_UNIT_INPUT: RESOLVED_UNIT.of(target),
USED_LOCAL_ELEMENTS_INPUT: UNITS.of(libSource).toList((unit) {
LibrarySpecificUnit target = new LibrarySpecificUnit(libSource, unit);
return USED_LOCAL_ELEMENTS.of(target);
@@ -1906,20 +2372,136 @@
}
/**
- * The memento for [ParseDartTask].
+ * A task computes all of the errors of all of the units for a single
+ * library source and sets the [LIBRARY_ERRORS_READY] flag.
*/
-class ParseDartMemento {
- final Token inputTokenStream;
- final List<Source> exportedLibraries;
- final List<Source> importedLibraries;
- final List<Source> includedParts;
- final List<AnalysisError> parseErrors;
- final CompilationUnit parsedUnit;
- final SourceKind sourceKind;
- final List<Source> units;
- ParseDartMemento(this.inputTokenStream, this.exportedLibraries,
- this.importedLibraries, this.includedParts, this.parseErrors,
- this.parsedUnit, this.sourceKind, this.units);
+class LibraryErrorsReadyTask extends SourceBasedAnalysisTask {
+ /**
+ * The task descriptor describing this kind of task.
+ */
+ static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
+ 'LibraryErrorsReadyTask', createTask, buildInputs,
+ <ResultDescriptor>[LIBRARY_ERRORS_READY]);
+
+ LibraryErrorsReadyTask(InternalAnalysisContext context, AnalysisTarget target)
+ : super(context, target);
+
+ @override
+ TaskDescriptor get descriptor => DESCRIPTOR;
+
+ @override
+ void internalPerform() {
+ outputs[LIBRARY_ERRORS_READY] = true;
+ }
+
+ /**
+ * Return a map from the names of the inputs of this kind of task to the task
+ * input descriptors describing those inputs for a task with the
+ * given [library].
+ */
+ static Map<String, TaskInput> buildInputs(Source library) {
+ return <String, TaskInput>{
+ 'allErrors': UNITS.of(library).toListOf(DART_ERRORS)
+ };
+ }
+
+ /**
+ * Create a [LibraryErrorsReadyTask] based on the given [target] in the given
+ * [context].
+ */
+ static LibraryErrorsReadyTask createTask(
+ AnalysisContext context, AnalysisTarget target) {
+ return new LibraryErrorsReadyTask(context, target);
+ }
+}
+
+/**
+ * A task that merges all of the errors for a single source into a single list
+ * of errors.
+ */
+class LibraryUnitErrorsTask extends SourceBasedAnalysisTask {
+ /**
+ * The name of the [BUILD_FUNCTION_TYPE_ALIASES_ERRORS] input.
+ */
+ static const String BUILD_FUNCTION_TYPE_ALIASES_ERRORS_INPUT =
+ 'BUILD_FUNCTION_TYPE_ALIASES_ERRORS';
+
+ /**
+ * The name of the [HINTS] input.
+ */
+ static const String HINTS_INPUT = 'HINTS';
+
+ /**
+ * The name of the [RESOLVE_REFERENCES_ERRORS] input.
+ */
+ static const String RESOLVE_REFERENCES_ERRORS_INPUT =
+ 'RESOLVE_REFERENCES_ERRORS';
+
+ /**
+ * The name of the [RESOLVE_TYPE_NAMES_ERRORS] input.
+ */
+ static const String RESOLVE_TYPE_NAMES_ERRORS_INPUT =
+ 'RESOLVE_TYPE_NAMES_ERRORS';
+
+ /**
+ * The name of the [VERIFY_ERRORS] input.
+ */
+ static const String VERIFY_ERRORS_INPUT = 'VERIFY_ERRORS';
+
+ /**
+ * The task descriptor describing this kind of task.
+ */
+ static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
+ 'LibraryUnitErrorsTask', createTask, buildInputs,
+ <ResultDescriptor>[LIBRARY_UNIT_ERRORS]);
+
+ LibraryUnitErrorsTask(InternalAnalysisContext context, AnalysisTarget target)
+ : super(context, target);
+
+ @override
+ TaskDescriptor get descriptor => DESCRIPTOR;
+
+ @override
+ void internalPerform() {
+ //
+ // Prepare inputs.
+ //
+ List<List<AnalysisError>> errorLists = <List<AnalysisError>>[];
+ errorLists.add(getRequiredInput(BUILD_FUNCTION_TYPE_ALIASES_ERRORS_INPUT));
+ errorLists.add(getRequiredInput(HINTS_INPUT));
+ errorLists.add(getRequiredInput(RESOLVE_REFERENCES_ERRORS_INPUT));
+ errorLists.add(getRequiredInput(RESOLVE_TYPE_NAMES_ERRORS_INPUT));
+ errorLists.add(getRequiredInput(VERIFY_ERRORS_INPUT));
+ //
+ // Record outputs.
+ //
+ outputs[LIBRARY_UNIT_ERRORS] = AnalysisError.mergeLists(errorLists);
+ }
+
+ /**
+ * Return a map from the names of the inputs of this kind of task to the task
+ * input descriptors describing those inputs for a task with the
+ * given [unit].
+ */
+ static Map<String, TaskInput> buildInputs(LibrarySpecificUnit unit) {
+ return <String, TaskInput>{
+ BUILD_FUNCTION_TYPE_ALIASES_ERRORS_INPUT:
+ BUILD_FUNCTION_TYPE_ALIASES_ERRORS.of(unit),
+ HINTS_INPUT: HINTS.of(unit),
+ RESOLVE_REFERENCES_ERRORS_INPUT: RESOLVE_REFERENCES_ERRORS.of(unit),
+ RESOLVE_TYPE_NAMES_ERRORS_INPUT: RESOLVE_TYPE_NAMES_ERRORS.of(unit),
+ VERIFY_ERRORS_INPUT: VERIFY_ERRORS.of(unit)
+ };
+ }
+
+ /**
+ * Create a [LibraryUnitErrorsTask] based on the given [target] in the given
+ * [context].
+ */
+ static LibraryUnitErrorsTask createTask(
+ AnalysisContext context, AnalysisTarget target) {
+ return new LibraryUnitErrorsTask(context, target);
+ }
}
/**
@@ -1942,6 +2524,7 @@
*/
static final TaskDescriptor DESCRIPTOR = new TaskDescriptor('ParseDartTask',
createTask, buildInputs, <ResultDescriptor>[
+ EXPLICITLY_IMPORTED_LIBRARIES,
EXPORTED_LIBRARIES,
IMPORTED_LIBRARIES,
INCLUDED_PARTS,
@@ -1967,21 +2550,6 @@
LineInfo lineInfo = getRequiredInput(LINE_INFO_INPUT_NAME);
Token tokenStream = getRequiredInput(TOKEN_STREAM_INPUT_NAME);
- if (inputMemento is ParseDartMemento) {
- ParseDartMemento memento = inputMemento;
- if (identical(memento.inputTokenStream, tokenStream)) {
- outputMemento = memento;
- outputs[EXPORTED_LIBRARIES] = memento.exportedLibraries;
- outputs[IMPORTED_LIBRARIES] = memento.importedLibraries;
- outputs[INCLUDED_PARTS] = memento.includedParts;
- outputs[PARSE_ERRORS] = memento.parseErrors;
- outputs[PARSED_UNIT] = memento.parsedUnit;
- outputs[SOURCE_KIND] = memento.sourceKind;
- outputs[UNITS] = memento.units;
- return;
- }
- }
-
RecordingErrorListener errorListener = new RecordingErrorListener();
Parser parser = new Parser(source, errorListener);
AnalysisOptions options = context.analysisOptions;
@@ -1991,8 +2559,8 @@
bool hasNonPartOfDirective = false;
bool hasPartOfDirective = false;
+ HashSet<Source> explicitlyImportedSourceSet = new HashSet<Source>();
HashSet<Source> exportedSourceSet = new HashSet<Source>();
- HashSet<Source> importedSourceSet = new HashSet<Source>();
HashSet<Source> includedSourceSet = new HashSet<Source>();
for (Directive directive in unit.directives) {
if (directive is PartOfDirective) {
@@ -2006,7 +2574,7 @@
if (directive is ExportDirective) {
exportedSourceSet.add(referencedSource);
} else if (directive is ImportDirective) {
- importedSourceSet.add(referencedSource);
+ explicitlyImportedSourceSet.add(referencedSource);
} else if (directive is PartDirective) {
if (referencedSource != source) {
includedSourceSet.add(referencedSource);
@@ -2022,6 +2590,8 @@
//
// Always include "dart:core" source.
//
+ HashSet<Source> importedSourceSet =
+ new HashSet.from(explicitlyImportedSourceSet);
Source coreLibrarySource = context.sourceFactory.forUri(DartSdk.DART_CORE);
importedSourceSet.add(coreLibrarySource);
//
@@ -2034,11 +2604,14 @@
//
// Record outputs.
//
+ List<Source> explicitlyImportedSources =
+ explicitlyImportedSourceSet.toList();
List<Source> exportedSources = exportedSourceSet.toList();
List<Source> importedSources = importedSourceSet.toList();
List<Source> includedSources = includedSourceSet.toList();
List<AnalysisError> parseErrors = errorListener.errors;
List<Source> unitSources = <Source>[source]..addAll(includedSourceSet);
+ outputs[EXPLICITLY_IMPORTED_LIBRARIES] = explicitlyImportedSources;
outputs[EXPORTED_LIBRARIES] = exportedSources;
outputs[IMPORTED_LIBRARIES] = importedSources;
outputs[INCLUDED_PARTS] = includedSources;
@@ -2046,9 +2619,6 @@
outputs[PARSED_UNIT] = unit;
outputs[SOURCE_KIND] = sourceKind;
outputs[UNITS] = unitSources;
- outputMemento = new ParseDartMemento(tokenStream, exportedSources,
- importedSources, includedSources, parseErrors, unit, sourceKind,
- unitSources);
}
/**
@@ -2099,15 +2669,13 @@
return null;
}
if (code == UriValidationCode.URI_WITH_INTERPOLATION) {
- errorListener.onError(new AnalysisError.con2(librarySource,
- uriLiteral.offset, uriLiteral.length,
- CompileTimeErrorCode.URI_WITH_INTERPOLATION));
+ errorListener.onError(new AnalysisError(librarySource, uriLiteral.offset,
+ uriLiteral.length, CompileTimeErrorCode.URI_WITH_INTERPOLATION));
return null;
}
if (code == UriValidationCode.INVALID_URI) {
- errorListener.onError(new AnalysisError.con2(librarySource,
- uriLiteral.offset, uriLiteral.length,
- CompileTimeErrorCode.INVALID_URI, [uriContent]));
+ errorListener.onError(new AnalysisError(librarySource, uriLiteral.offset,
+ uriLiteral.length, CompileTimeErrorCode.INVALID_URI, [uriContent]));
return null;
}
throw new AnalysisException('Failed to handle validation code: $code');
@@ -2227,8 +2795,10 @@
* The task descriptor describing this kind of task.
*/
static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
- 'ResolveReferencesTask', createTask, buildInputs,
- <ResultDescriptor>[RESOLVED_UNIT]);
+ 'ResolveReferencesTask', createTask, buildInputs, <ResultDescriptor>[
+ RESOLVE_REFERENCES_ERRORS,
+ RESOLVED_UNIT
+ ]);
ResolveReferencesTask(InternalAnalysisContext context, AnalysisTarget target)
: super(context, target);
@@ -2423,17 +2993,6 @@
}
/**
- * The memento for [ScanDartTask].
- */
-class ScanDartMemento {
- final String content;
- final Token tokenStream;
- final LineInfo lineInfo;
- final List<AnalysisError> errors;
- ScanDartMemento(this.content, this.tokenStream, this.lineInfo, this.errors);
-}
-
-/**
* A task that scans the content of a file, producing a set of Dart tokens.
*/
class ScanDartTask extends SourceBasedAnalysisTask {
@@ -2467,17 +3026,6 @@
Source source = getRequiredSource();
String content = getRequiredInput(CONTENT_INPUT_NAME);
- if (inputMemento is ScanDartMemento) {
- ScanDartMemento memento = inputMemento;
- if (memento.content == content) {
- outputMemento = memento;
- outputs[TOKEN_STREAM] = memento.tokenStream;
- outputs[LINE_INFO] = memento.lineInfo;
- outputs[SCAN_ERRORS] = memento.errors;
- return;
- }
- }
-
RecordingErrorListener errorListener = new RecordingErrorListener();
Scanner scanner =
new Scanner(source, new CharSequenceReader(content), errorListener);
@@ -2491,7 +3039,6 @@
outputs[TOKEN_STREAM] = tokenStream;
outputs[LINE_INFO] = lineInfo;
outputs[SCAN_ERRORS] = errors;
- outputMemento = new ScanDartMemento(content, tokenStream, lineInfo, errors);
}
/**
diff --git a/pkg/analyzer/lib/src/task/dart_work_manager.dart b/pkg/analyzer/lib/src/task/dart_work_manager.dart
new file mode 100644
index 0000000..500422f
--- /dev/null
+++ b/pkg/analyzer/lib/src/task/dart_work_manager.dart
@@ -0,0 +1,194 @@
+// Copyright (c) 2015, 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.
+
+library analyzer.src.task.dart_work_manager;
+
+import 'dart:collection';
+
+import 'package:analyzer/src/context/cache.dart';
+import 'package:analyzer/src/generated/engine.dart'
+ show AnalysisEngine, CacheState, InternalAnalysisContext;
+import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/generated/utilities_collection.dart';
+import 'package:analyzer/src/task/dart.dart';
+import 'package:analyzer/src/task/driver.dart';
+import 'package:analyzer/task/dart.dart';
+import 'package:analyzer/task/model.dart';
+
+/**
+ * The manager for Dart specific analysis.
+ */
+class DartWorkManager implements WorkManager {
+ final InternalAnalysisContext context;
+
+ /**
+ * The [TargetedResult]s that should be computed with priority.
+ */
+ final LinkedHashSet<TargetedResult> priorityResultQueue =
+ new LinkedHashSet<TargetedResult>();
+
+ /**
+ * The sources whose kind we don't know yet.
+ */
+ final LinkedHashSet<Source> unknownSourceQueue = new LinkedHashSet<Source>();
+
+ /**
+ * The queue of library sources to process.
+ */
+ final LinkedHashSet<Source> librarySourceQueue = new LinkedHashSet<Source>();
+
+ /**
+ * Initialize a newly created manager.
+ */
+ DartWorkManager(this.context);
+
+ /**
+ * Returns the correctly typed result of `context.analysisCache`.
+ */
+ AnalysisCache get analysisCache => context.analysisCache;
+
+ /**
+ * Specifies that the client want the given [result] of the given [target]
+ * to be computed with priority.
+ */
+ void addPriorityResult(AnalysisTarget target, ResultDescriptor result) {
+ priorityResultQueue.add(new TargetedResult(target, result));
+ }
+
+ /**
+ * Notifies the manager about changes in the explicit source list.
+ */
+ void applyChange(List<Source> addedSources, List<Source> changedSources,
+ List<Source> removedSources) {
+ addedSources = addedSources.where(_isDartSource).toList();
+ changedSources = changedSources.where(_isDartSource).toList();
+ removedSources = removedSources.where(_isDartSource).toList();
+ // unknown queue
+ unknownSourceQueue.addAll(addedSources);
+ unknownSourceQueue.addAll(changedSources);
+ unknownSourceQueue.removeAll(removedSources);
+ // library queue
+ librarySourceQueue.removeAll(changedSources);
+ librarySourceQueue.removeAll(removedSources);
+ // Some of the libraries might have been invalidated, reschedule them.
+ {
+ MapIterator<AnalysisTarget, CacheEntry> iterator =
+ analysisCache.iterator();
+ while (iterator.moveNext()) {
+ AnalysisTarget target = iterator.key;
+ if (_isDartSource(target)) {
+ CacheEntry entry = iterator.value;
+ if (entry.getValue(SOURCE_KIND) == SourceKind.LIBRARY &&
+ entry.getValue(LIBRARY_ERRORS_READY) != true) {
+ librarySourceQueue.add(target);
+ }
+ }
+ }
+ }
+ }
+
+ @override
+ void applyPriorityTargets(List<AnalysisTarget> targets) {
+ // Unschedule the old targets.
+ List<TargetedResult> resultsToUnschedule = <TargetedResult>[];
+ for (TargetedResult result in priorityResultQueue) {
+ if (result.result == LIBRARY_ERRORS_READY) {
+ resultsToUnschedule.add(result);
+ }
+ }
+ priorityResultQueue.removeAll(resultsToUnschedule);
+ // Schedule new targets.
+ for (AnalysisTarget target in targets) {
+ if (_isDartSource(target)) {
+ SourceKind sourceKind = analysisCache.getValue(target, SOURCE_KIND);
+ if (sourceKind == SourceKind.LIBRARY) {
+ addPriorityResult(target, LIBRARY_ERRORS_READY);
+ } else if (sourceKind == SourceKind.PART) {
+ List<Source> libraries = context.getLibrariesContaining(target);
+ for (Source library in libraries) {
+ addPriorityResult(library, LIBRARY_ERRORS_READY);
+ }
+ }
+ }
+ }
+ }
+
+ @override
+ TargetedResult getNextResult() {
+ // Try to find a priority result to compute.
+ while (priorityResultQueue.isNotEmpty) {
+ TargetedResult result = priorityResultQueue.first;
+ if (!_needsComputing(result.target, result.result)) {
+ priorityResultQueue.remove(result);
+ continue;
+ }
+ return result;
+ }
+ // Try to find a new library to analyze.
+ while (librarySourceQueue.isNotEmpty) {
+ Source librarySource = librarySourceQueue.first;
+ // Maybe done with this library.
+ if (!_needsComputing(librarySource, LIBRARY_ERRORS_READY)) {
+ librarySourceQueue.remove(librarySource);
+ continue;
+ }
+ // Analyze this library.
+ return new TargetedResult(librarySource, LIBRARY_ERRORS_READY);
+ }
+ // No libraries in the queue, check whether there are sources to organize.
+ while (unknownSourceQueue.isNotEmpty) {
+ Source source = unknownSourceQueue.first;
+ // Maybe done with this source.
+ if (!_needsComputing(source, SOURCE_KIND)) {
+ unknownSourceQueue.remove(source);
+ continue;
+ }
+ // Compute the kind of this source.
+ return new TargetedResult(source, SOURCE_KIND);
+ }
+ // TODO(scheglov) Report errors for parts that remained in the queue after
+ // all libraries had been processed.
+ // No results to compute.
+ return null;
+ }
+
+ @override
+ WorkOrderPriority getNextResultPriority() {
+ if (priorityResultQueue.isNotEmpty) {
+ return WorkOrderPriority.PRIORITY;
+ }
+ if (unknownSourceQueue.isNotEmpty || librarySourceQueue.isNotEmpty) {
+ return WorkOrderPriority.NORMAL;
+ }
+ return WorkOrderPriority.NONE;
+ }
+
+ @override
+ void resultsComputed(
+ AnalysisTarget target, Map<ResultDescriptor, dynamic> outputs) {
+ // Organize sources.
+ if (_isDartSource(target)) {
+ SourceKind kind = outputs[SOURCE_KIND];
+ if (kind != null) {
+ unknownSourceQueue.remove(target);
+ if (kind == SourceKind.LIBRARY) {
+ librarySourceQueue.add(target);
+ }
+ }
+ }
+ }
+
+ bool _isDartSource(AnalysisTarget target) {
+ return target is Source && AnalysisEngine.isDartFileName(target.fullName);
+ }
+
+ /**
+ * Returns `true` if the given [result] of the given [target] needs
+ * computing, i.e. it is not in the valid and not in the error state.
+ */
+ bool _needsComputing(AnalysisTarget target, ResultDescriptor result) {
+ CacheState state = analysisCache.getState(target, result);
+ return state != CacheState.VALID && state != CacheState.ERROR;
+ }
+}
diff --git a/pkg/analyzer/lib/src/task/driver.dart b/pkg/analyzer/lib/src/task/driver.dart
index af608ad..ab8ab9d 100644
--- a/pkg/analyzer/lib/src/task/driver.dart
+++ b/pkg/analyzer/lib/src/task/driver.dart
@@ -26,6 +26,12 @@
final TaskManager taskManager;
/**
+ * The list of [WorkManager] used to figure out which analysis results to
+ * compute.
+ */
+ final List<WorkManager> workManagers;
+
+ /**
* The context in which analysis is to be performed.
*/
final InternalAnalysisContext context;
@@ -50,7 +56,7 @@
* Initialize a newly created driver to use the tasks know to the given
* [taskManager] to perform analysis in the given [context].
*/
- AnalysisDriver(this.taskManager, this.context) {
+ AnalysisDriver(this.taskManager, this.workManagers, this.context) {
_onTaskStartedController = new StreamController.broadcast();
_onTaskCompletedController = new StreamController.broadcast();
}
@@ -85,28 +91,31 @@
* or `null` if there is currently no work to be done.
*/
WorkOrder createNextWorkOrder() {
- //
- // TODO(brianwilkerson) This is an inefficient implementation. We need to
- // port over the concept of the WorkManager to manage the list of sources
- // for which some work needs to be performed so that we do not waste time
- // repeatedly looking at the same completed sources to see whether there is
- // work that needs to be done.
- //
- for (AnalysisTarget target in context.priorityTargets) {
- WorkOrder workOrder = createWorkOrderForTarget(target, true);
- if (workOrder != null) {
- return workOrder;
+ while (true) {
+ // Find the WorkManager with the highest priority.
+ WorkOrderPriority highestPriority = null;
+ WorkManager highestManager = null;
+ for (WorkManager manager in workManagers) {
+ WorkOrderPriority priority = manager.getNextResultPriority();
+ if (highestPriority == null || highestPriority.index > priority.index) {
+ highestPriority = priority;
+ highestManager = manager;
+ }
+ }
+ // Nothing to do.
+ if (highestPriority == WorkOrderPriority.NONE) {
+ return null;
+ }
+ // Create a new WorkOrder.
+ TargetedResult request = highestManager.getNextResult();
+ if (request != null) {
+ WorkOrder workOrder =
+ createWorkOrderForResult(request.target, request.result);
+ if (workOrder != null) {
+ return workOrder;
+ }
}
}
- // TODO(brianwilkerson) Add a third priority, corresponding to
- // AnalysisContextImpl._pendingFutureSources to support code completion.
- for (AnalysisTarget target in context.explicitTargets) {
- WorkOrder workOrder = createWorkOrderForTarget(target, false);
- if (workOrder != null) {
- return workOrder;
- }
- }
- return null;
}
/**
@@ -125,9 +134,7 @@
}
try {
TaskDescriptor taskDescriptor = taskManager.findTask(target, result);
- Object memento = entry.getMemento(result);
- WorkItem workItem =
- new WorkItem(context, target, taskDescriptor, memento);
+ WorkItem workItem = new WorkItem(context, target, taskDescriptor);
return new WorkOrder(taskManager, workItem);
} catch (exception, stackTrace) {
throw new AnalysisException(
@@ -218,7 +225,10 @@
for (ResultDescriptor result in task.descriptor.results) {
// TODO(brianwilkerson) We could check here that a value was produced
// and throw an exception if not (unless we want to allow null values).
- entry.setValue(result, outputs[result], dependedOn, task.outputMemento);
+ entry.setValue(result, outputs[result], dependedOn);
+ }
+ for (WorkManager manager in workManagers) {
+ manager.resultsComputed(task.target, outputs);
}
} else {
entry.setErrorState(task.caughtException, item.descriptor.results);
@@ -283,12 +293,6 @@
final TaskDescriptor descriptor;
/**
- * The optional data that the task associated with [target] last time.
- * This data may help to compute outputs more efficiently.
- */
- final Object inputMemento;
-
- /**
* An iterator used to iterate over the descriptors of the inputs to the task,
* or `null` if all of the inputs have been collected and the task can be
* created.
@@ -318,7 +322,7 @@
* Initialize a newly created work item to compute the inputs for the task
* described by the given descriptor.
*/
- WorkItem(this.context, this.target, this.descriptor, this.inputMemento) {
+ WorkItem(this.context, this.target, this.descriptor) {
AnalysisTarget actualTarget = identical(
target, AnalysisContextTarget.request)
? new AnalysisContextTarget(context)
@@ -339,7 +343,7 @@
if (builder != null) {
throw new StateError("some inputs have not been computed");
}
- return descriptor.createTask(context, target, inputs, inputMemento);
+ return descriptor.createTask(context, target, inputs);
}
/**
@@ -384,8 +388,7 @@
try {
TaskDescriptor descriptor =
taskManager.findTask(inputTarget, inputResult);
- Object memento = inputEntry.getMemento(inputResult);
- return new WorkItem(context, inputTarget, descriptor, memento);
+ return new WorkItem(context, inputTarget, descriptor);
} on AnalysisException catch (exception, stackTrace) {
this.exception = new CaughtException(exception, stackTrace);
return null;
@@ -405,6 +408,67 @@
}
/**
+ * [AnalysisDriver] uses [WorkManager]s to select results to compute.
+ *
+ * They know specific of the targets and results they care about,
+ * so they can request analysis results in optimal order.
+ */
+abstract class WorkManager {
+ /**
+ * Notifies the managers that the given set of priority [targets] was set.
+ */
+ void applyPriorityTargets(List<AnalysisTarget> targets);
+
+ /**
+ * Return the next [TargetedResult] that this work manager wants to be
+ * computed, or `null` if this manager doesn't need any new results.
+ */
+ TargetedResult getNextResult();
+
+ /**
+ * Return the priority if the next work order this work manager want to be
+ * computed. The [AnalysisDriver] will perform the work order with
+ * the highest priority.
+ *
+ * Even if the returned value is [WorkOrderPriority.NONE], it still does not
+ * guarantee that [getNextResult] will return not `null`.
+ */
+ WorkOrderPriority getNextResultPriority();
+
+ /**
+ * Notifies the manager that the given [outputs] were produced for
+ * the given [target].
+ */
+ void resultsComputed(
+ AnalysisTarget target, Map<ResultDescriptor, dynamic> outputs);
+}
+
+/**
+ * The priorities of work orders returned by [WorkManager]s.
+ */
+enum WorkOrderPriority {
+ /**
+ * Responding to an user's action.
+ */
+ INTERACTIVE,
+
+ /**
+ * Computing information for priority sources.
+ */
+ PRIORITY,
+
+ /**
+ * A work should be done, but without any special urgency.
+ */
+ NORMAL,
+
+ /**
+ * Nothing to do.
+ */
+ NONE
+}
+
+/**
* A description of the work to be done to compute a desired analysis result.
* The class implements a lazy depth-first traversal of the work item's input.
*/
diff --git a/pkg/analyzer/lib/src/task/incremental_element_builder.dart b/pkg/analyzer/lib/src/task/incremental_element_builder.dart
new file mode 100644
index 0000000..a01122d
--- /dev/null
+++ b/pkg/analyzer/lib/src/task/incremental_element_builder.dart
@@ -0,0 +1,295 @@
+// Copyright (c) 2015, 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.
+
+library analyzer.src.task.incremental_element_builder;
+
+import 'dart:collection';
+
+import 'package:analyzer/src/generated/ast.dart';
+import 'package:analyzer/src/generated/element.dart';
+import 'package:analyzer/src/generated/resolver.dart';
+import 'package:analyzer/src/generated/scanner.dart';
+import 'package:analyzer/src/generated/source.dart';
+
+/**
+ * Incrementally updates the existing [unitElement] and builds elements for
+ * the [newUnit].
+ */
+class IncrementalCompilationUnitElementBuilder {
+ final Source source;
+ final Source librarySource;
+ final CompilationUnit oldUnit;
+ final CompilationUnitElementImpl unitElement;
+ final CompilationUnit newUnit;
+ final ElementHolder holder = new ElementHolder();
+
+ IncrementalCompilationUnitElementBuilder(
+ CompilationUnit oldUnit, this.newUnit)
+ : oldUnit = oldUnit,
+ unitElement = oldUnit.element,
+ source = oldUnit.element.source,
+ librarySource = (oldUnit.element as CompilationUnitElementImpl).librarySource;
+
+ void build() {
+ new CompilationUnitBuilder().buildCompilationUnit(
+ source, newUnit, librarySource);
+ _processDirectives();
+ _processUnitMembers();
+ newUnit.element = unitElement;
+ }
+
+ void _addElementsToHolder(CompilationUnitMember node) {
+ List<Element> elements = _getElements(node);
+ elements.forEach(_addElementToHolder);
+ }
+
+ void _addElementToHolder(Element element) {
+ if (element is PropertyAccessorElement) {
+ holder.addAccessor(element);
+ } else if (element is ClassElement) {
+ if (element.isEnum) {
+ holder.addEnum(element);
+ } else {
+ holder.addType(element);
+ }
+ } else if (element is FunctionElement) {
+ holder.addFunction(element);
+ } else if (element is FunctionTypeAliasElement) {
+ holder.addTypeAlias(element);
+ } else if (element is TopLevelVariableElement) {
+ holder.addTopLevelVariable(element);
+ }
+ }
+
+ void _processDirectives() {
+ Map<String, Directive> oldDirectiveMap = new HashMap<String, Directive>();
+ for (Directive oldDirective in oldUnit.directives) {
+ String code = TokenUtils.getFullCode(oldDirective);
+ oldDirectiveMap[code] = oldDirective;
+ }
+ // Replace new nodes with the identical old nodes.
+ for (Directive newDirective in newUnit.directives) {
+ String code = TokenUtils.getFullCode(newDirective);
+ // Prepare an old directive.
+ Directive oldDirective = oldDirectiveMap[code];
+ if (oldDirective == null) {
+ continue;
+ }
+ // URI's must be resolved to the same sources.
+ if (newDirective is UriBasedDirective &&
+ oldDirective is UriBasedDirective) {
+ if (oldDirective.source != newDirective.source) {
+ continue;
+ }
+ }
+ // Do replacement.
+ _replaceNode(newDirective, oldDirective);
+ }
+ }
+
+ void _processUnitMembers() {
+ Map<String, CompilationUnitMember> oldNodeMap =
+ new HashMap<String, CompilationUnitMember>();
+ for (CompilationUnitMember oldNode in oldUnit.declarations) {
+ String code = TokenUtils.getFullCode(oldNode);
+ oldNodeMap[code] = oldNode;
+ }
+ // Replace new nodes with the identical old nodes.
+ for (CompilationUnitMember newNode in newUnit.declarations) {
+ String code = TokenUtils.getFullCode(newNode);
+ // Prepare an old node.
+ CompilationUnitMember oldNode = oldNodeMap[code];
+ if (oldNode == null) {
+ _addElementsToHolder(newNode);
+ continue;
+ }
+ // Do replacement.
+ _replaceNode(newNode, oldNode);
+ _addElementsToHolder(oldNode);
+ }
+ // Update CompilationUnitElement.
+ unitElement.accessors = holder.accessors;
+ unitElement.enums = holder.enums;
+ unitElement.functions = holder.functions;
+ unitElement.typeAliases = holder.typeAliases;
+ unitElement.types = holder.types;
+ unitElement.topLevelVariables = holder.topLevelVariables;
+ holder.validate();
+ }
+
+ /**
+ * Replaces [newNode] with [oldNode], updates tokens and elements.
+ * The nodes must have the same tokens, but offsets may be different.
+ */
+ void _replaceNode(AstNode newNode, AstNode oldNode) {
+ // Replace node.
+ NodeReplacer.replace(newNode, oldNode);
+ // Replace tokens.
+ {
+ Token oldBeginToken = TokenUtils.getBeginTokenNotComment(newNode);
+ Token newBeginToken = TokenUtils.getBeginTokenNotComment(oldNode);
+ oldBeginToken.previous.setNext(newBeginToken);
+ oldNode.endToken.setNext(newNode.endToken.next);
+ }
+ // Change tokens offsets.
+ Map<int, int> offsetMap = new HashMap<int, int>();
+ TokenUtils.copyTokenOffsets(offsetMap, oldNode.beginToken,
+ newNode.beginToken, oldNode.endToken, newNode.endToken, true);
+ // Change elements offsets.
+ {
+ var visitor = new _UpdateElementOffsetsVisitor(offsetMap);
+ List<Element> elements = _getElements(oldNode);
+ for (Element element in elements) {
+ element.accept(visitor);
+ }
+ }
+ }
+
+ /**
+ * Returns [Element]s that are declared directly by the given [node].
+ * This does not include any child elements - parameters, local variables.
+ *
+ * Usually just one [Element] is returned, but [VariableDeclarationList]
+ * nodes may declare more than one.
+ */
+ static List<Element> _getElements(AstNode node) {
+ List<Element> elements = <Element>[];
+ if (node is TopLevelVariableDeclaration) {
+ VariableDeclarationList variableList = node.variables;
+ if (variableList != null) {
+ for (VariableDeclaration variable in variableList.variables) {
+ TopLevelVariableElement element = variable.element;
+ elements.add(element);
+ elements.add(element.getter);
+ elements.add(element.setter);
+ }
+ }
+ } else if (node is PartDirective || node is PartOfDirective) {
+ } else if (node is Directive && node.element != null) {
+ elements.add(node.element);
+ } else if (node is Declaration && node.element != null) {
+ Element element = node.element;
+ elements.add(element);
+ if (element is PropertyAccessorElement) {
+ elements.add(element.variable);
+ }
+ }
+ return elements;
+ }
+}
+
+/**
+ * Utilities for [Token] manipulations.
+ */
+class TokenUtils {
+ static const String _SEPARATOR = "\uFFFF";
+
+ /**
+ * Copy offsets from [newToken]s to [oldToken]s.
+ */
+ static void copyTokenOffsets(Map<int, int> offsetMap, Token oldToken,
+ Token newToken, Token oldEndToken, Token newEndToken,
+ [bool goUpComment = false]) {
+ if (oldToken is CommentToken && newToken is CommentToken) {
+ if (goUpComment) {
+ copyTokenOffsets(offsetMap, (oldToken as CommentToken).parent,
+ (newToken as CommentToken).parent, oldEndToken, newEndToken);
+ }
+ while (oldToken != null) {
+ offsetMap[oldToken.offset] = newToken.offset;
+ oldToken.offset = newToken.offset;
+ oldToken = oldToken.next;
+ newToken = newToken.next;
+ }
+ assert(oldToken == null);
+ assert(newToken == null);
+ return;
+ }
+ while (true) {
+ if (oldToken.precedingComments != null) {
+ assert(newToken.precedingComments != null);
+ copyTokenOffsets(offsetMap, oldToken.precedingComments,
+ newToken.precedingComments, oldEndToken, newEndToken);
+ }
+ offsetMap[oldToken.offset] = newToken.offset;
+ oldToken.offset = newToken.offset;
+ if (oldToken == oldEndToken) {
+ assert(newToken == newEndToken);
+ break;
+ }
+ oldToken = oldToken.next;
+ newToken = newToken.next;
+ }
+ }
+
+ static Token getBeginTokenNotComment(AstNode node) {
+ Token oldBeginToken = node.beginToken;
+ if (oldBeginToken is CommentToken) {
+ oldBeginToken = (oldBeginToken as CommentToken).parent;
+ }
+ return oldBeginToken;
+ }
+
+ /**
+ * Return the token string of all the [node] tokens.
+ */
+ static String getFullCode(AstNode node) {
+ List<Token> tokens = getTokens(node);
+ return joinTokens(tokens);
+ }
+
+ /**
+ * Returns all tokends (including comments) of the given [node].
+ */
+ static List<Token> getTokens(AstNode node) {
+ List<Token> tokens = <Token>[];
+ Token token = getBeginTokenNotComment(node);
+ Token endToken = node.endToken;
+ while (true) {
+ // append comment tokens
+ for (Token commentToken = token.precedingComments;
+ commentToken != null;
+ commentToken = commentToken.next) {
+ tokens.add(commentToken);
+ }
+ // append token
+ tokens.add(token);
+ // next token
+ if (token == endToken) {
+ break;
+ }
+ token = token.next;
+ }
+ return tokens;
+ }
+
+ static String joinTokens(List<Token> tokens) {
+ return tokens.map((token) => token.lexeme).join(_SEPARATOR);
+ }
+}
+
+/**
+ * Updates name offsets of [Element]s according to the [map].
+ */
+class _UpdateElementOffsetsVisitor extends GeneralizingElementVisitor {
+ final Map<int, int> map;
+
+ _UpdateElementOffsetsVisitor(this.map);
+
+ void visitElement(Element element) {
+ if (element is CompilationUnitElement) {
+ return;
+ }
+ if (element.isSynthetic) {
+ return;
+ }
+ int oldOffset = element.nameOffset;
+ int newOffset = map[oldOffset];
+ assert(newOffset != null);
+ (element as ElementImpl).nameOffset = newOffset;
+ if (element is! LibraryElement) {
+ super.visitElement(element);
+ }
+ }
+}
diff --git a/pkg/analyzer/lib/src/task/model.dart b/pkg/analyzer/lib/src/task/model.dart
index b8671bc..a48f85a 100644
--- a/pkg/analyzer/lib/src/task/model.dart
+++ b/pkg/analyzer/lib/src/task/model.dart
@@ -9,27 +9,10 @@
import 'package:analyzer/task/model.dart';
/**
- * A concrete implementation of a [CompositeResultDescriptor].
+ * The default [ResultCachingPolicy], results are never flushed.
*/
-class CompositeResultDescriptorImpl<V> extends ResultDescriptorImpl<V>
- implements CompositeResultDescriptor<V> {
- /**
- * The results that contribute to this result.
- */
- final List<ResultDescriptor<V>> contributors = <ResultDescriptor<V>>[];
-
- /**
- * Initialize a newly created composite result to have the given [name].
- */
- CompositeResultDescriptorImpl(String name) : super(name, null);
-
- /**
- * Record that the given analysis [result] contibutes to this result.
- */
- void recordContributor(ResultDescriptor<V> result) {
- contributors.add(result);
- }
-}
+const ResultCachingPolicy DEFAULT_CACHING_POLICY =
+ const SimpleResultCachingPolicy(-1, -1);
/**
* A concrete implementation of a [ListResultDescriptor].
@@ -38,12 +21,12 @@
implements ListResultDescriptor<E> {
/**
* Initialize a newly created analysis result to have the given [name] and
- * [defaultValue]. If a composite result is specified, then this result will
- * contribute to it.
+ * [defaultValue]. If a [cachingPolicy] is provided, it will control how long
+ * values associated with this result will remain in the cache.
*/
ListResultDescriptorImpl(String name, List<E> defaultValue,
- {CompositeResultDescriptor contributesTo})
- : super(name, defaultValue, contributesTo: contributesTo);
+ {ResultCachingPolicy<List<E>> cachingPolicy: DEFAULT_CACHING_POLICY})
+ : super(name, defaultValue, cachingPolicy: cachingPolicy);
@override
ListTaskInput<E> of(AnalysisTarget target) =>
@@ -65,16 +48,17 @@
final V defaultValue;
/**
+ * The caching policy for results described by this descriptor.
+ */
+ final ResultCachingPolicy<V> cachingPolicy;
+
+ /**
* Initialize a newly created analysis result to have the given [name] and
- * [defaultValue]. If a composite result is specified, then this result will
- * contribute to it.
+ * [defaultValue]. If a [cachingPolicy] is provided, it will control how long
+ * values associated with this result will remain in the cache.
*/
ResultDescriptorImpl(this.name, this.defaultValue,
- {CompositeResultDescriptor contributesTo}) {
- if (contributesTo is CompositeResultDescriptorImpl) {
- contributesTo.recordContributor(this);
- }
- }
+ {this.cachingPolicy: DEFAULT_CACHING_POLICY});
@override
TaskInput<V> of(AnalysisTarget target) =>
@@ -85,6 +69,23 @@
}
/**
+ * A simple [ResultCachingPolicy] implementation that consider all the objects
+ * to be of the size `1`.
+ */
+class SimpleResultCachingPolicy<T> implements ResultCachingPolicy<T> {
+ @override
+ final int maxActiveSize;
+
+ @override
+ final int maxIdleSize;
+
+ const SimpleResultCachingPolicy(this.maxActiveSize, this.maxIdleSize);
+
+ @override
+ int measure(T object) => 1;
+}
+
+/**
* A concrete implementation of a [TaskDescriptor].
*/
class TaskDescriptorImpl implements TaskDescriptor {
@@ -121,10 +122,9 @@
@override
AnalysisTask createTask(AnalysisContext context, AnalysisTarget target,
- Map<String, dynamic> inputs, Object inputMemento) {
+ Map<String, dynamic> inputs) {
AnalysisTask task = buildTask(context, target);
task.inputs = inputs;
- task.inputMemento = inputMemento;
return task;
}
diff --git a/pkg/analyzer/lib/src/task/task_dart.dart b/pkg/analyzer/lib/src/task/task_dart.dart
index 5a3491b..9192970 100644
--- a/pkg/analyzer/lib/src/task/task_dart.dart
+++ b/pkg/analyzer/lib/src/task/task_dart.dart
@@ -82,6 +82,6 @@
@override
void internalPerform() {
CompilationUnitBuilder builder = new CompilationUnitBuilder();
- unitElement = builder.buildCompilationUnit(source, unit);
+ unitElement = builder.buildCompilationUnit(source, unit, library);
}
}
diff --git a/pkg/analyzer/lib/task/dart.dart b/pkg/analyzer/lib/task/dart.dart
index a4ac9ee1..0a3915b 100644
--- a/pkg/analyzer/lib/task/dart.dart
+++ b/pkg/analyzer/lib/task/dart.dart
@@ -10,18 +10,38 @@
import 'package:analyzer/src/generated/scanner.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
+import 'package:analyzer/src/task/dart.dart';
import 'package:analyzer/task/model.dart';
/**
- * The analysis errors associated with a target.
+ * The resolved [CompilationUnit] associated with a compilation unit, with
+ * constants resolved.
*
- * The value combines errors represented by multiple other results.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
-// TODO(brianwilkerson) If we want to associate errors with targets smaller than
-// a file, we will need other contribution points to collect them. In which case
-// we might want to rename this and/or document that it applies to files.
-final CompositeResultDescriptor<List<AnalysisError>> DART_ERRORS =
- new CompositeResultDescriptor<List<AnalysisError>>('DART_ERRORS');
+final ResultDescriptor<CompilationUnit> CONSTANT_RESOLVED_UNIT =
+ new ResultDescriptor<CompilationUnit>('CONSTANT_RESOLVED_UNIT', null,
+ cachingPolicy: AST_CACHING_POLICY);
+
+/**
+ * The analysis errors associated with a [Source] representing a compilation
+ * unit.
+ */
+final ListResultDescriptor<AnalysisError> DART_ERRORS =
+ new ListResultDescriptor<AnalysisError>(
+ 'DART_ERRORS', AnalysisError.NO_ERRORS);
+
+/**
+ * The sources of the libraries that are explicitly imported into a library.
+ *
+ * The list will be empty if there are no explicit imports, but will not be
+ * `null`.
+ *
+ * The result is only available for [Source]s representing a library.
+ */
+final ListResultDescriptor<Source> EXPLICITLY_IMPORTED_LIBRARIES =
+ new ListResultDescriptor<Source>(
+ 'EXPLICITLY_IMPORTED_LIBRARIES', Source.EMPTY_LIST);
/**
* The sources of the libraries that are exported from a library.
@@ -29,22 +49,22 @@
* The list will be empty if there are no exported libraries, but will not be
* `null`.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ListResultDescriptor<Source> EXPORTED_LIBRARIES =
- new ListResultDescriptor<Source>('EXPORTED_LIBRARIES', Source.EMPTY_ARRAY);
+ new ListResultDescriptor<Source>('EXPORTED_LIBRARIES', Source.EMPTY_LIST);
/**
- * The sources of the libraries that are imported into a library.
+ * The sources of the libraries that are implicitly or explicitly imported into
+ * a library.
*
- * Not `null`.
- * The default value is empty.
- * When computed, this list will always contain at least `dart:core` source.
+ * The list will minimally contain the source for `dart:core` because it is
+ * implicitly imported into every library, and therefore will never be `null`.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ListResultDescriptor<Source> IMPORTED_LIBRARIES =
- new ListResultDescriptor<Source>('IMPORTED_LIBRARIES', Source.EMPTY_ARRAY);
+ new ListResultDescriptor<Source>('IMPORTED_LIBRARIES', Source.EMPTY_LIST);
/**
* The sources of the parts that are included in a library.
@@ -52,16 +72,16 @@
* The list will be empty if there are no parts, but will not be `null`. The
* list does *not* include the source for the defining compilation unit.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ListResultDescriptor<Source> INCLUDED_PARTS =
- new ListResultDescriptor<Source>('INCLUDED_PARTS', Source.EMPTY_ARRAY);
+ new ListResultDescriptor<Source>('INCLUDED_PARTS', Source.EMPTY_LIST);
/**
* A flag specifying whether a library is dependent on code that is only
* available in a client.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ResultDescriptor<bool> IS_CLIENT =
new ResultDescriptor<bool>('IS_CLIENT', false);
@@ -69,7 +89,7 @@
/**
* A flag specifying whether a library is launchable.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ResultDescriptor<bool> IS_LAUNCHABLE =
new ResultDescriptor<bool>('IS_LAUNCHABLE', false);
@@ -77,7 +97,7 @@
/**
* The fully built [LibraryElement] associated with a library.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT =
new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT', null);
@@ -87,18 +107,27 @@
*
* The AST structure will not have resolution information associated with it.
*
- * The result is only available for targets representing a Dart compilation unit.
+ * The result is only available for [Source]s representing a compilation unit.
*/
final ResultDescriptor<CompilationUnit> PARSED_UNIT =
- new ResultDescriptor<CompilationUnit>('PARSED_UNIT', null);
+ new ResultDescriptor<CompilationUnit>('PARSED_UNIT', null,
+ cachingPolicy: AST_CACHING_POLICY);
/**
- * The resolved [CompilationUnit] associated with a unit.
+ * The resolved [CompilationUnit] associated with a compilation unit, with
+ * constants not yet resolved.
*
- * The result is only available for targets representing a unit.
+ * The result is only available for [LibrarySpecificUnit]s.
*/
final ResultDescriptor<CompilationUnit> RESOLVED_UNIT =
- new ResultDescriptor<CompilationUnit>('RESOLVED_UNIT', null);
+ new ResultDescriptor<CompilationUnit>('RESOLVED_UNIT', null,
+ cachingPolicy: AST_CACHING_POLICY);
+
+/**
+ * The kind of a [Source].
+ */
+final ResultDescriptor<SourceKind> SOURCE_KIND =
+ new ResultDescriptor<SourceKind>('SOURCE_KIND', SourceKind.UNKNOWN);
/**
* The token stream produced while scanning a compilation unit.
@@ -106,10 +135,10 @@
* The value is the first token in the file, or the special end-of-file marker
* at the end of the stream if the file does not contain any tokens.
*
- * The result is only available for targets representing a Dart compilation unit.
+ * The result is only available for [Source]s representing a compilation unit.
*/
-final ResultDescriptor<Token> TOKEN_STREAM =
- new ResultDescriptor<Token>('TOKEN_STREAM', null);
+final ResultDescriptor<Token> TOKEN_STREAM = new ResultDescriptor<Token>(
+ 'TOKEN_STREAM', null, cachingPolicy: TOKEN_STREAM_CACHING_POLICY);
/**
* The sources of the Dart files that a library consists of.
@@ -117,10 +146,10 @@
* The list will include the source of the defining unit and [INCLUDED_PARTS].
* So, it is never empty or `null`.
*
- * The result is only available for targets representing a Dart library.
+ * The result is only available for [Source]s representing a library.
*/
final ListResultDescriptor<Source> UNITS =
- new ListResultDescriptor<Source>('UNITS', Source.EMPTY_ARRAY);
+ new ListResultDescriptor<Source>('UNITS', Source.EMPTY_LIST);
/**
* A specific compilation unit in a specific library.
diff --git a/pkg/analyzer/lib/task/general.dart b/pkg/analyzer/lib/task/general.dart
index 7cf1b97..c40ff4c 100644
--- a/pkg/analyzer/lib/task/general.dart
+++ b/pkg/analyzer/lib/task/general.dart
@@ -8,25 +8,19 @@
import 'package:analyzer/task/model.dart';
/**
- * The contents of a single file.
+ * The content of a [Source].
*/
final ResultDescriptor<String> CONTENT =
new ResultDescriptor<String>('CONTENT', null);
/**
- * The line information for a single file.
+ * The line information for a [Source].
*/
final ResultDescriptor<LineInfo> LINE_INFO =
new ResultDescriptor<LineInfo>('LINE_INFO', null);
/**
- * The modification time of a file.
+ * The modification time of a [Source].
*/
final ResultDescriptor<int> MODIFICATION_TIME =
new ResultDescriptor<int>('MODIFICATION_TIME', -1);
-
-/**
- * The kind of a [Source].
- */
-final ResultDescriptor<SourceKind> SOURCE_KIND =
- new ResultDescriptor<SourceKind>('SOURCE_KIND', SourceKind.UNKNOWN);
diff --git a/pkg/analyzer/lib/task/model.dart b/pkg/analyzer/lib/task/model.dart
index a648ced..8f65f8b 100644
--- a/pkg/analyzer/lib/task/model.dart
+++ b/pkg/analyzer/lib/task/model.dart
@@ -103,12 +103,6 @@
Map<String, dynamic> inputs;
/**
- * The optional data that the task associated with [target] last time.
- * This data may help to compute outputs more efficiently.
- */
- Object inputMemento;
-
- /**
* A table mapping result descriptors whose values are produced by this task
* to the values that were produced.
*/
@@ -116,12 +110,6 @@
new HashMap<ResultDescriptor, dynamic>();
/**
- * An optional data that the task wants to associate with [target].
- * This data may help later to compute outputs more efficiently.
- */
- Object outputMemento;
-
- /**
* The exception that was thrown while performing this task, or `null` if the
* task completed successfully.
*/
@@ -246,28 +234,6 @@
}
/**
- * A [ResultDescriptor] that denotes an analysis result that is a union of
- * one or more other results.
- *
- * Clients are not expected to subtype this class.
- */
-abstract class CompositeResultDescriptor<V> extends ResultDescriptor<V> {
- /**
- * Initialize a newly created composite result to have the given [name].
- */
- factory CompositeResultDescriptor(
- String name) = CompositeResultDescriptorImpl;
-
- /**
- * Return a list containing the descriptors of the results that are unioned
- * together to compose the value of this result.
- *
- * Clients must not modify the returned list.
- */
- List<ResultDescriptor<V>> get contributors;
-}
-
-/**
* A description of a [List]-based analysis result that can be computed by an
* [AnalysisTask].
*
@@ -275,11 +241,12 @@
*/
abstract class ListResultDescriptor<E> implements ResultDescriptor<List<E>> {
/**
- * Initialize a newly created analysis result to have the given [name]. If a
- * composite result is specified, then this result will contribute to it.
+ * Initialize a newly created analysis result to have the given [name] and
+ * [defaultValue]. If a [cachingPolicy] is provided, it will control how long
+ * values associated with this result will remain in the cache.
*/
factory ListResultDescriptor(String name, List<E> defaultValue,
- {CompositeResultDescriptor<List<E>> contributesTo}) = ListResultDescriptorImpl<E>;
+ {ResultCachingPolicy<List<E>> cachingPolicy}) = ListResultDescriptorImpl<E>;
@override
ListTaskInput<E> of(AnalysisTarget target);
@@ -338,17 +305,52 @@
}
/**
+ * A policy object that can compute sizes of results and provide the maximum
+ * active and idle sizes that can be kept in the cache.
+ *
+ * All the [ResultDescriptor]s with the same [ResultCachingPolicy] instance
+ * share the same total size in a cache.
+ */
+abstract class ResultCachingPolicy<T> {
+ /**
+ * Return the maximum total size of results that can be kept in the cache
+ * while analysis is in progress.
+ */
+ int get maxActiveSize;
+
+ /**
+ * Return the maximum total size of results that can be kept in the cache
+ * while analysis is idle.
+ */
+ int get maxIdleSize;
+
+ /**
+ * Return the size of the given [object].
+ */
+ int measure(T object);
+}
+
+/**
* A description of an analysis result that can be computed by an [AnalysisTask].
*
* Clients are not expected to subtype this class.
*/
abstract class ResultDescriptor<V> {
/**
- * Initialize a newly created analysis result to have the given [name]. If a
- * composite result is specified, then this result will contribute to it.
+ * Initialize a newly created analysis result to have the given [name] and
+ * [defaultValue].
+ *
+ * The given [cachingPolicy] is used to limit the total size of results
+ * described by this descriptor. If no policy is specified, the results are
+ * never evicted from the cache, and removed only when they are invalidated.
*/
factory ResultDescriptor(String name, V defaultValue,
- {CompositeResultDescriptor<V> contributesTo}) = ResultDescriptorImpl;
+ {ResultCachingPolicy<V> cachingPolicy}) = ResultDescriptorImpl;
+
+ /**
+ * Return the caching policy for results described by this descriptor.
+ */
+ ResultCachingPolicy<V> get cachingPolicy;
/**
* Return the default value for results described by this descriptor.
@@ -401,7 +403,7 @@
* used to compute results based on the given [inputs].
*/
AnalysisTask createTask(AnalysisContext context, AnalysisTarget target,
- Map<String, dynamic> inputs, Object inputMemento);
+ Map<String, dynamic> inputs);
}
/**
diff --git a/pkg/analyzer/test/generated/all_the_rest_test.dart b/pkg/analyzer/test/generated/all_the_rest_test.dart
index e16bff6..d56a925 100644
--- a/pkg/analyzer/test/generated/all_the_rest_test.dart
+++ b/pkg/analyzer/test/generated/all_the_rest_test.dart
@@ -7,8 +7,6 @@
library engine.all_the_rest_test;
-import 'dart:collection';
-
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
@@ -35,10 +33,12 @@
import 'package:analyzer/src/generated/testing/test_type_provider.dart';
import 'package:analyzer/src/generated/utilities_collection.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
+import 'package:analyzer/src/task/dart.dart';
import 'package:path/src/context.dart';
import 'package:unittest/unittest.dart';
import '../reflective_tests.dart';
+import 'engine_test.dart';
import 'parser_test.dart';
import 'resolver_test.dart';
import 'test_support.dart';
@@ -466,6 +466,52 @@
}
}
+/**
+ * Implementation of [ConstantEvaluationValidator] used during unit tests;
+ * verifies that any nodes referenced during constant evaluation are present in
+ * the dependency graph.
+ */
+class ConstantEvaluationValidator_ForTest
+ implements ConstantEvaluationValidator {
+ ConstantValueComputer computer;
+
+ ConstantEvaluationTarget _nodeBeingEvaluated;
+
+ @override
+ void beforeComputeValue(ConstantEvaluationTarget constant) {
+ _nodeBeingEvaluated = constant;
+ }
+
+ @override
+ void beforeGetConstantInitializers(ConstructorElement constructor) {
+ // Make sure we properly recorded the dependency.
+ expect(
+ computer.referenceGraph.containsPath(_nodeBeingEvaluated, constructor),
+ isTrue);
+ }
+
+ @override
+ void beforeGetEvaluationResult(ConstantEvaluationTarget constant) {
+ // Make sure we properly recorded the dependency.
+ expect(computer.referenceGraph.containsPath(_nodeBeingEvaluated, constant),
+ isTrue);
+ }
+
+ @override
+ void beforeGetFieldEvaluationResult(FieldElementImpl field) {
+ // Make sure we properly recorded the dependency.
+ expect(computer.referenceGraph.containsPath(_nodeBeingEvaluated, field),
+ isTrue);
+ }
+
+ @override
+ void beforeGetParameterDefault(ParameterElement parameter) {
+ // Make sure we properly recorded the dependency.
+ expect(computer.referenceGraph.containsPath(_nodeBeingEvaluated, parameter),
+ isTrue);
+ }
+}
+
@reflectiveTest
class ConstantEvaluatorTest extends ResolverTestCase {
void fail_constructor() {
@@ -850,12 +896,15 @@
@reflectiveTest
class ConstantFinderTest extends EngineTestCase {
AstNode _node;
-
TypeProvider _typeProvider;
+ AnalysisContext _context;
+ Source _source;
void setUp() {
super.setUp();
_typeProvider = new TestTypeProvider();
+ _context = new TestAnalysisContext();
+ _source = new TestSource();
}
/**
@@ -879,118 +928,93 @@
void test_visitConstructorDeclaration_const() {
ConstructorElement element = _setupConstructorDeclaration("A", true);
- expect(_findConstantDeclarations()[element], same(_node));
+ expect(_findConstants(), contains(element));
}
void test_visitConstructorDeclaration_nonConst() {
_setupConstructorDeclaration("A", false);
- expect(_findConstantDeclarations().isEmpty, isTrue);
- }
-
- void test_visitInstanceCreationExpression_const() {
- _setupInstanceCreationExpression("A", true);
- expect(_findConstructorInvocations().contains(_node), isTrue);
- }
-
- void test_visitInstanceCreationExpression_nonConst() {
- _setupInstanceCreationExpression("A", false);
- expect(_findConstructorInvocations().isEmpty, isTrue);
+ expect(_findConstants(), isEmpty);
}
void test_visitVariableDeclaration_const() {
VariableElement element = _setupVariableDeclaration("v", true, true);
- expect(_findVariableDeclarations()[element], same(_node));
+ expect(_findConstants(), contains(element));
}
void test_visitVariableDeclaration_final_inClass() {
_setupFieldDeclaration('C', 'f', Keyword.FINAL);
- expect(_findVariableDeclarations(), isEmpty);
+ expect(_findConstants(), isEmpty);
}
void test_visitVariableDeclaration_final_inClassWithConstConstructor() {
VariableDeclaration field = _setupFieldDeclaration('C', 'f', Keyword.FINAL,
hasConstConstructor: true);
- expect(_findVariableDeclarations()[field.element], same(field));
+ expect(_findConstants(), contains(field.element));
}
void test_visitVariableDeclaration_final_outsideClass() {
_setupVariableDeclaration('v', false, true, isFinal: true);
- expect(_findVariableDeclarations(), isEmpty);
+ expect(_findConstants(), isEmpty);
}
void test_visitVariableDeclaration_noInitializer() {
_setupVariableDeclaration("v", true, false);
- expect(_findVariableDeclarations().isEmpty, isTrue);
+ expect(_findConstants(), isEmpty);
}
void test_visitVariableDeclaration_nonConst() {
_setupVariableDeclaration("v", false, true);
- expect(_findVariableDeclarations().isEmpty, isTrue);
+ expect(_findConstants(), isEmpty);
}
void test_visitVariableDeclaration_static_const_inClass() {
VariableDeclaration field =
_setupFieldDeclaration('C', 'f', Keyword.CONST, isStatic: true);
- expect(_findVariableDeclarations()[field.element], same(field));
+ expect(_findConstants(), contains(field.element));
}
void test_visitVariableDeclaration_static_const_inClassWithConstConstructor() {
VariableDeclaration field = _setupFieldDeclaration('C', 'f', Keyword.CONST,
isStatic: true, hasConstConstructor: true);
- expect(_findVariableDeclarations()[field.element], same(field));
+ expect(_findConstants(), contains(field.element));
}
void test_visitVariableDeclaration_static_final_inClassWithConstConstructor() {
- _setupFieldDeclaration('C', 'f', Keyword.FINAL,
+ VariableDeclaration field = _setupFieldDeclaration('C', 'f', Keyword.FINAL,
isStatic: true, hasConstConstructor: true);
- expect(_findVariableDeclarations(), isEmpty);
+ expect(_findConstants(), isNot(contains(field.element)));
}
void test_visitVariableDeclaration_uninitialized_final_inClassWithConstConstructor() {
- _setupFieldDeclaration('C', 'f', Keyword.FINAL,
+ VariableDeclaration field = _setupFieldDeclaration('C', 'f', Keyword.FINAL,
isInitialized: false, hasConstConstructor: true);
- expect(_findVariableDeclarations(), isEmpty);
+ expect(_findConstants(), isNot(contains(field.element)));
}
void test_visitVariableDeclaration_uninitialized_static_const_inClass() {
_setupFieldDeclaration('C', 'f', Keyword.CONST,
isStatic: true, isInitialized: false);
- expect(_findVariableDeclarations(), isEmpty);
+ expect(_findConstants(), isEmpty);
}
List<Annotation> _findAnnotations() {
- ConstantFinder finder = new ConstantFinder();
- _node.accept(finder);
- List<Annotation> annotations = finder.annotations;
- expect(annotations, isNotNull);
- return annotations;
+ Set<Annotation> annotations = new Set<Annotation>();
+ for (ConstantEvaluationTarget target in _findConstants()) {
+ if (target is ConstantEvaluationTarget_Annotation) {
+ expect(target.context, same(_context));
+ expect(target.source, same(_source));
+ annotations.add(target.annotation);
+ }
+ }
+ return new List<Annotation>.from(annotations);
}
- Map<ConstructorElement, ConstructorDeclaration> _findConstantDeclarations() {
- ConstantFinder finder = new ConstantFinder();
+ Set<ConstantEvaluationTarget> _findConstants() {
+ ConstantFinder finder = new ConstantFinder(_context, _source, _source);
_node.accept(finder);
- Map<ConstructorElement, ConstructorDeclaration> constructorMap =
- finder.constructorMap;
- expect(constructorMap, isNotNull);
- return constructorMap;
- }
-
- List<InstanceCreationExpression> _findConstructorInvocations() {
- ConstantFinder finder = new ConstantFinder();
- _node.accept(finder);
- List<InstanceCreationExpression> constructorInvocations =
- finder.constructorInvocations;
- expect(constructorInvocations, isNotNull);
- return constructorInvocations;
- }
-
- Map<PotentiallyConstVariableElement, VariableDeclaration> _findVariableDeclarations() {
- ConstantFinder finder = new ConstantFinder();
- _node.accept(finder);
- Map<PotentiallyConstVariableElement, VariableDeclaration> variableMap =
- finder.variableMap;
- expect(variableMap, isNotNull);
- return variableMap;
+ Set<ConstantEvaluationTarget> constants = finder.constantsToCompute;
+ expect(constants, isNotNull);
+ return constants;
}
ConstructorElement _setupConstructorDeclaration(String name, bool isConst) {
@@ -1042,12 +1066,6 @@
return variableDeclaration;
}
- void _setupInstanceCreationExpression(String name, bool isConst) {
- _node = AstFactory.instanceCreationExpression2(
- isConst ? Keyword.CONST : null,
- AstFactory.typeName3(AstFactory.identifier3(name)));
- }
-
VariableElement _setupVariableDeclaration(
String name, bool isConst, bool isInitialized, {isFinal: false}) {
VariableDeclaration variableDeclaration = isInitialized
@@ -1251,7 +1269,7 @@
analysisContext.computeErrors(librarySource);
expect(unit, isNotNull);
ConstantValueComputer computer = _makeConstantValueComputer();
- computer.add(unit);
+ computer.add(unit, librarySource, librarySource);
computer.computeValues();
NodeList<CompilationUnitMember> members = unit.declarations;
expect(members, hasLength(3));
@@ -1269,7 +1287,7 @@
analysisContext.resolveCompilationUnit(librarySource, libraryElement);
expect(unit, isNotNull);
ConstantValueComputer computer = _makeConstantValueComputer();
- computer.add(unit);
+ computer.add(unit, librarySource, librarySource);
computer.computeValues();
NodeList<CompilationUnitMember> members = unit.declarations;
expect(members, hasLength(2));
@@ -1300,8 +1318,8 @@
analysisContext.resolveCompilationUnit(partSource, libraryElement);
expect(partUnit, isNotNull);
ConstantValueComputer computer = _makeConstantValueComputer();
- computer.add(libraryUnit);
- computer.add(partUnit);
+ computer.add(libraryUnit, librarySource, librarySource);
+ computer.add(partUnit, partSource, librarySource);
computer.computeValues();
NodeList<CompilationUnitMember> libraryMembers = libraryUnit.declarations;
expect(libraryMembers, hasLength(2));
@@ -1322,13 +1340,30 @@
analysisContext.resolveCompilationUnit(librarySource, libraryElement);
expect(unit, isNotNull);
ConstantValueComputer computer = _makeConstantValueComputer();
- computer.add(unit);
+ computer.add(unit, librarySource, librarySource);
computer.computeValues();
NodeList<CompilationUnitMember> members = unit.declarations;
expect(members, hasLength(1));
_validate(true, (members[0] as TopLevelVariableDeclaration).variables);
}
+ void test_computeValues_value_depends_on_enum() {
+ Source librarySource = addSource('''
+enum E { id0, id1 }
+const E e = E.id0;
+''');
+ LibraryElement libraryElement = resolve(librarySource);
+ CompilationUnit unit =
+ analysisContext.resolveCompilationUnit(librarySource, libraryElement);
+ expect(unit, isNotNull);
+ ConstantValueComputer computer = _makeConstantValueComputer();
+ computer.add(unit, librarySource, librarySource);
+ computer.computeValues();
+ TopLevelVariableDeclaration declaration = unit.declarations
+ .firstWhere((member) => member is TopLevelVariableDeclaration);
+ _validate(true, declaration.variables);
+ }
+
void test_dependencyOnConstructor() {
// x depends on "const A()"
_assertProperDependencies(r'''
@@ -1433,6 +1468,17 @@
const B b = const B();''');
}
+ void test_dependencyOnInitializedFinal() {
+ // a depends on A() depends on A.x
+ _assertProperDependencies('''
+class A {
+ const A();
+ final int x = 1;
+}
+const A a = const A();
+''');
+ }
+
void test_dependencyOnInitializedNonStaticConst() {
// Even though non-static consts are not allowed by the language, we need
// to handle them for error recovery purposes.
@@ -1446,17 +1492,6 @@
''', [CompileTimeErrorCode.CONST_INSTANCE_FIELD]);
}
- void test_dependencyOnInitializedFinal() {
- // a depends on A() depends on A.x
- _assertProperDependencies('''
-class A {
- const A();
- final int x = 1;
-}
-const A a = const A();
-''');
- }
-
void test_dependencyOnNonFactoryRedirect() {
// a depends on A.foo() depends on A.bar()
_assertProperDependencies(r'''
@@ -1552,25 +1587,7 @@
const A a = const A();
''');
EvaluationResultImpl result =
- _evaluateInstanceCreationExpression(compilationUnit, 'a');
- Map<String, DartObjectImpl> fields = _assertType(result, "A");
- expect(fields, hasLength(1));
- _assertIntField(fields, "i", 123);
- }
-
- void test_non_static_const_initialized_at_declaration() {
- // Even though non-static consts are not allowed by the language, we need
- // to handle them for error recovery purposes.
- CompilationUnit compilationUnit = resolveSource('''
-class A {
- const int i = 123;
- const A();
-}
-
-const A a = const A();
-''');
- EvaluationResultImpl result =
- _evaluateInstanceCreationExpression(compilationUnit, 'a');
+ _evaluateTopLevelVariable(compilationUnit, 'a');
Map<String, DartObjectImpl> fields = _assertType(result, "A");
expect(fields, hasLength(1));
_assertIntField(fields, "i", 123);
@@ -1679,7 +1696,7 @@
final int k;
}''');
EvaluationResultImpl result =
- _evaluateInstanceCreationExpression(compilationUnit, "foo");
+ _evaluateTopLevelVariable(compilationUnit, "foo");
Map<String, DartObjectImpl> fields = _assertType(result, "A");
expect(fields, hasLength(1));
_assertIntField(fields, "k", 13);
@@ -1713,7 +1730,7 @@
final int k;
}''');
EvaluationResultImpl result =
- _evaluateInstanceCreationExpression(compilationUnit, "foo");
+ _evaluateTopLevelVariable(compilationUnit, "foo");
Map<String, DartObjectImpl> fieldsOfA = _assertType(result, "A");
expect(fieldsOfA, hasLength(1));
Map<String, DartObjectImpl> fieldsOfB =
@@ -1733,7 +1750,7 @@
static const bar = 4;
}''');
EvaluationResultImpl result =
- _evaluateInstanceCreationExpression(compilationUnit, "foo");
+ _evaluateTopLevelVariable(compilationUnit, "foo");
Map<String, DartObjectImpl> fields = _assertType(result, "A");
expect(fields, hasLength(1));
_assertIntField(fields, "k", 7);
@@ -1748,7 +1765,7 @@
final int k;
}''');
EvaluationResultImpl result =
- _evaluateInstanceCreationExpression(compilationUnit, "foo");
+ _evaluateTopLevelVariable(compilationUnit, "foo");
Map<String, DartObjectImpl> fields = _assertType(result, "A");
expect(fields, hasLength(1));
_assertIntField(fields, "k", 7);
@@ -1766,7 +1783,7 @@
final int y;
}''');
EvaluationResultImpl result =
- _evaluateInstanceCreationExpression(compilationUnit, "foo");
+ _evaluateTopLevelVariable(compilationUnit, "foo");
Map<String, DartObjectImpl> fields = _assertType(result, "B");
expect(fields, hasLength(2));
_assertIntField(fields, "y", 5);
@@ -1784,7 +1801,7 @@
const A(this.x)
}''');
EvaluationResultImpl result =
- _evaluateInstanceCreationExpression(compilationUnit, "foo");
+ _evaluateTopLevelVariable(compilationUnit, "foo");
Map<String, DartObjectImpl> fields = _assertType(result, "A");
expect(fields, hasLength(1));
_assertIntField(fields, "x", 42);
@@ -1818,7 +1835,7 @@
final int y;
}''');
EvaluationResultImpl result =
- _evaluateInstanceCreationExpression(compilationUnit, "foo");
+ _evaluateTopLevelVariable(compilationUnit, "foo");
Map<String, DartObjectImpl> fields = _assertType(result, "B");
expect(fields, hasLength(2));
_assertIntField(fields, "y", 4);
@@ -1836,8 +1853,8 @@
const A.a2() : x = 5;
final int x;
}''');
- Map<String, DartObjectImpl> aFields = _assertType(
- _evaluateInstanceCreationExpression(compilationUnit, "foo"), "A");
+ Map<String, DartObjectImpl> aFields =
+ _assertType(_evaluateTopLevelVariable(compilationUnit, "foo"), "A");
_assertIntField(aFields, 'x', 5);
}
@@ -1849,8 +1866,8 @@
const A.a2(x) : y = x + 10;
final int y;
}''');
- Map<String, DartObjectImpl> aFields = _assertType(
- _evaluateInstanceCreationExpression(compilationUnit, "foo"), "A");
+ Map<String, DartObjectImpl> aFields =
+ _assertType(_evaluateTopLevelVariable(compilationUnit, "foo"), "A");
_assertIntField(aFields, 'y', 111);
}
@@ -1864,8 +1881,7 @@
const A() : this.b();
const A.b() : this();
}''');
- _assertValidUnknown(
- _evaluateInstanceCreationExpression(compilationUnit, "foo"));
+ _assertValidUnknown(_evaluateTopLevelVariable(compilationUnit, "foo"));
}
void test_instanceCreationExpression_nonFactoryRedirect_defaultArg() {
@@ -1876,8 +1892,8 @@
const A.a2([x = 100]) : y = x + 10;
final int y;
}''');
- Map<String, DartObjectImpl> aFields = _assertType(
- _evaluateInstanceCreationExpression(compilationUnit, "foo"), "A");
+ Map<String, DartObjectImpl> aFields =
+ _assertType(_evaluateTopLevelVariable(compilationUnit, "foo"), "A");
_assertIntField(aFields, 'y', 110);
}
@@ -1890,8 +1906,7 @@
// We don't care what value foo evaluates to (since there is a compile
// error), but we shouldn't crash, and we should figure
// out that it evaluates to an instance of class A.
- _assertType(
- _evaluateInstanceCreationExpression(compilationUnit, "foo"), "A");
+ _assertType(_evaluateTopLevelVariable(compilationUnit, "foo"), "A");
}
void test_instanceCreationExpression_nonFactoryRedirect_toNonConst() {
@@ -1904,8 +1919,7 @@
// We don't care what value foo evaluates to (since there is a compile
// error), but we shouldn't crash, and we should figure
// out that it evaluates to an instance of class A.
- _assertType(
- _evaluateInstanceCreationExpression(compilationUnit, "foo"), "A");
+ _assertType(_evaluateTopLevelVariable(compilationUnit, "foo"), "A");
}
void test_instanceCreationExpression_nonFactoryRedirect_unnamed() {
@@ -1916,8 +1930,8 @@
const A() : x = 5;
final int x;
}''');
- Map<String, DartObjectImpl> aFields = _assertType(
- _evaluateInstanceCreationExpression(compilationUnit, "foo"), "A");
+ Map<String, DartObjectImpl> aFields =
+ _assertType(_evaluateTopLevelVariable(compilationUnit, "foo"), "A");
_assertIntField(aFields, 'x', 5);
}
@@ -1930,8 +1944,7 @@
class B implements A {
const B();
}''');
- _assertType(
- _evaluateInstanceCreationExpression(compilationUnit, "foo"), "B");
+ _assertType(_evaluateTopLevelVariable(compilationUnit, "foo"), "B");
}
void test_instanceCreationExpression_redirect_cycle() {
@@ -1944,8 +1957,7 @@
const factory A() = A.b;
const factory A.b() = A;
}''');
- _assertValidUnknown(
- _evaluateInstanceCreationExpression(compilationUnit, "foo"));
+ _assertValidUnknown(_evaluateTopLevelVariable(compilationUnit, "foo"));
}
void test_instanceCreationExpression_redirect_extern() {
@@ -1954,8 +1966,7 @@
class A {
external const factory A();
}''');
- _assertValidUnknown(
- _evaluateInstanceCreationExpression(compilationUnit, "foo"));
+ _assertValidUnknown(_evaluateTopLevelVariable(compilationUnit, "foo"));
}
void test_instanceCreationExpression_redirect_nonConst() {
@@ -1968,8 +1979,7 @@
const factory A() = A.b;
A.b();
}''');
- _assertValidUnknown(
- _evaluateInstanceCreationExpression(compilationUnit, "foo"));
+ _assertValidUnknown(_evaluateTopLevelVariable(compilationUnit, "foo"));
}
void test_instanceCreationExpression_redirectWithTypeParams() {
@@ -1985,7 +1995,7 @@
const A a = const A(10);''');
EvaluationResultImpl result =
- _evaluateInstanceCreationExpression(compilationUnit, "a");
+ _evaluateTopLevelVariable(compilationUnit, "a");
Map<String, DartObjectImpl> fields = _assertType(result, "B<int>");
expect(fields, hasLength(1));
_assertIntField(fields, "x", 10);
@@ -2007,7 +2017,7 @@
const A<int> a = const A<int>(10);''');
EvaluationResultImpl result =
- _evaluateInstanceCreationExpression(compilationUnit, "a");
+ _evaluateTopLevelVariable(compilationUnit, "a");
Map<String, DartObjectImpl> fields = _assertType(result, "B<int>");
expect(fields, hasLength(1));
_assertIntField(fields, "x", 10);
@@ -2017,7 +2027,7 @@
CompilationUnit compilationUnit =
resolveSource("const foo = const Symbol('a');");
EvaluationResultImpl evaluationResult =
- _evaluateInstanceCreationExpression(compilationUnit, "foo");
+ _evaluateTopLevelVariable(compilationUnit, "foo");
expect(evaluationResult.value, isNotNull);
DartObjectImpl value = evaluationResult.value;
expect(value.type, typeProvider.symbolType);
@@ -2040,41 +2050,87 @@
const c_int = const C<int>();
const c_num = const C<num>();''');
EvaluationResultImpl c_int =
- _evaluateInstanceCreationExpression(compilationUnit, "c_int");
+ _evaluateTopLevelVariable(compilationUnit, "c_int");
_assertType(c_int, "C<int>");
DartObjectImpl c_int_value = c_int.value;
EvaluationResultImpl c_num =
- _evaluateInstanceCreationExpression(compilationUnit, "c_num");
+ _evaluateTopLevelVariable(compilationUnit, "c_num");
_assertType(c_num, "C<num>");
DartObjectImpl c_num_value = c_num.value;
expect(c_int_value == c_num_value, isFalse);
}
void test_isValidSymbol() {
- expect(ConstantValueComputer.isValidPublicSymbol(""), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("foo"), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("foo.bar"), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("foo\$"), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("foo\$bar"), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("iff"), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("gif"), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("if\$"), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("\$if"), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("foo="), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("foo.bar="), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("foo.+"), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("void"), isTrue);
- expect(ConstantValueComputer.isValidPublicSymbol("_foo"), isFalse);
- expect(ConstantValueComputer.isValidPublicSymbol("_foo.bar"), isFalse);
- expect(ConstantValueComputer.isValidPublicSymbol("foo._bar"), isFalse);
- expect(ConstantValueComputer.isValidPublicSymbol("if"), isFalse);
- expect(ConstantValueComputer.isValidPublicSymbol("if.foo"), isFalse);
- expect(ConstantValueComputer.isValidPublicSymbol("foo.if"), isFalse);
- expect(ConstantValueComputer.isValidPublicSymbol("foo=.bar"), isFalse);
- expect(ConstantValueComputer.isValidPublicSymbol("foo."), isFalse);
- expect(ConstantValueComputer.isValidPublicSymbol("+.foo"), isFalse);
- expect(ConstantValueComputer.isValidPublicSymbol("void.foo"), isFalse);
- expect(ConstantValueComputer.isValidPublicSymbol("foo.void"), isFalse);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol(""), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("foo"), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("foo.bar"), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("foo\$"), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("foo\$bar"), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("iff"), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("gif"), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("if\$"), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("\$if"), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("foo="), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("foo.bar="), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("foo.+"), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("void"), isTrue);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("_foo"), isFalse);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("_foo.bar"), isFalse);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("foo._bar"), isFalse);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("if"), isFalse);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("if.foo"), isFalse);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("foo.if"), isFalse);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("foo=.bar"), isFalse);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("foo."), isFalse);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("+.foo"), isFalse);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("void.foo"), isFalse);
+ expect(ConstantEvaluationEngine.isValidPublicSymbol("foo.void"), isFalse);
+ }
+
+ void test_length_of_improperly_typed_string_expression() {
+ // Since type annotations are ignored in unchecked mode, the improper
+ // types on s1 and s2 shouldn't prevent us from evaluating i to
+ // 'alpha'.length.
+ CompilationUnit compilationUnit = resolveSource('''
+const int s1 = 'alpha';
+const int s2 = 'beta';
+const int i = (true ? s1 : s2).length;
+''');
+ ConstTopLevelVariableElementImpl element =
+ findTopLevelDeclaration(compilationUnit, 'i').element;
+ EvaluationResultImpl result = element.evaluationResult;
+ expect(_assertValidInt(result), 5);
+ }
+
+ void test_length_of_improperly_typed_string_identifier() {
+ // Since type annotations are ignored in unchecked mode, the improper type
+ // on s shouldn't prevent us from evaluating i to 'alpha'.length.
+ CompilationUnit compilationUnit = resolveSource('''
+const int s = 'alpha';
+const int i = s.length;
+''');
+ ConstTopLevelVariableElementImpl element =
+ findTopLevelDeclaration(compilationUnit, 'i').element;
+ EvaluationResultImpl result = element.evaluationResult;
+ expect(_assertValidInt(result), 5);
+ }
+
+ void test_non_static_const_initialized_at_declaration() {
+ // Even though non-static consts are not allowed by the language, we need
+ // to handle them for error recovery purposes.
+ CompilationUnit compilationUnit = resolveSource('''
+class A {
+ const int i = 123;
+ const A();
+}
+
+const A a = const A();
+''');
+ EvaluationResultImpl result =
+ _evaluateTopLevelVariable(compilationUnit, 'a');
+ Map<String, DartObjectImpl> fields = _assertType(result, "A");
+ expect(fields, hasLength(1));
+ _assertIntField(fields, "i", 123);
}
void test_symbolLiteral_void() {
@@ -2117,7 +2173,7 @@
analysisContext.resolveCompilationUnit(source, element);
expect(unit, isNotNull);
ConstantValueComputer computer = _makeConstantValueComputer();
- computer.add(unit);
+ computer.add(unit, source, source);
computer.computeValues();
assertErrors(source, expectedErrorCodes);
}
@@ -2176,7 +2232,7 @@
defaultExpr == null ? "" : ", defaultValue: $defaultExpr";
CompilationUnit compilationUnit = resolveSource(
"const $varName = const bool.fromEnvironment('$envVarName'$defaultArg);");
- return _evaluateInstanceCreationExpression(compilationUnit, varName);
+ return _evaluateTopLevelVariable(compilationUnit, varName);
}
EvaluationResultImpl _check_fromEnvironment_int(
@@ -2190,7 +2246,7 @@
defaultExpr == null ? "" : ", defaultValue: $defaultExpr";
CompilationUnit compilationUnit = resolveSource(
"const $varName = const int.fromEnvironment('$envVarName'$defaultArg);");
- return _evaluateInstanceCreationExpression(compilationUnit, varName);
+ return _evaluateTopLevelVariable(compilationUnit, varName);
}
EvaluationResultImpl _check_fromEnvironment_string(
@@ -2204,7 +2260,7 @@
defaultExpr == null ? "" : ", defaultValue: $defaultExpr";
CompilationUnit compilationUnit = resolveSource(
"const $varName = const String.fromEnvironment('$envVarName'$defaultArg);");
- return _evaluateInstanceCreationExpression(compilationUnit, varName);
+ return _evaluateTopLevelVariable(compilationUnit, varName);
}
void _checkInstanceCreation_withSupertypeParams(bool isExplicit) {
@@ -2222,12 +2278,12 @@
const b_int_num = const B<int, num>();
const c_int_num = const C<int, num>();""");
EvaluationResultImpl b_int_num =
- _evaluateInstanceCreationExpression(compilationUnit, "b_int_num");
+ _evaluateTopLevelVariable(compilationUnit, "b_int_num");
Map<String, DartObjectImpl> b_int_num_fields =
_assertType(b_int_num, "B<int, num>");
_assertFieldType(b_int_num_fields, GenericState.SUPERCLASS_FIELD, "A<int>");
EvaluationResultImpl c_int_num =
- _evaluateInstanceCreationExpression(compilationUnit, "c_int_num");
+ _evaluateTopLevelVariable(compilationUnit, "c_int_num");
Map<String, DartObjectImpl> c_int_num_fields =
_assertType(c_int_num, "C<int, num>");
_assertFieldType(c_int_num_fields, GenericState.SUPERCLASS_FIELD, "A<num>");
@@ -2246,8 +2302,7 @@
const A(${isNamed ? "{$formalParam}" : "[$formalParam]"})${isFieldFormal ? "" : " : $fieldName = $paramName"};
final int $fieldName;
}""");
- EvaluationResultImpl x =
- _evaluateInstanceCreationExpression(compilationUnit, "x");
+ EvaluationResultImpl x = _evaluateTopLevelVariable(compilationUnit, "x");
Map<String, DartObjectImpl> fieldsOfX = _assertType(x, "A");
expect(fieldsOfX, hasLength(1));
if (hasDefault) {
@@ -2255,8 +2310,7 @@
} else {
_assertNullField(fieldsOfX, fieldName);
}
- EvaluationResultImpl y =
- _evaluateInstanceCreationExpression(compilationUnit, "y");
+ EvaluationResultImpl y = _evaluateTopLevelVariable(compilationUnit, "y");
Map<String, DartObjectImpl> fieldsOfY = _assertType(y, "A");
expect(fieldsOfY, hasLength(1));
_assertIntField(fieldsOfY, fieldName, 10);
@@ -2286,16 +2340,21 @@
return null;
}
- EvaluationResultImpl _evaluateInstanceCreationExpression(
+ EvaluationResultImpl _evaluateTopLevelVariable(
CompilationUnit compilationUnit, String name) {
- Expression expression =
- findTopLevelConstantExpression(compilationUnit, name);
- return (expression as InstanceCreationExpression).evaluationResult;
+ VariableDeclaration varDecl =
+ findTopLevelDeclaration(compilationUnit, name);
+ ConstTopLevelVariableElementImpl varElement = varDecl.element;
+ return varElement.evaluationResult;
}
ConstantValueComputer _makeConstantValueComputer() {
- return new ValidatingConstantValueComputer(
- analysisContext2.typeProvider, analysisContext2.declaredVariables);
+ ConstantEvaluationValidator_ForTest validator =
+ new ConstantEvaluationValidator_ForTest();
+ validator.computer = new ConstantValueComputer(analysisContext2,
+ analysisContext2.typeProvider, analysisContext2.declaredVariables,
+ validator);
+ return validator.computer;
}
void _validate(bool shouldBeValid, VariableDeclarationList declarationList) {
@@ -2312,27 +2371,6 @@
}
}
-class ConstantValueComputerTest_ValidatingConstantVisitor
- extends ConstantVisitor {
- final DirectedGraph<AstNode> _referenceGraph;
- final AstNode _nodeBeingEvaluated;
-
- ConstantValueComputerTest_ValidatingConstantVisitor(TypeProvider typeProvider,
- this._referenceGraph, this._nodeBeingEvaluated,
- ErrorReporter errorReporter)
- : super.con1(typeProvider, errorReporter);
-
- @override
- void beforeGetEvaluationResult(AstNode node) {
- super.beforeGetEvaluationResult(node);
- // If we are getting the evaluation result for a node in the graph,
- // make sure we properly recorded the dependency.
- if (_referenceGraph.nodes.contains(node)) {
- expect(_referenceGraph.containsPath(_nodeBeingEvaluated, node), isTrue);
- }
- }
-}
-
@reflectiveTest
class ConstantVisitorTest extends ResolverTestCase {
void test_visitConditionalExpression_false() {
@@ -2343,34 +2381,12 @@
GatheringErrorListener errorListener = new GatheringErrorListener();
ErrorReporter errorReporter =
new ErrorReporter(errorListener, _dummySource());
- _assertValue(0, expression.accept(
- new ConstantVisitor.con1(new TestTypeProvider(), errorReporter)));
+ _assertValue(0, expression.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(
+ new TestTypeProvider(), new DeclaredVariables()), errorReporter)));
errorListener.assertNoErrors();
}
- void test_visitConditionalExpression_instanceCreation_invalidFieldInitializer() {
- TestTypeProvider typeProvider = new TestTypeProvider();
- LibraryElementImpl libraryElement = ElementFactory.library(null, "lib");
- String className = "C";
- ClassElementImpl classElement = ElementFactory.classElement2(className);
- (libraryElement.definingCompilationUnit as CompilationUnitElementImpl).types =
- <ClassElement>[classElement];
- ConstructorElementImpl constructorElement = ElementFactory
- .constructorElement(classElement, null, true, [typeProvider.intType]);
- constructorElement.parameters[0] =
- new FieldFormalParameterElementImpl(AstFactory.identifier3("x"));
- InstanceCreationExpression expression = AstFactory
- .instanceCreationExpression2(Keyword.CONST,
- AstFactory.typeName4(className), [AstFactory.integer(0)]);
- expression.staticElement = constructorElement;
- GatheringErrorListener errorListener = new GatheringErrorListener();
- ErrorReporter errorReporter =
- new ErrorReporter(errorListener, _dummySource());
- expression.accept(new ConstantVisitor.con1(typeProvider, errorReporter));
- errorListener
- .assertErrorsWithCodes([CompileTimeErrorCode.INVALID_CONSTANT]);
- }
-
void test_visitConditionalExpression_nonBooleanCondition() {
Expression thenExpression = AstFactory.integer(1);
Expression elseExpression = AstFactory.integer(0);
@@ -2380,8 +2396,9 @@
GatheringErrorListener errorListener = new GatheringErrorListener();
ErrorReporter errorReporter =
new ErrorReporter(errorListener, _dummySource());
- DartObjectImpl result = expression.accept(
- new ConstantVisitor.con1(new TestTypeProvider(), errorReporter));
+ DartObjectImpl result = expression.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(
+ new TestTypeProvider(), new DeclaredVariables()), errorReporter));
expect(result, isNull);
errorListener
.assertErrorsWithCodes([CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL]);
@@ -2395,8 +2412,9 @@
GatheringErrorListener errorListener = new GatheringErrorListener();
ErrorReporter errorReporter =
new ErrorReporter(errorListener, _dummySource());
- DartObjectImpl result = expression.accept(
- new ConstantVisitor.con1(new TestTypeProvider(), errorReporter));
+ DartObjectImpl result = expression.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(
+ new TestTypeProvider(), new DeclaredVariables()), errorReporter));
expect(result, isNull);
errorListener
.assertErrorsWithCodes([CompileTimeErrorCode.INVALID_CONSTANT]);
@@ -2410,8 +2428,9 @@
GatheringErrorListener errorListener = new GatheringErrorListener();
ErrorReporter errorReporter =
new ErrorReporter(errorListener, _dummySource());
- DartObjectImpl result = expression.accept(
- new ConstantVisitor.con1(new TestTypeProvider(), errorReporter));
+ DartObjectImpl result = expression.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(
+ new TestTypeProvider(), new DeclaredVariables()), errorReporter));
expect(result, isNull);
errorListener
.assertErrorsWithCodes([CompileTimeErrorCode.INVALID_CONSTANT]);
@@ -2425,8 +2444,9 @@
GatheringErrorListener errorListener = new GatheringErrorListener();
ErrorReporter errorReporter =
new ErrorReporter(errorListener, _dummySource());
- _assertValue(1, expression.accept(
- new ConstantVisitor.con1(new TestTypeProvider(), errorReporter)));
+ _assertValue(1, expression.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(
+ new TestTypeProvider(), new DeclaredVariables()), errorReporter)));
errorListener.assertNoErrors();
}
@@ -2496,8 +2516,9 @@
findTopLevelConstantExpression(compilationUnit, name);
GatheringErrorListener errorListener = new GatheringErrorListener();
ErrorReporter errorReporter = new ErrorReporter(errorListener, source);
- DartObjectImpl result = expression.accept(new ConstantVisitor.con2(
- typeProvider, lexicalEnvironment, errorReporter));
+ DartObjectImpl result = expression.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(typeProvider, new DeclaredVariables()),
+ errorReporter, lexicalEnvironment: lexicalEnvironment));
errorListener.assertNoErrors();
return result;
}
@@ -4909,9 +4930,9 @@
JavaFile file2 =
FileUtilities2.createFile("/does/not/exist/folder/some2.dart");
JavaFile file3 = FileUtilities2.createFile("/does/not/exist3/some3.dart");
- FileBasedSource source1 = new FileBasedSource.con1(file1);
- FileBasedSource source2 = new FileBasedSource.con1(file2);
- FileBasedSource source3 = new FileBasedSource.con1(file3);
+ FileBasedSource source1 = new FileBasedSource(file1);
+ FileBasedSource source2 = new FileBasedSource(file2);
+ FileBasedSource source3 = new FileBasedSource(file3);
DirectoryBasedSourceContainer container =
new DirectoryBasedSourceContainer.con1(dir);
expect(container.contains(source1), isTrue);
@@ -6334,7 +6355,7 @@
}''';
CompilationUnit cu = _resolveContents(code);
int offset = code.indexOf('foo(0)');
- AstNode node = new NodeLocator.con1(offset).searchWithin(cu);
+ AstNode node = new NodeLocator(offset).searchWithin(cu);
MethodInvocation invocation =
node.getAncestor((n) => n is MethodInvocation);
Element element = ElementLocator.locate(invocation);
@@ -6444,7 +6465,7 @@
CompilationUnit cu = _resolveContents(code);
int start = _getOffsetOfMatch(code, nodePattern, index);
int end = start + nodePattern.length;
- return new NodeLocator.con2(start, end).searchWithin(cu);
+ return new NodeLocator(start, end).searchWithin(cu);
}
int _getOffsetOfMatch(String contents, String pattern, int matchIndex) {
@@ -7291,22 +7312,22 @@
void test_equals_false_differentFiles() {
JavaFile file1 = FileUtilities2.createFile("/does/not/exist1.dart");
JavaFile file2 = FileUtilities2.createFile("/does/not/exist2.dart");
- FileBasedSource source1 = new FileBasedSource.con1(file1);
- FileBasedSource source2 = new FileBasedSource.con1(file2);
+ FileBasedSource source1 = new FileBasedSource(file1);
+ FileBasedSource source2 = new FileBasedSource(file2);
expect(source1 == source2, isFalse);
}
void test_equals_false_null() {
JavaFile file = FileUtilities2.createFile("/does/not/exist1.dart");
- FileBasedSource source1 = new FileBasedSource.con1(file);
+ FileBasedSource source1 = new FileBasedSource(file);
expect(source1 == null, isFalse);
}
void test_equals_true() {
JavaFile file1 = FileUtilities2.createFile("/does/not/exist.dart");
JavaFile file2 = FileUtilities2.createFile("/does/not/exist.dart");
- FileBasedSource source1 = new FileBasedSource.con1(file1);
- FileBasedSource source2 = new FileBasedSource.con1(file2);
+ FileBasedSource source1 = new FileBasedSource(file1);
+ FileBasedSource source2 = new FileBasedSource(file2);
expect(source1 == source2, isTrue);
}
@@ -7356,28 +7377,28 @@
SourceFactory factory = new SourceFactory([new FileUriResolver()]);
String fullPath = "/does/not/exist.dart";
JavaFile file = FileUtilities2.createFile(fullPath);
- FileBasedSource source = new FileBasedSource.con1(file);
+ FileBasedSource source = new FileBasedSource(file);
expect(factory.fromEncoding(source.encoding), source);
}
void test_getFullName() {
String fullPath = "/does/not/exist.dart";
JavaFile file = FileUtilities2.createFile(fullPath);
- FileBasedSource source = new FileBasedSource.con1(file);
+ FileBasedSource source = new FileBasedSource(file);
expect(source.fullName, file.getAbsolutePath());
}
void test_getShortName() {
JavaFile file = FileUtilities2.createFile("/does/not/exist.dart");
- FileBasedSource source = new FileBasedSource.con1(file);
+ FileBasedSource source = new FileBasedSource(file);
expect(source.shortName, "exist.dart");
}
void test_hashCode() {
JavaFile file1 = FileUtilities2.createFile("/does/not/exist.dart");
JavaFile file2 = FileUtilities2.createFile("/does/not/exist.dart");
- FileBasedSource source1 = new FileBasedSource.con1(file1);
- FileBasedSource source2 = new FileBasedSource.con1(file2);
+ FileBasedSource source1 = new FileBasedSource(file1);
+ FileBasedSource source2 = new FileBasedSource(file2);
expect(source2.hashCode, source1.hashCode);
}
@@ -7400,7 +7421,7 @@
void test_isInSystemLibrary_false() {
JavaFile file = FileUtilities2.createFile("/does/not/exist.dart");
- FileBasedSource source = new FileBasedSource.con1(file);
+ FileBasedSource source = new FileBasedSource(file);
expect(source, isNotNull);
expect(source.fullName, file.getAbsolutePath());
expect(source.isInSystemLibrary, isFalse);
@@ -7408,7 +7429,7 @@
void test_issue14500() {
// see https://code.google.com/p/dart/issues/detail?id=14500
- FileBasedSource source = new FileBasedSource.con1(
+ FileBasedSource source = new FileBasedSource(
FileUtilities2.createFile("/some/packages/foo:bar.dart"));
expect(source, isNotNull);
expect(source.exists(), isFalse);
@@ -7417,7 +7438,7 @@
void test_resolveRelative_dart_fileName() {
JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
FileBasedSource source =
- new FileBasedSource.con2(parseUriWithException("dart:test"), file);
+ new FileBasedSource(file, parseUriWithException("dart:test"));
expect(source, isNotNull);
Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
expect(relative, isNotNull);
@@ -7427,7 +7448,7 @@
void test_resolveRelative_dart_filePath() {
JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
FileBasedSource source =
- new FileBasedSource.con2(parseUriWithException("dart:test"), file);
+ new FileBasedSource(file, parseUriWithException("dart:test"));
expect(source, isNotNull);
Uri relative =
source.resolveRelativeUri(parseUriWithException("c/lib.dart"));
@@ -7437,8 +7458,8 @@
void test_resolveRelative_dart_filePathWithParent() {
JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
- FileBasedSource source = new FileBasedSource.con2(
- parseUriWithException("dart:test/b/test.dart"), file);
+ FileBasedSource source = new FileBasedSource(
+ file, parseUriWithException("dart:test/b/test.dart"));
expect(source, isNotNull);
Uri relative =
source.resolveRelativeUri(parseUriWithException("../c/lib.dart"));
@@ -7454,7 +7475,7 @@
return;
}
JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
- FileBasedSource source = new FileBasedSource.con1(file);
+ FileBasedSource source = new FileBasedSource(file);
expect(source, isNotNull);
Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
expect(relative, isNotNull);
@@ -7469,7 +7490,7 @@
return;
}
JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
- FileBasedSource source = new FileBasedSource.con1(file);
+ FileBasedSource source = new FileBasedSource(file);
expect(source, isNotNull);
Uri relative =
source.resolveRelativeUri(parseUriWithException("c/lib.dart"));
@@ -7484,7 +7505,7 @@
return;
}
JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
- FileBasedSource source = new FileBasedSource.con1(file);
+ FileBasedSource source = new FileBasedSource(file);
expect(source, isNotNull);
Uri relative =
source.resolveRelativeUri(parseUriWithException("../c/lib.dart"));
@@ -7494,8 +7515,8 @@
void test_resolveRelative_package_fileName() {
JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
- FileBasedSource source = new FileBasedSource.con2(
- parseUriWithException("package:b/test.dart"), file);
+ FileBasedSource source =
+ new FileBasedSource(file, parseUriWithException("package:b/test.dart"));
expect(source, isNotNull);
Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
expect(relative, isNotNull);
@@ -7504,8 +7525,8 @@
void test_resolveRelative_package_fileNameWithoutPackageName() {
JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
- FileBasedSource source = new FileBasedSource.con2(
- parseUriWithException("package:test.dart"), file);
+ FileBasedSource source =
+ new FileBasedSource(file, parseUriWithException("package:test.dart"));
expect(source, isNotNull);
Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
expect(relative, isNotNull);
@@ -7514,8 +7535,8 @@
void test_resolveRelative_package_filePath() {
JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
- FileBasedSource source = new FileBasedSource.con2(
- parseUriWithException("package:b/test.dart"), file);
+ FileBasedSource source =
+ new FileBasedSource(file, parseUriWithException("package:b/test.dart"));
expect(source, isNotNull);
Uri relative =
source.resolveRelativeUri(parseUriWithException("c/lib.dart"));
@@ -7525,8 +7546,8 @@
void test_resolveRelative_package_filePathWithParent() {
JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
- FileBasedSource source = new FileBasedSource.con2(
- parseUriWithException("package:a/b/test.dart"), file);
+ FileBasedSource source = new FileBasedSource(
+ file, parseUriWithException("package:a/b/test.dart"));
expect(source, isNotNull);
Uri relative =
source.resolveRelativeUri(parseUriWithException("../c/lib.dart"));
@@ -7537,7 +7558,7 @@
void test_system() {
JavaFile file = FileUtilities2.createFile("/does/not/exist.dart");
FileBasedSource source =
- new FileBasedSource.con2(parseUriWithException("dart:core"), file);
+ new FileBasedSource(file, parseUriWithException("dart:core"));
expect(source, isNotNull);
expect(source.fullName, file.getAbsolutePath());
expect(source.isInSystemLibrary, isTrue);
@@ -8000,120 +8021,56 @@
@reflectiveTest
class ReferenceFinderTest extends EngineTestCase {
- DirectedGraph<AstNode> _referenceGraph;
- Map<PotentiallyConstVariableElement, VariableDeclaration> _variableDeclarationMap;
- Map<ConstructorElement, ConstructorDeclaration> _constructorDeclarationMap;
- VariableDeclaration _head;
- AstNode _tail;
+ DirectedGraph<ConstantEvaluationTarget> _referenceGraph;
+ VariableElement _head;
+ Element _tail;
@override
void setUp() {
- _referenceGraph = new DirectedGraph<AstNode>();
- _variableDeclarationMap =
- new HashMap<PotentiallyConstVariableElement, VariableDeclaration>();
- _constructorDeclarationMap =
- new HashMap<ConstructorElement, ConstructorDeclaration>();
- _head = AstFactory.variableDeclaration("v1");
- }
- void test_visitInstanceCreationExpression_const() {
- _visitNode(_makeTailConstructor("A", true, true, true));
- _assertOneArc(_tail);
- }
- void test_visitInstanceCreationExpression_nonConstDeclaration() {
- // In the source:
- // const x = const A();
- // x depends on "const A()" even if the A constructor
- // isn't declared as const.
- _visitNode(_makeTailConstructor("A", false, true, true));
- _assertOneArc(_tail);
- }
- void test_visitInstanceCreationExpression_nonConstUsage() {
- _visitNode(_makeTailConstructor("A", true, false, true));
- _assertNoArcs();
- }
- void test_visitInstanceCreationExpression_notInMap() {
- // In the source:
- // const x = const A();
- // x depends on "const A()" even if the AST for the A constructor
- // isn't available.
- _visitNode(_makeTailConstructor("A", true, true, false));
- _assertOneArc(_tail);
+ _referenceGraph = new DirectedGraph<ConstantEvaluationTarget>();
+ _head = ElementFactory.topLevelVariableElement2("v1");
}
void test_visitSimpleIdentifier_const() {
- _visitNode(_makeTailVariable("v2", true, true));
+ _visitNode(_makeTailVariable("v2", true));
_assertOneArc(_tail);
}
void test_visitSimpleIdentifier_nonConst() {
- _visitNode(_makeTailVariable("v2", false, true));
- _assertNoArcs();
- }
- void test_visitSimpleIdentifier_notInMap() {
- _visitNode(_makeTailVariable("v2", true, false));
+ _visitNode(_makeTailVariable("v2", false));
_assertNoArcs();
}
void test_visitSuperConstructorInvocation_const() {
- _visitNode(_makeTailSuperConstructorInvocation("A", true, true));
+ _visitNode(_makeTailSuperConstructorInvocation("A", true));
_assertOneArc(_tail);
}
void test_visitSuperConstructorInvocation_nonConst() {
- _visitNode(_makeTailSuperConstructorInvocation("A", false, true));
- _assertNoArcs();
- }
- void test_visitSuperConstructorInvocation_notInMap() {
- _visitNode(_makeTailSuperConstructorInvocation("A", true, false));
+ _visitNode(_makeTailSuperConstructorInvocation("A", false));
_assertNoArcs();
}
void test_visitSuperConstructorInvocation_unresolved() {
SuperConstructorInvocation superConstructorInvocation =
AstFactory.superConstructorInvocation();
- _tail = superConstructorInvocation;
_visitNode(superConstructorInvocation);
_assertNoArcs();
}
void _assertNoArcs() {
- Set<AstNode> tails = _referenceGraph.getTails(_head);
+ Set<ConstantEvaluationTarget> tails = _referenceGraph.getTails(_head);
expect(tails, hasLength(0));
}
- void _assertOneArc(AstNode tail) {
- Set<AstNode> tails = _referenceGraph.getTails(_head);
+ void _assertOneArc(Element tail) {
+ Set<ConstantEvaluationTarget> tails = _referenceGraph.getTails(_head);
expect(tails, hasLength(1));
expect(tails.first, same(tail));
}
- ReferenceFinder _createReferenceFinder(AstNode source) => new ReferenceFinder(
- source, _referenceGraph, _variableDeclarationMap,
- _constructorDeclarationMap);
- InstanceCreationExpression _makeTailConstructor(
- String name, bool isConstDeclaration, bool isConstUsage, bool inMap) {
- List<ConstructorInitializer> initializers =
- new List<ConstructorInitializer>();
- ConstructorDeclaration constructorDeclaration = AstFactory
- .constructorDeclaration(AstFactory.identifier3(name), null,
- AstFactory.formalParameterList(), initializers);
- if (isConstDeclaration) {
- constructorDeclaration.constKeyword = new KeywordToken(Keyword.CONST, 0);
- }
- ClassElementImpl classElement = ElementFactory.classElement2(name);
- SimpleIdentifier identifier = AstFactory.identifier3(name);
- TypeName type = AstFactory.typeName3(identifier);
- InstanceCreationExpression instanceCreationExpression = AstFactory
- .instanceCreationExpression2(
- isConstUsage ? Keyword.CONST : Keyword.NEW, type);
- _tail = instanceCreationExpression;
- ConstructorElementImpl constructorElement = ElementFactory
- .constructorElement(classElement, name, isConstDeclaration);
- if (inMap) {
- _constructorDeclarationMap[constructorElement] = constructorDeclaration;
- }
- instanceCreationExpression.staticElement = constructorElement;
- return instanceCreationExpression;
- }
+ ReferenceFinder _createReferenceFinder(ConstantEvaluationTarget source) =>
+ new ReferenceFinder((ConstantEvaluationTarget dependency) {
+ _referenceGraph.addEdge(source, dependency);
+ });
SuperConstructorInvocation _makeTailSuperConstructorInvocation(
- String name, bool isConst, bool inMap) {
+ String name, bool isConst) {
List<ConstructorInitializer> initializers =
new List<ConstructorInitializer>();
ConstructorDeclaration constructorDeclaration = AstFactory
.constructorDeclaration(AstFactory.identifier3(name), null,
AstFactory.formalParameterList(), initializers);
- _tail = constructorDeclaration;
if (isConst) {
constructorDeclaration.constKeyword = new KeywordToken(Keyword.CONST, 0);
}
@@ -8122,24 +8079,19 @@
AstFactory.superConstructorInvocation();
ConstructorElementImpl constructorElement =
ElementFactory.constructorElement(classElement, name, isConst);
- if (inMap) {
- _constructorDeclarationMap[constructorElement] = constructorDeclaration;
- }
+ _tail = constructorElement;
superConstructorInvocation.staticElement = constructorElement;
return superConstructorInvocation;
}
- SimpleIdentifier _makeTailVariable(String name, bool isConst, bool inMap) {
+ SimpleIdentifier _makeTailVariable(String name, bool isConst) {
VariableDeclaration variableDeclaration =
AstFactory.variableDeclaration(name);
- _tail = variableDeclaration;
ConstLocalVariableElementImpl variableElement =
ElementFactory.constLocalVariableElement(name);
+ _tail = variableElement;
variableElement.const3 = isConst;
AstFactory.variableDeclarationList2(
isConst ? Keyword.CONST : Keyword.VAR, [variableDeclaration]);
- if (inMap) {
- _variableDeclarationMap[variableElement] = variableDeclaration;
- }
SimpleIdentifier identifier = AstFactory.identifier3(name);
identifier.staticElement = variableElement;
return identifier;
@@ -8255,8 +8207,8 @@
SourceFactory factory =
new SourceFactory([new UriResolver_nonAbsolute_absolute()]);
String absolutePath = "/does/not/matter.dart";
- Source containingSource = new FileBasedSource.con1(
- FileUtilities2.createFile("/does/not/exist.dart"));
+ Source containingSource =
+ new FileBasedSource(FileUtilities2.createFile("/does/not/exist.dart"));
Source result = factory.resolveUri(containingSource, absolutePath);
expect(result.fullName,
FileUtilities2.createFile(absolutePath).getAbsolutePath());
@@ -8264,8 +8216,8 @@
void test_resolveUri_nonAbsolute_relative() {
SourceFactory factory =
new SourceFactory([new UriResolver_nonAbsolute_relative()]);
- Source containingSource = new FileBasedSource.con1(
- FileUtilities2.createFile("/does/not/have.dart"));
+ Source containingSource =
+ new FileBasedSource(FileUtilities2.createFile("/does/not/have.dart"));
Source result = factory.resolveUri(containingSource, "exist.dart");
expect(result.fullName,
FileUtilities2.createFile("/does/not/exist.dart").getAbsolutePath());
@@ -8302,8 +8254,8 @@
void test_restoreUri() {
JavaFile file1 = FileUtilities2.createFile("/some/file1.dart");
JavaFile file2 = FileUtilities2.createFile("/some/file2.dart");
- Source source1 = new FileBasedSource.con1(file1);
- Source source2 = new FileBasedSource.con1(file2);
+ Source source1 = new FileBasedSource(file1);
+ Source source2 = new FileBasedSource(file2);
Uri expected1 = parseUriWithException("file:///my_file.dart");
SourceFactory factory =
new SourceFactory([new UriResolver_restoreUri(source1, expected1)]);
@@ -8403,14 +8355,14 @@
class UriResolver_nonAbsolute_absolute extends UriResolver {
@override
Source resolveAbsolute(Uri uri) {
- return new FileBasedSource.con2(uri, new JavaFile.fromUri(uri));
+ return new FileBasedSource(new JavaFile.fromUri(uri), uri);
}
}
class UriResolver_nonAbsolute_relative extends UriResolver {
@override
Source resolveAbsolute(Uri uri) {
- return new FileBasedSource.con2(uri, new JavaFile.fromUri(uri));
+ return new FileBasedSource(new JavaFile.fromUri(uri), uri);
}
}
@@ -8448,76 +8400,6 @@
}
}
-class ValidatingConstantValueComputer extends ConstantValueComputer {
- AstNode _nodeBeingEvaluated;
- ValidatingConstantValueComputer(
- TypeProvider typeProvider, DeclaredVariables declaredVariables)
- : super(typeProvider, declaredVariables);
-
- @override
- void beforeComputeValue(AstNode constNode) {
- super.beforeComputeValue(constNode);
- _nodeBeingEvaluated = constNode;
- }
-
- @override
- void beforeGetFieldEvaluationResult(FieldElementImpl field) {
- super.beforeGetFieldEvaluationResult(field);
- // If we are getting the constant value for a node in the graph, make sure
- // we properly recorded the dependency.
- VariableDeclaration node = findVariableDeclaration(field);
- if (node != null && referenceGraph.nodes.contains(node)) {
- expect(referenceGraph.containsPath(_nodeBeingEvaluated, node), isTrue);
- }
- }
-
- @override
- void beforeGetConstantInitializers(ConstructorElement constructor) {
- super.beforeGetConstantInitializers(constructor);
- // If we are getting the constant initializers for a node in the graph,
- // make sure we properly recorded the dependency.
- ConstructorDeclaration node = findConstructorDeclaration(constructor);
- if (node != null && referenceGraph.nodes.contains(node)) {
- expect(referenceGraph.containsPath(_nodeBeingEvaluated, node), isTrue);
- }
- }
-
- @override
- void beforeGetParameterDefault(ParameterElement parameter) {
- super.beforeGetParameterDefault(parameter);
- // Find the ConstructorElement and figure out which
- // parameter we're talking about.
- ConstructorElement constructor =
- parameter.getAncestor((element) => element is ConstructorElement);
- int parameterIndex;
- List<ParameterElement> parameters = constructor.parameters;
- int numParameters = parameters.length;
- for (parameterIndex = 0; parameterIndex < numParameters; parameterIndex++) {
- if (identical(parameters[parameterIndex], parameter)) {
- break;
- }
- }
- expect(parameterIndex < numParameters, isTrue);
- // If we are getting the default parameter for a constructor in the graph,
- // make sure we properly recorded the dependency on the parameter.
- ConstructorDeclaration constructorNode =
- constructorDeclarationMap[constructor];
- if (constructorNode != null) {
- FormalParameter parameterNode =
- constructorNode.parameters.parameters[parameterIndex];
- expect(referenceGraph.nodes.contains(parameterNode), isTrue);
- expect(referenceGraph.containsPath(_nodeBeingEvaluated, parameterNode),
- isTrue);
- }
- }
-
- @override
- ConstantVisitor createConstantVisitor(ErrorReporter errorReporter) {
- return new ConstantValueComputerTest_ValidatingConstantVisitor(
- typeProvider, referenceGraph, _nodeBeingEvaluated, errorReporter);
- }
-}
-
/**
* Instances of `XmlValidator` traverse an [XmlNode] structure and validate the node
* hierarchy.
diff --git a/pkg/analyzer/test/generated/ast_test.dart b/pkg/analyzer/test/generated/ast_test.dart
index 64ead75..e285058 100644
--- a/pkg/analyzer/test/generated/ast_test.dart
+++ b/pkg/analyzer/test/generated/ast_test.dart
@@ -922,7 +922,7 @@
}
void test_searchWithin_null() {
- NodeLocator locator = new NodeLocator.con2(0, 0);
+ NodeLocator locator = new NodeLocator(0, 0);
expect(locator.searchWithin(null), isNull);
}
@@ -937,7 +937,7 @@
CompilationUnit unit = ParserTestCase.parseCompilationUnit(r'''
class A {}
class B {}''');
- NodeLocator locator = new NodeLocator.con2(1024, 1024);
+ NodeLocator locator = new NodeLocator(1024, 1024);
AstNode node = locator.searchWithin(unit.declarations[0]);
expect(node, isNull);
}
@@ -946,14 +946,14 @@
CompilationUnit unit = ParserTestCase.parseCompilationUnit(r'''
class A {}
class B {}''');
- NodeLocator locator = new NodeLocator.con2(0, 0);
+ NodeLocator locator = new NodeLocator(0, 0);
AstNode node = locator.searchWithin(unit.declarations[1]);
expect(node, isNull);
}
void _assertLocate(CompilationUnit unit, int start, int end,
Predicate<AstNode> predicate, Type expectedClass) {
- NodeLocator locator = new NodeLocator.con2(start, end);
+ NodeLocator locator = new NodeLocator(start, end);
AstNode node = locator.searchWithin(unit);
expect(node, isNotNull);
expect(locator.foundNode, same(node));
@@ -2154,7 +2154,7 @@
}
void test_visitForEachStatement_variable() {
- _assertSource("for (a in b) {}", new ForEachStatement.con2(null,
+ _assertSource("for (a in b) {}", new ForEachStatement.withReference(null,
TokenFactory.tokenFromKeyword(Keyword.FOR),
TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
AstFactory.identifier3("a"), TokenFactory.tokenFromKeyword(Keyword.IN),
@@ -2163,7 +2163,7 @@
}
void test_visitForEachStatement_variable_await() {
- _assertSource("await for (a in b) {}", new ForEachStatement.con2(
+ _assertSource("await for (a in b) {}", new ForEachStatement.withReference(
TokenFactory.tokenFromString("await"),
TokenFactory.tokenFromKeyword(Keyword.FOR),
TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
diff --git a/pkg/analyzer/test/generated/compile_time_error_code_test.dart b/pkg/analyzer/test/generated/compile_time_error_code_test.dart
index da69804..3f6b77c 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code_test.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code_test.dart
@@ -135,28 +135,6 @@
verify([source]);
}
- void fail_recursiveCompileTimeConstant() {
- Source source = addSource(r'''
-class A {
- const A();
- final m = const A();
-}''');
- resolve(source);
- assertErrors(
- source, [CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT]);
- verify([source]);
- }
-
- void fail_recursiveCompileTimeConstant_cycle() {
- Source source = addSource(r'''
-const x = y + 1;
-const y = x + 1;''');
- resolve(source);
- assertErrors(
- source, [CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT]);
- verify([source]);
- }
-
void fail_superInitializerInObject() {
Source source = addSource(r'''
''');
@@ -857,8 +835,11 @@
return 3;
}''');
resolve(source);
+ // TODO(paulberry): the error CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE is
+ // redundant and ought to be suppressed.
assertErrors(source, [
- CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST
+ CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST,
+ CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE
]);
verify([source]);
}
@@ -1368,8 +1349,12 @@
}
f(p) { return const A(p); }''');
resolve(source);
- assertErrors(
- source, [CompileTimeErrorCode.CONST_WITH_NON_CONSTANT_ARGUMENT]);
+ // TODO(paulberry): the error INVALID_CONSTAT is redundant and ought to be
+ // suppressed.
+ assertErrors(source, [
+ CompileTimeErrorCode.CONST_WITH_NON_CONSTANT_ARGUMENT,
+ CompileTimeErrorCode.INVALID_CONSTANT
+ ]);
verify([source]);
}
@@ -3251,6 +3236,19 @@
// We cannot verify resolution with undefined labels
}
+ void test_length_of_erroneous_constant() {
+ // Attempting to compute the length of constant that couldn't be evaluated
+ // (due to an error) should not crash the analyzer (see dartbug.com/23383)
+ Source source = addSource("const int i = (1 ? 'alpha' : 'beta').length;");
+ resolve(source);
+ assertErrors(source, [
+ CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE,
+ CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL,
+ StaticTypeWarningCode.NON_BOOL_CONDITION
+ ]);
+ verify([source]);
+ }
+
void test_memberWithClassName_field() {
Source source = addSource(r'''
class A {
@@ -4367,8 +4365,12 @@
}
var b = const B();''');
resolve(source);
- assertErrors(
- source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER]);
+ // TODO(paulberry): the error INVALID_CONSTAT is redundant and ought to be
+ // suppressed.
+ assertErrors(source, [
+ CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER,
+ CompileTimeErrorCode.INVALID_CONSTANT
+ ]);
verify([source]);
}
@@ -4645,6 +4647,44 @@
verify([source]);
}
+ void test_recursiveCompileTimeConstant() {
+ Source source = addSource(r'''
+class A {
+ const A();
+ final m = const A();
+}''');
+ resolve(source);
+ assertErrors(
+ source, [CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT]);
+ verify([source]);
+ }
+
+ void test_recursiveCompileTimeConstant_cycle() {
+ Source source = addSource(r'''
+const x = y + 1;
+const y = x + 1;''');
+ resolve(source);
+ assertErrors(source, [
+ CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT,
+ CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT
+ ]);
+ verify([source]);
+ }
+
+ void test_recursiveCompileTimeConstant_initializer_after_toplevel_var() {
+ Source source = addSource('''
+const y = const C();
+class C {
+ const C() : x = y;
+ final x;
+}
+''');
+ resolve(source);
+ assertErrors(
+ source, [CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT]);
+ verify([source]);
+ }
+
void test_recursiveConstructorRedirect() {
Source source = addSource(r'''
class A {
diff --git a/pkg/analyzer/test/generated/element_test.dart b/pkg/analyzer/test/generated/element_test.dart
index 4e8041d..7c03148 100644
--- a/pkg/analyzer/test/generated/element_test.dart
+++ b/pkg/analyzer/test/generated/element_test.dart
@@ -1253,7 +1253,7 @@
@reflectiveTest
class FunctionTypeImplTest extends EngineTestCase {
void test_creation() {
- expect(new FunctionTypeImpl.con1(
+ expect(new FunctionTypeImpl(
new FunctionElementImpl.forNode(AstFactory.identifier3("f"))),
isNotNull);
}
@@ -1261,19 +1261,19 @@
void test_getElement() {
FunctionElementImpl typeElement =
new FunctionElementImpl.forNode(AstFactory.identifier3("f"));
- FunctionTypeImpl type = new FunctionTypeImpl.con1(typeElement);
+ FunctionTypeImpl type = new FunctionTypeImpl(typeElement);
expect(type.element, typeElement);
}
void test_getNamedParameterTypes() {
- FunctionTypeImpl type = new FunctionTypeImpl.con1(
+ FunctionTypeImpl type = new FunctionTypeImpl(
new FunctionElementImpl.forNode(AstFactory.identifier3("f")));
Map<String, DartType> types = type.namedParameterTypes;
expect(types, hasLength(0));
}
void test_getNormalParameterTypes() {
- FunctionTypeImpl type = new FunctionTypeImpl.con1(
+ FunctionTypeImpl type = new FunctionTypeImpl(
new FunctionElementImpl.forNode(AstFactory.identifier3("f")));
List<DartType> types = type.normalParameterTypes;
expect(types, hasLength(0));
@@ -1284,26 +1284,26 @@
FunctionElementImpl functionElement =
new FunctionElementImpl.forNode(AstFactory.identifier3("f"));
functionElement.returnType = expectedReturnType;
- FunctionTypeImpl type = new FunctionTypeImpl.con1(functionElement);
+ FunctionTypeImpl type = new FunctionTypeImpl(functionElement);
DartType returnType = type.returnType;
expect(returnType, expectedReturnType);
}
void test_getTypeArguments() {
- FunctionTypeImpl type = new FunctionTypeImpl.con1(
+ FunctionTypeImpl type = new FunctionTypeImpl(
new FunctionElementImpl.forNode(AstFactory.identifier3("f")));
List<DartType> types = type.typeArguments;
expect(types, hasLength(0));
}
void test_hashCode_element() {
- FunctionTypeImpl type = new FunctionTypeImpl.con1(
+ FunctionTypeImpl type = new FunctionTypeImpl(
new FunctionElementImpl.forNode(AstFactory.identifier3("f")));
type.hashCode;
}
void test_hashCode_noElement() {
- FunctionTypeImpl type = new FunctionTypeImpl.con1(null);
+ FunctionTypeImpl type = new FunctionTypeImpl(null);
type.hashCode;
}
@@ -1653,7 +1653,7 @@
];
functionAliasElement.returnType = stringType;
FunctionTypeImpl functionAliasType =
- new FunctionTypeImpl.con1(functionAliasElement);
+ new FunctionTypeImpl(functionAliasElement);
functionAliasElement.type = functionAliasType;
FunctionElementImpl functionElement =
new FunctionElementImpl.forNode(AstFactory.identifier3("f"));
@@ -1662,7 +1662,7 @@
ElementFactory.positionalParameter2("d", stringType)
];
functionElement.returnType = provider.dynamicType;
- FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement);
+ FunctionTypeImpl functionType = new FunctionTypeImpl(functionElement);
functionElement.type = functionType;
expect(functionType.isAssignableTo(functionAliasType), isTrue);
}
@@ -1696,7 +1696,7 @@
MethodElementImpl methodElement =
new MethodElementImpl.forNode(AstFactory.identifier3("m"));
enclosingClass.methods = <MethodElement>[methodElement];
- FunctionTypeImpl type = new FunctionTypeImpl.con1(methodElement);
+ FunctionTypeImpl type = new FunctionTypeImpl(methodElement);
DartType expectedType = enclosingClass.typeParameters[0].type;
type.typeArguments = <DartType>[expectedType];
List<DartType> arguments = type.typeArguments;
@@ -1717,9 +1717,9 @@
];
functionElement.returnType = parameterType;
definingClass.methods = <MethodElement>[functionElement];
- FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement);
+ FunctionTypeImpl functionType = new FunctionTypeImpl(functionElement);
functionType.typeArguments = <DartType>[parameterType];
- InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(
+ InterfaceTypeImpl argumentType = new InterfaceTypeImpl(
new ClassElementImpl.forNode(AstFactory.identifier3("D")));
FunctionType result = functionType.substitute2(
<DartType>[argumentType], <DartType>[parameterType]);
@@ -1736,13 +1736,13 @@
}
void test_substitute2_notEqual() {
- DartType returnType = new InterfaceTypeImpl.con1(
+ DartType returnType = new InterfaceTypeImpl(
new ClassElementImpl.forNode(AstFactory.identifier3("R")));
- DartType normalParameterType = new InterfaceTypeImpl.con1(
+ DartType normalParameterType = new InterfaceTypeImpl(
new ClassElementImpl.forNode(AstFactory.identifier3("A")));
- DartType optionalParameterType = new InterfaceTypeImpl.con1(
+ DartType optionalParameterType = new InterfaceTypeImpl(
new ClassElementImpl.forNode(AstFactory.identifier3("B")));
- DartType namedParameterType = new InterfaceTypeImpl.con1(
+ DartType namedParameterType = new InterfaceTypeImpl(
new ClassElementImpl.forNode(AstFactory.identifier3("C")));
FunctionElementImpl functionElement =
new FunctionElementImpl.forNode(AstFactory.identifier3("f"));
@@ -1753,8 +1753,8 @@
ElementFactory.namedParameter2(namedParameterName, namedParameterType)
];
functionElement.returnType = returnType;
- FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement);
- InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(
+ FunctionTypeImpl functionType = new FunctionTypeImpl(functionElement);
+ InterfaceTypeImpl argumentType = new InterfaceTypeImpl(
new ClassElementImpl.forNode(AstFactory.identifier3("D")));
TypeParameterTypeImpl parameterType = new TypeParameterTypeImpl(
new TypeParameterElementImpl.forNode(AstFactory.identifier3("E")));
@@ -1958,7 +1958,7 @@
ClassElement classD = ElementFactory.classElement2("D");
InterfaceType typeA = classA.type;
classB.interfaces = <InterfaceType>[typeA];
- InterfaceTypeImpl typeBT = new InterfaceTypeImpl.con1(classB);
+ InterfaceTypeImpl typeBT = new InterfaceTypeImpl(classB);
DartType typeT = classC.type.typeArguments[0];
typeBT.typeArguments = <DartType>[typeT];
classC.interfaces = <InterfaceType>[typeBT];
@@ -1969,7 +1969,7 @@
InterfaceType typeObject = ElementFactory.object.type;
expect(superinterfacesOfA.contains(typeObject), isTrue);
// B<D>
- InterfaceTypeImpl typeBD = new InterfaceTypeImpl.con1(classB);
+ InterfaceTypeImpl typeBD = new InterfaceTypeImpl(classB);
typeBD.typeArguments = <DartType>[classD.type];
Set<InterfaceType> superinterfacesOfBD =
InterfaceTypeImpl.computeSuperinterfaceSet(typeBD);
@@ -1977,7 +1977,7 @@
expect(superinterfacesOfBD.contains(typeObject), isTrue);
expect(superinterfacesOfBD.contains(typeA), isTrue);
// C<D>
- InterfaceTypeImpl typeCD = new InterfaceTypeImpl.con1(classC);
+ InterfaceTypeImpl typeCD = new InterfaceTypeImpl(classC);
typeCD.typeArguments = <DartType>[classD.type];
Set<InterfaceType> superinterfacesOfCD =
InterfaceTypeImpl.computeSuperinterfaceSet(typeCD);
@@ -2001,7 +2001,7 @@
InterfaceType typeA = classA.type;
ClassElement classB = ElementFactory.classElement("B", typeA, ["T"]);
ClassElementImpl classC = ElementFactory.classElement2("C", ["T"]);
- InterfaceTypeImpl typeBT = new InterfaceTypeImpl.con1(classB);
+ InterfaceTypeImpl typeBT = new InterfaceTypeImpl(classB);
DartType typeT = classC.type.typeArguments[0];
typeBT.typeArguments = <DartType>[typeT];
classC.supertype = typeBT;
@@ -2013,7 +2013,7 @@
InterfaceType typeObject = ElementFactory.object.type;
expect(superinterfacesOfA.contains(typeObject), isTrue);
// B<D>
- InterfaceTypeImpl typeBD = new InterfaceTypeImpl.con1(classB);
+ InterfaceTypeImpl typeBD = new InterfaceTypeImpl(classB);
typeBD.typeArguments = <DartType>[classD.type];
Set<InterfaceType> superinterfacesOfBD =
InterfaceTypeImpl.computeSuperinterfaceSet(typeBD);
@@ -2021,7 +2021,7 @@
expect(superinterfacesOfBD.contains(typeObject), isTrue);
expect(superinterfacesOfBD.contains(typeA), isTrue);
// C<D>
- InterfaceTypeImpl typeCD = new InterfaceTypeImpl.con1(classC);
+ InterfaceTypeImpl typeCD = new InterfaceTypeImpl(classC);
typeCD.typeArguments = <DartType>[classD.type];
Set<InterfaceType> superinterfacesOfCD =
InterfaceTypeImpl.computeSuperinterfaceSet(typeCD);
@@ -2151,8 +2151,7 @@
}
void test_creation() {
- expect(new InterfaceTypeImpl.con1(ElementFactory.classElement2("A")),
- isNotNull);
+ expect(new InterfaceTypeImpl(ElementFactory.classElement2("A")), isNotNull);
}
void test_getAccessors() {
@@ -2162,19 +2161,19 @@
PropertyAccessorElement getterH =
ElementFactory.getterElement("h", false, null);
typeElement.accessors = <PropertyAccessorElement>[getterG, getterH];
- InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement);
+ InterfaceTypeImpl type = new InterfaceTypeImpl(typeElement);
expect(type.accessors.length, 2);
}
void test_getAccessors_empty() {
ClassElementImpl typeElement = ElementFactory.classElement2("A");
- InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement);
+ InterfaceTypeImpl type = new InterfaceTypeImpl(typeElement);
expect(type.accessors.length, 0);
}
void test_getElement() {
ClassElementImpl typeElement = ElementFactory.classElement2("A");
- InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement);
+ InterfaceTypeImpl type = new InterfaceTypeImpl(typeElement);
expect(type.element, typeElement);
}
@@ -2207,7 +2206,7 @@
// A<I>
//
InterfaceType typeI = ElementFactory.classElement2("I").type;
- InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl typeAI = new InterfaceTypeImpl(classA);
typeAI.typeArguments = <DartType>[typeI];
PropertyAccessorElement getter = typeAI.getGetter(getterName);
expect(getter, isNotNull);
@@ -2252,14 +2251,14 @@
ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]);
ClassElementImpl classB = ElementFactory.classElement2("B", ["F"]);
InterfaceType typeB = classB.type;
- InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl typeAF = new InterfaceTypeImpl(classA);
typeAF.typeArguments = <DartType>[typeB.typeArguments[0]];
classB.interfaces = <InterfaceType>[typeAF];
//
// B<I>
//
InterfaceType typeI = ElementFactory.classElement2("I").type;
- InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB);
+ InterfaceTypeImpl typeBI = new InterfaceTypeImpl(classB);
typeBI.typeArguments = <DartType>[typeI];
List<InterfaceType> interfaces = typeBI.interfaces;
expect(interfaces, hasLength(1));
@@ -2303,7 +2302,7 @@
void test_getLeastUpperBound_functionType() {
DartType interfaceType = ElementFactory.classElement2("A").type;
- FunctionTypeImpl functionType = new FunctionTypeImpl.con1(
+ FunctionTypeImpl functionType = new FunctionTypeImpl(
new FunctionElementImpl.forNode(AstFactory.identifier3("f")));
expect(interfaceType.getLeastUpperBound(functionType), isNull);
}
@@ -2531,7 +2530,7 @@
// A<I>
//
InterfaceType typeI = ElementFactory.classElement2("I").type;
- InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl typeAI = new InterfaceTypeImpl(classA);
typeAI.typeArguments = <DartType>[typeI];
MethodElement method = typeAI.getMethod(methodName);
expect(method, isNotNull);
@@ -2556,13 +2555,13 @@
MethodElementImpl methodOne = ElementFactory.methodElement("one", null);
MethodElementImpl methodTwo = ElementFactory.methodElement("two", null);
typeElement.methods = <MethodElement>[methodOne, methodTwo];
- InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement);
+ InterfaceTypeImpl type = new InterfaceTypeImpl(typeElement);
expect(type.methods.length, 2);
}
void test_getMethods_empty() {
ClassElementImpl typeElement = ElementFactory.classElement2("A");
- InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement);
+ InterfaceTypeImpl type = new InterfaceTypeImpl(typeElement);
expect(type.methods.length, 0);
}
@@ -2594,14 +2593,14 @@
ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]);
ClassElementImpl classB = ElementFactory.classElement2("B", ["F"]);
InterfaceType typeB = classB.type;
- InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl typeAF = new InterfaceTypeImpl(classA);
typeAF.typeArguments = <DartType>[typeB.typeArguments[0]];
classB.mixins = <InterfaceType>[typeAF];
//
// B<I>
//
InterfaceType typeI = ElementFactory.classElement2("I").type;
- InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB);
+ InterfaceTypeImpl typeBI = new InterfaceTypeImpl(classB);
typeBI.typeArguments = <DartType>[typeI];
List<InterfaceType> interfaces = typeBI.mixins;
expect(interfaces, hasLength(1));
@@ -2639,7 +2638,7 @@
// A<I>
//
InterfaceType typeI = ElementFactory.classElement2("I").type;
- InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl typeAI = new InterfaceTypeImpl(classA);
typeAI.typeArguments = <DartType>[typeI];
PropertyAccessorElement setter = typeAI.getSetter(setterName);
expect(setter, isNotNull);
@@ -2677,14 +2676,14 @@
ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]);
ClassElementImpl classB = ElementFactory.classElement2("B", ["F"]);
InterfaceType typeB = classB.type;
- InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl typeAF = new InterfaceTypeImpl(classA);
typeAF.typeArguments = <DartType>[typeB.typeArguments[0]];
classB.supertype = typeAF;
//
// B<I>
//
InterfaceType typeI = ElementFactory.classElement2("I").type;
- InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB);
+ InterfaceTypeImpl typeBI = new InterfaceTypeImpl(classB);
typeBI.typeArguments = <DartType>[typeI];
InterfaceType superclass = typeBI.superclass;
expect(superclass.element, same(classA));
@@ -2714,9 +2713,9 @@
//
ClassElement classA = ElementFactory.classElement2("A", ["E"]);
ClassElement classB = ElementFactory.classElement2("B", ["F", "G"]);
- InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl typeAF = new InterfaceTypeImpl(classA);
typeAF.typeArguments = <DartType>[classB.typeParameters[0].type];
- InterfaceTypeImpl typeAG = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl typeAG = new InterfaceTypeImpl(classA);
typeAG.typeArguments = <DartType>[classB.typeParameters[1].type];
expect(typeAG.isAssignableTo(typeAF), isFalse);
}
@@ -2770,8 +2769,8 @@
ClassElement classA = ElementFactory.classElement2("A", ["E"]);
ClassElement classI = ElementFactory.classElement2("I");
ClassElement classJ = ElementFactory.classElement("J", classI.type);
- InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
- InterfaceTypeImpl typeAJ = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl typeAI = new InterfaceTypeImpl(classA);
+ InterfaceTypeImpl typeAJ = new InterfaceTypeImpl(classA);
typeAI.typeArguments = <DartType>[classI.type];
typeAJ.typeArguments = <DartType>[classJ.type];
expect(typeAJ.isMoreSpecificThan(typeAI), isTrue);
@@ -3024,9 +3023,9 @@
ClassElement classK = ElementFactory.classElement2("K");
InterfaceType typeA = classA.type;
InterfaceType typeA_dynamic = typeA.substitute4(<DartType>[dynamicType]);
- InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
- InterfaceTypeImpl typeAJ = new InterfaceTypeImpl.con1(classA);
- InterfaceTypeImpl typeAK = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl typeAI = new InterfaceTypeImpl(classA);
+ InterfaceTypeImpl typeAJ = new InterfaceTypeImpl(classA);
+ InterfaceTypeImpl typeAK = new InterfaceTypeImpl(classA);
typeAI.typeArguments = <DartType>[classI.type];
typeAJ.typeArguments = <DartType>[classJ.type];
typeAK.typeArguments = <DartType>[classK.type];
@@ -3299,7 +3298,7 @@
classA.type.typeArguments;
ClassElementImpl classB = ElementFactory.classElement2("B", ["F"]);
InterfaceType typeB = classB.type;
- InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl typeAF = new InterfaceTypeImpl(classA);
typeAF.typeArguments = <DartType>[typeB.typeArguments[0]];
classB.supertype = typeAF;
LibraryElementImpl library =
@@ -3310,7 +3309,7 @@
// B<I>
//
InterfaceType typeI = ElementFactory.classElement2("I").type;
- InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB);
+ InterfaceTypeImpl typeBI = new InterfaceTypeImpl(classB);
typeBI.typeArguments = <DartType>[typeI];
MethodElement method = typeBI.lookUpMethod(methodName, library);
expect(method, isNotNull);
@@ -3469,7 +3468,7 @@
void test_substitute_exception() {
try {
ClassElementImpl classA = ElementFactory.classElement2("A");
- InterfaceTypeImpl type = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl type = new InterfaceTypeImpl(classA);
InterfaceType argumentType = ElementFactory.classElement2("B").type;
type.substitute2(<DartType>[argumentType], <DartType>[]);
fail(
@@ -3485,7 +3484,7 @@
ClassElementImpl classA = ElementFactory.classElement2("A");
TypeParameterElementImpl parameterElement =
new TypeParameterElementImpl.forNode(AstFactory.identifier3("E"));
- InterfaceTypeImpl type = new InterfaceTypeImpl.con1(classA);
+ InterfaceTypeImpl type = new InterfaceTypeImpl(classA);
TypeParameterTypeImpl parameter =
new TypeParameterTypeImpl(parameterElement);
type.typeArguments = <DartType>[parameter];
@@ -3563,9 +3562,9 @@
LibraryElementImpl library = ElementFactory.library(context, "test");
CompilationUnitElement unitLib = library.definingCompilationUnit;
CompilationUnitElementImpl unitA =
- ElementFactory.compilationUnit("unit_a.dart");
+ ElementFactory.compilationUnit("unit_a.dart", unitLib.source);
CompilationUnitElementImpl unitB =
- ElementFactory.compilationUnit("unit_b.dart");
+ ElementFactory.compilationUnit("unit_b.dart", unitLib.source);
library.parts = <CompilationUnitElement>[unitA, unitB];
expect(library.units,
unorderedEquals(<CompilationUnitElement>[unitLib, unitA, unitB]));
@@ -3902,7 +3901,7 @@
TypeParameterElementImpl element =
new TypeParameterElementImpl.forNode(AstFactory.identifier3("E"));
TypeParameterTypeImpl type = new TypeParameterTypeImpl(element);
- InterfaceTypeImpl argument = new InterfaceTypeImpl.con1(
+ InterfaceTypeImpl argument = new InterfaceTypeImpl(
new ClassElementImpl.forNode(AstFactory.identifier3("A")));
TypeParameterTypeImpl parameter = new TypeParameterTypeImpl(element);
expect(type.substitute2(<DartType>[argument], <DartType>[parameter]),
@@ -3912,7 +3911,7 @@
void test_substitute_notEqual() {
TypeParameterTypeImpl type = new TypeParameterTypeImpl(
new TypeParameterElementImpl.forNode(AstFactory.identifier3("E")));
- InterfaceTypeImpl argument = new InterfaceTypeImpl.con1(
+ InterfaceTypeImpl argument = new InterfaceTypeImpl(
new ClassElementImpl.forNode(AstFactory.identifier3("A")));
TypeParameterTypeImpl parameter = new TypeParameterTypeImpl(
new TypeParameterElementImpl.forNode(AstFactory.identifier3("F")));
@@ -3962,7 +3961,7 @@
class _FunctionTypeImplTest_isSubtypeOf_baseCase_classFunction
extends InterfaceTypeImpl {
_FunctionTypeImplTest_isSubtypeOf_baseCase_classFunction(ClassElement arg0)
- : super.con1(arg0);
+ : super(arg0);
@override
bool get isDartCoreFunction => true;
diff --git a/pkg/analyzer/test/generated/engine_test.dart b/pkg/analyzer/test/generated/engine_test.dart
index 06cafa0..7809218 100644
--- a/pkg/analyzer/test/generated/engine_test.dart
+++ b/pkg/analyzer/test/generated/engine_test.dart
@@ -107,11 +107,11 @@
new UniversalCachePartition(null, 8, new DefaultRetentionPolicy());
AnalysisCache cache = new AnalysisCache(<CachePartition>[partition]);
JavaFile file = new JavaFile('baz.dart');
- Source source1 = new FileBasedSource.con1(file);
+ Source source1 = new FileBasedSource(file);
Source source2 =
- new FileBasedSource.con2(Uri.parse('package:foo/baz.dart'), file);
+ new FileBasedSource(file, Uri.parse('package:foo/baz.dart'));
Source source3 =
- new FileBasedSource.con2(Uri.parse('package:bar/baz.dart'), file);
+ new FileBasedSource(file, Uri.parse('package:bar/baz.dart'));
DartEntry entry1 = new DartEntry();
DartEntry entry2 = new DartEntry();
DartEntry entry3 = new DartEntry();
@@ -235,7 +235,7 @@
]);
_context.sourceFactory = _sourceFactory;
AnalysisOptionsImpl options =
- new AnalysisOptionsImpl.con1(_context.analysisOptions);
+ new AnalysisOptionsImpl.from(_context.analysisOptions);
options.cacheSize = 256;
_context.analysisOptions = options;
}
@@ -252,7 +252,7 @@
_context.onSourcesChanged.listen(listener.onData);
expect(_context.sourcesNeedingProcessing.isEmpty, isTrue);
Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
ChangeSet changeSet = new ChangeSet();
changeSet.addedSource(source);
_context.applyChanges(changeSet);
@@ -268,13 +268,13 @@
_context.onSourcesChanged.listen(listener.onData);
expect(_context.sourcesNeedingProcessing.isEmpty, isTrue);
Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
ChangeSet changeSet1 = new ChangeSet();
changeSet1.addedSource(source);
_context.applyChanges(changeSet1);
expect(_context.sourcesNeedingProcessing.contains(source), isTrue);
Source source2 =
- new FileBasedSource.con1(FileUtilities2.createFile("/test2.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test2.dart"));
ChangeSet changeSet2 = new ChangeSet();
changeSet2.addedSource(source2);
changeSet2.changedSource(source);
@@ -291,13 +291,13 @@
_context.onSourcesChanged.listen(listener.onData);
expect(_context.sourcesNeedingProcessing.isEmpty, isTrue);
Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
ChangeSet changeSet1 = new ChangeSet();
changeSet1.addedSource(source);
_context.applyChanges(changeSet1);
expect(_context.sourcesNeedingProcessing.contains(source), isTrue);
Source source2 =
- new FileBasedSource.con1(FileUtilities2.createFile("/test2.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test2.dart"));
ChangeSet changeSet2 = new ChangeSet();
changeSet2.addedSource(source2);
changeSet2.changedContent(source, 'library test;');
@@ -376,13 +376,13 @@
_context.onSourcesChanged.listen(listener.onData);
expect(_context.sourcesNeedingProcessing.isEmpty, isTrue);
Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
ChangeSet changeSet1 = new ChangeSet();
changeSet1.addedSource(source);
_context.applyChanges(changeSet1);
expect(_context.sourcesNeedingProcessing.contains(source), isTrue);
Source source2 =
- new FileBasedSource.con1(FileUtilities2.createFile("/test2.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test2.dart"));
ChangeSet changeSet2 = new ChangeSet();
changeSet2.addedSource(source2);
changeSet2.changedRange(source, 'library test;', 0, 0, 13);
@@ -1370,7 +1370,7 @@
void test_parseCompilationUnit_nonExistentSource() {
Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
try {
_context.parseCompilationUnit(source);
fail("Expected AnalysisException because file does not exist");
@@ -1828,7 +1828,7 @@
void test_setAnalysisOptions_reduceAnalysisPriorityOrder() {
AnalysisOptionsImpl options =
- new AnalysisOptionsImpl.con1(_context.analysisOptions);
+ new AnalysisOptionsImpl.from(_context.analysisOptions);
List<Source> sources = new List<Source>();
for (int index = 0; index < options.cacheSize; index++) {
sources.add(_addSource("/lib.dart$index", ""));
@@ -1908,7 +1908,7 @@
void test_setChangedContents_notResolved() {
_context = AnalysisContextFactory.contextWithCore();
AnalysisOptionsImpl options =
- new AnalysisOptionsImpl.con1(_context.analysisOptions);
+ new AnalysisOptionsImpl.from(_context.analysisOptions);
options.incremental = true;
_context.analysisOptions = options;
_sourceFactory = _context.sourceFactory;
@@ -2025,7 +2025,7 @@
void test_updateAnalysis() {
expect(_context.sourcesNeedingProcessing.isEmpty, isTrue);
Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
AnalysisDelta delta = new AnalysisDelta();
delta.setAnalysisLevel(source, AnalysisLevel.ALL);
_context.applyAnalysisDelta(delta);
@@ -2039,7 +2039,7 @@
void xtest_performAnalysisTask_stress() {
int maxCacheSize = 4;
AnalysisOptionsImpl options =
- new AnalysisOptionsImpl.con1(_context.analysisOptions);
+ new AnalysisOptionsImpl.from(_context.analysisOptions);
options.cacheSize = maxCacheSize;
_context.analysisOptions = options;
int sourceCount = maxCacheSize + 2;
@@ -2067,8 +2067,7 @@
}
Source _addSource(String fileName, String contents) {
- Source source =
- new FileBasedSource.con1(FileUtilities2.createFile(fileName));
+ Source source = new FileBasedSource(FileUtilities2.createFile(fileName));
ChangeSet changeSet = new ChangeSet();
changeSet.addedSource(source);
_context.applyChanges(changeSet);
@@ -2215,7 +2214,7 @@
options.hint = booleanValue;
options.incremental = booleanValue;
options.preserveComments = booleanValue;
- AnalysisOptionsImpl copy = new AnalysisOptionsImpl.con1(options);
+ AnalysisOptionsImpl copy = new AnalysisOptionsImpl.from(options);
expect(copy.analyzeFunctionBodies, options.analyzeFunctionBodies);
expect(copy.cacheSize, options.cacheSize);
expect(copy.dart2jsHint, options.dart2jsHint);
@@ -2324,28 +2323,28 @@
DartEntry entry = new DartEntry();
expect(entry.allErrors, hasLength(0));
entry.setValue(SourceEntry.CONTENT_ERRORS, <AnalysisError>[
- new AnalysisError.con1(
- source, ScannerErrorCode.UNABLE_GET_CONTENT, ['exception details'])
+ new AnalysisError(source, 0, 0, ScannerErrorCode.UNABLE_GET_CONTENT,
+ ['exception details'])
]);
entry.setValue(DartEntry.SCAN_ERRORS, <AnalysisError>[
- new AnalysisError.con1(
- source, ScannerErrorCode.UNTERMINATED_STRING_LITERAL)
+ new AnalysisError(
+ source, 0, 0, ScannerErrorCode.UNTERMINATED_STRING_LITERAL)
]);
entry.setValue(DartEntry.PARSE_ERRORS, <AnalysisError>[
- new AnalysisError.con1(source, ParserErrorCode.ABSTRACT_CLASS_MEMBER)
+ new AnalysisError(source, 0, 0, ParserErrorCode.ABSTRACT_CLASS_MEMBER)
]);
entry.setValueInLibrary(DartEntry.RESOLUTION_ERRORS, source,
<AnalysisError>[
- new AnalysisError.con1(
- source, CompileTimeErrorCode.CONST_CONSTRUCTOR_THROWS_EXCEPTION)
+ new AnalysisError(
+ source, 0, 0, CompileTimeErrorCode.CONST_CONSTRUCTOR_THROWS_EXCEPTION)
]);
entry.setValueInLibrary(DartEntry.VERIFICATION_ERRORS, source,
<AnalysisError>[
- new AnalysisError.con1(
- source, StaticWarningCode.CASE_BLOCK_NOT_TERMINATED)
+ new AnalysisError(
+ source, 0, 0, StaticWarningCode.CASE_BLOCK_NOT_TERMINATED)
]);
entry.setValueInLibrary(DartEntry.HINTS, source,
- <AnalysisError>[new AnalysisError.con1(source, HintCode.DEAD_CODE)]);
+ <AnalysisError>[new AnalysisError(source, 0, 0, HintCode.DEAD_CODE)]);
expect(entry.allErrors, hasLength(6));
}
@@ -3386,7 +3385,7 @@
void test_setValue_hints() {
_setValueInLibrary(DartEntry.HINTS,
- <AnalysisError>[new AnalysisError.con1(null, HintCode.DEAD_CODE)]);
+ <AnalysisError>[new AnalysisError(null, 0, 0, HintCode.DEAD_CODE)]);
}
void test_setValue_importedLibraries() {
@@ -3415,7 +3414,7 @@
void test_setValue_parseErrors() {
_setValue(DartEntry.PARSE_ERRORS, <AnalysisError>[
- new AnalysisError.con1(null, ParserErrorCode.ABSTRACT_CLASS_MEMBER)
+ new AnalysisError(null, 0, 0, ParserErrorCode.ABSTRACT_CLASS_MEMBER)
]);
}
@@ -3426,8 +3425,8 @@
void test_setValue_resolutionErrors() {
_setValueInLibrary(DartEntry.RESOLUTION_ERRORS, <AnalysisError>[
- new AnalysisError.con1(
- null, CompileTimeErrorCode.CONST_CONSTRUCTOR_THROWS_EXCEPTION)
+ new AnalysisError(
+ null, 0, 0, CompileTimeErrorCode.CONST_CONSTRUCTOR_THROWS_EXCEPTION)
]);
}
@@ -3437,8 +3436,8 @@
void test_setValue_scanErrors() {
_setValue(DartEntry.SCAN_ERRORS, <AnalysisError>[
- new AnalysisError.con1(
- null, ScannerErrorCode.UNTERMINATED_MULTI_LINE_COMMENT)
+ new AnalysisError(
+ null, 0, 0, ScannerErrorCode.UNTERMINATED_MULTI_LINE_COMMENT)
]);
}
@@ -3452,7 +3451,7 @@
void test_setValue_verificationErrors() {
_setValueInLibrary(DartEntry.VERIFICATION_ERRORS, <AnalysisError>[
- new AnalysisError.con1(null, StaticWarningCode.CASE_BLOCK_NOT_TERMINATED)
+ new AnalysisError(null, 0, 0, StaticWarningCode.CASE_BLOCK_NOT_TERMINATED)
]);
}
@@ -3609,7 +3608,7 @@
void test_getSource() {
Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
GenerateDartErrorsTask task =
new GenerateDartErrorsTask(null, source, null, null);
expect(task.source, same(source));
@@ -3618,7 +3617,7 @@
void test_perform() {
InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
ChangeSet changeSet = new ChangeSet();
changeSet.addedSource(source);
context.applyChanges(changeSet);
@@ -3639,7 +3638,7 @@
void test_perform_validateDirectives() {
InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
ChangeSet changeSet = new ChangeSet();
changeSet.addedSource(source);
context.applyChanges(changeSet);
@@ -3733,13 +3732,13 @@
InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
ChangeSet changeSet = new ChangeSet();
Source librarySource =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
changeSet.addedSource(librarySource);
Source unusedSource =
- new FileBasedSource.con1(FileUtilities2.createFile("/unused.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/unused.dart"));
changeSet.addedSource(unusedSource);
Source partSource =
- new FileBasedSource.con1(FileUtilities2.createFile("/part.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/part.dart"));
changeSet.addedSource(partSource);
context.applyChanges(changeSet);
context.setContents(librarySource, r'''
@@ -3812,7 +3811,7 @@
InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
ChangeSet changeSet = new ChangeSet();
Source librarySource =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
changeSet.addedSource(librarySource);
context.applyChanges(changeSet);
context.setContents(librarySource, r'''
@@ -3939,13 +3938,13 @@
HtmlEntry entry = new HtmlEntry();
expect(entry.allErrors, hasLength(0));
entry.setValue(HtmlEntry.PARSE_ERRORS, <AnalysisError>[
- new AnalysisError.con1(source, ParserErrorCode.EXPECTED_TOKEN, [";"])
+ new AnalysisError(source, 0, 0, ParserErrorCode.EXPECTED_TOKEN, [";"])
]);
entry.setValue(HtmlEntry.RESOLUTION_ERRORS, <AnalysisError>[
- new AnalysisError.con1(source, HtmlWarningCode.INVALID_URI, ["-"])
+ new AnalysisError(source, 0, 0, HtmlWarningCode.INVALID_URI, ["-"])
]);
entry.setValue(HtmlEntry.HINTS,
- <AnalysisError>[new AnalysisError.con1(source, HintCode.DEAD_CODE)]);
+ <AnalysisError>[new AnalysisError(source, 0, 0, HintCode.DEAD_CODE)]);
expect(entry.allErrors, hasLength(3));
}
@@ -4011,7 +4010,7 @@
void test_setValue_hints() {
_setValue(HtmlEntry.HINTS,
- <AnalysisError>[new AnalysisError.con1(null, HintCode.DEAD_CODE)]);
+ <AnalysisError>[new AnalysisError(null, 0, 0, HintCode.DEAD_CODE)]);
}
void test_setValue_illegal() {
@@ -4032,7 +4031,7 @@
void test_setValue_parseErrors() {
_setValue(HtmlEntry.PARSE_ERRORS, <AnalysisError>[
- new AnalysisError.con1(null, HtmlWarningCode.INVALID_URI, ["-"])
+ new AnalysisError(null, 0, 0, HtmlWarningCode.INVALID_URI, ["-"])
]);
}
@@ -4042,7 +4041,7 @@
void test_setValue_resolutionErrors() {
_setValue(HtmlEntry.RESOLUTION_ERRORS, <AnalysisError>[
- new AnalysisError.con1(null, HtmlWarningCode.INVALID_URI, ["-"])
+ new AnalysisError(null, 0, 0, HtmlWarningCode.INVALID_URI, ["-"])
]);
}
@@ -4453,7 +4452,7 @@
InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
ChangeSet changeSet = new ChangeSet();
Source librarySource =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
changeSet.addedSource(librarySource);
context.applyChanges(changeSet);
context.setContents(librarySource, r'''
@@ -4480,7 +4479,7 @@
InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
ChangeSet changeSet = new ChangeSet();
Source librarySource =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
changeSet.addedSource(librarySource);
context.applyChanges(changeSet);
context.setContents(librarySource, r'''
@@ -5371,7 +5370,7 @@
static void assertEvent(SourcesChangedEvent event,
{bool wereSourcesAdded: false,
- List<Source> changedSources: Source.EMPTY_ARRAY,
+ List<Source> changedSources: Source.EMPTY_LIST,
bool wereSourcesRemovedOrDeleted: false}) {
expect(event.wereSourcesAdded, wereSourcesAdded);
expect(event.changedSources, changedSources);
@@ -5383,7 +5382,7 @@
List<SourcesChangedEvent> actualEvents = [];
void assertEvent({bool wereSourcesAdded: false,
- List<Source> changedSources: Source.EMPTY_ARRAY,
+ List<Source> changedSources: Source.EMPTY_LIST,
bool wereSourcesRemovedOrDeleted: false}) {
if (actualEvents.isEmpty) {
fail('Expected event but found none');
@@ -5410,6 +5409,11 @@
*/
class TestAnalysisContext implements InternalAnalysisContext {
@override
+ AnalysisCache get analysisCache {
+ fail("Unexpected invocation of analysisCache");
+ return null;
+ }
+ @override
AnalysisOptions get analysisOptions {
fail("Unexpected invocation of getAnalysisOptions");
return null;
@@ -5485,6 +5489,7 @@
fail("Unexpected invocation of getPrioritySources");
return null;
}
+
@override
List<AnalysisTarget> get priorityTargets {
fail("Unexpected invocation of visitCacheItems");
@@ -5502,7 +5507,6 @@
fail("Unexpected invocation of getSourceFactory");
return null;
}
-
@override
void set sourceFactory(SourceFactory factory) {
fail("Unexpected invocation of setSourceFactory");
@@ -5536,10 +5540,6 @@
fail("Unexpected invocation of addListener");
}
@override
- void addSourceInfo(Source source, SourceEntry info) {
- fail("Unexpected invocation of addSourceInfo");
- }
- @override
void applyAnalysisDelta(AnalysisDelta delta) {
fail("Unexpected invocation of applyAnalysisDelta");
}
@@ -5750,6 +5750,7 @@
void recordLibraryElements(Map<Source, LibraryElement> elementMap) {
fail("Unexpected invocation of recordLibraryElements");
}
+
@override
void removeListener(AnalysisListener listener) {
fail("Unexpected invocation of removeListener");
@@ -5793,15 +5794,6 @@
}
}
-class TestAnalysisContext_test_addSourceInfo extends TestAnalysisContext {
- bool invoked = false;
- TestAnalysisContext_test_addSourceInfo();
- @override
- void addSourceInfo(Source source, SourceEntry info) {
- invoked = true;
- }
-}
-
class TestAnalysisContext_test_applyChanges extends TestAnalysisContext {
bool invoked = false;
TestAnalysisContext_test_applyChanges();
@@ -5994,7 +5986,7 @@
@override
List<Source> getHtmlFilesReferencing(Source source) {
invoked = true;
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
}
@@ -6004,7 +5996,7 @@
@override
List<Source> get htmlSources {
invoked = true;
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
}
@@ -6025,7 +6017,7 @@
@override
List<Source> get launchableClientLibrarySources {
invoked = true;
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
}
@@ -6036,7 +6028,7 @@
@override
List<Source> get launchableServerLibrarySources {
invoked = true;
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
}
@@ -6047,7 +6039,7 @@
@override
List<Source> getLibrariesContaining(Source source) {
invoked = true;
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
}
@@ -6058,7 +6050,7 @@
@override
List<Source> getLibrariesDependingOn(Source librarySource) {
invoked = true;
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
}
@@ -6089,7 +6081,7 @@
@override
List<Source> get librarySources {
invoked = true;
- return Source.EMPTY_ARRAY;
+ return Source.EMPTY_LIST;
}
}
diff --git a/pkg/analyzer/test/generated/incremental_resolver_test.dart b/pkg/analyzer/test/generated/incremental_resolver_test.dart
index 0d4c7ee..9d8ccce 100644
--- a/pkg/analyzer/test/generated/incremental_resolver_test.dart
+++ b/pkg/analyzer/test/generated/incremental_resolver_test.dart
@@ -2800,7 +2800,7 @@
static AstNode _findNodeAt(
CompilationUnit oldUnit, int offset, Predicate<AstNode> predicate) {
- NodeLocator locator = new NodeLocator.con1(offset);
+ NodeLocator locator = new NodeLocator(offset);
AstNode node = locator.searchWithin(oldUnit);
return node.getAncestor(predicate);
}
diff --git a/pkg/analyzer/test/generated/parser_test.dart b/pkg/analyzer/test/generated/parser_test.dart
index 023c9fa..89de72c 100644
--- a/pkg/analyzer/test/generated/parser_test.dart
+++ b/pkg/analyzer/test/generated/parser_test.dart
@@ -953,9 +953,8 @@
void test_expectedExecutable_topLevel_eof() {
parse2("parseCompilationUnitMember", <Object>[emptyCommentAndMetadata()],
- "x", [
- new AnalysisError.con2(null, 0, 1, ParserErrorCode.EXPECTED_EXECUTABLE)
- ]);
+ "x",
+ [new AnalysisError(null, 0, 1, ParserErrorCode.EXPECTED_EXECUTABLE)]);
}
void test_expectedInterpolationIdentifier() {
@@ -967,9 +966,8 @@
// The scanner inserts an empty string token between the two $'s; we need to
// make sure that the MISSING_IDENTIFIER error that is generated has a
// nonzero width so that it will show up in the editor UI.
- parse2("parseStringLiteral", <Object>[], "'\$\$foo'", [
- new AnalysisError.con2(null, 2, 1, ParserErrorCode.MISSING_IDENTIFIER)
- ]);
+ parse2("parseStringLiteral", <Object>[], "'\$\$foo'",
+ [new AnalysisError(null, 2, 1, ParserErrorCode.MISSING_IDENTIFIER)]);
}
void test_expectedStringLiteral() {
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index 7382916..8a43d18 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -118,7 +118,7 @@
new CompilationUnitElementImpl("core.dart");
Source coreSource = sourceFactory.forUri(DartSdk.DART_CORE);
coreContext.setContents(coreSource, "");
- coreUnit.source = coreSource;
+ coreUnit.librarySource = coreUnit.source = coreSource;
ClassElementImpl proxyClassElement = ElementFactory.classElement2("_Proxy");
coreUnit.types = <ClassElement>[
provider.boolType.element,
@@ -171,7 +171,7 @@
new CompilationUnitElementImpl("async.dart");
Source asyncSource = sourceFactory.forUri(DartSdk.DART_ASYNC);
coreContext.setContents(asyncSource, "");
- asyncUnit.source = asyncSource;
+ asyncUnit.librarySource = asyncUnit.source = asyncSource;
// Future
ClassElementImpl futureElement =
ElementFactory.classElement2("Future", ["T"]);
@@ -197,7 +197,7 @@
aliasElement.parameters = parameters;
aliasElement.returnType = provider.dynamicType;
aliasElement.enclosingElement = asyncUnit;
- FunctionTypeImpl aliasType = new FunctionTypeImpl.con2(aliasElement);
+ FunctionTypeImpl aliasType = new FunctionTypeImpl.forTypedef(aliasElement);
aliasElement.shareTypeParameters(futureElement.typeParameters);
aliasType.typeArguments = futureElement.type.typeArguments;
MethodElement thenMethod = ElementFactory.methodElementWithParameters(
@@ -229,7 +229,7 @@
new CompilationUnitElementImpl("html_dartium.dart");
Source htmlSource = sourceFactory.forUri(DartSdk.DART_HTML);
coreContext.setContents(htmlSource, "");
- htmlUnit.source = htmlSource;
+ htmlUnit.librarySource = htmlUnit.source = htmlSource;
ClassElementImpl elementElement = ElementFactory.classElement2("Element");
InterfaceType elementType = elementElement.type;
ClassElementImpl canvasElement =
@@ -290,7 +290,7 @@
new CompilationUnitElementImpl("math.dart");
Source mathSource = sourceFactory.forUri(_DART_MATH);
coreContext.setContents(mathSource, "");
- mathUnit.source = mathSource;
+ mathUnit.librarySource = mathUnit.source = mathSource;
FunctionElement cosElement = ElementFactory.functionElement3("cos",
provider.doubleType.element, <ClassElement>[provider.numType.element],
ClassElement.EMPTY_LIST);
@@ -417,13 +417,13 @@
AnalysisContextHelper() {
context = AnalysisContextFactory.contextWithCore();
AnalysisOptionsImpl options =
- new AnalysisOptionsImpl.con1(context.analysisOptions);
+ new AnalysisOptionsImpl.from(context.analysisOptions);
options.cacheSize = 256;
context.analysisOptions = options;
}
Source addSource(String path, String code) {
- Source source = new FileBasedSource.con1(FileUtilities2.createFile(path));
+ Source source = new FileBasedSource(FileUtilities2.createFile(path));
if (path.endsWith(".dart") || path.endsWith(".html")) {
ChangeSet changeSet = new ChangeSet();
changeSet.addedSource(source);
@@ -1893,10 +1893,11 @@
[new DartUriResolver(DirectoryBasedDartSdk.defaultSdk)]);
context.sourceFactory = sourceFactory;
FileBasedSource source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
CompilationUnitElementImpl definingCompilationUnit =
new CompilationUnitElementImpl("test.dart");
- definingCompilationUnit.source = source;
+ definingCompilationUnit.librarySource =
+ definingCompilationUnit.source = source;
_definingLibrary = ElementFactory.library(context, "test");
_definingLibrary.definingCompilationUnit = definingCompilationUnit;
Library library = new Library(context, _listener, source);
@@ -5710,10 +5711,11 @@
InheritanceManager _createInheritanceManager() {
AnalysisContextImpl context = AnalysisContextFactory.contextWithCore();
FileBasedSource source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
CompilationUnitElementImpl definingCompilationUnit =
new CompilationUnitElementImpl("test.dart");
- definingCompilationUnit.source = source;
+ definingCompilationUnit.librarySource =
+ definingCompilationUnit.source = source;
_definingLibrary = ElementFactory.library(context, "test");
_definingLibrary.definingCompilationUnit = definingCompilationUnit;
return new InheritanceManager(_definingLibrary);
@@ -5735,8 +5737,7 @@
* @return the source object representing the added file
*/
Source addSource(String filePath, String contents) {
- Source source =
- new FileBasedSource.con1(FileUtilities2.createFile(filePath));
+ Source source = new FileBasedSource(FileUtilities2.createFile(filePath));
_context.setContents(source, contents);
return source;
}
@@ -6330,7 +6331,7 @@
}
Library _createLibrary(String definingCompilationUnitPath) => new Library(
- _analysisContext, _errorListener, new FileBasedSource.con1(
+ _analysisContext, _errorListener, new FileBasedSource(
FileUtilities2.createFile(definingCompilationUnitPath)));
}
@@ -6353,7 +6354,7 @@
map.put(m1.name, m1);
map.put(m2.name, m2);
map.put(m3.name, m3);
- MemberMap copy = new MemberMap.con2(map);
+ MemberMap copy = new MemberMap.from(map);
expect(copy.size, map.size);
expect(copy.get(m1.name), m1);
expect(copy.get(m2.name), m2);
@@ -7379,13 +7380,13 @@
}
/**
- * Instances of the class `ResolutionVerifier` verify that all of the nodes in an AST
- * structure that should have been resolved were resolved.
+ * An AST visitor used to verify that all of the nodes in an AST structure that
+ * should have been resolved were resolved.
*/
class ResolutionVerifier extends RecursiveAstVisitor<Object> {
/**
- * A set containing nodes that are known to not be resolvable and should therefore not cause the
- * test to fail.
+ * A set containing nodes that are known to not be resolvable and should
+ * therefore not cause the test to fail.
*/
final Set<AstNode> _knownExceptions;
@@ -7395,26 +7396,19 @@
List<AstNode> _unresolvedNodes = new List<AstNode>();
/**
- * A list containing all of the AST nodes that were resolved to an element of the wrong type.
+ * A list containing all of the AST nodes that were resolved to an element of
+ * the wrong type.
*/
List<AstNode> _wrongTypedNodes = new List<AstNode>();
/**
- * Initialize a newly created verifier to verify that all of the nodes in the visited AST
- * structures that are expected to have been resolved have an element associated with them.
+ * Initialize a newly created verifier to verify that all of the identifiers
+ * in the visited AST structures that are expected to have been resolved have
+ * an element associated with them. Nodes in the set of [_knownExceptions] are
+ * not expected to have been resolved, even if they normally would have been
+ * expected to have been resolved.
*/
- ResolutionVerifier() : this.con1(null);
-
- /**
- * Initialize a newly created verifier to verify that all of the identifiers in the visited AST
- * structures that are expected to have been resolved have an element associated with them. Nodes
- * in the set of known exceptions are not expected to have been resolved, even if they normally
- * would have been expected to have been resolved.
- *
- * @param knownExceptions a set containing nodes that are known to not be resolvable and should
- * therefore not cause the test to fail
- **/
- ResolutionVerifier.con1(this._knownExceptions);
+ ResolutionVerifier([this._knownExceptions]);
/**
* Assert that all of the visited identifiers were resolved.
@@ -7755,8 +7749,7 @@
* @return the source object representing the cached file
*/
Source cacheSource(String filePath, String contents) {
- Source source =
- new FileBasedSource.con1(FileUtilities2.createFile(filePath));
+ Source source = new FileBasedSource(FileUtilities2.createFile(filePath));
analysisContext2.setContents(source, contents);
return source;
}
@@ -7779,6 +7772,9 @@
*/
LibraryElementImpl createTestLibrary(
AnalysisContext context, String libraryName, [List<String> typeNames]) {
+ String fileName = "$libraryName.dart";
+ FileBasedSource definingCompilationUnitSource =
+ _createNamedSource(fileName);
List<CompilationUnitElement> sourcedCompilationUnits;
if (typeNames == null) {
sourcedCompilationUnits = CompilationUnitElement.EMPTY_LIST;
@@ -7793,14 +7789,15 @@
CompilationUnitElementImpl compilationUnit =
new CompilationUnitElementImpl(fileName);
compilationUnit.source = _createNamedSource(fileName);
+ compilationUnit.librarySource = definingCompilationUnitSource;
compilationUnit.types = <ClassElement>[type];
sourcedCompilationUnits[i] = compilationUnit;
}
}
- String fileName = "$libraryName.dart";
CompilationUnitElementImpl compilationUnit =
new CompilationUnitElementImpl(fileName);
- compilationUnit.source = _createNamedSource(fileName);
+ compilationUnit.librarySource =
+ compilationUnit.source = definingCompilationUnitSource;
LibraryElementImpl library = new LibraryElementImpl.forNode(
context, AstFactory.libraryIdentifier2([libraryName]));
library.definingCompilationUnit = compilationUnit;
@@ -7952,7 +7949,7 @@
*/
FileBasedSource _createNamedSource(String fileName) {
FileBasedSource source =
- new FileBasedSource.con1(FileUtilities2.createFile(fileName));
+ new FileBasedSource(FileUtilities2.createFile(fileName));
analysisContext2.setContents(source, "");
return source;
}
@@ -10488,7 +10485,7 @@
ConstructorElementImpl constructor =
ElementFactory.constructorElement2(classElement, constructorName);
constructor.returnType = classElement.type;
- FunctionTypeImpl constructorType = new FunctionTypeImpl.con1(constructor);
+ FunctionTypeImpl constructorType = new FunctionTypeImpl(constructor);
constructor.type = constructorType;
classElement.constructors = <ConstructorElement>[constructor];
InstanceCreationExpression node = AstFactory.instanceCreationExpression2(
@@ -10507,7 +10504,7 @@
ElementFactory.constructorElement2(elementC, null);
elementC.constructors = <ConstructorElement>[constructor];
constructor.returnType = elementC.type;
- FunctionTypeImpl constructorType = new FunctionTypeImpl.con1(constructor);
+ FunctionTypeImpl constructorType = new FunctionTypeImpl(constructor);
constructor.type = constructorType;
TypeName typeName =
AstFactory.typeName(elementC, [AstFactory.typeName(elementI)]);
@@ -10528,7 +10525,7 @@
ConstructorElementImpl constructor =
ElementFactory.constructorElement2(classElement, null);
constructor.returnType = classElement.type;
- FunctionTypeImpl constructorType = new FunctionTypeImpl.con1(constructor);
+ FunctionTypeImpl constructorType = new FunctionTypeImpl(constructor);
constructor.type = constructorType;
classElement.constructors = <ConstructorElement>[constructor];
InstanceCreationExpression node = AstFactory.instanceCreationExpression2(
@@ -10992,10 +10989,11 @@
[new DartUriResolver(DirectoryBasedDartSdk.defaultSdk)]);
context.sourceFactory = sourceFactory;
FileBasedSource source =
- new FileBasedSource.con1(FileUtilities2.createFile("/lib.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/lib.dart"));
CompilationUnitElementImpl definingCompilationUnit =
new CompilationUnitElementImpl("lib.dart");
- definingCompilationUnit.source = source;
+ definingCompilationUnit.librarySource =
+ definingCompilationUnit.source = source;
LibraryElementImpl definingLibrary =
new LibraryElementImpl.forNode(context, null);
definingLibrary.definingCompilationUnit = definingCompilationUnit;
@@ -11050,7 +11048,7 @@
FunctionExpression node = AstFactory.functionExpression2(parameters, body);
FunctionElementImpl element = new FunctionElementImpl.forNode(null);
element.parameters = parameterElements;
- element.type = new FunctionTypeImpl.con1(element);
+ element.type = new FunctionTypeImpl(element);
node.element = element;
return node;
}
@@ -11496,9 +11494,10 @@
super.setUp();
AnalysisContextImpl context = AnalysisContextFactory.contextWithCore();
FileBasedSource source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/test.dart"));
_definingCompilationUnit = new CompilationUnitElementImpl("test.dart");
- _definingCompilationUnit.source = source;
+ _definingCompilationUnit.librarySource =
+ _definingCompilationUnit.source = source;
LibraryElementImpl definingLibrary =
ElementFactory.library(context, "test");
definingLibrary.definingCompilationUnit = _definingCompilationUnit;
@@ -13219,7 +13218,7 @@
ClassElementImpl element =
new ClassElementImpl.forNode(AstFactory.identifier3(typeName));
element.supertype = superclassType;
- InterfaceTypeImpl type = new InterfaceTypeImpl.con1(element);
+ InterfaceTypeImpl type = new InterfaceTypeImpl(element);
element.type = type;
if (parameterNames != null) {
int count = parameterNames.length;
@@ -13314,7 +13313,7 @@
AnalysisContextImpl context = new AnalysisContextImpl();
context.sourceFactory = factory;
Source librarySource =
- new FileBasedSource.con1(FileUtilities2.createFile("/lib.dart"));
+ new FileBasedSource(FileUtilities2.createFile("/lib.dart"));
_library = new Library(context, _listener, librarySource);
LibraryElementImpl element = new LibraryElementImpl.forNode(
context, AstFactory.libraryIdentifier2(["lib"]));
diff --git a/pkg/analyzer/test/generated/scanner_test.dart b/pkg/analyzer/test/generated/scanner_test.dart
index 3531847..24ca20e 100644
--- a/pkg/analyzer/test/generated/scanner_test.dart
+++ b/pkg/analyzer/test/generated/scanner_test.dart
@@ -1074,7 +1074,7 @@
GatheringErrorListener listener = new GatheringErrorListener();
_scanWithListener(source, listener);
listener.assertErrors([
- new AnalysisError.con2(null, expectedOffset, 1, expectedError,
+ new AnalysisError(null, expectedOffset, 1, expectedError,
[source.codeUnitAt(expectedOffset)])
]);
}
@@ -1093,7 +1093,7 @@
GatheringErrorListener listener = new GatheringErrorListener();
Token token = _scanWithListener(source, listener);
listener.assertErrors([
- new AnalysisError.con2(null, expectedOffset, 1, expectedError,
+ new AnalysisError(null, expectedOffset, 1, expectedError,
[source.codeUnitAt(expectedOffset)])
]);
_checkTokens(token, expectedTokens);
diff --git a/pkg/analyzer/test/generated/test_support.dart b/pkg/analyzer/test/generated/test_support.dart
index e5a05d0..7d83198 100644
--- a/pkg/analyzer/test/generated/test_support.dart
+++ b/pkg/analyzer/test/generated/test_support.dart
@@ -124,7 +124,7 @@
if (offset == -1) {
throw new IllegalArgumentException("Not found '$prefix'.");
}
- AstNode node = new NodeLocator.con1(offset).searchWithin(root);
+ AstNode node = new NodeLocator(offset).searchWithin(root);
return node.getAncestor(predicate);
}
}
@@ -594,6 +594,8 @@
UriKind get uriKind {
throw new UnsupportedOperationException();
}
+ @override
+ String toString() => '$_name';
bool operator ==(Object other) {
if (other is TestSource) {
return other._name == _name;
diff --git a/pkg/analyzer/test/generated/utilities_test.dart b/pkg/analyzer/test/generated/utilities_test.dart
index a95a6d7..24d1d96 100644
--- a/pkg/analyzer/test/generated/utilities_test.dart
+++ b/pkg/analyzer/test/generated/utilities_test.dart
@@ -611,7 +611,7 @@
}
void test_visitForEachStatement_variable() {
- _assertClone(new ForEachStatement.con2(null,
+ _assertClone(new ForEachStatement.withReference(null,
TokenFactory.tokenFromKeyword(Keyword.FOR),
TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
AstFactory.identifier3("a"), TokenFactory.tokenFromKeyword(Keyword.IN),
@@ -620,7 +620,7 @@
}
void test_visitForEachStatement_variable_await() {
- _assertClone(new ForEachStatement.con2(
+ _assertClone(new ForEachStatement.withReference(
TokenFactory.tokenFromString("await"),
TokenFactory.tokenFromKeyword(Keyword.FOR),
TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
diff --git a/pkg/analyzer/test/src/context/abstract_context.dart b/pkg/analyzer/test/src/context/abstract_context.dart
index 45925cd..ed198ff 100644
--- a/pkg/analyzer/test/src/context/abstract_context.dart
+++ b/pkg/analyzer/test/src/context/abstract_context.dart
@@ -13,12 +13,11 @@
import 'package:analyzer/src/generated/sdk.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/plugin/engine_plugin.dart';
-import 'package:analyzer/src/task/driver.dart';
-import 'package:analyzer/src/task/manager.dart';
import 'package:plugin/manager.dart';
import 'package:unittest/unittest.dart';
import 'mock_sdk.dart';
+import 'package:analyzer/src/task/driver.dart';
class AbstractContextTest {
MemoryResourceProvider resourceProvider = new MemoryResourceProvider();
@@ -26,11 +25,19 @@
ExtensionManager extensionManager = new ExtensionManager();
DartSdk sdk = new MockSdk();
+ SourceFactory sourceFactory;
AnalysisContextImpl context;
-
- TaskManager taskManager = new TaskManager();
AnalysisDriver analysisDriver;
+ Source addSource(String path, String contents) {
+ Source source = newSource(path, contents);
+ ChangeSet changeSet = new ChangeSet();
+ changeSet.addedSource(source);
+ context.applyChanges(changeSet);
+ context.setContents(source, contents);
+ return source;
+ }
+
/**
* Assert that the given [elements] has the same number of items as the number
* of specified [names], and that for each specified name, a corresponding
@@ -82,17 +89,18 @@
// configure TaskManager
{
EnginePlugin plugin = AnalysisEngine.instance.enginePlugin;
- extensionManager.processPlugins([plugin]);
- taskManager.addTaskDescriptors(plugin.taskDescriptors);
+ if (plugin.taskExtensionPoint == null) {
+ extensionManager.processPlugins([plugin]);
+ }
}
// prepare AnalysisContext
- context = createAnalysisContext();
- context.sourceFactory = new SourceFactory(<UriResolver>[
+ sourceFactory = new SourceFactory(<UriResolver>[
new DartUriResolver(sdk),
new ResourceUriResolver(resourceProvider)
]);
- // prepare AnalysisDriver
- analysisDriver = new AnalysisDriver(taskManager, context);
+ context = createAnalysisContext();
+ context.sourceFactory = sourceFactory;
+ analysisDriver = context.driver;
}
void tearDown() {}
diff --git a/pkg/analyzer/test/src/context/cache_test.dart b/pkg/analyzer/test/src/context/cache_test.dart
index b417269..57eca5c 100644
--- a/pkg/analyzer/test/src/context/cache_test.dart
+++ b/pkg/analyzer/test/src/context/cache_test.dart
@@ -5,17 +5,21 @@
library test.src.task.driver_test;
import 'package:analyzer/src/context/cache.dart';
-import 'package:analyzer/src/generated/ast.dart';
import 'package:analyzer/src/generated/engine.dart'
- show AnalysisContext, CacheState, RetentionPriority;
+ show
+ AnalysisContext,
+ CacheState,
+ InternalAnalysisContext,
+ RetentionPriority;
import 'package:analyzer/src/generated/java_engine.dart';
import 'package:analyzer/src/generated/sdk_io.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_collection.dart';
+import 'package:analyzer/src/task/model.dart';
import 'package:analyzer/task/model.dart';
+import 'package:typed_mock/typed_mock.dart';
import 'package:unittest/unittest.dart';
-import '../../generated/engine_test.dart';
import '../../generated/test_support.dart';
import '../../reflective_tests.dart';
@@ -23,6 +27,7 @@
groupSep = ' | ';
runReflectiveTests(AnalysisCacheTest);
runReflectiveTests(CacheEntryTest);
+ runReflectiveTests(CacheFlushManagerTest);
runReflectiveTests(SdkCachePartitionTest);
runReflectiveTests(UniversalCachePartitionTest);
runReflectiveTests(ResultDataTest);
@@ -30,57 +35,81 @@
AnalysisCache createCache({AnalysisContext context,
RetentionPriority policy: RetentionPriority.LOW}) {
- CachePartition partition = new UniversalCachePartition(
- context, 8, new TestCacheRetentionPolicy(policy));
+ CachePartition partition = new UniversalCachePartition(context);
return new AnalysisCache(<CachePartition>[partition]);
}
+class AbstractCacheTest {
+ InternalAnalysisContext context;
+ AnalysisCache cache;
+
+ void setUp() {
+ context = new _InternalAnalysisContextMock();
+ when(context.priorityTargets).thenReturn([]);
+ cache = createCache(context: context);
+ when(context.analysisCache).thenReturn(cache);
+ }
+}
+
@reflectiveTest
-class AnalysisCacheTest extends EngineTestCase {
- void test_astSize_empty() {
- AnalysisCache cache = createCache();
- expect(cache.astSize, 0);
- }
-
- void test_astSize_nonEmpty() {
- ResultDescriptor result = new ResultDescriptor('test', null);
- AstNode node = new NullLiteral(null);
- AnalysisCache cache = createCache();
- AnalysisTarget target1 = new TestSource('/test1.dart');
- CacheEntry entry1 = new CacheEntry();
- entry1.setValue(result, node, TargetedResult.EMPTY_LIST, null);
- AnalysisTarget target2 = new TestSource('/test2.dart');
- CacheEntry entry2 = new CacheEntry();
- entry2.setValue(result, node, TargetedResult.EMPTY_LIST, null);
- cache.put(target1, entry1);
- cache.accessedAst(target1);
- cache.put(target2, entry2);
- cache.accessedAst(target2);
- expect(cache.astSize, 2);
- }
-
+class AnalysisCacheTest extends AbstractCacheTest {
void test_creation() {
- expect(createCache(), isNotNull);
+ expect(cache, isNotNull);
}
void test_get() {
- AnalysisCache cache = createCache();
AnalysisTarget target = new TestSource();
expect(cache.get(target), isNull);
}
void test_getContextFor() {
- AnalysisContext context = new TestAnalysisContext();
- AnalysisCache cache = createCache(context: context);
AnalysisTarget target = new TestSource();
expect(cache.getContextFor(target), context);
}
- void test_iterator() {
- AnalysisCache cache = createCache();
+ void test_getState_hasEntry_flushed() {
+ ResultDescriptor result = new ResultDescriptor('result', -1);
AnalysisTarget target = new TestSource();
- CacheEntry entry = new CacheEntry();
- cache.put(target, entry);
+ CacheEntry entry = new CacheEntry(target);
+ cache.put(entry);
+ entry.setState(result, CacheState.FLUSHED);
+ expect(cache.getState(target, result), CacheState.FLUSHED);
+ }
+
+ void test_getState_hasEntry_valid() {
+ ResultDescriptor result = new ResultDescriptor('result', -1);
+ AnalysisTarget target = new TestSource();
+ CacheEntry entry = new CacheEntry(target);
+ cache.put(entry);
+ entry.setValue(result, '', []);
+ expect(cache.getState(target, result), CacheState.VALID);
+ }
+
+ void test_getState_noEntry() {
+ ResultDescriptor result = new ResultDescriptor('result', -1);
+ AnalysisTarget target = new TestSource();
+ expect(cache.getState(target, result), CacheState.INVALID);
+ }
+
+ void test_getValue_hasEntry_valid() {
+ ResultDescriptor result = new ResultDescriptor('result', -1);
+ AnalysisTarget target = new TestSource();
+ CacheEntry entry = new CacheEntry(target);
+ cache.put(entry);
+ entry.setValue(result, 111, []);
+ expect(cache.getValue(target, result), 111);
+ }
+
+ void test_getValue_noEntry() {
+ ResultDescriptor result = new ResultDescriptor('result', -1);
+ AnalysisTarget target = new TestSource();
+ expect(cache.getValue(target, result), -1);
+ }
+
+ void test_iterator() {
+ AnalysisTarget target = new TestSource();
+ CacheEntry entry = new CacheEntry(target);
+ cache.put(entry);
MapIterator<AnalysisTarget, CacheEntry> iterator = cache.iterator();
expect(iterator.moveNext(), isTrue);
expect(iterator.key, same(target));
@@ -89,76 +118,69 @@
}
void test_put() {
- AnalysisCache cache = createCache();
AnalysisTarget target = new TestSource();
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
expect(cache.get(target), isNull);
- cache.put(target, entry);
+ cache.put(entry);
expect(cache.get(target), entry);
}
void test_remove() {
- AnalysisCache cache = createCache();
- AnalysisTarget target = new TestSource();
- cache.remove(target);
- }
-
- void test_setMaxCacheSize() {
- CachePartition partition = new UniversalCachePartition(
- null, 8, new TestCacheRetentionPolicy(RetentionPriority.MEDIUM));
- AnalysisCache cache = new AnalysisCache(<CachePartition>[partition]);
- ResultDescriptor result = new ResultDescriptor('test', null);
- AstNode node = new NullLiteral(null);
- int size = 6;
- for (int i = 0; i < size; i++) {
- AnalysisTarget target = new TestSource("/test$i.dart");
- CacheEntry entry = new CacheEntry();
- entry.setValue(result, node, TargetedResult.EMPTY_LIST, null);
- cache.put(target, entry);
- cache.accessedAst(target);
- }
-
- void _assertNonFlushedCount(int expectedCount, AnalysisCache cache) {
- int nonFlushedCount = 0;
- MapIterator<AnalysisTarget, CacheEntry> iterator = cache.iterator();
- while (iterator.moveNext()) {
- if (iterator.value.getState(result) != CacheState.FLUSHED) {
- nonFlushedCount++;
- }
- }
- expect(nonFlushedCount, expectedCount);
- }
-
- _assertNonFlushedCount(size, cache);
- int newSize = size - 2;
- partition.maxCacheSize = newSize;
- _assertNonFlushedCount(newSize, cache);
+ AnalysisTarget target1 = new TestSource('/a.dart');
+ AnalysisTarget target2 = new TestSource('/b.dart');
+ AnalysisTarget target3 = new TestSource('/c.dart');
+ CacheEntry entry1 = new CacheEntry(target1);
+ CacheEntry entry2 = new CacheEntry(target2);
+ CacheEntry entry3 = new CacheEntry(target3);
+ cache.put(entry1);
+ cache.put(entry2);
+ cache.put(entry3);
+ ResultDescriptor result1 = new ResultDescriptor('result1', -1);
+ ResultDescriptor result2 = new ResultDescriptor('result2', -2);
+ ResultDescriptor result3 = new ResultDescriptor('result3', -3);
+ // set results, all of them are VALID
+ entry1.setValue(result1, 111, TargetedResult.EMPTY_LIST);
+ entry2.setValue(result2, 222, [new TargetedResult(target1, result1)]);
+ entry3.setValue(result3, 333, []);
+ expect(entry1.getState(result1), CacheState.VALID);
+ expect(entry2.getState(result2), CacheState.VALID);
+ expect(entry3.getState(result3), CacheState.VALID);
+ expect(entry1.getValue(result1), 111);
+ expect(entry2.getValue(result2), 222);
+ expect(entry3.getValue(result3), 333);
+ // remove entry1, invalidate result2 and remove empty entry2
+ cache.remove(target1);
+ expect(cache.get(target1), isNull);
+ expect(cache.get(target2), isNull);
+ expect(cache.get(target3), entry3);
+ expect(entry3.getState(result3), CacheState.VALID);
}
void test_size() {
- AnalysisCache cache = createCache();
int size = 4;
for (int i = 0; i < size; i++) {
AnalysisTarget target = new TestSource("/test$i.dart");
- cache.put(target, new CacheEntry());
+ cache.put(new CacheEntry(target));
}
expect(cache.size(), size);
}
}
@reflectiveTest
-class CacheEntryTest extends EngineTestCase {
+class CacheEntryTest extends AbstractCacheTest {
test_explicitlyAdded() {
- CacheEntry entry = new CacheEntry();
+ AnalysisTarget target = new TestSource();
+ CacheEntry entry = new CacheEntry(target);
expect(entry.explicitlyAdded, false);
entry.explicitlyAdded = true;
expect(entry.explicitlyAdded, true);
}
test_fixExceptionState_error_exception() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', null);
CaughtException exception = new CaughtException(null, null);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
entry.setErrorState(exception, <ResultDescriptor>[result]);
entry.fixExceptionState();
expect(entry.getState(result), CacheState.ERROR);
@@ -166,100 +188,109 @@
}
test_fixExceptionState_noError_exception() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', null);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
+ cache.put(entry);
// set one result to ERROR
CaughtException exception = new CaughtException(null, null);
entry.setErrorState(exception, <ResultDescriptor>[result]);
// set the same result to VALID
- entry.setValue(result, 1, TargetedResult.EMPTY_LIST, null);
+ entry.setValue(result, 1, TargetedResult.EMPTY_LIST);
// fix the exception state
entry.fixExceptionState();
expect(entry.exception, isNull);
}
test_fixExceptionState_noError_noException() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', null);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
entry.fixExceptionState();
expect(entry.getState(result), CacheState.INVALID);
expect(entry.exception, isNull);
}
- test_flushAstStructures() {
- ResultDescriptor result = new ResultDescriptor('test', null);
- CacheEntry entry = new CacheEntry();
- entry.setValue(
- result, new NullLiteral(null), TargetedResult.EMPTY_LIST, null);
- expect(entry.hasAstStructure, true);
- entry.flushAstStructures();
- expect(entry.hasAstStructure, false);
- }
-
test_getState() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', null);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
expect(entry.getState(result), CacheState.INVALID);
}
- test_getValue() {
+ test_getValue_default() {
+ AnalysisTarget target = new TestSource();
String defaultValue = 'value';
ResultDescriptor result = new ResultDescriptor('test', defaultValue);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
expect(entry.getValue(result), defaultValue);
}
- test_getMemento_noResult() {
- String defaultValue = 'value';
- ResultDescriptor result = new ResultDescriptor('test', defaultValue);
- CacheEntry entry = new CacheEntry();
- expect(entry.getMemento(result), null);
- }
-
- test_hasAstStructure_false() {
- CacheEntry entry = new CacheEntry();
- expect(entry.hasAstStructure, false);
- }
-
- test_hasAstStructure_true() {
- ResultDescriptor result = new ResultDescriptor('test', null);
- CacheEntry entry = new CacheEntry();
- entry.setValue(
- result, new NullLiteral(null), TargetedResult.EMPTY_LIST, null);
- expect(entry.hasAstStructure, true);
+ test_getValue_flushResults() {
+ ResultCachingPolicy cachingPolicy = new SimpleResultCachingPolicy(2, 2);
+ ResultDescriptor descriptor1 =
+ new ResultDescriptor('result1', null, cachingPolicy: cachingPolicy);
+ ResultDescriptor descriptor2 =
+ new ResultDescriptor('result2', null, cachingPolicy: cachingPolicy);
+ ResultDescriptor descriptor3 =
+ new ResultDescriptor('result3', null, cachingPolicy: cachingPolicy);
+ AnalysisTarget target = new TestSource();
+ CacheEntry entry = new CacheEntry(target);
+ cache.put(entry);
+ {
+ entry.setValue(descriptor1, 1, TargetedResult.EMPTY_LIST);
+ expect(entry.getState(descriptor1), CacheState.VALID);
+ }
+ {
+ entry.setValue(descriptor2, 2, TargetedResult.EMPTY_LIST);
+ expect(entry.getState(descriptor1), CacheState.VALID);
+ expect(entry.getState(descriptor2), CacheState.VALID);
+ }
+ // get descriptor1, so that descriptor2 will be flushed
+ entry.getValue(descriptor1);
+ {
+ entry.setValue(descriptor3, 3, TargetedResult.EMPTY_LIST);
+ expect(entry.getState(descriptor1), CacheState.VALID);
+ expect(entry.getState(descriptor2), CacheState.FLUSHED);
+ expect(entry.getState(descriptor3), CacheState.VALID);
+ }
}
test_hasErrorState_false() {
- CacheEntry entry = new CacheEntry();
+ AnalysisTarget target = new TestSource();
+ CacheEntry entry = new CacheEntry(target);
expect(entry.hasErrorState(), false);
}
test_hasErrorState_true() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', null);
CaughtException exception = new CaughtException(null, null);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
entry.setErrorState(exception, <ResultDescriptor>[result]);
expect(entry.hasErrorState(), true);
}
test_invalidateAllInformation() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', null);
- CacheEntry entry = new CacheEntry();
- entry.setValue(result, 'value', TargetedResult.EMPTY_LIST, null);
+ CacheEntry entry = new CacheEntry(target);
+ entry.setValue(result, 'value', TargetedResult.EMPTY_LIST);
entry.invalidateAllInformation();
expect(entry.getState(result), CacheState.INVALID);
expect(entry.getValue(result), isNull);
}
test_setErrorState() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result1 = new ResultDescriptor('res1', 1);
ResultDescriptor result2 = new ResultDescriptor('res2', 2);
ResultDescriptor result3 = new ResultDescriptor('res3', 3);
// prepare some good state
- CacheEntry entry = new CacheEntry();
- entry.setValue(result1, 10, TargetedResult.EMPTY_LIST, null);
- entry.setValue(result2, 20, TargetedResult.EMPTY_LIST, null);
- entry.setValue(result3, 30, TargetedResult.EMPTY_LIST, null);
+ CacheEntry entry = new CacheEntry(target);
+ entry.setValue(result1, 10, TargetedResult.EMPTY_LIST);
+ entry.setValue(result2, 20, TargetedResult.EMPTY_LIST);
+ entry.setValue(result3, 30, TargetedResult.EMPTY_LIST);
// set error state
CaughtException exception = new CaughtException(null, null);
entry.setErrorState(exception, <ResultDescriptor>[result1, result2]);
@@ -274,69 +305,77 @@
}
test_setErrorState_invalidateDependent() {
- AnalysisCache cache = createCache();
- AnalysisTarget target = new TestSource();
- CacheEntry entry = new CacheEntry();
- cache.put(target, entry);
+ AnalysisTarget target1 = new TestSource('/a.dart');
+ AnalysisTarget target2 = new TestSource('/b.dart');
+ CacheEntry entry1 = new CacheEntry(target1);
+ CacheEntry entry2 = new CacheEntry(target2);
+ cache.put(entry1);
+ cache.put(entry2);
ResultDescriptor result1 = new ResultDescriptor('result1', -1);
ResultDescriptor result2 = new ResultDescriptor('result2', -2);
ResultDescriptor result3 = new ResultDescriptor('result3', -3);
ResultDescriptor result4 = new ResultDescriptor('result4', -4);
// set results, all of them are VALID
- entry.setValue(result1, 111, TargetedResult.EMPTY_LIST, null);
- entry.setValue(result2, 222, [new TargetedResult(target, result1)], null);
- entry.setValue(result3, 333, [new TargetedResult(target, result2)], null);
- entry.setValue(result4, 444, [], null);
- expect(entry.getState(result1), CacheState.VALID);
- expect(entry.getState(result2), CacheState.VALID);
- expect(entry.getState(result3), CacheState.VALID);
- expect(entry.getState(result4), CacheState.VALID);
- expect(entry.getValue(result1), 111);
- expect(entry.getValue(result2), 222);
- expect(entry.getValue(result3), 333);
- expect(entry.getValue(result4), 444);
+ entry1.setValue(result1, 111, TargetedResult.EMPTY_LIST);
+ entry2.setValue(result2, 222, [new TargetedResult(target1, result1)]);
+ entry2.setValue(result3, 333, [new TargetedResult(target2, result2)]);
+ entry2.setValue(result4, 444, []);
+ expect(entry1.getState(result1), CacheState.VALID);
+ expect(entry2.getState(result2), CacheState.VALID);
+ expect(entry2.getState(result3), CacheState.VALID);
+ expect(entry2.getState(result4), CacheState.VALID);
+ expect(entry1.getValue(result1), 111);
+ expect(entry2.getValue(result2), 222);
+ expect(entry2.getValue(result3), 333);
+ expect(entry2.getValue(result4), 444);
// set error state
CaughtException exception = new CaughtException(null, null);
- entry.setErrorState(exception, <ResultDescriptor>[result1]);
+ entry1.setErrorState(exception, <ResultDescriptor>[result1]);
// result2 and result3 are invalidated, result4 is intact
- expect(entry.getState(result1), CacheState.ERROR);
- expect(entry.getState(result2), CacheState.ERROR);
- expect(entry.getState(result3), CacheState.ERROR);
- expect(entry.getState(result4), CacheState.VALID);
- expect(entry.getValue(result1), -1);
- expect(entry.getValue(result2), -2);
- expect(entry.getValue(result3), -3);
- expect(entry.getValue(result4), 444);
+ expect(entry1.getState(result1), CacheState.ERROR);
+ expect(entry2.getState(result2), CacheState.ERROR);
+ expect(entry2.getState(result3), CacheState.ERROR);
+ expect(entry2.getState(result4), CacheState.VALID);
+ expect(entry1.getValue(result1), -1);
+ expect(entry2.getValue(result2), -2);
+ expect(entry2.getValue(result3), -3);
+ expect(entry2.getValue(result4), 444);
+ expect(entry1.exception, exception);
+ expect(entry2.exception, exception);
}
test_setErrorState_noDescriptors() {
+ AnalysisTarget target = new TestSource();
CaughtException exception = new CaughtException(null, null);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
expect(() {
entry.setErrorState(exception, <ResultDescriptor>[]);
}, throwsArgumentError);
}
test_setErrorState_noException() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', null);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
expect(() {
entry.setErrorState(null, <ResultDescriptor>[result]);
}, throwsArgumentError);
}
test_setErrorState_nullDescriptors() {
+ AnalysisTarget target = new TestSource();
CaughtException exception = new CaughtException(null, null);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
expect(() {
entry.setErrorState(exception, null);
}, throwsArgumentError);
}
test_setState_error() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', null);
- CacheEntry entry = new CacheEntry();
- entry.setValue(result, 42, TargetedResult.EMPTY_LIST, null);
+ CacheEntry entry = new CacheEntry(target);
+ entry.setValue(result, 42, TargetedResult.EMPTY_LIST);
// an invalid state change
expect(() {
entry.setState(result, CacheState.ERROR);
@@ -347,10 +386,11 @@
}
test_setState_flushed() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', 1);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
// set VALID
- entry.setValue(result, 10, TargetedResult.EMPTY_LIST, null);
+ entry.setValue(result, 10, TargetedResult.EMPTY_LIST);
expect(entry.getState(result), CacheState.VALID);
expect(entry.getValue(result), 10);
// set FLUSHED
@@ -360,10 +400,11 @@
}
test_setState_inProcess() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', 1);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
// set VALID
- entry.setValue(result, 10, TargetedResult.EMPTY_LIST, null);
+ entry.setValue(result, 10, TargetedResult.EMPTY_LIST);
expect(entry.getState(result), CacheState.VALID);
expect(entry.getValue(result), 10);
// set IN_PROCESS
@@ -373,34 +414,33 @@
}
test_setState_invalid() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', 1);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
+ cache.put(entry);
// set VALID
- String memento = 'main() {}';
- entry.setValue(result, 10, TargetedResult.EMPTY_LIST, memento);
+ entry.setValue(result, 10, TargetedResult.EMPTY_LIST);
expect(entry.getState(result), CacheState.VALID);
expect(entry.getValue(result), 10);
// set INVALID
entry.setState(result, CacheState.INVALID);
expect(entry.getState(result), CacheState.INVALID);
expect(entry.getValue(result), 1);
- expect(entry.getMemento(result), memento);
}
test_setState_invalid_invalidateDependent() {
- AnalysisCache cache = createCache();
AnalysisTarget target = new TestSource();
- CacheEntry entry = new CacheEntry();
- cache.put(target, entry);
+ CacheEntry entry = new CacheEntry(target);
+ cache.put(entry);
ResultDescriptor result1 = new ResultDescriptor('result1', -1);
ResultDescriptor result2 = new ResultDescriptor('result2', -2);
ResultDescriptor result3 = new ResultDescriptor('result3', -3);
ResultDescriptor result4 = new ResultDescriptor('result4', -4);
// set results, all of them are VALID
- entry.setValue(result1, 111, TargetedResult.EMPTY_LIST, null);
- entry.setValue(result2, 222, [new TargetedResult(target, result1)], null);
- entry.setValue(result3, 333, [new TargetedResult(target, result2)], null);
- entry.setValue(result4, 444, [], null);
+ entry.setValue(result1, 111, TargetedResult.EMPTY_LIST);
+ entry.setValue(result2, 222, [new TargetedResult(target, result1)]);
+ entry.setValue(result3, 333, [new TargetedResult(target, result2)]);
+ entry.setValue(result4, 444, []);
expect(entry.getState(result1), CacheState.VALID);
expect(entry.getState(result2), CacheState.VALID);
expect(entry.getState(result3), CacheState.VALID);
@@ -419,39 +459,94 @@
expect(entry.getValue(result2), -2);
expect(entry.getValue(result3), -3);
expect(entry.getValue(result4), 444);
+ // result4 is still valid, so the entry is still in the cache
+ expect(cache.get(target), entry);
+ }
+
+ test_setState_invalid_removeEmptyEntry() {
+ AnalysisTarget target1 = new TestSource('/a.dart');
+ AnalysisTarget target2 = new TestSource('/b.dart');
+ CacheEntry entry1 = new CacheEntry(target1);
+ CacheEntry entry2 = new CacheEntry(target2);
+ cache.put(entry1);
+ cache.put(entry2);
+ ResultDescriptor result1 = new ResultDescriptor('result1', -1);
+ ResultDescriptor result2 = new ResultDescriptor('result2', -2);
+ ResultDescriptor result3 = new ResultDescriptor('result3', -3);
+ // set results, all of them are VALID
+ entry1.setValue(result1, 111, TargetedResult.EMPTY_LIST);
+ entry2.setValue(result2, 222, [new TargetedResult(target1, result1)]);
+ entry2.setValue(result3, 333, [new TargetedResult(target2, result2)]);
+ expect(entry1.getState(result1), CacheState.VALID);
+ expect(entry2.getState(result2), CacheState.VALID);
+ expect(entry2.getState(result3), CacheState.VALID);
+ expect(entry1.getValue(result1), 111);
+ expect(entry2.getValue(result2), 222);
+ expect(entry2.getValue(result3), 333);
+ // invalidate result1, remove entry1 & entry2
+ entry1.setState(result1, CacheState.INVALID);
+ expect(cache.get(target1), isNull);
+ expect(cache.get(target2), isNull);
}
test_setState_valid() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', null);
- CacheEntry entry = new CacheEntry();
+ CacheEntry entry = new CacheEntry(target);
expect(() => entry.setState(result, CacheState.VALID), throwsArgumentError);
}
test_setValue() {
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', null);
String value = 'value';
- String memento = 'main() {}';
- CacheEntry entry = new CacheEntry();
- entry.setValue(result, value, TargetedResult.EMPTY_LIST, memento);
+ CacheEntry entry = new CacheEntry(target);
+ entry.setValue(result, value, TargetedResult.EMPTY_LIST);
expect(entry.getState(result), CacheState.VALID);
expect(entry.getValue(result), value);
- expect(entry.getMemento(result), memento);
+ }
+
+ test_setValue_flushResults() {
+ ResultCachingPolicy cachingPolicy = new SimpleResultCachingPolicy(2, 2);
+ ResultDescriptor descriptor1 =
+ new ResultDescriptor('result1', null, cachingPolicy: cachingPolicy);
+ ResultDescriptor descriptor2 =
+ new ResultDescriptor('result2', null, cachingPolicy: cachingPolicy);
+ ResultDescriptor descriptor3 =
+ new ResultDescriptor('result3', null, cachingPolicy: cachingPolicy);
+ AnalysisTarget target = new TestSource();
+ CacheEntry entry = new CacheEntry(target);
+ cache.put(entry);
+ {
+ entry.setValue(descriptor1, 1, TargetedResult.EMPTY_LIST);
+ expect(entry.getState(descriptor1), CacheState.VALID);
+ }
+ {
+ entry.setValue(descriptor2, 2, TargetedResult.EMPTY_LIST);
+ expect(entry.getState(descriptor1), CacheState.VALID);
+ expect(entry.getState(descriptor2), CacheState.VALID);
+ }
+ {
+ entry.setValue(descriptor3, 3, TargetedResult.EMPTY_LIST);
+ expect(entry.getState(descriptor1), CacheState.FLUSHED);
+ expect(entry.getState(descriptor2), CacheState.VALID);
+ expect(entry.getState(descriptor3), CacheState.VALID);
+ }
}
test_setValue_invalidateDependent() {
- AnalysisCache cache = createCache();
AnalysisTarget target = new TestSource();
- CacheEntry entry = new CacheEntry();
- cache.put(target, entry);
+ CacheEntry entry = new CacheEntry(target);
+ cache.put(entry);
ResultDescriptor result1 = new ResultDescriptor('result1', -1);
ResultDescriptor result2 = new ResultDescriptor('result2', -2);
ResultDescriptor result3 = new ResultDescriptor('result3', -3);
ResultDescriptor result4 = new ResultDescriptor('result4', -4);
// set results, all of them are VALID
- entry.setValue(result1, 111, TargetedResult.EMPTY_LIST, null);
- entry.setValue(result2, 222, [new TargetedResult(target, result1)], null);
- entry.setValue(result3, 333, [new TargetedResult(target, result2)], null);
- entry.setValue(result4, 444, [], null);
+ entry.setValue(result1, 111, TargetedResult.EMPTY_LIST);
+ entry.setValue(result2, 222, [new TargetedResult(target, result1)]);
+ entry.setValue(result3, 333, [new TargetedResult(target, result2)]);
+ entry.setValue(result4, 444, []);
expect(entry.getState(result1), CacheState.VALID);
expect(entry.getState(result2), CacheState.VALID);
expect(entry.getState(result3), CacheState.VALID);
@@ -461,7 +556,7 @@
expect(entry.getValue(result3), 333);
expect(entry.getValue(result4), 444);
// set result1, invalidates result2 and result3, result4 is intact
- entry.setValue(result1, 1111, TargetedResult.EMPTY_LIST, null);
+ entry.setValue(result1, 1111, TargetedResult.EMPTY_LIST);
expect(entry.getState(result1), CacheState.VALID);
expect(entry.getState(result2), CacheState.INVALID);
expect(entry.getState(result3), CacheState.INVALID);
@@ -473,20 +568,19 @@
}
test_setValue_invalidateDependent2() {
- AnalysisCache cache = createCache();
AnalysisTarget target1 = new TestSource('a');
AnalysisTarget target2 = new TestSource('b');
- CacheEntry entry1 = new CacheEntry();
- CacheEntry entry2 = new CacheEntry();
- cache.put(target1, entry1);
- cache.put(target2, entry2);
+ CacheEntry entry1 = new CacheEntry(target1);
+ CacheEntry entry2 = new CacheEntry(target2);
+ cache.put(entry1);
+ cache.put(entry2);
ResultDescriptor result1 = new ResultDescriptor('result1', -1);
ResultDescriptor result2 = new ResultDescriptor('result2', -2);
ResultDescriptor result3 = new ResultDescriptor('result3', -3);
// set results, all of them are VALID
- entry1.setValue(result1, 111, TargetedResult.EMPTY_LIST, null);
- entry1.setValue(result2, 222, [new TargetedResult(target1, result1)], null);
- entry2.setValue(result3, 333, [new TargetedResult(target1, result2)], null);
+ entry1.setValue(result1, 111, TargetedResult.EMPTY_LIST);
+ entry1.setValue(result2, 222, [new TargetedResult(target1, result1)]);
+ entry2.setValue(result3, 333, [new TargetedResult(target1, result2)]);
expect(entry1.getState(result1), CacheState.VALID);
expect(entry1.getState(result2), CacheState.VALID);
expect(entry2.getState(result3), CacheState.VALID);
@@ -494,7 +588,7 @@
expect(entry1.getValue(result2), 222);
expect(entry2.getValue(result3), 333);
// set result1, invalidates result2 and result3
- entry1.setValue(result1, 1111, TargetedResult.EMPTY_LIST, null);
+ entry1.setValue(result1, 1111, TargetedResult.EMPTY_LIST);
expect(entry1.getState(result1), CacheState.VALID);
expect(entry1.getState(result2), CacheState.INVALID);
expect(entry2.getState(result3), CacheState.INVALID);
@@ -503,22 +597,186 @@
expect(entry2.getValue(result3), -3);
}
+ test_setValue_keepEntry() {
+ AnalysisTarget target1 = new TestSource('/a.dart');
+ AnalysisTarget target2 = new TestSource('/b.dart');
+ CacheEntry entry1 = new CacheEntry(target1);
+ CacheEntry entry2 = new CacheEntry(target2);
+ cache.put(entry1);
+ cache.put(entry2);
+ ResultDescriptor result1 = new ResultDescriptor('result1', -1);
+ ResultDescriptor result2 = new ResultDescriptor('result2', -2);
+ // set results, all of them are VALID
+ entry1.setValue(result1, 111, TargetedResult.EMPTY_LIST);
+ entry2.setValue(result2, 222, [new TargetedResult(target1, result1)]);
+ expect(entry1.getState(result1), CacheState.VALID);
+ expect(entry2.getState(result2), CacheState.VALID);
+ expect(entry1.getValue(result1), 111);
+ expect(entry2.getValue(result2), 222);
+ // set result2, entry2 is still in the cache
+ entry2.setValue(result2, 2222, []);
+ expect(cache.get(target1), entry1);
+ expect(cache.get(target2), entry2);
+ }
+
test_toString_empty() {
- CacheEntry entry = new CacheEntry();
+ AnalysisTarget target = new TestSource();
+ CacheEntry entry = new CacheEntry(target);
expect(entry.toString(), isNotNull);
}
test_toString_nonEmpty() {
- String value = 'value';
+ AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('test', null);
- CacheEntry entry = new CacheEntry();
- entry.setValue(result, value, TargetedResult.EMPTY_LIST, null);
+ CacheEntry entry = new CacheEntry(target);
+ entry.setValue(result, 42, TargetedResult.EMPTY_LIST);
expect(entry.toString(), isNotNull);
}
}
+@reflectiveTest
+class CacheFlushManagerTest {
+ CacheFlushManager manager = new CacheFlushManager(
+ new SimpleResultCachingPolicy(15, 3), (AnalysisTarget target) => false);
+
+ test_madeActive() {
+ manager.madeActive();
+ expect(manager.maxSize, 15);
+ }
+
+ test_madeIdle() {
+ manager.madeActive();
+ AnalysisTarget target = new TestSource();
+ // prepare TargetedResult(s)
+ List<TargetedResult> results = <TargetedResult>[];
+ for (int i = 0; i < 15; i++) {
+ ResultDescriptor descriptor = new ResultDescriptor('result$i', null);
+ results.add(new TargetedResult(target, descriptor));
+ }
+ // notify about storing TargetedResult(s)
+ for (TargetedResult result in results) {
+ manager.resultStored(result, null);
+ }
+ expect(manager.recentlyUsed, results);
+ expect(manager.currentSize, 15);
+ // make idle
+ List<TargetedResult> resultsToFlush = manager.madeIdle();
+ expect(manager.maxSize, 3);
+ expect(manager.recentlyUsed, results.skip(15 - 3));
+ expect(resultsToFlush, results.take(15 - 3));
+ }
+
+ test_new() {
+ expect(manager.maxActiveSize, 15);
+ expect(manager.maxIdleSize, 3);
+ expect(manager.maxSize, 3);
+ expect(manager.currentSize, 0);
+ expect(manager.recentlyUsed, isEmpty);
+ }
+
+ test_resultAccessed() {
+ ResultDescriptor descriptor1 = new ResultDescriptor('result1', null);
+ ResultDescriptor descriptor2 = new ResultDescriptor('result2', null);
+ ResultDescriptor descriptor3 = new ResultDescriptor('result3', null);
+ AnalysisTarget target = new TestSource();
+ TargetedResult result1 = new TargetedResult(target, descriptor1);
+ TargetedResult result2 = new TargetedResult(target, descriptor2);
+ TargetedResult result3 = new TargetedResult(target, descriptor3);
+ manager.resultStored(result1, null);
+ manager.resultStored(result2, null);
+ manager.resultStored(result3, null);
+ expect(manager.currentSize, 3);
+ expect(manager.recentlyUsed, orderedEquals([result1, result2, result3]));
+ // access result2
+ manager.resultAccessed(result2);
+ expect(manager.currentSize, 3);
+ expect(manager.recentlyUsed, orderedEquals([result1, result3, result2]));
+ }
+
+ test_resultAccessed_noSuchResult() {
+ ResultDescriptor descriptor1 = new ResultDescriptor('result1', null);
+ ResultDescriptor descriptor2 = new ResultDescriptor('result2', null);
+ ResultDescriptor descriptor3 = new ResultDescriptor('result3', null);
+ AnalysisTarget target = new TestSource();
+ TargetedResult result1 = new TargetedResult(target, descriptor1);
+ TargetedResult result2 = new TargetedResult(target, descriptor2);
+ TargetedResult result3 = new TargetedResult(target, descriptor3);
+ manager.resultStored(result1, null);
+ manager.resultStored(result2, null);
+ expect(manager.currentSize, 2);
+ expect(manager.recentlyUsed, orderedEquals([result1, result2]));
+ // access result3, no-op
+ manager.resultAccessed(result3);
+ expect(manager.currentSize, 2);
+ expect(manager.recentlyUsed, orderedEquals([result1, result2]));
+ }
+
+ test_resultStored() {
+ ResultDescriptor descriptor1 = new ResultDescriptor('result1', null);
+ ResultDescriptor descriptor2 = new ResultDescriptor('result2', null);
+ ResultDescriptor descriptor3 = new ResultDescriptor('result3', null);
+ ResultDescriptor descriptor4 = new ResultDescriptor('result4', null);
+ AnalysisTarget target = new TestSource();
+ TargetedResult result1 = new TargetedResult(target, descriptor1);
+ TargetedResult result2 = new TargetedResult(target, descriptor2);
+ TargetedResult result3 = new TargetedResult(target, descriptor3);
+ TargetedResult result4 = new TargetedResult(target, descriptor4);
+ manager.resultStored(result1, null);
+ manager.resultStored(result2, null);
+ manager.resultStored(result3, null);
+ expect(manager.currentSize, 3);
+ expect(manager.recentlyUsed, orderedEquals([result1, result2, result3]));
+ // store result2 again
+ {
+ List<TargetedResult> resultsToFlush = manager.resultStored(result2, null);
+ expect(resultsToFlush, isEmpty);
+ expect(manager.currentSize, 3);
+ expect(manager.recentlyUsed, orderedEquals([result1, result3, result2]));
+ }
+ // store result4
+ {
+ List<TargetedResult> resultsToFlush = manager.resultStored(result4, null);
+ expect(resultsToFlush, [result1]);
+ expect(manager.currentSize, 3);
+ expect(manager.recentlyUsed, orderedEquals([result3, result2, result4]));
+ expect(manager.resultSizeMap, {result3: 1, result2: 1, result4: 1});
+ }
+ }
+
+ test_targetRemoved() {
+ ResultDescriptor descriptor1 = new ResultDescriptor('result1', null);
+ ResultDescriptor descriptor2 = new ResultDescriptor('result2', null);
+ ResultDescriptor descriptor3 = new ResultDescriptor('result3', null);
+ AnalysisTarget target1 = new TestSource('a.dart');
+ AnalysisTarget target2 = new TestSource('b.dart');
+ TargetedResult result1 = new TargetedResult(target1, descriptor1);
+ TargetedResult result2 = new TargetedResult(target2, descriptor2);
+ TargetedResult result3 = new TargetedResult(target1, descriptor3);
+ manager.resultStored(result1, null);
+ manager.resultStored(result2, null);
+ manager.resultStored(result3, null);
+ expect(manager.currentSize, 3);
+ expect(manager.recentlyUsed, orderedEquals([result1, result2, result3]));
+ expect(manager.resultSizeMap, {result1: 1, result2: 1, result3: 1});
+ // remove target1
+ {
+ manager.targetRemoved(target1);
+ expect(manager.currentSize, 1);
+ expect(manager.recentlyUsed, orderedEquals([result2]));
+ expect(manager.resultSizeMap, {result2: 1});
+ }
+ // remove target2
+ {
+ manager.targetRemoved(target2);
+ expect(manager.currentSize, 0);
+ expect(manager.recentlyUsed, isEmpty);
+ expect(manager.resultSizeMap, isEmpty);
+ }
+ }
+}
+
abstract class CachePartitionTest extends EngineTestCase {
- CachePartition createPartition([CacheRetentionPolicy policy = null]);
+ CachePartition createPartition();
void test_creation() {
expect(createPartition(), isNotNull);
@@ -527,8 +785,8 @@
void test_entrySet() {
CachePartition partition = createPartition();
AnalysisTarget target = new TestSource();
- CacheEntry entry = new CacheEntry();
- partition.put(target, entry);
+ CacheEntry entry = new CacheEntry(target);
+ partition.put(entry);
Map<AnalysisTarget, CacheEntry> entryMap = partition.map;
expect(entryMap, hasLength(1));
AnalysisTarget entryKey = entryMap.keys.first;
@@ -542,65 +800,32 @@
expect(partition.get(target), isNull);
}
+ void test_put_alreadyInPartition() {
+ CachePartition partition1 = createPartition();
+ CachePartition partition2 = createPartition();
+ AnalysisTarget target = new TestSource();
+ CacheEntry entry = new CacheEntry(target);
+ partition1.put(entry);
+ expect(() => partition2.put(entry), throwsStateError);
+ }
+
void test_put_noFlush() {
CachePartition partition = createPartition();
AnalysisTarget target = new TestSource();
- CacheEntry entry = new CacheEntry();
- partition.put(target, entry);
+ CacheEntry entry = new CacheEntry(target);
+ partition.put(entry);
expect(partition.get(target), entry);
}
void test_remove() {
CachePartition partition = createPartition();
AnalysisTarget target = new TestSource();
- CacheEntry entry = new CacheEntry();
- partition.put(target, entry);
+ CacheEntry entry = new CacheEntry(target);
+ partition.put(entry);
expect(partition.get(target), entry);
partition.remove(target);
expect(partition.get(target), isNull);
}
-
- void test_setMaxCacheSize() {
- CachePartition partition =
- createPartition(new TestCacheRetentionPolicy(RetentionPriority.LOW));
- ResultDescriptor result = new ResultDescriptor('result', null);
- NullLiteral node = new NullLiteral(null);
- int size = 6; // Must be <= partition.maxCacheSize
- for (int i = 0; i < size; i++) {
- AnalysisTarget target = new TestSource("/test$i.dart");
- CacheEntry entry = new CacheEntry();
- entry.setValue(result, node, TargetedResult.EMPTY_LIST, null);
- partition.put(target, entry);
- partition.accessedAst(target);
- }
-
- void assertNonFlushedCount(int expectedCount, CachePartition partition) {
- int nonFlushedCount = 0;
- Map<AnalysisTarget, CacheEntry> entryMap = partition.map;
- entryMap.values.forEach((CacheEntry entry) {
- if (entry.getState(result) != CacheState.FLUSHED) {
- nonFlushedCount++;
- }
- });
- expect(nonFlushedCount, expectedCount);
- }
-
- assertNonFlushedCount(size, partition);
- int newSize = size - 2;
- partition.maxCacheSize = newSize;
- assertNonFlushedCount(newSize, partition);
- }
-
- void test_size() {
- CachePartition partition = createPartition();
- int size = 4;
- for (int i = 0; i < size; i++) {
- AnalysisTarget target = new TestSource("/test$i.dart");
- partition.put(target, new CacheEntry());
- partition.accessedAst(target);
- }
- expect(partition.size(), size);
- }
}
@reflectiveTest
@@ -612,50 +837,53 @@
expect(data.state, CacheState.INVALID);
expect(data.value, value);
}
+
+ test_flush() {
+ ResultDescriptor result = new ResultDescriptor('test', -1);
+ ResultData data = new ResultData(result);
+ data.state = CacheState.VALID;
+ data.value = 123;
+ data.flush();
+ expect(data.state, CacheState.FLUSHED);
+ expect(data.value, -1);
+ }
}
@reflectiveTest
class SdkCachePartitionTest extends CachePartitionTest {
- CachePartition createPartition([CacheRetentionPolicy policy = null]) {
- return new SdkCachePartition(null, 8);
+ CachePartition createPartition() {
+ return new SdkCachePartition(null);
}
void test_contains_false() {
CachePartition partition = createPartition();
AnalysisTarget target = new TestSource();
- expect(partition.contains(target), isFalse);
+ expect(partition.isResponsibleFor(target), isFalse);
}
void test_contains_true() {
- SdkCachePartition partition = new SdkCachePartition(null, 8);
+ SdkCachePartition partition = new SdkCachePartition(null);
SourceFactory factory = new SourceFactory(
[new DartUriResolver(DirectoryBasedDartSdk.defaultSdk)]);
AnalysisTarget target = factory.forUri("dart:core");
- expect(partition.contains(target), isTrue);
+ expect(partition.isResponsibleFor(target), isTrue);
}
}
@reflectiveTest
-class TestCacheRetentionPolicy extends CacheRetentionPolicy {
- final RetentionPriority policy;
-
- TestCacheRetentionPolicy([this.policy = RetentionPriority.MEDIUM]);
-
- @override
- RetentionPriority getAstPriority(AnalysisTarget target, CacheEntry entry) =>
- policy;
-}
-
-@reflectiveTest
class UniversalCachePartitionTest extends CachePartitionTest {
- CachePartition createPartition([CacheRetentionPolicy policy = null]) {
- return new UniversalCachePartition(null, 8, policy);
+ CachePartition createPartition() {
+ return new UniversalCachePartition(null);
}
void test_contains() {
- UniversalCachePartition partition =
- new UniversalCachePartition(null, 8, null);
+ UniversalCachePartition partition = new UniversalCachePartition(null);
TestSource source = new TestSource();
- expect(partition.contains(source), isTrue);
+ expect(partition.isResponsibleFor(source), isTrue);
}
}
+
+class _InternalAnalysisContextMock extends TypedMock
+ implements InternalAnalysisContext {
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/test/src/context/context_test.dart b/pkg/analyzer/test/src/context/context_test.dart
index 92d552f..2489922 100644
--- a/pkg/analyzer/test/src/context/context_test.dart
+++ b/pkg/analyzer/test/src/context/context_test.dart
@@ -5,7 +5,6 @@
library test.src.context.context_test;
import 'dart:async';
-import 'dart:collection';
import 'package:analyzer/src/cancelable_future.dart';
import 'package:analyzer/src/context/cache.dart';
@@ -24,6 +23,7 @@
AnalysisOptions,
AnalysisOptionsImpl,
AnalysisResult,
+ CacheState,
ChangeNotice,
ChangeSet,
IncrementalAnalysisCache,
@@ -31,416 +31,71 @@
import 'package:analyzer/src/generated/error.dart';
import 'package:analyzer/src/generated/html.dart' as ht;
import 'package:analyzer/src/generated/java_engine.dart';
-import 'package:analyzer/src/generated/java_engine_io.dart';
import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/scanner.dart';
-import 'package:analyzer/src/generated/sdk.dart';
-import 'package:analyzer/src/generated/sdk_io.dart';
import 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer/src/generated/source_io.dart';
-import 'package:analyzer/src/generated/testing/ast_factory.dart';
-import 'package:analyzer/src/generated/testing/element_factory.dart';
-import 'package:analyzer/src/generated/testing/test_type_provider.dart';
-import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:analyzer/src/plugin/engine_plugin.dart';
import 'package:analyzer/task/dart.dart';
-import 'package:plugin/manager.dart';
import 'package:unittest/unittest.dart';
import 'package:watcher/src/utils.dart';
import '../../generated/engine_test.dart';
import '../../generated/test_support.dart';
import '../../reflective_tests.dart';
-import '../mock_sdk.dart';
+import 'abstract_context.dart';
main() {
groupSep = ' | ';
runReflectiveTests(AnalysisContextImplTest);
}
-contextWithCore() {
- return new AnalysisContextForTests();
-}
-
-/**
- * An analysis context that has a fake SDK that is much smaller and faster for
- * testing purposes.
- */
-class AnalysisContextForTests extends AnalysisContextImpl {
- AnalysisContextForTests() {
- DartSdk sdk = new MockSdk();
- SourceFactory sourceFactory =
- new SourceFactory([new DartUriResolver(sdk), new FileUriResolver()]);
- this.sourceFactory = sourceFactory;
-// initWithCore();
- }
-
- @override
- void set analysisOptions(AnalysisOptions options) {
- AnalysisOptions currentOptions = analysisOptions;
- bool needsRecompute = currentOptions.analyzeFunctionBodiesPredicate !=
- options.analyzeFunctionBodiesPredicate ||
- currentOptions.generateImplicitErrors !=
- options.generateImplicitErrors ||
- currentOptions.generateSdkErrors != options.generateSdkErrors ||
- currentOptions.dart2jsHint != options.dart2jsHint ||
- (currentOptions.hint && !options.hint) ||
- currentOptions.preserveComments != options.preserveComments ||
- currentOptions.enableNullAwareOperators !=
- options.enableNullAwareOperators ||
- currentOptions.enableStrictCallChecks != options.enableStrictCallChecks;
- if (needsRecompute) {
- fail(
- "Cannot set options that cause the sources to be reanalyzed in a test context");
- }
- super.analysisOptions = options;
- }
-
- @override
- LibraryResolverFactory get libraryResolverFactory => null;
-
- @override
- bool exists(Source source) =>
- super.exists(source) || sourceFactory.dartSdk.context.exists(source);
-
- @override
- TimestampedData<String> getContents(Source source) {
- if (source.isInSystemLibrary) {
- return sourceFactory.dartSdk.context.getContents(source);
- }
- return super.getContents(source);
- }
-
- @override
- int getModificationStamp(Source source) {
- if (source.isInSystemLibrary) {
- return sourceFactory.dartSdk.context.getModificationStamp(source);
- }
- return super.getModificationStamp(source);
- }
-
- /**
- * Initialize the given analysis context with a fake core library already resolved.
- *
- * @param context the context to be initialized (not `null`)
- * @return the analysis context that was created
- */
- void initWithCore() {
- AnalysisContext coreContext = sourceFactory.dartSdk.context;
- //
- // dart:core
- //
- TestTypeProvider provider = new TestTypeProvider();
- typeProvider = provider;
- CompilationUnitElementImpl coreUnit =
- new CompilationUnitElementImpl("core.dart");
- Source coreSource = sourceFactory.forUri(DartSdk.DART_CORE);
- coreContext.setContents(coreSource, "");
- coreUnit.source = coreSource;
- ClassElementImpl proxyClassElement = ElementFactory.classElement2("_Proxy");
- coreUnit.types = <ClassElement>[
- provider.boolType.element,
- provider.deprecatedType.element,
- provider.doubleType.element,
- provider.functionType.element,
- provider.intType.element,
- provider.iterableType.element,
- provider.iteratorType.element,
- provider.listType.element,
- provider.mapType.element,
- provider.nullType.element,
- provider.numType.element,
- provider.objectType.element,
- proxyClassElement,
- provider.stackTraceType.element,
- provider.stringType.element,
- provider.symbolType.element,
- provider.typeType.element
- ];
- coreUnit.functions = <FunctionElement>[
- ElementFactory.functionElement3("identical", provider.boolType.element,
- <ClassElement>[
- provider.objectType.element,
- provider.objectType.element
- ], null),
- ElementFactory.functionElement3("print", VoidTypeImpl.instance.element,
- <ClassElement>[provider.objectType.element], null)
- ];
- TopLevelVariableElement proxyTopLevelVariableElt = ElementFactory
- .topLevelVariableElement3("proxy", true, false, proxyClassElement.type);
- TopLevelVariableElement deprecatedTopLevelVariableElt = ElementFactory
- .topLevelVariableElement3(
- "deprecated", true, false, provider.deprecatedType);
- coreUnit.accessors = <PropertyAccessorElement>[
- proxyTopLevelVariableElt.getter,
- deprecatedTopLevelVariableElt.getter
- ];
- coreUnit.topLevelVariables = <TopLevelVariableElement>[
- proxyTopLevelVariableElt,
- deprecatedTopLevelVariableElt
- ];
- LibraryElementImpl coreLibrary = new LibraryElementImpl.forNode(
- coreContext, AstFactory.libraryIdentifier2(["dart", "core"]));
- coreLibrary.definingCompilationUnit = coreUnit;
- //
- // dart:async
- //
- CompilationUnitElementImpl asyncUnit =
- new CompilationUnitElementImpl("async.dart");
- Source asyncSource = sourceFactory.forUri(DartSdk.DART_ASYNC);
- coreContext.setContents(asyncSource, "");
- asyncUnit.source = asyncSource;
- // Future
- ClassElementImpl futureElement =
- ElementFactory.classElement2("Future", ["T"]);
- InterfaceType futureType = futureElement.type;
- // factory Future.value([value])
- ConstructorElementImpl futureConstructor =
- ElementFactory.constructorElement2(futureElement, "value");
- futureConstructor.parameters = <ParameterElement>[
- ElementFactory.positionalParameter2("value", provider.dynamicType)
- ];
- futureConstructor.factory = true;
- (futureConstructor.type as FunctionTypeImpl).typeArguments =
- futureElement.type.typeArguments;
- futureElement.constructors = <ConstructorElement>[futureConstructor];
- // Future then(onValue(T value), { Function onError });
- List<ParameterElement> parameters = <ParameterElement>[
- ElementFactory.requiredParameter2(
- "value", futureElement.typeParameters[0].type)
- ];
- FunctionTypeAliasElementImpl aliasElement =
- new FunctionTypeAliasElementImpl.forNode(null);
- aliasElement.synthetic = true;
- aliasElement.parameters = parameters;
- aliasElement.returnType = provider.dynamicType;
- aliasElement.enclosingElement = asyncUnit;
- FunctionTypeImpl aliasType = new FunctionTypeImpl.con2(aliasElement);
- aliasElement.shareTypeParameters(futureElement.typeParameters);
- aliasType.typeArguments = futureElement.type.typeArguments;
- MethodElement thenMethod = ElementFactory.methodElementWithParameters(
- "then", futureElement.type.typeArguments, futureType, [
- ElementFactory.requiredParameter2("onValue", aliasType),
- ElementFactory.namedParameter2("onError", provider.functionType)
- ]);
- futureElement.methods = <MethodElement>[thenMethod];
- // Completer
- ClassElementImpl completerElement =
- ElementFactory.classElement2("Completer", ["T"]);
- ConstructorElementImpl completerConstructor =
- ElementFactory.constructorElement2(completerElement, null);
- (completerConstructor.type as FunctionTypeImpl).typeArguments =
- completerElement.type.typeArguments;
- completerElement.constructors = <ConstructorElement>[completerConstructor];
- asyncUnit.types = <ClassElement>[
- completerElement,
- futureElement,
- ElementFactory.classElement2("Stream", ["T"])
- ];
- LibraryElementImpl asyncLibrary = new LibraryElementImpl.forNode(
- coreContext, AstFactory.libraryIdentifier2(["dart", "async"]));
- asyncLibrary.definingCompilationUnit = asyncUnit;
- //
- // dart:html
- //
- CompilationUnitElementImpl htmlUnit =
- new CompilationUnitElementImpl("html_dartium.dart");
- Source htmlSource = sourceFactory.forUri(DartSdk.DART_HTML);
- coreContext.setContents(htmlSource, "");
- htmlUnit.source = htmlSource;
- ClassElementImpl elementElement = ElementFactory.classElement2("Element");
- InterfaceType elementType = elementElement.type;
- ClassElementImpl canvasElement =
- ElementFactory.classElement("CanvasElement", elementType);
- ClassElementImpl contextElement =
- ElementFactory.classElement2("CanvasRenderingContext");
- InterfaceType contextElementType = contextElement.type;
- ClassElementImpl context2dElement = ElementFactory.classElement(
- "CanvasRenderingContext2D", contextElementType);
- canvasElement.methods = <MethodElement>[
- ElementFactory.methodElement(
- "getContext", contextElementType, [provider.stringType])
- ];
- canvasElement.accessors = <PropertyAccessorElement>[
- ElementFactory.getterElement("context2D", false, context2dElement.type)
- ];
- canvasElement.fields = canvasElement.accessors
- .map((PropertyAccessorElement accessor) => accessor.variable)
- .toList();
- ClassElementImpl documentElement =
- ElementFactory.classElement("Document", elementType);
- ClassElementImpl htmlDocumentElement =
- ElementFactory.classElement("HtmlDocument", documentElement.type);
- htmlDocumentElement.methods = <MethodElement>[
- ElementFactory.methodElement(
- "query", elementType, <DartType>[provider.stringType])
- ];
- htmlUnit.types = <ClassElement>[
- ElementFactory.classElement("AnchorElement", elementType),
- ElementFactory.classElement("BodyElement", elementType),
- ElementFactory.classElement("ButtonElement", elementType),
- canvasElement,
- contextElement,
- context2dElement,
- ElementFactory.classElement("DivElement", elementType),
- documentElement,
- elementElement,
- htmlDocumentElement,
- ElementFactory.classElement("InputElement", elementType),
- ElementFactory.classElement("SelectElement", elementType)
- ];
- htmlUnit.functions = <FunctionElement>[
- ElementFactory.functionElement3("query", elementElement,
- <ClassElement>[provider.stringType.element], ClassElement.EMPTY_LIST)
- ];
- TopLevelVariableElementImpl document = ElementFactory
- .topLevelVariableElement3(
- "document", false, true, htmlDocumentElement.type);
- htmlUnit.topLevelVariables = <TopLevelVariableElement>[document];
- htmlUnit.accessors = <PropertyAccessorElement>[document.getter];
- LibraryElementImpl htmlLibrary = new LibraryElementImpl.forNode(
- coreContext, AstFactory.libraryIdentifier2(["dart", "dom", "html"]));
- htmlLibrary.definingCompilationUnit = htmlUnit;
- //
- // dart:math
- //
- CompilationUnitElementImpl mathUnit =
- new CompilationUnitElementImpl("math.dart");
- Source mathSource = sourceFactory.forUri("dart:math");
- coreContext.setContents(mathSource, "");
- mathUnit.source = mathSource;
- FunctionElement cosElement = ElementFactory.functionElement3("cos",
- provider.doubleType.element, <ClassElement>[provider.numType.element],
- ClassElement.EMPTY_LIST);
- TopLevelVariableElement ln10Element = ElementFactory
- .topLevelVariableElement3("LN10", true, false, provider.doubleType);
- TopLevelVariableElement piElement = ElementFactory.topLevelVariableElement3(
- "PI", true, false, provider.doubleType);
- ClassElementImpl randomElement = ElementFactory.classElement2("Random");
- randomElement.abstract = true;
- ConstructorElementImpl randomConstructor =
- ElementFactory.constructorElement2(randomElement, null);
- randomConstructor.factory = true;
- ParameterElementImpl seedParam = new ParameterElementImpl("seed", 0);
- seedParam.parameterKind = ParameterKind.POSITIONAL;
- seedParam.type = provider.intType;
- randomConstructor.parameters = <ParameterElement>[seedParam];
- randomElement.constructors = <ConstructorElement>[randomConstructor];
- FunctionElement sinElement = ElementFactory.functionElement3("sin",
- provider.doubleType.element, <ClassElement>[provider.numType.element],
- ClassElement.EMPTY_LIST);
- FunctionElement sqrtElement = ElementFactory.functionElement3("sqrt",
- provider.doubleType.element, <ClassElement>[provider.numType.element],
- ClassElement.EMPTY_LIST);
- mathUnit.accessors = <PropertyAccessorElement>[
- ln10Element.getter,
- piElement.getter
- ];
- mathUnit.functions = <FunctionElement>[cosElement, sinElement, sqrtElement];
- mathUnit.topLevelVariables = <TopLevelVariableElement>[
- ln10Element,
- piElement
- ];
- mathUnit.types = <ClassElement>[randomElement];
- LibraryElementImpl mathLibrary = new LibraryElementImpl.forNode(
- coreContext, AstFactory.libraryIdentifier2(["dart", "math"]));
- mathLibrary.definingCompilationUnit = mathUnit;
- //
- // Set empty sources for the rest of the libraries.
- //
- Source source = sourceFactory.forUri("dart:_interceptors");
- coreContext.setContents(source, "");
- source = sourceFactory.forUri("dart:_js_helper");
- coreContext.setContents(source, "");
- //
- // Record the elements.
- //
- HashMap<Source, LibraryElement> elementMap =
- new HashMap<Source, LibraryElement>();
- elementMap[coreSource] = coreLibrary;
- elementMap[asyncSource] = asyncLibrary;
- elementMap[htmlSource] = htmlLibrary;
- elementMap[mathSource] = mathLibrary;
- recordLibraryElements(elementMap);
- elementMap.forEach((Source librarySource, LibraryElement library) {
- CompilationUnit unit = new CompilationUnit(null, null, null, null, null);
- unit.element = library.definingCompilationUnit;
- CacheEntry entry = getCacheEntry(librarySource);
- entry.setValue(PARSED_UNIT, unit, TargetedResult.EMPTY_LIST, null);
- });
- }
-
- /**
- * Set the analysis options, even if they would force re-analysis. This method should only be
- * invoked before the fake SDK is initialized.
- *
- * @param options the analysis options to be set
- */
- void _internalSetAnalysisOptions(AnalysisOptions options) {
- super.analysisOptions = options;
- }
-}
-
@reflectiveTest
-class AnalysisContextImplTest extends EngineTestCase {
- /**
- * An analysis context whose source factory is [sourceFactory].
- */
- AnalysisContextImpl _context;
-
- /**
- * The source factory associated with the analysis [context].
- */
- SourceFactory _sourceFactory;
-
+class AnalysisContextImplTest extends AbstractContextTest {
void fail_applyChanges_empty() {
- _context.applyChanges(new ChangeSet());
- expect(_context.performAnalysisTask().changeNotices, isNull);
+ context.applyChanges(new ChangeSet());
+ expect(context.performAnalysisTask().changeNotices, isNull);
// This test appears to be flaky. If it is named "test_" it fails, if it's
- // named "fail_" it doesn't fail. I'm guessing that it's dependent on some
- // other test being run (or not).
+ // named "fail_" it doesn't fail. I'm guessing that it's dependent on
+ // whether some other test is run.
fail('Should have failed');
}
- void fail_applyChanges_overriddenSource() {
+ void test_applyChanges_overriddenSource() {
// Note: addSource adds the source to the contentCache.
- Source source = _addSource("/test.dart", "library test;");
- _context.computeErrors(source);
- while (!_context.sourcesNeedingProcessing.isEmpty) {
- _context.performAnalysisTask();
+ Source source = addSource("/test.dart", "library test;");
+ context.computeErrors(source);
+ while (!context.sourcesNeedingProcessing.isEmpty) {
+ context.performAnalysisTask();
}
// Adding the source as a changedSource should have no effect since
// it is already overridden in the content cache.
ChangeSet changeSet = new ChangeSet();
changeSet.changedSource(source);
- _context.applyChanges(changeSet);
- expect(_context.sourcesNeedingProcessing, hasLength(0));
+ context.applyChanges(changeSet);
+ expect(context.sourcesNeedingProcessing, hasLength(0));
}
Future fail_applyChanges_remove() {
- _context = contextWithCore();
SourcesChangedListener listener = new SourcesChangedListener();
- _context.onSourcesChanged.listen(listener.onData);
- _sourceFactory = _context.sourceFactory;
+ context.onSourcesChanged.listen(listener.onData);
String libAContents = r'''
library libA;
import 'libB.dart';''';
- Source libA = _addSource("/libA.dart", libAContents);
+ Source libA = addSource("/libA.dart", libAContents);
String libBContents = "library libB;";
- Source libB = _addSource("/libB.dart", libBContents);
- LibraryElement libAElement = _context.computeLibraryElement(libA);
+ Source libB = addSource("/libB.dart", libBContents);
+ LibraryElement libAElement = context.computeLibraryElement(libA);
expect(libAElement, isNotNull);
List<LibraryElement> importedLibraries = libAElement.importedLibraries;
expect(importedLibraries, hasLength(2));
- _context.computeErrors(libA);
- _context.computeErrors(libB);
- expect(_context.sourcesNeedingProcessing, hasLength(0));
- _context.setContents(libB, null);
+ context.computeErrors(libA);
+ context.computeErrors(libB);
+ expect(context.sourcesNeedingProcessing, hasLength(0));
+ context.setContents(libB, null);
_removeSource(libB);
- List<Source> sources = _context.sourcesNeedingProcessing;
+ List<Source> sources = context.sourcesNeedingProcessing;
expect(sources, hasLength(1));
expect(sources[0], same(libA));
- libAElement = _context.computeLibraryElement(libA);
+ libAElement = context.computeLibraryElement(libA);
importedLibraries = libAElement.importedLibraries;
expect(importedLibraries, hasLength(1));
return pumpEventQueue().then((_) {
@@ -455,26 +110,24 @@
}
Future fail_applyChanges_removeContainer() {
- _context = contextWithCore();
SourcesChangedListener listener = new SourcesChangedListener();
- _context.onSourcesChanged.listen(listener.onData);
- _sourceFactory = _context.sourceFactory;
+ context.onSourcesChanged.listen(listener.onData);
String libAContents = r'''
library libA;
import 'libB.dart';''';
- Source libA = _addSource("/libA.dart", libAContents);
+ Source libA = addSource("/libA.dart", libAContents);
String libBContents = "library libB;";
- Source libB = _addSource("/libB.dart", libBContents);
- _context.computeLibraryElement(libA);
- _context.computeErrors(libA);
- _context.computeErrors(libB);
- expect(_context.sourcesNeedingProcessing, hasLength(0));
+ Source libB = addSource("/libB.dart", libBContents);
+ context.computeLibraryElement(libA);
+ context.computeErrors(libA);
+ context.computeErrors(libB);
+ expect(context.sourcesNeedingProcessing, hasLength(0));
ChangeSet changeSet = new ChangeSet();
SourceContainer removedContainer =
new _AnalysisContextImplTest_test_applyChanges_removeContainer(libB);
changeSet.removedContainer(removedContainer);
- _context.applyChanges(changeSet);
- List<Source> sources = _context.sourcesNeedingProcessing;
+ context.applyChanges(changeSet);
+ List<Source> sources = context.sourcesNeedingProcessing;
expect(sources, hasLength(1));
expect(sources[0], same(libA));
return pumpEventQueue().then((_) {
@@ -487,64 +140,57 @@
});
}
- void fail_computeErrors_dart_none() {
- Source source = _addSource("/lib.dart", "library lib;");
- List<AnalysisError> errors = _context.computeErrors(source);
+ void test_computeErrors_dart_none() {
+ Source source = addSource("/lib.dart", "library lib;");
+ List<AnalysisError> errors = context.computeErrors(source);
expect(errors, hasLength(0));
}
- void fail_computeErrors_dart_part() {
+ void test_computeErrors_dart_part() {
Source librarySource =
- _addSource("/lib.dart", "library lib; part 'part.dart';");
- Source partSource = _addSource("/part.dart", "part of 'lib';");
- _context.parseCompilationUnit(librarySource);
- List<AnalysisError> errors = _context.computeErrors(partSource);
+ addSource("/lib.dart", "library lib; part 'part.dart';");
+ Source partSource = addSource("/part.dart", "part of 'lib';");
+ context.parseCompilationUnit(librarySource);
+ List<AnalysisError> errors = context.computeErrors(partSource);
expect(errors, isNotNull);
expect(errors.length > 0, isTrue);
}
- void fail_computeErrors_dart_some() {
- Source source = _addSource("/lib.dart", "library 'lib';");
- List<AnalysisError> errors = _context.computeErrors(source);
+ void test_computeErrors_dart_some() {
+ Source source = addSource("/lib.dart", "library 'lib';");
+ List<AnalysisError> errors = context.computeErrors(source);
expect(errors, isNotNull);
expect(errors.length > 0, isTrue);
}
void fail_computeErrors_html_none() {
- Source source = _addSource("/test.html", "<html></html>");
- List<AnalysisError> errors = _context.computeErrors(source);
+ Source source = addSource("/test.html", "<html></html>");
+ List<AnalysisError> errors = context.computeErrors(source);
expect(errors, hasLength(0));
}
void fail_computeHtmlElement_valid() {
- Source source = _addSource("/test.html", "<html></html>");
- HtmlElement element = _context.computeHtmlElement(source);
+ Source source = addSource("/test.html", "<html></html>");
+ HtmlElement element = context.computeHtmlElement(source);
expect(element, isNotNull);
- expect(_context.computeHtmlElement(source), same(element));
+ expect(context.computeHtmlElement(source), same(element));
}
- void fail_computeImportedLibraries_none() {
- Source source = _addSource("/test.dart", "library test;");
- expect(_context.computeImportedLibraries(source), hasLength(0));
+ void test_computeImportedLibraries_none() {
+ Source source = addSource("/test.dart", "library test;");
+ expect(context.computeImportedLibraries(source), hasLength(0));
}
- void fail_computeImportedLibraries_some() {
- // addSource("/lib1.dart", "library lib1;");
- // addSource("/lib2.dart", "library lib2;");
- Source source = _addSource(
+ void test_computeImportedLibraries_some() {
+ Source source = addSource(
"/test.dart", "library test; import 'lib1.dart'; import 'lib2.dart';");
- expect(_context.computeImportedLibraries(source), hasLength(2));
- }
-
- void fail_computeKindOf_html() {
- Source source = _addSource("/test.html", "");
- expect(_context.computeKindOf(source), same(SourceKind.HTML));
+ expect(context.computeImportedLibraries(source), hasLength(2));
}
void fail_computeResolvableCompilationUnit_dart_exception() {
TestSource source = _addSourceWithException("/test.dart");
try {
- _context.computeResolvableCompilationUnit(source);
+ context.computeResolvableCompilationUnit(source);
fail("Expected AnalysisException");
} on AnalysisException {
// Expected
@@ -552,9 +198,9 @@
}
void fail_computeResolvableCompilationUnit_html_exception() {
- Source source = _addSource("/lib.html", "<html></html>");
+ Source source = addSource("/lib.html", "<html></html>");
try {
- _context.computeResolvableCompilationUnit(source);
+ context.computeResolvableCompilationUnit(source);
fail("Expected AnalysisException");
} on AnalysisException {
// Expected
@@ -562,27 +208,24 @@
}
void fail_computeResolvableCompilationUnit_valid() {
- Source source = _addSource("/lib.dart", "library lib;");
- CompilationUnit parsedUnit = _context.parseCompilationUnit(source);
+ Source source = addSource("/lib.dart", "library lib;");
+ CompilationUnit parsedUnit = context.parseCompilationUnit(source);
expect(parsedUnit, isNotNull);
CompilationUnit resolvedUnit =
- _context.computeResolvableCompilationUnit(source);
+ context.computeResolvableCompilationUnit(source);
expect(resolvedUnit, isNotNull);
expect(resolvedUnit, same(parsedUnit));
}
- Future fail_computeResolvedCompilationUnitAsync_dispose() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/lib.dart", "library lib;");
+ Future test_computeResolvedCompilationUnitAsync_dispose() {
+ Source source = addSource("/lib.dart", "library lib;");
// Complete all pending analysis tasks and flush the AST so that it won't
// be available immediately.
_performPendingAnalysisTasks();
- CacheEntry entry = _context.getReadableSourceEntryOrNull(source);
- entry.flushAstStructures();
- CancelableFuture<CompilationUnit> future =
- _context.computeResolvedCompilationUnitAsync(source, source);
+ _flushAst(source);
bool completed = false;
+ CancelableFuture<CompilationUnit> future =
+ context.computeResolvedCompilationUnitAsync(source, source);
future.then((CompilationUnit unit) {
fail('Future should have completed with error');
}, onError: (error) {
@@ -590,29 +233,25 @@
completed = true;
});
expect(completed, isFalse);
- expect(_context.pendingFutureSources_forTesting, isNotEmpty);
+ expect(context.pendingFutureSources_forTesting, isNotEmpty);
// Disposing of the context should cause all pending futures to complete
// with AnalysisNotScheduled, so that no clients are left hanging.
- _context.dispose();
- expect(_context.pendingFutureSources_forTesting, isEmpty);
+ context.dispose();
+ expect(context.pendingFutureSources_forTesting, isEmpty);
return pumpEventQueue().then((_) {
expect(completed, isTrue);
- expect(_context.pendingFutureSources_forTesting, isEmpty);
+ expect(context.pendingFutureSources_forTesting, isEmpty);
});
}
Future fail_computeResolvedCompilationUnitAsync_unrelatedLibrary() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source librarySource = _addSource("/lib.dart", "library lib;");
- Source partSource = _addSource("/part.dart", "part of foo;");
+ Source librarySource = addSource("/lib.dart", "library lib;");
+ Source partSource = addSource("/part.dart", "part of foo;");
bool completed = false;
- _context
+ context
.computeResolvedCompilationUnitAsync(partSource, librarySource)
.then((_) {
- // TODO(brianwilkerson) Uncomment the line below (and figure out why
- // invoking 'fail' directly causes a failing test to fail.
- //fail('Expected resolution to fail');
+ fail('Expected resolution to fail');
}, onError: (e) {
expect(e, new isInstanceOf<AnalysisNotScheduledError>());
completed = true;
@@ -629,199 +268,170 @@
fail("Implement this");
}
- void fail_getElement_constructor_named() {
- Source source = _addSource("/lib.dart", r'''
+ void test_getElement_constructor_named() {
+ Source source = addSource("/lib.dart", r'''
class A {
A.named() {}
}''');
_analyzeAll_assertFinished();
- LibraryElement library = _context.computeLibraryElement(source);
+ LibraryElement library = context.computeLibraryElement(source);
ClassElement classA = _findClass(library.definingCompilationUnit, "A");
ConstructorElement constructor = classA.constructors[0];
ElementLocation location = constructor.location;
- Element element = _context.getElement(location);
+ Element element = context.getElement(location);
expect(element, same(constructor));
}
- void fail_getElement_constructor_unnamed() {
- Source source = _addSource("/lib.dart", r'''
+ void test_getElement_constructor_unnamed() {
+ Source source = addSource("/lib.dart", r'''
class A {
A() {}
}''');
_analyzeAll_assertFinished();
- LibraryElement library = _context.computeLibraryElement(source);
+ LibraryElement library = context.computeLibraryElement(source);
ClassElement classA = _findClass(library.definingCompilationUnit, "A");
ConstructorElement constructor = classA.constructors[0];
ElementLocation location = constructor.location;
- Element element = _context.getElement(location);
+ Element element = context.getElement(location);
expect(element, same(constructor));
}
- void fail_getElement_enum() {
- Source source = _addSource('/test.dart', 'enum MyEnum {A, B, C}');
+ void test_getElement_enum() {
+ Source source = addSource('/test.dart', 'enum MyEnum {A, B, C}');
_analyzeAll_assertFinished();
- LibraryElement library = _context.computeLibraryElement(source);
+ LibraryElement library = context.computeLibraryElement(source);
ClassElement myEnum = library.definingCompilationUnit.getEnum('MyEnum');
ElementLocation location = myEnum.location;
- Element element = _context.getElement(location);
+ Element element = context.getElement(location);
expect(element, same(myEnum));
}
- void fail_getErrors_dart_none() {
- Source source = _addSource("/lib.dart", "library lib;");
- var errorInfo = _context.getErrors(source);
+ void test_getErrors_dart_none() {
+ Source source = addSource("/lib.dart", "library lib;");
+ var errorInfo = context.getErrors(source);
expect(errorInfo, isNotNull);
List<AnalysisError> errors = errorInfo.errors;
expect(errors, hasLength(0));
- _context.computeErrors(source);
+ context.computeErrors(source);
errors = errorInfo.errors;
expect(errors, hasLength(0));
}
- void fail_getErrors_dart_some() {
- Source source = _addSource("/lib.dart", "library 'lib';");
- var errorInfo = _context.getErrors(source);
+ void test_getErrors_dart_some() {
+ Source source = addSource("/lib.dart", "library 'lib';");
+ var errorInfo = context.getErrors(source);
expect(errorInfo, isNotNull);
List<AnalysisError> errors = errorInfo.errors;
expect(errors, hasLength(0));
- _context.computeErrors(source);
- errors = errorInfo.errors;
+ errors = context.computeErrors(source);
expect(errors, hasLength(1));
}
- void fail_getErrors_html_none() {
- Source source = _addSource("/test.html", "<html></html>");
- AnalysisErrorInfo errorInfo = _context.getErrors(source);
+ void test_getErrors_html_none() {
+ Source source = addSource("/test.html", "<html></html>");
+ AnalysisErrorInfo errorInfo = context.getErrors(source);
expect(errorInfo, isNotNull);
List<AnalysisError> errors = errorInfo.errors;
expect(errors, hasLength(0));
- _context.computeErrors(source);
+ context.computeErrors(source);
errors = errorInfo.errors;
expect(errors, hasLength(0));
}
void fail_getErrors_html_some() {
- Source source = _addSource("/test.html", r'''
+ Source source = addSource("/test.html", r'''
<html><head>
<script type='application/dart' src='test.dart'/>
</head></html>''');
- AnalysisErrorInfo errorInfo = _context.getErrors(source);
+ AnalysisErrorInfo errorInfo = context.getErrors(source);
expect(errorInfo, isNotNull);
List<AnalysisError> errors = errorInfo.errors;
expect(errors, hasLength(0));
- _context.computeErrors(source);
+ context.computeErrors(source);
errors = errorInfo.errors;
expect(errors, hasLength(1));
}
void fail_getHtmlElement_html() {
- Source source = _addSource("/test.html", "<html></html>");
- HtmlElement element = _context.getHtmlElement(source);
+ Source source = addSource("/test.html", "<html></html>");
+ HtmlElement element = context.getHtmlElement(source);
expect(element, isNull);
- _context.computeHtmlElement(source);
- element = _context.getHtmlElement(source);
+ context.computeHtmlElement(source);
+ element = context.getHtmlElement(source);
expect(element, isNotNull);
}
void fail_getHtmlFilesReferencing_library() {
- Source htmlSource = _addSource("/test.html", r'''
+ Source htmlSource = addSource("/test.html", r'''
<html><head>
<script type='application/dart' src='test.dart'/>
<script type='application/dart' src='test.js'/>
</head></html>''');
- Source librarySource = _addSource("/test.dart", "library lib;");
- List<Source> result = _context.getHtmlFilesReferencing(librarySource);
+ Source librarySource = addSource("/test.dart", "library lib;");
+ List<Source> result = context.getHtmlFilesReferencing(librarySource);
expect(result, hasLength(0));
- _context.parseHtmlUnit(htmlSource);
- result = _context.getHtmlFilesReferencing(librarySource);
+ context.parseHtmlUnit(htmlSource);
+ result = context.getHtmlFilesReferencing(librarySource);
expect(result, hasLength(1));
expect(result[0], htmlSource);
}
void fail_getHtmlFilesReferencing_part() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source htmlSource = _addSource("/test.html", r'''
+ Source htmlSource = addSource("/test.html", r'''
<html><head>
<script type='application/dart' src='test.dart'/>
<script type='application/dart' src='test.js'/>
</head></html>''');
Source librarySource =
- _addSource("/test.dart", "library lib; part 'part.dart';");
- Source partSource = _addSource("/part.dart", "part of lib;");
- _context.computeLibraryElement(librarySource);
- List<Source> result = _context.getHtmlFilesReferencing(partSource);
+ addSource("/test.dart", "library lib; part 'part.dart';");
+ Source partSource = addSource("/part.dart", "part of lib;");
+ context.computeLibraryElement(librarySource);
+ List<Source> result = context.getHtmlFilesReferencing(partSource);
expect(result, hasLength(0));
- _context.parseHtmlUnit(htmlSource);
- result = _context.getHtmlFilesReferencing(partSource);
+ context.parseHtmlUnit(htmlSource);
+ result = context.getHtmlFilesReferencing(partSource);
expect(result, hasLength(1));
expect(result[0], htmlSource);
}
void fail_getHtmlSources() {
- List<Source> sources = _context.htmlSources;
+ List<Source> sources = context.htmlSources;
expect(sources, hasLength(0));
- Source source = _addSource("/test.html", "");
- _context.computeKindOf(source);
- sources = _context.htmlSources;
+ Source source = addSource("/test.html", "");
+ context.computeKindOf(source);
+ sources = context.htmlSources;
expect(sources, hasLength(1));
expect(sources[0], source);
}
- void fail_getKindOf_html() {
- Source source = _addSource("/test.html", "");
- expect(_context.getKindOf(source), same(SourceKind.HTML));
- }
-
- void fail_getLibrariesContaining() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source librarySource = _addSource("/lib.dart", r'''
-library lib;
-part 'part.dart';''');
- Source partSource = _addSource("/part.dart", "part of lib;");
- _context.computeLibraryElement(librarySource);
- List<Source> result = _context.getLibrariesContaining(librarySource);
- expect(result, hasLength(1));
- expect(result[0], librarySource);
- result = _context.getLibrariesContaining(partSource);
- expect(result, hasLength(1));
- expect(result[0], librarySource);
- }
-
void fail_getLibrariesReferencedFromHtml() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source htmlSource = _addSource("/test.html", r'''
+ Source htmlSource = addSource("/test.html", r'''
<html><head>
<script type='application/dart' src='test.dart'/>
<script type='application/dart' src='test.js'/>
</head></html>''');
- Source librarySource = _addSource("/test.dart", "library lib;");
- _context.computeLibraryElement(librarySource);
- _context.parseHtmlUnit(htmlSource);
- List<Source> result = _context.getLibrariesReferencedFromHtml(htmlSource);
+ Source librarySource = addSource("/test.dart", "library lib;");
+ context.computeLibraryElement(librarySource);
+ context.parseHtmlUnit(htmlSource);
+ List<Source> result = context.getLibrariesReferencedFromHtml(htmlSource);
expect(result, hasLength(1));
expect(result[0], librarySource);
}
- void fail_getResolvedCompilationUnit_library() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/lib.dart", "library libb;");
- LibraryElement library = _context.computeLibraryElement(source);
- expect(_context.getResolvedCompilationUnit(source, library), isNotNull);
- _context.setContents(source, "library lib;");
- expect(_context.getResolvedCompilationUnit(source, library), isNull);
+ void test_getResolvedCompilationUnit_library() {
+ Source source = addSource("/lib.dart", "library libb;");
+ LibraryElement library = context.computeLibraryElement(source);
+ context.computeErrors(source); // Force the resolved unit to be built.
+ expect(context.getResolvedCompilationUnit(source, library), isNotNull);
+ context.setContents(source, "library lib;");
+ expect(context.getResolvedCompilationUnit(source, library), isNull);
}
void fail_getResolvedHtmlUnit() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/test.html", "<html></html>");
- expect(_context.getResolvedHtmlUnit(source), isNull);
- _context.resolveHtmlUnit(source);
- expect(_context.getResolvedHtmlUnit(source), isNotNull);
+ Source source = addSource("/test.html", "<html></html>");
+ expect(context.getResolvedHtmlUnit(source), isNull);
+ context.resolveHtmlUnit(source);
+ expect(context.getResolvedHtmlUnit(source), isNotNull);
}
void fail_mergeContext() {
@@ -829,16 +439,16 @@
}
void fail_parseHtmlUnit_noErrors() {
- Source source = _addSource("/lib.html", "<html></html>");
- ht.HtmlUnit unit = _context.parseHtmlUnit(source);
+ Source source = addSource("/lib.html", "<html></html>");
+ ht.HtmlUnit unit = context.parseHtmlUnit(source);
expect(unit, isNotNull);
}
void fail_parseHtmlUnit_resolveDirectives() {
- Source libSource = _addSource("/lib.dart", r'''
+ Source libSource = addSource("/lib.dart", r'''
library lib;
class ClassA {}''');
- Source source = _addSource("/lib.html", r'''
+ Source source = addSource("/lib.html", r'''
<html>
<head>
<script type='application/dart'>
@@ -849,7 +459,7 @@
<body>
</body>
</html>''');
- ht.HtmlUnit unit = _context.parseHtmlUnit(source);
+ ht.HtmlUnit unit = context.parseHtmlUnit(source);
expect(unit, isNotNull);
// import directive should be resolved
ht.XmlTagNode htmlNode = unit.tagNodes[0];
@@ -861,191 +471,178 @@
expect(importNode.source, libSource);
}
- void fail_performAnalysisTask_addPart() {
- Source libSource = _addSource("/lib.dart", r'''
+ void test_performAnalysisTask_addPart() {
+ Source libSource = addSource("/lib.dart", r'''
library lib;
part 'part.dart';''');
// run all tasks without part
_analyzeAll_assertFinished();
// add part and run all tasks
- Source partSource = _addSource("/part.dart", r'''
+ Source partSource = addSource("/part.dart", r'''
part of lib;
''');
_analyzeAll_assertFinished();
// "libSource" should be here
- List<Source> librariesWithPart =
- _context.getLibrariesContaining(partSource);
+ List<Source> librariesWithPart = context.getLibrariesContaining(partSource);
expect(librariesWithPart, unorderedEquals([libSource]));
}
- void fail_performAnalysisTask_changeLibraryContents() {
+ void test_performAnalysisTask_changeLibraryContents() {
Source libSource =
- _addSource("/test.dart", "library lib; part 'test-part.dart';");
- Source partSource = _addSource("/test-part.dart", "part of lib;");
+ addSource("/test.dart", "library lib; part 'test-part.dart';");
+ Source partSource = addSource("/test-part.dart", "part of lib;");
_analyzeAll_assertFinished();
- expect(
- _context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
reason: "library resolved 1");
expect(
- _context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
reason: "part resolved 1");
// update and analyze #1
- _context.setContents(libSource, "library lib;");
- expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNull,
+ context.setContents(libSource, "library lib;");
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
reason: "library changed 2");
- expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
reason: "part changed 2");
_analyzeAll_assertFinished();
- expect(
- _context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
reason: "library resolved 2");
- expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
reason: "part resolved 2");
// update and analyze #2
- _context.setContents(libSource, "library lib; part 'test-part.dart';");
- expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNull,
+ context.setContents(libSource, "library lib; part 'test-part.dart';");
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
reason: "library changed 3");
- expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
reason: "part changed 3");
_analyzeAll_assertFinished();
- expect(
- _context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
reason: "library resolved 2");
expect(
- _context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
reason: "part resolved 3");
}
- void fail_performAnalysisTask_changeLibraryThenPartContents() {
+ void test_performAnalysisTask_changeLibraryThenPartContents() {
Source libSource =
- _addSource("/test.dart", "library lib; part 'test-part.dart';");
- Source partSource = _addSource("/test-part.dart", "part of lib;");
+ addSource("/test.dart", "library lib; part 'test-part.dart';");
+ Source partSource = addSource("/test-part.dart", "part of lib;");
_analyzeAll_assertFinished();
- expect(
- _context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
reason: "library resolved 1");
expect(
- _context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
reason: "part resolved 1");
// update and analyze #1
- _context.setContents(libSource, "library lib;");
- expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNull,
+ context.setContents(libSource, "library lib;");
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
reason: "library changed 2");
- expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
reason: "part changed 2");
_analyzeAll_assertFinished();
- expect(
- _context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
reason: "library resolved 2");
- expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
reason: "part resolved 2");
// update and analyze #2
- _context.setContents(partSource, "part of lib; // 1");
+ context.setContents(partSource, "part of lib; // 1");
// Assert that changing the part's content does not effect the library
// now that it is no longer part of that library
- expect(
- _context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
reason: "library changed 3");
- expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
reason: "part changed 3");
_analyzeAll_assertFinished();
- expect(
- _context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
reason: "library resolved 3");
- expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
reason: "part resolved 3");
}
- void fail_performAnalysisTask_changePartContents_makeItAPart() {
- Source libSource = _addSource("/lib.dart", r'''
+ void test_performAnalysisTask_changePartContents_makeItAPart() {
+ Source libSource = addSource("/lib.dart", r'''
library lib;
part 'part.dart';
void f(x) {}''');
- Source partSource = _addSource("/part.dart", "void g() { f(null); }");
+ Source partSource = addSource("/part.dart", "void g() { f(null); }");
_analyzeAll_assertFinished();
- expect(
- _context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
reason: "library resolved 1");
expect(
- _context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
reason: "part resolved 1");
// update and analyze
- _context.setContents(partSource, r'''
+ context.setContents(partSource, r'''
part of lib;
void g() { f(null); }''');
- expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
reason: "library changed 2");
- expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
reason: "part changed 2");
_analyzeAll_assertFinished();
- expect(
- _context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
reason: "library resolved 2");
expect(
- _context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
reason: "part resolved 2");
- expect(_context.getErrors(libSource).errors, hasLength(0));
- expect(_context.getErrors(partSource).errors, hasLength(0));
+ expect(context.getErrors(libSource).errors, hasLength(0));
+ expect(context.getErrors(partSource).errors, hasLength(0));
}
/**
* https://code.google.com/p/dart/issues/detail?id=12424
*/
- void fail_performAnalysisTask_changePartContents_makeItNotPart() {
- Source libSource = _addSource("/lib.dart", r'''
+ void test_performAnalysisTask_changePartContents_makeItNotPart() {
+ Source libSource = addSource("/lib.dart", r'''
library lib;
part 'part.dart';
void f(x) {}''');
- Source partSource = _addSource("/part.dart", r'''
+ Source partSource = addSource("/part.dart", r'''
part of lib;
void g() { f(null); }''');
_analyzeAll_assertFinished();
- expect(_context.getErrors(libSource).errors, hasLength(0));
- expect(_context.getErrors(partSource).errors, hasLength(0));
+ expect(context.getErrors(libSource).errors, hasLength(0));
+ expect(context.getErrors(partSource).errors, hasLength(0));
// Remove 'part' directive, which should make "f(null)" an error.
- _context.setContents(partSource, r'''
+ context.setContents(partSource, r'''
//part of lib;
void g() { f(null); }''');
_analyzeAll_assertFinished();
- expect(_context.getErrors(libSource).errors.length != 0, isTrue);
+ expect(context.getErrors(libSource).errors.length != 0, isTrue);
}
- void fail_performAnalysisTask_changePartContents_noSemanticChanges() {
+ void test_performAnalysisTask_changePartContents_noSemanticChanges() {
Source libSource =
- _addSource("/test.dart", "library lib; part 'test-part.dart';");
- Source partSource = _addSource("/test-part.dart", "part of lib;");
+ addSource("/test.dart", "library lib; part 'test-part.dart';");
+ Source partSource = addSource("/test-part.dart", "part of lib;");
_analyzeAll_assertFinished();
- expect(
- _context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
reason: "library resolved 1");
expect(
- _context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
reason: "part resolved 1");
// update and analyze #1
- _context.setContents(partSource, "part of lib; // 1");
- expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNull,
+ context.setContents(partSource, "part of lib; // 1");
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
reason: "library changed 2");
- expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
reason: "part changed 2");
_analyzeAll_assertFinished();
- expect(
- _context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
reason: "library resolved 2");
expect(
- _context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
reason: "part resolved 2");
// update and analyze #2
- _context.setContents(partSource, "part of lib; // 12");
- expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNull,
+ context.setContents(partSource, "part of lib; // 12");
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
reason: "library changed 3");
- expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
reason: "part changed 3");
_analyzeAll_assertFinished();
- expect(
- _context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
reason: "library resolved 3");
expect(
- _context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
reason: "part resolved 3");
}
@@ -1055,11 +652,11 @@
{
ChangeSet changeSet = new ChangeSet();
changeSet.addedSource(source);
- _context.applyChanges(changeSet);
+ context.applyChanges(changeSet);
}
// prepare errors
_analyzeAll_assertFinished();
- List<AnalysisError> errors = _context.getErrors(source).errors;
+ List<AnalysisError> errors = context.getErrors(source).errors;
// validate errors
expect(errors, hasLength(1));
AnalysisError error = errors[0];
@@ -1073,11 +670,11 @@
{
ChangeSet changeSet = new ChangeSet();
changeSet.addedSource(source);
- _context.applyChanges(changeSet);
+ context.applyChanges(changeSet);
}
// prepare errors
_analyzeAll_assertFinished();
- List<AnalysisError> errors = _context.getErrors(source).errors;
+ List<AnalysisError> errors = context.getErrors(source).errors;
// validate errors
expect(errors, hasLength(1));
AnalysisError error = errors[0];
@@ -1087,44 +684,44 @@
void fail_performAnalysisTask_importedLibraryAdd() {
Source libASource =
- _addSource("/libA.dart", "library libA; import 'libB.dart';");
+ addSource("/libA.dart", "library libA; import 'libB.dart';");
_analyzeAll_assertFinished();
expect(
- _context.getResolvedCompilationUnit2(libASource, libASource), isNotNull,
+ context.getResolvedCompilationUnit2(libASource, libASource), isNotNull,
reason: "libA resolved 1");
- expect(_hasAnalysisErrorWithErrorSeverity(_context.getErrors(libASource)),
+ expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)),
isTrue, reason: "libA has an error");
// add libB.dart and analyze
- Source libBSource = _addSource("/libB.dart", "library libB;");
+ Source libBSource = addSource("/libB.dart", "library libB;");
_analyzeAll_assertFinished();
expect(
- _context.getResolvedCompilationUnit2(libASource, libASource), isNotNull,
+ context.getResolvedCompilationUnit2(libASource, libASource), isNotNull,
reason: "libA resolved 2");
expect(
- _context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull,
+ context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull,
reason: "libB resolved 2");
- expect(!_hasAnalysisErrorWithErrorSeverity(_context.getErrors(libASource)),
+ expect(!_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)),
isTrue, reason: "libA doesn't have errors");
}
void fail_performAnalysisTask_importedLibraryAdd_html() {
- Source htmlSource = _addSource("/page.html", r'''
+ Source htmlSource = addSource("/page.html", r'''
<html><body><script type="application/dart">
import '/libB.dart';
main() {print('hello dart');}
</script></body></html>''');
_analyzeAll_assertFinished();
- expect(_context.getResolvedHtmlUnit(htmlSource), isNotNull,
+ expect(context.getResolvedHtmlUnit(htmlSource), isNotNull,
reason: "htmlUnit resolved 1");
- expect(_hasAnalysisErrorWithErrorSeverity(_context.getErrors(htmlSource)),
+ expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(htmlSource)),
isTrue, reason: "htmlSource has an error");
// add libB.dart and analyze
- Source libBSource = _addSource("/libB.dart", "library libB;");
+ Source libBSource = addSource("/libB.dart", "library libB;");
_analyzeAll_assertFinished();
- expect(_context.getResolvedHtmlUnit(htmlSource), isNotNull,
+ expect(context.getResolvedHtmlUnit(htmlSource), isNotNull,
reason: "htmlUnit resolved 1");
expect(
- _context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull,
+ context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull,
reason: "libB resolved 2");
// TODO (danrubel) commented out to fix red bots
// AnalysisErrorInfo errors = _context.getErrors(htmlSource);
@@ -1136,56 +733,56 @@
void fail_performAnalysisTask_importedLibraryDelete() {
Source libASource =
- _addSource("/libA.dart", "library libA; import 'libB.dart';");
- Source libBSource = _addSource("/libB.dart", "library libB;");
+ addSource("/libA.dart", "library libA; import 'libB.dart';");
+ Source libBSource = addSource("/libB.dart", "library libB;");
_analyzeAll_assertFinished();
expect(
- _context.getResolvedCompilationUnit2(libASource, libASource), isNotNull,
+ context.getResolvedCompilationUnit2(libASource, libASource), isNotNull,
reason: "libA resolved 1");
expect(
- _context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull,
+ context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull,
reason: "libB resolved 1");
- expect(!_hasAnalysisErrorWithErrorSeverity(_context.getErrors(libASource)),
+ expect(!_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)),
isTrue, reason: "libA doesn't have errors");
// remove libB.dart content and analyze
- _context.setContents(libBSource, null);
+ context.setContents(libBSource, null);
_analyzeAll_assertFinished();
expect(
- _context.getResolvedCompilationUnit2(libASource, libASource), isNotNull,
+ context.getResolvedCompilationUnit2(libASource, libASource), isNotNull,
reason: "libA resolved 2");
- expect(_hasAnalysisErrorWithErrorSeverity(_context.getErrors(libASource)),
+ expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)),
isTrue, reason: "libA has an error");
}
void fail_performAnalysisTask_importedLibraryDelete_html() {
// NOTE: This was failing before converting to the new task model.
- Source htmlSource = _addSource("/page.html", r'''
+ Source htmlSource = addSource("/page.html", r'''
<html><body><script type="application/dart">
import 'libB.dart';
main() {print('hello dart');}
</script></body></html>''');
- Source libBSource = _addSource("/libB.dart", "library libB;");
+ Source libBSource = addSource("/libB.dart", "library libB;");
_analyzeAll_assertFinished();
- expect(_context.getResolvedHtmlUnit(htmlSource), isNotNull,
+ expect(context.getResolvedHtmlUnit(htmlSource), isNotNull,
reason: "htmlUnit resolved 1");
expect(
- _context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull,
+ context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull,
reason: "libB resolved 1");
- expect(!_hasAnalysisErrorWithErrorSeverity(_context.getErrors(htmlSource)),
+ expect(!_hasAnalysisErrorWithErrorSeverity(context.getErrors(htmlSource)),
isTrue, reason: "htmlSource doesn't have errors");
// remove libB.dart content and analyze
- _context.setContents(libBSource, null);
+ context.setContents(libBSource, null);
_analyzeAll_assertFinished();
- expect(_context.getResolvedHtmlUnit(htmlSource), isNotNull,
+ expect(context.getResolvedHtmlUnit(htmlSource), isNotNull,
reason: "htmlUnit resolved 1");
- AnalysisErrorInfo errors = _context.getErrors(htmlSource);
+ AnalysisErrorInfo errors = context.getErrors(htmlSource);
expect(_hasAnalysisErrorWithErrorSeverity(errors), isTrue,
reason: "htmlSource has an error");
}
void fail_performAnalysisTask_IOException() {
TestSource source = _addSourceWithException2("/test.dart", "library test;");
- int oldTimestamp = _context.getModificationStamp(source);
+ int oldTimestamp = context.getModificationStamp(source);
source.generateExceptionOnRead = false;
_analyzeAll_assertFinished();
expect(source.readCount, 1);
@@ -1194,16 +791,16 @@
_changeSource(source, "");
// Ensure that the timestamp differs,
// so that analysis engine notices the change
- } while (oldTimestamp == _context.getModificationStamp(source));
+ } while (oldTimestamp == context.getModificationStamp(source));
_analyzeAll_assertFinished();
expect(source.readCount, 2);
}
void fail_performAnalysisTask_missingPart() {
Source source =
- _addSource("/test.dart", "library lib; part 'no-such-file.dart';");
+ addSource("/test.dart", "library lib; part 'no-such-file.dart';");
_analyzeAll_assertFinished();
- expect(_context.getLibraryElement(source), isNotNull,
+ expect(context.getLibraryElement(source), isNotNull,
reason: "performAnalysisTask failed to compute an element model");
}
@@ -1212,12 +809,11 @@
}
void fail_resolveCompilationUnit_import_relative() {
- _context = contextWithCore();
Source sourceA =
- _addSource("/libA.dart", "library libA; import 'libB.dart'; class A{}");
- _addSource("/libB.dart", "library libB; class B{}");
+ addSource("/libA.dart", "library libA; import 'libB.dart'; class A{}");
+ addSource("/libB.dart", "library libB; class B{}");
CompilationUnit compilationUnit =
- _context.resolveCompilationUnit2(sourceA, sourceA);
+ context.resolveCompilationUnit2(sourceA, sourceA);
expect(compilationUnit, isNotNull);
LibraryElement library = compilationUnit.element.library;
List<LibraryElement> importedLibraries = library.importedLibraries;
@@ -1227,12 +823,11 @@
}
void fail_resolveCompilationUnit_import_relative_cyclic() {
- _context = contextWithCore();
Source sourceA =
- _addSource("/libA.dart", "library libA; import 'libB.dart'; class A{}");
- _addSource("/libB.dart", "library libB; import 'libA.dart'; class B{}");
+ addSource("/libA.dart", "library libA; import 'libB.dart'; class A{}");
+ addSource("/libB.dart", "library libB; import 'libA.dart'; class B{}");
CompilationUnit compilationUnit =
- _context.resolveCompilationUnit2(sourceA, sourceA);
+ context.resolveCompilationUnit2(sourceA, sourceA);
expect(compilationUnit, isNotNull);
LibraryElement library = compilationUnit.element.library;
List<LibraryElement> importedLibraries = library.importedLibraries;
@@ -1242,70 +837,68 @@
}
void fail_resolveHtmlUnit() {
- Source source = _addSource("/lib.html", "<html></html>");
- ht.HtmlUnit unit = _context.resolveHtmlUnit(source);
+ Source source = addSource("/lib.html", "<html></html>");
+ ht.HtmlUnit unit = context.resolveHtmlUnit(source);
expect(unit, isNotNull);
}
void fail_setAnalysisOptions_reduceAnalysisPriorityOrder() {
AnalysisOptionsImpl options =
- new AnalysisOptionsImpl.con1(_context.analysisOptions);
+ new AnalysisOptionsImpl.from(context.analysisOptions);
List<Source> sources = new List<Source>();
for (int index = 0; index < options.cacheSize; index++) {
- sources.add(_addSource("/lib.dart$index", ""));
+ sources.add(addSource("/lib.dart$index", ""));
}
- _context.analysisPriorityOrder = sources;
- int oldPriorityOrderSize = _getPriorityOrder(_context).length;
+ context.analysisPriorityOrder = sources;
+ int oldPriorityOrderSize = _getPriorityOrder(context).length;
options.cacheSize = options.cacheSize - 10;
- _context.analysisOptions = options;
- expect(oldPriorityOrderSize > _getPriorityOrder(_context).length, isTrue);
+ context.analysisOptions = options;
+ expect(oldPriorityOrderSize > _getPriorityOrder(context).length, isTrue);
}
void fail_setAnalysisPriorityOrder_lessThanCacheSize() {
- AnalysisOptions options = _context.analysisOptions;
+ AnalysisOptions options = context.analysisOptions;
List<Source> sources = new List<Source>();
for (int index = 0; index < options.cacheSize; index++) {
- sources.add(_addSource("/lib.dart$index", ""));
+ sources.add(addSource("/lib.dart$index", ""));
}
- _context.analysisPriorityOrder = sources;
- expect(options.cacheSize > _getPriorityOrder(_context).length, isTrue);
+ context.analysisPriorityOrder = sources;
+ expect(options.cacheSize > _getPriorityOrder(context).length, isTrue);
}
Future fail_setChangedContents_libraryWithPart() {
AnalysisOptionsImpl options = new AnalysisOptionsImpl();
options.incremental = true;
- _context = new AnalysisContextForTests();
- _context.analysisOptions = options;
+ context.analysisOptions = options;
SourcesChangedListener listener = new SourcesChangedListener();
- _context.onSourcesChanged.listen(listener.onData);
- _sourceFactory = _context.sourceFactory;
+ context.onSourcesChanged.listen(listener.onData);
String oldCode = r'''
library lib;
part 'part.dart';
int a = 0;''';
- Source librarySource = _addSource("/lib.dart", oldCode);
+ Source librarySource = addSource("/lib.dart", oldCode);
String partContents = r'''
part of lib;
int b = a;''';
- Source partSource = _addSource("/part.dart", partContents);
- LibraryElement element = _context.computeLibraryElement(librarySource);
+ Source partSource = addSource("/part.dart", partContents);
+ LibraryElement element = context.computeLibraryElement(librarySource);
CompilationUnit unit =
- _context.getResolvedCompilationUnit(librarySource, element);
+ context.getResolvedCompilationUnit(librarySource, element);
expect(unit, isNotNull);
int offset = oldCode.indexOf("int a") + 4;
String newCode = r'''
library lib;
part 'part.dart';
int ya = 0;''';
- expect(_getIncrementalAnalysisCache(_context), isNull);
- _context.setChangedContents(librarySource, newCode, offset, 0, 1);
- expect(_context.getContents(librarySource).data, newCode);
+ expect(_getIncrementalAnalysisCache(context), isNull);
+ context.setChangedContents(librarySource, newCode, offset, 0, 1);
+ expect(context.getContents(librarySource).data, newCode);
IncrementalAnalysisCache incrementalCache =
- _getIncrementalAnalysisCache(_context);
+ _getIncrementalAnalysisCache(context);
expect(incrementalCache.librarySource, librarySource);
expect(incrementalCache.resolvedUnit, same(unit));
- expect(_context.getResolvedCompilationUnit2(partSource, librarySource),
- isNull);
+ expect(
+ context.getResolvedCompilationUnit2(partSource, librarySource), isNull);
expect(incrementalCache.newContents, newCode);
return pumpEventQueue().then((_) {
listener.assertEvent(wereSourcesAdded: true);
@@ -1317,30 +910,28 @@
});
}
- void fail_setContents_unchanged_consistentModificationTime() {
+ void test_setContents_unchanged_consistentModificationTime() {
String contents = "// foo";
- Source source = _addSource("/test.dart", contents);
+ Source source = addSource("/test.dart", contents);
// do all, no tasks
_analyzeAll_assertFinished();
{
- AnalysisResult result = _context.performAnalysisTask();
+ AnalysisResult result = context.performAnalysisTask();
expect(result.changeNotices, isNull);
}
// set the same contents, still no tasks
- _context.setContents(source, contents);
+ context.setContents(source, contents);
{
- AnalysisResult result = _context.performAnalysisTask();
+ AnalysisResult result = context.performAnalysisTask();
expect(result.changeNotices, isNull);
}
}
void fail_unreadableSource() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source test1 = _addSource("/test1.dart", r'''
+ Source test1 = addSource("/test1.dart", r'''
import 'test2.dart';
library test1;''');
- Source test2 = _addSource("/test2.dart", r'''
+ Source test2 = addSource("/test2.dart", r'''
import 'test1.dart';
import 'test3.dart';
library test2;''');
@@ -1348,48 +939,27 @@
_analyzeAll_assertFinished();
// test1 and test2 should have been successfully analyzed
// despite the fact that test3 couldn't be read.
- expect(_context.computeLibraryElement(test1), isNotNull);
- expect(_context.computeLibraryElement(test2), isNotNull);
- expect(_context.computeLibraryElement(test3), isNull);
- }
-
- @override
- void setUp() {
- EnginePlugin enginePlugin = AnalysisEngine.instance.enginePlugin;
- if (enginePlugin.taskExtensionPoint == null) {
- ExtensionManager manager = new ExtensionManager();
- manager.processPlugins([enginePlugin]);
- }
-
- _context = new AnalysisContextImpl();
- _sourceFactory = new SourceFactory([
- new DartUriResolver(DirectoryBasedDartSdk.defaultSdk),
- new FileUriResolver()
- ]);
- _context.sourceFactory = _sourceFactory;
- AnalysisOptionsImpl options =
- new AnalysisOptionsImpl.con1(_context.analysisOptions);
- options.cacheSize = 256;
- _context.analysisOptions = options;
+ expect(context.computeLibraryElement(test1), isNotNull);
+ expect(context.computeLibraryElement(test2), isNotNull);
+ expect(context.computeLibraryElement(test3), isNull);
}
@override
void tearDown() {
- _context = null;
- _sourceFactory = null;
+ context = null;
+ sourceFactory = null;
super.tearDown();
}
Future test_applyChanges_add() {
SourcesChangedListener listener = new SourcesChangedListener();
- _context.onSourcesChanged.listen(listener.onData);
- expect(_context.sourcesNeedingProcessing.isEmpty, isTrue);
- Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ context.onSourcesChanged.listen(listener.onData);
+ expect(context.sourcesNeedingProcessing, isEmpty);
+ Source source = newSource('/test.dart');
ChangeSet changeSet = new ChangeSet();
changeSet.addedSource(source);
- _context.applyChanges(changeSet);
- expect(_context.sourcesNeedingProcessing.contains(source), isTrue);
+ context.applyChanges(changeSet);
+ expect(context.sourcesNeedingProcessing, contains(source));
return pumpEventQueue().then((_) {
listener.assertEvent(wereSourcesAdded: true);
listener.assertNoMoreEvents();
@@ -1398,20 +968,18 @@
Future test_applyChanges_change() {
SourcesChangedListener listener = new SourcesChangedListener();
- _context.onSourcesChanged.listen(listener.onData);
- expect(_context.sourcesNeedingProcessing.isEmpty, isTrue);
- Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ context.onSourcesChanged.listen(listener.onData);
+ expect(context.sourcesNeedingProcessing, isEmpty);
+ Source source = newSource('/test.dart');
ChangeSet changeSet1 = new ChangeSet();
changeSet1.addedSource(source);
- _context.applyChanges(changeSet1);
- expect(_context.sourcesNeedingProcessing.contains(source), isTrue);
- Source source2 =
- new FileBasedSource.con1(FileUtilities2.createFile("/test2.dart"));
+ context.applyChanges(changeSet1);
+ expect(context.sourcesNeedingProcessing, contains(source));
+ Source source2 = newSource('/test2.dart');
ChangeSet changeSet2 = new ChangeSet();
changeSet2.addedSource(source2);
changeSet2.changedSource(source);
- _context.applyChanges(changeSet2);
+ context.applyChanges(changeSet2);
return pumpEventQueue().then((_) {
listener.assertEvent(wereSourcesAdded: true);
listener.assertEvent(wereSourcesAdded: true, changedSources: [source]);
@@ -1421,20 +989,18 @@
Future test_applyChanges_change_content() {
SourcesChangedListener listener = new SourcesChangedListener();
- _context.onSourcesChanged.listen(listener.onData);
- expect(_context.sourcesNeedingProcessing.isEmpty, isTrue);
- Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ context.onSourcesChanged.listen(listener.onData);
+ expect(context.sourcesNeedingProcessing, isEmpty);
+ Source source = newSource('/test.dart');
ChangeSet changeSet1 = new ChangeSet();
changeSet1.addedSource(source);
- _context.applyChanges(changeSet1);
- expect(_context.sourcesNeedingProcessing.contains(source), isTrue);
- Source source2 =
- new FileBasedSource.con1(FileUtilities2.createFile("/test2.dart"));
+ context.applyChanges(changeSet1);
+ expect(context.sourcesNeedingProcessing, contains(source));
+ Source source2 = newSource('/test2.dart');
ChangeSet changeSet2 = new ChangeSet();
changeSet2.addedSource(source2);
changeSet2.changedContent(source, 'library test;');
- _context.applyChanges(changeSet2);
+ context.applyChanges(changeSet2);
return pumpEventQueue().then((_) {
listener.assertEvent(wereSourcesAdded: true);
listener.assertEvent(wereSourcesAdded: true, changedSources: [source]);
@@ -1443,48 +1009,44 @@
}
void test_applyChanges_change_flush_element() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source librarySource = _addSource("/lib.dart", r'''
+ Source librarySource = addSource("/lib.dart", r'''
library lib;
int a = 0;''');
- expect(_context.computeLibraryElement(librarySource), isNotNull);
- _context.setContents(librarySource, r'''
+ expect(context.computeLibraryElement(librarySource), isNotNull);
+ context.setContents(librarySource, r'''
library lib;
int aa = 0;''');
- expect(_context.getLibraryElement(librarySource), isNull);
+ expect(context.getLibraryElement(librarySource), isNull);
}
Future test_applyChanges_change_multiple() {
- _context = contextWithCore();
SourcesChangedListener listener = new SourcesChangedListener();
- _context.onSourcesChanged.listen(listener.onData);
- _sourceFactory = _context.sourceFactory;
+ context.onSourcesChanged.listen(listener.onData);
String libraryContents1 = r'''
library lib;
part 'part.dart';
int a = 0;''';
- Source librarySource = _addSource("/lib.dart", libraryContents1);
+ Source librarySource = addSource("/lib.dart", libraryContents1);
String partContents1 = r'''
part of lib;
int b = a;''';
- Source partSource = _addSource("/part.dart", partContents1);
- _context.computeLibraryElement(librarySource);
+ Source partSource = addSource("/part.dart", partContents1);
+ context.computeLibraryElement(librarySource);
String libraryContents2 = r'''
library lib;
part 'part.dart';
int aa = 0;''';
- _context.setContents(librarySource, libraryContents2);
+ context.setContents(librarySource, libraryContents2);
String partContents2 = r'''
part of lib;
int b = aa;''';
- _context.setContents(partSource, partContents2);
- _context.computeLibraryElement(librarySource);
+ context.setContents(partSource, partContents2);
+ context.computeLibraryElement(librarySource);
CompilationUnit libraryUnit =
- _context.resolveCompilationUnit2(librarySource, librarySource);
+ context.resolveCompilationUnit2(librarySource, librarySource);
expect(libraryUnit, isNotNull);
CompilationUnit partUnit =
- _context.resolveCompilationUnit2(partSource, librarySource);
+ context.resolveCompilationUnit2(partSource, librarySource);
expect(partUnit, isNotNull);
TopLevelVariableDeclaration declaration =
libraryUnit.declarations[0] as TopLevelVariableDeclaration;
@@ -1508,20 +1070,18 @@
Future test_applyChanges_change_range() {
SourcesChangedListener listener = new SourcesChangedListener();
- _context.onSourcesChanged.listen(listener.onData);
- expect(_context.sourcesNeedingProcessing.isEmpty, isTrue);
- Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ context.onSourcesChanged.listen(listener.onData);
+ expect(context.sourcesNeedingProcessing, isEmpty);
+ Source source = newSource('/test.dart');
ChangeSet changeSet1 = new ChangeSet();
changeSet1.addedSource(source);
- _context.applyChanges(changeSet1);
- expect(_context.sourcesNeedingProcessing.contains(source), isTrue);
- Source source2 =
- new FileBasedSource.con1(FileUtilities2.createFile("/test2.dart"));
+ context.applyChanges(changeSet1);
+ expect(context.sourcesNeedingProcessing, contains(source));
+ Source source2 = newSource('/test2.dart');
ChangeSet changeSet2 = new ChangeSet();
changeSet2.addedSource(source2);
changeSet2.changedRange(source, 'library test;', 0, 0, 13);
- _context.applyChanges(changeSet2);
+ context.applyChanges(changeSet2);
return pumpEventQueue().then((_) {
listener.assertEvent(wereSourcesAdded: true);
listener.assertEvent(wereSourcesAdded: true, changedSources: [source]);
@@ -1530,136 +1090,128 @@
}
void test_computeDocumentationComment_block() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
String comment = "/** Comment */";
- Source source = _addSource("/test.dart", """
+ Source source = addSource("/test.dart", """
$comment
class A {}""");
- LibraryElement libraryElement = _context.computeLibraryElement(source);
+ LibraryElement libraryElement = context.computeLibraryElement(source);
expect(libraryElement, isNotNull);
ClassElement classElement = libraryElement.definingCompilationUnit.types[0];
expect(libraryElement, isNotNull);
- expect(_context.computeDocumentationComment(classElement), comment);
+ expect(context.computeDocumentationComment(classElement), comment);
}
void test_computeDocumentationComment_none() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/test.dart", "class A {}");
- LibraryElement libraryElement = _context.computeLibraryElement(source);
+ Source source = addSource("/test.dart", "class A {}");
+ LibraryElement libraryElement = context.computeLibraryElement(source);
expect(libraryElement, isNotNull);
ClassElement classElement = libraryElement.definingCompilationUnit.types[0];
expect(libraryElement, isNotNull);
- expect(_context.computeDocumentationComment(classElement), isNull);
+ expect(context.computeDocumentationComment(classElement), isNull);
}
void test_computeDocumentationComment_null() {
- expect(_context.computeDocumentationComment(null), isNull);
+ expect(context.computeDocumentationComment(null), isNull);
}
void test_computeDocumentationComment_singleLine_multiple_EOL_n() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
String comment = "/// line 1\n/// line 2\n/// line 3\n";
- Source source = _addSource("/test.dart", "${comment}class A {}");
- LibraryElement libraryElement = _context.computeLibraryElement(source);
+ Source source = addSource("/test.dart", "${comment}class A {}");
+ LibraryElement libraryElement = context.computeLibraryElement(source);
expect(libraryElement, isNotNull);
ClassElement classElement = libraryElement.definingCompilationUnit.types[0];
expect(libraryElement, isNotNull);
- String actual = _context.computeDocumentationComment(classElement);
+ String actual = context.computeDocumentationComment(classElement);
expect(actual, "/// line 1\n/// line 2\n/// line 3");
}
void test_computeDocumentationComment_singleLine_multiple_EOL_rn() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
String comment = "/// line 1\r\n/// line 2\r\n/// line 3\r\n";
- Source source = _addSource("/test.dart", "${comment}class A {}");
- LibraryElement libraryElement = _context.computeLibraryElement(source);
+ Source source = addSource("/test.dart", "${comment}class A {}");
+ LibraryElement libraryElement = context.computeLibraryElement(source);
expect(libraryElement, isNotNull);
ClassElement classElement = libraryElement.definingCompilationUnit.types[0];
expect(libraryElement, isNotNull);
- String actual = _context.computeDocumentationComment(classElement);
+ String actual = context.computeDocumentationComment(classElement);
expect(actual, "/// line 1\n/// line 2\n/// line 3");
}
void test_computeExportedLibraries_none() {
- Source source = _addSource("/test.dart", "library test;");
- expect(_context.computeExportedLibraries(source), hasLength(0));
+ Source source = addSource("/test.dart", "library test;");
+ expect(context.computeExportedLibraries(source), hasLength(0));
}
void test_computeExportedLibraries_some() {
// addSource("/lib1.dart", "library lib1;");
// addSource("/lib2.dart", "library lib2;");
- Source source = _addSource(
+ Source source = addSource(
"/test.dart", "library test; export 'lib1.dart'; export 'lib2.dart';");
- expect(_context.computeExportedLibraries(source), hasLength(2));
+ expect(context.computeExportedLibraries(source), hasLength(2));
}
void test_computeHtmlElement_nonHtml() {
- Source source = _addSource("/test.dart", "library test;");
- expect(_context.computeHtmlElement(source), isNull);
+ Source source = addSource("/test.dart", "library test;");
+ expect(context.computeHtmlElement(source), isNull);
+ }
+
+ void test_computeKindOf_html() {
+ Source source = addSource("/test.html", "");
+ expect(context.computeKindOf(source), same(SourceKind.HTML));
}
void test_computeKindOf_library() {
- Source source = _addSource("/test.dart", "library lib;");
- expect(_context.computeKindOf(source), same(SourceKind.LIBRARY));
+ Source source = addSource("/test.dart", "library lib;");
+ expect(context.computeKindOf(source), same(SourceKind.LIBRARY));
}
void test_computeKindOf_libraryAndPart() {
- Source source = _addSource("/test.dart", "library lib; part of lib;");
- expect(_context.computeKindOf(source), same(SourceKind.LIBRARY));
+ Source source = addSource("/test.dart", "library lib; part of lib;");
+ expect(context.computeKindOf(source), same(SourceKind.LIBRARY));
}
void test_computeKindOf_part() {
- Source source = _addSource("/test.dart", "part of lib;");
- expect(_context.computeKindOf(source), same(SourceKind.PART));
+ Source source = addSource("/test.dart", "part of lib;");
+ expect(context.computeKindOf(source), same(SourceKind.PART));
}
void test_computeLibraryElement() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/test.dart", "library lib;");
- LibraryElement element = _context.computeLibraryElement(source);
+ Source source = addSource("/test.dart", "library lib;");
+ LibraryElement element = context.computeLibraryElement(source);
expect(element, isNotNull);
}
void test_computeLineInfo_dart() {
- Source source = _addSource("/test.dart", r'''
+ Source source = addSource("/test.dart", r'''
library lib;
main() {}''');
- LineInfo info = _context.computeLineInfo(source);
+ LineInfo info = context.computeLineInfo(source);
expect(info, isNotNull);
}
void test_computeLineInfo_html() {
- Source source = _addSource("/test.html", r'''
+ Source source = addSource("/test.html", r'''
<html>
<body>
<h1>A</h1>
</body>
</html>''');
- LineInfo info = _context.computeLineInfo(source);
+ LineInfo info = context.computeLineInfo(source);
expect(info, isNotNull);
}
Future test_computeResolvedCompilationUnitAsync_afterDispose() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/lib.dart", "library lib;");
+ Source source = addSource("/lib.dart", "library lib;");
// Complete all pending analysis tasks and flush the AST so that it won't
// be available immediately.
_performPendingAnalysisTasks();
- CacheEntry entry = _context.getReadableSourceEntryOrNull(source);
- entry.flushAstStructures();
+ _flushAst(source);
// Dispose of the context.
- _context.dispose();
+ context.dispose();
// Any attempt to start an asynchronous computation should return a future
// which completes with error.
CancelableFuture<CompilationUnit> future =
- _context.computeResolvedCompilationUnitAsync(source, source);
+ context.computeResolvedCompilationUnitAsync(source, source);
bool completed = false;
future.then((CompilationUnit unit) {
fail('Future should have completed with error');
@@ -1673,268 +1225,344 @@
}
void test_dispose() {
- expect(_context.isDisposed, isFalse);
- _context.dispose();
- expect(_context.isDisposed, isTrue);
+ expect(context.isDisposed, isFalse);
+ context.dispose();
+ expect(context.isDisposed, isTrue);
+ }
+
+ void test_ensureResolvedDartUnits_definingUnit_hasResolved() {
+ Source source = addSource('/test.dart', '');
+ LibrarySpecificUnit libTarget = new LibrarySpecificUnit(source, source);
+ analysisDriver.computeResult(libTarget, RESOLVED_UNIT);
+ CompilationUnit unit =
+ context.getCacheEntry(libTarget).getValue(RESOLVED_UNIT);
+ List<CompilationUnit> units = context.ensureResolvedDartUnits(source);
+ expect(units, unorderedEquals([unit]));
+ }
+
+ void test_ensureResolvedDartUnits_definingUnit_notResolved() {
+ Source source = addSource('/test.dart', '');
+ LibrarySpecificUnit libTarget = new LibrarySpecificUnit(source, source);
+ analysisDriver.computeResult(libTarget, RESOLVED_UNIT);
+ // flush
+ context.getCacheEntry(libTarget).setState(
+ RESOLVED_UNIT, CacheState.FLUSHED);
+ // schedule recomputing
+ List<CompilationUnit> units = context.ensureResolvedDartUnits(source);
+ expect(units, isNull);
+ // should be the next result to compute
+ TargetedResult nextResult = context.dartWorkManager.getNextResult();
+ expect(nextResult.target, libTarget);
+ expect(nextResult.result, RESOLVED_UNIT);
+ }
+
+ void test_ensureResolvedDartUnits_partUnit_notResolved() {
+ Source libSource1 = addSource('/lib1.dart', r'''
+library lib;
+part 'part.dart';
+''');
+ Source libSource2 = addSource('/lib2.dart', r'''
+library lib;
+part 'part.dart';
+''');
+ Source partSource = addSource('/part.dart', r'''
+part of lib;
+''');
+ LibrarySpecificUnit partTarget1 =
+ new LibrarySpecificUnit(libSource1, partSource);
+ LibrarySpecificUnit partTarget2 =
+ new LibrarySpecificUnit(libSource2, partSource);
+ analysisDriver.computeResult(partTarget1, RESOLVED_UNIT);
+ analysisDriver.computeResult(partTarget2, RESOLVED_UNIT);
+ // flush
+ context.getCacheEntry(partTarget1).setState(
+ RESOLVED_UNIT, CacheState.FLUSHED);
+ context.getCacheEntry(partTarget2).setState(
+ RESOLVED_UNIT, CacheState.FLUSHED);
+ // schedule recomputing
+ List<CompilationUnit> units = context.ensureResolvedDartUnits(partSource);
+ expect(units, isNull);
+ // should be the next result to compute
+ TargetedResult nextResult = context.dartWorkManager.getNextResult();
+ expect(nextResult.target, anyOf(partTarget1, partTarget2));
+ expect(nextResult.result, RESOLVED_UNIT);
+ }
+
+ void test_ensureResolvedDartUnits_partUnit_hasResolved() {
+ Source libSource1 = addSource('/lib1.dart', r'''
+library lib;
+part 'part.dart';
+''');
+ Source libSource2 = addSource('/lib2.dart', r'''
+library lib;
+part 'part.dart';
+''');
+ Source partSource = addSource('/part.dart', r'''
+part of lib;
+''');
+ LibrarySpecificUnit partTarget1 =
+ new LibrarySpecificUnit(libSource1, partSource);
+ LibrarySpecificUnit partTarget2 =
+ new LibrarySpecificUnit(libSource2, partSource);
+ analysisDriver.computeResult(partTarget1, RESOLVED_UNIT);
+ analysisDriver.computeResult(partTarget2, RESOLVED_UNIT);
+ CompilationUnit unit1 =
+ context.getCacheEntry(partTarget1).getValue(RESOLVED_UNIT);
+ CompilationUnit unit2 =
+ context.getCacheEntry(partTarget2).getValue(RESOLVED_UNIT);
+ List<CompilationUnit> units = context.ensureResolvedDartUnits(partSource);
+ expect(units, unorderedEquals([unit1, unit2]));
}
void test_exists_false() {
TestSource source = new TestSource();
source.exists2 = false;
- expect(_context.exists(source), isFalse);
+ expect(context.exists(source), isFalse);
}
void test_exists_null() {
- expect(_context.exists(null), isFalse);
+ expect(context.exists(null), isFalse);
}
void test_exists_overridden() {
Source source = new TestSource();
- _context.setContents(source, "");
- expect(_context.exists(source), isTrue);
+ context.setContents(source, "");
+ expect(context.exists(source), isTrue);
}
void test_exists_true() {
- expect(_context.exists(new AnalysisContextImplTest_Source_exists_true()),
+ expect(context.exists(new AnalysisContextImplTest_Source_exists_true()),
isTrue);
}
void test_getAnalysisOptions() {
- expect(_context.analysisOptions, isNotNull);
+ expect(context.analysisOptions, isNotNull);
}
void test_getContents_fromSource() {
String content = "library lib;";
TimestampedData<String> contents =
- _context.getContents(new TestSource('/test.dart', content));
+ context.getContents(new TestSource('/test.dart', content));
expect(contents.data.toString(), content);
}
void test_getContents_overridden() {
String content = "library lib;";
Source source = new TestSource();
- _context.setContents(source, content);
- TimestampedData<String> contents = _context.getContents(source);
+ context.setContents(source, content);
+ TimestampedData<String> contents = context.getContents(source);
expect(contents.data.toString(), content);
}
void test_getContents_unoverridden() {
String content = "library lib;";
Source source = new TestSource('/test.dart', content);
- _context.setContents(source, "part of lib;");
- _context.setContents(source, null);
- TimestampedData<String> contents = _context.getContents(source);
+ context.setContents(source, "part of lib;");
+ context.setContents(source, null);
+ TimestampedData<String> contents = context.getContents(source);
expect(contents.data.toString(), content);
}
void test_getDeclaredVariables() {
- _context = contextWithCore();
- expect(_context.declaredVariables, isNotNull);
+ expect(context.declaredVariables, isNotNull);
}
void test_getElement() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
LibraryElement core =
- _context.computeLibraryElement(_sourceFactory.forUri("dart:core"));
+ context.computeLibraryElement(sourceFactory.forUri("dart:core"));
expect(core, isNotNull);
ClassElement classObject =
_findClass(core.definingCompilationUnit, "Object");
expect(classObject, isNotNull);
ElementLocation location = classObject.location;
- Element element = _context.getElement(location);
+ Element element = context.getElement(location);
expect(element, same(classObject));
}
void test_getHtmlElement_dart() {
- Source source = _addSource("/test.dart", "");
- expect(_context.getHtmlElement(source), isNull);
- expect(_context.computeHtmlElement(source), isNull);
- expect(_context.getHtmlElement(source), isNull);
+ Source source = addSource("/test.dart", "");
+ expect(context.getHtmlElement(source), isNull);
+ expect(context.computeHtmlElement(source), isNull);
+ expect(context.getHtmlElement(source), isNull);
}
void test_getHtmlFilesReferencing_html() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source htmlSource = _addSource("/test.html", r'''
+ Source htmlSource = addSource("/test.html", r'''
<html><head>
<script type='application/dart' src='test.dart'/>
<script type='application/dart' src='test.js'/>
</head></html>''');
- Source librarySource = _addSource("/test.dart", "library lib;");
- Source secondHtmlSource = _addSource("/test.html", "<html></html>");
- _context.computeLibraryElement(librarySource);
- List<Source> result = _context.getHtmlFilesReferencing(secondHtmlSource);
+ Source librarySource = addSource("/test.dart", "library lib;");
+ Source secondHtmlSource = addSource("/test.html", "<html></html>");
+ context.computeLibraryElement(librarySource);
+ List<Source> result = context.getHtmlFilesReferencing(secondHtmlSource);
expect(result, hasLength(0));
- _context.parseHtmlUnit(htmlSource);
- result = _context.getHtmlFilesReferencing(secondHtmlSource);
+ context.parseHtmlUnit(htmlSource);
+ result = context.getHtmlFilesReferencing(secondHtmlSource);
expect(result, hasLength(0));
}
+ void test_getKindOf_html() {
+ Source source = addSource("/test.html", "");
+ expect(context.getKindOf(source), same(SourceKind.HTML));
+ }
+
void test_getKindOf_library() {
- Source source = _addSource("/test.dart", "library lib;");
- expect(_context.getKindOf(source), same(SourceKind.UNKNOWN));
- _context.computeKindOf(source);
- expect(_context.getKindOf(source), same(SourceKind.LIBRARY));
+ Source source = addSource("/test.dart", "library lib;");
+ expect(context.getKindOf(source), same(SourceKind.UNKNOWN));
+ context.computeKindOf(source);
+ expect(context.getKindOf(source), same(SourceKind.LIBRARY));
}
void test_getKindOf_part() {
- Source source = _addSource("/test.dart", "part of lib;");
- expect(_context.getKindOf(source), same(SourceKind.UNKNOWN));
- _context.computeKindOf(source);
- expect(_context.getKindOf(source), same(SourceKind.PART));
+ Source source = addSource("/test.dart", "part of lib;");
+ expect(context.getKindOf(source), same(SourceKind.UNKNOWN));
+ context.computeKindOf(source);
+ expect(context.getKindOf(source), same(SourceKind.PART));
}
void test_getKindOf_unknown() {
- Source source = _addSource("/test.css", "");
- expect(_context.getKindOf(source), same(SourceKind.UNKNOWN));
+ Source source = addSource("/test.css", "");
+ expect(context.getKindOf(source), same(SourceKind.UNKNOWN));
}
void test_getLaunchableClientLibrarySources_doesNotImportHtml() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/test.dart", r'''
+ Source source = addSource("/test.dart", r'''
main() {}''');
- _context.computeLibraryElement(source);
- List<Source> sources = _context.launchableClientLibrarySources;
+ context.computeLibraryElement(source);
+ List<Source> sources = context.launchableClientLibrarySources;
expect(sources, isEmpty);
}
void test_getLaunchableClientLibrarySources_importsHtml_explicitly() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- List<Source> sources = _context.launchableClientLibrarySources;
+ List<Source> sources = context.launchableClientLibrarySources;
expect(sources, isEmpty);
- Source source = _addSource("/test.dart", r'''
+ Source source = addSource("/test.dart", r'''
import 'dart:html';
main() {}''');
- _context.computeLibraryElement(source);
- sources = _context.launchableClientLibrarySources;
+ context.computeLibraryElement(source);
+ sources = context.launchableClientLibrarySources;
expect(sources, unorderedEquals([source]));
}
void test_getLaunchableClientLibrarySources_importsHtml_implicitly() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- List<Source> sources = _context.launchableClientLibrarySources;
+ List<Source> sources = context.launchableClientLibrarySources;
expect(sources, isEmpty);
- _addSource("/a.dart", r'''
+ addSource("/a.dart", r'''
import 'dart:html';
''');
- Source source = _addSource("/test.dart", r'''
+ Source source = addSource("/test.dart", r'''
import 'a.dart';
main() {}''');
- _context.computeLibraryElement(source);
- sources = _context.launchableClientLibrarySources;
+ context.computeLibraryElement(source);
+ sources = context.launchableClientLibrarySources;
expect(sources, unorderedEquals([source]));
}
void test_getLaunchableClientLibrarySources_importsHtml_implicitly2() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- List<Source> sources = _context.launchableClientLibrarySources;
+ List<Source> sources = context.launchableClientLibrarySources;
expect(sources, isEmpty);
- _addSource("/a.dart", r'''
+ addSource("/a.dart", r'''
export 'dart:html';
''');
- Source source = _addSource("/test.dart", r'''
+ Source source = addSource("/test.dart", r'''
import 'a.dart';
main() {}''');
- _context.computeLibraryElement(source);
- sources = _context.launchableClientLibrarySources;
+ context.computeLibraryElement(source);
+ sources = context.launchableClientLibrarySources;
expect(sources, unorderedEquals([source]));
}
void test_getLaunchableServerLibrarySources() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- expect(_context.launchableServerLibrarySources, isEmpty);
- Source source = _addSource("/test.dart", "main() {}");
- _context.computeLibraryElement(source);
- expect(_context.launchableServerLibrarySources, unorderedEquals([source]));
+ expect(context.launchableServerLibrarySources, isEmpty);
+ Source source = addSource("/test.dart", "main() {}");
+ context.computeLibraryElement(source);
+ expect(context.launchableServerLibrarySources, unorderedEquals([source]));
}
void test_getLaunchableServerLibrarySources_importsHtml_explicitly() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/test.dart", r'''
+ Source source = addSource("/test.dart", r'''
import 'dart:html';
main() {}
''');
- _context.computeLibraryElement(source);
- expect(_context.launchableServerLibrarySources, isEmpty);
+ context.computeLibraryElement(source);
+ expect(context.launchableServerLibrarySources, isEmpty);
}
void test_getLaunchableServerLibrarySources_importsHtml_implicitly() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- _addSource("/imports_html.dart", r'''
+ addSource("/imports_html.dart", r'''
import 'dart:html';
''');
- Source source = _addSource("/test.dart", r'''
+ Source source = addSource("/test.dart", r'''
import 'imports_html.dart';
main() {}''');
- _context.computeLibraryElement(source);
- expect(_context.launchableServerLibrarySources, isEmpty);
+ context.computeLibraryElement(source);
+ expect(context.launchableServerLibrarySources, isEmpty);
}
void test_getLaunchableServerLibrarySources_noMain() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/test.dart", '');
- _context.computeLibraryElement(source);
- expect(_context.launchableServerLibrarySources, isEmpty);
+ Source source = addSource("/test.dart", '');
+ context.computeLibraryElement(source);
+ expect(context.launchableServerLibrarySources, isEmpty);
+ }
+
+ void test_getLibrariesContaining() {
+ Source librarySource = addSource("/lib.dart", r'''
+library lib;
+part 'part.dart';''');
+ Source partSource = addSource("/part.dart", "part of lib;");
+ context.computeLibraryElement(librarySource);
+ List<Source> result = context.getLibrariesContaining(librarySource);
+ expect(result, hasLength(1));
+ expect(result[0], librarySource);
+ result = context.getLibrariesContaining(partSource);
+ expect(result, hasLength(1));
+ expect(result[0], librarySource);
}
void test_getLibrariesDependingOn() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source libASource = _addSource("/libA.dart", "library libA;");
- _addSource("/libB.dart", "library libB;");
- Source lib1Source = _addSource("/lib1.dart", r'''
+ Source libASource = addSource("/libA.dart", "library libA;");
+ addSource("/libB.dart", "library libB;");
+ Source lib1Source = addSource("/lib1.dart", r'''
library lib1;
import 'libA.dart';
export 'libB.dart';''');
- Source lib2Source = _addSource("/lib2.dart", r'''
+ Source lib2Source = addSource("/lib2.dart", r'''
library lib2;
import 'libB.dart';
export 'libA.dart';''');
- _context.computeLibraryElement(lib1Source);
- _context.computeLibraryElement(lib2Source);
- List<Source> result = _context.getLibrariesDependingOn(libASource);
+ context.computeLibraryElement(lib1Source);
+ context.computeLibraryElement(lib2Source);
+ List<Source> result = context.getLibrariesDependingOn(libASource);
expect(result, unorderedEquals([lib1Source, lib2Source]));
}
void test_getLibrariesReferencedFromHtml_no() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source htmlSource = _addSource("/test.html", r'''
+ Source htmlSource = addSource("/test.html", r'''
<html><head>
<script type='application/dart' src='test.js'/>
</head></html>''');
- _addSource("/test.dart", "library lib;");
- _context.parseHtmlUnit(htmlSource);
- List<Source> result = _context.getLibrariesReferencedFromHtml(htmlSource);
+ addSource("/test.dart", "library lib;");
+ context.parseHtmlUnit(htmlSource);
+ List<Source> result = context.getLibrariesReferencedFromHtml(htmlSource);
expect(result, hasLength(0));
}
void test_getLibraryElement() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/test.dart", "library lib;");
- LibraryElement element = _context.getLibraryElement(source);
+ Source source = addSource("/test.dart", "library lib;");
+ LibraryElement element = context.getLibraryElement(source);
expect(element, isNull);
- _context.computeLibraryElement(source);
- element = _context.getLibraryElement(source);
+ context.computeLibraryElement(source);
+ element = context.getLibraryElement(source);
expect(element, isNotNull);
}
void test_getLibrarySources() {
- List<Source> sources = _context.librarySources;
+ List<Source> sources = context.librarySources;
int originalLength = sources.length;
- Source source = _addSource("/test.dart", "library lib;");
- _context.computeKindOf(source);
- sources = _context.librarySources;
+ Source source = addSource("/test.dart", "library lib;");
+ context.computeKindOf(source);
+ sources = context.librarySources;
expect(sources, hasLength(originalLength + 1));
for (Source returnedSource in sources) {
if (returnedSource == source) {
@@ -1945,20 +1573,20 @@
}
void test_getLineInfo() {
- Source source = _addSource("/test.dart", r'''
+ Source source = addSource("/test.dart", r'''
library lib;
main() {}''');
- LineInfo info = _context.getLineInfo(source);
+ LineInfo info = context.getLineInfo(source);
expect(info, isNull);
- _context.parseCompilationUnit(source);
- info = _context.getLineInfo(source);
+ context.parseCompilationUnit(source);
+ info = context.getLineInfo(source);
expect(info, isNotNull);
}
void test_getModificationStamp_fromSource() {
int stamp = 42;
- expect(_context.getModificationStamp(
+ expect(context.getModificationStamp(
new AnalysisContextImplTest_Source_getModificationStamp_fromSource(
stamp)), stamp);
}
@@ -1968,49 +1596,41 @@
Source source =
new AnalysisContextImplTest_Source_getModificationStamp_overridden(
stamp);
- _context.setContents(source, "");
- expect(stamp != _context.getModificationStamp(source), isTrue);
+ context.setContents(source, "");
+ expect(stamp != context.getModificationStamp(source), isTrue);
}
void test_getPublicNamespace_element() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/test.dart", "class A {}");
- LibraryElement library = _context.computeLibraryElement(source);
+ Source source = addSource("/test.dart", "class A {}");
+ LibraryElement library = context.computeLibraryElement(source);
expect(library, isNotNull);
- Namespace namespace = _context.getPublicNamespace(library);
+ Namespace namespace = context.getPublicNamespace(library);
expect(namespace, isNotNull);
EngineTestCase.assertInstanceOf(
(obj) => obj is ClassElement, ClassElement, namespace.get("A"));
}
void test_getResolvedCompilationUnit_library_null() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/lib.dart", "library lib;");
- expect(_context.getResolvedCompilationUnit(source, null), isNull);
+ Source source = addSource("/lib.dart", "library lib;");
+ expect(context.getResolvedCompilationUnit(source, null), isNull);
}
void test_getResolvedCompilationUnit_source_dart() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/lib.dart", "library lib;");
- expect(_context.getResolvedCompilationUnit2(source, source), isNull);
- _context.resolveCompilationUnit2(source, source);
- expect(_context.getResolvedCompilationUnit2(source, source), isNotNull);
+ Source source = addSource("/lib.dart", "library lib;");
+ expect(context.getResolvedCompilationUnit2(source, source), isNull);
+ context.resolveCompilationUnit2(source, source);
+ expect(context.getResolvedCompilationUnit2(source, source), isNotNull);
}
void test_getResolvedCompilationUnit_source_html() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/test.html", "<html></html>");
- expect(_context.getResolvedCompilationUnit2(source, source), isNull);
- expect(_context.resolveCompilationUnit2(source, source), isNull);
- expect(_context.getResolvedCompilationUnit2(source, source), isNull);
+ Source source = addSource("/test.html", "<html></html>");
+ expect(context.getResolvedCompilationUnit2(source, source), isNull);
+ expect(context.resolveCompilationUnit2(source, source), isNull);
+ expect(context.getResolvedCompilationUnit2(source, source), isNull);
}
void test_getSourceFactory() {
- expect(_context.sourceFactory, same(_sourceFactory));
+ expect(context.sourceFactory, same(sourceFactory));
}
void test_getSourcesWithFullName() {
@@ -2028,13 +1648,12 @@
expected.add(source2);
changeSet.addedSource(source2);
- _context.applyChanges(changeSet);
- expect(
- _context.getSourcesWithFullName(filePath), unorderedEquals(expected));
+ context.applyChanges(changeSet);
+ expect(context.getSourcesWithFullName(filePath), unorderedEquals(expected));
}
void test_getStatistics() {
- AnalysisContextStatistics statistics = _context.statistics;
+ AnalysisContextStatistics statistics = context.statistics;
expect(statistics, isNotNull);
// The following lines are fragile.
// The values depend on the number of libraries in the SDK.
@@ -2044,48 +1663,44 @@
}
void test_isClientLibrary_dart() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/test.dart", r'''
+ Source source = addSource("/test.dart", r'''
import 'dart:html';
main() {}''');
- expect(_context.isClientLibrary(source), isFalse);
- expect(_context.isServerLibrary(source), isFalse);
- _context.computeLibraryElement(source);
- expect(_context.isClientLibrary(source), isTrue);
- expect(_context.isServerLibrary(source), isFalse);
+ expect(context.isClientLibrary(source), isFalse);
+ expect(context.isServerLibrary(source), isFalse);
+ context.computeLibraryElement(source);
+ expect(context.isClientLibrary(source), isTrue);
+ expect(context.isServerLibrary(source), isFalse);
}
void test_isClientLibrary_html() {
- Source source = _addSource("/test.html", "<html></html>");
- expect(_context.isClientLibrary(source), isFalse);
+ Source source = addSource("/test.html", "<html></html>");
+ expect(context.isClientLibrary(source), isFalse);
}
void test_isServerLibrary_dart() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/test.dart", r'''
+ Source source = addSource("/test.dart", r'''
library lib;
main() {}''');
- expect(_context.isClientLibrary(source), isFalse);
- expect(_context.isServerLibrary(source), isFalse);
- _context.computeLibraryElement(source);
- expect(_context.isClientLibrary(source), isFalse);
- expect(_context.isServerLibrary(source), isTrue);
+ expect(context.isClientLibrary(source), isFalse);
+ expect(context.isServerLibrary(source), isFalse);
+ context.computeLibraryElement(source);
+ expect(context.isClientLibrary(source), isFalse);
+ expect(context.isServerLibrary(source), isTrue);
}
void test_isServerLibrary_html() {
- Source source = _addSource("/test.html", "<html></html>");
- expect(_context.isServerLibrary(source), isFalse);
+ Source source = addSource("/test.html", "<html></html>");
+ expect(context.isServerLibrary(source), isFalse);
}
void test_parseCompilationUnit_errors() {
- Source source = _addSource("/lib.dart", "library {");
- CompilationUnit compilationUnit = _context.parseCompilationUnit(source);
+ Source source = addSource("/lib.dart", "library {");
+ CompilationUnit compilationUnit = context.parseCompilationUnit(source);
expect(compilationUnit, isNotNull);
- var errorInfo = _context.getErrors(source);
+ var errorInfo = context.getErrors(source);
expect(errorInfo, isNotNull);
List<AnalysisError> errors = errorInfo.errors;
expect(errors, isNotNull);
@@ -2095,7 +1710,7 @@
void test_parseCompilationUnit_exception() {
Source source = _addSourceWithException("/test.dart");
try {
- _context.parseCompilationUnit(source);
+ context.parseCompilationUnit(source);
fail("Expected AnalysisException");
} on AnalysisException {
// Expected
@@ -2103,19 +1718,30 @@
}
void test_parseCompilationUnit_html() {
- Source source = _addSource("/test.html", "<html></html>");
- expect(_context.parseCompilationUnit(source), isNull);
+ Source source = addSource("/test.html", "<html></html>");
+ expect(context.parseCompilationUnit(source), isNull);
}
void test_parseCompilationUnit_noErrors() {
- Source source = _addSource("/lib.dart", "library lib;");
- CompilationUnit compilationUnit = _context.parseCompilationUnit(source);
+ Source source = addSource("/lib.dart", "library lib;");
+ CompilationUnit compilationUnit = context.parseCompilationUnit(source);
expect(compilationUnit, isNotNull);
- AnalysisErrorInfo errorInfo = _context.getErrors(source);
+ AnalysisErrorInfo errorInfo = context.getErrors(source);
expect(errorInfo, isNotNull);
expect(errorInfo.errors, hasLength(0));
}
+ void test_parseCompilationUnit_nonExistentSource() {
+ Source source = newSource('/test.dart');
+ resourceProvider.deleteFile('/test.dart');
+ try {
+ context.parseCompilationUnit(source);
+ fail("Expected AnalysisException because file does not exist");
+ } on AnalysisException {
+ // Expected result
+ }
+ }
+
// void test_resolveCompilationUnit_sourceChangeDuringResolution() {
// _context = new _AnalysisContext_sourceChangeDuringResolution();
// AnalysisContextFactory.initContextWithCore(_context);
@@ -2127,17 +1753,6 @@
// expect(_context.getLineInfo(source), isNotNull);
// }
- void test_parseCompilationUnit_nonExistentSource() {
- Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
- try {
- _context.parseCompilationUnit(source);
- fail("Expected AnalysisException because file does not exist");
- } on AnalysisException {
- // Expected result
- }
- }
-
void test_performAnalysisTask_modifiedAfterParse() {
// TODO(scheglov) no threads in Dart
// Source source = _addSource("/test.dart", "library lib;");
@@ -2157,22 +1772,18 @@
}
void test_resolveCompilationUnit_library() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/lib.dart", "library lib;");
- LibraryElement library = _context.computeLibraryElement(source);
+ Source source = addSource("/lib.dart", "library lib;");
+ LibraryElement library = context.computeLibraryElement(source);
CompilationUnit compilationUnit =
- _context.resolveCompilationUnit(source, library);
+ context.resolveCompilationUnit(source, library);
expect(compilationUnit, isNotNull);
expect(compilationUnit.element, isNotNull);
}
void test_resolveCompilationUnit_source() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/lib.dart", "library lib;");
+ Source source = addSource("/lib.dart", "library lib;");
CompilationUnit compilationUnit =
- _context.resolveCompilationUnit2(source, source);
+ context.resolveCompilationUnit2(source, source);
expect(compilationUnit, isNotNull);
}
@@ -2181,70 +1792,66 @@
options.cacheSize = 42;
options.dart2jsHint = false;
options.hint = false;
- _context.analysisOptions = options;
- AnalysisOptions result = _context.analysisOptions;
+ context.analysisOptions = options;
+ AnalysisOptions result = context.analysisOptions;
expect(result.cacheSize, options.cacheSize);
expect(result.dart2jsHint, options.dart2jsHint);
expect(result.hint, options.hint);
}
void test_setAnalysisPriorityOrder_empty() {
- _context.analysisPriorityOrder = new List<Source>();
+ context.analysisPriorityOrder = new List<Source>();
}
void test_setAnalysisPriorityOrder_nonEmpty() {
List<Source> sources = new List<Source>();
- sources.add(_addSource("/lib.dart", "library lib;"));
- _context.analysisPriorityOrder = sources;
+ sources.add(addSource("/lib.dart", "library lib;"));
+ context.analysisPriorityOrder = sources;
}
void test_setChangedContents_notResolved() {
- _context = contextWithCore();
AnalysisOptionsImpl options =
- new AnalysisOptionsImpl.con1(_context.analysisOptions);
+ new AnalysisOptionsImpl.from(context.analysisOptions);
options.incremental = true;
- _context.analysisOptions = options;
- _sourceFactory = _context.sourceFactory;
+ context.analysisOptions = options;
String oldCode = r'''
library lib;
int a = 0;''';
- Source librarySource = _addSource("/lib.dart", oldCode);
+ Source librarySource = addSource("/lib.dart", oldCode);
int offset = oldCode.indexOf("int a") + 4;
String newCode = r'''
library lib;
int ya = 0;''';
- _context.setChangedContents(librarySource, newCode, offset, 0, 1);
- expect(_context.getContents(librarySource).data, newCode);
- expect(_getIncrementalAnalysisCache(_context), isNull);
+ context.setChangedContents(librarySource, newCode, offset, 0, 1);
+ expect(context.getContents(librarySource).data, newCode);
+ expect(_getIncrementalAnalysisCache(context), isNull);
}
Future test_setContents_libraryWithPart() {
- _context = contextWithCore();
SourcesChangedListener listener = new SourcesChangedListener();
- _context.onSourcesChanged.listen(listener.onData);
- _sourceFactory = _context.sourceFactory;
+ context.onSourcesChanged.listen(listener.onData);
String libraryContents1 = r'''
library lib;
part 'part.dart';
int a = 0;''';
- Source librarySource = _addSource("/lib.dart", libraryContents1);
+ Source librarySource = addSource("/lib.dart", libraryContents1);
String partContents1 = r'''
part of lib;
int b = a;''';
- Source partSource = _addSource("/part.dart", partContents1);
- _context.computeLibraryElement(librarySource);
+ Source partSource = addSource("/part.dart", partContents1);
+ context.computeLibraryElement(librarySource);
IncrementalAnalysisCache incrementalCache = new IncrementalAnalysisCache(
librarySource, librarySource, null, null, null, 0, 0, 0);
- _setIncrementalAnalysisCache(_context, incrementalCache);
- expect(_getIncrementalAnalysisCache(_context), same(incrementalCache));
+ _setIncrementalAnalysisCache(context, incrementalCache);
+ expect(_getIncrementalAnalysisCache(context), same(incrementalCache));
String libraryContents2 = r'''
library lib;
part 'part.dart';
int aa = 0;''';
- _context.setContents(librarySource, libraryContents2);
- expect(_context.getResolvedCompilationUnit2(partSource, librarySource),
- isNull);
- expect(_getIncrementalAnalysisCache(_context), isNull);
+ context.setContents(librarySource, libraryContents2);
+ expect(
+ context.getResolvedCompilationUnit2(partSource, librarySource), isNull);
+ expect(_getIncrementalAnalysisCache(context), isNull);
return pumpEventQueue().then((_) {
listener.assertEvent(wereSourcesAdded: true);
listener.assertEvent(changedSources: [librarySource]);
@@ -2256,54 +1863,48 @@
}
void test_setContents_null() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source librarySource = _addSource("/lib.dart", r'''
+ Source librarySource = addSource("/lib.dart", r'''
library lib;
int a = 0;''');
- _context.computeLibraryElement(librarySource);
+ context.computeLibraryElement(librarySource);
IncrementalAnalysisCache incrementalCache = new IncrementalAnalysisCache(
librarySource, librarySource, null, null, null, 0, 0, 0);
- _setIncrementalAnalysisCache(_context, incrementalCache);
- expect(_getIncrementalAnalysisCache(_context), same(incrementalCache));
- _context.setContents(librarySource, null);
- expect(_context.getResolvedCompilationUnit2(librarySource, librarySource),
+ _setIncrementalAnalysisCache(context, incrementalCache);
+ expect(_getIncrementalAnalysisCache(context), same(incrementalCache));
+ context.setContents(librarySource, null);
+ expect(context.getResolvedCompilationUnit2(librarySource, librarySource),
isNull);
- expect(_getIncrementalAnalysisCache(_context), isNull);
+ expect(_getIncrementalAnalysisCache(context), isNull);
}
void test_setSourceFactory() {
- expect(_context.sourceFactory, _sourceFactory);
+ expect(context.sourceFactory, sourceFactory);
SourceFactory factory = new SourceFactory([]);
- _context.sourceFactory = factory;
- expect(_context.sourceFactory, factory);
+ context.sourceFactory = factory;
+ expect(context.sourceFactory, factory);
}
void test_updateAnalysis() {
- expect(_context.sourcesNeedingProcessing.isEmpty, isTrue);
- Source source =
- new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
+ expect(context.sourcesNeedingProcessing, isEmpty);
+ Source source = newSource('/test.dart');
AnalysisDelta delta = new AnalysisDelta();
delta.setAnalysisLevel(source, AnalysisLevel.ALL);
- _context.applyAnalysisDelta(delta);
- expect(_context.sourcesNeedingProcessing.contains(source), isTrue);
+ context.applyAnalysisDelta(delta);
+ expect(context.sourcesNeedingProcessing, contains(source));
delta = new AnalysisDelta();
delta.setAnalysisLevel(source, AnalysisLevel.NONE);
- _context.applyAnalysisDelta(delta);
- expect(_context.sourcesNeedingProcessing.contains(source), isFalse);
+ context.applyAnalysisDelta(delta);
+ expect(context.sourcesNeedingProcessing.contains(source), isFalse);
}
Future xtest_computeResolvedCompilationUnitAsync() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/lib.dart", "library lib;");
+ Source source = addSource("/lib.dart", "library lib;");
// Complete all pending analysis tasks and flush the AST so that it won't
// be available immediately.
_performPendingAnalysisTasks();
- CacheEntry entry = _context.getReadableSourceEntryOrNull(source);
- entry.flushAstStructures();
+ _flushAst(source);
bool completed = false;
- _context
+ context
.computeResolvedCompilationUnitAsync(source, source)
.then((CompilationUnit unit) {
expect(unit, isNotNull);
@@ -2318,16 +1919,13 @@
}
Future xtest_computeResolvedCompilationUnitAsync_cancel() {
- _context = contextWithCore();
- _sourceFactory = _context.sourceFactory;
- Source source = _addSource("/lib.dart", "library lib;");
+ Source source = addSource("/lib.dart", "library lib;");
// Complete all pending analysis tasks and flush the AST so that it won't
// be available immediately.
_performPendingAnalysisTasks();
- CacheEntry entry = _context.getReadableSourceEntryOrNull(source);
- entry.flushAstStructures();
+ _flushAst(source);
CancelableFuture<CompilationUnit> future =
- _context.computeResolvedCompilationUnitAsync(source, source);
+ context.computeResolvedCompilationUnitAsync(source, source);
bool completed = false;
future.then((CompilationUnit unit) {
fail('Future should have been canceled');
@@ -2336,55 +1934,45 @@
completed = true;
});
expect(completed, isFalse);
- expect(_context.pendingFutureSources_forTesting, isNotEmpty);
+ expect(context.pendingFutureSources_forTesting, isNotEmpty);
future.cancel();
- expect(_context.pendingFutureSources_forTesting, isEmpty);
+ expect(context.pendingFutureSources_forTesting, isEmpty);
return pumpEventQueue().then((_) {
expect(completed, isTrue);
- expect(_context.pendingFutureSources_forTesting, isEmpty);
+ expect(context.pendingFutureSources_forTesting, isEmpty);
});
}
void xtest_performAnalysisTask_stress() {
int maxCacheSize = 4;
AnalysisOptionsImpl options =
- new AnalysisOptionsImpl.con1(_context.analysisOptions);
+ new AnalysisOptionsImpl.from(context.analysisOptions);
options.cacheSize = maxCacheSize;
- _context.analysisOptions = options;
+ context.analysisOptions = options;
int sourceCount = maxCacheSize + 2;
List<Source> sources = new List<Source>();
ChangeSet changeSet = new ChangeSet();
for (int i = 0; i < sourceCount; i++) {
- Source source = _addSource("/lib$i.dart", "library lib$i;");
+ Source source = addSource("/lib$i.dart", "library lib$i;");
sources.add(source);
changeSet.addedSource(source);
}
- _context.applyChanges(changeSet);
- _context.analysisPriorityOrder = sources;
+ context.applyChanges(changeSet);
+ context.analysisPriorityOrder = sources;
for (int i = 0; i < 1000; i++) {
- List<ChangeNotice> notice = _context.performAnalysisTask().changeNotices;
+ List<ChangeNotice> notice = context.performAnalysisTask().changeNotices;
if (notice == null) {
//System.out.println("test_performAnalysisTask_stress: " + i);
break;
}
}
- List<ChangeNotice> notice = _context.performAnalysisTask().changeNotices;
+ List<ChangeNotice> notice = context.performAnalysisTask().changeNotices;
if (notice != null) {
fail(
"performAnalysisTask failed to terminate after analyzing all sources");
}
}
- Source _addSource(String fileName, String contents) {
- Source source =
- new FileBasedSource.con1(FileUtilities2.createFile(fileName));
- ChangeSet changeSet = new ChangeSet();
- changeSet.addedSource(source);
- _context.applyChanges(changeSet);
- _context.setContents(source, contents);
- return source;
- }
-
TestSource _addSourceWithException(String fileName) {
return _addSourceWithException2(fileName, "");
}
@@ -2394,25 +1982,16 @@
source.generateExceptionOnRead = true;
ChangeSet changeSet = new ChangeSet();
changeSet.addedSource(source);
- _context.applyChanges(changeSet);
+ context.applyChanges(changeSet);
return source;
}
/**
- * Perform analysis tasks up to 512 times and asserts that that was enough.
+ * Perform analysis tasks up to 512 times and assert that it was enough.
*/
- void _analyzeAll_assertFinished() {
- _analyzeAll_assertFinished2(512);
- }
-
- /**
- * Perform analysis tasks up to the given number of times and asserts that that was enough.
- *
- * @param maxIterations the maximum number of tasks to perform
- */
- void _analyzeAll_assertFinished2(int maxIterations) {
+ void _analyzeAll_assertFinished([int maxIterations = 512]) {
for (int i = 0; i < maxIterations; i++) {
- List<ChangeNotice> notice = _context.performAnalysisTask().changeNotices;
+ List<ChangeNotice> notice = context.performAnalysisTask().changeNotices;
if (notice == null) {
return;
}
@@ -2424,7 +2003,7 @@
source.setContents(contents);
ChangeSet changeSet = new ChangeSet();
changeSet.changedSource(source);
- _context.applyChanges(changeSet);
+ context.applyChanges(changeSet);
}
/**
@@ -2444,6 +2023,12 @@
return null;
}
+ void _flushAst(Source source) {
+ CacheEntry entry = context
+ .getReadableSourceEntryOrNull(new LibrarySpecificUnit(source, source));
+ entry.setState(RESOLVED_UNIT, CacheState.FLUSHED);
+ }
+
IncrementalAnalysisCache _getIncrementalAnalysisCache(
AnalysisContextImpl context2) {
return context2.test_incrementalAnalysisCache;
@@ -2453,8 +2038,8 @@
return context2.test_priorityOrder;
}
- void _performPendingAnalysisTasks([int maxTasks = 20]) {
- for (int i = 0; _context.performAnalysisTask().hasMoreWork; i++) {
+ void _performPendingAnalysisTasks([int maxTasks = 512]) {
+ for (int i = 0; context.performAnalysisTask().hasMoreWork; i++) {
if (i > maxTasks) {
fail('Analysis did not terminate.');
}
@@ -2464,7 +2049,7 @@
void _removeSource(Source source) {
ChangeSet changeSet = new ChangeSet();
changeSet.removedSource(source);
- _context.applyChanges(changeSet);
+ context.applyChanges(changeSet);
}
void _setIncrementalAnalysisCache(
diff --git a/pkg/analyzer/test/src/task/dart_test.dart b/pkg/analyzer/test/src/task/dart_test.dart
index c2a5ea5..a2628ce 100644
--- a/pkg/analyzer/test/src/task/dart_test.dart
+++ b/pkg/analyzer/test/src/task/dart_test.dart
@@ -6,6 +6,7 @@
import 'package:analyzer/src/context/cache.dart';
import 'package:analyzer/src/generated/ast.dart';
+import 'package:analyzer/src/generated/constant.dart';
import 'package:analyzer/src/generated/element.dart';
import 'package:analyzer/src/generated/error.dart';
import 'package:analyzer/src/generated/resolver.dart';
@@ -33,9 +34,16 @@
runReflectiveTests(BuildLibraryElementTaskTest);
runReflectiveTests(BuildPublicNamespaceTaskTest);
runReflectiveTests(BuildTypeProviderTaskTest);
+ runReflectiveTests(ComputeConstantDependenciesTaskTest);
+ runReflectiveTests(ComputeConstantValueTaskTest);
+ runReflectiveTests(ContainingLibrariesTaskTest);
+ runReflectiveTests(DartErrorsTaskTest);
+ runReflectiveTests(EvaluateUnitConstantsTaskTest);
runReflectiveTests(GatherUsedImportedElementsTaskTest);
runReflectiveTests(GatherUsedLocalElementsTaskTest);
runReflectiveTests(GenerateHintsTaskTest);
+ runReflectiveTests(LibraryErrorsReadyTaskTest);
+ runReflectiveTests(LibraryUnitErrorsTaskTest);
runReflectiveTests(ParseDartTaskTest);
runReflectiveTests(ResolveUnitTypeNamesTaskTest);
runReflectiveTests(ResolveLibraryTypeNamesTaskTest);
@@ -153,6 +161,8 @@
@reflectiveTest
class BuildCompilationUnitElementTaskTest extends _AbstractDartTaskTest {
+ Source source;
+
test_buildInputs() {
LibrarySpecificUnit target =
new LibrarySpecificUnit(emptySource, emptySource);
@@ -190,6 +200,35 @@
expect(descriptor, isNotNull);
}
+ test_perform_find_constants() {
+ _performBuildTask('''
+const x = 1;
+class C {
+ static const y = 1;
+ const C([p = 1]);
+}
+@x
+f() {
+ const z = 1;
+}
+''');
+ CompilationUnit unit = outputs[RESOLVED_UNIT1];
+ CompilationUnitElement unitElement = outputs[COMPILATION_UNIT_ELEMENT];
+ Annotation annotation = unit.declarations
+ .firstWhere((m) => m is FunctionDeclaration).metadata[0];
+ List<ConstantEvaluationTarget> expectedConstants = [
+ unitElement.accessors.firstWhere((e) => e.isGetter).variable,
+ unitElement.types[0].fields[0],
+ unitElement.functions[0].localVariables[0],
+ unitElement.types[0].constructors[0],
+ new ConstantEvaluationTarget_Annotation(
+ context, source, source, annotation),
+ unitElement.types[0].constructors[0].parameters[0]
+ ];
+ expect(
+ outputs[COMPILATION_UNIT_CONSTANTS].toSet(), expectedConstants.toSet());
+ }
+
test_perform_library() {
_performBuildTask(r'''
library lib;
@@ -200,13 +239,13 @@
class B = Object with A;
''');
expect(outputs, hasLength(3));
- expect(outputs[CLASS_ELEMENTS], hasLength(2));
expect(outputs[COMPILATION_UNIT_ELEMENT], isNotNull);
expect(outputs[RESOLVED_UNIT1], isNotNull);
+ expect(outputs[COMPILATION_UNIT_CONSTANTS], isNotNull);
}
void _performBuildTask(String content) {
- Source source = newSource('/test.dart', content);
+ source = newSource('/test.dart', content);
AnalysisTarget target = new LibrarySpecificUnit(source, source);
_computeResult(target, RESOLVED_UNIT1);
expect(task, new isInstanceOf<BuildCompilationUnitElementTask>());
@@ -1156,6 +1195,385 @@
}
@reflectiveTest
+class ComputeConstantDependenciesTaskTest extends _AbstractDartTaskTest {
+ Annotation findClassAnnotation(CompilationUnit unit, String className) {
+ for (CompilationUnitMember member in unit.declarations) {
+ if (member is ClassDeclaration && member.name.name == className) {
+ expect(member.metadata, hasLength(1));
+ return member.metadata[0];
+ }
+ }
+ fail('Annotation not found');
+ return null;
+ }
+
+ test_annotation_with_args() {
+ Source source = newSource('/test.dart', '''
+const x = 1;
+@D(x) class C {}
+class D { const D(value); }
+''');
+ // First compute the resolved unit for the source.
+ LibrarySpecificUnit librarySpecificUnit =
+ new LibrarySpecificUnit(source, source);
+ _computeResult(librarySpecificUnit, RESOLVED_UNIT1);
+ CompilationUnit unit = outputs[RESOLVED_UNIT1];
+ // Find the elements for x and D's constructor, and the annotation on C.
+ List<PropertyAccessorElement> accessors = unit.element.accessors;
+ Element x = accessors.firstWhere((PropertyAccessorElement accessor) =>
+ accessor.isGetter && accessor.name == 'x').variable;
+ List<ClassElement> types = unit.element.types;
+ Element constructorForD =
+ types.firstWhere((ClassElement cls) => cls.name == 'D').constructors[0];
+ Annotation annotation = findClassAnnotation(unit, 'C');
+ // Now compute the dependencies for the annotation, and check that it is
+ // the set [x, constructorForD].
+ // TODO(paulberry): test librarySource != source
+ _computeResult(new ConstantEvaluationTarget_Annotation(
+ context, source, source, annotation), CONSTANT_DEPENDENCIES);
+ expect(
+ outputs[CONSTANT_DEPENDENCIES].toSet(), [x, constructorForD].toSet());
+ }
+
+ test_annotation_without_args() {
+ Source source = newSource('/test.dart', '''
+const x = 1;
+@x class C {}
+''');
+ // First compute the resolved unit for the source.
+ LibrarySpecificUnit librarySpecificUnit =
+ new LibrarySpecificUnit(source, source);
+ _computeResult(librarySpecificUnit, RESOLVED_UNIT1);
+ CompilationUnit unit = outputs[RESOLVED_UNIT1];
+ // Find the element for x and the annotation on C.
+ List<PropertyAccessorElement> accessors = unit.element.accessors;
+ Element x = accessors.firstWhere((PropertyAccessorElement accessor) =>
+ accessor.isGetter && accessor.name == 'x').variable;
+ Annotation annotation = findClassAnnotation(unit, 'C');
+ // Now compute the dependencies for the annotation, and check that it is
+ // the list [x].
+ _computeResult(new ConstantEvaluationTarget_Annotation(
+ context, source, source, annotation), CONSTANT_DEPENDENCIES);
+ expect(outputs[CONSTANT_DEPENDENCIES], [x]);
+ }
+
+ test_perform() {
+ Source source = newSource('/test.dart', '''
+const x = y;
+const y = 1;
+''');
+ // First compute the resolved unit for the source.
+ LibrarySpecificUnit librarySpecificUnit =
+ new LibrarySpecificUnit(source, source);
+ _computeResult(librarySpecificUnit, RESOLVED_UNIT1);
+ CompilationUnit unit = outputs[RESOLVED_UNIT1];
+ // Find the elements for the constants x and y.
+ List<PropertyAccessorElement> accessors = unit.element.accessors;
+ Element x = accessors.firstWhere((PropertyAccessorElement accessor) =>
+ accessor.isGetter && accessor.name == 'x').variable;
+ Element y = accessors.firstWhere((PropertyAccessorElement accessor) =>
+ accessor.isGetter && accessor.name == 'y').variable;
+ // Now compute the dependencies for x, and check that it is the list [y].
+ _computeResult(x, CONSTANT_DEPENDENCIES);
+ expect(outputs[CONSTANT_DEPENDENCIES], [y]);
+ }
+}
+
+@reflectiveTest
+class ComputeConstantValueTaskTest extends _AbstractDartTaskTest {
+ EvaluationResultImpl computeClassAnnotation(
+ Source source, CompilationUnit unit, String className) {
+ for (CompilationUnitMember member in unit.declarations) {
+ if (member is ClassDeclaration && member.name.name == className) {
+ expect(member.metadata, hasLength(1));
+ Annotation annotation = member.metadata[0];
+ ConstantEvaluationTarget_Annotation target =
+ new ConstantEvaluationTarget_Annotation(
+ context, source, source, annotation);
+ _computeResult(target, CONSTANT_VALUE);
+ expect(outputs[CONSTANT_VALUE], same(target));
+ EvaluationResultImpl evaluationResult =
+ (annotation.elementAnnotation as ElementAnnotationImpl).evaluationResult;
+ return evaluationResult;
+ }
+ }
+ fail('Annotation not found');
+ return null;
+ }
+
+ fail_circular_reference() {
+ // TODO(paulberry): get this to work.
+ EvaluationResultImpl evaluationResult = _computeTopLevelVariableConstValue(
+ 'x', '''
+const x = y + 1;
+const y = x + 1;
+''');
+ expect(evaluationResult, isNotNull);
+ expect(evaluationResult.value, isNull);
+ expect(evaluationResult.errors, hasLength(1));
+ expect(evaluationResult.errors[0].errorCode,
+ CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT);
+ }
+
+ test_annotation_with_args() {
+ Source source = newSource('/test.dart', '''
+const x = 1;
+@D(x) class C {}
+class D {
+ const D(this.value);
+ final value;
+}
+''');
+ // First compute the resolved unit for the source.
+ LibrarySpecificUnit librarySpecificUnit =
+ new LibrarySpecificUnit(source, source);
+ _computeResult(librarySpecificUnit, RESOLVED_UNIT1);
+ CompilationUnit unit = outputs[RESOLVED_UNIT1];
+ // Compute the constant value of the annotation on C.
+ EvaluationResultImpl evaluationResult =
+ computeClassAnnotation(source, unit, 'C');
+ // And check that it has the expected value.
+ expect(evaluationResult, isNotNull);
+ expect(evaluationResult.value, isNotNull);
+ expect(evaluationResult.value.type, isNotNull);
+ expect(evaluationResult.value.type.name, 'D');
+ expect(evaluationResult.value.fields, contains('value'));
+ expect(evaluationResult.value.fields['value'].intValue, 1);
+ }
+
+ test_annotation_without_args() {
+ Source source = newSource('/test.dart', '''
+const x = 1;
+@x class C {}
+''');
+ // First compute the resolved unit for the source.
+ LibrarySpecificUnit librarySpecificUnit =
+ new LibrarySpecificUnit(source, source);
+ _computeResult(librarySpecificUnit, RESOLVED_UNIT1);
+ CompilationUnit unit = outputs[RESOLVED_UNIT1];
+ // Compute the constant value of the annotation on C.
+ EvaluationResultImpl evaluationResult =
+ computeClassAnnotation(source, unit, 'C');
+ // And check that it has the expected value.
+ expect(evaluationResult, isNotNull);
+ expect(evaluationResult.value, isNotNull);
+ expect(evaluationResult.value.intValue, 1);
+ }
+
+ test_dependency() {
+ EvaluationResultImpl evaluationResult = _computeTopLevelVariableConstValue(
+ 'x', '''
+const x = y + 1;
+const y = 1;
+''');
+ expect(evaluationResult, isNotNull);
+ expect(evaluationResult.value, isNotNull);
+ expect(evaluationResult.value.intValue, 2);
+ }
+
+ test_simple_constant() {
+ EvaluationResultImpl evaluationResult = _computeTopLevelVariableConstValue(
+ 'x', '''
+const x = 1;
+''');
+ expect(evaluationResult, isNotNull);
+ expect(evaluationResult.value, isNotNull);
+ expect(evaluationResult.value.intValue, 1);
+ }
+
+ EvaluationResultImpl _computeTopLevelVariableConstValue(
+ String variableName, String content) {
+ Source source = newSource('/test.dart', content);
+ // First compute the resolved unit for the source.
+ LibrarySpecificUnit librarySpecificUnit =
+ new LibrarySpecificUnit(source, source);
+ _computeResult(librarySpecificUnit, RESOLVED_UNIT1);
+ CompilationUnit unit = outputs[RESOLVED_UNIT1];
+ // Find the element for the given constant.
+ List<PropertyAccessorElement> accessors = unit.element.accessors;
+ Element variableElement = accessors
+ .firstWhere((PropertyAccessorElement accessor) {
+ return accessor.isGetter && accessor.name == variableName;
+ }).variable;
+ // Now compute the value of the constant.
+ _computeResult(variableElement, CONSTANT_VALUE);
+ expect(outputs[CONSTANT_VALUE], same(variableElement));
+ EvaluationResultImpl evaluationResult =
+ (variableElement as TopLevelVariableElementImpl).evaluationResult;
+ return evaluationResult;
+ }
+}
+
+@reflectiveTest
+class ContainingLibrariesTaskTest extends _AbstractDartTaskTest {
+ test_buildInputs() {
+ Map<String, TaskInput> inputs =
+ ContainingLibrariesTask.buildInputs(emptySource);
+ expect(inputs, isNotNull);
+ expect(inputs, isEmpty);
+ }
+
+ test_constructor() {
+ ContainingLibrariesTask task =
+ new ContainingLibrariesTask(context, emptySource);
+ expect(task, isNotNull);
+ expect(task.context, context);
+ expect(task.target, emptySource);
+ }
+
+ test_createTask() {
+ ContainingLibrariesTask task =
+ ContainingLibrariesTask.createTask(context, emptySource);
+ expect(task, isNotNull);
+ expect(task.context, context);
+ expect(task.target, emptySource);
+ }
+
+ test_description() {
+ ContainingLibrariesTask task =
+ new ContainingLibrariesTask(null, emptySource);
+ expect(task.description, isNotNull);
+ }
+
+ test_descriptor() {
+ TaskDescriptor descriptor = ContainingLibrariesTask.DESCRIPTOR;
+ expect(descriptor, isNotNull);
+ }
+
+ test_perform_definingCompilationUnit() {
+ AnalysisTarget library = newSource('/test.dart', 'library test;');
+ _computeResult(library, INCLUDED_PARTS);
+ _computeResult(library, CONTAINING_LIBRARIES);
+ expect(task, new isInstanceOf<ContainingLibrariesTask>());
+ expect(outputs, hasLength(1));
+ List<Source> containingLibraries = outputs[CONTAINING_LIBRARIES];
+ expect(containingLibraries, unorderedEquals([library]));
+ }
+
+ test_perform_partInMultipleLibraries() {
+ AnalysisTarget library1 =
+ newSource('/lib1.dart', 'library test; part "part.dart";');
+ AnalysisTarget library2 =
+ newSource('/lib2.dart', 'library test; part "part.dart";');
+ AnalysisTarget part = newSource('/part.dart', 'part of test;');
+ _computeResult(library1, INCLUDED_PARTS);
+ _computeResult(library2, INCLUDED_PARTS);
+ _computeResult(part, SOURCE_KIND);
+ _computeResult(part, CONTAINING_LIBRARIES);
+ expect(task, new isInstanceOf<ContainingLibrariesTask>());
+ expect(outputs, hasLength(1));
+ List<Source> containingLibraries = outputs[CONTAINING_LIBRARIES];
+ expect(containingLibraries, unorderedEquals([library1, library2]));
+ }
+
+ test_perform_partInSingleLibrary() {
+ AnalysisTarget library =
+ newSource('/lib.dart', 'library test; part "part.dart";');
+ AnalysisTarget part = newSource('/part.dart', 'part of test;');
+ _computeResult(library, INCLUDED_PARTS);
+ _computeResult(part, SOURCE_KIND);
+ _computeResult(part, CONTAINING_LIBRARIES);
+ expect(task, new isInstanceOf<ContainingLibrariesTask>());
+ expect(outputs, hasLength(1));
+ List<Source> containingLibraries = outputs[CONTAINING_LIBRARIES];
+ expect(containingLibraries, unorderedEquals([library]));
+ }
+}
+
+@reflectiveTest
+class DartErrorsTaskTest extends _AbstractDartTaskTest {
+ test_buildInputs() {
+ Map<String, TaskInput> inputs = DartErrorsTask.buildInputs(emptySource);
+ expect(inputs, isNotNull);
+ expect(inputs.keys, unorderedEquals([
+ DartErrorsTask.BUILD_DIRECTIVES_ERRORS_INPUT,
+ DartErrorsTask.BUILD_LIBRARY_ERRORS_INPUT,
+ DartErrorsTask.PARSE_ERRORS_INPUT,
+ DartErrorsTask.SCAN_ERRORS_INPUT,
+ DartErrorsTask.LIBRARY_UNIT_ERRORS_INPUT
+ ]));
+ }
+
+ test_constructor() {
+ DartErrorsTask task = new DartErrorsTask(context, emptySource);
+ expect(task, isNotNull);
+ expect(task.context, context);
+ expect(task.target, emptySource);
+ }
+
+ test_createTask() {
+ DartErrorsTask task = DartErrorsTask.createTask(context, emptySource);
+ expect(task, isNotNull);
+ expect(task.context, context);
+ expect(task.target, emptySource);
+ }
+
+ test_description() {
+ DartErrorsTask task = new DartErrorsTask(null, emptySource);
+ expect(task.description, isNotNull);
+ }
+
+ test_descriptor() {
+ TaskDescriptor descriptor = DartErrorsTask.DESCRIPTOR;
+ expect(descriptor, isNotNull);
+ }
+
+ test_perform_definingCompilationUnit() {
+ AnalysisTarget library =
+ newSource('/test.dart', 'library test; import "dart:math";');
+ _computeResult(library, INCLUDED_PARTS);
+ _computeResult(library, DART_ERRORS);
+ expect(task, new isInstanceOf<DartErrorsTask>());
+ expect(outputs, hasLength(1));
+ List<AnalysisError> errors = outputs[DART_ERRORS];
+ expect(errors, hasLength(1));
+ }
+
+ test_perform_partInSingleLibrary() {
+ AnalysisTarget library = newSource(
+ '/lib.dart', 'library test; import "dart:math"; part "part.dart";');
+ AnalysisTarget part =
+ newSource('/part.dart', 'part of test; class A extends A {}');
+ _computeResult(library, INCLUDED_PARTS);
+ _computeResult(library, DART_ERRORS);
+ _computeResult(part, DART_ERRORS);
+ expect(task, new isInstanceOf<DartErrorsTask>());
+ expect(outputs, hasLength(1));
+ List<AnalysisError> errors = outputs[DART_ERRORS];
+ // This should contain only the errors in the part file, not the ones in the
+ // library.
+ expect(errors, hasLength(1));
+ }
+}
+
+@reflectiveTest
+class EvaluateUnitConstantsTaskTest extends _AbstractDartTaskTest {
+ test_perform() {
+ Source source = newSource('/test.dart', '''
+class C {
+ const C();
+}
+
+@x
+f() {}
+
+const x = const C();
+''');
+ LibrarySpecificUnit target = new LibrarySpecificUnit(source, source);
+ _computeResult(target, CONSTANT_RESOLVED_UNIT);
+ expect(task, new isInstanceOf<EvaluateUnitConstantsTask>());
+ CompilationUnit unit = outputs[CONSTANT_RESOLVED_UNIT];
+ CompilationUnitElement unitElement = unit.element;
+ expect((unitElement.types[0].constructors[
+ 0] as ConstructorElementImpl).isCycleFree, isTrue);
+ expect((unitElement.functions[0].metadata[
+ 0] as ElementAnnotationImpl).evaluationResult, isNotNull);
+ expect((unitElement.topLevelVariables[
+ 0] as TopLevelVariableElementImpl).evaluationResult, isNotNull);
+ }
+}
+
+@reflectiveTest
class GatherUsedImportedElementsTaskTest extends _AbstractDartTaskTest {
UsedImportedElements usedElements;
Set<String> usedElementNames;
@@ -1431,6 +1849,98 @@
}
@reflectiveTest
+class LibraryErrorsReadyTaskTest extends _AbstractDartTaskTest {
+ test_perform() {
+ Source library = newSource('/lib.dart', r'''
+library lib;
+part 'part1.dart';
+part 'part2.dart';
+X v1;
+''');
+ Source part1 = newSource('/part1.dart', r'''
+part of lib;
+X v2;
+''');
+ Source part2 = newSource('/part2.dart', r'''
+part of lib;
+X v3;
+''');
+ _computeResult(library, LIBRARY_ERRORS_READY);
+ expect(task, new isInstanceOf<LibraryErrorsReadyTask>());
+ expect(outputs, hasLength(1));
+ bool ready = outputs[LIBRARY_ERRORS_READY];
+ expect(ready, isTrue);
+ expect(context.getErrors(library).errors, hasLength(1));
+ expect(context.getErrors(part1).errors, hasLength(1));
+ expect(context.getErrors(part2).errors, hasLength(1));
+ }
+}
+
+@reflectiveTest
+class LibraryUnitErrorsTaskTest extends _AbstractDartTaskTest {
+ test_buildInputs() {
+ Map<String, TaskInput> inputs = LibraryUnitErrorsTask
+ .buildInputs(new LibrarySpecificUnit(emptySource, emptySource));
+ expect(inputs, isNotNull);
+ expect(inputs.keys, unorderedEquals([
+ LibraryUnitErrorsTask.BUILD_FUNCTION_TYPE_ALIASES_ERRORS_INPUT,
+ LibraryUnitErrorsTask.HINTS_INPUT,
+ LibraryUnitErrorsTask.RESOLVE_REFERENCES_ERRORS_INPUT,
+ LibraryUnitErrorsTask.RESOLVE_TYPE_NAMES_ERRORS_INPUT,
+ LibraryUnitErrorsTask.VERIFY_ERRORS_INPUT
+ ]));
+ }
+
+ test_constructor() {
+ LibraryUnitErrorsTask task =
+ new LibraryUnitErrorsTask(context, emptySource);
+ expect(task, isNotNull);
+ expect(task.context, context);
+ expect(task.target, emptySource);
+ }
+
+ test_createTask() {
+ LibraryUnitErrorsTask task =
+ LibraryUnitErrorsTask.createTask(context, emptySource);
+ expect(task, isNotNull);
+ expect(task.context, context);
+ expect(task.target, emptySource);
+ }
+
+ test_description() {
+ LibraryUnitErrorsTask task = new LibraryUnitErrorsTask(null, emptySource);
+ expect(task.description, isNotNull);
+ }
+
+ test_descriptor() {
+ TaskDescriptor descriptor = LibraryUnitErrorsTask.DESCRIPTOR;
+ expect(descriptor, isNotNull);
+ }
+
+ test_perform_definingCompilationUnit() {
+ AnalysisTarget library =
+ newSource('/test.dart', 'library test; import "dart:math";');
+ _computeResult(
+ new LibrarySpecificUnit(library, library), LIBRARY_UNIT_ERRORS);
+ expect(task, new isInstanceOf<LibraryUnitErrorsTask>());
+ expect(outputs, hasLength(1));
+ List<AnalysisError> errors = outputs[LIBRARY_UNIT_ERRORS];
+ expect(errors, hasLength(1));
+ }
+
+ test_perform_partInSingleLibrary() {
+ AnalysisTarget library =
+ newSource('/lib.dart', 'library test; part "part.dart";');
+ AnalysisTarget part = newSource('/part.dart', 'part of test;');
+ _computeResult(new LibrarySpecificUnit(library, part), LIBRARY_UNIT_ERRORS);
+ expect(task, new isInstanceOf<LibraryUnitErrorsTask>());
+ expect(outputs, hasLength(1));
+ List<AnalysisError> errors = outputs[LIBRARY_UNIT_ERRORS];
+ expect(errors, hasLength(0));
+ }
+}
+
+@reflectiveTest
class ParseDartTaskTest extends _AbstractDartTaskTest {
test_buildInputs() {
Map<String, TaskInput> inputs = ParseDartTask.buildInputs(emptySource);
@@ -1469,7 +1979,8 @@
_performParseTask(r'''
part of lib;
class B {}''');
- expect(outputs, hasLength(7));
+ expect(outputs, hasLength(8));
+ expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(0));
expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
_assertHasCore(outputs[IMPORTED_LIBRARIES], 1);
expect(outputs[INCLUDED_PARTS], hasLength(0));
@@ -1487,7 +1998,8 @@
export '${a}lib3.dart';
part 'part.dart';
class A {}''');
- expect(outputs, hasLength(7));
+ expect(outputs, hasLength(8));
+ expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(1));
expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
_assertHasCore(outputs[IMPORTED_LIBRARIES], 2);
expect(outputs[INCLUDED_PARTS], hasLength(1));
@@ -1504,7 +2016,8 @@
export 'lib3.dart';
part 'part.dart';
class A {''');
- expect(outputs, hasLength(7));
+ expect(outputs, hasLength(8));
+ expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(1));
expect(outputs[EXPORTED_LIBRARIES], hasLength(1));
_assertHasCore(outputs[IMPORTED_LIBRARIES], 2);
expect(outputs[INCLUDED_PARTS], hasLength(1));
@@ -1514,25 +2027,6 @@
expect(outputs[UNITS], hasLength(2));
}
- test_perform_useMemento() {
- String content = r'''
-library lib;
-import 'lib2.dart';
-export 'lib3.dart';
-part 'part.dart';
-class A {''';
- AnalysisTarget target = newSource('/test.dart', content);
- _computeResult(target, PARSED_UNIT);
- // update content
- context.setContents(target, content);
- assertIsInvalid(target, PARSED_UNIT);
- // recompute
- _computeResult(target, PARSED_UNIT);
- assertIsValid(target, PARSED_UNIT);
- // values from the memento are returned
- assertSameResults(ParseDartTask.DESCRIPTOR.results);
- }
-
void _performParseTask(String content) {
AnalysisTarget target = newSource('/test.dart', content);
_computeResult(target, PARSED_UNIT);
@@ -1627,27 +2121,17 @@
''');
LibrarySpecificUnit target = new LibrarySpecificUnit(source, source);
// prepare unit and "a.m()" invocation
- CompilationUnit unit;
- MethodInvocation invocation;
- {
- _computeResult(target, RESOLVED_UNIT1);
- unit = outputs[RESOLVED_UNIT1];
- // walk the AST
- FunctionDeclaration function = unit.declarations[1];
- BlockFunctionBody body = function.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- invocation = statement.expression;
- // not resolved yet
- expect(invocation.methodName.staticElement, isNull);
- }
- // fully resolve
- {
- _computeResult(target, RESOLVED_UNIT);
- expect(task, new isInstanceOf<ResolveReferencesTask>());
- expect(outputs[RESOLVED_UNIT], same(outputs[RESOLVED_UNIT]));
- // a.m() is resolved now
- expect(invocation.methodName.staticElement, isNotNull);
- }
+ _computeResult(target, RESOLVED_UNIT);
+ CompilationUnit unit = outputs[RESOLVED_UNIT];
+ // walk the AST
+ FunctionDeclaration function = unit.declarations[1];
+ BlockFunctionBody body = function.functionExpression.body;
+ ExpressionStatement statement = body.block.statements[0];
+ MethodInvocation invocation = statement.expression;
+ expect(task, new isInstanceOf<ResolveReferencesTask>());
+ expect(unit, same(outputs[RESOLVED_UNIT]));
+ // a.m() is resolved now
+ expect(invocation.methodName.staticElement, isNotNull);
}
test_perform_errors() {
@@ -1822,19 +2306,6 @@
expect(outputs[TOKEN_STREAM], isNotNull);
}
- test_perform_useMemento() {
- AnalysisTarget target = newSource('/test.dart', 'main() {}');
- _computeResult(target, TOKEN_STREAM);
- // update content
- context.setContents(target, 'main() {}');
- assertIsInvalid(target, TOKEN_STREAM);
- // recompute
- _computeResult(target, TOKEN_STREAM);
- assertIsValid(target, TOKEN_STREAM);
- // values from the memento are returned
- assertSameResults(ScanDartTask.DESCRIPTOR.results);
- }
-
void _performScanTask(String content) {
AnalysisTarget target = newSource('/test.dart', content);
_computeResult(target, TOKEN_STREAM);
diff --git a/pkg/analyzer/test/src/task/dart_work_manager_test.dart b/pkg/analyzer/test/src/task/dart_work_manager_test.dart
new file mode 100644
index 0000000..ad3d337
--- /dev/null
+++ b/pkg/analyzer/test/src/task/dart_work_manager_test.dart
@@ -0,0 +1,333 @@
+// Copyright (c) 2015, 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.
+
+library test.src.task.dart_work_manager_test;
+
+import 'package:analyzer/src/context/cache.dart';
+import 'package:analyzer/src/generated/engine.dart'
+ show CacheState, InternalAnalysisContext;
+import 'package:analyzer/src/generated/java_engine.dart' show CaughtException;
+import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/task/dart.dart';
+import 'package:analyzer/src/task/dart_work_manager.dart';
+import 'package:analyzer/src/task/driver.dart';
+import 'package:analyzer/task/dart.dart';
+import 'package:analyzer/task/model.dart';
+import 'package:typed_mock/typed_mock.dart';
+import 'package:unittest/unittest.dart';
+
+import '../../generated/test_support.dart';
+import '../../reflective_tests.dart';
+
+main() {
+ groupSep = ' | ';
+ runReflectiveTests(DartWorkManagerTest);
+}
+
+@reflectiveTest
+class DartWorkManagerTest {
+ InternalAnalysisContext context = new _InternalAnalysisContextMock();
+ DartWorkManager manager;
+
+ CaughtException caughtException = new CaughtException(null, null);
+
+ Source source1 = new TestSource('1.dart');
+ Source source2 = new TestSource('2.dart');
+ Source source3 = new TestSource('3.dart');
+ Source source4 = new TestSource('4.dart');
+ CacheEntry entry1;
+ CacheEntry entry2;
+ CacheEntry entry3;
+ CacheEntry entry4;
+
+ void expect_librarySourceQueue(List<Source> sources) {
+ expect(manager.librarySourceQueue, unorderedEquals(sources));
+ }
+
+ void expect_unknownSourceQueue(List<Source> sources) {
+ expect(manager.unknownSourceQueue, unorderedEquals(sources));
+ }
+
+ void setUp() {
+ manager = new DartWorkManager(context);
+ entry1 = context.getCacheEntry(source1);
+ entry2 = context.getCacheEntry(source2);
+ entry3 = context.getCacheEntry(source3);
+ entry4 = context.getCacheEntry(source4);
+ }
+
+ void test_applyChange_add() {
+ // add source1
+ manager.applyChange([source1], [], []);
+ expect_unknownSourceQueue([source1]);
+ expect_librarySourceQueue([]);
+ // add source2
+ manager.applyChange([source2], [], []);
+ expect_librarySourceQueue([]);
+ expect_unknownSourceQueue([source1, source2]);
+ }
+
+ void test_applyChange_add_duplicate() {
+ // add source1
+ manager.applyChange([source1], [], []);
+ expect_unknownSourceQueue([source1]);
+ expect_librarySourceQueue([]);
+ // add source2
+ manager.applyChange([source1], [], []);
+ expect_librarySourceQueue([]);
+ expect_unknownSourceQueue([source1]);
+ }
+
+ void test_applyChange_addRemove() {
+ manager.applyChange([source1, source2], [], [source2, source3]);
+ expect_unknownSourceQueue([source1]);
+ expect_librarySourceQueue([]);
+ }
+
+ void test_applyChange_change() {
+ manager.librarySourceQueue.addAll([source1, source3]);
+ manager.unknownSourceQueue.addAll([source4]);
+ // change source1
+ manager.applyChange([], [source1], []);
+ expect_librarySourceQueue([source3]);
+ expect_unknownSourceQueue([source4, source1]);
+ }
+
+ void test_applyChange_remove() {
+ manager.librarySourceQueue.addAll([source1, source3]);
+ manager.unknownSourceQueue.addAll([source4]);
+ // remove source1
+ manager.applyChange([], [], [source1]);
+ expect_librarySourceQueue([source3]);
+ expect_unknownSourceQueue([source4]);
+ // remove source3
+ manager.applyChange([], [], [source3]);
+ expect_librarySourceQueue([]);
+ expect_unknownSourceQueue([source4]);
+ // remove source4
+ manager.applyChange([], [], [source4]);
+ expect_librarySourceQueue([]);
+ expect_unknownSourceQueue([]);
+ }
+
+ void test_applyChange_scheduleInvalidatedLibraries() {
+ // libraries source1 and source3 are invalid
+ entry1.setValue(SOURCE_KIND, SourceKind.LIBRARY, []);
+ entry2.setValue(SOURCE_KIND, SourceKind.PART, []);
+ entry3.setValue(SOURCE_KIND, SourceKind.LIBRARY, []);
+ entry1.setValue(LIBRARY_ERRORS_READY, false, []);
+ entry3.setValue(LIBRARY_ERRORS_READY, false, []);
+ // change source2, schedule source1 and source3
+ manager.applyChange([], [source2], []);
+ expect_librarySourceQueue([source1, source3]);
+ }
+
+ void test_applyPriorityTargets_library() {
+ entry1.setValue(SOURCE_KIND, SourceKind.LIBRARY, []);
+ entry2.setValue(SOURCE_KIND, SourceKind.LIBRARY, []);
+ entry3.setValue(SOURCE_KIND, SourceKind.LIBRARY, []);
+ manager.priorityResultQueue
+ .add(new TargetedResult(source1, LIBRARY_ERRORS_READY));
+ manager.priorityResultQueue
+ .add(new TargetedResult(source2, LIBRARY_ERRORS_READY));
+ // -source1 +source3
+ manager.applyPriorityTargets([source2, source3]);
+ expect(manager.priorityResultQueue, unorderedEquals([
+ new TargetedResult(source2, LIBRARY_ERRORS_READY),
+ new TargetedResult(source3, LIBRARY_ERRORS_READY)
+ ]));
+ // get next request
+ TargetedResult request = manager.getNextResult();
+ expect(request.target, source2);
+ expect(request.result, LIBRARY_ERRORS_READY);
+ }
+
+ void test_applyPriorityTargets_part() {
+ entry1.setValue(SOURCE_KIND, SourceKind.PART, []);
+ entry2.setValue(SOURCE_KIND, SourceKind.LIBRARY, []);
+ entry3.setValue(SOURCE_KIND, SourceKind.LIBRARY, []);
+ // +source2 +source3
+ when(context.getLibrariesContaining(source1))
+ .thenReturn([source2, source3]);
+ manager.applyPriorityTargets([source1]);
+ expect(manager.priorityResultQueue, unorderedEquals([
+ new TargetedResult(source2, LIBRARY_ERRORS_READY),
+ new TargetedResult(source3, LIBRARY_ERRORS_READY)
+ ]));
+ // get next request
+ TargetedResult request = manager.getNextResult();
+ expect(request.target, source2);
+ expect(request.result, LIBRARY_ERRORS_READY);
+ }
+
+ void test_getNextResult_hasLibraries_firstIsError() {
+ entry1.setErrorState(caughtException, [LIBRARY_ERRORS_READY]);
+ manager.librarySourceQueue.addAll([source1, source2]);
+ TargetedResult request = manager.getNextResult();
+ expect(request.target, source2);
+ expect(request.result, LIBRARY_ERRORS_READY);
+ // source1 is out, source2 is waiting
+ expect_librarySourceQueue([source2]);
+ }
+
+ void test_getNextResult_hasLibraries_firstIsInvalid() {
+ entry1.setState(LIBRARY_ERRORS_READY, CacheState.INVALID);
+ manager.librarySourceQueue.addAll([source1, source2]);
+ TargetedResult request = manager.getNextResult();
+ expect(request.target, source1);
+ expect(request.result, LIBRARY_ERRORS_READY);
+ // no changes until computed
+ expect_librarySourceQueue([source1, source2]);
+ }
+
+ void test_getNextResult_hasLibraries_firstIsValid() {
+ entry1.setValue(LIBRARY_ERRORS_READY, true, []);
+ manager.librarySourceQueue.addAll([source1, source2]);
+ TargetedResult request = manager.getNextResult();
+ expect(request.target, source2);
+ expect(request.result, LIBRARY_ERRORS_READY);
+ // source1 is out, source2 is waiting
+ expect_librarySourceQueue([source2]);
+ }
+
+ void test_getNextResult_hasPriority_firstIsError() {
+ manager.addPriorityResult(source1, SOURCE_KIND);
+ manager.addPriorityResult(source2, SOURCE_KIND);
+ expect(manager.priorityResultQueue, unorderedEquals([
+ new TargetedResult(source1, SOURCE_KIND),
+ new TargetedResult(source2, SOURCE_KIND)
+ ]));
+ // configure state and get next result
+ entry1.setErrorState(caughtException, [SOURCE_KIND]);
+ TargetedResult request = manager.getNextResult();
+ expect(request.target, source2);
+ expect(request.result, SOURCE_KIND);
+ // source1 is out, source2 is waiting
+ expect(manager.priorityResultQueue,
+ unorderedEquals([new TargetedResult(source2, SOURCE_KIND)]));
+ }
+
+ void test_getNextResult_hasPriority_firstIsValid() {
+ manager.addPriorityResult(source1, SOURCE_KIND);
+ manager.addPriorityResult(source2, SOURCE_KIND);
+ expect(manager.priorityResultQueue, unorderedEquals([
+ new TargetedResult(source1, SOURCE_KIND),
+ new TargetedResult(source2, SOURCE_KIND)
+ ]));
+ // configure state and get next result
+ entry1.setValue(SOURCE_KIND, SourceKind.LIBRARY, []);
+ TargetedResult request = manager.getNextResult();
+ expect(request.target, source2);
+ expect(request.result, SOURCE_KIND);
+ // source1 is out, source2 is waiting
+ expect(manager.priorityResultQueue,
+ unorderedEquals([new TargetedResult(source2, SOURCE_KIND)]));
+ }
+
+ void test_getNextResult_hasUnknown_firstIsError() {
+ entry1.setErrorState(caughtException, [SOURCE_KIND]);
+ manager.unknownSourceQueue.addAll([source1, source2]);
+ TargetedResult request = manager.getNextResult();
+ expect(request.target, source2);
+ expect(request.result, SOURCE_KIND);
+ // source1 is out, source2 is waiting
+ expect_librarySourceQueue([]);
+ expect_unknownSourceQueue([source2]);
+ }
+
+ void test_getNextResult_hasUnknown_firstIsInvalid() {
+ manager.unknownSourceQueue.addAll([source1, source2]);
+ TargetedResult request = manager.getNextResult();
+ expect(request.target, source1);
+ expect(request.result, SOURCE_KIND);
+ // no changes until computed
+ expect_librarySourceQueue([]);
+ expect_unknownSourceQueue([source1, source2]);
+ }
+
+ void test_getNextResult_hasUnknown_firstIsValid() {
+ entry1.setValue(SOURCE_KIND, SourceKind.LIBRARY, []);
+ manager.unknownSourceQueue.addAll([source1, source2]);
+ TargetedResult request = manager.getNextResult();
+ expect(request.target, source2);
+ expect(request.result, SOURCE_KIND);
+ // source1 is out, source2 is waiting
+ expect_librarySourceQueue([]);
+ expect_unknownSourceQueue([source2]);
+ }
+
+ void test_getNextResult_nothingToDo() {
+ TargetedResult request = manager.getNextResult();
+ expect(request, isNull);
+ }
+
+ void test_getNextResultPriority_hasLibrary() {
+ manager.librarySourceQueue.addAll([source1]);
+ expect(manager.getNextResultPriority(), WorkOrderPriority.NORMAL);
+ }
+
+ void test_getNextResultPriority_hasPriority() {
+ manager.addPriorityResult(source1, SOURCE_KIND);
+ expect(manager.getNextResultPriority(), WorkOrderPriority.PRIORITY);
+ }
+
+ void test_getNextResultPriority_hasUnknown() {
+ manager.unknownSourceQueue.addAll([source1]);
+ expect(manager.getNextResultPriority(), WorkOrderPriority.NORMAL);
+ }
+
+ void test_getNextResultPriority_nothingToDo() {
+ expect(manager.getNextResultPriority(), WorkOrderPriority.NONE);
+ }
+
+ void test_resultsComputed_isLibrary() {
+ manager.unknownSourceQueue.addAll([source1, source2, source3]);
+ manager.resultsComputed(source2, {SOURCE_KIND: SourceKind.LIBRARY});
+ expect_librarySourceQueue([source2]);
+ expect_unknownSourceQueue([source1, source3]);
+ }
+
+ void test_resultsComputed_isPart() {
+ manager.unknownSourceQueue.addAll([source1, source2, source3]);
+ manager.resultsComputed(source2, {SOURCE_KIND: SourceKind.PART});
+ expect_librarySourceQueue([]);
+ expect_unknownSourceQueue([source1, source3]);
+ }
+
+ void test_resultsComputed_noSourceKind() {
+ manager.unknownSourceQueue.addAll([source1, source2]);
+ manager.resultsComputed(source1, {});
+ expect_librarySourceQueue([]);
+ expect_unknownSourceQueue([source1, source2]);
+ }
+
+ void test_resultsComputed_notDart() {
+ manager.unknownSourceQueue.addAll([source1, source2]);
+ manager.resultsComputed(new TestSource('test.html'), {});
+ expect_librarySourceQueue([]);
+ expect_unknownSourceQueue([source1, source2]);
+ }
+}
+
+class _InternalAnalysisContextMock extends TypedMock
+ implements InternalAnalysisContext {
+ @override
+ AnalysisCache analysisCache;
+
+ _InternalAnalysisContextMock() {
+ analysisCache = new AnalysisCache([new UniversalCachePartition(this)]);
+ }
+
+ @override
+ CacheEntry getCacheEntry(AnalysisTarget target) {
+ CacheEntry entry = analysisCache.get(target);
+ if (entry == null) {
+ entry = new CacheEntry(target);
+ analysisCache.put(entry);
+ }
+ return entry;
+ }
+
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/test/src/task/driver_test.dart b/pkg/analyzer/test/src/task/driver_test.dart
index d69dbe4..d7005bd3 100644
--- a/pkg/analyzer/test/src/task/driver_test.dart
+++ b/pkg/analyzer/test/src/task/driver_test.dart
@@ -5,19 +5,23 @@
library test.src.task.driver_test;
import 'package:analyzer/src/context/cache.dart';
-import 'package:analyzer/src/context/context.dart';
import 'package:analyzer/src/generated/engine.dart'
- hide AnalysisContextImpl, AnalysisTask;
+ hide
+ AnalysisCache,
+ AnalysisContextImpl,
+ AnalysisTask,
+ UniversalCachePartition,
+ WorkManager;
import 'package:analyzer/src/generated/java_engine.dart';
import 'package:analyzer/src/task/driver.dart';
import 'package:analyzer/src/task/inputs.dart';
import 'package:analyzer/src/task/manager.dart';
import 'package:analyzer/task/model.dart';
+import 'package:typed_mock/typed_mock.dart';
import 'package:unittest/unittest.dart';
import '../../generated/test_support.dart';
import '../../reflective_tests.dart';
-import '../context/abstract_context.dart';
import 'test_support.dart';
main() {
@@ -27,10 +31,41 @@
runReflectiveTests(WorkItemTest);
}
+class AbstractDriverTest {
+ TaskManager taskManager = new TaskManager();
+ List<WorkManager> workManagers = <WorkManager>[];
+ InternalAnalysisContext context = new _InternalAnalysisContextMock();
+ AnalysisDriver analysisDriver;
+
+ void setUp() {
+ context = new _InternalAnalysisContextMock();
+ analysisDriver = new AnalysisDriver(taskManager, workManagers, context);
+ }
+}
+
@reflectiveTest
-class AnalysisDriverTest extends AbstractContextTest {
- AnalysisContextImpl createAnalysisContext() {
- return new _TestContext();
+class AnalysisDriverTest extends AbstractDriverTest {
+ WorkManager workManager1 = new _WorkManagerMock();
+ WorkManager workManager2 = new _WorkManagerMock();
+
+ AnalysisTarget target1 = new TestSource('/1.dart');
+ AnalysisTarget target2 = new TestSource('/2.dart');
+
+ ResultDescriptor result1 = new ResultDescriptor('result1', -1);
+ ResultDescriptor result2 = new ResultDescriptor('result2', -2);
+
+ TaskDescriptor descriptor1;
+ TaskDescriptor descriptor2;
+
+ void setUp() {
+ super.setUp();
+ when(workManager1.getNextResultPriority())
+ .thenReturn(WorkOrderPriority.NONE);
+ when(workManager2.getNextResultPriority())
+ .thenReturn(WorkOrderPriority.NONE);
+
+ workManagers.add(workManager1);
+ workManagers.add(workManager2);
}
test_computeResult() {
@@ -53,75 +88,43 @@
expect(analysisDriver.taskManager, taskManager);
}
- test_createNextWorkOrder_complete() {
- AnalysisTarget priorityTarget = new TestSource();
- AnalysisTarget normalTarget = new TestSource();
- ResultDescriptor result = new ResultDescriptor('result', null);
- TaskDescriptor descriptor = new TaskDescriptor('task',
- (context, target) => new TestAnalysisTask(context, target),
- (target) => {}, [result]);
- taskManager.addGeneralResult(result);
- taskManager.addTaskDescriptor(descriptor);
- context.priorityTargets.add(priorityTarget);
- context.getCacheEntry(priorityTarget).setValue(
- result, '', TargetedResult.EMPTY_LIST, null);
- context.explicitTargets.add(normalTarget);
- context.getCacheEntry(priorityTarget).setValue(
- result, '', TargetedResult.EMPTY_LIST, null);
-
- expect(analysisDriver.createNextWorkOrder(), isNull);
- }
-
- test_createNextWorkOrder_normalTarget() {
- AnalysisTarget priorityTarget = new TestSource();
- AnalysisTarget normalTarget = new TestSource();
- ResultDescriptor result = new ResultDescriptor('result', null);
- TaskDescriptor descriptor = new TaskDescriptor('task',
- (context, target) => new TestAnalysisTask(context, target),
- (target) => {}, [result]);
- taskManager.addGeneralResult(result);
- taskManager.addTaskDescriptor(descriptor);
- context.priorityTargets.add(priorityTarget);
- context.getCacheEntry(priorityTarget).setValue(
- result, '', TargetedResult.EMPTY_LIST, null);
- context.explicitTargets.add(normalTarget);
- context.getCacheEntry(normalTarget).setState(result, CacheState.INVALID);
-
+ test_createNextWorkOrder_highLow() {
+ _configureDescriptors12();
+ when(workManager1.getNextResultPriority())
+ .thenReturn(WorkOrderPriority.PRIORITY);
+ when(workManager2.getNextResultPriority())
+ .thenReturn(WorkOrderPriority.NORMAL);
+ when(workManager1.getNextResult())
+ .thenReturn(new TargetedResult(target1, result1));
WorkOrder workOrder = analysisDriver.createNextWorkOrder();
expect(workOrder, isNotNull);
expect(workOrder.moveNext(), true);
- expect(workOrder.currentItem.target, normalTarget);
+ expect(workOrder.currentItem.target, target1);
+ expect(workOrder.currentItem.descriptor, descriptor1);
}
- test_createNextWorkOrder_noTargets() {
- ResultDescriptor result = new ResultDescriptor('result', null);
- TaskDescriptor descriptor = new TaskDescriptor('task',
- (context, target) => new TestAnalysisTask(context, target),
- (target) => {}, [result]);
- taskManager.addGeneralResult(result);
- taskManager.addTaskDescriptor(descriptor);
-
- expect(analysisDriver.createNextWorkOrder(), isNull);
- }
-
- test_createNextWorkOrder_priorityTarget() {
- AnalysisTarget priorityTarget = new TestSource();
- AnalysisTarget normalTarget = new TestSource();
- ResultDescriptor result = new ResultDescriptor('result', null);
- TaskDescriptor descriptor = new TaskDescriptor('task',
- (context, target) => new TestAnalysisTask(context, target),
- (target) => {}, [result]);
- taskManager.addGeneralResult(result);
- taskManager.addTaskDescriptor(descriptor);
- context.priorityTargets.add(priorityTarget);
- context.getCacheEntry(priorityTarget).setState(result, CacheState.INVALID);
- context.explicitTargets.add(normalTarget);
- context.getCacheEntry(normalTarget).setState(result, CacheState.INVALID);
-
+ test_createNextWorkOrder_lowHigh() {
+ _configureDescriptors12();
+ when(workManager1.getNextResultPriority())
+ .thenReturn(WorkOrderPriority.NORMAL);
+ when(workManager2.getNextResultPriority())
+ .thenReturn(WorkOrderPriority.PRIORITY);
+ when(workManager2.getNextResult())
+ .thenReturn(new TargetedResult(target1, result1));
WorkOrder workOrder = analysisDriver.createNextWorkOrder();
expect(workOrder, isNotNull);
expect(workOrder.moveNext(), true);
- expect(workOrder.currentItem.target, priorityTarget);
+ expect(workOrder.currentItem.target, target1);
+ expect(workOrder.currentItem.descriptor, descriptor1);
+ }
+
+ test_createNextWorkOrder_none() {
+ _configureDescriptors12();
+ when(workManager1.getNextResultPriority())
+ .thenReturn(WorkOrderPriority.NONE);
+ when(workManager2.getNextResultPriority())
+ .thenReturn(WorkOrderPriority.NONE);
+ expect(analysisDriver.createNextWorkOrder(), isNull);
}
test_createWorkOrderForResult_error() {
@@ -160,7 +163,7 @@
AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('result', null);
context.getCacheEntry(target).setValue(
- result, '', TargetedResult.EMPTY_LIST, null);
+ result, '', TargetedResult.EMPTY_LIST);
expect(analysisDriver.createWorkOrderForResult(target, result), isNull);
}
@@ -198,15 +201,11 @@
}
test_performAnalysisTask() {
- AnalysisTarget target = new TestSource();
- ResultDescriptor result = new ResultDescriptor('result', null);
- TestAnalysisTask task;
- TaskDescriptor descriptor = new TaskDescriptor(
- 'task', (context, target) => task, (target) => {}, [result]);
- task = new TestAnalysisTask(context, target, descriptor: descriptor);
- taskManager.addTaskDescriptor(descriptor);
- taskManager.addGeneralResult(result);
- context.priorityTargets.add(target);
+ _configureDescriptors12();
+ when(workManager1.getNextResultPriority()).thenReturnList(
+ <WorkOrderPriority>[WorkOrderPriority.NORMAL, WorkOrderPriority.NONE]);
+ when(workManager1.getNextResult())
+ .thenReturn(new TargetedResult(target1, result1));
expect(analysisDriver.performAnalysisTask(), true);
expect(analysisDriver.performAnalysisTask(), true);
@@ -232,8 +231,11 @@
task2 = new TestAnalysisTask(context, target, descriptor: descriptor2);
taskManager.addTaskDescriptor(descriptor1);
taskManager.addTaskDescriptor(descriptor2);
- context.explicitTargets.add(target);
- taskManager.addGeneralResult(resultB);
+ // configure WorkManager
+ when(workManager1.getNextResultPriority()).thenReturnList(
+ <WorkOrderPriority>[WorkOrderPriority.NORMAL, WorkOrderPriority.NONE]);
+ when(workManager1.getNextResult())
+ .thenReturn(new TargetedResult(target, resultB));
// prepare work order
expect(analysisDriver.performAnalysisTask(), true);
expect(analysisDriver.performAnalysisTask(), true);
@@ -261,8 +263,11 @@
descriptor: descriptor2, value: 20);
taskManager.addTaskDescriptor(descriptor1);
taskManager.addTaskDescriptor(descriptor2);
- context.explicitTargets.add(target);
- taskManager.addGeneralResult(resultB);
+ // configure WorkManager
+ when(workManager1.getNextResultPriority()).thenReturnList(
+ <WorkOrderPriority>[WorkOrderPriority.NORMAL, WorkOrderPriority.NONE]);
+ when(workManager1.getNextResult())
+ .thenReturn(new TargetedResult(target, resultB));
// prepare work order
expect(analysisDriver.performAnalysisTask(), true);
expect(context.getCacheEntry(target).getValue(resultA), -1);
@@ -279,32 +284,6 @@
expect(analysisDriver.performAnalysisTask(), false);
}
- test_performAnalysisTask_recordMemento() {
- AnalysisTarget target = new TestSource();
- ResultDescriptor result = new ResultDescriptor('result', -1);
- // configure tasks
- TestAnalysisTask task;
- TaskDescriptor descriptor = new TaskDescriptor(
- 'task', (context, target) => task, (target) => {}, [result]);
- task = new TestAnalysisTask(context, target,
- descriptor: descriptor,
- memento: 'my mem',
- results: [result],
- value: 10);
- taskManager.addTaskDescriptor(descriptor);
- context.explicitTargets.add(target);
- taskManager.addGeneralResult(result);
- // prepare work order
- expect(analysisDriver.performAnalysisTask(), true);
- expect(context.getCacheEntry(target).getValue(result), -1);
- // compute result
- expect(analysisDriver.performAnalysisTask(), true);
- expect(context.getCacheEntry(target).getValue(result), 10);
- expect(context.getCacheEntry(target).getMemento(result), 'my mem');
- // done
- expect(analysisDriver.performAnalysisTask(), false);
- }
-
test_performWorkItem_exceptionInTask() {
AnalysisTarget target = new TestSource();
ResultDescriptor result = new ResultDescriptor('result', null);
@@ -315,7 +294,7 @@
'task', (context, target) => task, (target) => {}, [result]);
task = new TestAnalysisTask(context, target,
descriptor: descriptor, exception: exception);
- WorkItem item = new WorkItem(context, target, descriptor, null);
+ WorkItem item = new WorkItem(context, target, descriptor);
analysisDriver.performWorkItem(item);
CacheEntry targetEntry = context.getCacheEntry(item.target);
@@ -330,7 +309,7 @@
TaskDescriptor descriptor = new TaskDescriptor(
'task', (context, target) => task, (target) => {}, [result]);
task = new TestAnalysisTask(context, target, descriptor: descriptor);
- WorkItem item = new WorkItem(context, target, descriptor, null);
+ WorkItem item = new WorkItem(context, target, descriptor);
analysisDriver.performWorkItem(item);
CacheEntry targetEntry = context.getCacheEntry(item.target);
@@ -346,7 +325,7 @@
(target) => {}, [result]);
CaughtException exception =
new CaughtException(new AnalysisException(), null);
- WorkItem item = new WorkItem(context, target, descriptor, null);
+ WorkItem item = new WorkItem(context, target, descriptor);
item.exception = exception;
analysisDriver.performWorkItem(item);
@@ -362,12 +341,24 @@
(target) => {'one': inputResult.of(target)},
[new ResultDescriptor('output', null)]);
analysisDriver.currentWorkOrder =
- new WorkOrder(taskManager, new WorkItem(null, null, descriptor, null));
+ new WorkOrder(taskManager, new WorkItem(null, null, descriptor));
analysisDriver.reset();
expect(analysisDriver.currentWorkOrder, isNull);
}
+ void _configureDescriptors12() {
+ descriptor1 = new TaskDescriptor('task1', (context, target) =>
+ new TestAnalysisTask(context, target, descriptor: descriptor1),
+ (target) => {}, [result1]);
+ taskManager.addTaskDescriptor(descriptor1);
+
+ descriptor2 = new TaskDescriptor('task2', (context, target) =>
+ new TestAnalysisTask(context, target, descriptor: descriptor1),
+ (target) => {}, [result2]);
+ taskManager.addTaskDescriptor(descriptor2);
+ }
+
/**
* [complete] is `true` if the value of the result has already been computed.
* [priorityTarget] is `true` if the target is in the list of priority
@@ -395,7 +386,7 @@
}
if (complete) {
context.getCacheEntry(target).setValue(
- result, '', TargetedResult.EMPTY_LIST, null);
+ result, '', TargetedResult.EMPTY_LIST);
} else {
context.getCacheEntry(target).setState(result, CacheState.INVALID);
}
@@ -413,22 +404,18 @@
}
@reflectiveTest
-class WorkItemTest extends EngineTestCase {
+class WorkItemTest extends AbstractDriverTest {
test_buildTask_complete() {
- AnalysisContext context = new AnalysisContextImpl();
AnalysisTarget target = new TestSource();
TaskDescriptor descriptor = new TaskDescriptor('task',
(context, target) => new TestAnalysisTask(context, target),
(target) => {}, [new ResultDescriptor('output', null)]);
- Object memento = new Object();
- WorkItem item = new WorkItem(context, target, descriptor, memento);
+ WorkItem item = new WorkItem(context, target, descriptor);
AnalysisTask task = item.buildTask();
expect(task, isNotNull);
- expect(task.inputMemento, memento);
}
test_buildTask_incomplete() {
- AnalysisContext context = new AnalysisContextImpl();
AnalysisTarget target = new TestSource();
ResultDescriptor inputResult = new ResultDescriptor('input', null);
List<ResultDescriptor> outputResults =
@@ -436,40 +423,33 @@
TaskDescriptor descriptor = new TaskDescriptor('task', (context, target) =>
new TestAnalysisTask(context, target, results: outputResults),
(target) => {'one': inputResult.of(target)}, outputResults);
- WorkItem item = new WorkItem(context, target, descriptor, null);
+ WorkItem item = new WorkItem(context, target, descriptor);
expect(() => item.buildTask(), throwsStateError);
}
test_create() {
- AnalysisContext context = new AnalysisContextImpl();
AnalysisTarget target = new TestSource();
- Object memento = new Object();
TaskDescriptor descriptor = new TaskDescriptor(
'task', null, (target) => {}, [new ResultDescriptor('result', null)]);
- WorkItem item = new WorkItem(context, target, descriptor, memento);
+ WorkItem item = new WorkItem(context, target, descriptor);
expect(item, isNotNull);
expect(item.context, context);
expect(item.descriptor, descriptor);
- expect(item.inputMemento, memento);
expect(item.target, target);
}
test_gatherInputs_complete() {
- TaskManager manager = new TaskManager();
- AnalysisContext context = new AnalysisContextImpl();
AnalysisTarget target = new TestSource();
TaskDescriptor descriptor = new TaskDescriptor('task',
(context, target) => new TestAnalysisTask(context, target),
(target) => {}, [new ResultDescriptor('output', null)]);
- WorkItem item = new WorkItem(context, target, descriptor, null);
- WorkItem result = item.gatherInputs(manager);
+ WorkItem item = new WorkItem(context, target, descriptor);
+ WorkItem result = item.gatherInputs(taskManager);
expect(result, isNull);
expect(item.exception, isNull);
}
test_gatherInputs_incomplete() {
- TaskManager manager = new TaskManager();
- AnalysisContextImpl context = new AnalysisContextImpl();
AnalysisTarget target = new TestSource();
ResultDescriptor resultA = new ResultDescriptor('resultA', null);
ResultDescriptor resultB = new ResultDescriptor('resultB', null);
@@ -480,33 +460,23 @@
TaskDescriptor task2 = new TaskDescriptor('task',
(context, target) => new TestAnalysisTask(context, target),
(target) => {'one': resultA.of(target)}, [resultB]);
- manager.addTaskDescriptor(task1);
- manager.addTaskDescriptor(task2);
- // configure memento for "resultA"
- dynamic memento = 'main() {}';
- {
- CacheEntry cacheEntry = context.getCacheEntry(target);
- cacheEntry.setValue(resultA, null, TargetedResult.EMPTY_LIST, memento);
- cacheEntry.setState(resultA, CacheState.INVALID);
- }
+ taskManager.addTaskDescriptor(task1);
+ taskManager.addTaskDescriptor(task2);
// gather inputs
- WorkItem item = new WorkItem(context, target, task2, null);
- WorkItem inputItem = item.gatherInputs(manager);
+ WorkItem item = new WorkItem(context, target, task2);
+ WorkItem inputItem = item.gatherInputs(taskManager);
expect(inputItem, isNotNull);
- expect(inputItem.inputMemento, memento);
}
test_gatherInputs_invalid() {
- TaskManager manager = new TaskManager();
- AnalysisContext context = new AnalysisContextImpl();
AnalysisTarget target = new TestSource();
ResultDescriptor inputResult = new ResultDescriptor('input', null);
TaskDescriptor descriptor = new TaskDescriptor('task',
(context, target) => new TestAnalysisTask(context, target),
(target) => {'one': inputResult.of(target)},
[new ResultDescriptor('output', null)]);
- WorkItem item = new WorkItem(context, target, descriptor, null);
- WorkItem result = item.gatherInputs(manager);
+ WorkItem item = new WorkItem(context, target, descriptor);
+ WorkItem result = item.gatherInputs(taskManager);
expect(result, isNull);
expect(item.exception, isNotNull);
}
@@ -519,7 +489,7 @@
TaskDescriptor descriptor = new TaskDescriptor(
'task', null, (_) => {}, [new ResultDescriptor('result', null)]);
WorkOrder order =
- new WorkOrder(manager, new WorkItem(null, null, descriptor, null));
+ new WorkOrder(manager, new WorkItem(null, null, descriptor));
expect(order, isNotNull);
expect(order.currentItem, isNull);
expect(order.pendingItems, hasLength(1));
@@ -530,7 +500,7 @@
TaskManager manager = new TaskManager();
TaskDescriptor descriptor = new TaskDescriptor(
'task', null, (_) => {}, [new ResultDescriptor('result', null)]);
- WorkItem workItem = new WorkItem(null, null, descriptor, null);
+ WorkItem workItem = new WorkItem(null, null, descriptor);
WorkOrder order = new WorkOrder(manager, workItem);
// "item" has no child items
expect(order.moveNext(), isTrue);
@@ -542,13 +512,36 @@
}
/**
- * An [AnalysisContextImpl] which allows to set explicit and implicit targets
- * directly.
+ * A dummy [InternalAnalysisContext] that does not use [AnalysisDriver] itself,
+ * but provides enough implementation for it to function.
*/
-class _TestContext extends AnalysisContextImpl {
+class _InternalAnalysisContextMock extends TypedMock
+ implements InternalAnalysisContext {
+ AnalysisCache analysisCache;
+
@override
List<AnalysisTarget> explicitTargets = <AnalysisTarget>[];
@override
List<AnalysisTarget> priorityTargets = <AnalysisTarget>[];
+
+ _InternalAnalysisContextMock() {
+ analysisCache = new AnalysisCache([new UniversalCachePartition(this)]);
+ }
+
+ @override
+ CacheEntry getCacheEntry(AnalysisTarget target) {
+ CacheEntry entry = analysisCache.get(target);
+ if (entry == null) {
+ entry = new CacheEntry(target);
+ analysisCache.put(entry);
+ }
+ return entry;
+ }
+
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
+class _WorkManagerMock extends TypedMock implements WorkManager {
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}
diff --git a/pkg/analyzer/test/src/task/incremental_element_builder_test.dart b/pkg/analyzer/test/src/task/incremental_element_builder_test.dart
new file mode 100644
index 0000000..dd05bcb
--- /dev/null
+++ b/pkg/analyzer/test/src/task/incremental_element_builder_test.dart
@@ -0,0 +1,597 @@
+// Copyright (c) 2015, 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.
+
+library test.src.task.incremental_element_builder_test;
+
+import 'package:analyzer/src/generated/ast.dart';
+import 'package:analyzer/src/generated/element.dart';
+import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/task/incremental_element_builder.dart';
+import 'package:unittest/unittest.dart';
+
+import '../../reflective_tests.dart';
+import '../context/abstract_context.dart';
+
+main() {
+ groupSep = ' | ';
+ runReflectiveTests(IncrementalCompilationUnitElementBuilderTest);
+}
+
+@reflectiveTest
+class IncrementalCompilationUnitElementBuilderTest extends AbstractContextTest {
+ Source source;
+ String oldCode;
+ CompilationUnit oldUnit;
+ CompilationUnitElement unitElement;
+
+ String newCode;
+ CompilationUnit newUnit;
+
+ String getNodeText(AstNode node) {
+ return newCode.substring(node.offset, node.end);
+ }
+
+ test_directives_add() {
+ _buildOldUnit(r'''
+library test;
+import 'dart:math';
+''');
+ _buildNewUnit(r'''
+library test;
+import 'dart:async';
+import 'dart:math';
+''');
+ var oldDirectives = oldUnit.directives;
+ var newDirectives = newUnit.directives;
+ {
+ Directive newNode = newDirectives[0];
+ expect(newNode, same(oldDirectives[0]));
+ expect(getNodeText(newNode), "library test;");
+ LibraryElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf('test;'));
+ }
+ {
+ Directive newNode = newDirectives[1];
+ expect(getNodeText(newNode), "import 'dart:async';");
+ ImportElement element = newNode.element;
+ expect(element, isNull);
+ }
+ {
+ Directive newNode = newDirectives[2];
+ expect(newNode, same(oldDirectives[1]));
+ expect(getNodeText(newNode), "import 'dart:math';");
+ ImportElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf("import 'dart:math';"));
+ }
+ }
+
+ test_directives_keepOffset_partOf() {
+ String libCode = '''
+// comment to shift tokens
+library my_lib;
+part 'test.dart';
+''';
+ Source libSource = newSource('/lib.dart', libCode);
+ _buildOldUnit(r'''
+part of my_lib;
+class A {}
+''', libSource);
+ _buildNewUnit(r'''
+part of my_lib;
+class A {}
+''');
+ var oldDirectives = oldUnit.directives;
+ var newDirectives = newUnit.directives;
+ {
+ Directive newNode = newDirectives[0];
+ expect(newNode, same(oldDirectives[0]));
+ expect(getNodeText(newNode), 'part of my_lib;');
+ LibraryElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, libCode.indexOf('my_lib;'));
+ }
+ }
+
+ test_directives_remove() {
+ _buildOldUnit(r'''
+library test;
+import 'dart:async';
+import 'dart:math';
+''');
+ _buildNewUnit(r'''
+library test;
+import 'dart:math';
+''');
+ var oldDirectives = oldUnit.directives;
+ var newDirectives = newUnit.directives;
+ {
+ Directive newNode = newDirectives[0];
+ expect(newNode, same(oldDirectives[0]));
+ expect(getNodeText(newNode), "library test;");
+ LibraryElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf('test;'));
+ }
+ {
+ Directive newNode = newDirectives[1];
+ expect(newNode, same(oldDirectives[2]));
+ expect(getNodeText(newNode), "import 'dart:math';");
+ ImportElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf("import 'dart:math';"));
+ }
+ }
+
+ test_directives_reorder() {
+ _buildOldUnit(r'''
+library test;
+import 'dart:math' as m;
+import 'dart:async';
+''');
+ _buildNewUnit(r'''
+library test;
+import 'dart:async';
+import 'dart:math' as m;
+''');
+ var oldDirectives = oldUnit.directives;
+ var newDirectives = newUnit.directives;
+ {
+ Directive newNode = newDirectives[0];
+ expect(newNode, same(oldDirectives[0]));
+ expect(getNodeText(newNode), "library test;");
+ LibraryElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf('test;'));
+ }
+ {
+ Directive newNode = newDirectives[1];
+ expect(newNode, same(oldDirectives[2]));
+ expect(getNodeText(newNode), "import 'dart:async';");
+ ImportElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf("import 'dart:async';"));
+ }
+ {
+ Directive newNode = newDirectives[2];
+ expect(newNode, same(oldDirectives[1]));
+ expect(getNodeText(newNode), "import 'dart:math' as m;");
+ ImportElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf("import 'dart:math' as m;"));
+ expect(element.prefix.nameOffset, newCode.indexOf("m;"));
+ }
+ }
+
+ test_directives_sameOrder_insertSpaces() {
+ _buildOldUnit(r'''
+library test;
+import 'dart:async';
+import 'dart:math';
+''');
+ _buildNewUnit(r'''
+library test;
+
+import 'dart:async' ;
+import 'dart:math';
+''');
+ var oldDirectives = oldUnit.directives;
+ var newDirectives = newUnit.directives;
+ {
+ Directive newNode = newDirectives[0];
+ expect(newNode, same(oldDirectives[0]));
+ expect(getNodeText(newNode), "library test;");
+ LibraryElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf('test;'));
+ }
+ {
+ Directive newNode = newDirectives[1];
+ expect(newNode, same(oldDirectives[1]));
+ expect(getNodeText(newNode), "import 'dart:async' ;");
+ ImportElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf("import 'dart:async' ;"));
+ }
+ {
+ Directive newNode = newDirectives[2];
+ expect(newNode, same(oldDirectives[2]));
+ expect(getNodeText(newNode), "import 'dart:math';");
+ ImportElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf("import 'dart:math';"));
+ }
+ }
+
+ test_directives_sameOrder_removeSpaces() {
+ _buildOldUnit(r'''
+library test;
+
+import 'dart:async' ;
+import 'dart:math';
+''');
+ _buildNewUnit(r'''
+library test;
+import 'dart:async';
+import 'dart:math';
+''');
+ var oldDirectives = oldUnit.directives;
+ var newDirectives = newUnit.directives;
+ {
+ Directive newNode = newDirectives[0];
+ expect(newNode, same(oldDirectives[0]));
+ expect(getNodeText(newNode), "library test;");
+ LibraryElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf('test;'));
+ }
+ {
+ Directive newNode = newDirectives[1];
+ expect(newNode, same(oldDirectives[1]));
+ expect(getNodeText(newNode), "import 'dart:async';");
+ ImportElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf("import 'dart:async';"));
+ }
+ {
+ Directive newNode = newDirectives[2];
+ expect(newNode, same(oldDirectives[2]));
+ expect(getNodeText(newNode), "import 'dart:math';");
+ ImportElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.nameOffset, newCode.indexOf("import 'dart:math';"));
+ }
+ }
+
+ test_unitMembers_accessor_add() {
+ _buildOldUnit(r'''
+get a => 1;
+''');
+ _buildNewUnit(r'''
+get a => 1;
+get b => 2;
+''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations;
+ List<CompilationUnitMember> newNodes = newUnit.declarations;
+ // nodes
+ FunctionDeclaration node1 = newNodes[0];
+ FunctionDeclaration node2 = newNodes[1];
+ expect(node1, same(oldNodes[0]));
+ // elements
+ PropertyAccessorElement elementA = node1.element;
+ PropertyAccessorElement elementB = node2.element;
+ expect(elementA, isNotNull);
+ expect(elementB, isNotNull);
+ expect(elementA.name, 'a');
+ expect(elementB.name, 'b');
+ // unit.types
+ expect(unitElement.topLevelVariables,
+ unorderedEquals([elementA.variable, elementB.variable]));
+ expect(unitElement.accessors, unorderedEquals([elementA, elementB]));
+ }
+
+ test_unitMembers_class_add() {
+ _buildOldUnit(r'''
+class A {}
+''');
+ _buildNewUnit(r'''
+class A {}
+class B {}
+''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations;
+ List<CompilationUnitMember> newNodes = newUnit.declarations;
+ // nodes
+ CompilationUnitMember nodeA = newNodes[0];
+ CompilationUnitMember nodeB = newNodes[1];
+ expect(nodeA, same(oldNodes[0]));
+ // elements
+ ClassElement elementA = nodeA.element;
+ ClassElement elementB = nodeB.element;
+ expect(elementA, isNotNull);
+ expect(elementB, isNotNull);
+ expect(elementA.name, 'A');
+ expect(elementB.name, 'B');
+ // unit.types
+ expect(unitElement.types, unorderedEquals([elementA, elementB]));
+ }
+
+ test_unitMembers_class_comments() {
+ _buildOldUnit(r'''
+/// reference [bool] type.
+class A {}
+/// reference [int] type.
+class B {}
+/// reference [double] and [B] types.
+class C {}
+''');
+ _buildNewUnit(r'''
+/// reference [double] and [B] types.
+class C {}
+/// reference [bool] type.
+class A {}
+/// reference [int] type.
+class B {}
+''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations;
+ List<CompilationUnitMember> newNodes = newUnit.declarations;
+ {
+ CompilationUnitMember newNode = newNodes[0];
+ expect(newNode, same(oldNodes[2]));
+ expect(getNodeText(newNode), r'''
+/// reference [double] and [B] types.
+class C {}''');
+ ClassElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.name, 'C');
+ expect(element.nameOffset, newCode.indexOf('C {}'));
+ // [double] and [B] are still resolved
+ {
+ var docReferences = newNode.documentationComment.references;
+ expect(docReferences, hasLength(2));
+ expect(docReferences[0].identifier.staticElement.name, 'double');
+ expect(docReferences[1].identifier.staticElement,
+ same(newNodes[2].element));
+ }
+ }
+ {
+ CompilationUnitMember newNode = newNodes[1];
+ expect(newNode, same(oldNodes[0]));
+ expect(getNodeText(newNode), r'''
+/// reference [bool] type.
+class A {}''');
+ ClassElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.name, 'A');
+ expect(element.nameOffset, newCode.indexOf('A {}'));
+ // [bool] is still resolved
+ {
+ var docReferences = newNode.documentationComment.references;
+ expect(docReferences, hasLength(1));
+ expect(docReferences[0].identifier.staticElement.name, 'bool');
+ }
+ }
+ {
+ CompilationUnitMember newNode = newNodes[2];
+ expect(newNode, same(oldNodes[1]));
+ expect(getNodeText(newNode), r'''
+/// reference [int] type.
+class B {}''');
+ ClassElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.name, 'B');
+ expect(element.nameOffset, newCode.indexOf('B {}'));
+ // [int] is still resolved
+ {
+ var docReferences = newNode.documentationComment.references;
+ expect(docReferences, hasLength(1));
+ expect(docReferences[0].identifier.staticElement.name, 'int');
+ }
+ }
+ }
+
+ test_unitMembers_class_reorder() {
+ _buildOldUnit(r'''
+class A {}
+class B {}
+class C {}
+''');
+ _buildNewUnit(r'''
+class C {}
+class A {}
+class B {}
+''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations;
+ List<CompilationUnitMember> newNodes = newUnit.declarations;
+ {
+ CompilationUnitMember newNode = newNodes[0];
+ expect(newNode, same(oldNodes[2]));
+ expect(getNodeText(newNode), 'class C {}');
+ ClassElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.name, 'C');
+ expect(element.nameOffset, newCode.indexOf('C {}'));
+ }
+ {
+ CompilationUnitMember newNode = newNodes[1];
+ expect(newNode, same(oldNodes[0]));
+ expect(getNodeText(newNode), 'class A {}');
+ ClassElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.name, 'A');
+ expect(element.nameOffset, newCode.indexOf('A {}'));
+ }
+ {
+ CompilationUnitMember newNode = newNodes[2];
+ expect(newNode, same(oldNodes[1]));
+ expect(getNodeText(newNode), 'class B {}');
+ ClassElement element = newNode.element;
+ expect(element, isNotNull);
+ expect(element.name, 'B');
+ expect(element.nameOffset, newCode.indexOf('B {}'));
+ }
+ }
+
+ test_unitMembers_enum_add() {
+ _buildOldUnit(r'''
+enum A {A1, A2}
+''');
+ _buildNewUnit(r'''
+enum A {A1, A2}
+enum B {B1, B2}
+''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations;
+ List<CompilationUnitMember> newNodes = newUnit.declarations;
+ // nodes
+ CompilationUnitMember nodeA = newNodes[0];
+ CompilationUnitMember nodeB = newNodes[1];
+ expect(nodeA, same(oldNodes[0]));
+ // elements
+ ClassElement elementA = nodeA.element;
+ ClassElement elementB = nodeB.element;
+ expect(elementA, isNotNull);
+ expect(elementB, isNotNull);
+ expect(elementA.name, 'A');
+ expect(elementB.name, 'B');
+ // unit.types
+ expect(unitElement.enums, unorderedEquals([elementA, elementB]));
+ }
+
+ test_unitMembers_function_add() {
+ _buildOldUnit(r'''
+a() {}
+''');
+ _buildNewUnit(r'''
+a() {}
+b() {}
+''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations;
+ List<CompilationUnitMember> newNodes = newUnit.declarations;
+ // nodes
+ CompilationUnitMember nodeA = newNodes[0];
+ CompilationUnitMember nodeB = newNodes[1];
+ expect(nodeA, same(oldNodes[0]));
+ // elements
+ FunctionElement elementA = nodeA.element;
+ FunctionElement elementB = nodeB.element;
+ expect(elementA, isNotNull);
+ expect(elementB, isNotNull);
+ expect(elementA.name, 'a');
+ expect(elementB.name, 'b');
+ // unit.types
+ expect(unitElement.functions, unorderedEquals([elementA, elementB]));
+ }
+
+ test_unitMembers_functionTypeAlias_add() {
+ _buildOldUnit(r'''
+typedef A();
+''');
+ _buildNewUnit(r'''
+typedef A();
+typedef B();
+''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations;
+ List<CompilationUnitMember> newNodes = newUnit.declarations;
+ // nodes
+ CompilationUnitMember nodeA = newNodes[0];
+ CompilationUnitMember nodeB = newNodes[1];
+ expect(nodeA, same(oldNodes[0]));
+ // elements
+ FunctionTypeAliasElement elementA = nodeA.element;
+ FunctionTypeAliasElement elementB = nodeB.element;
+ expect(elementA, isNotNull);
+ expect(elementB, isNotNull);
+ expect(elementA.name, 'A');
+ expect(elementB.name, 'B');
+ // unit.types
+ expect(
+ unitElement.functionTypeAliases, unorderedEquals([elementA, elementB]));
+ }
+
+ test_unitMembers_topLevelVariable_add() {
+ _buildOldUnit(r'''
+int a, b;
+''');
+ _buildNewUnit(r'''
+int a, b;
+int c, d;
+''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations;
+ List<CompilationUnitMember> newNodes = newUnit.declarations;
+ // nodes
+ TopLevelVariableDeclaration node1 = newNodes[0];
+ TopLevelVariableDeclaration node2 = newNodes[1];
+ expect(node1, same(oldNodes[0]));
+ // elements
+ TopLevelVariableElement elementA = node1.variables.variables[0].element;
+ TopLevelVariableElement elementB = node1.variables.variables[1].element;
+ TopLevelVariableElement elementC = node2.variables.variables[0].element;
+ TopLevelVariableElement elementD = node2.variables.variables[1].element;
+ expect(elementA, isNotNull);
+ expect(elementB, isNotNull);
+ expect(elementC, isNotNull);
+ expect(elementD, isNotNull);
+ expect(elementA.name, 'a');
+ expect(elementB.name, 'b');
+ expect(elementC.name, 'c');
+ expect(elementD.name, 'd');
+ // unit.types
+ expect(unitElement.topLevelVariables,
+ unorderedEquals([elementA, elementB, elementC, elementD]));
+ expect(unitElement.accessors, unorderedEquals([
+ elementA.getter,
+ elementA.setter,
+ elementB.getter,
+ elementB.setter,
+ elementC.getter,
+ elementC.setter,
+ elementD.getter,
+ elementD.setter
+ ]));
+ }
+
+ test_unitMembers_topLevelVariableDeclaration() {
+ _buildOldUnit(r'''
+bool a = 1, b = 2;
+int c = 3;
+''');
+ _buildNewUnit(r'''
+int c = 3;
+
+bool a =1, b = 2;
+''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations;
+ List<CompilationUnitMember> newNodes = newUnit.declarations;
+ {
+ TopLevelVariableDeclaration newNode = newNodes[0];
+ expect(newNode, same(oldNodes[1]));
+ expect(getNodeText(newNode), 'int c = 3;');
+ {
+ TopLevelVariableElement element =
+ newNode.variables.variables[0].element;
+ expect(element, isNotNull);
+ expect(element.name, 'c');
+ expect(element.nameOffset, newCode.indexOf('c = 3'));
+ }
+ }
+ {
+ TopLevelVariableDeclaration newNode = newNodes[1];
+ expect(newNode, same(oldNodes[0]));
+ expect(getNodeText(newNode), 'bool a =1, b = 2;');
+ {
+ TopLevelVariableElement element =
+ newNode.variables.variables[0].element;
+ expect(element, isNotNull);
+ expect(element.name, 'a');
+ expect(element.nameOffset, newCode.indexOf('a =1'));
+ }
+ {
+ TopLevelVariableElement element =
+ newNode.variables.variables[1].element;
+ expect(element, isNotNull);
+ expect(element.name, 'b');
+ expect(element.nameOffset, newCode.indexOf('b = 2'));
+ }
+ }
+ }
+
+ void _buildNewUnit(String newCode) {
+ this.newCode = newCode;
+ context.setContents(source, newCode);
+ newUnit = context.parseCompilationUnit(source);
+ new IncrementalCompilationUnitElementBuilder(oldUnit, newUnit).build();
+ expect(newUnit.element, unitElement);
+ }
+
+ void _buildOldUnit(String oldCode, [Source libSource]) {
+ this.oldCode = oldCode;
+ source = newSource('/test.dart', oldCode);
+ if (libSource == null) {
+ libSource = source;
+ }
+ oldUnit = context.resolveCompilationUnit2(source, libSource);
+ unitElement = oldUnit.element;
+ expect(unitElement, isNotNull);
+ }
+}
diff --git a/pkg/analyzer/test/src/task/model_test.dart b/pkg/analyzer/test/src/task/model_test.dart
index 5fd31ec7..b75afd6 100644
--- a/pkg/analyzer/test/src/task/model_test.dart
+++ b/pkg/analyzer/test/src/task/model_test.dart
@@ -17,8 +17,8 @@
main() {
groupSep = ' | ';
runReflectiveTests(AnalysisTaskTest);
- runReflectiveTests(ContributionPointImplTest);
runReflectiveTests(ResultDescriptorImplTest);
+ runReflectiveTests(SimpleResultCachingPolicyTest);
runReflectiveTests(TaskDescriptorImplTest);
}
@@ -56,52 +56,20 @@
}
@reflectiveTest
-class ContributionPointImplTest extends EngineTestCase {
- test_contributors_empty() {
- CompositeResultDescriptorImpl point =
- new CompositeResultDescriptorImpl('point');
- List<ResultDescriptor> contributors = point.contributors;
- expect(contributors, isEmpty);
- }
-
- test_contributors_nonEmpty() {
- ResultDescriptorImpl result1 = new ResultDescriptorImpl('result1', null);
- ResultDescriptorImpl result2 = new ResultDescriptorImpl('result2', null);
- CompositeResultDescriptorImpl point =
- new CompositeResultDescriptorImpl('point');
- point.recordContributor(result1);
- point.recordContributor(result2);
- List<ResultDescriptor> contributors = point.contributors;
- expect(contributors, isNotNull);
- expect(contributors, hasLength(2));
- if (!(contributors[0] == result1 && contributors[1] == result2) ||
- (contributors[0] == result2 && contributors[1] == result1)) {
- fail("Invalid contributors: $contributors");
- }
- }
-
- test_create() {
- expect(new CompositeResultDescriptorImpl('name'), isNotNull);
- }
-
- test_name() {
- String name = 'point';
- CompositeResultDescriptorImpl point =
- new CompositeResultDescriptorImpl(name);
- expect(point.name, name);
- }
-}
-
-@reflectiveTest
class ResultDescriptorImplTest extends EngineTestCase {
- test_create_withContribution() {
- CompositeResultDescriptorImpl point =
- new CompositeResultDescriptorImpl('point');
+ test_create_withCachingPolicy() {
+ ResultCachingPolicy policy = new SimpleResultCachingPolicy(128, 16);
ResultDescriptorImpl result =
- new ResultDescriptorImpl('result', null, contributesTo: point);
- expect(result, isNotNull);
- List<ResultDescriptor> contributors = point.contributors;
- expect(contributors, unorderedEquals([result]));
+ new ResultDescriptorImpl('result', null, cachingPolicy: policy);
+ expect(result.cachingPolicy, same(policy));
+ }
+
+ test_create_withoutCachingPolicy() {
+ ResultDescriptorImpl result = new ResultDescriptorImpl('result', null);
+ ResultCachingPolicy cachingPolicy = result.cachingPolicy;
+ expect(cachingPolicy, isNotNull);
+ expect(cachingPolicy.maxActiveSize, -1);
+ expect(cachingPolicy.maxIdleSize, -1);
}
test_create_withoutContribution() {
@@ -123,6 +91,16 @@
}
@reflectiveTest
+class SimpleResultCachingPolicyTest extends EngineTestCase {
+ test_create() {
+ ResultCachingPolicy policy = new SimpleResultCachingPolicy(256, 32);
+ expect(policy.maxActiveSize, 256);
+ expect(policy.maxIdleSize, 32);
+ expect(policy.measure(null), 1);
+ }
+}
+
+@reflectiveTest
class TaskDescriptorImplTest extends EngineTestCase {
test_create() {
String name = 'name';
@@ -148,13 +126,10 @@
AnalysisContext context = null;
AnalysisTarget target = new TestSource();
Map<String, dynamic> inputs = {};
- String inputMemento = 'main() {}';
- AnalysisTask createTask =
- descriptor.createTask(context, target, inputs, inputMemento);
+ AnalysisTask createTask = descriptor.createTask(context, target, inputs);
expect(createTask, isNotNull);
expect(createTask.context, context);
expect(createTask.inputs, inputs);
- expect(createTask.inputMemento, inputMemento);
expect(createTask.target, target);
}
}
diff --git a/pkg/analyzer/test/src/task/test_all.dart b/pkg/analyzer/test/src/task/test_all.dart
index bee52dc..2b6de23 100644
--- a/pkg/analyzer/test/src/task/test_all.dart
+++ b/pkg/analyzer/test/src/task/test_all.dart
@@ -7,8 +7,11 @@
import 'package:unittest/unittest.dart';
import 'dart_test.dart' as dart_test;
+import 'dart_work_manager_test.dart' as dart_work_manager_test;
import 'driver_test.dart' as driver_test;
import 'general_test.dart' as general_test;
+import 'incremental_element_builder_test.dart'
+ as incremental_element_builder_test;
import 'inputs_test.dart' as inputs_test;
import 'manager_test.dart' as manager_test;
import 'model_test.dart' as model_test;
@@ -18,8 +21,10 @@
groupSep = ' | ';
group('task tests', () {
dart_test.main();
+ dart_work_manager_test.main();
driver_test.main();
general_test.main();
+ incremental_element_builder_test.main();
inputs_test.main();
manager_test.main();
model_test.main();
diff --git a/pkg/analyzer/test/src/task/test_support.dart b/pkg/analyzer/test/src/task/test_support.dart
index 7ac0d82..80cd7c3 100644
--- a/pkg/analyzer/test/src/task/test_support.dart
+++ b/pkg/analyzer/test/src/task/test_support.dart
@@ -23,11 +23,6 @@
CaughtException exception;
/**
- * The memento to associate with the result.
- */
- dynamic memento;
-
- /**
* The results whose values are to be provided as outputs from this task.
*/
List<ResultDescriptor> results;
@@ -38,8 +33,7 @@
int value;
TestAnalysisTask(AnalysisContext context, AnalysisTarget target,
- {this.descriptor, this.exception, this.memento, this.results,
- this.value: 1})
+ {this.descriptor, this.exception, this.results, this.value: 1})
: super(context, target);
@override
@@ -53,12 +47,10 @@
for (ResultDescriptor result in results) {
outputs[result] = value++;
}
- outputMemento = memento;
} else if (descriptor != null) {
for (ResultDescriptor result in descriptor.results) {
outputs[result] = value++;
}
- outputMemento = memento;
}
}
}
diff --git a/pkg/analyzer2dart/lib/src/modely.dart b/pkg/analyzer2dart/lib/src/modely.dart
index 640680f..b386d5a 100644
--- a/pkg/analyzer2dart/lib/src/modely.dart
+++ b/pkg/analyzer2dart/lib/src/modely.dart
@@ -420,7 +420,7 @@
}
class ParameterElementY extends ElementY
- with AnalyzableElementY, AstElementY
+ with AnalyzableElementY, AstElementY, VariableElementMixin
implements dart2js.ParameterElement {
analyzer.ParameterElement get element => super.element;
@@ -459,12 +459,6 @@
get functionDeclaration => unsupported('functionDeclaration');
@override
- get initializer => unsupported('initializer');
-
- @override
- get memberContext => unsupported('memberContext');
-
- @override
get functionSignature => unsupported('functionSignature');
}
@@ -718,6 +712,9 @@
@override
get memberContext => unsupported('memberContext');
+
+ @override
+ get constant => unsupported('constant');
}
class TopLevelVariableElementY extends ElementY
@@ -861,6 +858,21 @@
@override
get nestedClosures => unsupported('nestedClosures');
+
+ @override
+ get constantConstructor => unsupported('constantConstructor');
+
+ @override
+ get isFromEnvironmentConstructor {
+ unsupported('isFromEnvironmentConstructor');
+ }
+
+ @override
+ bool get isCyclicRedirection => effectiveTarget.isRedirectingFactory;
+
+ // TODO(johnniwinther): implement redirectionDeferredPrefix
+ @override
+ dart2js.PrefixElement get redirectionDeferredPrefix => null;
}
class InstanceMethodElementY extends ElementY
diff --git a/pkg/compiler/lib/src/closure.dart b/pkg/compiler/lib/src/closure.dart
index 242fb82..355e526 100644
--- a/pkg/compiler/lib/src/closure.dart
+++ b/pkg/compiler/lib/src/closure.dart
@@ -4,20 +4,20 @@
library closureToClassMapper;
-import "elements/elements.dart";
-import "dart2jslib.dart";
-import "dart_types.dart";
-import "js_backend/js_backend.dart" show JavaScriptBackend;
-import "scanner/scannerlib.dart" show Token;
-import "tree/tree.dart";
-import "util/util.dart";
-import "elements/modelx.dart"
+import 'constants/expressions.dart';
+import 'dart2jslib.dart';
+import 'dart_types.dart';
+import 'elements/elements.dart';
+import 'elements/modelx.dart'
show BaseFunctionElementX,
ClassElementX,
ElementX,
LocalFunctionElementX;
-import "elements/visitor.dart" show ElementVisitor;
-
+import 'elements/visitor.dart' show ElementVisitor;
+import 'js_backend/js_backend.dart' show JavaScriptBackend;
+import 'scanner/scannerlib.dart' show Token;
+import 'tree/tree.dart';
+import 'util/util.dart';
import 'universe/universe.dart' show
Universe;
@@ -151,6 +151,9 @@
@override
List<FunctionElement> get nestedClosures => const <FunctionElement>[];
+
+ @override
+ ConstantExpression get constant => null;
}
// TODO(ahe): These classes continuously cause problems. We need to find
@@ -276,6 +279,9 @@
ResolvedAst get resolvedAst {
throw new UnsupportedError("BoxFieldElement.resolvedAst");
}
+
+ @override
+ ConstantExpression get constant => null;
}
/// A local variable used encode the direct (uncaptured) references to [this].
@@ -298,7 +304,7 @@
LocalFunctionElementX other,
ClosureClassElement enclosing)
: expression = other,
- super(name, other.kind, other.modifiers, enclosing, false) {
+ super(name, other.kind, other.modifiers, enclosing) {
asyncMarker = other.asyncMarker;
functionSignatureCache = other.functionSignature;
}
diff --git a/pkg/compiler/lib/src/compile_time_constants.dart b/pkg/compiler/lib/src/compile_time_constants.dart
index 83e1307..6273efa 100644
--- a/pkg/compiler/lib/src/compile_time_constants.dart
+++ b/pkg/compiler/lib/src/compile_time_constants.dart
@@ -348,7 +348,7 @@
DartType type = elements.getType(node);
return new AstConstant(
context, node, new ListConstantExpression(
- new ListConstantValue(type, argumentValues),
+ constantSystem.createList(type, argumentValues),
type,
argumentExpressions));
}
@@ -479,10 +479,8 @@
}
ConstantExpression makeTypeConstant(DartType elementType) {
- DartType constantType =
- compiler.backend.typeImplementation.computeType(compiler);
return new TypeConstantExpression(
- new TypeConstantValue(elementType, constantType), elementType);
+ constantSystem.createType(compiler, elementType), elementType);
}
/// Returns true if the prefix of the send resolves to a deferred import
@@ -827,15 +825,6 @@
CallStructure callStructure,
List<AstConstant> normalizedArguments,
List<AstConstant> concreteArguments) {
- AstConstant createEvaluatedConstant(ConstantValue value) {
- return new AstConstant(
- context, node, new ConstructedConstantExpression(
- value,
- type,
- constructor,
- callStructure,
- concreteArguments.map((e) => e.expression).toList()));
- }
var firstArgument = normalizedArguments[0].value;
ConstantValue defaultValue = normalizedArguments[1].value;
@@ -881,8 +870,26 @@
return null;
}
+ String name =
+ firstArgument.primitiveValue.slowToString();
String value =
- compiler.fromEnvironment(firstArgument.primitiveValue.slowToString());
+ compiler.fromEnvironment(name);
+
+ AstConstant createEvaluatedConstant(ConstantValue value) {
+
+ ConstantExpression expression;
+ if (constructor == compiler.intEnvironment) {
+ expression = new IntFromEnvironmentConstantExpression(
+ value, name, normalizedArguments[1].expression);
+ } else if (constructor == compiler.boolEnvironment) {
+ expression = new BoolFromEnvironmentConstantExpression(
+ value, name, normalizedArguments[1].expression);
+ } else if (constructor == compiler.stringEnvironment) {
+ expression = new StringFromEnvironmentConstantExpression(
+ value, name, normalizedArguments[1].expression);
+ }
+ return new AstConstant(context, node, expression);
+ }
if (value == null) {
return createEvaluatedConstant(defaultValue);
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
index 4671212..6d8b6d0 100644
--- a/pkg/compiler/lib/src/compiler.dart
+++ b/pkg/compiler/lib/src/compiler.dart
@@ -25,6 +25,7 @@
* Invariant: [element] must be a declaration element.
*/
final AstElement element;
+
TreeElements get resolutionTree;
WorkItem(this.element, this.compilationContext) {
@@ -186,16 +187,30 @@
/// [WorkItem] used exclusively by the [CodegenEnqueuer].
class CodegenWorkItem extends WorkItem {
Registry registry;
- final TreeElements resolutionTree;
- CodegenWorkItem(AstElement element,
- ItemCompilationContext compilationContext)
- : this.resolutionTree = element.resolvedAst.elements,
- super(element, compilationContext) {
- assert(invariant(element, resolutionTree != null,
+ factory CodegenWorkItem(
+ Compiler compiler,
+ AstElement element,
+ ItemCompilationContext compilationContext) {
+ // If this assertion fails, the resolution callbacks of the backend may be
+ // missing call of form registry.registerXXX. Alternatively, the code
+ // generation could spuriously be adding dependencies on things we know we
+ // don't need.
+ assert(invariant(element,
+ compiler.enqueuer.resolution.hasBeenResolved(element),
+ message: "$element has not been resolved."));
+ assert(invariant(element, element.resolvedAst.elements != null,
message: 'Resolution tree is null for $element in codegen work item'));
+ return new CodegenWorkItem.internal(element, compilationContext);
}
+ CodegenWorkItem.internal(
+ AstElement element,
+ ItemCompilationContext compilationContext)
+ : super(element, compilationContext);
+
+ TreeElements get resolutionTree => element.resolvedAst.elements;
+
void run(Compiler compiler, CodegenEnqueuer world) {
if (world.isProcessed(element)) return;
@@ -418,7 +433,7 @@
/// have special treatment, such as being allowed to extends blacklisted
/// classes or member being eagerly resolved.
bool isBackendLibrary(LibraryElement library) {
- // TODO(johnnwinther): Remove this when patching is only done by the
+ // TODO(johnniwinther): Remove this when patching is only done by the
// JavaScript backend.
Uri canonicalUri = library.canonicalUri;
if (canonicalUri == js_backend.JavaScriptBackend.DART_JS_HELPER ||
@@ -654,7 +669,7 @@
final CacheStrategy cacheStrategy;
/**
- * Map from token to the first preceeding comment token.
+ * Map from token to the first preceding comment token.
*/
final TokenMap commentMap = new TokenMap();
@@ -852,9 +867,15 @@
Element identicalFunction;
Element loadLibraryFunction;
Element functionApplyMethod;
- Element intEnvironment;
- Element boolEnvironment;
- Element stringEnvironment;
+
+ /// The [int.fromEnvironment] constructor.
+ ConstructorElement intEnvironment;
+
+ /// The [bool.fromEnvironment] constructor.
+ ConstructorElement boolEnvironment;
+
+ /// The [String.fromEnvironment] constructor.
+ ConstructorElement stringEnvironment;
/// Tracks elements with compile-time errors.
final Set<Element> elementsWithCompileTimeErrors = new Set<Element>();
@@ -1053,7 +1074,7 @@
progress = new Stopwatch()..start();
}
- // TODO(johnniwinther): Separate the dependency tracking from the enqueueing
+ // TODO(johnniwinther): Separate the dependency tracking from the enqueuing
// for global dependencies.
globalDependencies =
new CodegenRegistry(this, new TreeElementMapping(null));
@@ -2420,7 +2441,10 @@
InterfaceType get numType => numClass.computeType(compiler);
@override
- InterfaceType get stringType => stringClass.computeType(compiler);
+ InterfaceType get stringType => stringClass.computeType(compiler);
+
+ @override
+ InterfaceType get typeType => typeClass.computeType(compiler);
@override
InterfaceType iterableType([DartType elementType = const DynamicType()]) {
diff --git a/pkg/compiler/lib/src/constant_system_dart.dart b/pkg/compiler/lib/src/constant_system_dart.dart
index a827d59..f140cf5 100644
--- a/pkg/compiler/lib/src/constant_system_dart.dart
+++ b/pkg/compiler/lib/src/constant_system_dart.dart
@@ -394,13 +394,31 @@
const DartConstantSystem();
+
+ @override
IntConstantValue createInt(int i) => new IntConstantValue(i);
+
+ @override
DoubleConstantValue createDouble(double d) => new DoubleConstantValue(d);
+
+ @override
StringConstantValue createString(DartString string) {
return new StringConstantValue(string);
}
+
+ @override
BoolConstantValue createBool(bool value) => new BoolConstantValue(value);
+
+ @override
NullConstantValue createNull() => new NullConstantValue();
+
+ @override
+ ListConstantValue createList(InterfaceType type,
+ List<ConstantValue> values) {
+ return new ListConstantValue(type, values);
+ }
+
+ @override
MapConstantValue createMap(Compiler compiler,
InterfaceType type,
List<ConstantValue> keys,
@@ -408,6 +426,15 @@
return new MapConstantValue(type, keys, values);
}
+ @override
+ ConstantValue createType(Compiler compiler, DartType type) {
+ // TODO(johnniwinther): Change the `Type` type to
+ // `compiler.coreTypes.typeType` and check the backend specific value in
+ // [checkConstMapKeysDontOverrideEquals] in 'members.dart'.
+ return new TypeConstantValue(type,
+ compiler.backend.typeImplementation.computeType(compiler));
+ }
+
bool isInt(ConstantValue constant) => constant.isInt;
bool isDouble(ConstantValue constant) => constant.isDouble;
bool isString(ConstantValue constant) => constant.isString;
diff --git a/pkg/compiler/lib/src/constants/constant_system.dart b/pkg/compiler/lib/src/constants/constant_system.dart
index e8260b9..085fe29 100644
--- a/pkg/compiler/lib/src/constants/constant_system.dart
+++ b/pkg/compiler/lib/src/constants/constant_system.dart
@@ -61,10 +61,16 @@
ConstantValue createString(DartString string);
ConstantValue createBool(bool value);
ConstantValue createNull();
+ ConstantValue createList(InterfaceType type,
+ List<ConstantValue> values);
+ // TODO(johnniwinther): Remove the need for [compiler].
ConstantValue createMap(Compiler compiler,
InterfaceType type,
List<ConstantValue> keys,
List<ConstantValue> values);
+ // TODO(johnniwinther): Remove the need for [compiler].
+ ConstantValue createType(Compiler compiler,
+ DartType type);
// We need to special case the subtype check for JavaScript constant
// system because an int is a double at runtime.
diff --git a/pkg/compiler/lib/src/constants/constructors.dart b/pkg/compiler/lib/src/constants/constructors.dart
new file mode 100644
index 0000000..3c09a94
--- /dev/null
+++ b/pkg/compiler/lib/src/constants/constructors.dart
@@ -0,0 +1,376 @@
+// Copyright (c) 2015, 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.
+
+library dart2js.constants.constructors;
+
+import '../elements/elements.dart';
+import 'expressions.dart';
+import 'values.dart';
+import '../dart_types.dart';
+import '../resolution/resolution.dart';
+import '../resolution/operators.dart';
+import '../resolution/semantic_visitor.dart';
+import '../resolution/send_structure.dart';
+import '../dart2jslib.dart';
+import '../tree/tree.dart';
+
+ConstantConstructor computeConstantConstructor(ResolvedAst resolvedAst) {
+ ConstantConstructorComputer visitor =
+ new ConstantConstructorComputer(resolvedAst.elements);
+ return resolvedAst.node.accept(visitor);
+}
+
+class ConstantConstructorComputer extends SemanticVisitor
+ with SemanticDeclarationResolvedMixin,
+ DeclarationResolverMixin,
+ GetBulkMixin,
+ SetBulkMixin,
+ ErrorBulkMixin,
+ InvokeBulkMixin,
+ IndexSetBulkMixin,
+ CompoundBulkMixin,
+ UnaryBulkMixin,
+ BaseBulkMixin,
+ BinaryBulkMixin,
+ PrefixBulkMixin,
+ PostfixBulkMixin,
+ NewBulkMixin,
+ InitializerBulkMixin,
+ FunctionBulkMixin,
+ VariableBulkMixin
+ implements SemanticDeclarationVisitor, SemanticSendVisitor {
+ final Map<FieldElement, ConstantExpression> fieldMap =
+ <FieldElement, ConstantExpression>{};
+ final Map<dynamic/*int|String*/, ConstantExpression> defaultValues =
+ <dynamic/*int|String*/, ConstantExpression>{};
+
+ ConstantConstructorComputer(TreeElements elements)
+ : super(elements);
+
+ SemanticDeclarationVisitor get declVisitor => this;
+
+ SemanticSendVisitor get sendVisitor => this;
+
+ ClassElement get currentClass => currentConstructor.enclosingClass;
+
+ ConstructorElement get currentConstructor => elements.analyzedElement;
+
+ apply(Node node, [_]) => node.accept(this);
+
+ visitNode(Node node) {
+ internalError(node, 'Unhandled node $node: ${node.toDebugString()}');
+ }
+
+ @override
+ bulkHandleNode(Node node, String template, _) {
+ internalError(node, template.replaceFirst('#' , '$node'));
+ }
+
+ internalError(Node node, String message) {
+ throw new UnsupportedError(message);
+ }
+
+ ConstantConstructor visitGenerativeConstructorDeclaration(
+ FunctionExpression node,
+ ConstructorElement constructor,
+ NodeList parameters,
+ NodeList initializers,
+ Node body,
+ _) {
+ applyParameters(parameters, _);
+ ConstructedConstantExpression constructorInvocation =
+ applyInitializers(initializers, _);
+ return new GenerativeConstantConstructor(
+ currentClass.thisType, defaultValues, fieldMap, constructorInvocation);
+ }
+
+ ConstantConstructor visitRedirectingGenerativeConstructorDeclaration(
+ FunctionExpression node,
+ ConstructorElement constructor,
+ NodeList parameters,
+ NodeList initializers,
+ _) {
+ applyParameters(parameters, _);
+ ConstructedConstantExpression constructorInvocation =
+ applyInitializers(initializers, _);
+ return new RedirectingGenerativeConstantConstructor(
+ defaultValues, constructorInvocation);
+ }
+
+ ConstantConstructor visitRedirectingFactoryConstructorDeclaration(
+ FunctionExpression node,
+ ConstructorElement constructor,
+ NodeList parameters,
+ InterfaceType redirectionType,
+ ConstructorElement redirectionTarget,
+ _) {
+ List<String> argumentNames = [];
+ List<ConstantExpression> arguments = [];
+ int index = 0;
+ for (ParameterElement parameter in constructor.parameters) {
+ if (parameter.isNamed) {
+ String name = parameter.name;
+ argumentNames.add(name);
+ arguments.add(new NamedArgumentReference(name));
+ } else {
+ arguments.add(new PositionalArgumentReference(index));
+ }
+ index++;
+ }
+ CallStructure callStructure = new CallStructure(index, argumentNames);
+
+ return new RedirectingFactoryConstantConstructor(
+ new ConstructedConstantExpression(null,
+ redirectionType,
+ redirectionTarget,
+ callStructure,
+ arguments));
+ }
+
+ @override
+ visitFactoryConstructorDeclaration(
+ FunctionExpression node,
+ ConstructorElement constructor,
+ NodeList parameters,
+ Node body, _) {
+ // TODO(johnniwinther): Handle constant constructors with errors.
+ internalError(node, "Factory constructor cannot be constant.");
+ }
+
+ applyParameters(NodeList parameters, _) {
+ computeParameterStructures(parameters).forEach((s) => s.dispatch(this, _));
+ }
+
+ visitParameterDeclaration(
+ VariableDefinitions node,
+ Node definition,
+ ParameterElement parameter,
+ int index,
+ _) {
+ // Do nothing.
+ }
+
+ visitOptionalParameterDeclaration(
+ VariableDefinitions node,
+ Node definition,
+ ParameterElement parameter,
+ ConstantExpression defaultValue,
+ int index,
+ _) {
+ assert(invariant(node, defaultValue != null));
+ defaultValues[index] = defaultValue;
+ }
+
+ visitNamedParameterDeclaration(
+ VariableDefinitions node,
+ Node definition,
+ ParameterElement parameter,
+ ConstantExpression defaultValue,
+ _) {
+ assert(invariant(node, defaultValue != null));
+ String name = parameter.name;
+ defaultValues[name] = defaultValue;
+ }
+
+ visitInitializingFormalDeclaration(
+ VariableDefinitions node,
+ Node definition,
+ InitializingFormalElement parameter,
+ int index,
+ _) {
+ fieldMap[parameter.fieldElement] = new PositionalArgumentReference(index);
+ }
+
+ visitOptionalInitializingFormalDeclaration(
+ VariableDefinitions node,
+ Node definition,
+ InitializingFormalElement parameter,
+ ConstantExpression defaultValue,
+ int index,
+ _) {
+ assert(invariant(node, defaultValue != null));
+ defaultValues[index] = defaultValue;
+ fieldMap[parameter.fieldElement] = new PositionalArgumentReference(index);
+ }
+
+ visitNamedInitializingFormalDeclaration(
+ VariableDefinitions node,
+ Node definition,
+ InitializingFormalElement parameter,
+ ConstantExpression defaultValue,
+ _) {
+ assert(invariant(node, defaultValue != null));
+ String name = parameter.name;
+ defaultValues[name] = defaultValue;
+ fieldMap[parameter.fieldElement] = new NamedArgumentReference(name);
+ }
+
+ /// Apply this visitor to the constructor [initializers].
+ ConstructedConstantExpression applyInitializers(NodeList initializers, _) {
+ ConstructedConstantExpression constructorInvocation;
+ if (initializers != null) {
+ for (Node initializer in initializers) {
+ InitializerStructure structure =
+ computeInitializerStructure(initializer);
+ if (structure is SuperConstructorInvokeStructure ||
+ structure is ThisConstructorInvokeStructure) {
+ constructorInvocation = structure.dispatch(this, initializer, _);
+ } else {
+ structure.dispatch(this, initializer, _);
+ }
+ }
+ }
+ if (constructorInvocation == null && !currentClass.isObject) {
+ constructorInvocation =
+ new ConstructedConstantExpression(null,
+ currentClass.supertype,
+ currentClass.superclass.lookupDefaultConstructor(),
+ CallStructure.NO_ARGS,
+ const <ConstantExpression>[]);
+ }
+ return constructorInvocation;
+ }
+
+ visitFieldInitializer(
+ SendSet node,
+ FieldElement field,
+ Node initializer,
+ _) {
+ fieldMap[field] = apply(initializer);
+ }
+
+ visitParameterGet(
+ Send node,
+ ParameterElement parameter,
+ _) {
+ if (parameter.isNamed) {
+ return new NamedArgumentReference(parameter.name);
+ } else {
+ return new PositionalArgumentReference(
+ parameter.functionDeclaration.parameters.indexOf(parameter));
+ }
+ }
+
+ ConstructedConstantExpression visitSuperConstructorInvoke(
+ Send node,
+ ConstructorElement superConstructor,
+ InterfaceType type,
+ NodeList arguments,
+ Selector selector,
+ _) {
+ List<ConstantExpression> argumentExpression =
+ arguments.nodes.map((a) => apply(a)).toList();
+ return new ConstructedConstantExpression(null,
+ type,
+ superConstructor,
+ selector.callStructure,
+ argumentExpression);
+ }
+
+ ConstructedConstantExpression visitThisConstructorInvoke(
+ Send node,
+ ConstructorElement thisConstructor,
+ NodeList arguments,
+ Selector selector,
+ _) {
+ List<ConstantExpression> argumentExpression =
+ arguments.nodes.map((a) => apply(a)).toList();
+ return new ConstructedConstantExpression(null,
+ currentClass.thisType,
+ thisConstructor,
+ selector.callStructure,
+ argumentExpression);
+ }
+
+ @override
+ ConstantExpression visitBinary(
+ Send node,
+ Node left,
+ BinaryOperator operator,
+ Node right,
+ _) {
+ return new BinaryConstantExpression(null,
+ apply(left), operator, apply(right));
+ }
+
+
+ @override
+ ConstantExpression visitUnary(
+ Send node,
+ UnaryOperator operator,
+ Node expression,
+ _) {
+ return new UnaryConstantExpression(null,
+ operator, apply(expression));
+ }
+
+ @override
+ ConstantExpression visitStaticFieldGet(
+ Send node,
+ FieldElement field,
+ _) {
+ return new VariableConstantExpression(null, field);
+ }
+
+ @override
+ ConstantExpression visitTopLevelFieldGet(
+ Send node,
+ FieldElement field,
+ _) {
+ return new VariableConstantExpression(null, field);
+ }
+
+ @override
+ ConstantExpression visitLiteralInt(LiteralInt node) {
+ return new IntConstantExpression(
+ node.value, new IntConstantValue(node.value));
+ }
+
+ @override
+ ConstantExpression visitLiteralBool(LiteralBool node) {
+ return new BoolConstantExpression(node.value, null);
+ }
+
+ @override
+ ConstantExpression visitLiteralNull(LiteralNull node) {
+ return new NullConstantExpression(new NullConstantValue());
+ }
+
+ @override
+ ConstantExpression visitLiteralString(LiteralString node) {
+ return new StringConstantExpression(node.dartString.slowToString(), null);
+ }
+
+ @override
+ ConstantExpression visitConditional(Conditional node) {
+ return new ConditionalConstantExpression(null,
+ apply(node.condition),
+ apply(node.thenExpression),
+ apply(node.elseExpression));
+ }
+
+ @override
+ ConstantExpression visitParenthesizedExpression(ParenthesizedExpression node) {
+ return apply(node.expression);
+ }
+
+ @override
+ ConstantExpression visitTopLevelFunctionInvoke(
+ Send node,
+ MethodElement function,
+ NodeList arguments,
+ CallStructure callStructure,
+ _) {
+ if (function.name != 'identical' || !function.library.isDartCore) {
+ throw new UnsupportedError("Unexpected function call: $function");
+ }
+ return new IdenticalConstantExpression(
+ null, apply(arguments.nodes.head), apply(arguments.nodes.tail.head));
+ }
+
+ @override
+ ConstantExpression visitNamedArgument(NamedArgument node) {
+ return apply(node.expression);
+ }
+}
\ No newline at end of file
diff --git a/pkg/compiler/lib/src/constants/expressions.dart b/pkg/compiler/lib/src/constants/expressions.dart
index c454975..0c6a6ac 100644
--- a/pkg/compiler/lib/src/constants/expressions.dart
+++ b/pkg/compiler/lib/src/constants/expressions.dart
@@ -4,21 +4,25 @@
library dart2js.constants.expressions;
-import '../dart2jslib.dart' show assertDebugMode;
+import '../constants/constant_system.dart';
+import '../dart2jslib.dart' show assertDebugMode, Compiler;
import '../dart_types.dart';
import '../elements/elements.dart' show
ConstructorElement,
Element,
+ FieldElement,
FunctionElement,
PrefixElement,
VariableElement;
import '../resolution/operators.dart';
+import '../tree/tree.dart' show DartString;
import '../universe/universe.dart' show CallStructure;
import 'values.dart';
enum ConstantExpressionKind {
BINARY,
BOOL,
+ BOOL_FROM_ENVIRONMENT,
CONCATENATE,
CONDITIONAL,
CONSTRUCTED,
@@ -28,14 +32,218 @@
FUNCTION,
IDENTICAL,
INT,
+ INT_FROM_ENVIRONMENT,
LIST,
MAP,
NULL,
STRING,
+ STRING_FROM_ENVIRONMENT,
SYMBOL,
TYPE,
UNARY,
VARIABLE,
+
+ POSITIONAL_REFERENCE,
+ NAMED_REFERENCE,
+}
+
+/// Environment used for evaluating constant expressions.
+abstract class Environment {
+ // TODO(johnniwinther): Replace this with [CoreTypes] and maybe [Backend].
+ Compiler get compiler;
+
+ /// Read environments string passed in using the '-Dname=value' option.
+ String readFromEnvironment(String name);
+}
+
+/// The normalized arguments passed to a const constructor computed from the
+/// actual [arguments] and the [defaultValues] of the called construrctor.
+class NormalizedArguments {
+ final Map<dynamic/*int|String*/, ConstantExpression> defaultValues;
+ final CallStructure callStructure;
+ final List<ConstantExpression> arguments;
+
+ NormalizedArguments(this.defaultValues, this.callStructure, this.arguments);
+
+ /// Returns the normalized named argument [name].
+ ConstantExpression getNamedArgument(String name) {
+ int index = callStructure.namedArguments.indexOf(name);
+ if (index == -1) {
+ // The named argument is not provided.
+ return defaultValues[name];
+ }
+ return arguments[index + callStructure.positionalArgumentCount];
+ }
+
+ /// Returns the normalized [index]th positional argument.
+ ConstantExpression getPositionalArgument(int index) {
+ if (index >= callStructure.positionalArgumentCount) {
+ // The positional argument is not provided.
+ return defaultValues[index];
+ }
+ return arguments[index];
+ }
+}
+
+enum ConstantConstructorKind {
+ GENERATIVE,
+ REDIRECTING_GENERATIVE,
+ REDIRECTING_FACTORY,
+}
+
+/// Definition of a constant constructor.
+abstract class ConstantConstructor {
+ ConstantConstructorKind get kind;
+
+ /// Computes the type of the instance created in a const constructor
+ /// invocation with type [newType].
+ InterfaceType computeInstanceType(InterfaceType newType);
+
+ /// Computes the constant expressions of the fields of the created instance
+ /// in a const constructor invocation with [arguments].
+ Map<FieldElement, ConstantExpression> computeInstanceFields(
+ List<ConstantExpression> arguments,
+ CallStructure callStructure);
+}
+
+/// A generative constant constructor.
+class GenerativeConstantConstructor implements ConstantConstructor{
+ final InterfaceType type;
+ final Map<dynamic/*int|String*/, ConstantExpression> defaultValues;
+ final Map<FieldElement, ConstantExpression> fieldMap;
+ final ConstructedConstantExpression superConstructorInvocation;
+
+ GenerativeConstantConstructor(
+ this.type,
+ this.defaultValues,
+ this.fieldMap,
+ this.superConstructorInvocation);
+
+ ConstantConstructorKind get kind => ConstantConstructorKind.GENERATIVE;
+
+ InterfaceType computeInstanceType(InterfaceType newType) {
+ return type.substByContext(newType);
+ }
+
+ Map<FieldElement, ConstantExpression> computeInstanceFields(
+ List<ConstantExpression> arguments,
+ CallStructure callStructure) {
+ NormalizedArguments args = new NormalizedArguments(
+ defaultValues, callStructure, arguments);
+ Map<FieldElement, ConstantExpression> appliedFieldMap =
+ applyFields(args, superConstructorInvocation);
+ fieldMap.forEach((FieldElement field, ConstantExpression constant) {
+ appliedFieldMap[field] = constant.apply(args);
+ });
+ return appliedFieldMap;
+ }
+
+ String toString() {
+ StringBuffer sb = new StringBuffer();
+ sb.write("{'type': $type");
+ defaultValues.forEach((key, ConstantExpression expression) {
+ sb.write(",\n 'default:${key}': ${expression.getText()}");
+ });
+ fieldMap.forEach((FieldElement field, ConstantExpression expression) {
+ sb.write(",\n 'field:${field}': ${expression.getText()}");
+ });
+ if (superConstructorInvocation != null) {
+ sb.write(",\n 'constructor: ${superConstructorInvocation.getText()}");
+ }
+ sb.write("}");
+ return sb.toString();
+ }
+
+ /// Creates the field-to-constant map from applying [args] to
+ /// [constructorInvocation]. If [constructorInvocation] is `null`, an empty
+ /// map is created.
+ static Map<FieldElement, ConstantExpression> applyFields(
+ NormalizedArguments args,
+ ConstructedConstantExpression constructorInvocation) {
+ Map<FieldElement, ConstantExpression> appliedFieldMap =
+ <FieldElement, ConstantExpression>{};
+ if (constructorInvocation != null) {
+ Map<FieldElement, ConstantExpression> fieldMap =
+ constructorInvocation.computeInstanceFields();
+ fieldMap.forEach((FieldElement field, ConstantExpression constant) {
+ appliedFieldMap[field] = constant.apply(args);
+ });
+ }
+ return appliedFieldMap;
+ }
+}
+
+/// A redirecting generative constant constructor.
+class RedirectingGenerativeConstantConstructor implements ConstantConstructor {
+ final Map<dynamic/*int|String*/, ConstantExpression> defaultValues;
+ final ConstructedConstantExpression thisConstructorInvocation;
+
+ RedirectingGenerativeConstantConstructor(
+ this.defaultValues,
+ this.thisConstructorInvocation);
+
+ ConstantConstructorKind get kind {
+ return ConstantConstructorKind.REDIRECTING_GENERATIVE;
+ }
+
+ InterfaceType computeInstanceType(InterfaceType newType) {
+ return thisConstructorInvocation.computeInstanceType()
+ .substByContext(newType);
+ }
+
+ Map<FieldElement, ConstantExpression> computeInstanceFields(
+ List<ConstantExpression> arguments,
+ CallStructure callStructure) {
+ NormalizedArguments args =
+ new NormalizedArguments(defaultValues, callStructure, arguments);
+ Map<FieldElement, ConstantExpression> appliedFieldMap =
+ GenerativeConstantConstructor.applyFields(
+ args, thisConstructorInvocation);
+ return appliedFieldMap;
+ }
+
+ String toString() {
+ StringBuffer sb = new StringBuffer();
+ sb.write("{'type': ${thisConstructorInvocation.type}");
+ defaultValues.forEach((key, ConstantExpression expression) {
+ sb.write(",\n 'default:${key}': ${expression.getText()}");
+ });
+ sb.write(",\n 'constructor': ${thisConstructorInvocation.getText()}");
+ sb.write("}");
+ return sb.toString();
+ }
+}
+
+/// A redirecting factory constant constructor.
+class RedirectingFactoryConstantConstructor implements ConstantConstructor {
+ final ConstructedConstantExpression targetConstructorInvocation;
+
+ RedirectingFactoryConstantConstructor(this.targetConstructorInvocation);
+
+ ConstantConstructorKind get kind {
+ return ConstantConstructorKind.REDIRECTING_FACTORY;
+ }
+
+ InterfaceType computeInstanceType(InterfaceType newType) {
+ return targetConstructorInvocation.computeInstanceType()
+ .substByContext(newType);
+ }
+
+ Map<FieldElement, ConstantExpression> computeInstanceFields(
+ List<ConstantExpression> arguments,
+ CallStructure callStructure) {
+ ConstantConstructor constantConstructor =
+ targetConstructorInvocation.target.constantConstructor;
+ return constantConstructor.computeInstanceFields(arguments, callStructure);
+ }
+
+ String toString() {
+ StringBuffer sb = new StringBuffer();
+ sb.write("{");
+ sb.write("'constructor': ${targetConstructorInvocation.getText()}");
+ sb.write("}");
+ return sb.toString();
+ }
}
/// An expression that is a compile-time constant.
@@ -53,6 +261,8 @@
ConstantExpressionKind get kind;
/// Returns the value of this constant expression.
+ // TODO(johnniwinther): Replace this with an evaluation method that takes
+ // a constant system and an environment.
ConstantValue get value;
// TODO(johnniwinther): Unify precedence handled between constants, front-end
@@ -61,6 +271,14 @@
accept(ConstantExpressionVisitor visitor, [context]);
+ /// Substitute free variables using arguments.
+ ConstantExpression apply(NormalizedArguments arguments) => this;
+
+ /// Compute the [ConstantValue] for this expression using the [environment]
+ /// and the [constantSystem].
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem);
+
String getText() {
ConstExpPrinter printer = new ConstExpPrinter();
accept(printer);
@@ -104,6 +322,13 @@
}
@override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ // TODO(johnniwinther): Use non-constant values for errors.
+ return value;
+ }
+
+ @override
int _computeHashCode() => 13;
@override
@@ -118,10 +343,6 @@
/// The primitive value of this contant expression.
get primitiveValue;
-
- accept(ConstantExpressionVisitor visitor, [context]) {
- return visitor.visitPrimitive(this, context);
- }
}
/// Boolean literal constant.
@@ -133,6 +354,16 @@
ConstantExpressionKind get kind => ConstantExpressionKind.BOOL;
+ accept(ConstantExpressionVisitor visitor, [context]) {
+ return visitor.visitBool(this, context);
+ }
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return constantSystem.createBool(primitiveValue);
+ }
+
@override
int _computeHashCode() => 13 * primitiveValue.hashCode;
@@ -151,6 +382,16 @@
ConstantExpressionKind get kind => ConstantExpressionKind.INT;
+ accept(ConstantExpressionVisitor visitor, [context]) {
+ return visitor.visitInt(this, context);
+ }
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return constantSystem.createInt(primitiveValue);
+ }
+
@override
int _computeHashCode() => 17 * primitiveValue.hashCode;
@@ -169,6 +410,16 @@
ConstantExpressionKind get kind => ConstantExpressionKind.DOUBLE;
+ accept(ConstantExpressionVisitor visitor, [context]) {
+ return visitor.visitDouble(this, context);
+ }
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return constantSystem.createDouble(primitiveValue);
+ }
+
@override
int _computeHashCode() => 19 * primitiveValue.hashCode;
@@ -187,6 +438,16 @@
ConstantExpressionKind get kind => ConstantExpressionKind.STRING;
+ accept(ConstantExpressionVisitor visitor, [context]) {
+ return visitor.visitString(this, context);
+ }
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return constantSystem.createString(new DartString.literal(primitiveValue));
+ }
+
@override
int _computeHashCode() => 23 * primitiveValue.hashCode;
@@ -202,6 +463,16 @@
ConstantExpressionKind get kind => ConstantExpressionKind.NULL;
+ accept(ConstantExpressionVisitor visitor, [context]) {
+ return visitor.visitNull(this, context);
+ }
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return constantSystem.createNull();
+ }
+
get primitiveValue => null;
@override
@@ -226,6 +497,18 @@
}
@override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return constantSystem.createList(type,
+ values.map((v) => v.evaluate(environment, constantSystem)).toList());
+ }
+
+ ConstantExpression apply(NormalizedArguments arguments) {
+ return new ListConstantExpression(null, type,
+ values.map((v) => v.apply(arguments)).toList());
+ }
+
+ @override
int _computeHashCode() {
int hashCode = 13 * type.hashCode + 17 * values.length;
for (ConstantExpression value in values) {
@@ -261,6 +544,21 @@
}
@override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return constantSystem.createMap(environment.compiler,
+ type,
+ keys.map((k) => k.evaluate(environment, constantSystem)).toList(),
+ values.map((v) => v.evaluate(environment, constantSystem)).toList());
+ }
+
+ ConstantExpression apply(NormalizedArguments arguments) {
+ return new MapConstantExpression(null, type,
+ keys.map((k) => k.apply(arguments)).toList(),
+ values.map((v) => v.apply(arguments)).toList());
+ }
+
+ @override
int _computeHashCode() {
int hashCode = 13 * type.hashCode + 17 * values.length;
for (ConstantExpression value in values) {
@@ -296,6 +594,7 @@
this.callStructure,
this.arguments) {
assert(type.element == target.enclosingClass);
+ assert(!arguments.contains(null));
}
ConstantExpressionKind get kind => ConstantExpressionKind.CONSTRUCTED;
@@ -304,6 +603,33 @@
return visitor.visitConstructed(this, context);
}
+ Map<FieldElement, ConstantExpression> computeInstanceFields() {
+ return target.constantConstructor.computeInstanceFields(
+ arguments, callStructure);
+ }
+
+ InterfaceType computeInstanceType() {
+ return target.constantConstructor.computeInstanceType(type);
+ }
+
+ ConstructedConstantExpression apply(NormalizedArguments arguments) {
+ return new ConstructedConstantExpression(null,
+ type, target, callStructure,
+ this.arguments.map((a) => a.apply(arguments)).toList());
+ }
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ Map<FieldElement, ConstantValue> fieldValues =
+ <FieldElement, ConstantValue>{};
+ computeInstanceFields().forEach(
+ (FieldElement field, ConstantExpression constant) {
+ fieldValues[field] = constant.evaluate(environment, constantSystem);
+ });
+ return new ConstructedConstantValue(computeInstanceType(), fieldValues);
+ }
+
@override
int _computeHashCode() {
int hashCode =
@@ -331,9 +657,9 @@
/// String literal with juxtaposition and/or interpolations.
class ConcatenateConstantExpression extends ConstantExpression {
final StringConstantValue value;
- final List<ConstantExpression> arguments;
+ final List<ConstantExpression> expressions;
- ConcatenateConstantExpression(this.value, this.arguments);
+ ConcatenateConstantExpression(this.value, this.expressions);
ConstantExpressionKind get kind => ConstantExpressionKind.CONCATENATE;
@@ -341,10 +667,43 @@
return visitor.visitConcatenate(this, context);
}
+ ConstantExpression apply(NormalizedArguments arguments) {
+ return new ConcatenateConstantExpression(null,
+ expressions.map((a) => a.apply(arguments)).toList());
+ }
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ DartString accumulator;
+ for (ConstantExpression expression in expressions) {
+ ConstantValue value = expression.evaluate(environment, constantSystem);
+ DartString valueString;
+ if (value.isNum || value.isBool) {
+ PrimitiveConstantValue primitive = value;
+ valueString =
+ new DartString.literal(primitive.primitiveValue.toString());
+ } else if (value.isString) {
+ PrimitiveConstantValue primitive = value;
+ valueString = primitive.primitiveValue;
+ } else {
+ // TODO(johnniwinther): Specialize message to indicated that the problem
+ // is not constness but the types of the const expressions.
+ return new NonConstantValue();
+ }
+ if (accumulator == null) {
+ accumulator = valueString;
+ } else {
+ accumulator = new DartString.concat(accumulator, valueString);
+ }
+ }
+ return constantSystem.createString(accumulator);
+ }
+
@override
int _computeHashCode() {
- int hashCode = 17 * arguments.length;
- for (ConstantExpression value in arguments) {
+ int hashCode = 17 * expressions.length;
+ for (ConstantExpression value in expressions) {
hashCode ^= 19 * value.hashCode;
}
return hashCode;
@@ -352,9 +711,9 @@
@override
bool _equals(ConcatenateConstantExpression other) {
- if (arguments.length != other.arguments.length) return false;
- for (int i = 0; i < arguments.length; i++) {
- if (arguments[i] != other.arguments[i]) return false;
+ if (expressions.length != other.expressions.length) return false;
+ for (int i = 0; i < expressions.length; i++) {
+ if (expressions[i] != other.expressions[i]) return false;
}
return true;
}
@@ -380,6 +739,13 @@
bool _equals(SymbolConstantExpression other) {
return name == other.name;
}
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ // TODO(johnniwinther): Implement this.
+ throw new UnsupportedError('SymbolConstantExpression.evaluate');
+ }
}
/// Type literal.
@@ -399,6 +765,12 @@
}
@override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return constantSystem.createType(environment.compiler, type);
+ }
+
+ @override
int _computeHashCode() => 13 * type.hashCode;
@override
@@ -421,6 +793,12 @@
}
@override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return element.constant.evaluate(environment, constantSystem);
+ }
+
+ @override
int _computeHashCode() => 13 * element.hashCode;
@override
@@ -443,6 +821,12 @@
}
@override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return new FunctionConstantValue(element);
+ }
+
+ @override
int _computeHashCode() => 13 * element.hashCode;
@override
@@ -468,6 +852,22 @@
return visitor.visitBinary(this, context);
}
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return constantSystem.lookupBinary(operator).fold(
+ left.evaluate(environment, constantSystem),
+ right.evaluate(environment, constantSystem));
+ }
+
+ ConstantExpression apply(NormalizedArguments arguments) {
+ return new BinaryConstantExpression(
+ value,
+ left.apply(arguments),
+ operator,
+ right.apply(arguments));
+ }
+
int get precedence => PRECEDENCE_MAP[operator.kind];
@override
@@ -521,6 +921,21 @@
return visitor.visitIdentical(this, context);
}
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return constantSystem.identity.fold(
+ left.evaluate(environment, constantSystem),
+ right.evaluate(environment, constantSystem));
+ }
+
+ ConstantExpression apply(NormalizedArguments arguments) {
+ return new IdenticalConstantExpression(
+ value,
+ left.apply(arguments),
+ right.apply(arguments));
+ }
+
int get precedence => 15;
@override
@@ -552,6 +967,20 @@
return visitor.visitUnary(this, context);
}
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return constantSystem.lookupUnary(operator).fold(
+ expression.evaluate(environment, constantSystem));
+ }
+
+ ConstantExpression apply(NormalizedArguments arguments) {
+ return new UnaryConstantExpression(
+ value,
+ operator,
+ expression.apply(arguments));
+ }
+
int get precedence => PRECEDENCE_MAP[operator.kind];
@override
@@ -591,6 +1020,14 @@
return visitor.visitConditional(this, context);
}
+ ConstantExpression apply(NormalizedArguments arguments) {
+ return new ConditionalConstantExpression(
+ value,
+ condition.apply(arguments),
+ trueExp.apply(arguments),
+ falseExp.apply(arguments));
+ }
+
int get precedence => 3;
@override
@@ -606,6 +1043,225 @@
trueExp == other.trueExp &&
falseExp == other.falseExp;
}
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ ConstantValue conditionValue =
+ condition.evaluate(environment, constantSystem);
+ ConstantValue trueValue =
+ trueExp.evaluate(environment, constantSystem);
+ ConstantValue falseValue =
+ falseExp.evaluate(environment, constantSystem);
+ if (conditionValue.isTrue) {
+ return trueValue;
+ } else if (conditionValue.isFalse) {
+ return falseValue;
+ } else {
+ return new NonConstantValue();
+ }
+ }
+}
+
+/// A reference to a position parameter.
+class PositionalArgumentReference extends ConstantExpression {
+ final int index;
+
+ PositionalArgumentReference(this.index);
+
+ ConstantExpressionKind get kind {
+ return ConstantExpressionKind.POSITIONAL_REFERENCE;
+ }
+
+ accept(ConstantExpressionVisitor visitor, [context]) {
+ return visitor.visitPositional(this, context);
+ }
+
+ ConstantValue get value {
+ throw new UnsupportedError('PositionalArgumentReference.value');
+ }
+
+ ConstantExpression apply(NormalizedArguments arguments) {
+ return arguments.getPositionalArgument(index);
+ }
+
+ @override
+ int _computeHashCode() => 13 * index.hashCode;
+
+ @override
+ bool _equals(PositionalArgumentReference other) => index == other.index;
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ throw new UnsupportedError('PositionalArgumentReference.evaluate');
+ }
+}
+
+/// A reference to a named parameter.
+class NamedArgumentReference extends ConstantExpression {
+ final String name;
+
+ NamedArgumentReference(this.name);
+
+ ConstantExpressionKind get kind {
+ return ConstantExpressionKind.NAMED_REFERENCE;
+ }
+
+ accept(ConstantExpressionVisitor visitor, [context]) {
+ return visitor.visitNamed(this, context);
+ }
+
+ ConstantValue get value {
+ throw new UnsupportedError('NamedArgumentReference.value');
+ }
+
+ ConstantExpression apply(NormalizedArguments arguments) {
+ return arguments.getNamedArgument(name);
+ }
+
+ @override
+ int _computeHashCode() => 13 * name.hashCode;
+
+ @override
+ bool _equals(NamedArgumentReference other) => name == other.name;
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ throw new UnsupportedError('NamedArgumentReference.evaluate');
+ }
+}
+
+abstract class FromEnvironmentConstantExpression extends ConstantExpression {
+ final ConstantValue value;
+ final String name;
+ final ConstantExpression defaultValue;
+
+ FromEnvironmentConstantExpression(this.value, this.name, this.defaultValue);
+
+ @override
+ int _computeHashCode() {
+ return 13 * name.hashCode +
+ 17 * defaultValue.hashCode;
+ }
+
+ @override
+ bool _equals(FromEnvironmentConstantExpression other) {
+ return name == other.name &&
+ defaultValue == other.defaultValue;
+ }
+}
+
+/// A `const bool.fromEnvironment` constant.
+class BoolFromEnvironmentConstantExpression
+ extends FromEnvironmentConstantExpression {
+
+ BoolFromEnvironmentConstantExpression(
+ ConstantValue value,
+ String name,
+ ConstantExpression defaultValue)
+ : super(value, name, defaultValue);
+
+ ConstantExpressionKind get kind {
+ return ConstantExpressionKind.BOOL_FROM_ENVIRONMENT;
+ }
+
+ accept(ConstantExpressionVisitor visitor, [context]) {
+ return visitor.visitBoolFromEnvironment(this, context);
+ }
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ String text = environment.readFromEnvironment(name);
+ if (text == 'true') {
+ return constantSystem.createBool(true);
+ } else if (text == 'false') {
+ return constantSystem.createBool(false);
+ } else {
+ return defaultValue.evaluate(environment, constantSystem);
+ }
+ }
+
+ ConstantExpression apply(NormalizedArguments arguments) {
+ return new BoolFromEnvironmentConstantExpression(
+ null, name, defaultValue.apply(arguments));
+ }
+}
+
+/// A `const int.fromEnvironment` constant.
+class IntFromEnvironmentConstantExpression
+ extends FromEnvironmentConstantExpression {
+
+ IntFromEnvironmentConstantExpression(
+ ConstantValue value,
+ String name,
+ ConstantExpression defaultValue)
+ : super(value, name, defaultValue);
+
+ ConstantExpressionKind get kind {
+ return ConstantExpressionKind.INT_FROM_ENVIRONMENT;
+ }
+
+ accept(ConstantExpressionVisitor visitor, [context]) {
+ return visitor.visitIntFromEnvironment(this, context);
+ }
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ int value;
+ String text = environment.readFromEnvironment(name);
+ if (text != null) {
+ value = int.parse(text, onError: (_) => null);
+ }
+ if (value == null) {
+ return defaultValue.evaluate(environment, constantSystem);
+ } else {
+ return constantSystem.createInt(value);
+ }
+ }
+
+ ConstantExpression apply(NormalizedArguments arguments) {
+ return new IntFromEnvironmentConstantExpression(
+ null, name, defaultValue.apply(arguments));
+ }
+}
+
+/// A `const String.fromEnvironment` constant.
+class StringFromEnvironmentConstantExpression
+ extends FromEnvironmentConstantExpression {
+
+ StringFromEnvironmentConstantExpression(
+ ConstantValue value,
+ String name,
+ ConstantExpression defaultValue)
+ : super(value, name, defaultValue);
+
+ ConstantExpressionKind get kind {
+ return ConstantExpressionKind.STRING_FROM_ENVIRONMENT;
+ }
+
+ accept(ConstantExpressionVisitor visitor, [context]) {
+ return visitor.visitStringFromEnvironment(this, context);
+ }
+
+ @override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ String text = environment.readFromEnvironment(name);
+ if (text == null) {
+ return defaultValue.evaluate(environment, constantSystem);
+ } else {
+ return constantSystem.createString(new DartString.literal(text));
+ }
+ }
+
+ ConstantExpression apply(NormalizedArguments arguments) {
+ return new StringFromEnvironmentConstantExpression(
+ null, name, defaultValue.apply(arguments));
+ }
}
/// A constant expression referenced with a deferred prefix.
@@ -620,6 +1276,12 @@
ConstantExpressionKind get kind => ConstantExpressionKind.DEFERRED;
@override
+ ConstantValue evaluate(Environment environment,
+ ConstantSystem constantSystem) {
+ return expression.evaluate(environment, constantSystem);
+ }
+
+ @override
int _computeHashCode() {
return 13 * expression.hashCode;
}
@@ -635,27 +1297,40 @@
}
}
-abstract class ConstantExpressionVisitor<C, R> {
+abstract class ConstantExpressionVisitor<R, A> {
const ConstantExpressionVisitor();
- R visit(ConstantExpression constant, C context) {
+ R visit(ConstantExpression constant, A context) {
return constant.accept(this, context);
}
- R visitPrimitive(PrimitiveConstantExpression exp, C context);
- R visitList(ListConstantExpression exp, C context);
- R visitMap(MapConstantExpression exp, C context);
- R visitConstructed(ConstructedConstantExpression exp, C context);
- R visitConcatenate(ConcatenateConstantExpression exp, C context);
- R visitSymbol(SymbolConstantExpression exp, C context);
- R visitType(TypeConstantExpression exp, C context);
- R visitVariable(VariableConstantExpression exp, C context);
- R visitFunction(FunctionConstantExpression exp, C context);
- R visitBinary(BinaryConstantExpression exp, C context);
- R visitIdentical(IdenticalConstantExpression exp, C context);
- R visitUnary(UnaryConstantExpression exp, C context);
- R visitConditional(ConditionalConstantExpression exp, C context);
- R visitDeferred(DeferredConstantExpression exp, C context);
+ R visitBool(BoolConstantExpression exp, A context);
+ R visitInt(IntConstantExpression exp, A context);
+ R visitDouble(DoubleConstantExpression exp, A context);
+ R visitString(StringConstantExpression exp, A context);
+ R visitNull(NullConstantExpression exp, A context);
+ R visitList(ListConstantExpression exp, A context);
+ R visitMap(MapConstantExpression exp, A context);
+ R visitConstructed(ConstructedConstantExpression exp, A context);
+ R visitConcatenate(ConcatenateConstantExpression exp, A context);
+ R visitSymbol(SymbolConstantExpression exp, A context);
+ R visitType(TypeConstantExpression exp, A context);
+ R visitVariable(VariableConstantExpression exp, A context);
+ R visitFunction(FunctionConstantExpression exp, A context);
+ R visitBinary(BinaryConstantExpression exp, A context);
+ R visitIdentical(IdenticalConstantExpression exp, A context);
+ R visitUnary(UnaryConstantExpression exp, A context);
+ R visitConditional(ConditionalConstantExpression exp, A context);
+ R visitBoolFromEnvironment(BoolFromEnvironmentConstantExpression exp,
+ A context);
+ R visitIntFromEnvironment(IntFromEnvironmentConstantExpression exp,
+ A context);
+ R visitStringFromEnvironment(StringFromEnvironmentConstantExpression exp,
+ A context);
+ R visitDeferred(DeferredConstantExpression exp, A context);
+
+ R visitPositional(PositionalArgumentReference exp, A context);
+ R visitNamed(NamedArgumentReference exp, A context);
}
/// Represents the declaration of a constant [element] with value [expression].
@@ -702,9 +1377,34 @@
return constant.accept(this, null);
}
+ void visitPrimitive(PrimitiveConstantExpression exp) {
+ sb.write(exp.primitiveValue);
+ }
+
@override
- void visitPrimitive(PrimitiveConstantExpression exp, [_]) {
- sb.write(exp.value.unparse());
+ void visitBool(BoolConstantExpression exp, [_]) {
+ visitPrimitive(exp);
+ }
+
+ @override
+ void visitDouble(DoubleConstantExpression exp, [_]) {
+ visitPrimitive(exp);
+ }
+
+ @override
+ void visitInt(IntConstantExpression exp, [_]) {
+ visitPrimitive(exp);
+ }
+
+ @override
+ void visitNull(NullConstantExpression exp, [_]) {
+ visitPrimitive(exp);
+ }
+
+ @override
+ void visitString(StringConstantExpression exp, [_]) {
+ // TODO(johnniwinther): Ensure correct escaping.
+ sb.write('"${exp.primitiveValue}"');
}
@override
@@ -839,11 +1539,46 @@
}
@override
- visitDeferred(DeferredConstantExpression exp, context) {
+ void visitPositional(PositionalArgumentReference exp, [_]) {
+ // TODO(johnniwinther): Maybe this should throw.
+ sb.write('args[${exp.index}]');
+ }
+
+ @override
+ void visitNamed(NamedArgumentReference exp, [_]) {
+ // TODO(johnniwinther): Maybe this should throw.
+ sb.write('args[${exp.name}]');
+ }
+
+ @override
+ void visitDeferred(DeferredConstantExpression exp, context) {
sb.write(exp.prefix.deferredImport.prefix.source);
sb.write('.');
write(exp, exp.expression);
}
+ @override
+ void visitBoolFromEnvironment(BoolFromEnvironmentConstantExpression exp,
+ [_]) {
+ sb.write('const bool.fromEnvironment("${exp.name}", defaultValue: ');
+ visit(exp.defaultValue);
+ sb.write(')');
+ }
+
+ @override
+ void visitIntFromEnvironment(IntFromEnvironmentConstantExpression exp, [_]) {
+ sb.write('const int.fromEnvironment("${exp.name}", defaultValue: ');
+ visit(exp.defaultValue);
+ sb.write(')');
+ }
+
+ @override
+ void visitStringFromEnvironment(StringFromEnvironmentConstantExpression exp,
+ [_]) {
+ sb.write('const String.fromEnvironment("${exp.name}", defaultValue: ');
+ visit(exp.defaultValue);
+ sb.write(')');
+ }
+
String toString() => sb.toString();
}
\ No newline at end of file
diff --git a/pkg/compiler/lib/src/constants/values.dart b/pkg/compiler/lib/src/constants/values.dart
index 45f47ea..e40a6b8 100644
--- a/pkg/compiler/lib/src/constants/values.dart
+++ b/pkg/compiler/lib/src/constants/values.dart
@@ -39,6 +39,9 @@
abstract class ConstantValue {
const ConstantValue();
+ /// `true` if this is a valid constant value.
+ bool get isConstant => true;
+
bool get isNull => false;
bool get isBool => false;
bool get isTrue => false;
@@ -482,9 +485,11 @@
String toStructuredString() {
StringBuffer sb = new StringBuffer();
- sb.write('ListConstant([');
+ sb.write('ListConstant(');
+ _unparseTypeArguments(sb);
+ sb.write('[');
for (int i = 0 ; i < length ; i++) {
- if (i > 0) sb.write(',');
+ if (i > 0) sb.write(', ');
sb.write(entries[i].toStructuredString());
}
sb.write('])');
@@ -551,11 +556,13 @@
String toStructuredString() {
StringBuffer sb = new StringBuffer();
- sb.write('MapConstant({');
+ sb.write('MapConstant(');
+ _unparseTypeArguments(sb);
+ sb.write('{');
for (int i = 0; i < length; i++) {
- if (i > 0) sb.write(',');
+ if (i > 0) sb.write(', ');
sb.write(keys[i].toStructuredString());
- sb.write(':');
+ sb.write(': ');
sb.write(values[i].toStructuredString());
}
sb.write('})');
@@ -717,3 +724,27 @@
String toStructuredString() => 'DeferredConstant($referenced)';
}
+
+/// A constant value resulting from a non constant or erroneous constant
+/// expression.
+// TODO(johnniwinther): Expand this to contain the error kind.
+class NonConstantValue extends ConstantValue {
+ bool get isConstant => false;
+
+ @override
+ accept(ConstantValueVisitor visitor, arg) {
+ // TODO(johnniwinther): Should this be part of the visiting?
+ }
+
+ @override
+ List<ConstantValue> getDependencies() => const <ConstantValue>[];
+
+ @override
+ DartType getType(CoreTypes types) => const DynamicType();
+
+ @override
+ String toStructuredString() => 'NonConstant';
+
+ @override
+ String unparse() => '>>non-constant<<';
+}
\ No newline at end of file
diff --git a/pkg/compiler/lib/src/core_types.dart b/pkg/compiler/lib/src/core_types.dart
index a1ec975..c2e66c6 100644
--- a/pkg/compiler/lib/src/core_types.dart
+++ b/pkg/compiler/lib/src/core_types.dart
@@ -33,6 +33,9 @@
/// The `Null` type defined in 'dart:core'.
InterfaceType get nullType;
+ /// The `Type` type defined in 'dart:core'.
+ InterfaceType get typeType;
+
/// Returns an instance of the `List` type defined in 'dart:core' with
/// [elementType] as its type argument.
InterfaceType listType([DartType elementType = const DynamicType()]);
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart
index d511047..3297497 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart
@@ -457,6 +457,9 @@
void _createFunctionParameter(Local parameterElement);
void _createThisParameter();
+ /// Reifies the value of [variable] on the current receiver object.
+ ir.Primitive buildReifyTypeVariable(TypeVariableType variable);
+
/// Creates an access to the receiver from the current (or enclosing) method.
///
/// If inside a closure class, [buildThis] will redirect access through
@@ -488,9 +491,15 @@
}
/// Creates a [ir.MutableVariable] for the given local.
- void makeMutableVariable(Local local) {
- mutableVariables[local] =
- new ir.MutableVariable(local.executableContext, local);
+ void makeMutableVariable(Local local, [ClosureClassMap closureMap]) {
+ ExecutableElement owner;
+ if (closureMap == null || closureMap.closureClassElement == null) {
+ owner = local.executableContext;
+ } else {
+ assert(local.executableContext == closureMap.closureElement);
+ owner = closureMap.callElement;
+ }
+ mutableVariables[local] = new ir.MutableVariable(owner, local);
}
/// Remove an [ir.MutableVariable] for a local.
@@ -1711,7 +1720,8 @@
void buildTry(
{TryStatementInfo tryStatementInfo,
SubbuildFunction buildTryBlock,
- List<CatchClauseInfo> catchClauseInfos: const <CatchClauseInfo>[]}) {
+ List<CatchClauseInfo> catchClauseInfos: const <CatchClauseInfo>[],
+ ClosureClassMap closureClassMap}) {
assert(isOpen);
// Catch handlers are in scope for their body. The CPS translation of
@@ -1753,7 +1763,7 @@
for (LocalVariableElement variable in tryStatementInfo.boxedOnEntry) {
assert(!tryCatchBuilder.isInMutableVariable(variable));
ir.Primitive value = tryCatchBuilder.buildLocalVariableGet(variable);
- tryCatchBuilder.makeMutableVariable(variable);
+ tryCatchBuilder.makeMutableVariable(variable, closureClassMap);
tryCatchBuilder.declareLocalVariable(variable, initialValue: value);
}
@@ -1786,39 +1796,78 @@
catchBuilder.environment.update(variable, value);
}
- // TODO(kmillikin): Handle multiple catch clauses.
- assert(catchClauseInfos.length == 1);
- for (CatchClauseInfo catchClauseInfo in catchClauseInfos) {
- LocalVariableElement exceptionVariable =
- catchClauseInfo.exceptionVariable;
- ir.Parameter exceptionParameter = new ir.Parameter(exceptionVariable);
- catchBuilder.declareLocalVariable(exceptionVariable,
- initialValue: exceptionParameter);
- ir.Parameter traceParameter;
- LocalVariableElement stackTraceVariable =
- catchClauseInfo.stackTraceVariable;
- if (stackTraceVariable != null) {
- traceParameter = new ir.Parameter(stackTraceVariable);
- catchBuilder.declareLocalVariable(stackTraceVariable,
- initialValue: traceParameter);
- } else {
- // Use a dummy continuation parameter for the stack trace parameter.
- // This will ensure that all handlers have two parameters and so they
- // can be treated uniformly.
- traceParameter = new ir.Parameter(null);
+ // Handlers are always translated as having both exception and stack trace
+ // parameters. Multiple clauses do not have to use the same names for
+ // them. Choose the first of each as the name hint for the respective
+ // handler parameter.
+ ir.Parameter exceptionParameter =
+ new ir.Parameter(catchClauseInfos.first.exceptionVariable);
+ LocalVariableElement traceVariable;
+ CatchClauseInfo catchAll;
+ for (int i = 0; i < catchClauseInfos.length; ++i) {
+ CatchClauseInfo info = catchClauseInfos[i];
+ if (info.type == null) {
+ catchAll = info;
+ catchClauseInfos.length = i;
+ break;
}
- catchClauseInfo.buildCatchBlock(catchBuilder);
- if (catchBuilder.isOpen) catchBuilder.jumpTo(join);
- List<ir.Parameter> catchParameters =
- <ir.Parameter>[exceptionParameter, traceParameter];
- ir.Continuation catchContinuation = new ir.Continuation(catchParameters);
- catchContinuation.body = catchBuilder._root;
+ if (traceVariable == null) {
+ traceVariable = info.stackTraceVariable;
+ }
+ }
+ ir.Parameter traceParameter = new ir.Parameter(traceVariable);
+ // Expand multiple catch clauses into an explicit if/then/else. Iterate
+ // them in reverse so the current block becomes the next else block.
+ ir.Expression catchBody;
+ if (catchAll == null) {
+ catchBody = new ir.Rethrow();
+ } else {
+ IrBuilder clauseBuilder = catchBuilder.makeDelimitedBuilder();
+ clauseBuilder.declareLocalVariable(catchAll.exceptionVariable,
+ initialValue: exceptionParameter);
+ if (catchAll.stackTraceVariable != null) {
+ clauseBuilder.declareLocalVariable(catchAll.stackTraceVariable,
+ initialValue: traceParameter);
+ }
+ catchAll.buildCatchBlock(clauseBuilder);
+ if (clauseBuilder.isOpen) clauseBuilder.jumpTo(join);
+ catchBody = clauseBuilder._root;
+ }
+ for (CatchClauseInfo clause in catchClauseInfos.reversed) {
+ IrBuilder clauseBuilder = catchBuilder.makeDelimitedBuilder();
+ clauseBuilder.declareLocalVariable(clause.exceptionVariable,
+ initialValue: exceptionParameter);
+ if (clause.stackTraceVariable != null) {
+ clauseBuilder.declareLocalVariable(clause.stackTraceVariable,
+ initialValue: traceParameter);
+ }
+ clause.buildCatchBlock(clauseBuilder);
+ if (clauseBuilder.isOpen) clauseBuilder.jumpTo(join);
+ ir.Continuation thenContinuation = new ir.Continuation([]);
+ thenContinuation.body = clauseBuilder._root;
+ ir.Continuation elseContinuation = new ir.Continuation([]);
+ elseContinuation.body = catchBody;
- tryCatchBuilder.add(
- new ir.LetHandler(catchContinuation, tryBuilder._root));
- tryCatchBuilder._current = null;
+ ir.Parameter typeMatches = new ir.Parameter(null);
+ ir.Continuation checkType = new ir.Continuation([typeMatches]);
+ checkType.body =
+ new ir.LetCont.many([thenContinuation, elseContinuation],
+ new ir.Branch(new ir.IsTrue(typeMatches),
+ thenContinuation,
+ elseContinuation));
+ catchBody =
+ new ir.LetCont(checkType,
+ new ir.TypeOperator(exceptionParameter, clause.type, checkType,
+ isTypeTest: true));
}
+ List<ir.Parameter> catchParameters =
+ <ir.Parameter>[exceptionParameter, traceParameter];
+ ir.Continuation catchContinuation = new ir.Continuation(catchParameters);
+ catchContinuation.body = catchBody;
+
+ tryCatchBuilder.add(
+ new ir.LetHandler(catchContinuation, tryBuilder._root));
add(new ir.LetCont(join.continuation, tryCatchBuilder._root));
environment = join.environment;
}
@@ -2258,6 +2307,11 @@
(k) => new ir.InvokeConstructor(type, element, selector,
arguments, k));
}
+
+ @override
+ ir.Primitive buildReifyTypeVariable(TypeVariableType variable) {
+ return addPrimitive(new ir.ReifyTypeVar(variable.element));
+ }
}
/// State shared between JsIrBuilders within the same function.
@@ -2485,6 +2539,7 @@
ir.Primitive buildThis() {
if (jsState.receiver != null) return jsState.receiver;
+ assert(state.thisParameter != null);
return state.thisParameter;
}
@@ -2554,11 +2609,11 @@
ir.Primitive buildTypeExpression(DartType type) {
if (type is TypeVariableType) {
- return buildTypeVariableAccess(buildThis(), type);
+ return buildTypeVariableAccess(type);
} else if (type is InterfaceType) {
List<ir.Primitive> arguments = <ir.Primitive>[];
type.forEachTypeVariable((TypeVariableType variable) {
- ir.Primitive value = buildTypeVariableAccess(buildThis(), variable);
+ ir.Primitive value = buildTypeVariableAccess(variable);
arguments.add(value);
});
return addPrimitive(new ir.TypeExpression(type, arguments));
@@ -2568,8 +2623,13 @@
}
}
- ir.Primitive buildTypeVariableAccess(ir.Primitive target,
- TypeVariableType variable) {
+ /// Obtains the internal type representation of the type held in [variable].
+ ///
+ /// The value of [variable] is taken from the current receiver object, or
+ /// if we are currently building a constructor field initializer, from the
+ /// corresponding type argument (field initializers are evaluated before the
+ /// receiver object is created).
+ ir.Primitive buildTypeVariableAccess(TypeVariableType variable) {
ir.Parameter accessTypeArgumentParameter() {
for (int i = 0; i < environment.length; i++) {
Local local = environment.index2variable[i];
@@ -2584,9 +2644,21 @@
if (jsState.inInitializers) {
return accessTypeArgumentParameter();
} else {
+ ir.Primitive target = buildThis();
return addPrimitive(new ir.ReadTypeVariable(variable, target));
}
}
+
+ @override
+ ir.Primitive buildReifyTypeVariable(TypeVariableType variable) {
+ ir.Primitive typeArgument = buildTypeVariableAccess(variable);
+ return addPrimitive(new ir.ReifyRuntimeType(typeArgument));
+ }
+
+ ir.Primitive buildInvocationMirror(Selector selector,
+ List<ir.Primitive> arguments) {
+ return addPrimitive(new ir.CreateInvocationMirror(selector, arguments));
+ }
}
@@ -2648,13 +2720,14 @@
new Set<LocalVariableElement>();
}
-// TODO(johnniwinther): Support passing of [DartType] for the exception.
class CatchClauseInfo {
+ final DartType type;
final LocalVariableElement exceptionVariable;
final LocalVariableElement stackTraceVariable;
final SubbuildFunction buildCatchBlock;
- CatchClauseInfo({this.exceptionVariable,
+ CatchClauseInfo({this.type,
+ this.exceptionVariable,
this.stackTraceVariable,
this.buildCatchBlock});
}
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
index 5252b0f..fbb348b 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
@@ -57,6 +57,10 @@
}
ir.RootNode buildNode(AstElement element) {
+ return measure(() => _buildNode(element));
+ }
+
+ ir.RootNode _buildNode(AstElement element) {
bailoutMessage = null;
if (!canBuild(element)) {
bailoutMessage = 'unsupported element ${element.name}:${element.kind}';
@@ -140,8 +144,7 @@
BaseImplementationOfDynamicsMixin<ir.Primitive, dynamic>,
BaseImplementationOfConstantsMixin<ir.Primitive, dynamic>,
BaseImplementationOfSuperIncDecsMixin<ir.Primitive, dynamic>,
- BaseImplementationOfNewMixin<ir.Primitive, dynamic>,
- ErrorBulkMixin<ir.Primitive, dynamic>
+ BaseImplementationOfNewMixin<ir.Primitive, dynamic>
implements SemanticSendVisitor<ir.Primitive, dynamic> {
final TreeElements elements;
final Compiler compiler;
@@ -178,11 +181,6 @@
this.compiler,
this.sourceInformationBuilder);
- @override
- bulkHandleNode(ast.Node node, String message, _) {
- giveup(node, message.replaceFirst('#', '$node'));
- }
-
String bailoutMessage = null;
@override
@@ -198,6 +196,7 @@
*/
ir.RootNode buildExecutable(ExecutableElement element);
+ ClosureClassMap get closureClassMap;
ClosureScope getClosureScopeForNode(ast.Node node);
ClosureEnvironment getClosureEnvironment();
@@ -223,6 +222,28 @@
CallStructure callStructure,
List<ir.Primitive> arguments);
+ /// Creates a [TypedSelector] variant of [newSelector] using the type of
+ /// [oldSelector], if available.
+ ///
+ /// This is needed to preserve inferred receiver types when creating new
+ /// selectors.
+ Selector useSelectorType(Selector newSelector, Selector oldSelector) {
+ // TODO(asgerf,johnniwinther): This works but it is brittle.
+ // We should decouple selectors from inferred receiver type masks.
+ // TODO(asgerf): Use this whenever we create a selector for a dynamic call.
+ if (oldSelector is TypedSelector) {
+ return new TypedSelector(oldSelector.mask, newSelector, compiler.world);
+ } else {
+ return newSelector;
+ }
+ }
+
+ /// Like [useSelectorType], except the original typed selector is obtained
+ /// from the [node].
+ Selector useSelectorTypeOfNode(Selector newSelector, ast.Send node) {
+ return useSelectorType(newSelector, elements.getSelector(node));
+ }
+
ir.RootNode _makeFunctionBody(FunctionElement element,
ast.FunctionExpression node) {
FunctionSignature signature = element.functionSignature;
@@ -503,15 +524,6 @@
}
visitTryStatement(ast.TryStatement node) {
- // Multiple catch blocks are not yet implemented.
- if (node.catchBlocks.isEmpty ||
- !node.catchBlocks.nodes.tail.isEmpty) {
- return giveup(node, 'not exactly one catch block');
- }
- // 'on T' catch blocks are not yet implemented.
- if ((node.catchBlocks.nodes.head as ast.CatchBlock).onKeyword != null) {
- return giveup(node, '"on T" catch block');
- }
// Finally blocks are not yet implemented.
if (node.finallyBlock != null) {
return giveup(node, 'try/finally');
@@ -525,7 +537,12 @@
if (catchClause.trace != null) {
stackTraceVariable = elements[catchClause.trace];
}
+ DartType type;
+ if (catchClause.onKeyword != null) {
+ type = elements.getType(catchClause.type);
+ }
catchClauseInfos.add(new CatchClauseInfo(
+ type: type,
exceptionVariable: exceptionVariable,
stackTraceVariable: stackTraceVariable,
buildCatchBlock: subbuild(catchClause.block)));
@@ -534,7 +551,8 @@
irBuilder.buildTry(
tryStatementInfo: tryStatements[node],
buildTryBlock: subbuild(node.tryBlock),
- catchClauseInfos: catchClauseInfos);
+ catchClauseInfos: catchClauseInfos,
+ closureClassMap: closureClassMap);
}
// ## Expressions ##
@@ -614,12 +632,6 @@
return translateConstant(node);
}
- ir.Primitive visitIdentifier(ast.Identifier node) {
- // "this" is the only identifier that should be met by the visitor.
- assert(node.isThis());
- return irBuilder.buildThis();
- }
-
ir.Primitive visitParenthesizedExpression(
ast.ParenthesizedExpression node) {
assert(irBuilder.isOpen);
@@ -795,28 +807,25 @@
}
@override
- ir.Primitive visitUnresolvedGet(
- ast.Send node,
- Element element,
- _) {
- return giveup(node, 'visitUnresolvedGet');
- }
-
- @override
ir.Primitive visitUnresolvedSuperGet(
ast.Send node,
- Element element,
- _) {
- return giveup(node, 'visitUnresolvedSuperGet');
+ Element element, _) {
+ return buildInstanceNoSuchMethod(elements.getSelector(node), []);
}
@override
ir.Primitive visitThisGet(ast.Identifier node, _) {
+ if (irBuilder.state.thisParameter == null) {
+ // TODO(asgerf,johnniwinther): Should be in a visitInvalidThis method.
+ // 'this' in static context. Just translate to null.
+ assert(compiler.compilationFailed);
+ return irBuilder.buildNullConstant();
+ }
return irBuilder.buildThis();
}
ir.Primitive translateTypeVariableTypeLiteral(TypeVariableElement element) {
- return buildReifyTypeVariable(irBuilder.buildThis(), element.type);
+ return irBuilder.buildReifyTypeVariable(element.type);
}
@override
@@ -933,16 +942,6 @@
}
@override
- ir.Primitive visitUnresolvedSuperBinary(
- ast.Send node,
- Element element,
- op.BinaryOperator operator,
- ast.Node argument,
- _) {
- return giveup(node, 'visitUnresolvedSuperBinary');
- }
-
- @override
ir.Primitive visitSuperIndex(
ast.Send node,
FunctionElement function,
@@ -952,15 +951,6 @@
}
@override
- ir.Primitive visitUnresolvedSuperIndex(
- ast.Send node,
- Element element,
- ast.Node index,
- _) {
- return giveup(node, 'visitUnresolvedSuperIndex');
- }
-
- @override
ir.Primitive visitEquals(
ast.Send node,
ast.Node left,
@@ -1028,15 +1018,6 @@
function, CallStructure.NO_ARGS, const []);
}
- @override
- ir.Primitive visitUnresolvedSuperUnary(
- ast.Send node,
- op.UnaryOperator operator,
- Element element,
- _) {
- return giveup(node, 'visitUnresolvedSuperUnary');
- }
-
// TODO(johnniwinther): Handle this in the [IrBuilder] to ensure the correct
// semantic correlation between arguments and invocation.
List<ir.Primitive> translateDynamicArguments(ast.NodeList nodeList,
@@ -1140,9 +1121,10 @@
ast.Send node,
MethodElement function,
ast.NodeList arguments,
- CallStructure callStructure,
- _) {
- return giveup(node, 'handleStaticFunctionIncompatibleInvoke');
+ CallStructure callStructure, _) {
+ return buildStaticNoSuchMethod(
+ elements.getSelector(node),
+ arguments.nodes.mapToList(visit));
}
@override
@@ -1203,19 +1185,10 @@
ast.Send node,
MethodElement method,
ast.NodeList arguments,
- CallStructure callStructure,
- _) {
- return giveup(node, 'visitSuperMethodIncompatibleInvoke');
- }
-
- @override
- ir.Primitive visitUnresolvedInvoke(
- ast.Send node,
- Element element,
- ast.NodeList arguments,
- Selector selector,
- _) {
- return giveup(node, 'visitUnresolvedInvoke');
+ CallStructure callStructure, _) {
+ return buildInstanceNoSuchMethod(
+ elements.getSelector(node),
+ translateDynamicArguments(arguments, callStructure));
}
@override
@@ -1223,9 +1196,10 @@
ast.Send node,
Element element,
ast.NodeList arguments,
- Selector selector,
- _) {
- return giveup(node, 'visitUnresolvedSuperInvoke');
+ Selector selector, _) {
+ return buildInstanceNoSuchMethod(
+ elements.getSelector(node),
+ translateDynamicArguments(arguments, selector.callStructure));
}
@override
@@ -1250,10 +1224,6 @@
callStructure);
}
- // TODO(johnniwinther): This should be a method on [IrBuilder].
- ir.Primitive buildReifyTypeVariable(ir.Primitive target,
- TypeVariableType variable);
-
@override
ir.Primitive visitIndexSet(
ast.SendSet node,
@@ -1711,6 +1681,62 @@
}
@override
+ ir.Primitive handleUnresolvedSuperGetterIndexPostfixPrefix(
+ ast.Send node,
+ Element element,
+ ast.Node index,
+ op.IncDecOperator operator,
+ arg,
+ {bool isPrefix}) {
+ return giveup(node, 'handleSuperUnresolvedGetterIndexPostfixPrefix');
+ }
+
+ @override
+ ir.Primitive handleUnresolvedSuperSetterIndexPostfixPrefix(
+ ast.Send node,
+ FunctionElement indexFunction,
+ Element element,
+ ast.Node index,
+ op.IncDecOperator operator,
+ arg,
+ {bool isPrefix}) {
+ return giveup(node, 'handleSuperUnresolvedGetterIndexPostfixPrefix');
+ }
+
+ @override
+ ir.Primitive visitUnresolvedSuperGetterCompoundIndexSet(
+ ast.Send node,
+ Element element,
+ ast.Node index,
+ op.AssignmentOperator operator,
+ ast.Node rhs,
+ arg) {
+ return giveup(node, 'visitUnresolvedSuperGetterCompoundIndexSet');
+ }
+
+ @override
+ ir.Primitive visitUnresolvedSuperIndexSet(
+ ast.Send node,
+ Element element,
+ ast.Node index,
+ ast.Node rhs,
+ arg) {
+ return giveup(node, 'visitUnresolvedSuperIndexSet');
+ }
+
+ @override
+ ir.Primitive visitUnresolvedSuperSetterCompoundIndexSet(
+ ast.Send node,
+ MethodElement getter,
+ Element element,
+ ast.Node index,
+ op.AssignmentOperator operator,
+ ast.Node rhs,
+ arg) {
+ return giveup(node, 'visitUnresolvedSuperSetterCompoundIndexSet');
+ }
+
+ @override
ir.Primitive handleStaticSetterSet(
ast.SendSet node,
FunctionElement setter,
@@ -1867,6 +1893,727 @@
return irBuilder.buildNonTailThrow(visit(node.expression));
}
+ ir.Primitive buildStaticNoSuchMethod(
+ Selector selector,
+ List<ir.Primitive> arguments);
+
+ ir.Primitive buildInstanceNoSuchMethod(
+ Selector selector,
+ List<ir.Primitive> arguments);
+
+ ir.Primitive buildRuntimeError(String message);
+
+ ir.Primitive buildAbstractClassInstantiationError(ClassElement element);
+
+ @override
+ ir.Primitive errorInvalidAssert(
+ ast.Send node,
+ ast.NodeList arguments, _) {
+ if (compiler.enableUserAssertions) {
+ return giveup(node, 'Assert');
+ } else {
+ return irBuilder.buildNullConstant();
+ }
+ }
+
+ @override
+ ir.Primitive errorUnresolvedCompound(
+ ast.Send node,
+ Element element,
+ op.AssignmentOperator operator,
+ ast.Node rhs, _) {
+ // TODO(asgerf): What is unresolved? The getter and/or the setter?
+ // If it was the setter, we must evaluate the right-hand side.
+ return buildStaticNoSuchMethod(elements.getSelector(node), []);
+ }
+
+ @override
+ ir.Primitive visitUnresolvedClassConstructorInvoke(
+ ast.NewExpression node,
+ Element element,
+ DartType type,
+ ast.NodeList arguments,
+ Selector selector, _) {
+ // If the class is missing it's a runtime error.
+ return buildRuntimeError("Unresolved class: '${element.name}'");
+ }
+
+ @override
+ ir.Primitive visitUnresolvedConstructorInvoke(
+ ast.NewExpression node,
+ Element constructor,
+ DartType type,
+ ast.NodeList arguments,
+ Selector selector, _) {
+ // If the class is there but the constructor is missing, it's an NSM error.
+ return buildStaticNoSuchMethod(selector,
+ translateDynamicArguments(arguments, selector.callStructure));
+ }
+
+ @override
+ ir.Primitive errorNonConstantConstructorInvoke(
+ ast.NewExpression node,
+ Element element,
+ InterfaceType type,
+ ast.NodeList arguments,
+ CallStructure callStructure, _) {
+ assert(compiler.compilationFailed);
+ return irBuilder.buildNullConstant();
+ }
+
+ @override
+ ir.Primitive visitUnresolvedGet(
+ ast.Send node,
+ Element element, _) {
+ return buildStaticNoSuchMethod(elements.getSelector(node), []);
+ }
+
+ @override
+ ir.Primitive visitUnresolvedInvoke(
+ ast.Send node,
+ Element element,
+ ast.NodeList arguments,
+ Selector selector, _) {
+ return buildStaticNoSuchMethod(elements.getSelector(node),
+ arguments.nodes.mapToList(visit));
+ }
+
+ @override
+ ir.Primitive errorUnresolvedPostfix(
+ ast.Send node,
+ Element element,
+ op.IncDecOperator operator, _) {
+ // TODO(asgerf): Which ones are missing? The getter and/or the setter?
+ return buildStaticNoSuchMethod(elements.getSelector(node), []);
+ }
+
+ @override
+ ir.Primitive errorUnresolvedPrefix(
+ ast.Send node,
+ Element element,
+ op.IncDecOperator operator, _) {
+ // TODO(asgerf): Which ones are missing? The getter and/or the setter?
+ return buildStaticNoSuchMethod(elements.getSelector(node), []);
+ }
+
+ @override
+ ir.Primitive visitUnresolvedRedirectingFactoryConstructorInvoke(
+ ast.NewExpression node,
+ ConstructorElement constructor,
+ InterfaceType type,
+ ast.NodeList arguments,
+ CallStructure callStructure, _) {
+ String nameString = Elements.reconstructConstructorName(constructor);
+ Name name = new Name(nameString, constructor.library);
+ return buildStaticNoSuchMethod(
+ new Selector(SelectorKind.CALL, name, callStructure),
+ translateDynamicArguments(arguments, callStructure));
+ }
+
+ @override
+ ir.Primitive errorUnresolvedSet(
+ ast.Send node,
+ Element element,
+ ast.Node rhs, _) {
+ return buildStaticNoSuchMethod(elements.getSelector(node), [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorUnresolvedSuperCompoundIndexSet(
+ ast.SendSet node,
+ Element element,
+ ast.Node index,
+ op.AssignmentOperator operator,
+ ast.Node rhs, _) {
+ // Assume the index getter is missing.
+ Selector selector = useSelectorTypeOfNode(new Selector.index(), node);
+ return buildInstanceNoSuchMethod(selector, [visit(index)]);
+ }
+
+ @override
+ ir.Primitive visitUnresolvedSuperIndex(
+ ast.Send node,
+ Element function,
+ ast.Node index, _) {
+ // Assume the index getter is missing.
+ Selector selector = useSelectorTypeOfNode(new Selector.index(), node);
+ return buildInstanceNoSuchMethod(selector, [visit(index)]);
+ }
+
+ @override
+ ir.Primitive errorUnresolvedSuperIndexPostfix(
+ ast.Send node,
+ Element function,
+ ast.Node index,
+ op.IncDecOperator operator, _) {
+ // Assume the index getter is missing.
+ Selector selector = useSelectorTypeOfNode(new Selector.index(), node);
+ return buildInstanceNoSuchMethod(selector, [visit(index)]);
+ }
+
+ @override
+ ir.Primitive errorUnresolvedSuperIndexPrefix(
+ ast.Send node,
+ Element function,
+ ast.Node index,
+ op.IncDecOperator operator, _) {
+ // Assume the index getter is missing.
+ Selector selector = useSelectorTypeOfNode(new Selector.index(), node);
+ return buildInstanceNoSuchMethod(selector, [visit(index)]);
+ }
+
+ @override
+ ir.Primitive errorUnresolvedSuperIndexSet(
+ ast.SendSet node,
+ Element element,
+ ast.Node index,
+ ast.Node rhs, _) {
+ Selector selector = useSelectorTypeOfNode(new Selector.index(), node);
+ return buildInstanceNoSuchMethod(
+ selector,
+ [visit(index), visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive visitUnresolvedSuperBinary(
+ ast.Send node,
+ Element element,
+ op.BinaryOperator operator,
+ ast.Node argument, _) {
+ return buildInstanceNoSuchMethod(
+ elements.getSelector(node),
+ [visit(argument)]);
+ }
+
+ @override
+ ir.Primitive visitUnresolvedSuperUnary(
+ ast.Send node,
+ op.UnaryOperator operator,
+ Element element, _) {
+ return buildInstanceNoSuchMethod(elements.getSelector(node), []);
+ }
+
+ @override
+ ir.Primitive errorUndefinedBinaryExpression(
+ ast.Send node,
+ ast.Node left,
+ ast.Operator operator,
+ ast.Node right, _) {
+ assert(compiler.compilationFailed);
+ return irBuilder.buildNullConstant();
+ }
+
+ @override
+ ir.Primitive errorUndefinedUnaryExpression(
+ ast.Send node,
+ ast.Operator operator,
+ ast.Node expression, _) {
+ assert(compiler.compilationFailed);
+ return irBuilder.buildNullConstant();
+ }
+
+ @override
+ ir.Primitive errorTopLevelFunctionSet(
+ ast.Send node,
+ MethodElement function,
+ ast.Node rhs, _) {
+ return buildStaticNoSuchMethod(
+ new Selector.setter(function.name, function.library),
+ [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorTopLevelSetterGet(
+ ast.Send node,
+ FunctionElement setter, _) {
+ return buildStaticNoSuchMethod(
+ new Selector.getter(setter.name, setter.library), []);
+ }
+
+ @override
+ ir.Primitive errorTopLevelGetterSet(
+ ast.SendSet node,
+ FunctionElement getter,
+ ast.Node rhs, _) {
+ return buildStaticNoSuchMethod(
+ new Selector.setter(getter.name, getter.library),
+ [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorTopLevelSetterInvoke(
+ ast.Send node,
+ FunctionElement setter,
+ ast.NodeList arguments,
+ CallStructure callStructure, _) {
+ return buildStaticNoSuchMethod(
+ new Selector.getter(setter.name, setter.library), []);
+ }
+
+ @override
+ ir.Primitive errorClassTypeLiteralSet(
+ ast.SendSet node,
+ TypeConstantExpression constant,
+ ast.Node rhs, _) {
+ InterfaceType type = constant.type;
+ ClassElement element = type.element;
+ return buildStaticNoSuchMethod(
+ new Selector.setter(element.name, element.library), [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorTypedefTypeLiteralSet(
+ ast.SendSet node,
+ TypeConstantExpression constant,
+ ast.Node rhs, _) {
+ TypedefType type = constant.type;
+ TypedefElement element = type.element;
+ return buildStaticNoSuchMethod(
+ new Selector.setter(element.name, element.library), [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorTypeVariableTypeLiteralSet(
+ ast.SendSet node,
+ TypeVariableElement element,
+ ast.Node rhs, _) {
+ return buildStaticNoSuchMethod(
+ new Selector.setter(element.name, element.library), [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorDynamicTypeLiteralSet(
+ ast.SendSet node,
+ ConstantExpression constant,
+ ast.Node rhs, _) {
+ return buildStaticNoSuchMethod(
+ new Selector.setter('dynamic', null), [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive visitAbstractClassConstructorInvoke(
+ ast.NewExpression node,
+ ConstructorElement element,
+ InterfaceType type,
+ ast.NodeList arguments,
+ CallStructure callStructure, _) {
+ return buildAbstractClassInstantiationError(element.enclosingClass);
+ }
+
+ @override
+ ir.Primitive errorClassTypeLiteralCompound(
+ ast.Send node,
+ ConstantExpression constant,
+ op.AssignmentOperator operator,
+ ast.Node rhs, _) {
+ return translateCompound(
+ getValue: () => irBuilder.buildConstant(constant),
+ operator: operator,
+ rhs: rhs,
+ setValue: (value) {}); // The binary operator will throw before this.
+ }
+
+ @override
+ ir.Primitive errorClassTypeLiteralPostfix(
+ ast.Send node,
+ ConstantExpression constant,
+ op.IncDecOperator operator, _) {
+ return translatePrefixPostfix(
+ getValue: () => irBuilder.buildConstant(constant),
+ operator: operator,
+ setValue: (value) {}, // The binary operator will throw before this.
+ isPrefix: false);
+ }
+
+ @override
+ ir.Primitive errorClassTypeLiteralPrefix(
+ ast.Send node,
+ ConstantExpression constant,
+ op.IncDecOperator operator, _) {
+ return translatePrefixPostfix(
+ getValue: () => irBuilder.buildConstant(constant),
+ operator: operator,
+ setValue: (value) {}, // The binary operator will throw before this.
+ isPrefix: true);
+ }
+
+ @override
+ ir.Primitive errorDynamicTypeLiteralCompound(
+ ast.Send node,
+ ConstantExpression constant,
+ op.AssignmentOperator operator,
+ ast.Node rhs, _) {
+ return translateCompound(
+ getValue: () => irBuilder.buildConstant(constant),
+ operator: operator,
+ rhs: rhs,
+ setValue: (value) {}); // The binary operator will throw before this.
+ }
+
+ @override
+ ir.Primitive errorDynamicTypeLiteralPostfix(
+ ast.Send node,
+ ConstantExpression constant,
+ op.IncDecOperator operator, _) {
+ return translatePrefixPostfix(
+ getValue: () => irBuilder.buildConstant(constant),
+ operator: operator,
+ setValue: (value) {}, // The binary operator will throw before this.
+ isPrefix: false);
+ }
+
+ @override
+ ir.Primitive errorDynamicTypeLiteralPrefix(
+ ast.Send node,
+ ConstantExpression constant,
+ op.IncDecOperator operator, _) {
+ return translatePrefixPostfix(
+ getValue: () => irBuilder.buildConstant(constant),
+ operator: operator,
+ setValue: (value) {}, // The binary operator will throw before this.
+ isPrefix: true);
+ }
+
+ @override
+ ir.Primitive errorFinalLocalVariableCompound(
+ ast.Send node,
+ LocalVariableElement variable,
+ op.AssignmentOperator operator,
+ ast.Node rhs, _) {
+ Selector selector = new Selector.setter(variable.name, null);
+ return translateCompound(
+ getValue: () => irBuilder.buildLocalVariableGet(variable),
+ operator: operator,
+ rhs: rhs,
+ setValue: (value) => buildStaticNoSuchMethod(selector, [value]));
+ }
+
+ @override
+ ir.Primitive errorFinalLocalVariableSet(
+ ast.SendSet node,
+ LocalVariableElement variable,
+ ast.Node rhs, _) {
+ Selector selector = new Selector.setter(variable.name, null);
+ return buildStaticNoSuchMethod(selector, [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorFinalParameterCompound(
+ ast.Send node,
+ ParameterElement parameter,
+ op.AssignmentOperator operator,
+ ast.Node rhs, _) {
+ Selector selector = new Selector.setter(parameter.name, null);
+ return translateCompound(
+ getValue: () => irBuilder.buildLocalVariableGet(parameter),
+ operator: operator,
+ rhs: rhs,
+ setValue: (value) => buildStaticNoSuchMethod(selector, [value]));
+ }
+
+ @override
+ ir.Primitive errorFinalParameterSet(
+ ast.SendSet node,
+ ParameterElement parameter,
+ ast.Node rhs, _) {
+ Selector selector = new Selector.setter(parameter.name, null);
+ return buildStaticNoSuchMethod(selector, [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorFinalStaticFieldCompound(
+ ast.Send node,
+ FieldElement field,
+ op.AssignmentOperator operator,
+ ast.Node rhs, _) {
+ return translateCompound(
+ getValue: () => irBuilder.buildStaticFieldGet(field),
+ operator: operator,
+ rhs: rhs,
+ setValue: (value) => buildStaticNoSuchMethod(
+ new Selector.setter(field.name, field.library), [value]));
+ }
+
+ @override
+ ir.Primitive errorFinalStaticFieldSet(
+ ast.SendSet node,
+ FieldElement field,
+ ast.Node rhs, _) {
+ // TODO(asgerf): Include class name somehow?
+ return buildStaticNoSuchMethod(
+ new Selector.setter(field.name, field.library),
+ [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorFinalSuperFieldCompound(
+ ast.Send node,
+ FieldElement field,
+ op.AssignmentOperator operator,
+ ast.Node rhs, _) {
+ Selector selector = useSelectorTypeOfNode(
+ new Selector.setter(field.name, field.library),
+ node);
+ return translateCompound(
+ getValue: () => irBuilder.buildSuperFieldGet(field),
+ operator: operator,
+ rhs: rhs,
+ setValue: (value) => buildInstanceNoSuchMethod(selector, [value]));
+ }
+
+ @override
+ ir.Primitive errorFinalSuperFieldSet(
+ ast.SendSet node,
+ FieldElement field,
+ ast.Node rhs, _) {
+ Selector selector = useSelectorTypeOfNode(
+ new Selector.setter(field.name, field.library),
+ node);
+ return buildInstanceNoSuchMethod(selector, [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorFinalTopLevelFieldCompound(
+ ast.Send node,
+ FieldElement field,
+ op.AssignmentOperator operator,
+ ast.Node rhs, _) {
+ return translateCompound(
+ getValue: () => irBuilder.buildStaticFieldGet(field),
+ operator: operator,
+ rhs: rhs,
+ setValue: (value) => buildStaticNoSuchMethod(
+ new Selector.setter(field.name, field.library), [value]));
+ }
+
+ @override
+ ir.Primitive errorFinalTopLevelFieldSet(
+ ast.SendSet node,
+ FieldElement field,
+ ast.Node rhs, _) {
+ return buildStaticNoSuchMethod(
+ new Selector.setter(field.name, field.library),
+ [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorLocalFunctionCompound(
+ ast.Send node,
+ LocalFunctionElement function,
+ op.AssignmentOperator operator,
+ ast.Node rhs, _) {
+ return translateCompound(
+ getValue: () => irBuilder.buildLocalFunctionGet(function),
+ operator: operator,
+ rhs: rhs,
+ setValue: (value) {}); // Binary operator will throw before this.
+ }
+
+ @override
+ ir.Primitive errorLocalFunctionPostfix(
+ ast.Send node,
+ LocalFunctionElement function,
+ op.IncDecOperator operator,
+ _) {
+ return translatePrefixPostfix(
+ getValue: () => irBuilder.buildLocalFunctionGet(function),
+ operator: operator,
+ setValue: (value) {}, // Binary operator will throw before this.
+ isPrefix: false);
+ }
+
+ @override
+ ir.Primitive errorLocalFunctionPrefix(
+ ast.Send node,
+ LocalFunctionElement function,
+ op.IncDecOperator operator,
+ _) {
+ return translatePrefixPostfix(
+ getValue: () => irBuilder.buildLocalFunctionGet(function),
+ operator: operator,
+ setValue: (value) {}, // Binary operator will throw before this.
+ isPrefix: true);
+ }
+
+ @override
+ ir.Primitive errorLocalFunctionSet(
+ ast.SendSet node,
+ LocalFunctionElement function,
+ ast.Node rhs, _) {
+ return buildStaticNoSuchMethod(
+ new Selector.setter(function.name, null),
+ [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorStaticFunctionSet(
+ ast.Send node,
+ MethodElement function,
+ ast.Node rhs,
+ _) {
+ return buildStaticNoSuchMethod(
+ new Selector.setter(function.name, function.library),
+ [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorStaticGetterSet(
+ ast.SendSet node,
+ FunctionElement getter,
+ ast.Node rhs,
+ _) {
+ return buildStaticNoSuchMethod(
+ new Selector.setter(getter.name, getter.library),
+ [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorStaticSetterGet(
+ ast.Send node,
+ FunctionElement setter,
+ _) {
+ return buildStaticNoSuchMethod(
+ new Selector.getter(setter.name, setter.library),
+ []);
+ }
+
+ @override
+ ir.Primitive errorStaticSetterInvoke(
+ ast.Send node,
+ FunctionElement setter,
+ ast.NodeList arguments,
+ CallStructure callStructure, _) {
+ // Translate as a method call.
+ List<ir.Primitive> args = arguments.nodes.mapToList(visit);
+ Name name = new Name(setter.name, setter.library);
+ return buildStaticNoSuchMethod(
+ new Selector(SelectorKind.CALL, name, callStructure),
+ args);
+ }
+
+ @override
+ ir.Primitive errorSuperGetterSet(
+ ast.SendSet node,
+ FunctionElement getter,
+ ast.Node rhs,
+ _) {
+ Selector selector = useSelectorTypeOfNode(
+ new Selector.setter(getter.name, getter.library),
+ node);
+ return buildInstanceNoSuchMethod(selector, [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorSuperMethodSet(
+ ast.Send node,
+ MethodElement method,
+ ast.Node rhs,
+ _) {
+ Selector selector = useSelectorTypeOfNode(
+ new Selector.setter(method.name, method.library),
+ node);
+ return buildInstanceNoSuchMethod(selector, [visit(rhs)]);
+ }
+
+ @override
+ ir.Primitive errorSuperSetterGet(
+ ast.Send node,
+ FunctionElement setter, _) {
+ Selector selector = useSelectorTypeOfNode(
+ new Selector.setter(setter.name, setter.library),
+ node);
+ return buildInstanceNoSuchMethod(selector, []);
+ }
+
+ @override
+ ir.Primitive errorSuperSetterInvoke(
+ ast.Send node,
+ FunctionElement setter,
+ ast.NodeList arguments,
+ CallStructure callStructure, _) {
+ List<ir.Primitive> args =
+ translateDynamicArguments(arguments, callStructure);
+ Name name = new Name(setter.name, setter.library);
+ Selector selector = useSelectorTypeOfNode(
+ new Selector(SelectorKind.CALL, name, callStructure),
+ node);
+ return buildInstanceNoSuchMethod(selector, args);
+ }
+
+ @override
+ ir.Primitive errorTypeVariableTypeLiteralCompound(
+ ast.Send node,
+ TypeVariableElement element,
+ op.AssignmentOperator operator,
+ ast.Node rhs, _) {
+ return translateCompound(
+ getValue: () => irBuilder.buildReifyTypeVariable(element.type),
+ operator: operator,
+ rhs: rhs,
+ setValue: (value) {}); // The binary operator will throw before this.
+ }
+
+ @override
+ ir.Primitive errorTypeVariableTypeLiteralPostfix(
+ ast.Send node,
+ TypeVariableElement element,
+ op.IncDecOperator operator, _) {
+ return translatePrefixPostfix(
+ getValue: () => irBuilder.buildReifyTypeVariable(element.type),
+ operator: operator,
+ setValue: (value) {}, // The binary operator will throw before this.
+ isPrefix: false);
+ }
+
+ @override
+ ir.Primitive errorTypeVariableTypeLiteralPrefix(
+ ast.Send node,
+ TypeVariableElement element,
+ op.IncDecOperator operator, _) {
+ return translatePrefixPostfix(
+ getValue: () => irBuilder.buildReifyTypeVariable(element.type),
+ operator: operator,
+ setValue: (value) {}, // The binary operator will throw before this.
+ isPrefix: true);
+ }
+
+ @override
+ ir.Primitive errorTypedefTypeLiteralCompound(
+ ast.Send node,
+ ConstantExpression constant,
+ op.AssignmentOperator operator,
+ ast.Node rhs, _) {
+ return translateCompound(
+ getValue: () => irBuilder.buildConstant(constant),
+ operator: operator,
+ rhs: rhs,
+ setValue: (value) {}); // The binary operator will throw before this.
+ }
+
+ @override
+ ir.Primitive errorTypedefTypeLiteralPostfix(
+ ast.Send node,
+ ConstantExpression constant,
+ op.IncDecOperator operator, _) {
+ return translatePrefixPostfix(
+ getValue: () => irBuilder.buildConstant(constant),
+ operator: operator,
+ setValue: (value) {}, // The binary operator will throw before this.
+ isPrefix: false);
+ }
+
+ @override
+ ir.Primitive errorTypedefTypeLiteralPrefix(
+ ast.Send node,
+ TypeConstantExpression constant,
+ op.IncDecOperator operator, _) {
+ return translatePrefixPostfix(
+ getValue: () => irBuilder.buildConstant(constant),
+ operator: operator,
+ setValue: (value) {}, // The binary operator will throw before this.
+ isPrefix: true);
+ }
+
ir.RootNode nullIfGiveup(ir.RootNode action()) {
try {
return action();
@@ -2105,6 +2852,7 @@
irBuilder.declareLocalFunction(element, inner);
}
+ ClosureClassMap get closureClassMap => null;
ClosureScope getClosureScopeForNode(ast.Node node) => null;
ClosureEnvironment getClosureEnvironment() => null;
@@ -2190,15 +2938,6 @@
}
@override
- ir.Primitive buildReifyTypeVariable(ir.Primitive target,
- TypeVariableType variable) {
- assert(target == irBuilder.state.enclosingMethodThisParameter);
- ir.Primitive prim = new ir.ReifyTypeVar(variable.element);
- irBuilder.add(new ir.LetPrim(prim));
- return prim;
- }
-
- @override
ir.Primitive handleConstructorInvoke(
ast.NewExpression node,
ConstructorElement constructor,
@@ -2213,6 +2952,28 @@
type,
arguments);
}
+
+ @override
+ ir.Primitive buildStaticNoSuchMethod(Selector selector,
+ List<ir.Primitive> arguments) {
+ return giveup(null, 'Static noSuchMethod');
+ }
+
+ @override
+ ir.Primitive buildInstanceNoSuchMethod(Selector selector,
+ List<ir.Primitive> arguments) {
+ return giveup(null, 'Instance noSuchMethod');
+ }
+
+ @override
+ ir.Primitive buildRuntimeError(String message) {
+ return giveup(null, 'Build runtime error: $message');
+ }
+
+ @override
+ ir.Primitive buildAbstractClassInstantiationError(ClassElement element) {
+ return giveup(null, 'Abstract class instantiation: ${element.name}');
+ }
}
/// The [IrBuilder]s view on the information about the program that has been
@@ -2235,11 +2996,13 @@
/// Promote the type of [irBuilder] to [JsIrBuilder].
JsIrBuilder get irBuilder => super.irBuilder;
+ JavaScriptBackend get backend => compiler.backend;
+
/// Result of closure conversion for the current body of code.
///
/// Will be initialized upon entering the body of a function.
/// It is computed by the [ClosureTranslator].
- ClosureClassMap closureMap;
+ ClosureClassMap closureClassMap;
/// During construction of a constructor factory, [fieldValues] maps fields
/// to the primitive containing their initial value.
@@ -2293,11 +3056,11 @@
/// captured reference to `this`), returns a [ClosureEnvironment]
/// indicating how to access these.
ClosureEnvironment getClosureEnvironment() {
- if (closureMap.closureElement == null) return null;
+ if (closureClassMap.closureElement == null) return null;
return new ClosureEnvironment(
- closureMap.closureElement,
- closureMap.thisLocal,
- mapValues(closureMap.freeVariableMap, getLocation));
+ closureClassMap.closureElement,
+ closureClassMap.thisLocal,
+ mapValues(closureClassMap.freeVariableMap, getLocation));
}
/// If [node] has declarations for variables that should be boxed,
@@ -2306,7 +3069,7 @@
///
/// Also see [ClosureScope].
ClosureScope getClosureScopeForNode(ast.Node node) {
- closurelib.ClosureScope scope = closureMap.capturingScopes[node];
+ closurelib.ClosureScope scope = closureClassMap.capturingScopes[node];
if (scope == null) return null;
// We translate a ClosureScope from closure.dart into IR builder's variant
// because the IR builder should not depend on the synthetic elements
@@ -2699,10 +3462,11 @@
ir.FunctionDefinition buildConstructorBody(ConstructorBodyElement body) {
ConstructorElement constructor = body.constructor;
ast.FunctionExpression node = constructor.node;
- closureMap = compiler.closureToClassMapper.computeClosureToClassMapping(
- constructor,
- node,
- elements);
+ closureClassMap =
+ compiler.closureToClassMapper.computeClosureToClassMapping(
+ constructor,
+ node,
+ elements);
// We compute variables boxed in mutable variables on entry to each try
// block, not including variables captured by a closure (which are boxed
@@ -2731,10 +3495,11 @@
assert(node != null);
assert(elements[node] != null);
- closureMap = compiler.closureToClassMapper.computeClosureToClassMapping(
- element,
- node,
- elements);
+ closureClassMap =
+ compiler.closureToClassMapper.computeClosureToClassMapping(
+ element,
+ node,
+ elements);
DartCapturedVariables variables = _analyzeCapturedVariables(node);
tryStatements = variables.tryStatements;
IrBuilder builder = getBuilderFor(element);
@@ -2815,18 +3580,6 @@
}
return result;
}
-
- @override
- ir.Primitive buildReifyTypeVariable(ir.Primitive target,
- TypeVariableType variable) {
- ir.Primitive typeArgument =
- irBuilder.buildTypeVariableAccess(target, variable);
-
- ir.Primitive type = new ir.ReifyRuntimeType(typeArgument);
- irBuilder.add(new ir.LetPrim(type));
- return type;
- }
-
@override
ir.Primitive handleConstructorInvoke(
ast.NewExpression node,
@@ -2845,6 +3598,45 @@
constructor.computeEffectiveTargetType(type),
arguments);
}
+
+ @override
+ ir.Primitive buildStaticNoSuchMethod(Selector selector,
+ List<ir.Primitive> arguments) {
+ Element thrower = backend.getThrowNoSuchMethod();
+ ir.Primitive receiver = irBuilder.buildStringConstant('');
+ ir.Primitive name = irBuilder.buildStringConstant(selector.name);
+ ir.Primitive argumentList = irBuilder.buildListLiteral(null, arguments);
+ ir.Primitive expectedArgumentNames = irBuilder.buildNullConstant();
+ return irBuilder.buildStaticFunctionInvocation(
+ thrower,
+ new CallStructure.unnamed(4),
+ [receiver, name, argumentList, expectedArgumentNames]);
+ }
+
+ @override
+ ir.Primitive buildInstanceNoSuchMethod(Selector selector,
+ List<ir.Primitive> arguments) {
+ return irBuilder.buildDynamicInvocation(
+ irBuilder.buildThis(),
+ useSelectorType(compiler.noSuchMethodSelector, selector),
+ [irBuilder.buildInvocationMirror(selector, arguments)]);
+ }
+
+ @override
+ ir.Primitive buildRuntimeError(String message) {
+ return irBuilder.buildStaticFunctionInvocation(
+ backend.getThrowRuntimeError(),
+ new CallStructure.unnamed(1),
+ [irBuilder.buildStringConstant(message)]);
+ }
+
+ @override
+ ir.Primitive buildAbstractClassInstantiationError(ClassElement element) {
+ return irBuilder.buildStaticFunctionInvocation(
+ backend.getThrowAbstractClassInstantiationError(),
+ new CallStructure.unnamed(1),
+ [irBuilder.buildStringConstant(element.name)]);
+ }
}
/// Perform simple post-processing on the initial CPS-translated root term.
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart
index 7577607..9f0b7a0c 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart
@@ -329,6 +329,9 @@
/// invocations to intercepted methods, where the effective receiver is instead
/// passed as a formal parameter.
///
+/// TODO(sra): Review. A direct call to a method that is mixed into a native
+/// class will still require an explicit argument.
+///
/// When targeting Dart, this instruction is used to represent super calls.
/// Here, [receiver] must always be a reference to `this`, and [target] must be
/// a method that is available in the super class.
@@ -667,6 +670,17 @@
accept(Visitor visitor) => visitor.visitInterceptor(this);
}
+/// Create an instance of [Invocation] for use in a call to `noSuchMethod`.
+class CreateInvocationMirror extends Primitive implements JsSpecificNode {
+ final Selector selector;
+ final List<Reference<Primitive>> arguments;
+
+ CreateInvocationMirror(this.selector, List<Primitive> arguments)
+ : this.arguments = _referenceList(arguments);
+
+ accept(Visitor visitor) => visitor.visitCreateInvocationMirror(this);
+}
+
class Constant extends Primitive {
final ConstantExpression expression;
@@ -1021,6 +1035,7 @@
T visitReifyRuntimeType(ReifyRuntimeType node);
T visitReadTypeVariable(ReadTypeVariable node);
T visitTypeExpression(TypeExpression node);
+ T visitCreateInvocationMirror(CreateInvocationMirror node);
}
/// Recursively visits the entire CPS term, and calls abstract `process*`
@@ -1326,4 +1341,10 @@
processNonTailThrow(node);
processReference(node.value);
}
+
+ processCreateInvocationMirror(CreateInvocationMirror node) {}
+ visitCreateInvocationMirror(CreateInvocationMirror node) {
+ processCreateInvocationMirror(node);
+ node.arguments.forEach(processReference);
+ }
}
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart
index 8a99d443..c330117 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart
@@ -373,6 +373,12 @@
String value = access(node.value);
return '(NonTailThrow $value)';
}
+
+ String visitCreateInvocationMirror(CreateInvocationMirror node) {
+ String selector = node.selector.name;
+ String args = node.arguments.map(access).join(', ');
+ return '(CreateInvocationMirror $selector $args)';
+ }
}
class ConstantStringifier extends ConstantValueVisitor<String, Null> {
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
index ae35ea7..a807214 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
@@ -369,6 +369,11 @@
String value = formatReference(node.value);
return "NonTailThrow($value)";
}
+
+ visitCreateInvocationMirror(cps_ir.CreateInvocationMirror node) {
+ String args = node.arguments.map(formatReference).join(', ');
+ return "CreateInvocationMirror(${node.selector.name}, $args)";
+ }
}
/**
@@ -624,4 +629,8 @@
visitNonTailThrow(cps_ir.NonTailThrow node) {
unexpectedNode(node);
}
+
+ visitCreateInvocationMirror(cps_ir.CreateInvocationMirror node) {
+ unexpectedNode(node);
+ }
}
diff --git a/pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart b/pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart
index edc8121..552e24d 100644
--- a/pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart
+++ b/pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart
@@ -681,6 +681,10 @@
processTypeExpression(TypeExpression node) {
node.arguments.forEach((Reference ref) => ref.parent = node);
}
+
+ processCreateInvocationMirror(CreateInvocationMirror node) {
+ node.arguments.forEach((Reference ref) => ref.parent = node);
+ }
}
class _ReductionKind {
diff --git a/pkg/compiler/lib/src/cps_ir/type_propagation.dart b/pkg/compiler/lib/src/cps_ir/type_propagation.dart
index f66f370..27e92d7 100644
--- a/pkg/compiler/lib/src/cps_ir/type_propagation.dart
+++ b/pkg/compiler/lib/src/cps_ir/type_propagation.dart
@@ -896,6 +896,10 @@
// real constants of type [Type].
setValue(node, nonConstant());
}
+
+ void visitCreateInvocationMirror(CreateInvocationMirror node) {
+ setValue(node, nonConstant());
+ }
}
/// Represents the abstract value of a primitive value at some point in the
diff --git a/pkg/compiler/lib/src/dart2jslib.dart b/pkg/compiler/lib/src/dart2jslib.dart
index fc659d3..0221ca9 100644
--- a/pkg/compiler/lib/src/dart2jslib.dart
+++ b/pkg/compiler/lib/src/dart2jslib.dart
@@ -28,7 +28,7 @@
show ErroneousElementX,
ClassElementX,
CompilationUnitElementX,
- FunctionElementX,
+ MethodElementX,
LibraryElementX,
PrefixElementX,
VoidElementX,
diff --git a/pkg/compiler/lib/src/dart_backend/backend_ast_emitter.dart b/pkg/compiler/lib/src/dart_backend/backend_ast_emitter.dart
index a578d2e..44f0ae9 100644
--- a/pkg/compiler/lib/src/dart_backend/backend_ast_emitter.dart
+++ b/pkg/compiler/lib/src/dart_backend/backend_ast_emitter.dart
@@ -988,6 +988,11 @@
}
@override
+ visitCreateInvocationMirror(tree.CreateInvocationMirror node, arg) {
+ return errorUnsupportedNode(node);
+ }
+
+ @override
Expression visitReadTypeVariable(tree.ReadTypeVariable node, arg) {
return errorUnsupportedNode(node);
}
@@ -1114,7 +1119,7 @@
class ConstantEmitter
- extends ConstantExpressionVisitor<BuilderContext<Statement>, Expression> {
+ extends ConstantExpressionVisitor<Expression, BuilderContext<Statement>> {
const ConstantEmitter();
/// Creates the [Expression] for the constant [exp].
@@ -1147,8 +1152,32 @@
}
@override
- Expression visitPrimitive(PrimitiveConstantExpression exp,
- BuilderContext<Statement> context) {
+ Expression visitBool(BoolConstantExpression exp,
+ BuilderContext<Statement> context) {
+ return handlePrimitiveConstant(exp.value);
+ }
+
+ @override
+ Expression visitInt(IntConstantExpression exp,
+ BuilderContext<Statement> context) {
+ return handlePrimitiveConstant(exp.value);
+ }
+
+ @override
+ Expression visitDouble(DoubleConstantExpression exp,
+ BuilderContext<Statement> context) {
+ return handlePrimitiveConstant(exp.value);
+ }
+
+ @override
+ Expression visitString(StringConstantExpression exp,
+ BuilderContext<Statement> context) {
+ return handlePrimitiveConstant(exp.value);
+ }
+
+ @override
+ Expression visitNull(NullConstantExpression exp,
+ BuilderContext<Statement> context) {
return handlePrimitiveConstant(exp.value);
}
@@ -1216,7 +1245,7 @@
Expression visitConcatenate(ConcatenateConstantExpression exp,
BuilderContext<Statement> context) {
- return new StringConcat(visitExpressions(exp.arguments, context));
+ return new StringConcat(visitExpressions(exp.expressions, context));
}
@override
@@ -1281,6 +1310,39 @@
}
@override
+ Expression visitNamed(NamedArgumentReference exp,
+ BuilderContext<Statement> context) {
+ throw new UnsupportedError("ConstantEmitter.visitNamed");
+ }
+
+ @override
+ Expression visitPositional(PositionalArgumentReference exp,
+ BuilderContext<Statement> context) {
+ throw new UnsupportedError("ConstantEmitter.visitPositional");
+ }
+
+ @override
+ Expression visitBoolFromEnvironment(
+ BoolFromEnvironmentConstantExpression exp,
+ BuilderContext<Statement> context) {
+ return handlePrimitiveConstant(exp.value);
+ }
+
+ @override
+ Expression visitIntFromEnvironment(
+ IntFromEnvironmentConstantExpression exp,
+ BuilderContext<Statement> context) {
+ return handlePrimitiveConstant(exp.value);
+ }
+
+ @override
+ Expression visitStringFromEnvironment(
+ StringFromEnvironmentConstantExpression exp,
+ BuilderContext<Statement> context) {
+ return handlePrimitiveConstant(exp.value);
+ }
+
+ @override
Expression visitDeferred(DeferredConstantExpression exp,
BuilderContext<Statement> context) {
return exp.expression.accept(this);
diff --git a/pkg/compiler/lib/src/dart_backend/placeholder_collector.dart b/pkg/compiler/lib/src/dart_backend/placeholder_collector.dart
index 91ed149..04a7b7c 100644
--- a/pkg/compiler/lib/src/dart_backend/placeholder_collector.dart
+++ b/pkg/compiler/lib/src/dart_backend/placeholder_collector.dart
@@ -369,8 +369,8 @@
return;
}
- if (element.isGetter || element.isSetter) {
- element = (element as FunctionElement).abstractField;
+ if (element.isAccessor) {
+ element = (element as AccessorElement).abstractField;
}
elementNodes.putIfAbsent(element, () => new Set<Node>()).add(node);
}
diff --git a/pkg/compiler/lib/src/deferred_load.dart b/pkg/compiler/lib/src/deferred_load.dart
index b4ef154..2b0b7fc 100644
--- a/pkg/compiler/lib/src/deferred_load.dart
+++ b/pkg/compiler/lib/src/deferred_load.dart
@@ -25,6 +25,7 @@
JavaScriptBackend;
import 'elements/elements.dart' show
+ AccessorElement,
AstElement,
ClassElement,
Element,
@@ -201,9 +202,16 @@
return outputUnitForElement(element) != mainOutputUnit;
}
- /// Returns true if e1 and e2 are in the same output unit.
- bool inSameOutputUnit(Element e1, Element e2) {
- return outputUnitForElement(e1) == outputUnitForElement(e2);
+ /// Returns `true` if element [to] is reachable from element [from] without
+ /// crossing a deferred import.
+ ///
+ /// For example, if we have two deferred libraries `A` and `B` that both
+ /// import a library `C`, then even though elements from `A` and `C` end up in
+ /// different output units, there is a non-deferred path between `A` and `C`.
+ bool hasOnlyNonDeferredImportPaths(Element from, Element to) {
+ OutputUnit outputUnitFrom = outputUnitForElement(from);
+ OutputUnit outputUnitTo = outputUnitForElement(to);
+ return outputUnitTo.imports.containsAll(outputUnitFrom.imports);
}
void registerConstantDeferredUse(DeferredConstantValue constant,
@@ -233,7 +241,7 @@
element = element.enclosingClass;
}
if (element.isAccessor) {
- element = (element as FunctionElement).abstractField;
+ element = (element as AccessorElement).abstractField;
}
return library.getImportsFor(element);
}
diff --git a/pkg/compiler/lib/src/elements/elements.dart b/pkg/compiler/lib/src/elements/elements.dart
index dc86504..5301e0b 100644
--- a/pkg/compiler/lib/src/elements/elements.dart
+++ b/pkg/compiler/lib/src/elements/elements.dart
@@ -411,9 +411,6 @@
bool get isAbstract;
bool isForeign(Backend backend);
- void addMetadata(MetadataAnnotation annotation);
- void setNative(String name);
-
Scope buildScope();
void diagnose(Element context, DiagnosticListener listener);
@@ -840,12 +837,14 @@
}
abstract class CompilationUnitElement extends Element {
+ /// Use [library] instead.
+ @deprecated
+ get enclosingElement;
+
Script get script;
PartOf get partTag;
void forEachLocalMember(f(Element element));
- void addMember(Element element, DiagnosticListener listener);
- void setPartOf(PartOf tag, DiagnosticListener listener);
bool get hasMembers;
int compareTo(CompilationUnitElement other);
@@ -887,33 +886,15 @@
* an underscore.
*/
bool get isInternalLibrary;
+
bool get canUseNative;
bool get exportsHandled;
- // TODO(kasperl): We should try to get rid of these.
- void set libraryTag(LibraryName value);
-
LibraryElement get implementation;
- void addCompilationUnit(CompilationUnitElement element);
- void addTag(LibraryTag tag, DiagnosticListener listener);
- void addImport(Element element, Import import, DiagnosticListener listener);
-
- /// Record which element an import or export tag resolved to.
- /// (Belongs on builder object).
- void recordResolvedTag(LibraryDependency tag, LibraryElement library);
-
/// Return the library element corresponding to an import or export.
LibraryElement getLibraryFromTag(LibraryDependency tag);
- void addMember(Element element, DiagnosticListener listener);
- void addToScope(Element element, DiagnosticListener listener);
-
- // TODO(kasperl): Get rid of this method.
- Iterable<Element> getNonPrivateElementsInScope();
-
- void setExports(Iterable<Element> exportedElements);
-
Element find(String elementName);
Element findLocal(String elementName);
Element findExported(String elementName);
@@ -998,6 +979,10 @@
/// A top level, static or instance field, a formal parameter or local variable.
abstract class VariableElement extends ExecutableElement {
Expression get initializer;
+
+ /// The constant expression defining the value of the variable if `const`,
+ /// `null` otherwise.
+ ConstantExpression get constant;
}
/// An entity that defines a local entity (memory slot) in generated code.
@@ -1135,10 +1120,6 @@
FunctionElement get patch;
FunctionElement get origin;
- /// Used to retrieve a link to the abstract field element representing this
- /// element.
- AbstractFieldElement get abstractField;
-
/// Do not use [computeSignature] outside of the resolver; instead retrieve
/// the signature through the [functionSignature] field.
/// Trying to access a function signature that has not been computed in
@@ -1162,6 +1143,25 @@
bool get isExternal;
}
+/// A getter or setter.
+abstract class AccessorElement extends MethodElement {
+ /// Used to retrieve a link to the abstract field element representing this
+ /// element.
+ AbstractFieldElement get abstractField;
+}
+
+/// A getter.
+abstract class GetterElement extends AccessorElement {
+ /// The setter corresponding to this getter, if any.
+ SetterElement get setter;
+}
+
+/// A setter.
+abstract class SetterElement extends AccessorElement {
+ /// The getter corresponding to this setter, if any.
+ GetterElement get getter;
+}
+
/// Enum for the synchronous/asynchronous function body modifiers.
class AsyncMarker {
/// The default function body marker.
@@ -1232,6 +1232,12 @@
/// constructor so its immediate redirection target is `null`.
ConstructorElement get immediateRedirectionTarget;
+ bool get isCyclicRedirection;
+
+ /// The prefix of the immediateRedirectionTarget, if it is deferred.
+ /// [null] if it is not deferred.
+ PrefixElement get redirectionDeferredPrefix;
+
/// Is `true` if this constructor is a redirecting generative constructor.
bool get isRedirectingGenerative;
@@ -1256,6 +1262,13 @@
/// is `C.c`.
ConstructorElement get definingConstructor;
+ /// The constant constructor defining the binding of fields if `const`,
+ /// `null` otherwise.
+ ConstantConstructor get constantConstructor;
+
+ /// `true` if this constructor is either `bool.fromEnviroment`
+ bool get isFromEnvironmentConstructor;
+
/// Use [enclosingClass] instead.
@deprecated
get enclosingElement;
diff --git a/pkg/compiler/lib/src/elements/modelx.dart b/pkg/compiler/lib/src/elements/modelx.dart
index 7d96a64..e19d722 100644
--- a/pkg/compiler/lib/src/elements/modelx.dart
+++ b/pkg/compiler/lib/src/elements/modelx.dart
@@ -6,6 +6,7 @@
import 'elements.dart';
import '../constants/expressions.dart';
+import '../constants/constructors.dart';
import '../helpers/helpers.dart'; // Included for debug helpers.
import '../tree/tree.dart';
import '../util/util.dart';
@@ -170,7 +171,7 @@
Name get memberName => new Name(name, library);
- LibraryElement get implementationLibrary {
+ LibraryElementX get implementationLibrary {
Element element = this;
while (!identical(element.kind, ElementKind.LIBRARY)) {
element = element.enclosingElement;
@@ -283,6 +284,10 @@
bool get isSynthesized => true;
+ bool get isCyclicRedirection => false;
+
+ PrefixElement get redirectionDeferredPrefix => null;
+
AbstractFieldElement abstractField;
unsupported() {
@@ -306,6 +311,7 @@
get memberContext => unsupported();
get executableContext => unsupported();
get isExternal => unsupported();
+ get constantConstructor => null;
bool get isRedirectingGenerative => unsupported();
bool get isRedirectingFactory => unsupported();
@@ -329,11 +335,16 @@
accept(ElementVisitor visitor, arg) {
return visitor.visitErroneousElement(this, arg);
}
+
+ @override
+ bool get isFromEnvironmentConstructor => false;
}
/// A constructor that was synthesized to recover from a compile-time error.
class ErroneousConstructorElementX extends ErroneousElementX
- with PatchMixin<FunctionElement>, AnalyzableElementX
+ with PatchMixin<FunctionElement>,
+ AnalyzableElementX,
+ ConstantConstructorMixin
implements ConstructorElementX {
// TODO(ahe): Instead of subclassing [ErroneousElementX], this class should
// be more like [ErroneousFieldElementX]. In particular, its kind should be
@@ -414,9 +425,9 @@
throw new UnsupportedError("nestedClosures=");
}
- bool get hasNoBody => false;
-
- bool get _hasNoBody => false;
+ set redirectionDeferredPrefix(_) {
+ throw new UnsupportedError("redirectionDeferredPrefix=");
+ }
void set effectiveTarget(_) {
throw new UnsupportedError("effectiveTarget=");
@@ -608,7 +619,7 @@
* element, they are enclosed by the class or compilation unit, as is the
* abstract field.
*/
- void addAccessor(FunctionElementX accessor,
+ void addAccessor(AccessorElementX accessor,
Element existing,
DiagnosticListener listener) {
void reportError(Element other) {
@@ -666,7 +677,7 @@
PartOf partTag;
Link<Element> localMembers = const Link<Element>();
- CompilationUnitElementX(Script script, LibraryElement library)
+ CompilationUnitElementX(Script script, LibraryElementX library)
: this.script = script,
super(script.name,
ElementKind.COMPILATION_UNIT,
@@ -674,6 +685,9 @@
library.addCompilationUnit(this);
}
+ @override
+ LibraryElementX get library => enclosingElement.declaration;
+
void forEachLocalMember(f(Element element)) {
localMembers.forEach(f);
}
@@ -925,6 +939,7 @@
return tagsCache;
}
+ /// Record which element an import or export tag resolved to.
void recordResolvedTag(LibraryDependency tag, LibraryElement library) {
assert(tagMapping[tag] == null);
tagMapping[tag] = library;
@@ -1255,7 +1270,24 @@
DartType computeType(Element element, Compiler compiler) => type;
}
-abstract class VariableElementX extends ElementX with AstElementMixin
+abstract class ConstantVariableMixin implements VariableElement {
+ ConstantExpression _constant;
+
+ ConstantExpression get constant {
+ assert(invariant(this, _constant != null,
+ message: "Constant has not been computed for $this."));
+ return _constant;
+ }
+
+ void set constant(ConstantExpression value) {
+ assert(invariant(this, _constant == null || _constant == value,
+ message: "Constant has already been computed for $this."));
+ _constant = value;
+ }
+}
+
+abstract class VariableElementX extends ElementX
+ with AstElementMixin, ConstantVariableMixin
implements VariableElement {
final Token token;
final VariableList variables;
@@ -1414,7 +1446,8 @@
}
/// A field that was synthesized to recover from a compile-time error.
-class ErroneousFieldElementX extends ElementX implements FieldElementX {
+class ErroneousFieldElementX extends ElementX
+ with ConstantVariableMixin implements FieldElementX {
final VariableList variables;
ErroneousFieldElementX(Identifier name, Element enclosingElement)
@@ -1559,7 +1592,8 @@
/// to ensure that default values on parameters are computed once (on the
/// origin parameter) but can be found through both the origin and the patch.
abstract class ParameterElementX extends FormalElementX
- with PatchMixin<ParameterElement> implements ParameterElement {
+ with PatchMixin<ParameterElement>, ConstantVariableMixin
+ implements ParameterElement {
final Expression initializer;
final bool isOptional;
final bool isNamed;
@@ -1652,8 +1686,8 @@
}
class AbstractFieldElementX extends ElementX implements AbstractFieldElement {
- FunctionElementX getter;
- FunctionElementX setter;
+ GetterElementX getter;
+ SetterElementX setter;
AbstractFieldElementX(String name, Element enclosing)
: super(name, ElementKind.ABSTRACT_FIELD, enclosing);
@@ -1811,26 +1845,18 @@
FunctionSignature functionSignatureCache;
- final bool _hasNoBody;
-
- AbstractFieldElement abstractField;
-
AsyncMarker asyncMarker = AsyncMarker.SYNC;
BaseFunctionElementX(String name,
ElementKind kind,
Modifiers this.modifiers,
- Element enclosing,
- bool hasNoBody)
- : super(name, kind, enclosing),
- _hasNoBody = hasNoBody {
+ Element enclosing)
+ : super(name, kind, enclosing) {
assert(modifiers != null);
}
bool get isExternal => modifiers.isExternal;
- bool get hasNoBody => _hasNoBody;
-
bool get isInstanceMember {
return isClassMember
&& !isConstructor
@@ -1885,11 +1911,7 @@
}
}
- bool get isAbstract {
- return !modifiers.isExternal &&
- (isFunction || isAccessor) &&
- _hasNoBody;
- }
+ bool get isAbstract => false;
accept(ElementVisitor visitor, arg) {
return visitor.visitFunctionElement(this, arg);
@@ -1901,12 +1923,12 @@
abstract class FunctionElementX extends BaseFunctionElementX
with AnalyzableElementX implements MethodElement {
+
FunctionElementX(String name,
ElementKind kind,
Modifiers modifiers,
- Element enclosing,
- bool hasNoBody)
- : super(name, kind, modifiers, enclosing, hasNoBody);
+ Element enclosing)
+ : super(name, kind, modifiers, enclosing);
MemberElement get memberContext => this;
@@ -1918,6 +1940,55 @@
}
}
+abstract class MethodElementX extends FunctionElementX {
+ final bool hasBody;
+
+ MethodElementX(String name,
+ ElementKind kind,
+ Modifiers modifiers,
+ Element enclosing,
+ // TODO(15101): Make this a named parameter.
+ this.hasBody)
+ : super(name, kind, modifiers, enclosing);
+
+ @override
+ bool get isAbstract {
+ return !modifiers.isExternal && !hasBody;
+ }
+}
+
+abstract class AccessorElementX extends MethodElementX
+ implements AccessorElement {
+ AbstractFieldElement abstractField;
+
+ AccessorElementX(String name,
+ ElementKind kind,
+ Modifiers modifiers,
+ Element enclosing,
+ bool hasBody)
+ : super(name, kind, modifiers, enclosing, hasBody);
+}
+
+abstract class GetterElementX extends AccessorElementX
+ implements GetterElement {
+
+ GetterElementX(String name,
+ Modifiers modifiers,
+ Element enclosing,
+ bool hasBody)
+ : super(name, ElementKind.GETTER, modifiers, enclosing, hasBody);
+}
+
+abstract class SetterElementX extends AccessorElementX
+ implements SetterElement {
+
+ SetterElementX(String name,
+ Modifiers modifiers,
+ Element enclosing,
+ bool hasBody)
+ : super(name, ElementKind.SETTER, modifiers, enclosing, hasBody);
+}
+
class LocalFunctionElementX extends BaseFunctionElementX
implements LocalFunctionElement {
final FunctionExpression node;
@@ -1927,7 +1998,7 @@
ElementKind kind,
Modifiers modifiers,
ExecutableElement enclosing)
- : super(name, kind, modifiers, enclosing, false);
+ : super(name, kind, modifiers, enclosing);
ExecutableElement get executableContext => enclosingElement;
@@ -1949,20 +2020,49 @@
bool get isLocal => true;
}
+abstract class ConstantConstructorMixin implements ConstructorElement {
+ ConstantConstructor _constantConstructor;
+
+ ConstantConstructor get constantConstructor {
+ if (isPatch) {
+ ConstructorElement originConstructor = origin;
+ return originConstructor.constantConstructor;
+ }
+ if (!isConst || isFromEnvironmentConstructor) return null;
+ if (_constantConstructor == null) {
+ _constantConstructor = computeConstantConstructor(resolvedAst);
+ }
+ return _constantConstructor;
+ }
+
+ bool get isFromEnvironmentConstructor {
+ return name == 'fromEnvironment' &&
+ library.isDartCore &&
+ (enclosingClass.name == 'bool' ||
+ enclosingClass.name == 'int' ||
+ enclosingClass.name == 'String');
+ }
+}
+
abstract class ConstructorElementX extends FunctionElementX
- implements ConstructorElement {
+ with ConstantConstructorMixin implements ConstructorElement {
bool isRedirectingGenerative = false;
ConstructorElementX(String name,
ElementKind kind,
Modifiers modifiers,
Element enclosing)
- : super(name, kind, modifiers, enclosing, false);
+ : super(name, kind, modifiers, enclosing);
FunctionElement immediateRedirectionTarget;
+ PrefixElement redirectionDeferredPrefix;
bool get isRedirectingFactory => immediateRedirectionTarget != null;
+ // TODO(johnniwinther): This should also return true for cyclic redirecting
+ // generative constructors.
+ bool get isCyclicRedirection => effectiveTarget.isRedirectingFactory;
+
/// This field is set by the post process queue when checking for cycles.
ConstructorElement internalEffectiveTarget;
DartType effectiveTargetType;
@@ -1988,20 +2088,25 @@
return effectiveTargetType.substByContext(newType);
}
+ accept(ElementVisitor visitor, arg) {
+ return visitor.visitConstructorElement(this, arg);
+ }
+
ConstructorElement get definingConstructor => null;
ClassElement get enclosingClass => enclosingElement;
}
-class DeferredLoaderGetterElementX extends FunctionElementX {
+class DeferredLoaderGetterElementX extends GetterElementX
+ implements GetterElement {
final PrefixElement prefix;
DeferredLoaderGetterElementX(PrefixElement prefix)
: this.prefix = prefix,
super("loadLibrary",
- ElementKind.FUNCTION,
Modifiers.EMPTY,
- prefix, true);
+ prefix,
+ false);
FunctionSignature computeSignature(Compiler compiler) {
if (functionSignatureCache != null) return functionSignature;
@@ -2018,12 +2123,8 @@
bool get isSynthesized => true;
- bool get isFunction => false;
-
bool get isDeferredLoaderGetter => true;
- bool get isGetter => true;
-
bool get isTopLevel => true;
// By having position null, the enclosing elements location is printed in
// error messages.
@@ -2034,18 +2135,21 @@
bool get hasNode => false;
FunctionExpression get node => null;
+
+ @override
+ SetterElement get setter => null;
}
class ConstructorBodyElementX extends BaseFunctionElementX
implements ConstructorBodyElement {
- ConstructorElement constructor;
+ ConstructorElementX constructor;
- ConstructorBodyElementX(FunctionElement constructor)
+ ConstructorBodyElementX(ConstructorElementX constructor)
: this.constructor = constructor,
super(constructor.name,
ElementKind.GENERATIVE_CONSTRUCTOR_BODY,
Modifiers.EMPTY,
- constructor.enclosingElement, false) {
+ constructor.enclosingElement) {
functionSignatureCache = constructor.functionSignature;
}
@@ -2783,18 +2887,14 @@
FunctionExpression parseNode(Compiler compiler) => node;
}
-class EnumMethodElementX extends FunctionElementX {
+class EnumMethodElementX extends MethodElementX {
final FunctionExpression node;
EnumMethodElementX(String name,
EnumClassElementX enumClass,
Modifiers modifiers,
this.node)
- : super(name,
- ElementKind.FUNCTION,
- modifiers,
- enumClass,
- false);
+ : super(name, ElementKind.FUNCTION, modifiers, enumClass, true);
@override
bool get hasNode => true;
diff --git a/pkg/compiler/lib/src/elements/visitor.dart b/pkg/compiler/lib/src/elements/visitor.dart
index e3e610a..7769226 100644
--- a/pkg/compiler/lib/src/elements/visitor.dart
+++ b/pkg/compiler/lib/src/elements/visitor.dart
@@ -29,6 +29,7 @@
R visitFieldParameterElement(InitializingFormalElement e, A arg) => null;
R visitAbstractFieldElement(AbstractFieldElement e, A arg) => null;
R visitFunctionElement(FunctionElement e, A arg) => null;
+ R visitConstructorElement(ConstructorElement e, A arg) => null;
R visitConstructorBodyElement(ConstructorBodyElement e, A arg) => null;
R visitClassElement(ClassElement e, A arg) => null;
R visitMixinApplicationElement(MixinApplicationElement e, A arg) => null;
@@ -47,7 +48,7 @@
@override
R visitErroneousElement(ErroneousElement e, A arg) {
- return visitFunctionElement(e, arg);
+ return visitElement(e, arg);
}
@override
@@ -120,6 +121,11 @@
}
@override
+ R visitConstructorElement(ConstructorElement e, A arg) {
+ return visitFunctionElement(e, arg);
+ }
+
+ @override
R visitConstructorBodyElement(ConstructorBodyElement e, A arg) {
return visitElement(e, arg);
}
diff --git a/pkg/compiler/lib/src/enqueue.dart b/pkg/compiler/lib/src/enqueue.dart
index da3afed..056db9f 100644
--- a/pkg/compiler/lib/src/enqueue.dart
+++ b/pkg/compiler/lib/src/enqueue.dart
@@ -853,7 +853,7 @@
"Codegen work list is closed. Trying to add $element");
}
CodegenWorkItem workItem = new CodegenWorkItem(
- element, itemCompilationContextCreator());
+ compiler, element, itemCompilationContextCreator());
queue.add(workItem);
return true;
}
diff --git a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
index e3bdac5..941d64d 100644
--- a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
+++ b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
@@ -835,38 +835,7 @@
}
if (node.isIndex) {
- if (op == '=') {
- // [: foo[0] = 42 :]
- handleDynamicSend(
- node,
- setterSelector,
- receiverType,
- new ArgumentsTypes<T>([indexType, rhsType], null));
- return rhsType;
- } else {
- // [: foo[0] += 42 :] or [: foo[0]++ :].
- T getterType = handleDynamicSend(
- node,
- getterSelector,
- receiverType,
- new ArgumentsTypes<T>([indexType], null));
- T returnType = handleDynamicSend(
- node,
- operatorSelector,
- getterType,
- new ArgumentsTypes<T>([rhsType], null));
- handleDynamicSend(
- node,
- setterSelector,
- receiverType,
- new ArgumentsTypes<T>([indexType, returnType], null));
-
- if (node.isPostfix) {
- return getterType;
- } else {
- return returnType;
- }
- }
+ return internalError(node, "Unexpected index operation");
} else if (op == '=') {
return handlePlainAssignment(
node, element, setterSelector, receiverType, rhsType,
@@ -918,6 +887,259 @@
}
}
+ /// Handle compound index set, like `foo[0] += 42` or `foo[0]++`.
+ T handleCompoundIndexSet(
+ ast.SendSet node,
+ T receiverType,
+ T indexType,
+ T rhsType) {
+ Selector getterSelector =
+ elements.getGetterSelectorInComplexSendSet(node);
+ Selector operatorSelector =
+ elements.getOperatorSelectorInComplexSendSet(node);
+ Selector setterSelector = elements.getSelector(node);
+
+ T getterType = handleDynamicSend(
+ node,
+ getterSelector,
+ receiverType,
+ new ArgumentsTypes<T>([indexType], null));
+ T returnType = handleDynamicSend(
+ node,
+ operatorSelector,
+ getterType,
+ new ArgumentsTypes<T>([rhsType], null));
+ handleDynamicSend(
+ node,
+ setterSelector,
+ receiverType,
+ new ArgumentsTypes<T>([indexType, returnType], null));
+
+ if (node.isPostfix) {
+ return getterType;
+ } else {
+ return returnType;
+ }
+ }
+
+ /// Handle compound prefix/postfix operations, like `a[0]++`.
+ T handleCompoundPrefixPostfix(
+ ast.Send node,
+ T receiverType,
+ T indexType) {
+ return handleCompoundIndexSet(
+ node, receiverType, indexType, types.uint31Type);
+ }
+
+ @override
+ T visitIndexPostfix(
+ ast.Send node,
+ ast.Node receiver,
+ ast.Node index,
+ op.IncDecOperator operator,
+ _) {
+ T receiverType = visit(receiver);
+ T indexType = visit(index);
+ return handleCompoundPrefixPostfix(node, receiverType, indexType);
+ }
+
+ @override
+ T visitIndexPrefix(
+ ast.Send node,
+ ast.Node receiver,
+ ast.Node index,
+ op.IncDecOperator operator,
+ _) {
+ T receiverType = visit(receiver);
+ T indexType = visit(index);
+ return handleCompoundPrefixPostfix(node, receiverType, indexType);
+ }
+
+ @override
+ T visitCompoundIndexSet(
+ ast.SendSet node,
+ ast.Node receiver,
+ ast.Node index,
+ op.AssignmentOperator operator,
+ ast.Node rhs,
+ _) {
+ T receiverType = visit(receiver);
+ T indexType = visit(index);
+ T rhsType = visit(rhs);
+ return handleCompoundIndexSet(node, receiverType, indexType, rhsType);
+ }
+
+ @override
+ T visitSuperIndexPrefix(
+ ast.Send node,
+ MethodElement getter,
+ MethodElement setter,
+ ast.Node index,
+ op.IncDecOperator operator,
+ _) {
+ T indexType = visit(index);
+ return handleCompoundPrefixPostfix(node, superType, indexType);
+ }
+
+ @override
+ T visitSuperIndexPostfix(
+ ast.Send node,
+ MethodElement getter,
+ MethodElement setter,
+ ast.Node index,
+ op.IncDecOperator operator,
+ _) {
+ T indexType = visit(index);
+ return handleCompoundPrefixPostfix(node, superType, indexType);
+ }
+
+ /// Handle compound super index set, like `super[42] =+ 2`.
+ T handleSuperCompoundIndexSet(
+ ast.SendSet node,
+ ast.Node index,
+ ast.Node rhs) {
+ T receiverType = superType;
+ T indexType = visit(index);
+ T rhsType = visit(rhs);
+ return handleCompoundIndexSet(node, receiverType, indexType, rhsType);
+ }
+
+ @override
+ T visitSuperCompoundIndexSet(
+ ast.SendSet node,
+ FunctionElement getter,
+ FunctionElement setter,
+ ast.Node index,
+ op.AssignmentOperator operator,
+ ast.Node rhs,
+ _) {
+ return handleSuperCompoundIndexSet(node, index, rhs);
+ }
+
+ @override
+ T visitUnresolvedSuperGetterCompoundIndexSet(
+ ast.SendSet node,
+ Element element,
+ ast.Node index,
+ op.AssignmentOperator operator,
+ ast.Node rhs,
+ _) {
+ return handleSuperCompoundIndexSet(node, index, rhs);
+ }
+
+ @override
+ T visitUnresolvedSuperSetterCompoundIndexSet(
+ ast.SendSet node,
+ FunctionElement getter,
+ Element element,
+ ast.Node index,
+ op.AssignmentOperator operator,
+ ast.Node rhs,
+ _) {
+ return handleSuperCompoundIndexSet(node, index, rhs);
+ }
+
+ @override
+ T visitUnresolvedSuperGetterIndexPrefix(
+ ast.SendSet node,
+ Element element,
+ ast.Node index,
+ op.IncDecOperator operator,
+ _) {
+ T indexType = visit(index);
+ return handleCompoundPrefixPostfix(node, superType, indexType);
+ }
+
+ @override
+ T visitUnresolvedSuperSetterIndexPrefix(
+ ast.SendSet node,
+ FunctionElement getter,
+ Element element,
+ ast.Node index,
+ op.IncDecOperator operator,
+ _) {
+ T indexType = visit(index);
+ return handleCompoundPrefixPostfix(node, superType, indexType);
+ }
+
+ @override
+ T visitUnresolvedSuperGetterIndexPostfix(
+ ast.SendSet node,
+ Element element,
+ ast.Node index,
+ op.IncDecOperator operator,
+ _) {
+ T indexType = visit(index);
+ return handleCompoundPrefixPostfix(node, superType, indexType);
+ }
+
+ @override
+ T visitUnresolvedSuperSetterIndexPostfix(
+ ast.SendSet node,
+ FunctionElement getter,
+ Element element,
+ ast.Node index,
+ op.IncDecOperator operator,
+ _) {
+ T indexType = visit(index);
+ return handleCompoundPrefixPostfix(node, superType, indexType);
+ }
+
+ /// Handle index set, like `foo[0] = 42`.
+ T handleIndexSet(ast.SendSet node, T receiverType, T indexType, T rhsType) {
+ Selector setterSelector = elements.getSelector(node);
+ handleDynamicSend(
+ node,
+ setterSelector,
+ receiverType,
+ new ArgumentsTypes<T>([indexType, rhsType], null));
+ return rhsType;
+ }
+
+ @override
+ T visitIndexSet(
+ ast.SendSet node,
+ ast.Node receiver,
+ ast.Node index,
+ ast.Node rhs,
+ _) {
+ T receiverType = visit(receiver);
+ T indexType = visit(index);
+ T rhsType = visit(rhs);
+ return handleIndexSet(node, receiverType, indexType, rhsType);
+ }
+
+ /// Handle super index set, like `super[42] = true`.
+ T handleSuperIndexSet(
+ ast.SendSet node,
+ ast.Node index,
+ ast.Node rhs) {
+ T receiverType = superType;
+ T indexType = visit(index);
+ T rhsType = visit(rhs);
+ return handleIndexSet(node, receiverType, indexType, rhsType);
+ }
+
+ @override
+ T visitSuperIndexSet(
+ ast.SendSet node,
+ FunctionElement function,
+ ast.Node index,
+ ast.Node rhs,
+ _) {
+ return handleSuperIndexSet(node, index, rhs);
+ }
+
+ @override
+ T visitUnresolvedSuperIndexSet(
+ ast.SendSet node,
+ Element element,
+ ast.Node index,
+ ast.Node rhs,
+ _) {
+ return handleSuperIndexSet(node, index, rhs);
+ }
+
T handlePlainAssignment(ast.Node node,
Element element,
Selector setterSelector,
@@ -1436,7 +1658,6 @@
return inferrer.typeOfNativeBehavior(nativeBehavior);
} else if (name == 'JS_NULL_CLASS_NAME'
|| name == 'JS_OBJECT_CLASS_NAME'
- || name == 'JS_OPERATOR_IS_PREFIX'
|| name == 'JS_OPERATOR_AS_PREFIX'
|| name == 'JS_STRING_CONCAT') {
return types.stringType;
diff --git a/pkg/compiler/lib/src/js/js.dart b/pkg/compiler/lib/src/js/js.dart
index 378b89e..bfbe96a 100644
--- a/pkg/compiler/lib/src/js/js.dart
+++ b/pkg/compiler/lib/src/js/js.dart
@@ -15,7 +15,6 @@
import '../util/util.dart' show NO_LOCATION_SPANNABLE;
import '../dump_info.dart' show DumpInfoTask;
-
CodeBuffer prettyPrint(Node node, leg.Compiler compiler,
{DumpInfoTask monitor,
bool allowVariableMinification: true}) {
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart
index aeb4fb8..986a313 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -290,6 +290,7 @@
ClassElement jsMutableArrayClass;
ClassElement jsFixedArrayClass;
ClassElement jsExtendableArrayClass;
+ ClassElement jsUnmodifiableArrayClass;
ClassElement jsPositiveIntClass;
ClassElement jsUInt32Class;
ClassElement jsUInt31Class;
@@ -386,6 +387,15 @@
return _extendableArrayTypeCache;
}
+ TypeMask _unmodifiableArrayTypeCache;
+ TypeMask get unmodifiableArrayType {
+ if (_unmodifiableArrayTypeCache == null) {
+ _unmodifiableArrayTypeCache =
+ new TypeMask.nonNullExact(jsUnmodifiableArrayClass, compiler.world);
+ }
+ return _fixedArrayTypeCache;
+ }
+
TypeMask _nonNullTypeCache;
TypeMask get nonNullType {
if (_nonNullTypeCache == null) {
@@ -1055,11 +1065,13 @@
} else if (cls == compiler.listClass ||
cls == jsArrayClass ||
cls == jsFixedArrayClass ||
- cls == jsExtendableArrayClass) {
+ cls == jsExtendableArrayClass ||
+ cls == jsUnmodifiableArrayClass) {
addInterceptors(jsArrayClass, enqueuer, registry);
addInterceptors(jsMutableArrayClass, enqueuer, registry);
addInterceptors(jsFixedArrayClass, enqueuer, registry);
addInterceptors(jsExtendableArrayClass, enqueuer, registry);
+ addInterceptors(jsUnmodifiableArrayClass, enqueuer, registry);
} else if (cls == compiler.intClass || cls == jsIntClass) {
addInterceptors(jsIntClass, enqueuer, registry);
addInterceptors(jsPositiveIntClass, enqueuer, registry);
@@ -1639,7 +1651,8 @@
element == jsArrayClass ||
element == jsMutableArrayClass ||
element == jsExtendableArrayClass ||
- element == jsFixedArrayClass;
+ element == jsFixedArrayClass ||
+ element == jsUnmodifiableArrayClass;
}
/// Return [true] if the class is represented by a native JavaSCript type in
@@ -1871,7 +1884,7 @@
ClassElement get numImplementation => jsNumberClass;
ClassElement get stringImplementation => jsStringClass;
ClassElement get listImplementation => jsArrayClass;
- ClassElement get constListImplementation => jsArrayClass;
+ ClassElement get constListImplementation => jsUnmodifiableArrayClass;
ClassElement get fixedListImplementation => jsFixedArrayClass;
ClassElement get growableListImplementation => jsExtendableArrayClass;
ClassElement get mapImplementation => mapLiteralClass;
@@ -2032,6 +2045,7 @@
jsMutableArrayClass = findClass('JSMutableArray'),
jsFixedArrayClass = findClass('JSFixedArray'),
jsExtendableArrayClass = findClass('JSExtendableArray'),
+ jsUnmodifiableArrayClass = findClass('JSUnmodifiableArray'),
jsPlainJavaScriptObjectClass = findClass('PlainJavaScriptObject'),
jsUnknownJavaScriptObjectClass = findClass('UnknownJavaScriptObject'),
];
@@ -2115,6 +2129,9 @@
if (jsExtendableArrayClass != null) {
jsExtendableArrayClass.ensureResolved(compiler);
}
+ if (jsUnmodifiableArrayClass != null) {
+ jsUnmodifiableArrayClass.ensureResolved(compiler);
+ }
jsIndexableClass.ensureResolved(compiler);
jsIndexableLength = compiler.lookupElementIn(
diff --git a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
index 95b1dee..f101a76 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
@@ -589,6 +589,20 @@
}
@override
+ js.Expression visitCreateInvocationMirror(
+ tree_ir.CreateInvocationMirror node) {
+ js.Expression name = js.string(node.selector.name);
+ js.Expression internalName = js.string(glue.invocationName(node.selector));
+ js.Expression kind = js.number(node.selector.invocationMirrorKind);
+ js.Expression arguments = new js.ArrayInitializer(
+ node.arguments.map(visitExpression).toList());
+ js.Expression argumentNames = new js.ArrayInitializer(
+ node.selector.namedArguments.map(js.string).toList());
+ return buildStaticHelperInvocation(glue.createInvocationMirrorMethod,
+ [name, internalName, kind, arguments, argumentNames]);
+ }
+
+ @override
js.Expression visitGetField(tree_ir.GetField node) {
return new js.PropertyAccess.field(
visitExpression(node.object),
diff --git a/pkg/compiler/lib/src/js_backend/codegen/glue.dart b/pkg/compiler/lib/src/js_backend/codegen/glue.dart
index 47d5b39..d3d3728 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/glue.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/glue.dart
@@ -76,6 +76,10 @@
return _namer.invocationName(selector);
}
+ FunctionElement get createInvocationMirrorMethod {
+ return _backend.getCreateInvocationMirror();
+ }
+
void registerUseInterceptorInCodegen() {
_backend.registerUseInterceptor(_enqueuer);
}
@@ -114,7 +118,6 @@
hasBeenInstantiated: hasBeenInstantiated);
}
-
String getInterceptorName(Set<ClassElement> interceptedClasses) {
return _backend.namer.nameForGetInterceptor(interceptedClasses);
}
@@ -207,4 +210,8 @@
String getTypeTestTag(DartType type) {
return _backend.namer.operatorIsType(type);
}
+
+ bool operatorEqHandlesNullArgument(FunctionElement element) {
+ return _backend.operatorEqHandlesNullArgument(element);
+ }
}
diff --git a/pkg/compiler/lib/src/js_backend/codegen/js_tree_builder.dart b/pkg/compiler/lib/src/js_backend/codegen/js_tree_builder.dart
index 3499f38..98893f8 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/js_tree_builder.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/js_tree_builder.dart
@@ -73,4 +73,9 @@
node.arguments.map(getVariableUse).toList(growable: false),
node.typeInformation.map(getVariableUse).toList(growable: false));
}
+
+ Expression visitCreateInvocationMirror(cps_ir.CreateInvocationMirror node) {
+ return new CreateInvocationMirror(node.selector,
+ node.arguments.map(getVariableUse).toList(growable: false));
+ }
}
diff --git a/pkg/compiler/lib/src/js_backend/codegen/task.dart b/pkg/compiler/lib/src/js_backend/codegen/task.dart
index 89cf74c..3befc85 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/task.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/task.dart
@@ -117,13 +117,6 @@
giveUp(irBuilderTask.bailoutMessage);
}
}
- if (element.isInstanceMember && !element.isGenerativeConstructorBody) {
- Selector selector = new Selector.fromElement(cpsNode.element);
- if (glue.isInterceptedSelector(selector)) {
- giveUp('cannot compile methods that need interceptor calling '
- 'convention.');
- }
- }
traceGraph("IR Builder", cpsNode);
new UnsugarVisitor(glue).rewrite(cpsNode);
traceGraph("Unsugaring", cpsNode);
diff --git a/pkg/compiler/lib/src/js_backend/codegen/type_test_emitter.dart b/pkg/compiler/lib/src/js_backend/codegen/type_test_emitter.dart
index 49b28e6..4a697a4 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/type_test_emitter.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/type_test_emitter.dart
@@ -60,4 +60,4 @@
new js.Prefix("typeof", value),
js.string(type));
}
-}
+}
\ No newline at end of file
diff --git a/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart b/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
index cf1e3ed..fab6a45 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
@@ -6,21 +6,39 @@
import '../../cps_ir/optimizers.dart';
import '../../constants/expressions.dart';
import '../../constants/values.dart';
-import '../../elements/elements.dart'
- show ClassElement, FieldElement, FunctionElement, Element;
+import '../../elements/elements.dart' show
+ ClassElement,
+ FieldElement,
+ FunctionElement,
+ Local,
+ ExecutableElement;
import '../../js_backend/codegen/glue.dart';
import '../../dart2jslib.dart' show Selector, World;
+import '../../cps_ir/cps_ir_builder.dart' show ThisParameterLocal;
+
+class ExplicitReceiverParameterEntity implements Local {
+ String get name => 'receiver';
+ final ExecutableElement executableContext;
+ ExplicitReceiverParameterEntity(this.executableContext);
+ toString() => 'ExplicitReceiverParameterEntity($executableContext)';
+}
/// Rewrites the initial CPS IR to make Dart semantics explicit and inserts
/// special nodes that respect JavaScript behavior.
///
/// Performs the following rewrites:
-/// - rewrite [IsTrue] in a [Branch] to do boolean conversion.
-/// - converts two-parameter exception handlers to one-parameter ones.
+/// - Rewrite [IsTrue] in a [Branch] to do boolean conversion.
+/// - Add interceptors at call sites that use interceptor calling convention.
+/// - Add explicit receiver argument for methods that are called in interceptor
+/// calling convention.
+/// - Convert two-parameter exception handlers to one-parameter ones.
class UnsugarVisitor extends RecursiveVisitor {
Glue _glue;
ParentVisitor _parentVisitor = new ParentVisitor();
+ Parameter thisParameter;
+ Parameter explicitReceiverParameter;
+
// In a catch block, rethrow implicitly throws the block's exception
// parameter. This is the exception parameter when nested in a catch
// block and null otherwise.
@@ -29,8 +47,32 @@
UnsugarVisitor(this._glue);
void rewrite(FunctionDefinition function) {
+ bool inInterceptedMethod = _glue.isInterceptedMethod(function.element);
+
+ if (function.element.name == '==' &&
+ function.parameters.length == 1 &&
+ !_glue.operatorEqHandlesNullArgument(function.element)) {
+ // Insert the null check that the language semantics requires us to
+ // perform before calling operator ==.
+ insertEqNullCheck(function);
+ }
+
+ if (inInterceptedMethod) {
+ thisParameter = function.thisParameter;
+ ThisParameterLocal holder = thisParameter.hint;
+ explicitReceiverParameter = new Parameter(
+ new ExplicitReceiverParameterEntity(
+ holder.executableContext));
+ function.parameters.insert(0, explicitReceiverParameter);
+ }
+
// Set all parent pointers.
_parentVisitor.visit(function);
+
+ if (inInterceptedMethod) {
+ explicitReceiverParameter.substituteFor(thisParameter);
+ }
+
visit(function);
}
@@ -47,6 +89,19 @@
new TrueConstantValue()));
}
+ Constant get falseConstant {
+ return new Constant(
+ new BoolConstantExpression(
+ false,
+ new FalseConstantValue()));
+ }
+
+ Constant get nullConstant {
+ return new Constant(
+ new NullConstantExpression(
+ new NullConstantValue()));
+ }
+
void insertLetPrim(Primitive primitive, Expression node) {
LetPrim let = new LetPrim(primitive);
InteriorNode parent = node.parent;
@@ -56,6 +111,42 @@
let.parent = parent;
}
+ void insertEqNullCheck(FunctionDefinition function) {
+ // Replace
+ //
+ // body;
+ //
+ // with
+ //
+ // if (identical(arg, null))
+ // return false;
+ // else
+ // body;
+ //
+ Continuation originalBody = new Continuation(<Parameter>[]);
+ originalBody.body = function.body.body;
+
+ Continuation returnFalse = new Continuation(<Parameter>[]);
+ Primitive falsePrimitive = falseConstant;
+ returnFalse.body =
+ new LetPrim(falsePrimitive,
+ new InvokeContinuation(
+ function.body.returnContinuation, <Primitive>[falsePrimitive]));
+
+ Primitive nullPrimitive = nullConstant;
+ Primitive test = new Identical(function.parameters.single, nullPrimitive);
+
+ Expression newBody =
+ new LetCont.many(<Continuation>[returnFalse, originalBody],
+ new LetPrim(nullPrimitive,
+ new LetPrim(test,
+ new Branch(
+ new IsTrue(test),
+ returnFalse,
+ originalBody))));
+ function.body.body = newBody;
+ }
+
/// Insert a static call to [function] at the point of [node] with result
/// [result].
///
@@ -145,32 +236,42 @@
processInvokeMethod(InvokeMethod node) {
Selector selector = node.selector;
- // TODO(karlklose): should we rewrite all selectors?
if (!_glue.isInterceptedSelector(selector)) return;
Primitive receiver = node.receiver.definition;
- Set<ClassElement> interceptedClasses =
- _glue.getInterceptedClassesOn(selector);
- _glue.registerSpecializedGetInterceptor(interceptedClasses);
+ Primitive newReceiver;
- Primitive intercepted = new Interceptor(receiver, interceptedClasses);
- insertLetPrim(intercepted, node);
+ if (receiver == explicitReceiverParameter) {
+ // If the receiver is the explicit receiver, we are calling a method in
+ // the same interceptor:
+ // Change 'receiver.foo()' to 'this.foo(receiver)'.
+ newReceiver = thisParameter;
+ } else {
+ // TODO(sra): Move the computation of interceptedClasses to a much later
+ // phase and take into account the remaining uses of the interceptor.
+ Set<ClassElement> interceptedClasses =
+ _glue.getInterceptedClassesOn(selector);
+ _glue.registerSpecializedGetInterceptor(interceptedClasses);
+ newReceiver = new Interceptor(receiver, interceptedClasses);
+ insertLetPrim(newReceiver, node);
+ }
+
node.arguments.insert(0, node.receiver);
node.callingConvention = CallingConvention.JS_INTERCEPTED;
assert(node.isValid);
- node.receiver = new Reference<Primitive>(intercepted);
- }
-
- Primitive makeNull() {
- NullConstantValue nullConst = new NullConstantValue();
- return new Constant(new NullConstantExpression(nullConst));
+ node.receiver = new Reference<Primitive>(newReceiver);
}
processInvokeMethodDirectly(InvokeMethodDirectly node) {
if (_glue.isInterceptedMethod(node.target)) {
- Primitive nullPrim = makeNull();
+ Primitive nullPrim = nullConstant;
insertLetPrim(nullPrim, node);
node.arguments.insert(0, node.receiver);
+ // TODO(sra): `null` is not adequate. Interceptors project the class
+ // hierarchy onto an interceptor hierarchy. A super call that does a
+ // method call will use the javascript 'this' parameter to avoid calling
+ // getInterceptor again, so the receiver must be the interceptor (likely
+ // `this`), not `null`.
node.receiver = new Reference<Primitive>(nullPrim);
}
}
diff --git a/pkg/compiler/lib/src/js_backend/constant_handler_javascript.dart b/pkg/compiler/lib/src/js_backend/constant_handler_javascript.dart
index 0f66c0d..a9d83e5 100644
--- a/pkg/compiler/lib/src/js_backend/constant_handler_javascript.dart
+++ b/pkg/compiler/lib/src/js_backend/constant_handler_javascript.dart
@@ -207,14 +207,6 @@
return constant;
}
- ConstantExpression createTypeConstant(TypeDeclarationElement element) {
- DartType elementType = element.rawType;
- DartType constantType =
- compiler.backend.typeImplementation.computeType(compiler);
- return new TypeConstantExpression(
- new TypeConstantValue(elementType, constantType), elementType);
- }
-
void forgetElement(Element element) {
super.forgetElement(element);
const ForgetConstantElementVisitor().visit(element, this);
diff --git a/pkg/compiler/lib/src/js_backend/constant_system_javascript.dart b/pkg/compiler/lib/src/js_backend/constant_system_javascript.dart
index fc97cad..214c480 100644
--- a/pkg/compiler/lib/src/js_backend/constant_system_javascript.dart
+++ b/pkg/compiler/lib/src/js_backend/constant_system_javascript.dart
@@ -240,8 +240,11 @@
return constant;
}
- NumConstantValue createInt(int i)
- => convertToJavaScriptConstant(new IntConstantValue(i));
+ @override
+ NumConstantValue createInt(int i) {
+ return convertToJavaScriptConstant(new IntConstantValue(i));
+ }
+
NumConstantValue createInt32(int i) => new IntConstantValue(i & BITS32);
NumConstantValue createDouble(double d)
=> convertToJavaScriptConstant(new DoubleConstantValue(d));
@@ -251,6 +254,19 @@
BoolConstantValue createBool(bool value) => new BoolConstantValue(value);
NullConstantValue createNull() => new NullConstantValue();
+
+ @override
+ ListConstantValue createList(InterfaceType type,
+ List<ConstantValue> values) {
+ return new ListConstantValue(type, values);
+ }
+
+ @override
+ ConstantValue createType(Compiler compiler, DartType type) {
+ return new TypeConstantValue(
+ type, compiler.backend.typeImplementation.computeType(compiler));
+ }
+
// Integer checks don't verify that the number is not -0.0.
bool isInt(ConstantValue constant) => constant.isInt || constant.isMinusZero;
bool isDouble(ConstantValue constant)
diff --git a/pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart b/pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart
index 99c46ca..6afef1b 100644
--- a/pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart
+++ b/pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart
@@ -178,8 +178,7 @@
TypeConstantValue makeTypeConstant(ClassElement element) {
DartType elementType = element.rawType;
- DartType constantType = backend.typeImplementation.rawType;
- return new TypeConstantValue(elementType, constantType);
+ return backend.constantSystem.createType(compiler, elementType);
}
List<Element> computeEscapingConstructors(ClassElement classElement) {
diff --git a/pkg/compiler/lib/src/js_backend/type_variable_handler.dart b/pkg/compiler/lib/src/js_backend/type_variable_handler.dart
index 6344a1d..52d00c4 100644
--- a/pkg/compiler/lib/src/js_backend/type_variable_handler.dart
+++ b/pkg/compiler/lib/src/js_backend/type_variable_handler.dart
@@ -87,7 +87,11 @@
ConstantExpression bound = new IntConstantExpression(
boundIndex,
_backend.constantSystem.createInt(boundIndex));
- ConstantExpression type = _backend.constants.createTypeConstant(cls);
+ ConstantExpression type =
+ new TypeConstantExpression(
+ _backend.constantSystem.createType(
+ _backend.compiler, cls.rawType),
+ cls.rawType);
List<AstConstant> arguments =
[wrapConstant(type), wrapConstant(name), wrapConstant(bound)];
@@ -124,8 +128,7 @@
* there, otherwise a new entry for [c] is created.
*/
int _reifyTypeVariableConstant(ConstantValue c, TypeVariableElement variable) {
- String name = jsAst.prettyPrint(_task.constantReference(c),
- _compiler).getText();
+ jsAst.Expression name = _task.constantReference(c);
int index;
if (_typeVariableConstants.containsKey(variable)) {
index = _typeVariableConstants[variable];
@@ -153,7 +156,7 @@
}
// TODO(15613): Remove quotes.
- _metadataCollector.globalMetadata.add('"Placeholder for ${variable}"');
+ _metadataCollector.globalMetadata.add(js('"Placeholder for ${variable}"'));
return _typeVariableConstants[variable] =
_metadataCollector.globalMetadata.length - 1;
}
diff --git a/pkg/compiler/lib/src/js_emitter/metadata_collector.dart b/pkg/compiler/lib/src/js_emitter/metadata_collector.dart
index bd4ab29..a2501fd 100644
--- a/pkg/compiler/lib/src/js_emitter/metadata_collector.dart
+++ b/pkg/compiler/lib/src/js_emitter/metadata_collector.dart
@@ -10,14 +10,15 @@
/// A list of JS expressions that represent metadata, parameter names and
/// type variable types.
- final List<String> globalMetadata = <String>[];
+ final List<jsAst.Expression> globalMetadata = <jsAst.Expression>[];
/// A map used to canonicalize the entries of globalMetadata.
final Map<String, int> _globalMetadataMap = <String, int>{};
/// A map with lists of JS expressions, one list for each output unit. The
/// entries represent types including function types and typedefs.
- final Map<OutputUnit, List<String>> types = <OutputUnit, List<String>>{};
+ final Map<OutputUnit, List<jsAst.Expression>> types =
+ <OutputUnit, List<jsAst.Expression>>{};
/// A map used to canonicalize the entries of types.
final Map<OutputUnit, Map<String, int>> _typesMap =
@@ -70,11 +71,10 @@
for (ParameterElement element in signature.optionalParameters) {
ConstantExpression constant =
_backend.constants.getConstantForVariable(element);
- String stringRepresentation = (constant == null)
- ? "null"
- : jsAst.prettyPrint(
- _emitter.constantReference(constant.value), _compiler).getText();
- defaultValues.add(addGlobalMetadata(stringRepresentation));
+ jsAst.Expression expression = (constant == null)
+ ? null
+ : _emitter.constantReference(constant.value);
+ defaultValues.add(addGlobalMetadata(expression));
}
return defaultValues;
}
@@ -86,9 +86,7 @@
_compiler.internalError(annotation, 'Annotation value is null.');
return -1;
}
- return addGlobalMetadata(
- jsAst.prettyPrint(
- _emitter.constantReference(constant.value), _compiler).getText());
+ return addGlobalMetadata(_emitter.constantReference(constant.value));
}
int reifyType(DartType type, {bool ignoreTypeVariables: false}) {
@@ -112,31 +110,41 @@
return _backend.isAccessibleByReflection(typedef.element);
});
- return addTypeInOutputUnit(
- jsAst.prettyPrint(representation, _compiler).getText(), outputUnit);
+ if (representation is jsAst.LiteralString) {
+ // We don't want the representation to be a string, since we use
+ // strings as indicator for non-initialized types in the lazy emitter.
+ _compiler.internalError(
+ NO_LOCATION_SPANNABLE, 'reified types should not be strings.');
+ }
+
+ return addTypeInOutputUnit(representation, outputUnit);
}
int reifyName(String name) {
- return addGlobalMetadata('"$name"');
+ return addGlobalMetadata(js('"$name"'));
}
- int addGlobalMetadata(String string) {
+ int addGlobalMetadata(jsAst.Expression expression) {
+ // TODO(sigmund): consider adding an effient way to compare expressions
+ String string = jsAst.prettyPrint(expression, _compiler).getText();
return _globalMetadataMap.putIfAbsent(string, () {
- globalMetadata.add(string);
+ globalMetadata.add(expression);
return globalMetadata.length - 1;
});
}
- int addTypeInOutputUnit(String compiledType, OutputUnit outputUnit) {
+ int addTypeInOutputUnit(jsAst.Expression type, OutputUnit outputUnit) {
+ String string = jsAst.prettyPrint(type, _compiler).getText();
if (_typesMap[outputUnit] == null) {
_typesMap[outputUnit] = <String, int>{};
}
- return _typesMap[outputUnit].putIfAbsent(compiledType, () {
+ return _typesMap[outputUnit].putIfAbsent(string, () {
- if (types[outputUnit] == null)
- types[outputUnit] = <String>[];
+ if (types[outputUnit] == null) {
+ types[outputUnit] = <jsAst.Expression>[];
+ }
- types[outputUnit].add(compiledType);
+ types[outputUnit].add(type);
return types[outputUnit].length - 1;
});
}
diff --git a/pkg/compiler/lib/src/js_emitter/model.dart b/pkg/compiler/lib/src/js_emitter/model.dart
index 7fa389b..69eb6ae 100644
--- a/pkg/compiler/lib/src/js_emitter/model.dart
+++ b/pkg/compiler/lib/src/js_emitter/model.dart
@@ -43,7 +43,7 @@
assert(hasIsolateSupport != null);
}
- /// A list of pretty-printed JavaScript expressions.
+ /// A list of metadata expressions.
///
/// This list must be emitted in the `METADATA` embedded global.
/// The list references constants and must hence be emitted after constants
@@ -53,9 +53,9 @@
/// list must not be emitted before all operations on it are done. For
/// example, the old emitter generates metadata when emitting reflection
/// data.
- List<String> get metadata => _metadataCollector.globalMetadata;
+ List<js.Expression> get metadata => _metadataCollector.globalMetadata;
- /// A map with lists of pretty-printed JavaScript expressions.
+ /// A map with lists of type expressions.
///
/// There is one list for each output unit. The list belonging to the main
/// unit must be emitted in the `TYPES` embedded global. The list references
@@ -65,7 +65,7 @@
/// list must not be emitted before all operations on it are done. For
/// example, the old emitter generates metadata when emitting reflection
/// data.
- Map<OutputUnit, List<String>> get metadataTypes
+ Map<OutputUnit, List<js.Expression>> get metadataTypes
=> _metadataCollector.types;
diff --git a/pkg/compiler/lib/src/js_emitter/new_emitter/emitter.dart b/pkg/compiler/lib/src/js_emitter/new_emitter/emitter.dart
index 6a55d08..aeeddc3 100644
--- a/pkg/compiler/lib/src/js_emitter/new_emitter/emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/new_emitter/emitter.dart
@@ -5,7 +5,9 @@
library dart2js.new_js_emitter.emitter;
import 'package:_internal/compiler/js_lib/shared/embedded_names.dart' show
- JsBuiltin;
+ JsBuiltin,
+ METADATA,
+ TYPES;
import '../program_builder.dart' show ProgramBuilder;
import '../model.dart';
@@ -138,6 +140,10 @@
return js.js.expressionTemplateYielding(
typeAccess(_compiler.objectClass));
+ case JsBuiltin.classNameFromIsCheckProperty:
+ int isPrefixLength = namer.operatorIsPrefix.length;
+ return js.js.expressionTemplateFor('#.substring($isPrefixLength)');
+
case JsBuiltin.isFunctionType:
return _backend.rti.representationGenerator.templateForIsFunctionType;
@@ -158,6 +164,18 @@
return _backend.rti.representationGenerator
.templateForCreateFunctionType;
+ case JsBuiltin.isSubtype:
+ // TODO(floitsch): move this closer to where is-check properties are
+ // built.
+ String isPrefix = namer.operatorIsPrefix;
+ return js.js.expressionTemplateFor("('$isPrefix' + #) in #.prototype");
+
+ case JsBuiltin.getMetadata:
+ return _emitter.templateForReadMetadata;
+
+ case JsBuiltin.getType:
+ return _emitter.templateForReadType;
+
default:
_compiler.internalError(NO_LOCATION_SPANNABLE,
"Unhandled Builtin: $builtin");
diff --git a/pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart b/pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart
index 23646b7..ebeb1df 100644
--- a/pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart
@@ -66,8 +66,12 @@
}
js.Expression generateEmbeddedGlobalAccess(String global) {
- // TODO(floitsch): We should not use "init" for globals.
- return js.js("init.$global");
+ return js.js(generateEmbeddedGlobalAccessString(global));
+ }
+
+ String generateEmbeddedGlobalAccessString(String global) {
+ // TODO(floitsch): don't use 'init' as global embedder storage.
+ return 'init.$global';
}
bool isConstantInlinedOrAlreadyEmitted(ConstantValue constant) {
@@ -134,7 +138,8 @@
// deferred hash (which depends on the output) when emitting the main
// fragment.
fragments.skip(1).forEach((DeferredFragment deferredUnit) {
- List<String> types = program.metadataTypes[deferredUnit.outputUnit];
+ List<js.Expression> types =
+ program.metadataTypes[deferredUnit.outputUnit];
js.Expression ast = emitDeferredFragment(types, deferredUnit,
program.holders);
String code = js.prettyPrint(ast, compiler).getText();
@@ -155,13 +160,21 @@
return totalSize;
}
- js.LiteralString unparse(Compiler compiler, js.Node value) {
+ /// Unparses the given [value].
+ ///
+ /// Pretty-prints the given [value] and, if [protectForEval] is
+ /// true, wraps the resulting string in parenthesis. The result is escaped
+ /// and returned.
+ js.LiteralString unparse(Compiler compiler, js.Node value,
+ {bool protectForEval: true}) {
String text = js.prettyPrint(value, compiler).getText();
- if (value is js.Fun) text = '($text)';
- if (value is js.LiteralExpression &&
- (value.template.startsWith("function ") ||
- value.template.startsWith("{"))) {
- text = '($text)';
+ if (protectForEval) {
+ if (value is js.Fun) text = '($text)';
+ if (value is js.LiteralExpression &&
+ (value.template.startsWith("function ") ||
+ value.template.startsWith("{"))) {
+ text = '($text)';
+ }
}
return js.js.escapedString(text);
}
@@ -196,6 +209,7 @@
backend.emitter.staticFunctionAccess(backend.getCyclicThrowHelper()),
'outputContainsConstantList': program.outputContainsConstantList,
'embeddedGlobals': emitEmbeddedGlobals(program),
+ 'readMetadataTypeFunction': readMetadataTypeFunction,
'staticNonFinals':
emitStaticNonFinalFields(fragment.staticNonFinalFields),
'operatorIsPrefix': js.string(namer.operatorIsPrefix),
@@ -416,27 +430,83 @@
return new js.Property(js.string(GET_TYPE_FROM_NAME), function);
}
+ static final String readMetadataTypeName = "readMetadataType";
+
+ js.Statement get readMetadataTypeFunction {
+ // Types are non-evaluated and must be compiled at first use.
+ // Compiled strings are guaranteed not to be strings, and it's thus safe
+ // to use a type-test to determine if a type has already been compiled.
+ return js.js.statement('''function $readMetadataTypeName(index) {
+ var type = #typesAccess[index];
+ if (typeof type == 'string') {
+ type = expressionCompile(type);
+ #typesAccess[index] = type;
+ }
+ return type;
+ }''', {"typesAccess": generateEmbeddedGlobalAccess(TYPES)});
+ }
+
+ js.Template get templateForReadType {
+ // TODO(floitsch): make sure that no local variable shadows the access to
+ // the readMetadataType function.
+ return js.js.expressionTemplateFor('$readMetadataTypeName(#)');
+ }
+
+ static final String readMetadataName = "readLazyMetadata";
+ static final String lazyMetadataName = "lazy_$METADATA";
+
+ js.Statement get readMetadataFunction {
+ // Types are non-evaluated and must be compiled at first use.
+ // Compiled strings are guaranteed not to be strings, and it's thus safe
+ // to use a type-test to determine if a type has already been compiled.
+ return js.js.statement('''function $readMetadataName(index) {
+ var lazyMetadata = #lazyMetadataAccess[index];
+ if (typeof lazyMetadata == 'string') {
+ #metadataAccess[index] = expressionCompile(lazyMetadata);
+ #lazyMetadataAccess[index] = null;
+ }
+ return #metadataAccess[index];
+ }''', {
+ "lazyMetadataAccess": generateEmbeddedGlobalAccess(lazyMetadataName),
+ "metadataAccess": generateEmbeddedGlobalAccess(METADATA)
+ });
+ }
+
+ js.Template get templateForReadMetadata {
+ // TODO(floitsch): make sure that no local variable shadows the access to
+ // the readMetadata function.
+ return js.js.expressionTemplateFor('$readMetadataName(#)');
+ }
+
List<js.Property> emitMetadata(Program program) {
+ // Unparses all given js-expressions (suitable for `expressionCompile`) and
+ // returns the result in a js-array.
+ // If the given [expressions] is null returns the empty js-array.
+ js.ArrayInitializer unparseExpressions(List<js.Expression> expressions) {
+ if (expressions == null) expressions = <js.Expression>[];
+ List<js.LiteralString> unparsedExpressions = expressions
+ .map((expr) => unparse(compiler, expr, protectForEval: false))
+ .toList();
+ return new js.ArrayInitializer(unparsedExpressions);
+ }
List<js.Property> metadataGlobals = <js.Property>[];
- js.Property createGlobal(List<String> list, String global) {
- String listAsString = "[${list.join(",")}]";
- js.Expression metadata =
- js.js.uncachedExpressionTemplate(listAsString).instantiate([]);
- return new js.Property(js.string(global), metadata);
- }
+ js.ArrayInitializer unparsedMetadata = unparseExpressions(program.metadata);
+ metadataGlobals.add(new js.Property(js.string(lazyMetadataName),
+ unparsedMetadata));
+ metadataGlobals.add(new js.Property(js.string(METADATA),
+ new js.ArrayInitializer([])));
- metadataGlobals.add(createGlobal(program.metadata, METADATA));
- List<String> types =
+ List<js.Expression> types =
program.metadataTypes[program.fragments.first.outputUnit];
- if (types == null) types = <String>[];
- metadataGlobals.add(createGlobal(types, TYPES));
+ metadataGlobals.add(new js.Property(js.string(TYPES),
+ unparseExpressions(types)));
return metadataGlobals;
}
- js.Expression emitDeferredFragment(List<String> types,
+ js.Expression emitDeferredFragment(List<js.Expression> types,
DeferredFragment fragment,
List<Holder> holders) {
// TODO(floitsch): initialize eager classes.
@@ -460,9 +530,9 @@
js.LiteralString immediateString = unparse(compiler, immediateCode);
- js.Expression deferredTypes = types == null
+ js.Expression deferredTypes = (types == null)
? js.string("[]")
- : js.string("[${types.join(",")}]");
+ : unparse(compiler, new js.ArrayInitializer(types));
js.ArrayInitializer hunk =
new js.ArrayInitializer([deferredArray, immediateString,
@@ -1158,6 +1228,13 @@
// Initialize globals.
#embeddedGlobals;
+ function expressionCompile(__s__) {
+ 'use strict';
+ return eval('(' + __s__ + ')');
+ }
+
+ #readMetadataTypeFunction;
+
// TODO(floitsch): this order means that native classes may not be
// referenced from constants. I'm mostly afraid of things like using them as
// generic arguments (which should be fine, but maybe there are other
diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
index 240e771..dd2c214 100644
--- a/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
@@ -276,6 +276,10 @@
return jsAst.js.expressionTemplateYielding(
typeAccess(compiler.objectClass));
+ case JsBuiltin.classNameFromIsCheckProperty:
+ int isPrefixLength = namer.operatorIsPrefix.length;
+ return jsAst.js.expressionTemplateFor('#.substring($isPrefixLength)');
+
case JsBuiltin.isFunctionType:
return backend.rti.representationGenerator.templateForIsFunctionType;
@@ -295,6 +299,23 @@
return backend.rti.representationGenerator
.templateForCreateFunctionType;
+ case JsBuiltin.isSubtype:
+ // TODO(floitsch): move this closer to where is-check properties are
+ // built.
+ String isPrefix = namer.operatorIsPrefix;
+ return jsAst.js.expressionTemplateFor(
+ "('$isPrefix' + #) in #.prototype");
+
+ case JsBuiltin.getMetadata:
+ String metadataAccess =
+ generateEmbeddedGlobalAccessString(embeddedNames.METADATA);
+ return jsAst.js.expressionTemplateFor("$metadataAccess[#]");
+
+ case JsBuiltin.getType:
+ String typesAccess =
+ generateEmbeddedGlobalAccessString(embeddedNames.TYPES);
+ return jsAst.js.expressionTemplateFor("$typesAccess[#]");
+
default:
compiler.internalError(NO_LOCATION_SPANNABLE,
"Unhandled Builtin: $builtin");
@@ -654,12 +675,11 @@
void emitMetadata(Program program, CodeOutput output, OutputUnit outputUnit) {
- jsAst.Expression constructList(List<String> list) {
- String listAsString = list == null ? '[]' : '[${list.join(",")}]';
- return js.uncachedExpressionTemplate(listAsString).instantiate([]);
+ jsAst.Expression constructList(List<jsAst.Expression> list) {
+ return new jsAst.ArrayInitializer(list == null ? [] : list);
}
- List<String> types = program.metadataTypes[outputUnit];
+ List<jsAst.Expression> types = program.metadataTypes[outputUnit];
if (outputUnit == compiler.deferredLoadTask.mainOutputUnit) {
jsAst.Expression metadataAccess =
@@ -989,8 +1009,8 @@
output.add(N);
}
- void writeLibraryDescriptor(CodeOutput output, LibraryElement library,
- Fragment fragment) {
+ jsAst.Expression generateLibraryDescriptor(LibraryElement library,
+ Fragment fragment) {
var uri = "";
if (!compiler.enableMinification || backend.mustPreserveUris) {
uri = library.canonicalUri;
@@ -998,14 +1018,6 @@
uri = relativize(compiler.outputUri, library.canonicalUri, false);
}
}
- ClassBuilder descriptor = elementDescriptors[fragment][library];
- if (descriptor == null) {
- // Nothing of the library was emitted.
- // TODO(floitsch): this should not happen. We currently have an example
- // with language/prefix6_negative_test.dart where we have an instance
- // method without its corresponding class.
- return;
- }
String libraryName =
(!compiler.enableMinification || backend.mustRetainLibraryNames) ?
@@ -1014,27 +1026,33 @@
jsAst.Fun metadata = task.metadataCollector.buildMetadataFunction(library);
- jsAst.ObjectInitializer initializers = descriptor.toObjectInitializer();
+ ClassBuilder descriptor = elementDescriptors[fragment][library];
+
+ jsAst.ObjectInitializer initializer;
+ if (descriptor == null) {
+ // Nothing of the library was emitted.
+ // TODO(floitsch): this should not happen. We currently have an example
+ // with language/prefix6_negative_test.dart where we have an instance
+ // method without its corresponding class.
+ initializer = new jsAst.ObjectInitializer([]);
+ } else {
+ initializer = descriptor.toObjectInitializer();
+ }
compiler.dumpInfoTask.registerElementAst(library, metadata);
- compiler.dumpInfoTask.registerElementAst(library, initializers);
- output
- ..add('["$libraryName",$_')
- ..add('"${uri}",$_');
- if (metadata != null) {
- output.addBuffer(jsAst.prettyPrint(metadata,
- compiler,
- monitor: compiler.dumpInfoTask));
+ compiler.dumpInfoTask.registerElementAst(library, initializer);
+
+ List<jsAst.Expression> parts = <jsAst.Expression>[];
+ parts..add(js.string(libraryName))
+ ..add(js.string(uri.toString()))
+ ..add(metadata == null ? new jsAst.ArrayHole() : metadata)
+ ..add(js.name(namer.globalObjectFor(library)))
+ ..add(initializer);
+ if (library == compiler.mainApp) {
+ parts.add(js.number(1));
}
- output
- ..add(',$_')
- ..add(namer.globalObjectFor(library))
- ..add(',$_')
- ..addBuffer(jsAst.prettyPrint(initializers,
- compiler,
- monitor: compiler.dumpInfoTask))
- ..add(library == compiler.mainApp ? ',${n}1' : "")
- ..add('],$n');
+
+ return new jsAst.ArrayInitializer(parts);
}
void assemblePrecompiledConstructor(OutputUnit outputUnit,
@@ -1308,9 +1326,9 @@
checkEverythingEmitted(descriptors.keys);
- CodeBuffer libraryBuffer = new CodeBuffer();
+ List<jsAst.Expression> parts = <jsAst.Expression>[];
for (LibraryElement library in Elements.sortedByPosition(libraries)) {
- writeLibraryDescriptor(libraryBuffer, library, mainFragment);
+ parts.add(generateLibraryDescriptor(library, mainFragment));
descriptors.remove(library);
}
@@ -1325,11 +1343,12 @@
for (LibraryElement element in remainingLibraries) {
assert(element is LibraryElement || compiler.hasIncrementalSupport);
if (element is LibraryElement) {
- writeLibraryDescriptor(libraryBuffer, element, mainFragment);
+ parts.add(generateLibraryDescriptor(element, mainFragment));
descriptors.remove(element);
}
}
}
+ jsAst.ArrayInitializer descriptorsAst = new jsAst.ArrayInitializer(parts);
bool needsNativeSupport = program.needsNativeSupport;
mainOutput.addBuffer(
@@ -1340,9 +1359,10 @@
// The argument to reflectionDataParser is assigned to a temporary 'dart'
// so that 'dart.' will appear as the prefix to dart methods in stack
// traces and profile entries.
- mainOutput..add('var dart = [$n')
- ..addBuffer(libraryBuffer)
- ..add(']$N');
+ mainOutput..add('var dart =')
+ ..addBuffer(jsAst.prettyPrint(descriptorsAst, compiler,
+ monitor: compiler.dumpInfoTask))
+ ..add('$N');
if (compiler.useContentSecurityPolicy) {
jsAst.Statement precompiledFunctionAst =
buildCspPrecompiledFunctionFor(mainOutputUnit);
@@ -1586,8 +1606,8 @@
Map<OutputUnit, String> emitDeferredOutputUnits(Program program) {
if (!program.isSplit) return const {};
- Map<OutputUnit, CodeBuffer> outputBuffers =
- new Map<OutputUnit, CodeBuffer>();
+ Map<OutputUnit, jsAst.Expression> outputs =
+ new Map<OutputUnit, jsAst.Expression>();
for (Fragment fragment in program.deferredFragments) {
OutputUnit outputUnit = fragment.outputUnit;
@@ -1600,16 +1620,17 @@
if (libraries == null) libraries = [];
// TODO(johnniwinther): Avoid creating [CodeBuffer]s.
- CodeBuffer buffer = new CodeBuffer();
- outputBuffers[outputUnit] = buffer;
+ List<jsAst.Expression> parts = <jsAst.Expression>[];
for (LibraryElement library in Elements.sortedByPosition(libraries)) {
- writeLibraryDescriptor(buffer, library, fragment);
+ parts.add(generateLibraryDescriptor(library, fragment));
descriptors.remove(library);
}
+
+ outputs[outputUnit] = new jsAst.ArrayInitializer(parts);
}
}
- return emitDeferredCode(program, outputBuffers);
+ return emitDeferredCode(program, outputs);
}
int emitProgram(ProgramBuilder programBuilder) {
@@ -1752,14 +1773,14 @@
/// can be used for calling the initializer.
Map<OutputUnit, String> emitDeferredCode(
Program program,
- Map<OutputUnit, CodeBuffer> deferredBuffers) {
+ Map<OutputUnit, jsAst.Expression> deferredAsts) {
Map<OutputUnit, String> hunkHashes = new Map<OutputUnit, String>();
for (Fragment fragment in program.deferredFragments) {
OutputUnit outputUnit = fragment.outputUnit;
- CodeOutput libraryDescriptorBuffer = deferredBuffers[outputUnit];
+ jsAst.Expression libraryDescriptor = deferredAsts[outputUnit];
List<CodeOutputListener> outputListeners = <CodeOutputListener>[];
Hasher hasher = new Hasher();
@@ -1796,7 +1817,7 @@
'${globalsHolder}.${namer.isolateName}$N');
String typesAccess =
generateEmbeddedGlobalAccessString(embeddedNames.TYPES);
- if (libraryDescriptorBuffer != null) {
+ if (libraryDescriptor != null) {
// TODO(ahe): This defines a lot of properties on the
// Isolate.prototype object. We know this will turn it into a
// slow object in V8, so instead we should do something similar
@@ -1806,9 +1827,10 @@
// The argument to reflectionDataParser is assigned to a temporary
// 'dart' so that 'dart.' will appear as the prefix to dart methods
// in stack traces and profile entries.
- ..add('var dart = [$n ')
- ..addBuffer(libraryDescriptorBuffer)
- ..add(']$N');
+ ..add('var dart = $n ')
+ ..addBuffer(jsAst.prettyPrint(libraryDescriptor, compiler,
+ monitor: compiler.dumpInfoTask))
+ ..add('$N');
if (compiler.useContentSecurityPolicy) {
jsAst.Statement precompiledFunctionAst =
diff --git a/pkg/compiler/lib/src/library_loader.dart b/pkg/compiler/lib/src/library_loader.dart
index 3e5ddde..86d14f7f 100644
--- a/pkg/compiler/lib/src/library_loader.dart
+++ b/pkg/compiler/lib/src/library_loader.dart
@@ -371,7 +371,7 @@
* the import/export scopes are not set up.
*/
Future processLibraryTags(LibraryDependencyHandler handler,
- LibraryElement library) {
+ LibraryElementX library) {
TagState tagState = new TagState();
bool importsDartCore = false;
@@ -499,13 +499,23 @@
/**
* Handle an import/export tag by loading the referenced library and
* registering its dependency in [handler] for the computation of the import/
- * export scope.
+ * export scope. If the tag does not contain a valid URI, then its dependency
+ * is not registered in [handler].
*/
- Future registerLibraryFromTag(LibraryDependencyHandler handler,
- LibraryElement library,
- LibraryDependency tag) {
+ Future<Null> registerLibraryFromTag(LibraryDependencyHandler handler,
+ LibraryElement library,
+ LibraryDependency tag) {
Uri base = library.canonicalUri;
- Uri resolvedUri = base.resolve(tag.uri.dartString.slowToString());
+ String tagUriString = tag.uri.dartString.slowToString();
+ Uri resolvedUri;
+ try {
+ resolvedUri = base.resolve(tagUriString);
+ } on FormatException {
+ compiler.reportError(
+ tag.uri, MessageKind.INVALID_URI, {'uri': tagUriString});
+ // 'reportError' does not stop necessarily stop compilation
+ return new Future.value();
+ }
return createLibrary(handler, library, resolvedUri, tag.uri)
.then((LibraryElement loadedLibrary) {
if (loadedLibrary == null) return;
@@ -649,7 +659,7 @@
/**
* Imports the library into the [importingLibrary].
*/
- void importLibrary(Compiler compiler, LibraryElement importingLibrary) {
+ void importLibrary(Compiler compiler, LibraryElementX importingLibrary) {
assert(invariant(importingLibrary,
importedLibrary.exportsHandled,
message: 'Exports not handled on $importedLibrary'));
@@ -722,7 +732,7 @@
* exports performed in [LibraryDependencyHandler.computeExports].
*/
class LibraryDependencyNode {
- final LibraryElement library;
+ final LibraryElementX library;
// TODO(ahe): Remove [hashCodeCounter] and [hashCode] when
// VM implementation of Object.hashCode is not slow.
@@ -765,7 +775,7 @@
Map<Element, Link<Export>> pendingExportMap =
new Map<Element, Link<Export>>();
- LibraryDependencyNode(LibraryElement this.library);
+ LibraryDependencyNode(this.library);
/**
* Registers that the library of this node imports [importLibrary] through the
@@ -1015,7 +1025,7 @@
/**
* Registers that [library] depends on [loadedLibrary] through [tag].
*/
- void registerDependency(LibraryElement library,
+ void registerDependency(LibraryElementX library,
LibraryDependency tag,
LibraryElement loadedLibrary) {
if (tag != null) {
diff --git a/pkg/compiler/lib/src/native/enqueue.dart b/pkg/compiler/lib/src/native/enqueue.dart
index 11968db..1f09444 100644
--- a/pkg/compiler/lib/src/native/enqueue.dart
+++ b/pkg/compiler/lib/src/native/enqueue.dart
@@ -225,7 +225,7 @@
* Returns the source string of the class named in the extends clause, or
* `null` if there is no extends clause.
*/
- String findExtendsNameOfClass(ClassElement classElement) {
+ String findExtendsNameOfClass(BaseClassElementX classElement) {
// "class B extends A ... {}" --> "A"
// "class B extends foo.A ... {}" --> "A"
// "class B<T> extends foo.A<T,T> with M1, M2 ... {}" --> "A"
@@ -360,7 +360,7 @@
flushing = false;
}
- processClass(ClassElementX classElement, cause) {
+ processClass(BaseClassElementX classElement, cause) {
// TODO(ahe): Fix this assertion to work in incremental compilation.
assert(compiler.hasIncrementalSupport ||
!registeredClasses.contains(classElement));
@@ -422,7 +422,7 @@
/// Sets the native name of [element], either from an annotation, or
/// defaulting to the Dart name.
- void setNativeName(Element element) {
+ void setNativeName(ElementX element) {
String name = findJsNameFromAnnotation(element);
if (name == null) name = element.name;
element.setNative(name);
@@ -436,7 +436,7 @@
/// use the declared @JSName as the expression
/// 3. If [element] does not have a @JSName annotation, qualify the name of
/// the method with the @Native name of the enclosing class.
- void setNativeNameForStaticMethod(Element element) {
+ void setNativeNameForStaticMethod(ElementX element) {
String name = findJsNameFromAnnotation(element);
if (name == null) name = element.name;
if (isIdentifier(name)) {
diff --git a/pkg/compiler/lib/src/native/native.dart b/pkg/compiler/lib/src/native/native.dart
index cf1d062..5783e52 100644
--- a/pkg/compiler/lib/src/native/native.dart
+++ b/pkg/compiler/lib/src/native/native.dart
@@ -11,7 +11,7 @@
import '../dart_types.dart';
import '../elements/elements.dart';
import '../elements/modelx.dart'
- show ClassElementX, FunctionElementX, LibraryElementX;
+ show ElementX, BaseClassElementX, FunctionElementX, LibraryElementX;
import '../js/js.dart' as js;
import '../js_backend/js_backend.dart';
import '../js_emitter/js_emitter.dart' show CodeEmitterTask, NativeEmitter;
diff --git a/pkg/compiler/lib/src/patch_parser.dart b/pkg/compiler/lib/src/patch_parser.dart
index c6e90d5..8ed2a09 100644
--- a/pkg/compiler/lib/src/patch_parser.dart
+++ b/pkg/compiler/lib/src/patch_parser.dart
@@ -128,7 +128,7 @@
show LibraryElementX,
MetadataAnnotationX,
ClassElementX,
- FunctionElementX;
+ BaseFunctionElementX;
import 'helpers/helpers.dart'; // Included for debug helpers.
import 'library_loader.dart' show LibraryLoader;
import 'scanner/scannerlib.dart'; // Scanner, Parsers, Listeners
@@ -541,8 +541,8 @@
}
void patchFunction(DiagnosticListener listener,
- FunctionElementX origin,
- FunctionElementX patch) {
+ BaseFunctionElementX origin,
+ BaseFunctionElementX patch) {
if (!origin.modifiers.isExternal) {
listener.reportError(origin, MessageKind.PATCH_NON_EXTERNAL);
listener.reportInfo(
diff --git a/pkg/compiler/lib/src/resolution/access_semantics.dart b/pkg/compiler/lib/src/resolution/access_semantics.dart
index ecd16c0..a99db1f 100644
--- a/pkg/compiler/lib/src/resolution/access_semantics.dart
+++ b/pkg/compiler/lib/src/resolution/access_semantics.dart
@@ -143,6 +143,11 @@
SUPER_METHOD_SETTER,
/// Read from a superclass getter and write to a superclass field.
SUPER_GETTER_FIELD,
+
+ /// Read from a superclass where the getter (and maybe setter) is unresolved.
+ UNRESOLVED_SUPER_GETTER,
+ /// Read from a superclass getter and write to an unresolved setter.
+ UNRESOLVED_SUPER_SETTER,
}
/**
@@ -388,17 +393,32 @@
///
ABSTRACT,
- /// An invocation of an unresolved constructor or an unresolved type.
+ /// An invocation of a constructor on an unresolved type.
+ ///
+ /// For instance
+ /// m() => new Unresolved();
+ ///
+ UNRESOLVED_TYPE,
+
+ /// An invocation of an unresolved constructor.
///
/// For instance
/// class C {
/// C();
/// }
- /// m1() => new C.unresolved();
- /// m2() => new Unresolved();
+ /// m() => new C.unresolved();
///
- // TODO(johnniwinther): Differentiate between error types.
- ERRONEOUS,
+ UNRESOLVED_CONSTRUCTOR,
+
+ /// An const invocation of an non-constant constructor.
+ ///
+ /// For instance
+ /// class C {
+ /// C();
+ /// }
+ /// m() => const C();
+ ///
+ NON_CONSTANT_CONSTRUCTOR,
/// An invocation of an ill-defined redirecting factory constructor.
///
@@ -431,7 +451,9 @@
/// `true` if this invocation is erroneous.
bool get isErroneous {
return kind == ConstructorAccessKind.ABSTRACT ||
- kind == ConstructorAccessKind.ERRONEOUS ||
+ kind == ConstructorAccessKind.UNRESOLVED_TYPE ||
+ kind == ConstructorAccessKind.UNRESOLVED_CONSTRUCTOR ||
+ kind == ConstructorAccessKind.NON_CONSTANT_CONSTRUCTOR ||
kind == ConstructorAccessKind.ERRONEOUS_REDIRECTING_FACTORY;
}
}
diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart
index 986663e..6973a47 100644
--- a/pkg/compiler/lib/src/resolution/members.dart
+++ b/pkg/compiler/lib/src/resolution/members.dart
@@ -714,7 +714,7 @@
if (Elements.isStaticOrTopLevelField(element)) {
visitor.addDeferredAction(element, () {
if (element.modifiers.isConst) {
- constantCompiler.compileConstant(element);
+ element.constant = constantCompiler.compileConstant(element);
} else {
constantCompiler.compileVariable(element);
}
@@ -1156,9 +1156,9 @@
}
AbstractFieldElement field = lookupElement;
- FunctionElementX getter = field.getter;
+ MethodElementX getter = field.getter;
if (getter == null) return;
- FunctionElementX setter = field.setter;
+ MethodElementX setter = field.setter;
if (setter == null) return;
int getterFlags = getter.modifiers.flags | Modifiers.FLAG_ABSTRACT;
int setterFlags = setter.modifiers.flags | Modifiers.FLAG_ABSTRACT;
@@ -2427,8 +2427,10 @@
parameterNodes = parameterNodes.tail;
});
addDeferredAction(enclosingElement, () {
- functionParameters.forEachOptionalParameter((Element parameter) {
- compiler.resolver.constantCompiler.compileConstant(parameter);
+ functionParameters.forEachOptionalParameter(
+ (ParameterElementX parameter) {
+ parameter.constant =
+ compiler.resolver.constantCompiler.compileConstant(parameter);
});
});
if (inCheckContext) {
@@ -3227,6 +3229,14 @@
ConstructorElement redirectionTarget = resolveRedirectingFactory(
node, inConstContext: isConstConstructor);
constructor.immediateRedirectionTarget = redirectionTarget;
+
+ Node constructorReference = node.constructorReference;
+ if (constructorReference is Send) {
+ constructor.redirectionDeferredPrefix =
+ compiler.deferredLoadTask.deferredPrefixElement(constructorReference,
+ registry.mapping);
+ }
+
registry.setRedirectingTargetConstructor(node, redirectionTarget);
if (Elements.isUnresolved(redirectionTarget)) {
registry.registerThrowNoSuchMethod();
@@ -4869,14 +4879,15 @@
visitNodeList(NodeList node) {
for (Link<Node> link = node.nodes; !link.isEmpty; link = link.tail) {
Identifier name = visit(link.head);
- LocalVariableElement element = new LocalVariableElementX(
+ LocalVariableElementX element = new LocalVariableElementX(
name.source, resolver.enclosingElement,
variables, name.token);
resolver.defineLocalVariable(link.head, element);
resolver.addToScope(element);
if (definitions.modifiers.isConst) {
compiler.enqueuer.resolution.addDeferredAction(element, () {
- compiler.resolver.constantCompiler.compileConstant(element);
+ element.constant =
+ compiler.resolver.constantCompiler.compileConstant(element);
});
}
}
diff --git a/pkg/compiler/lib/src/resolution/resolution.dart b/pkg/compiler/lib/src/resolution/resolution.dart
index 19039c8..7b8bf65 100644
--- a/pkg/compiler/lib/src/resolution/resolution.dart
+++ b/pkg/compiler/lib/src/resolution/resolution.dart
@@ -35,6 +35,7 @@
LocalParameterElementX,
LocalVariableElementX,
MetadataAnnotationX,
+ MethodElementX,
MixinApplicationElementX,
ParameterElementX,
ParameterMetadataAnnotation,
diff --git a/pkg/compiler/lib/src/resolution/semantic_visitor.dart b/pkg/compiler/lib/src/resolution/semantic_visitor.dart
index b626bba..b1c1f31 100644
--- a/pkg/compiler/lib/src/resolution/semantic_visitor.dart
+++ b/pkg/compiler/lib/src/resolution/semantic_visitor.dart
@@ -5,7 +5,7 @@
library dart2js.semantics_visitor;
import '../constants/expressions.dart';
-import '../dart2jslib.dart' show invariant;
+import '../dart2jslib.dart' show invariant, MessageKind;
import '../dart_types.dart';
import '../elements/elements.dart';
import '../helpers/helpers.dart';
@@ -1223,6 +1223,22 @@
Node argument,
A arg);
+ /// Binary operation on the unresolved super [element].
+ ///
+ /// For instance
+ /// class B {
+ /// }
+ /// class C extends B {
+ /// m() => super + 42;
+ /// }
+ ///
+ R visitUnresolvedSuperBinary(
+ Send node,
+ Element element,
+ BinaryOperator operator,
+ Node argument,
+ A arg);
+
/// Index expression `receiver[index]`.
///
/// For instance:
@@ -1277,6 +1293,20 @@
Node index,
A arg);
+ /// Index expression `super[index]` where 'operator []' is unresolved.
+ ///
+ /// For instance:
+ /// class B {}
+ /// class C extends B {
+ /// m(a) => super[a];
+ /// }
+ ///
+ R visitUnresolvedSuperIndex(
+ Send node,
+ Element element,
+ Node index,
+ A arg);
+
/// Prefix operation on an index expression `operator super[index]` where
/// 'operator []' is implemented on a superclass by [indexFunction] and
/// 'operator []=' is implemented on by [indexSetFunction] and the operation
@@ -1293,8 +1323,8 @@
///
R visitSuperIndexPrefix(
Send node,
- FunctionElement indexFunction,
- FunctionElement indexSetFunction,
+ MethodElement indexFunction,
+ MethodElement indexSetFunction,
Node index,
IncDecOperator operator,
A arg);
@@ -1315,29 +1345,15 @@
///
R visitSuperIndexPostfix(
Send node,
- FunctionElement indexFunction,
- FunctionElement indexSetFunction,
+ MethodElement indexFunction,
+ MethodElement indexSetFunction,
Node index,
IncDecOperator operator,
A arg);
- /// Index expression `super[index]` where 'operator []' is unresolved.
- ///
- /// For instance:
- /// class B {}
- /// class C extends B {
- /// m(a) => super[a];
- /// }
- ///
- R visitUnresolvedSuperIndex(
- Send node,
- Element element,
- Node index,
- A arg);
-
/// Prefix operation on an index expression `operator super[index]` where
- /// 'operator []' or 'operator []=' is unresolved and the operation
- /// is defined by [operator].
+ /// 'operator []' and maybe also 'operator []=' is unresolved and the
+ /// operation is defined by [operator].
///
/// For instance:
/// class B {}
@@ -1345,16 +1361,16 @@
/// m(a) => --super[a];
/// }
///
- R errorUnresolvedSuperIndexPrefix(
+ R visitUnresolvedSuperGetterIndexPrefix(
Send node,
- Element function,
+ Element element,
Node index,
IncDecOperator operator,
A arg);
/// Postfix operation on an index expression `super[index] operator` where
- /// 'operator []' or 'operator []=' is unresolved and the operation
- /// is defined by [operator].
+ /// 'operator []' and maybe also 'operator []=' is unresolved and the
+ /// operation is defined by [operator].
///
/// For instance:
/// class B {}
@@ -1362,9 +1378,45 @@
/// m(a) => super[a]++;
/// }
///
- R errorUnresolvedSuperIndexPostfix(
+ R visitUnresolvedSuperGetterIndexPostfix(
Send node,
- Element function,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg);
+
+ /// Prefix operation on an index expression `operator super[index]` where
+ /// 'operator []' is implemented on a superclass by [indexFunction] and
+ /// 'operator []=' is unresolved and the operation is defined by [operator].
+ ///
+ /// For instance:
+ /// class B {}
+ /// class C extends B {
+ /// m(a) => --super[a];
+ /// }
+ ///
+ R visitUnresolvedSuperSetterIndexPrefix(
+ Send node,
+ MethodElement indexFunction,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg);
+
+ /// Postfix operation on an index expression `super[index] operator` where
+ /// 'operator []' is implemented on a superclass by [indexFunction] and
+ /// 'operator []=' is unresolved and the operation is defined by [operator].
+ ///
+ /// For instance:
+ /// class B {}
+ /// class C extends B {
+ /// m(a) => super[a]++;
+ /// }
+ ///
+ R visitUnresolvedSuperSetterIndexPostfix(
+ Send node,
+ MethodElement indexFunction,
+ Element element,
Node index,
IncDecOperator operator,
A arg);
@@ -1455,6 +1507,21 @@
FunctionElement function,
A arg);
+ /// Unary operation on the unresolved super [element].
+ ///
+ /// For instance
+ /// class B {
+ /// }
+ /// class C extends B {
+ /// m() => -super;
+ /// }
+ ///
+ R visitUnresolvedSuperUnary(
+ Send node,
+ UnaryOperator operator,
+ Element element,
+ A arg);
+
/// Unary expression `!expression`.
///
/// For instance:
@@ -1495,6 +1562,23 @@
Node rhs,
A arg);
+ /// Index set expression `super[index] = rhs` where `operator []=` is
+ /// undefined.
+ ///
+ /// For instance
+ /// class B {
+ /// }
+ /// class C extends B {
+ /// m() => super[1] = 42;
+ /// }
+ ///
+ R visitUnresolvedSuperIndexSet(
+ Send node,
+ Element element,
+ Node index,
+ Node rhs,
+ A arg);
+
/// Logical and, &&, expression with operands [left] and [right].
///
/// For instance
@@ -1970,8 +2054,8 @@
Node rhs,
A arg);
- /// Compound assignment expression of [rhs] with [operator] on the index
- /// operators of [receiver] whose getter and setter are defined by
+ /// Compound index assignment of [rhs] with [operator] to [index] on the
+ /// index operators of [receiver] whose getter and setter are defined by
/// [getterSelector] and [setterSelector], respectively.
///
/// For instance:
@@ -1985,7 +2069,7 @@
Node rhs,
A arg);
- /// Compound assignment expression of [rhs] with [operator] on the index
+ /// Compound index assignment of [rhs] with [operator] to [index] on the index
/// operators of a super class defined by [getter] and [setter].
///
/// For instance:
@@ -1999,8 +2083,48 @@
///
R visitSuperCompoundIndexSet(
SendSet node,
- FunctionElement getter,
- FunctionElement setter,
+ MethodElement getter,
+ MethodElement setter,
+ Node index,
+ AssignmentOperator operator,
+ Node rhs,
+ A arg);
+
+ /// Compound index assignment of [rhs] with [operator] to [index] on a super
+ /// super class where the index getter is undefined. The index setter might
+ /// also be undefined.
+ ///
+ /// For instance
+ /// class B {
+ /// }
+ /// class C extends B {
+ /// m() => super[1] += 42;
+ /// }
+ ///
+ R visitUnresolvedSuperGetterCompoundIndexSet(
+ Send node,
+ Element element,
+ Node index,
+ AssignmentOperator operator,
+ Node rhs,
+ A arg);
+
+ /// Compound index assignment of [rhs] with [operator] to [index] on a super
+ /// super class where the index getter is defined by [getter] but the index
+ /// setter is undefined.
+ ///
+ /// For instance
+ /// class B {
+ /// operator [](index) => 42;
+ /// }
+ /// class C extends B {
+ /// m() => super[1] += 42;
+ /// }
+ ///
+ R visitUnresolvedSuperSetterCompoundIndexSet(
+ Send node,
+ MethodElement getter,
+ Element element,
Node index,
AssignmentOperator operator,
Node rhs,
@@ -2842,71 +2966,6 @@
IncDecOperator operator,
A arg);
- /// Index set operation on the unresolved super [element].
- ///
- /// For instance
- /// class B {
- /// }
- /// class C extends B {
- /// m() => super[1] = 42;
- /// }
- ///
- R errorUnresolvedSuperIndexSet(
- Send node,
- Element element,
- Node index,
- Node rhs,
- A arg);
-
- /// Compound index set operation on the unresolved super [element].
- ///
- /// For instance
- /// class B {
- /// }
- /// class C extends B {
- /// m() => super[1] += 42;
- /// }
- ///
- // TODO(johnniwinther): Split this case into unresolved getter/setter cases.
- R errorUnresolvedSuperCompoundIndexSet(
- Send node,
- Element element,
- Node index,
- AssignmentOperator operator,
- Node rhs,
- A arg);
-
- /// Unary operation on the unresolved super [element].
- ///
- /// For instance
- /// class B {
- /// }
- /// class C extends B {
- /// m() => -super;
- /// }
- ///
- R visitUnresolvedSuperUnary(
- Send node,
- UnaryOperator operator,
- Element element,
- A arg);
-
- /// Binary operation on the unresolved super [element].
- ///
- /// For instance
- /// class B {
- /// }
- /// class C extends B {
- /// m() => super + 42;
- /// }
- ///
- R visitUnresolvedSuperBinary(
- Send node,
- Element element,
- BinaryOperator operator,
- Node argument,
- A arg);
-
/// Invocation of an undefined unary [operator] on [expression].
R errorUndefinedUnaryExpression(
Send node,
@@ -3028,9 +3087,9 @@
///
/// where [type] is `C<int>`.
///
- // TODO(johnniwinther): Update [type] to be [InterfaceType] when this is no
- // longer a catch-all clause for the erroneous constructor invocations.
- R errorUnresolvedConstructorInvoke(
+ // TODO(johnniwinther): Change [type] to [InterfaceType] when is it not
+ // `dynamic`.
+ R visitUnresolvedConstructorInvoke(
NewExpression node,
Element constructor,
DartType type,
@@ -3045,14 +3104,32 @@
///
/// where [type] is the malformed type `Unresolved`.
///
- R errorUnresolvedClassConstructorInvoke(
+ // TODO(johnniwinther): Change [type] to [MalformedType] when is it not
+ // `dynamic`.
+ R visitUnresolvedClassConstructorInvoke(
NewExpression node,
Element element,
- MalformedType type,
+ DartType type,
NodeList arguments,
Selector selector,
A arg);
+ /// Constant invocation of a non-constant constructor.
+ ///
+ /// For instance
+ /// class C {
+ /// C(a, b);
+ /// }
+ /// m() => const C(true, 42);
+ ///
+ R errorNonConstantConstructorInvoke(
+ NewExpression node,
+ Element element,
+ InterfaceType type,
+ NodeList arguments,
+ CallStructure callStructure,
+ A arg);
+
/// Invocation of a constructor on an abstract [type] with [arguments].
///
/// For instance
@@ -3060,7 +3137,7 @@
///
/// where [type] is the malformed type `Unresolved`.
///
- R errorAbstractClassConstructorInvoke(
+ R visitAbstractClassConstructorInvoke(
NewExpression node,
ConstructorElement element,
InterfaceType type,
@@ -3080,12 +3157,12 @@
/// m1() => new C(true, 42);
/// m2() => new C.a(true, 42);
///
- R errorUnresolvedRedirectingFactoryConstructorInvoke(
+ R visitUnresolvedRedirectingFactoryConstructorInvoke(
NewExpression node,
ConstructorElement constructor,
InterfaceType type,
NodeList arguments,
- Selector selector,
+ CallStructure callStructure,
A arg);
}
diff --git a/pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart b/pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart
index dce195b..7f5b884 100644
--- a/pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart
+++ b/pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart
@@ -33,17 +33,6 @@
}
@override
- R errorAbstractClassConstructorInvoke(
- NewExpression node,
- ConstructorElement element,
- InterfaceType type,
- NodeList arguments,
- CallStructure callStructure,
- A arg) {
- return bulkHandleError(node, arg);
- }
-
- @override
R errorClassTypeLiteralCompound(
Send node,
ConstantExpression constant,
@@ -251,6 +240,17 @@
}
@override
+ R errorNonConstantConstructorInvoke(
+ NewExpression node,
+ Element element,
+ InterfaceType type,
+ NodeList arguments,
+ CallStructure callStructure,
+ A arg) {
+ return bulkHandleError(node, arg);
+ }
+
+ @override
R errorStaticFunctionSet(
Send node,
MethodElement function,
@@ -443,28 +443,6 @@
}
@override
- R errorUnresolvedClassConstructorInvoke(
- NewExpression node,
- Element element,
- MalformedType type,
- NodeList arguments,
- Selector selector,
- A arg) {
- return bulkHandleError(node, arg);
- }
-
- @override
- R errorUnresolvedConstructorInvoke(
- NewExpression node,
- Element constructor,
- DartType type,
- NodeList arguments,
- Selector selector,
- A arg) {
- return bulkHandleError(node, arg);
- }
-
- @override
R errorUnresolvedPostfix(
Send node,
Element element,
@@ -483,17 +461,6 @@
}
@override
- R errorUnresolvedRedirectingFactoryConstructorInvoke(
- NewExpression node,
- ConstructorElement constructor,
- InterfaceType type,
- NodeList arguments,
- Selector selector,
- A arg) {
- return bulkHandleError(node, arg);
- }
-
- @override
R errorUnresolvedSet(
Send node,
Element element,
@@ -503,47 +470,6 @@
}
@override
- R errorUnresolvedSuperCompoundIndexSet(
- SendSet node,
- Element element,
- Node index,
- AssignmentOperator operator,
- Node rhs,
- A arg) {
- return bulkHandleError(node, arg);
- }
-
- @override
- R errorUnresolvedSuperIndexPostfix(
- Send node,
- Element function,
- Node index,
- IncDecOperator operator,
- A arg) {
- return bulkHandleError(node, arg);
- }
-
- @override
- R errorUnresolvedSuperIndexPrefix(
- Send node,
- Element function,
- Node index,
- IncDecOperator operator,
- A arg) {
- return bulkHandleError(node, arg);
- }
-
- @override
- R errorUnresolvedSuperIndexSet(
- SendSet node,
- Element element,
- Node index,
- Node rhs,
- A arg) {
- return bulkHandleError(node, arg);
- }
-
- @override
R errorUndefinedUnaryExpression(
Send node,
Operator operator,
@@ -704,6 +630,27 @@
}
@override
+ R visitUnresolvedSuperGetterIndexPrefix(
+ Send node,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg) {
+ return bulkHandlePrefix(node, arg);
+ }
+
+ @override
+ R visitUnresolvedSuperSetterIndexPrefix(
+ Send node,
+ MethodElement getter,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg) {
+ return bulkHandlePrefix(node, arg);
+ }
+
+ @override
R visitSuperMethodSetterPrefix(
Send node,
FunctionElement method,
@@ -894,6 +841,27 @@
}
@override
+ R visitUnresolvedSuperGetterIndexPostfix(
+ Send node,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg) {
+ return bulkHandlePostfix(node, arg);
+ }
+
+ @override
+ R visitUnresolvedSuperSetterIndexPostfix(
+ Send node,
+ MethodElement getter,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg) {
+ return bulkHandlePostfix(node, arg);
+ }
+
+ @override
R visitSuperMethodSetterPostfix(
Send node,
FunctionElement method,
@@ -1725,6 +1693,29 @@
}
@override
+ R visitUnresolvedSuperGetterCompoundIndexSet(
+ SendSet node,
+ Element element,
+ Node index,
+ AssignmentOperator operator,
+ Node rhs,
+ A arg) {
+ return bulkHandleIndexSet(node, arg);
+ }
+
+ @override
+ R visitUnresolvedSuperSetterCompoundIndexSet(
+ SendSet node,
+ MethodElement getter,
+ Element element,
+ Node index,
+ AssignmentOperator operator,
+ Node rhs,
+ A arg) {
+ return bulkHandleIndexSet(node, arg);
+ }
+
+ @override
R visitSuperIndexSet(
SendSet node,
FunctionElement function,
@@ -1733,6 +1724,16 @@
A arg) {
return bulkHandleIndexSet(node, arg);
}
+
+ @override
+ R visitUnresolvedSuperIndexSet(
+ SendSet node,
+ Element element,
+ Node index,
+ Node rhs,
+ A arg) {
+ return bulkHandleIndexSet(node, arg);
+ }
}
/// Mixin that implements all binary visitor methods in [SemanticSendVisitor] by
@@ -2342,6 +2343,17 @@
}
@override
+ R visitAbstractClassConstructorInvoke(
+ NewExpression node,
+ ConstructorElement element,
+ InterfaceType type,
+ NodeList arguments,
+ CallStructure callStructure,
+ A arg) {
+ return bulkHandleNew(node, arg);
+ }
+
+ @override
R visitConstConstructorInvoke(
NewExpression node,
ConstructedConstantExpression constant,
@@ -2390,6 +2402,39 @@
A arg) {
return bulkHandleNew(node, arg);
}
+
+ @override
+ R visitUnresolvedClassConstructorInvoke(
+ NewExpression node,
+ Element element,
+ DartType type,
+ NodeList arguments,
+ Selector selector,
+ A arg) {
+ return bulkHandleNew(node, arg);
+ }
+
+ @override
+ R visitUnresolvedConstructorInvoke(
+ NewExpression node,
+ Element constructor,
+ DartType type,
+ NodeList arguments,
+ Selector selector,
+ A arg) {
+ return bulkHandleNew(node, arg);
+ }
+
+ @override
+ R visitUnresolvedRedirectingFactoryConstructorInvoke(
+ NewExpression node,
+ ConstructorElement constructor,
+ InterfaceType type,
+ NodeList arguments,
+ CallStructure callStructure,
+ A arg) {
+ return bulkHandleNew(node, arg);
+ }
}
/// Visitor that implements [SemanticSendVisitor] by the use of `BulkX` mixins.
@@ -4676,7 +4721,7 @@
}
@override
- R errorUnresolvedSuperIndexSet(
+ R visitUnresolvedSuperIndexSet(
Send node,
Element element,
Node index,
@@ -4688,7 +4733,7 @@
}
@override
- R errorUnresolvedSuperCompoundIndexSet(
+ R visitUnresolvedSuperGetterCompoundIndexSet(
SendSet node,
Element element,
Node index,
@@ -4701,6 +4746,20 @@
}
@override
+ R visitUnresolvedSuperSetterCompoundIndexSet(
+ SendSet node,
+ MethodElement getter,
+ Element element,
+ Node index,
+ AssignmentOperator operator,
+ Node rhs,
+ A arg) {
+ apply(index, arg);
+ apply(rhs, arg);
+ return null;
+ }
+
+ @override
R visitUnresolvedSuperBinary(
Send node,
Element element,
@@ -4721,9 +4780,9 @@
}
@override
- R errorUnresolvedSuperIndexPostfix(
+ R visitUnresolvedSuperGetterIndexPostfix(
Send node,
- Element function,
+ Element element,
Node index,
IncDecOperator operator,
A arg) {
@@ -4732,9 +4791,33 @@
}
@override
- R errorUnresolvedSuperIndexPrefix(
+ R visitUnresolvedSuperSetterIndexPostfix(
Send node,
- Element function,
+ MethodElement getter,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg) {
+ apply(index, arg);
+ return null;
+ }
+
+ @override
+ R visitUnresolvedSuperGetterIndexPrefix(
+ Send node,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg) {
+ apply(index, arg);
+ return null;
+ }
+
+ @override
+ R visitUnresolvedSuperSetterIndexPrefix(
+ Send node,
+ MethodElement getter,
+ Element element,
Node index,
IncDecOperator operator,
A arg) {
@@ -4798,10 +4881,10 @@
}
@override
- R errorUnresolvedClassConstructorInvoke(
+ R visitUnresolvedClassConstructorInvoke(
NewExpression node,
Element constructor,
- MalformedType type,
+ DartType type,
NodeList arguments,
Selector selector,
A arg) {
@@ -4810,7 +4893,7 @@
}
@override
- R errorUnresolvedConstructorInvoke(
+ R visitUnresolvedConstructorInvoke(
NewExpression node,
Element constructor,
DartType type,
@@ -4872,7 +4955,7 @@
}
@override
- R errorAbstractClassConstructorInvoke(
+ R visitAbstractClassConstructorInvoke(
NewExpression node,
ConstructorElement element,
InterfaceType type,
@@ -4884,12 +4967,24 @@
}
@override
- R errorUnresolvedRedirectingFactoryConstructorInvoke(
+ R visitUnresolvedRedirectingFactoryConstructorInvoke(
NewExpression node,
ConstructorElement constructor,
InterfaceType type,
NodeList arguments,
- Selector selector,
+ CallStructure callStructure,
+ A arg) {
+ apply(arguments, arg);
+ return null;
+ }
+
+ @override
+ R errorNonConstantConstructorInvoke(
+ NewExpression node,
+ Element element,
+ InterfaceType type,
+ NodeList arguments,
+ CallStructure callStructure,
A arg) {
apply(arguments, arg);
return null;
@@ -6378,6 +6473,23 @@
A arg,
{bool isPrefix});
+ R handleUnresolvedSuperGetterIndexPostfixPrefix(
+ Send node,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg,
+ {bool isPrefix});
+
+ R handleUnresolvedSuperSetterIndexPostfixPrefix(
+ Send node,
+ FunctionElement indexFunction,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg,
+ {bool isPrefix});
+
@override
R visitSuperFieldFieldPostfix(
Send node,
@@ -6533,6 +6645,52 @@
node, indexFunction, indexSetFunction,
index, operator, arg, isPrefix: true);
}
+
+ @override
+ R visitUnresolvedSuperGetterIndexPostfix(
+ Send node,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg) {
+ return handleUnresolvedSuperGetterIndexPostfixPrefix(
+ node, element, index, operator, arg, isPrefix: false);
+ }
+
+ @override
+ R visitUnresolvedSuperGetterIndexPrefix(
+ Send node,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg) {
+ return handleUnresolvedSuperGetterIndexPostfixPrefix(
+ node, element, index, operator, arg, isPrefix: true);
+ }
+
+ @override
+ R visitUnresolvedSuperSetterIndexPostfix(
+ Send node,
+ MethodElement indexFunction,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg) {
+ return handleUnresolvedSuperSetterIndexPostfixPrefix(
+ node, indexFunction, element, index, operator, arg, isPrefix: false);
+ }
+
+ @override
+ R visitUnresolvedSuperSetterIndexPrefix(
+ Send node,
+ MethodElement indexFunction,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ A arg) {
+ return handleUnresolvedSuperSetterIndexPostfixPrefix(
+ node, indexFunction, element, index, operator, arg, isPrefix: true);
+ }
}
/// Mixin that groups the non-constant `visitXConstructorInvoke` methods by
@@ -6596,4 +6754,47 @@
return handleConstructorInvoke(
node, constructor, type, arguments, callStructure, arg);
}
+
+ R visitUnresolvedConstructorInvoke(
+ NewExpression node,
+ Element constructor,
+ DartType type,
+ NodeList arguments,
+ Selector selector,
+ A arg) {
+ return handleConstructorInvoke(
+ node, constructor, type, arguments, selector.callStructure, arg);
+ }
+
+ R visitUnresolvedClassConstructorInvoke(
+ NewExpression node,
+ Element element,
+ DartType type,
+ NodeList arguments,
+ Selector selector,
+ A arg) {
+ return handleConstructorInvoke(
+ node, element, type, arguments, selector.callStructure, arg);
+ }
+
+ R visitAbstractClassConstructorInvoke(
+ NewExpression node,
+ ConstructorElement constructor,
+ InterfaceType type,
+ NodeList arguments,
+ CallStructure callStructure,
+ A arg) {
+ return handleConstructorInvoke(
+ node, constructor, type, arguments, callStructure, arg);
+ }
+ R visitUnresolvedRedirectingFactoryConstructorInvoke(
+ NewExpression node,
+ ConstructorElement constructor,
+ InterfaceType type,
+ NodeList arguments,
+ CallStructure callStructure,
+ A arg) {
+ return handleConstructorInvoke(
+ node, constructor, type, arguments, callStructure, arg);
+ }
}
diff --git a/pkg/compiler/lib/src/resolution/send_resolver.dart b/pkg/compiler/lib/src/resolution/send_resolver.dart
index b8eeb2fe..f4bbaa5 100644
--- a/pkg/compiler/lib/src/resolution/send_resolver.dart
+++ b/pkg/compiler/lib/src/resolution/send_resolver.dart
@@ -340,11 +340,24 @@
}
} else if (node.isSuperCall) {
if (Elements.isUnresolved(element)) {
- return new StaticAccess.unresolvedSuper(element);
+ if (isCompound) {
+ if (Elements.isUnresolved(getter)) {
+ // TODO(johnniwinther): Ensure that [getter] is not null. This
+ // happens in the case of missing super getter.
+ return new CompoundAccessSemantics(
+ CompoundAccessKind.UNRESOLVED_SUPER_GETTER, getter, element);
+ } else {
+ return new CompoundAccessSemantics(
+ CompoundAccessKind.UNRESOLVED_SUPER_SETTER, getter, element);
+ }
+ } else {
+ return new StaticAccess.unresolvedSuper(element);
+ }
} else if (isCompound && Elements.isUnresolved(getter)) {
// TODO(johnniwinther): Ensure that [getter] is not null. This happens
// in the case of missing super getter.
- return new StaticAccess.unresolved(getter);
+ return new CompoundAccessSemantics(
+ CompoundAccessKind.UNRESOLVED_SUPER_GETTER, getter, element);
} else if (element.isField) {
if (getter != null && getter != element) {
CompoundAccessKind accessKind;
@@ -419,8 +432,15 @@
ConstructorElement constructor,
DartType type) {
if (constructor.isErroneous) {
+ if (constructor is ErroneousElement) {
+ ErroneousElement error = constructor;
+ if (error.messageKind == MessageKind.CANNOT_FIND_CONSTRUCTOR) {
+ return new ConstructorAccessSemantics(
+ ConstructorAccessKind.UNRESOLVED_CONSTRUCTOR, constructor, type);
+ }
+ }
return new ConstructorAccessSemantics(
- ConstructorAccessKind.ERRONEOUS, constructor, type);
+ ConstructorAccessKind.UNRESOLVED_TYPE, constructor, type);
} else if (constructor.isRedirectingFactory) {
ConstructorElement effectiveTarget = constructor.effectiveTarget;
if (effectiveTarget == constructor ||
@@ -482,7 +502,7 @@
// This is a non-constant constant constructor invocation, like
// `const Const(method())`.
constructorAccessSemantics = new ConstructorAccessSemantics(
- ConstructorAccessKind.ERRONEOUS, element, type);
+ ConstructorAccessKind.NON_CONSTANT_CONSTRUCTOR, element, type);
} else {
constructorAccessSemantics =
computeConstructorAccessSemantics(element, type);
@@ -753,16 +773,15 @@
return new RequiredParameterStructure(
definitions, node, element, index);
} else {
- ConstantExpression defaultValue;
- if (element.initializer != null) {
- defaultValue = elements.getConstant(element.initializer);
- }
+ // TODO(johnniwinther): Should we differentiate between implicit (null)
+ // and explicit values? What about optional parameters on redirecting
+ // factories?
if (isNamed) {
return new NamedParameterStructure(
- definitions, node, element, defaultValue);
+ definitions, node, element, element.constant);
} else {
return new OptionalParameterStructure(
- definitions, node, element, defaultValue, index);
+ definitions, node, element, element.constant, index);
}
}
}
diff --git a/pkg/compiler/lib/src/resolution/send_structure.dart b/pkg/compiler/lib/src/resolution/send_structure.dart
index 475451f..318ede8 100644
--- a/pkg/compiler/lib/src/resolution/send_structure.dart
+++ b/pkg/compiler/lib/src/resolution/send_structure.dart
@@ -1019,8 +1019,7 @@
arg);
case AccessKind.UNRESOLVED_SUPER:
case AccessKind.UNRESOLVED:
- // TODO(johnniwinther): Support these through [AccessKind.COMPOUND].
- return visitor.errorUnresolvedSuperIndexSet(
+ return visitor.visitUnresolvedSuperIndexSet(
node,
semantics.element,
node.arguments.first,
@@ -1068,15 +1067,6 @@
node.arguments.single,
operator,
arg);
- case AccessKind.UNRESOLVED_SUPER:
- case AccessKind.UNRESOLVED:
- // TODO(johnniwinther): Support these through [AccessKind.COMPOUND].
- return visitor.errorUnresolvedSuperIndexPrefix(
- node,
- semantics.element,
- node.arguments.single,
- operator,
- arg);
case AccessKind.COMPOUND:
CompoundAccessSemantics compoundSemantics = semantics;
switch (compoundSemantics.compoundAccessKind) {
@@ -1088,6 +1078,21 @@
node.arguments.single,
operator,
arg);
+ case CompoundAccessKind.UNRESOLVED_SUPER_GETTER:
+ return visitor.visitUnresolvedSuperGetterIndexPrefix(
+ node,
+ compoundSemantics.getter,
+ node.arguments.single,
+ operator,
+ arg);
+ case CompoundAccessKind.UNRESOLVED_SUPER_SETTER:
+ return visitor.visitUnresolvedSuperSetterIndexPrefix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ node.arguments.single,
+ operator,
+ arg);
default:
// This is not a valid case.
break;
@@ -1133,15 +1138,6 @@
node.arguments.single,
operator,
arg);
- case AccessKind.UNRESOLVED_SUPER:
- case AccessKind.UNRESOLVED:
- // TODO(johnniwinther): Support these through [AccessKind.COMPOUND].
- return visitor.errorUnresolvedSuperIndexPostfix(
- node,
- semantics.element,
- node.arguments.single,
- operator,
- arg);
case AccessKind.COMPOUND:
CompoundAccessSemantics compoundSemantics = semantics;
switch (compoundSemantics.compoundAccessKind) {
@@ -1153,6 +1149,21 @@
node.arguments.single,
operator,
arg);
+ case CompoundAccessKind.UNRESOLVED_SUPER_GETTER:
+ return visitor.visitUnresolvedSuperGetterIndexPostfix(
+ node,
+ compoundSemantics.getter,
+ node.arguments.single,
+ operator,
+ arg);
+ case CompoundAccessKind.UNRESOLVED_SUPER_SETTER:
+ return visitor.visitUnresolvedSuperSetterIndexPostfix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ node.arguments.single,
+ operator,
+ arg);
default:
// This is not a valid case.
break;
@@ -1391,6 +1402,16 @@
operator,
node.arguments.single,
arg);
+ case CompoundAccessKind.UNRESOLVED_SUPER_GETTER:
+ case CompoundAccessKind.UNRESOLVED_SUPER_SETTER:
+ // TODO(johnniwinther): Handle these separately.
+ return visitor.errorUnresolvedCompound(
+ node,
+ semantics.element,
+ operator,
+ node.arguments.single,
+ arg);
+ break;
}
break;
}
@@ -1430,16 +1451,6 @@
operator,
node.arguments.tail.head,
arg);
- case AccessKind.UNRESOLVED_SUPER:
- case AccessKind.UNRESOLVED:
- // TODO(johnniwinther): Support these through [AccessKind.COMPOUND].
- return visitor.errorUnresolvedSuperCompoundIndexSet(
- node,
- semantics.element,
- node.arguments.first,
- operator,
- node.arguments.tail.head,
- arg);
case AccessKind.COMPOUND:
CompoundAccessSemantics compoundSemantics = semantics;
switch (compoundSemantics.compoundAccessKind) {
@@ -1452,6 +1463,23 @@
operator,
node.arguments.tail.head,
arg);
+ case CompoundAccessKind.UNRESOLVED_SUPER_GETTER:
+ return visitor.visitUnresolvedSuperGetterCompoundIndexSet(
+ node,
+ compoundSemantics.getter,
+ node.arguments.first,
+ operator,
+ node.arguments.tail.head,
+ arg);
+ case CompoundAccessKind.UNRESOLVED_SUPER_SETTER:
+ return visitor.visitUnresolvedSuperSetterCompoundIndexSet(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ node.arguments.first,
+ operator,
+ node.arguments.tail.head,
+ arg);
default:
// This is not a valid case.
break;
@@ -1675,6 +1703,14 @@
compoundSemantics.setter,
operator,
arg);
+ case CompoundAccessKind.UNRESOLVED_SUPER_GETTER:
+ case CompoundAccessKind.UNRESOLVED_SUPER_SETTER:
+ // TODO(johnniwinther): Handle these directly.
+ return visitor.errorUnresolvedPrefix(
+ node,
+ semantics.element,
+ operator,
+ arg);
}
}
throw new SpannableAssertionFailure(node,
@@ -1891,6 +1927,14 @@
compoundSemantics.setter,
operator,
arg);
+ case CompoundAccessKind.UNRESOLVED_SUPER_GETTER:
+ case CompoundAccessKind.UNRESOLVED_SUPER_SETTER:
+ // TODO(johnniwinther): Handle these directly.
+ return visitor.errorUnresolvedPostfix(
+ node,
+ semantics.element,
+ operator,
+ arg);
}
}
throw new SpannableAssertionFailure(node,
@@ -1937,17 +1981,25 @@
semantics.effectiveTargetSemantics.type,
node.send.argumentsNode, callStructure, arg);
case ConstructorAccessKind.ABSTRACT:
- return visitor.errorAbstractClassConstructorInvoke(
+ return visitor.visitAbstractClassConstructorInvoke(
node, semantics.element, semantics.type,
node.send.argumentsNode, callStructure, arg);
- case ConstructorAccessKind.ERRONEOUS:
- return visitor.errorUnresolvedConstructorInvoke(
+ case ConstructorAccessKind.UNRESOLVED_CONSTRUCTOR:
+ return visitor.visitUnresolvedConstructorInvoke(
node, semantics.element, semantics.type,
node.send.argumentsNode, selector, arg);
+ case ConstructorAccessKind.UNRESOLVED_TYPE:
+ return visitor.visitUnresolvedClassConstructorInvoke(
+ node, semantics.element, semantics.type,
+ node.send.argumentsNode, selector, arg);
+ case ConstructorAccessKind.NON_CONSTANT_CONSTRUCTOR:
+ return visitor.errorNonConstantConstructorInvoke(
+ node, semantics.element, semantics.type,
+ node.send.argumentsNode, callStructure, arg);
case ConstructorAccessKind.ERRONEOUS_REDIRECTING_FACTORY:
- return visitor.errorUnresolvedRedirectingFactoryConstructorInvoke(
+ return visitor.visitUnresolvedRedirectingFactoryConstructorInvoke(
node, semantics.element, semantics.type,
- node.send.argumentsNode, selector, arg);
+ node.send.argumentsNode, callStructure, arg);
}
throw new SpannableAssertionFailure(node,
"Unhandled constructor invocation kind: ${semantics.kind}");
diff --git a/pkg/compiler/lib/src/scanner/class_element_parser.dart b/pkg/compiler/lib/src/scanner/class_element_parser.dart
index 9bf1523..0f49ad2 100644
--- a/pkg/compiler/lib/src/scanner/class_element_parser.dart
+++ b/pkg/compiler/lib/src/scanner/class_element_parser.dart
@@ -166,15 +166,9 @@
method.modifiers,
enclosingClass);
} else {
- ElementKind kind = ElementKind.FUNCTION;
- if (getOrSet != null) {
- kind = (identical(getOrSet.stringValue, 'get'))
- ? ElementKind.GETTER : ElementKind.SETTER;
- }
- memberElement =
- new PartialFunctionElement(name, beginToken, getOrSet, endToken,
- kind, method.modifiers, enclosingClass,
- !method.hasBody());
+ memberElement = new PartialFunctionElement(
+ name, beginToken, getOrSet, endToken,
+ method.modifiers, enclosingClass, hasBody: method.hasBody());
}
addMember(memberElement);
}
@@ -228,14 +222,14 @@
pushNode(null);
}
- void addMetadata(Element memberElement) {
+ void addMetadata(ElementX memberElement) {
for (Link link = metadata; !link.isEmpty; link = link.tail) {
memberElement.addMetadata(link.head);
}
metadata = const Link<MetadataAnnotation>();
}
- void addMember(Element memberElement) {
+ void addMember(ElementX memberElement) {
addMetadata(memberElement);
enclosingClass.addMember(memberElement, listener);
}
diff --git a/pkg/compiler/lib/src/scanner/listener.dart b/pkg/compiler/lib/src/scanner/listener.dart
index 568577a..4add7ec 100644
--- a/pkg/compiler/lib/src/scanner/listener.dart
+++ b/pkg/compiler/lib/src/scanner/listener.dart
@@ -786,7 +786,7 @@
class ElementListener extends Listener {
final IdGenerator idGenerator;
final DiagnosticListener listener;
- final CompilationUnitElement compilationUnitElement;
+ final CompilationUnitElementX compilationUnitElement;
final StringValidator stringValidator;
Link<StringQuoting> interpolationScope;
@@ -1011,17 +1011,9 @@
Identifier name = popNode();
TypeAnnotation type = popNode();
Modifiers modifiers = popNode();
- ElementKind kind;
- if (getOrSet == null) {
- kind = ElementKind.FUNCTION;
- } else if (identical(getOrSet.stringValue, 'get')) {
- kind = ElementKind.GETTER;
- } else if (identical(getOrSet.stringValue, 'set')) {
- kind = ElementKind.SETTER;
- }
PartialFunctionElement element = new PartialFunctionElement(
- name.source, beginToken, getOrSet, endToken, kind, modifiers,
- compilationUnitElement, false);
+ name.source, beginToken, getOrSet, endToken,
+ modifiers, compilationUnitElement);
element.hasParseError = hasParseError;
pushElement(element);
}
@@ -1327,7 +1319,7 @@
compilationUnitElement.addMember(element, listener);
}
- Link<MetadataAnnotation> popMetadata(Element element) {
+ Link<MetadataAnnotation> popMetadata(ElementX element) {
var result = const Link<MetadataAnnotation>();
for (Link link = metadata; !link.isEmpty; link = link.tail) {
element.addMetadata(link.head);
@@ -1346,7 +1338,9 @@
if (!allowLibraryTags()) {
recoverableError(tag, 'Library tags not allowed here.');
}
- compilationUnitElement.implementationLibrary.addTag(tag, listener);
+ LibraryElementX implementationLibrary =
+ compilationUnitElement.implementationLibrary;
+ implementationLibrary.addTag(tag, listener);
}
void pushNode(Node node) {
@@ -1563,17 +1557,10 @@
Identifier name = popNode();
TypeAnnotation type = popNode();
Modifiers modifiers = popNode();
- ElementKind kind;
- if (getOrSet == null) {
- kind = ElementKind.FUNCTION;
- } else if (identical(getOrSet.stringValue, 'get')) {
- kind = ElementKind.GETTER;
- } else if (identical(getOrSet.stringValue, 'set')) {
- kind = ElementKind.SETTER;
- }
- pushElement(new PartialFunctionElement(name.source, beginToken, getOrSet,
- endToken, kind, modifiers,
- compilationUnitElement, false));
+ PartialFunctionElement element = new PartialFunctionElement(
+ name.source, beginToken, getOrSet, endToken,
+ modifiers, compilationUnitElement);
+ pushElement(element);
}
void endFormalParameter(Token thisKeyword) {
@@ -2282,7 +2269,7 @@
DeclarationSite get declarationSite => this;
}
-abstract class PartialFunctionMixin implements FunctionElement {
+abstract class PartialFunctionMixin implements BaseFunctionElementX {
FunctionExpression cachedNode;
Modifiers get modifiers;
Token beginToken;
@@ -2336,18 +2323,48 @@
DeclarationSite get declarationSite;
}
-class PartialFunctionElement extends FunctionElementX
- with PartialElement, PartialFunctionMixin {
- PartialFunctionElement(String name,
- Token beginToken,
- Token getOrSet,
- Token endToken,
- ElementKind kind,
- Modifiers modifiers,
- Element enclosing,
- bool hasNoBody)
- : super(name, kind, modifiers, enclosing, hasNoBody) {
- init(beginToken, getOrSet, endToken);
+abstract class PartialFunctionElement
+ implements PartialElement, PartialFunctionMixin {
+
+ factory PartialFunctionElement(
+ String name,
+ Token beginToken,
+ Token getOrSet,
+ Token endToken,
+ Modifiers modifiers,
+ Element enclosingElement,
+ {bool hasBody: true}) {
+ if (getOrSet == null) {
+ return new PartialMethodElement(
+ name, beginToken, endToken, modifiers,
+ enclosingElement, hasBody: hasBody);
+ } else if (identical(getOrSet.stringValue, 'get')) {
+ return new PartialGetterElement(
+ name, beginToken, getOrSet, endToken, modifiers,
+ enclosingElement, hasBody: hasBody);
+ } else {
+ assert(identical(getOrSet.stringValue, 'set'));
+ return new PartialSetterElement(
+ name, beginToken, getOrSet, endToken, modifiers,
+ enclosingElement, hasBody: hasBody);
+ }
+ }
+
+ PartialFunctionElement copyWithEnclosing(Element enclosing);
+}
+
+
+class PartialMethodElement extends MethodElementX
+ with PartialElement, PartialFunctionMixin
+ implements PartialFunctionElement {
+ PartialMethodElement(String name,
+ Token beginToken,
+ Token endToken,
+ Modifiers modifiers,
+ Element enclosing,
+ {bool hasBody: true})
+ : super(name, ElementKind.FUNCTION, modifiers, enclosing, hasBody) {
+ init(beginToken, null, endToken);
}
void reuseElement() {
@@ -2355,10 +2372,67 @@
reusePartialFunctionMixin();
}
- PartialFunctionElement copyWithEnclosing(Element enclosing) {
- return new PartialFunctionElement(
- name, beginToken, getOrSet, endToken, kind, modifiers, enclosing,
- hasNoBody);
+ PartialMethodElement copyWithEnclosing(Element enclosing) {
+ return new PartialMethodElement(
+ name, beginToken, endToken, modifiers, enclosing, hasBody: hasBody);
+ }
+}
+
+class PartialGetterElement extends GetterElementX
+ with PartialElement, PartialFunctionMixin
+ implements GetterElement, PartialFunctionElement {
+ PartialGetterElement(String name,
+ Token beginToken,
+ Token getToken,
+ Token endToken,
+ Modifiers modifiers,
+ Element enclosing,
+ {bool hasBody: true})
+ : super(name, modifiers, enclosing, hasBody) {
+ init(beginToken, getToken, endToken);
+ }
+
+ @override
+ SetterElement get setter => abstractField.setter;
+
+ void reuseElement() {
+ super.reuseElement();
+ reusePartialFunctionMixin();
+ }
+
+ PartialGetterElement copyWithEnclosing(Element enclosing) {
+ return new PartialGetterElement(
+ name, beginToken, getOrSet, endToken, modifiers, enclosing,
+ hasBody: hasBody);
+ }
+}
+
+class PartialSetterElement extends SetterElementX
+ with PartialElement, PartialFunctionMixin
+ implements SetterElement, PartialFunctionElement {
+ PartialSetterElement(String name,
+ Token beginToken,
+ Token setToken,
+ Token endToken,
+ Modifiers modifiers,
+ Element enclosing,
+ {bool hasBody: true})
+ : super(name, modifiers, enclosing, hasBody) {
+ init(beginToken, setToken, endToken);
+ }
+
+ @override
+ GetterElement get getter => abstractField.getter;
+
+ void reuseElement() {
+ super.reuseElement();
+ reusePartialFunctionMixin();
+ }
+
+ PartialSetterElement copyWithEnclosing(Element enclosing) {
+ return new PartialSetterElement(
+ name, beginToken, getOrSet, endToken, modifiers, enclosing,
+ hasBody: hasBody);
}
}
@@ -2506,7 +2580,7 @@
Node parse(
DiagnosticListener diagnosticListener,
- Element element,
+ ElementX element,
PartialElement partial,
doParse(Parser parser)) {
CompilationUnitElement unit = element.compilationUnit;
diff --git a/pkg/compiler/lib/src/scanner/scannerlib.dart b/pkg/compiler/lib/src/scanner/scannerlib.dart
index 7543bb5..7b6ebb7 100644
--- a/pkg/compiler/lib/src/scanner/scannerlib.dart
+++ b/pkg/compiler/lib/src/scanner/scannerlib.dart
@@ -10,6 +10,7 @@
import '../elements/elements.dart';
import '../elements/modelx.dart' show
+ BaseFunctionElementX,
ClassElementX,
CompilationUnitElementX,
ConstructorElementX,
@@ -17,9 +18,12 @@
ElementX,
EnumClassElementX,
FieldElementX,
- FunctionElementX,
+ GetterElementX,
+ MethodElementX,
+ LibraryElementX,
MetadataAnnotationX,
MixinApplicationElementX,
+ SetterElementX,
TypedefElementX,
VariableElementX,
VariableList;
diff --git a/pkg/compiler/lib/src/ssa/builder.dart b/pkg/compiler/lib/src/ssa/builder.dart
index e4b5c8b..2dca503 100644
--- a/pkg/compiler/lib/src/ssa/builder.dart
+++ b/pkg/compiler/lib/src/ssa/builder.dart
@@ -201,11 +201,33 @@
/// variables are in scope.
ClassElement get contextClass => executableContext.contextClass;
+ /// The type of the current instance, if concrete.
+ ///
+ /// This allows for handling fixed type argument in case of inlining. For
+ /// instance, checking `'foo'` against `String` instead of `T` in `main`:
+ ///
+ /// class Foo<T> {
+ /// T field;
+ /// Foo(this.field);
+ /// }
+ /// main() {
+ /// new Foo<String>('foo');
+ /// }
+ ///
+ /// [instanceType] is not used if it contains type variables, since these
+ /// might not be in scope or from the current instance.
+ ///
+ final InterfaceType instanceType;
+
SourceInformationBuilder get sourceInformationBuilder {
return builder.sourceInformationBuilder;
}
- LocalsHandler(this.builder, this.executableContext);
+ LocalsHandler(this.builder, this.executableContext,
+ InterfaceType instanceType)
+ : this.instanceType =
+ instanceType == null || instanceType.containsTypeVariables
+ ? null : instanceType;
/// Substituted type variables occurring in [type] into the context of
/// [contextClass].
@@ -217,6 +239,9 @@
contextClass.asInstanceOf(typeContext));
}
}
+ if (instanceType != null) {
+ type = type.substByContext(instanceType);
+ }
return type;
}
@@ -231,6 +256,7 @@
: directLocals = new Map<Local, HInstruction>.from(other.directLocals),
redirectionMapping = other.redirectionMapping,
executableContext = other.executableContext,
+ instanceType = other.instanceType,
builder = other.builder,
closureData = other.closureData;
@@ -1094,7 +1120,7 @@
this.work = work,
this.rti = backend.rti,
super(work.resolutionTree) {
- localsHandler = new LocalsHandler(this, work.element);
+ localsHandler = new LocalsHandler(this, work.element, null);
sourceElementStack.add(work.element);
sourceInformationBuilder =
sourceInformationFactory.forContext(work.element.implementation);
@@ -1272,7 +1298,8 @@
bool tryInlineMethod(Element element,
Selector selector,
List<HInstruction> providedArguments,
- ast.Node currentNode) {
+ ast.Node currentNode,
+ {InterfaceType instanceType}) {
// TODO(johnniwinther): Register this on the [registry]. Currently the
// [CodegenRegistry] calls the enqueuer, but [element] should _not_ be
// enqueued.
@@ -1293,12 +1320,6 @@
if (cachedCanBeInlined == false) return false;
bool meetsHardConstraints() {
- // Don't inline from one output unit to another. If something is deferred
- // it is to save space in the loading code.
- if (!compiler.deferredLoadTask
- .inSameOutputUnit(element,compiler.currentElement)) {
- return false;
- }
if (compiler.disableInlining) return false;
assert(selector != null
@@ -1348,12 +1369,18 @@
return InlineWeeder.canBeInlined(function, -1, false);
}
// TODO(sra): Measure if inlining would 'reduce' the size. One desirable
- // case we miss my doing nothing is inlining very simple constructors
+ // case we miss by doing nothing is inlining very simple constructors
// where all fields are initialized with values from the arguments at this
// call site. The code is slightly larger (`new Foo(1)` vs `Foo$(1)`) but
// that usually means the factory constructor is left unused and not
// emitted.
- return false;
+ // We at least inline bodies that are empty (and thus have a size of 1).
+ return InlineWeeder.canBeInlined(function, 1, true);
+ }
+
+ bool doesNotContainCode() {
+ // A function with size 1 does not contain any code.
+ return InlineWeeder.canBeInlined(function, 1, true);
}
bool heuristicSayGoodToGo() {
@@ -1364,6 +1391,16 @@
if (element.isSynthesized) return true;
+ // Don't inline across deferred import to prevent leaking code. The only
+ // exception is an empty function (which does not contain code).
+ bool hasOnlyNonDeferredImportPaths = compiler.deferredLoadTask
+ .hasOnlyNonDeferredImportPaths(compiler.currentElement, element);
+
+ if (!hasOnlyNonDeferredImportPaths) {
+ return doesNotContainCode();
+ }
+
+ // Do not inline code that is rarely executed unless it reduces size.
if (inExpressionOfThrow || inLazyInitializerExpression) {
return reductiveHeuristic();
}
@@ -1418,7 +1455,8 @@
}
List<HInstruction> compiledArguments = completeSendArgumentsList(
function, selector, providedArguments, currentNode);
- enterInlinedMethod(function, currentNode, compiledArguments);
+ enterInlinedMethod(
+ function, currentNode, compiledArguments, instanceType: instanceType);
inlinedFrom(function, () {
if (!isReachable) {
emitReturn(graph.addConstantNull(compiler), null);
@@ -1681,8 +1719,9 @@
* stores it in the [returnLocal] field.
*/
void setupStateForInlining(FunctionElement function,
- List<HInstruction> compiledArguments) {
- localsHandler = new LocalsHandler(this, function);
+ List<HInstruction> compiledArguments,
+ {InterfaceType instanceType}) {
+ localsHandler = new LocalsHandler(this, function, instanceType);
localsHandler.closureData =
compiler.closureToClassMapper.computeClosureToClassMapping(
function, function.node, elements);
@@ -3217,22 +3256,27 @@
pushInvokeDynamic(send, selector, [receiver]);
}
+ /// Inserts a call to checkDeferredIsLoaded for [prefixElement].
+ /// If [prefixElement] is [null] ndo nothing.
+ void generateIsDeferredLoadedCheckIfNeeded(PrefixElement prefixElement,
+ ast.Node location) {
+ if (prefixElement == null) return;
+ String loadId =
+ compiler.deferredLoadTask.importDeferName[prefixElement.deferredImport];
+ HInstruction loadIdConstant = addConstantString(loadId);
+ String uri = prefixElement.deferredImport.uri.dartString.slowToString();
+ HInstruction uriConstant = addConstantString(uri);
+ Element helper = backend.getCheckDeferredIsLoaded();
+ pushInvokeStatic(location, helper, [loadIdConstant, uriConstant]);
+ pop();
+ }
+
/// Inserts a call to checkDeferredIsLoaded if the send has a prefix that
/// resolves to a deferred library.
- void generateIsDeferredLoadedCheckIfNeeded(ast.Send node) {
- DeferredLoadTask deferredTask = compiler.deferredLoadTask;
- PrefixElement prefixElement =
- deferredTask.deferredPrefixElement(node, elements);
- if (prefixElement != null) {
- String loadId =
- deferredTask.importDeferName[prefixElement.deferredImport];
- HInstruction loadIdConstant = addConstantString(loadId);
- String uri = prefixElement.deferredImport.uri.dartString.slowToString();
- HInstruction uriConstant = addConstantString(uri);
- Element helper = backend.getCheckDeferredIsLoaded();
- pushInvokeStatic(node, helper, [loadIdConstant, uriConstant]);
- pop();
- }
+ void generateIsDeferredLoadedCheckOfSend(ast.Send node) {
+ generateIsDeferredLoadedCheckIfNeeded(
+ compiler.deferredLoadTask.deferredPrefixElement(node, elements),
+ node);
}
/// Generate read access of an unresolved static or top level entity.
@@ -3284,7 +3328,7 @@
/// Read a static or top level [field].
void generateStaticFieldGet(ast.Send node, FieldElement field) {
- generateIsDeferredLoadedCheckIfNeeded(node);
+ generateIsDeferredLoadedCheckOfSend(node);
ConstantExpression constant =
backend.constants.getConstantForVariable(field);
@@ -3314,7 +3358,7 @@
if (getter.isDeferredLoaderGetter) {
generateDeferredLoaderGet(node, getter);
} else {
- generateIsDeferredLoadedCheckIfNeeded(node);
+ generateIsDeferredLoadedCheckOfSend(node);
pushInvokeStatic(node, getter, <HInstruction>[]);
}
}
@@ -3328,7 +3372,7 @@
/// Generate a closurization of the static or top level [function].
void generateStaticFunctionGet(ast.Send node, MethodElement function) {
- generateIsDeferredLoadedCheckIfNeeded(node);
+ generateIsDeferredLoadedCheckOfSend(node);
// TODO(5346): Try to avoid the need for calling [declaration] before
// creating an [HStatic].
push(new HStatic(function.declaration, backend.nonNullType));
@@ -3574,7 +3618,7 @@
HInstruction runtimeType = addTypeVariableReference(type);
Element helper = backend.getCheckSubtypeOfRuntimeType();
List<HInstruction> inputs = <HInstruction>[expression, runtimeType];
- pushInvokeStatic(null, helper, inputs, backend.boolType);
+ pushInvokeStatic(null, helper, inputs, typeMask: backend.boolType);
HInstruction call = pop();
return new HIs.variable(type, expression, call, backend.boolType);
} else if (RuntimeTypes.hasTypeArguments(type)) {
@@ -3592,7 +3636,7 @@
isFieldName,
representations,
asFieldName];
- pushInvokeStatic(node, helper, inputs, backend.boolType);
+ pushInvokeStatic(node, helper, inputs, typeMask: backend.boolType);
HInstruction call = pop();
return new HIs.compound(type, expression, call, backend.boolType);
} else if (type.isMalformed) {
@@ -3827,7 +3871,7 @@
compiler.internalError(node,
'Isolate library and compiler mismatch.');
}
- pushInvokeStatic(null, element, [], backend.dynamicType);
+ pushInvokeStatic(null, element, [], typeMask: backend.dynamicType);
}
}
@@ -4038,7 +4082,7 @@
}
List<HInstruction> inputs = <HInstruction>[];
addGenericSendArgumentsToList(link, inputs);
- pushInvokeStatic(node, element, inputs, backend.dynamicType);
+ pushInvokeStatic(node, element, inputs, typeMask: backend.dynamicType);
}
}
@@ -4121,9 +4165,6 @@
handleForeignRawFunctionRef(node, 'RAW_DART_FUNCTION_REF');
} else if (name == 'JS_SET_CURRENT_ISOLATE') {
handleForeignSetCurrentIsolate(node);
- } else if (name == 'JS_OPERATOR_IS_PREFIX') {
- // TODO(floitsch): this should be a JS_NAME.
- stack.add(addConstantString(backend.namer.operatorIsPrefix));
} else if (name == 'JS_OBJECT_CLASS_NAME') {
// TODO(floitsch): this should be a JS_NAME.
String name = backend.namer.runtimeTypeName(compiler.objectClass);
@@ -4248,7 +4289,7 @@
graph.addConstant(kindConstant, compiler),
argumentsInstruction,
argumentNamesInstruction],
- backend.dynamicType);
+ typeMask: backend.dynamicType);
var inputs = <HInstruction>[pop()];
push(buildInvokeSuper(compiler.noSuchMethodSelector, element, inputs));
@@ -4498,11 +4539,11 @@
pushInvokeStatic(null,
backend.getGetRuntimeTypeArgument(),
[target, substitutionName, index],
- backend.dynamicType);
+ typeMask: backend.dynamicType);
} else {
pushInvokeStatic(null, backend.getGetTypeArgumentByIndex(),
[target, index],
- backend.dynamicType);
+ typeMask: backend.dynamicType);
}
return pop();
}
@@ -4631,7 +4672,7 @@
null,
typeInfoSetterElement,
<HInstruction>[newObject, typeInfo],
- backend.dynamicType);
+ typeMask: backend.dynamicType);
// The new object will now be referenced through the
// `setRuntimeTypeInfo` call. We therefore set the type of that
@@ -4643,7 +4684,7 @@
handleNewSend(ast.NewExpression node) {
ast.Send send = node.send;
- generateIsDeferredLoadedCheckIfNeeded(send);
+ generateIsDeferredLoadedCheckOfSend(send);
bool isFixedList = false;
bool isFixedListConstructorCall =
@@ -4708,6 +4749,19 @@
}
bool isRedirected = constructorDeclaration.isRedirectingFactory;
+ if (!constructorDeclaration.isCyclicRedirection) {
+ // Insert a check for every deferred redirection on the path to the
+ // final target.
+ ConstructorElement target = constructorDeclaration;
+ while (target.isRedirectingFactory) {
+ if (constructorDeclaration.redirectionDeferredPrefix != null) {
+ generateIsDeferredLoadedCheckIfNeeded(
+ target.redirectionDeferredPrefix,
+ node);
+ }
+ target = target.immediateRedirectionTarget;
+ }
+ }
InterfaceType type = elements.getType(node);
InterfaceType expectedType =
constructorDeclaration.computeEffectiveTargetType(type);
@@ -4781,7 +4835,8 @@
potentiallyAddTypeArguments(inputs, cls, expectedType);
addInlinedInstantiation(expectedType);
- pushInvokeStatic(node, constructor, inputs, elementType);
+ pushInvokeStatic(node, constructor, inputs,
+ typeMask: elementType, instanceType: expectedType);
removeInlinedInstantiation(expectedType);
}
HInstruction newInstance = stack.last;
@@ -4901,7 +4956,7 @@
ast.Send node,
FunctionElement function,
CallStructure callStructure) {
- generateIsDeferredLoadedCheckIfNeeded(node);
+ generateIsDeferredLoadedCheckOfSend(node);
List<HInstruction> inputs = makeStaticArgumentList(
callStructure,
@@ -5116,7 +5171,7 @@
/// Generate the constant value for a constant type literal.
void generateConstantTypeLiteral(ast.Send node) {
- generateIsDeferredLoadedCheckIfNeeded(node);
+ generateIsDeferredLoadedCheckOfSend(node);
// TODO(karlklose): add type representation
if (node.isCall) {
// The node itself is not a constant but we register the selector (the
@@ -5135,7 +5190,7 @@
pushInvokeStatic(node,
backend.getRuntimeTypeToString(),
[value],
- backend.stringType);
+ typeMask: backend.stringType);
pushInvokeStatic(node,
backend.getCreateRuntimeType(),
[pop()]);
@@ -5364,19 +5419,23 @@
void pushInvokeStatic(ast.Node location,
Element element,
List<HInstruction> arguments,
- [TypeMask type]) {
- if (tryInlineMethod(element, null, arguments, location)) {
+ {TypeMask typeMask,
+ InterfaceType instanceType}) {
+ if (tryInlineMethod(element, null, arguments, location,
+ instanceType: instanceType)) {
return;
}
- if (type == null) {
- type = TypeMaskFactory.inferredReturnTypeForElement(element, compiler);
+ if (typeMask == null) {
+ typeMask =
+ TypeMaskFactory.inferredReturnTypeForElement(element, compiler);
}
bool targetCanThrow = !compiler.world.getCannotThrow(element);
// TODO(5346): Try to avoid the need for calling [declaration] before
// creating an [HInvokeStatic].
HInvokeStatic instruction = new HInvokeStatic(
- element.declaration, arguments, type, targetCanThrow: targetCanThrow);
+ element.declaration, arguments, typeMask,
+ targetCanThrow: targetCanThrow);
if (!currentInlinedInstantiations.isEmpty) {
instruction.instantiatedTypes = new List<DartType>.from(
currentInlinedInstantiations);
@@ -5440,7 +5499,7 @@
@override
handleSendSet(ast.SendSet node) {
- generateIsDeferredLoadedCheckIfNeeded(node);
+ generateIsDeferredLoadedCheckOfSend(node);
Element element = elements[node];
if (!Elements.isUnresolved(element) && element.impliesType) {
ast.Identifier selector = node.selector;
@@ -6304,7 +6363,8 @@
mapType.intersection(returnTypeMask, compiler.world);
addInlinedInstantiation(expectedType);
- pushInvokeStatic(node, constructor, inputs, instructionType);
+ pushInvokeStatic(node, constructor, inputs,
+ typeMask: instructionType, instanceType: expectedType);
removeInlinedInstantiation(expectedType);
}
@@ -6996,7 +7056,8 @@
*/
void enterInlinedMethod(FunctionElement function,
ast.Node _,
- List<HInstruction> compiledArguments) {
+ List<HInstruction> compiledArguments,
+ {InterfaceType instanceType}) {
TypesInferrer inferrer = compiler.typesTask.typesInferrer;
AstInliningState state = new AstInliningState(
function, returnLocal, returnType, elements, stack, localsHandler,
@@ -7007,7 +7068,8 @@
// Setting up the state of the (AST) builder is performed even when the
// inlined function is in IR, because the irInliner uses the [returnElement]
// of the AST builder.
- setupStateForInlining(function, compiledArguments);
+ setupStateForInlining(
+ function, compiledArguments, instanceType: instanceType);
}
void leaveInlinedMethod() {
diff --git a/pkg/compiler/lib/src/ssa/codegen.dart b/pkg/compiler/lib/src/ssa/codegen.dart
index 75bab2a..cd772ef 100644
--- a/pkg/compiler/lib/src/ssa/codegen.dart
+++ b/pkg/compiler/lib/src/ssa/codegen.dart
@@ -2332,6 +2332,13 @@
checkFixedArray(input);
}
return;
+ } else if (element == backend.jsUnmodifiableArrayClass) {
+ if (negative) {
+ checkMutableArray(input);
+ } else {
+ checkImmutableArray(input);
+ }
+ return;
}
if (interceptor != null) {
checkTypeViaProperty(interceptor, type, negative);
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
index e642ede..5750445 100644
--- a/pkg/compiler/lib/src/ssa/nodes.dart
+++ b/pkg/compiler/lib/src/ssa/nodes.dart
@@ -900,7 +900,9 @@
JavaScriptBackend backend = compiler.backend;
return instructionType.contains(backend.jsArrayClass, classWorld)
|| instructionType.contains(backend.jsFixedArrayClass, classWorld)
- || instructionType.contains(backend.jsExtendableArrayClass, classWorld);
+ || instructionType.contains(backend.jsExtendableArrayClass, classWorld)
+ || instructionType.contains(
+ backend.jsUnmodifiableArrayClass, classWorld);
}
bool isIndexablePrimitive(Compiler compiler) {
@@ -912,7 +914,9 @@
bool isFixedArray(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- return instructionType.containsOnly(backend.jsFixedArrayClass);
+ // TODO(sra): Recognize the union of these types as well.
+ return instructionType.containsOnly(backend.jsFixedArrayClass)
+ || instructionType.containsOnly(backend.jsUnmodifiableArrayClass);
}
bool isExtendableArray(Compiler compiler) {
diff --git a/pkg/compiler/lib/src/ssa/optimize.dart b/pkg/compiler/lib/src/ssa/optimize.dart
index 752019a..1529104 100644
--- a/pkg/compiler/lib/src/ssa/optimize.dart
+++ b/pkg/compiler/lib/src/ssa/optimize.dart
@@ -99,15 +99,22 @@
}
}
+/// Returns `true` if [mask] represents only types that have a length that
+/// cannot change. The current implementation is conservative for the purpose
+/// of identifying gvn-able lengths and mis-identifies some unions of fixed
+/// length indexables (see TODO) as not fixed length.
bool isFixedLength(mask, Compiler compiler) {
ClassWorld classWorld = compiler.world;
JavaScriptBackend backend = compiler.backend;
if (mask.isContainer && mask.length != null) {
// A container on which we have inferred the length.
return true;
- } else if (mask.containsOnly(backend.jsFixedArrayClass)
- || mask.containsOnlyString(classWorld)
- || backend.isTypedArray(mask)) {
+ }
+ // TODO(sra): Recognize any combination of fixed length indexables.
+ if (mask.containsOnly(backend.jsFixedArrayClass) ||
+ mask.containsOnly(backend.jsUnmodifiableArrayClass) ||
+ mask.containsOnlyString(classWorld) ||
+ backend.isTypedArray(mask)) {
return true;
}
return false;
diff --git a/pkg/compiler/lib/src/tree_ir/optimization/pull_into_initializers.dart b/pkg/compiler/lib/src/tree_ir/optimization/pull_into_initializers.dart
index a45b9f2..2a679cf 100644
--- a/pkg/compiler/lib/src/tree_ir/optimization/pull_into_initializers.dart
+++ b/pkg/compiler/lib/src/tree_ir/optimization/pull_into_initializers.dart
@@ -314,4 +314,9 @@
Expression visitVariableUse(VariableUse node) {
return node;
}
+
+ Expression visitCreateInvocationMirror(CreateInvocationMirror node) {
+ rewriteList(node.arguments);
+ return node;
+ }
}
diff --git a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
index 766d825..3bef3f0 100644
--- a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
+++ b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
@@ -270,6 +270,7 @@
return exp is Constant ||
exp is This ||
exp is ReifyTypeVar ||
+ exp is CreateInvocationMirror ||
exp is InvokeStatic && exp.isEffectivelyConstant ||
exp is VariableUse && constantEnvironment.containsKey(exp.variable);
}
@@ -613,7 +614,6 @@
return node;
}
- @override
Expression visitTypeExpression(TypeExpression node) {
for (int i = node.arguments.length - 1; i >= 0; --i) {
node.arguments[i] = visitExpression(node.arguments[i]);
@@ -621,6 +621,13 @@
return node;
}
+ Expression visitCreateInvocationMirror(CreateInvocationMirror node) {
+ for (int i = node.arguments.length - 1; i >= 0; --i) {
+ node.arguments[i] = visitExpression(node.arguments[i]);
+ }
+ return node;
+ }
+
/// If [s] and [t] are similar statements we extract their subexpressions
/// and returns a new statement of the same type using expressions combined
/// with the [combine] callback. For example:
diff --git a/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart b/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart
index 5a61847..127ae91 100644
--- a/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart
+++ b/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart
@@ -329,6 +329,9 @@
visitCreateInstance(cps_ir.CreateInstance node) => unexpectedNode(node);
visitGetField(cps_ir.GetField node) => unexpectedNode(node);
visitCreateBox(cps_ir.CreateBox node) => unexpectedNode(node);
+ visitCreateInvocationMirror(cps_ir.CreateInvocationMirror node) {
+ return unexpectedNode(node);
+ }
// Executable definitions are not visited directly. They have 'build'
// functions as entry points.
diff --git a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
index 5c86d83..432c6c7 100644
--- a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
+++ b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
@@ -902,6 +902,21 @@
}
}
+class CreateInvocationMirror extends Expression implements JsSpecificNode {
+ final Selector selector;
+ final List<Expression> arguments;
+
+ CreateInvocationMirror(this.selector, this.arguments);
+
+ accept(ExpressionVisitor visitor) {
+ return visitor.visitCreateInvocationMirror(this);
+ }
+
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitCreateInvocationMirror(this, arg);
+ }
+}
+
/// Denotes the internal representation of [dartType], where all type variables
/// are replaced by the values in [arguments].
/// (See documentation on the TypeExpression CPS node for more details.)
@@ -946,6 +961,7 @@
E visitReadTypeVariable(ReadTypeVariable node);
E visitTypeExpression(TypeExpression node);
E visitSetField(SetField node);
+ E visitCreateInvocationMirror(CreateInvocationMirror node);
}
abstract class ExpressionVisitor1<E, A> {
@@ -974,6 +990,7 @@
E visitReadTypeVariable(ReadTypeVariable node, A arg);
E visitTypeExpression(TypeExpression node, A arg);
E visitSetField(SetField node, A arg);
+ E visitCreateInvocationMirror(CreateInvocationMirror node, A arg);
}
abstract class StatementVisitor<S> {
@@ -1199,6 +1216,10 @@
visitTypeExpression(TypeExpression node) {
node.arguments.forEach(visitExpression);
}
+
+ visitCreateInvocationMirror(CreateInvocationMirror node) {
+ node.arguments.forEach(visitExpression);
+ }
}
abstract class Transformer implements ExpressionVisitor<Expression>,
@@ -1395,4 +1416,9 @@
_replaceExpressions(node.arguments);
return node;
}
+
+ visitCreateInvocationMirror(CreateInvocationMirror node) {
+ _replaceExpressions(node.arguments);
+ return node;
+ }
}
diff --git a/pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart b/pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart
index 703885e..3a17fc9 100644
--- a/pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart
+++ b/pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart
@@ -360,17 +360,7 @@
}
String formatArguments(Invoke node) {
- List<String> args = new List<String>();
- int positionalArgumentCount = node.selector.positionalArgumentCount;
- for (int i = 0; i < positionalArgumentCount; ++i) {
- args.add(node.arguments[i].accept(this));
- }
- for (int i = 0; i < node.selector.namedArgumentCount; ++i) {
- String name = node.selector.namedArguments[i];
- String arg = node.arguments[positionalArgumentCount + i].accept(this);
- args.add("$name: $arg");
- }
- return args.join(', ');
+ return node.arguments.map(visitExpression).join(', ');
}
String visitInvokeStatic(InvokeStatic node) {
@@ -535,6 +525,12 @@
String visitTypeExpression(TypeExpression node) {
return node.dartType.toString();
}
+
+ @override
+ String visitCreateInvocationMirror(CreateInvocationMirror node) {
+ String args = node.arguments.map(visitExpression).join(', ');
+ return 'CreateInvocationMirror(${node.selector.name}, $args)';
+ }
}
/**
diff --git a/pkg/compiler/lib/src/use_unused_api.dart b/pkg/compiler/lib/src/use_unused_api.dart
index dd54759..34e5f04 100644
--- a/pkg/compiler/lib/src/use_unused_api.dart
+++ b/pkg/compiler/lib/src/use_unused_api.dart
@@ -12,6 +12,7 @@
import 'colors.dart' as colors;
import 'constants/constant_system.dart' as constants;
+import 'constants/expressions.dart' as constants;
import 'constants/values.dart' as constants;
import 'cps_ir/cps_ir_builder.dart' as ir_builder;
import 'cps_ir/cps_ir_builder_task.dart' as ir_builder;
@@ -51,7 +52,7 @@
useApi();
dart2js.main(arguments);
dart2jslib.isPublicName(null);
- useConstant(null, null);
+ useConstant(null, null, null, null, null);
useNode(null);
useUtil(null);
useSetlet(null);
@@ -84,9 +85,15 @@
}
void useConstant(constants.ConstantValue constant,
- constants.ConstantSystem cs) {
+ constants.ConstantExpression expression,
+ constants.ConstructedConstantExpression constructedConstant,
+ constants.ConstantSystem cs,
+ constants.Environment env) {
constant.isObject;
cs.isBool(constant);
+ constructedConstant.computeInstanceType();
+ constructedConstant.computeInstanceFields();
+ expression.evaluate(null, null);
}
void useNode(tree.Node node) {
diff --git a/pkg/compiler/lib/src/warnings.dart b/pkg/compiler/lib/src/warnings.dart
index 1b1272ee..8977b5d 100644
--- a/pkg/compiler/lib/src/warnings.dart
+++ b/pkg/compiler/lib/src/warnings.dart
@@ -1560,6 +1560,17 @@
main() {}
"""]);
+ static const MessageKind INVALID_URI = const MessageKind(
+ "'#{uri}' is not a valid URI.",
+ howToFix: DONT_KNOW_HOW_TO_FIX,
+ examples: const [
+ """
+// can't have a '[' in a URI
+import '../../Udyn[mic ils/expect.dart';
+
+main() {}
+"""]);
+
static const MessageKind READ_SCRIPT_ERROR = const MessageKind(
"Can't read '#{uri}' (#{exception}).",
// Don't know how to fix since the underlying error is unknown.
diff --git a/pkg/docgen/lib/src/models/model_helpers.dart b/pkg/docgen/lib/src/models/model_helpers.dart
index 816d4d3..70f158d 100644
--- a/pkg/docgen/lib/src/models/model_helpers.dart
+++ b/pkg/docgen/lib/src/models/model_helpers.dart
@@ -79,7 +79,7 @@
}
class AnnotationCreator
- extends ConstantExpressionVisitor<AnnotationInfo, Annotation> {
+ extends ConstantExpressionVisitor<Annotation, AnnotationInfo> {
const AnnotationCreator();
@@ -144,12 +144,6 @@
}
@override
- Annotation visitPrimitive(PrimitiveConstantExpression exp,
- AnnotationInfo context) {
- return null;
- }
-
- @override
Annotation visitSymbol(SymbolConstantExpression exp,
AnnotationInfo context) {
return null;
@@ -174,6 +168,67 @@
}
@override
+ Annotation visitBool(BoolConstantExpression exp,
+ AnnotationInfo context) {
+ return null;
+ }
+
+ @override
+ Annotation visitBoolFromEnvironment(BoolFromEnvironmentConstantExpression exp,
+ AnnotationInfo context) {
+ return null;
+ }
+
+ @override
+ Annotation visitDouble(DoubleConstantExpression exp,
+ AnnotationInfo context) {
+ return null;
+ }
+
+ @override
+ Annotation visitInt(IntConstantExpression exp,
+ AnnotationInfo context) {
+ return null;
+ }
+
+ @override
+ Annotation visitIntFromEnvironment(IntFromEnvironmentConstantExpression exp,
+ AnnotationInfo context) {
+ return null;
+ }
+
+ @override
+ Annotation visitNamed(NamedArgumentReference exp,
+ AnnotationInfo context) {
+ return null;
+ }
+
+ @override
+ Annotation visitNull(NullConstantExpression exp,
+ AnnotationInfo context) {
+ return null;
+ }
+
+ @override
+ Annotation visitPositional(PositionalArgumentReference exp,
+ AnnotationInfo context) {
+ return null;
+ }
+
+ @override
+ Annotation visitString(StringConstantExpression exp,
+ AnnotationInfo context) {
+ return null;
+ }
+
+ @override
+ Annotation visitStringFromEnvironment(
+ StringFromEnvironmentConstantExpression exp,
+ AnnotationInfo context) {
+ return null;
+ }
+
+ @override
Annotation visitDeferred(DeferredConstantExpression exp,
AnnotationInfo context) {
return exp.expression.accept(this, context);
diff --git a/pkg/docgen/pubspec.yaml b/pkg/docgen/pubspec.yaml
index d3c1b29..ef3b0f9 100644
--- a/pkg/docgen/pubspec.yaml
+++ b/pkg/docgen/pubspec.yaml
@@ -4,8 +4,8 @@
homepage: https://www.dartlang.org/
dependencies:
args: '>=0.9.0 <0.14.0'
- logging: '>=0.9.0 <0.10.0'
- markdown: 0.7.0
+ logging: '>=0.9.0 <0.12.0'
+ markdown: 0.7.1+2
path: '>=0.9.0 <2.0.0'
yaml: '>=0.9.0 <3.0.0'
dev_dependencies:
diff --git a/pkg/js_ast/lib/src/builder.dart b/pkg/js_ast/lib/src/builder.dart
index 12f204e..8603b20 100644
--- a/pkg/js_ast/lib/src/builder.dart
+++ b/pkg/js_ast/lib/src/builder.dart
@@ -329,6 +329,8 @@
/// [escapedString].
LiteralString string(String value) => new LiteralString('"$value"');
+ LiteralString name(String name) => new LiteralString(name);
+
LiteralNumber number(num value) => new LiteralNumber('$value');
LiteralBool boolean(bool value) => new LiteralBool(value);
diff --git a/pkg/pkg.status b/pkg/pkg.status
index afbb77b..9ed73c8 100644
--- a/pkg/pkg.status
+++ b/pkg/pkg.status
@@ -92,9 +92,6 @@
collection/test/unmodifiable_collection_test: SkipSlow # Times out. Issue 22050
async/test/stream_zip_test: SkipSlow # Times out. Issue 22050
-[$compiler == dart2dart]
-*: Skip
-
[ $runtime == ie10 ]
analyzer/test/generated/java_core_test: Pass, Timeout # Issue 19747
typed_data/test/typed_buffers_test/none: Fail # Issue 17607 (I put this here explicitly, since this is not the same as on ie9)
@@ -146,504 +143,51 @@
[ $compiler == dart2js && $cps_ir ]
analysis_server/tool/spec/check_all_test: Crash # unsupported element kind: context:field
-analyzer2dart/test/driver_test: Crash # cannot compile methods that need interceptor calling convention.
-analyzer2dart/test/end2end_test: Crash # Please triage this failure.
-analyzer2dart/test/identifier_semantics_test: Crash # cannot compile methods that need interceptor calling convention.
-analyzer2dart/test/sexpr_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-analyzer2dart/test/tree_shaker_test: Crash # cannot compile methods that need interceptor calling convention.
-analyzer/test/cancelable_future_test: Crash # Unhandled node
-analyzer/test/enum_test: Crash # Unhandled node
-analyzer/test/file_system/memory_file_system_test: Crash # Unhandled node
-analyzer/test/file_system/physical_resource_provider_test: Crash # Unhandled node
-analyzer/test/file_system/resource_uri_resolver_test: Crash # Unhandled node
-analyzer/test/generated/all_the_rest_test: Crash # Unhandled node
-analyzer/test/generated/ast_test: Crash # Unhandled node
-analyzer/test/generated/compile_time_error_code_test: Crash # Unhandled node
-analyzer/test/generated/element_test: Crash # Unhandled node
-analyzer/test/generated/incremental_resolver_test: Crash # Unhandled node
-analyzer/test/generated/incremental_scanner_test: Crash # Unhandled node
+analyzer/test/cancelable_future_test: Crash # try/finally
+analyzer/test/enum_test: Crash # try/finally
+analyzer/test/file_system/memory_file_system_test: Crash # try/finally
+analyzer/test/file_system/physical_resource_provider_test: Crash # try/finally
+analyzer/test/file_system/resource_uri_resolver_test: Crash # try/finally
+analyzer/test/generated/all_the_rest_test: Crash # try/finally
+analyzer/test/generated/ast_test: Crash # try/finally
+analyzer/test/generated/compile_time_error_code_test: Crash # try/finally
+analyzer/test/generated/element_test: Crash # try/finally
+analyzer/test/generated/incremental_resolver_test: Crash # try/finally
+analyzer/test/generated/incremental_scanner_test: Crash # try/finally
analyzer/test/generated/java_core_test: Crash # try/finally
analyzer/test/generated/java_io_test: Crash # try/finally
-analyzer/test/generated/non_error_resolver_test: Crash # Unhandled node
-analyzer/test/generated/parser_test: Crash # Unhandled node
-analyzer/test/generated/resolver_test: Crash # Unhandled node
-analyzer/test/generated/scanner_test: Crash # Unhandled node
-analyzer/test/generated/static_type_warning_code_test: Crash # Unhandled node
-analyzer/test/generated/static_warning_code_test: Crash # Unhandled node
-analyzer/test/generated/utilities_test: Crash # Unhandled node
+analyzer/test/generated/non_error_resolver_test: Crash # try/finally
+analyzer/test/generated/parser_test: Crash # try/finally
+analyzer/test/generated/resolver_test: Crash # try/finally
+analyzer/test/generated/scanner_test: Crash # try/finally
+analyzer/test/generated/static_type_warning_code_test: Crash # try/finally
+analyzer/test/generated/static_warning_code_test: Crash # try/finally
+analyzer/test/generated/utilities_test: Crash # try/finally
analyzer/test/instrumentation/instrumentation_test: Crash # try/finally
-analyzer/test/parse_compilation_unit_test: Crash # cannot compile methods that need interceptor calling convention.
-analyzer/test/plugin/plugin_impl_test: Crash # try/finally
+analyzer/test/parse_compilation_unit_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
analyzer/test/source/package_map_provider_test: Crash # try/finally
-analyzer/test/source/package_map_resolver_test: Crash # Unhandled node
-analyzer/test/src/context/cache_test: Crash # Unhandled node
+analyzer/test/source/package_map_resolver_test: Crash # try/finally
+analyzer/test/src/context/cache_test: Crash # try/finally
analyzer/test/src/context/context_test: Crash # try/finally
-analyzer/test/src/task/dart_test: Crash # Unhandled node
-analyzer/test/src/task/driver_test: Crash # Unhandled node
-analyzer/test/src/task/general_test: Crash # Unhandled node
-analyzer/test/src/task/inputs_test: Crash # Unhandled node
-analyzer/test/src/task/manager_test: Crash # Unhandled node
-analyzer/test/src/task/model_test: Crash # Unhandled node
-analyzer/test/src/util/asserts_test: Crash # Unhandled node
-analyzer/test/src/util/lru_map_test: Crash # Unhandled node
+analyzer/test/src/task/dart_test: Crash # try/finally
+analyzer/test/src/task/dart_work_manager_test: Crash # try/finally
+analyzer/test/src/task/driver_test: Crash # try/finally
+analyzer/test/src/task/general_test: Crash # try/finally
+analyzer/test/src/task/incremental_element_builder_test: Crash # try/finally
+analyzer/test/src/task/inputs_test: Crash # try/finally
+analyzer/test/src/task/manager_test: Crash # try/finally
+analyzer/test/src/task/model_test: Crash # try/finally
+analyzer/test/src/util/asserts_test: Crash # try/finally
+analyzer/test/src/util/lru_map_test: Crash # try/finally
+analyzer2dart/test/driver_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+analyzer2dart/test/end2end_test: Crash # (unittester): handleStaticFunctionGet: function(unittester)
+analyzer2dart/test/identifier_semantics_test: Crash # unsupported element kind: NOT_SDK:field
+analyzer2dart/test/sexpr_test: Crash # (unittester): handleStaticFunctionGet: function(unittester)
+analyzer2dart/test/tree_shaker_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
fixnum/test/int_32_test: Crash # try/finally
fixnum/test/int_64_test: Crash # try/finally
-_internal/lib/pub/test/ascii_tree_test: Crash # cannot compile methods that need interceptor calling convention.
-_internal/lib/pub/test/barback/all_includes_all_default_directories_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/barback/directory_args_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/barback/fails_if_args_with_all_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/barback/fails_if_dir_arg_does_not_exist_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/barback/fails_if_dir_outside_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/barback/fails_if_no_default_dirs_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/barback/fails_on_all_with_no_buildable_directories_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/barback/fails_on_disallowed_directories_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/barback/fails_on_overlapping_directories_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/barback/subdirectories_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/build/allows_arbitrary_modes_test: Crash # Unhandled node
-_internal/lib/pub/test/build/can_specify_output_directory_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/build/cleans_entire_build_directory_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/build/copies_browser_js_next_to_entrypoints_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/build/copies_browser_js_with_dependency_override_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/build/copies_browser_js_with_dev_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/build/copies_non_dart_files_to_build_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/build/defaults_to_release_mode_test: Crash # Unhandled node
-_internal/lib/pub/test/build/handles_long_paths_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/build/includes_assets_from_dependencies_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/build/includes_dart_files_from_dependencies_in_debug_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/build/includes_dart_files_in_debug_mode_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/build/outputs_error_to_json_test: Crash # Unhandled node
-_internal/lib/pub/test/build/outputs_results_to_json_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/build/preserves_htaccess_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/add/adds_latest_matching_version_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/add/adds_latest_version_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/add/all_adds_all_matching_versions_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/add/all_with_some_versions_present_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/add/already_cached_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/add/bad_version_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/add/missing_package_arg_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/add/no_matching_version_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/add/package_not_found_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/add/unexpected_arguments_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/list_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/repair/empty_cache_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/repair/handles_corrupted_binstub_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/repair/handles_corrupted_global_lockfile_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/repair/handles_failure_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/repair/handles_orphaned_binstub_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/repair/recompiles_snapshots_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/repair/reinstalls_git_packages_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/repair/reinstalls_hosted_packages_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/cache/repair/updates_binstubs_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/allows_import_in_dart_code_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/compiles_entrypoints_in_root_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/compiles_generated_dart_file_test: Crash # Unhandled node
-_internal/lib/pub/test/dart2js/compiles_generated_file_from_dependency_outside_web_test: Crash # Unhandled node
-_internal/lib/pub/test/dart2js/compiles_generated_file_from_dependency_test: Crash # Unhandled node
-_internal/lib/pub/test/dart2js/compiles_imported_generated_file_test: Crash # Unhandled node
-_internal/lib/pub/test/dart2js/converts_isolate_entrypoint_in_web_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/does_not_compile_if_disabled_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/does_not_compile_until_its_output_is_requested_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/does_not_support_invalid_command_line_options_type_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/does_not_support_invalid_environment_type_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/does_not_support_invalid_option_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/doesnt_support_invalid_type_for_boolean_option_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/ignores_entrypoint_in_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/ignores_entrypoints_in_lib_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/ignores_non_entrypoint_dart_files_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/includes_source_maps_if_sourceMaps_true_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/includes_source_maps_in_debug_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/minifies_in_release_mode_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/minify_configuration_overrides_mode_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/omits_source_map_if_sourceMaps_false_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/omits_source_map_in_release_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/outputs_deferred_libraries_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/passes_along_environment_constants_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/reports_dart_parse_errors_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/source_maps_include_core_libs_in_subdirectory_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/source_maps_include_core_libs_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/supports_configuration_with_build_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/supports_valid_options_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dart2js/unminified_in_nonrelease_mode_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dependency_computer/conservative_dependencies_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dependency_computer/cycle_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dependency_computer/dev_transformers_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dependency_computer/error_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dependency_computer/import_dependencies_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dependency_computer/no_dependencies_test: Crash # (throw new StateError("Unexpected call to wrapFuture with no current " "schedule.")): Unhandled node
-_internal/lib/pub/test/dependency_computer/transformers_needed_by_library_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dependency_override_test: Crash # try/finally
-_internal/lib/pub/test/deps_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/dev_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/downgrade/does_not_show_other_versions_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/downgrade/doesnt_change_git_dependencies_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/downgrade/dry_run_does_not_apply_changes_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/downgrade/unlock_dependers_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/downgrade/unlock_if_necessary_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/error_group_test: Crash # try/finally
-_internal/lib/pub/test/get/broken_symlink_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/cache_transformed_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/dry_run_does_not_apply_changes_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/check_out_and_upgrade_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/check_out_branch_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/check_out_revision_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/check_out_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/check_out_transitive_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/check_out_twice_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/check_out_unfetched_revision_of_cached_repo_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/check_out_with_trailing_slash_test: Crash # try/finally
-_internal/lib/pub/test/get/git/dependency_name_match_pubspec_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/different_repo_name_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/doesnt_fetch_if_nothing_changes_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/locked_revision_without_repo_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/lock_version_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/require_pubspec_name_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/require_pubspec_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/stay_locked_if_compatible_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/git/unlock_if_incompatible_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/avoid_network_requests_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/cached_pubspec_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/does_no_network_requests_when_possible_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/do_not_upgrade_on_removed_constraints_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/gets_a_package_with_busted_dev_dependencies_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/get_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/get_transitive_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/resolve_constraints_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/stay_locked_if_compatible_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/stay_locked_if_new_is_satisfied_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/stay_locked_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/unlock_if_incompatible_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/unlock_if_new_is_unsatisfied_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/hosted/unlock_if_version_doesnt_exist_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/path/absolute_path_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/path/absolute_symlink_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/path/empty_pubspec_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/path/nonexistent_dir_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/path/no_pubspec_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/path/path_is_file_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/path/relative_path_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/path/relative_symlink_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/path/shared_dependency_symlink_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/path/shared_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/relative_symlink_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/get/switch_source_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/activate_git_after_hosted_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/activate_hosted_after_git_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/activate_hosted_after_path_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/activate_path_after_hosted_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/bad_version_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/cached_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/constraint_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/constraint_with_path_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/different_version_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/doesnt_snapshot_path_executables_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/empty_constraint_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/git_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/ignores_active_version_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/installs_dependencies_for_git_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/installs_dependencies_for_path_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/installs_dependencies_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/missing_git_repo_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/missing_package_arg_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/outdated_binstub_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/path_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/reactivating_git_upgrades_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/removes_old_lockfile_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/snapshots_git_executables_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/snapshots_hosted_executables_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/supports_version_solver_backtracking_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/uncached_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/unexpected_arguments_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/activate/unknown_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/binstub_runs_executable_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/binstub_runs_global_run_if_no_snapshot_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/binstub_runs_precompiled_snapshot_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/creates_executables_in_pubspec_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/does_not_warn_if_no_executables_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/does_not_warn_if_on_path_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/explicit_and_no_executables_options_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/explicit_executables_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/missing_script_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/name_collision_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/name_collision_with_overwrite_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/no_executables_flag_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/outdated_binstub_runs_pub_global_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/outdated_snapshot_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/path_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/reactivate_removes_old_executables_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/removes_even_if_not_in_pubspec_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/removes_when_deactivated_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/unknown_explicit_executable_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/binstubs/warns_if_not_on_path_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/deactivate/deactivate_and_reactivate_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/deactivate/git_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/deactivate/hosted_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/deactivate/missing_package_arg_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/deactivate/path_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/deactivate/removes_precompiled_snapshots_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/deactivate/unexpected_arguments_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/deactivate/unknown_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/list_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/errors_if_outside_bin_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/implicit_executable_name_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/missing_executable_arg_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/missing_path_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/mode_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/nonexistent_script_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/recompiles_if_sdk_is_out_of_date_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/reflects_changes_to_local_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/runs_git_script_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/runs_path_script_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/runs_script_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/runs_transformer_test: Crash # Unhandled node
-_internal/lib/pub/test/global/run/unknown_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/global/run/uses_old_lockfile_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/hosted/fail_gracefully_on_missing_package_test: Crash # try/finally
-_internal/lib/pub/test/hosted/fail_gracefully_on_url_resolve_test: Crash # try/finally
-_internal/lib/pub/test/hosted/offline_test: Crash # try/finally
-_internal/lib/pub/test/hosted/remove_removed_dependency_test: Crash # try/finally
-_internal/lib/pub/test/hosted/remove_removed_transitive_dependency_test: Crash # try/finally
-_internal/lib/pub/test/hosted/version_negotiation_test: Crash # try/finally
-_internal/lib/pub/test/implicit_barback_dependency_test: Crash # "on T" catch block
-_internal/lib/pub/test/implicit_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/io_test: Crash # try/finally
-_internal/lib/pub/test/lish/archives_and_uploads_a_package_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/cloud_storage_upload_doesnt_redirect_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/cloud_storage_upload_provides_an_error_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/does_not_publish_if_private_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/does_not_publish_if_private_with_server_arg_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/force_cannot_be_combined_with_dry_run_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/force_does_not_publish_if_private_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/force_does_not_publish_if_there_are_errors_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/force_publishes_if_tests_are_no_warnings_or_errors_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/force_publishes_if_there_are_warnings_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/many_files_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/package_creation_provides_a_malformed_error_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/package_creation_provides_a_malformed_success_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/package_creation_provides_an_error_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/package_creation_provides_invalid_json_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/package_validation_has_an_error_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/package_validation_has_a_warning_and_continues_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/package_validation_has_a_warning_and_is_canceled_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/preview_errors_if_private_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/preview_package_validation_has_a_warning_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/preview_package_validation_has_no_warnings_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/server_arg_does_not_override_private_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/server_arg_overrides_publish_to_url_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/upload_form_fields_has_a_non_string_value_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/upload_form_fields_is_not_a_map_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/upload_form_is_missing_fields_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/upload_form_is_missing_url_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/upload_form_provides_an_error_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/upload_form_provides_invalid_json_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/upload_form_url_is_not_a_string_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lish/uses_publish_to_url_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/list_package_dirs/ignores_updated_pubspec_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/list_package_dirs/includes_dev_dependencies_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/list_package_dirs/lists_dependency_directories_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/list_package_dirs/lockfile_error_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/list_package_dirs/missing_pubspec_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/list_package_dirs/no_lockfile_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/list_package_dirs/pubspec_error_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/lock_file_test: Crash # try/finally
-_internal/lib/pub/test/no_package_symlinks_test: Crash # try/finally
-_internal/lib/pub/test/oauth2/with_a_malformed_credentials_authenticates_again_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/oauth2/with_an_expired_credentials_refreshes_and_saves_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/oauth2/with_an_expired_credentials_without_a_refresh_token_authenticates_again_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/oauth2/with_a_pre_existing_credentials_does_not_authenticate_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/oauth2/with_a_server_rejected_refresh_token_authenticates_again_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/oauth2/with_no_credentials_authenticates_and_saves_credentials_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/oauth2/with_server_rejected_credentials_authenticates_again_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/package_list_files_test: Crash # try/finally
-_internal/lib/pub/test/preprocess_test: Crash # try/finally
-_internal/lib/pub/test/pub_get_and_upgrade_test: Crash # try/finally
-_internal/lib/pub/test/pubspec_test: Crash # try/finally
-_internal/lib/pub/test/pub_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/pub_uploader_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/real_version_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/allows_dart_extension_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/app_can_read_from_stdin_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/displays_transformer_logs_test: Crash # Unhandled node
-_internal/lib/pub/test/run/does_not_run_on_transformer_error_test: Crash # Unhandled node
-_internal/lib/pub/test/run/doesnt_load_an_unnecessary_transformer_test: Crash # Unhandled node
-_internal/lib/pub/test/run/errors_if_no_executable_is_given_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/errors_if_only_transitive_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/errors_if_path_in_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/forwards_signal_posix_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/ignores_explicit_dart2js_transformer_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/includes_parent_directories_of_entrypoint_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/mode_test: Crash # Unhandled node
-_internal/lib/pub/test/run/nonexistent_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/nonexistent_script_in_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/nonexistent_script_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/passes_along_arguments_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/runs_a_generated_script_test: Crash # Unhandled node
-_internal/lib/pub/test/run/runs_app_in_directory_in_entrypoint_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/runs_app_in_entrypoint_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/runs_app_in_entrypoint_with_warning_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/runs_from_a_dependency_override_after_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/runs_named_app_in_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/runs_named_app_in_dev_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/runs_shorthand_app_in_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/runs_the_script_in_checked_mode_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/run/runs_transformer_in_entrypoint_test: Crash # Unhandled node
-_internal/lib/pub/test/serve/404_page_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/allows_arbitrary_modes_test: Crash # Unhandled node
-_internal/lib/pub/test/serve/defaults_to_debug_mode_test: Crash # Unhandled node
-_internal/lib/pub/test/serve/does_not_crash_if_an_unused_dart_file_has_a_syntax_error_test: Crash # Unhandled node
-_internal/lib/pub/test/serve/does_not_get_first_if_a_dependency_is_removed_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/does_not_get_first_if_git_url_did_not_change_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/does_not_get_first_if_locked_matches_override_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/does_not_get_first_if_locked_version_matches_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/does_not_serve_dart_in_release_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/does_not_serve_hidden_assets_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/does_not_watch_compiled_js_files_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/gets_first_if_dependency_added_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/gets_first_if_dependency_is_not_installed_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/gets_first_if_dependency_version_changed_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/gets_first_if_dev_dependency_changed_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/gets_first_if_git_ref_changed_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/gets_first_if_git_url_changed_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/gets_first_if_no_lockfile_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/gets_first_if_path_dependency_changed_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/gets_first_if_source_changed_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/gets_first_if_transitive_dependency_is_not_installed_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/invalid_method_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/invalid_urls_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/missing_asset_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/missing_dependency_file_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/missing_file_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/native_watch_added_file_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/native_watch_modified_file_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/native_watch_removed_file_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/native_watch_replaced_file_test: Crash # Unhandled node
-_internal/lib/pub/test/serve/serve_from_app_lib_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/serve_from_app_web_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/serve_from_dependency_lib_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/serves_file_with_space_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/serves_index_html_for_directories_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/serves_web_and_test_dirs_by_default_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/supports_cross_origin_header_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/supports_user_defined_declaring_transformers_test: Crash # Unhandled node
-_internal/lib/pub/test/serve/supports_user_defined_lazy_transformers_test: Crash # Unhandled node
-_internal/lib/pub/test/serve/unknown_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/uses_appropriate_mime_types_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/watch_added_file_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/watch_modified_file_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/watch_removed_file_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/exit_on_close_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/path_to_urls_errors_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/path_to_urls_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/path_to_urls_with_line_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/serve_directory_already_served_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/serve_directory_and_immediately_request_asset_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/serve_directory_and_immediately_serve_again_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/serve_directory_and_immediately_unserve_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/serve_directory_arg_errors_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/serve_directory_overlapping_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/serve_directory_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/unserve_directory_arg_errors_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/unserve_directory_not_served_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/unserve_directory_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/url_to_asset_id_errors_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/url_to_asset_id_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/serve/web_socket/url_to_asset_id_with_line_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/creates_a_snapshot_for_immediate_and_transitive_dep_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/creates_a_snapshot_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/doesnt_load_irrelevant_transformers_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/doesnt_resnapshot_when_a_dependency_is_unchanged_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/doesnt_snapshot_an_entrypoint_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/doesnt_snapshot_path_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/doesnt_snapshot_transitive_dependencies_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/prints_errors_for_broken_snapshots_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/recompiles_if_the_sdk_is_out_of_date_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/snapshots_transformed_code_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/updates_snapshot_for_git_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/upgrades_snapshot_for_dependency_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/snapshot/upgrades_snapshot_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/transcript_test: Crash # cannot compile methods that need interceptor calling convention.
-_internal/lib/pub/test/transformer/asset_not_found_exceptions_are_detectable_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/a_transformer_rejects_its_config_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/cache_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/transformer/can_log_messages_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/can_use_consume_primary_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/can_use_has_input_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/can_use_read_input_as_string_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/can_use_read_input_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/configuration/configuration_defaults_to_empty_map_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/configuration/passes_configuration_to_a_transformer_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/configuration/with_configuration_only_instantiates_configurable_transformers_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/dart2js_transformer_before_another_transformer_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/does_not_run_a_transform_on_an_input_in_another_package_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/exclude_asset_glob_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/exclude_asset_list_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/exclude_asset_prefix_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/exclude_asset_string_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/include_asset_glob_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/include_asset_list_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/include_asset_prefix_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/include_asset_string_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/includes_before_excludes_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/works_on_aggregate_transformer_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/works_on_dart2js_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/works_on_lazy_transformer_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/exclusion/works_on_transformer_group_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/fails_to_load_a_file_that_defines_no_transforms_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/fails_to_load_a_non_existent_transform_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/fails_to_load_an_unconfigurable_transformer_when_config_is_passed_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/fails_to_load_a_pubspec_with_reserved_transformer_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/fails_to_load_a_transform_from_a_non_dependency_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/fails_to_load_a_transform_with_an_import_error_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/fails_to_load_a_transform_with_a_syntax_error_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/loads_a_declaring_aggregate_transformer_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/loads_a_diamond_transformer_dependency_graph_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/loads_a_lazy_aggregate_transformer_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/loads_an_aggregate_transformer_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/loads_a_transformer_defined_in_an_exported_library_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/loads_different_configurations_from_the_same_isolate_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/multiple_transformers_reject_their_config_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/prefers_transformer_to_library_name_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/prints_a_transform_error_in_apply_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/prints_a_transform_interface_error_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/runs_a_local_transform_on_the_application_package_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/runs_a_third_party_transformer_on_a_local_transformer_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/runs_a_third_party_transform_on_the_application_package_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/runs_a_transformer_group_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/runs_a_transformer_on_a_dependency_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/runs_one_third_party_transformer_on_another_test: Crash # Unhandled node
-_internal/lib/pub/test/transformer/supports_a_transformer_that_doesnt_return_futures_test: Crash # Unhandled node
-_internal/lib/pub/test/unknown_source_test: Crash # try/finally
-_internal/lib/pub/test/upgrade/dry_run_does_not_apply_changes_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/git/do_not_upgrade_if_unneeded_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/git/upgrade_locked_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/git/upgrade_one_locked_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/git/upgrade_to_incompatible_pubspec_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/git/upgrade_to_nonexistent_pubspec_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/hosted/unlock_dependers_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/hosted/unlock_if_necessary_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/hosted/upgrade_removed_constraints_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/report/describes_change_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/report/does_not_show_newer_versions_for_locked_packages_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/report/highlights_overrides_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/report/leading_character_shows_change_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/report/shows_newer_available_versions_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/upgrade/report/shows_number_of_changed_dependencies_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/utils_test: Crash # try/finally
-_internal/lib/pub/test/validator/compiled_dartdoc_test: Crash # try/finally
-_internal/lib/pub/test/validator/dependency_override_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/validator/dependency_test: Crash # try/finally
-_internal/lib/pub/test/validator/directory_test: Crash # try/finally
-_internal/lib/pub/test/validator/executable_test: Crash # try/finally
-_internal/lib/pub/test/validator/license_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/validator/name_test: Crash # try/finally
-_internal/lib/pub/test/validator/pubspec_field_test: Crash # try/finally
-_internal/lib/pub/test/validator/sdk_constraint_test: Crash # (throw new StateError("Unexpected call to wrapFuture with no current " "schedule.")): Unhandled node
-_internal/lib/pub/test/validator/size_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/validator/utf8_readme_test: Crash # unsupported element kind: _defaultEnvironment:field
-_internal/lib/pub/test/version_solver_test: Crash # try/finally
-js_ast/test/printer_callback_test: Crash # Please triage this failure.
-microlytics/test/dart_microlytics_test: Crash # (throw new ExpectException(message)): Unhandled node
+js_ast/test/printer_callback_test: Crash # (check): handleStaticFunctionGet: function(check)
stub_core_library/test/stub_test: Crash # try/finally
-third_party/di_tests/di_test: Crash # try/finally
-typed_data/test/typed_buffers_test/01: Crash # cannot compile methods that need interceptor calling convention.
-typed_data/test/typed_buffers_test/none: Crash # cannot compile methods that need interceptor calling convention.
+typed_data/test/typed_buffers_test/01: Crash # (roundToFloat): handleStaticFunctionGet: function(roundToFloat)
+typed_data/test/typed_buffers_test/none: Crash # (roundToFloat): handleStaticFunctionGet: function(roundToFloat)
typed_mock/test/typed_mock_test: Crash # try/finally
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index 576a0ef..ebb92c9 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -179,3 +179,63 @@
"../vm:libdart_platform",
]
}
+
+io_impl_sources_gypi =
+ exec_script("../../tools/gypi_to_gn.py",
+ [ rebase_path("io_impl_sources.gypi") ],
+ "scope",
+ [ "io_impl_sources.gypi" ])
+
+# A source set for the implementation of 'dart:io' library
+# (without secure sockets).
+source_set("embedded_dart_io") {
+ configs += ["..:dart_config",]
+
+ # Set custom sources assignment filter. The custom filters does three things:
+ # 1) Filters out unnecessary files pulled in from the gypi files.
+ # 2) Filters out secure socket support.
+ # 3) Enables dart:io by filtering out _unsupported.cc implementations.
+ custom_sources_filter = [
+ "*net/nss_memio.cc",
+ "*net/nss_memio.h",
+ "*secure_socket.cc",
+ "*secure_socket.h",
+ "*filter_unsupported.cc",
+ "*io_service_unsupported.cc",
+ "*_test.cc",
+ "*_test.h",
+ "*dbg*",
+ "builtin.cc",
+ "builtin_gen_snapshot.cc",
+ ]
+ if (!is_mac) {
+ # Dart tree uses *_macos.* instead of *_mac.*
+ custom_sources_filter += [
+ "*_macos.h",
+ "*_macos.cc",
+ ]
+ }
+ set_sources_assignment_filter(custom_sources_filter)
+
+ defines = [ "DART_IO_SECURE_SOCKET_DISABLED" ]
+
+ sources = io_impl_sources_gypi.sources + builtin_impl_sources_gypi.sources
+ sources += [
+ "builtin_nolib.cc",
+ "builtin_natives.cc",
+ "io_natives.cc",
+ "io_natives.h",
+ "embedded_dart_io.cc",
+ "embedded_dart_io.h",
+ "log_android.cc",
+ "log_linux.cc",
+ "log_macos.cc",
+ "log_win.cc",
+ "log.h",
+ ]
+
+ include_dirs = [
+ "..",
+ "//third_party"
+ ]
+}
diff --git a/runtime/bin/bin.gypi b/runtime/bin/bin.gypi
index 1137354..a2638a7 100644
--- a/runtime/bin/bin.gypi
+++ b/runtime/bin/bin.gypi
@@ -349,12 +349,12 @@
},
},
{
- 'target_name': 'libdart_withcore',
+ 'target_name': 'libdart_nosnapshot',
'type': 'static_library',
'toolsets':['target','host'],
'dependencies': [
- 'libdart_lib_withcore',
- 'libdart_vm',
+ 'libdart_lib_nosnapshot',
+ 'libdart_vm_nosnapshot',
'libdouble_conversion',
'generate_version_cc_file#host',
],
@@ -382,7 +382,7 @@
'type': 'executable',
'toolsets':['host'],
'dependencies': [
- 'libdart_withcore',
+ 'libdart_nosnapshot',
'libdart_builtin',
],
'include_dirs': [
@@ -498,7 +498,7 @@
'../tools/create_resources.py',
# The following two files are used to trigger a rebuild.
'<(PRODUCT_DIR)/observatory/deployed/web/index.html',
- '<(PRODUCT_DIR)/observatory/deployed/web/index.html_bootstrap.dart.js',
+ '<(PRODUCT_DIR)/observatory/deployed/web/index.html.polymer.bootstrap.dart.js',
'<@(_sources)',
],
'outputs': [
@@ -609,7 +609,7 @@
'type': 'executable',
'toolsets':['host'],
'dependencies': [
- 'libdart_withcore',
+ 'libdart_nosnapshot',
'libdart_builtin',
'libdart_io',
'generate_bootstrap_resources_cc_file#host',
@@ -662,7 +662,7 @@
'target_name': 'dart_no_snapshot',
'type': 'executable',
'dependencies': [
- 'libdart_withcore',
+ 'libdart_nosnapshot',
'libdart_builtin',
'libdart_io',
'generate_resources_cc_file#host',
@@ -721,7 +721,7 @@
'target_name': 'run_vm_tests',
'type': 'executable',
'dependencies': [
- 'libdart_withcore',
+ 'libdart',
'libdart_builtin',
'libdart_io',
'generate_snapshot_file#host',
diff --git a/runtime/bin/builtin.dart b/runtime/bin/builtin.dart
index 59338260..fe18de3 100644
--- a/runtime/bin/builtin.dart
+++ b/runtime/bin/builtin.dart
@@ -4,67 +4,97 @@
library builtin;
// NOTE: Do not import 'dart:io' in builtin.
-import 'dart:async';
-import 'dart:convert';
import 'dart:isolate';
-
-
-/* See Dart_LibraryTag in dart_api.h */
-const Dart_kScriptTag = null;
-const Dart_kImportTag = 0;
-const Dart_kSourceTag = 1;
-const Dart_kCanonicalizeUrl = 2;
-
-// Dart native extension scheme.
-const _DART_EXT = 'dart-ext:';
-
-// import 'root_library'; happens here from C Code
+import 'dart:typed_data';
// The root library (aka the script) is imported into this library. The
// standalone embedder uses this to lookup the main entrypoint in the
// root library's namespace.
Function _getMainClosure() => main;
-// A port for communicating with the service isolate for I/O.
-SendPort _loadPort;
-const _logBuiltin = false;
+// 'print' implementation.
+// The standalone embedder registers the closurized _print function with the
+// dart:core library.
+void _printString(String s) native "Builtin_PrintString";
-// Corelib 'print' implementation.
+
void _print(arg) {
- _Logger._printString(arg.toString());
+ _printString(arg.toString());
}
-class _Logger {
- static void _printString(String s) native "Logger_PrintString";
-}
_getPrintClosure() => _print;
-_getCurrentDirectoryPath() native "Builtin_GetCurrentDirectory";
// Corelib 'Uri.base' implementation.
+// Uri.base is susceptible to changes in the current working directory.
+_getCurrentDirectoryPath() native "Builtin_GetCurrentDirectory";
+
+
Uri _uriBase() {
// We are not using Dircetory.current here to limit the dependency
// on dart:io. This code is the same as:
// return new Uri.file(Directory.current.path + "/");
var result = _getCurrentDirectoryPath();
- return new Uri.file(result + "/");
+ return new Uri.file("$result/");
}
+
_getUriBaseClosure() => _uriBase;
-// Are we running on Windows?
-var _isWindows;
-var _workingWindowsDrivePrefix;
-// The current working directory
-var _workingDirectoryUri;
-// The URI that the entry point script was loaded from. Remembered so that
-// package imports can be resolved relative to it.
-var _entryPointScript;
-// The directory to look in to resolve "package:" scheme URIs.
-var _packageRoot;
+// Asynchronous loading of resources.
+// The embedder forwards most loading requests to this library.
+
+// See Dart_LibraryTag in dart_api.h
+const Dart_kScriptTag = null;
+const Dart_kImportTag = 0;
+const Dart_kSourceTag = 1;
+const Dart_kCanonicalizeUrl = 2;
+
+// Embedder sets this to true if the --trace-loading flag was passed on the
+// command line.
+bool _traceLoading = false;
+
+// A port for communicating with the service isolate for I/O.
+SendPort _loadPort;
+// Maintain a number of outstanding load requests. Current loading request is
+// finished once there are no outstanding requests.
+int _numOutstandingLoadRequests = 0;
+
+// The current working directory when the embedder was launched.
+Uri _workingDirectory;
+// The URI that the root script was loaded from. Remembered so that
+// package imports can be resolved relative to it. The root script is the basis
+// for the root library in the VM.
+Uri _rootScript;
+// The directory to look in to resolve "package:" scheme URIs. By detault it is
+// the 'packages' directory right next to the script.
+Uri _packageRoot = _rootScript.resolve('packages/');
+
+// Special handling for Windows paths so that they are compatible with URI
+// handling.
+// Embedder sets this to true if we are running on Windows.
+bool _isWindows = false;
+
+
+// A class wrapping the load error message in an Error object.
+class LoadError extends Error {
+ final String message;
+ LoadError(this.message);
+
+ String toString() => 'Load Error: $message';
+}
+
+
+// Native calls provided by the embedder.
+void _signalDoneLoading() native "Builtin_DoneLoading";
+void _loadScriptCallback(int tag, String uri, String libraryUri, Uint8List data)
+ native "Builtin_LoadSource";
+void _asyncLoadErrorCallback(uri, libraryUri, error)
+ native "Builtin_AsyncLoadError";
+
_sanitizeWindowsPath(path) {
// For Windows we need to massage the paths a bit according to
@@ -90,6 +120,7 @@
return fixedPath;
}
+
_trimWindowsPath(path) {
// Convert /X:/ to X:/.
if (_isWindows == false) {
@@ -107,8 +138,9 @@
return path;
}
+
+// Ensure we have a trailing slash character.
_enforceTrailingSlash(uri) {
- // Ensure we have a trailing slash character.
if (!uri.endsWith('/')) {
return '$uri/';
}
@@ -116,41 +148,37 @@
}
-_extractDriveLetterPrefix(cwd) {
- if (!_isWindows) {
- return null;
- }
- if (cwd.length > 1 && cwd[1] == ':') {
- return '/${cwd[0]}:';
- }
- return null;
-}
-
-
+// Embedder Entrypoint:
+// The embedder calls this method with the current working directory.
void _setWorkingDirectory(cwd) {
- _workingWindowsDrivePrefix = _extractDriveLetterPrefix(cwd);
- cwd = _sanitizeWindowsPath(cwd);
- cwd = _enforceTrailingSlash(cwd);
- _workingDirectoryUri = new Uri(scheme: 'file', path: cwd);
- if (_logBuiltin) {
- _print('# Working Directory: $cwd');
+ if (_traceLoading) {
+ _print('# Setting working directory: $cwd');
+ }
+ _workingDirectory = new Uri.directory(cwd);
+ if (_traceLoading) {
+ _print('# Working directory URI: $_workingDirectory');
}
}
+// Embedder Entrypoint:
+// The embedder calls this method with a custom package root.
_setPackageRoot(String packageRoot) {
+ if (_traceLoading) {
+ _print('# Setting package root: $packageRoot');
+ }
packageRoot = _enforceTrailingSlash(packageRoot);
if (packageRoot.startsWith('file:') ||
packageRoot.startsWith('http:') ||
packageRoot.startsWith('https:')) {
- _packageRoot = _workingDirectoryUri.resolve(packageRoot);
+ _packageRoot = _workingDirectory.resolve(packageRoot);
} else {
packageRoot = _sanitizeWindowsPath(packageRoot);
packageRoot = _trimWindowsPath(packageRoot);
- _packageRoot = _workingDirectoryUri.resolveUri(new Uri.file(packageRoot));
+ _packageRoot = _workingDirectory.resolveUri(new Uri.file(packageRoot));
}
- if (_logBuiltin) {
- _print('# Package root: $packageRoot -> $_packageRoot');
+ if (_traceLoading) {
+ _print('# Package root URI: $_packageRoot');
}
}
@@ -167,76 +195,44 @@
"'$right', not '$wrong'.";
}
- var packageRoot = _packageRoot == null ?
- _entryPointScript.resolve('packages/') :
- _packageRoot;
- return packageRoot.resolve(uri.path);
+ if (_traceLoading) {
+ _print('# Package root: $_packageRoot');
+ _print('# uri path: ${uri.path}');
+ }
+ return _packageRoot.resolve(uri.path);
}
-
-String _resolveScriptUri(String scriptName) {
- if (_workingDirectoryUri == null) {
+// Resolves the script uri in the current working directory iff the given uri
+// did not specify a scheme (e.g. a path to a script file on the command line).
+Uri _resolveScriptUri(String scriptName) {
+ if (_workingDirectory == null) {
throw 'No current working directory set.';
}
scriptName = _sanitizeWindowsPath(scriptName);
var scriptUri = Uri.parse(scriptName);
- if (scriptUri.scheme != '') {
- // Script has a scheme, assume that it is fully formed.
- _entryPointScript = scriptUri;
- } else {
+ if (scriptUri.scheme == '') {
// Script does not have a scheme, assume that it is a path,
// resolve it against the working directory.
- _entryPointScript = _workingDirectoryUri.resolve(scriptName);
+ scriptUri = _workingDirectory.resolveUri(scriptUri);
}
- if (_logBuiltin) {
- _print('# Resolved entry point to: $_entryPointScript');
+
+ // Remember the root script URI so that we can resolve packages based on
+ // this location.
+ _rootScript = scriptUri;
+
+ if (_traceLoading) {
+ _print('# Resolved entry point to: $_rootScript');
}
- return _entryPointScript.toString();
+ return scriptUri;
}
-// Function called by standalone embedder to resolve uris.
-String _resolveUri(String base, String userString) {
- if (_logBuiltin) {
- _print('# Resolving: $userString from $base');
- }
- var baseUri = Uri.parse(base);
- if (userString.startsWith(_DART_EXT)) {
- var uri = userString.substring(_DART_EXT.length);
- return '$_DART_EXT${baseUri.resolve(uri)}';
- } else {
- return baseUri.resolve(userString).toString();
- }
-}
-
-Uri _createUri(String userUri) {
- var uri = Uri.parse(userUri);
- switch (uri.scheme) {
- case '':
- case 'data':
- case 'file':
- case 'http':
- case 'https':
- return uri;
- case 'package':
- return _resolvePackageUri(uri);
- default:
- // Only handling file, http[s], and package URIs
- // in standalone binary.
- if (_logBuiltin) {
- _print('# Unknown scheme (${uri.scheme}) in $uri.');
- }
- throw 'Not a known scheme: $uri';
- }
-}
-
-int _numOutstandingLoadRequests = 0;
-void _finishedOneLoadRequest(String uri) {
+void _finishLoadRequest(String uri) {
assert(_numOutstandingLoadRequests > 0);
_numOutstandingLoadRequests--;
- if (_logBuiltin) {
+ if (_traceLoading) {
_print("Loading of $uri finished, "
"${_numOutstandingLoadRequests} requests remaining");
}
@@ -245,38 +241,28 @@
}
}
-void _startingOneLoadRequest(String uri) {
+
+void _startLoadRequest(String uri, Uri resourceUri) {
assert(_numOutstandingLoadRequests >= 0);
_numOutstandingLoadRequests++;
- if (_logBuiltin) {
- _print("Loading of $uri started, "
+ if (_traceLoading) {
+ _print("Loading of $resourceUri for $uri started, "
"${_numOutstandingLoadRequests} requests outstanding");
}
}
-class LoadError extends Error {
- final String message;
- LoadError(this.message);
- String toString() => 'Load Error: $message';
-}
-
-void _signalDoneLoading() native "Builtin_DoneLoading";
-void _loadScriptCallback(int tag, String uri, String libraryUri, List<int> data)
- native "Builtin_LoadScript";
-void _asyncLoadErrorCallback(uri, libraryUri, error)
- native "Builtin_AsyncLoadError";
-
-void _loadScript(int tag, String uri, String libraryUri, List<int> data) {
+void _loadScript(int tag, String uri, String libraryUri, Uint8List data) {
// TODO: Currently a compilation error while loading the script is
// fatal for the isolate. _loadScriptCallback() does not return and
// the _numOutstandingLoadRequests counter remains out of sync.
_loadScriptCallback(tag, uri, libraryUri, data);
- _finishedOneLoadRequest(uri);
+ _finishLoadRequest(uri);
}
+
void _asyncLoadError(int tag, String uri, String libraryUri, LoadError error) {
- if (_logBuiltin) {
+ if (_traceLoading) {
_print("_asyncLoadError($uri), error: $error");
}
if (tag == Dart_kImportTag) {
@@ -285,18 +271,18 @@
libraryUri = uri;
}
_asyncLoadErrorCallback(uri, libraryUri, error);
- _finishedOneLoadRequest(uri);
+ _finishLoadRequest(uri);
}
-_loadDataAsyncLoadPort(int tag,
- String uri,
- String libraryUri,
- Uri resourceUri) {
+_loadDataFromLoadPort(int tag,
+ String uri,
+ String libraryUri,
+ Uri resourceUri) {
var receivePort = new ReceivePort();
receivePort.first.then((dataOrError) {
receivePort.close();
- if (dataOrError is List<int>) {
+ if (dataOrError is Uint8List) {
_loadScript(tag, uri, libraryUri, dataOrError);
} else {
assert(dataOrError is String);
@@ -314,9 +300,9 @@
try {
var msg = [receivePort.sendPort, resourceUri.toString()];
_loadPort.send(msg);
- _startingOneLoadRequest(uri);
+ _startLoadRequest(uri, resourceUri);
} catch (e) {
- if (_logBuiltin) {
+ if (_traceLoading) {
_print("Exception when communicating with service isolate: $e");
}
// Wrap inside a LoadError unless we are already propagating a previously
@@ -327,47 +313,77 @@
}
}
+
+// Embedder Entrypoint:
// Asynchronously loads script data through a http[s] or file uri.
_loadDataAsync(int tag, String uri, String libraryUri) {
+ var resourceUri;
if (tag == Dart_kScriptTag) {
- uri = _resolveScriptUri(uri);
+ resourceUri = _resolveScriptUri(uri);
+ uri = resourceUri.toString();
+ } else {
+ resourceUri = Uri.parse(uri);
}
- Uri resourceUri = _createUri(uri);
+ // package based uris need to be resolved to the correct loadable location.
+ if (resourceUri.scheme == 'package') {
+ resourceUri = _resolvePackageUri(resourceUri);
+ }
- _loadDataAsyncLoadPort(tag, uri, libraryUri, resourceUri);
+ _loadDataFromLoadPort(tag, uri, libraryUri, resourceUri);
}
-// Returns either a file path or a URI starting with http[s]:, as a String.
-String _filePathFromUri(String userUri) {
- var uri = Uri.parse(userUri);
- if (_logBuiltin) {
- _print('# Getting file path from: $uri');
- }
- var path;
- switch (uri.scheme) {
- case '':
- case 'file':
- return uri.toFilePath();
- case 'package':
- return _filePathFromUri(_resolvePackageUri(uri).toString());
- case 'data':
- case 'http':
- case 'https':
- return uri.toString();
- default:
- // Only handling file, http, and package URIs
- // in standalone binary.
- if (_logBuiltin) {
- _print('# Unknown scheme (${uri.scheme}) in $uri.');
- }
- throw 'Not a known scheme: $uri';
+// Embedder Entrypoint:
+// Function called by standalone embedder to resolve uris when the VM requests
+// Dart_kCanonicalizeUrl from the tag handler.
+String _resolveUri(String base, String userString) {
+ if (_traceLoading) {
+ _print('# Resolving: $userString from $base');
}
+ var baseUri = Uri.parse(base);
+ var result;
+ if (userString.startsWith(_DART_EXT)) {
+ var uri = userString.substring(_DART_EXT.length);
+ result = '$_DART_EXT${baseUri.resolve(uri)}';
+ } else {
+ result = baseUri.resolve(userString).toString();
+ }
+ if (_traceLoading) {
+ _print('Resolved $userString in $base to $result');
+ }
+ return result;
}
+
+// Embedder Entrypoint (gen_snapshot):
+// Resolve relative paths relative to working directory.
+String _resolveInWorkingDirectory(String fileName) {
+ if (_workingDirectory == null) {
+ throw 'No current working directory set.';
+ }
+ var name = _sanitizeWindowsPath(fileName);
+
+ var uri = Uri.parse(name);
+ if (uri.scheme != '') {
+ throw 'Schemes are not supported when resolving filenames.';
+ }
+ uri = _workingDirectory.resolveUri(uri);
+
+ if (_traceLoading) {
+ _print('# Resolved in working directory: $fileName -> $uri');
+ }
+ return uri.toString();
+}
+
+
+// Handling of dart-ext loading.
+// Dart native extension scheme.
+const _DART_EXT = 'dart-ext:';
+
String _nativeLibraryExtension() native "Builtin_NativeLibraryExtension";
+
String _platformExtensionFileName(String name) {
var extension = _nativeLibraryExtension();
@@ -378,6 +394,39 @@
}
}
+
+// Returns either a file path or a URI starting with http[s]:, as a String.
+String _filePathFromUri(String userUri) {
+ var uri = Uri.parse(userUri);
+ if (_traceLoading) {
+ _print('# Getting file path from: $uri');
+ }
+
+ var path;
+ switch (uri.scheme) {
+ case '':
+ case 'file':
+ return uri.toFilePath();
+ case 'package':
+ return _filePathFromUri(_resolvePackageUri(uri).toString());
+ case 'data':
+ case 'http':
+ case 'https':
+ return uri.toString();
+ default:
+ // Only handling file, http, and package URIs
+ // in standalone binary.
+ if (_traceLoading) {
+ _print('# Unknown scheme (${uri.scheme}) in $uri.');
+ }
+ throw 'Not a known scheme: $uri';
+ }
+}
+
+
+// Embedder Entrypoint:
+// When loading an extension the embedder calls this method to get the
+// different components.
// Returns the directory part, the filename part, and the name
// of a native extension URL as a list [directory, filename, name].
// The directory part is either a file system path or an HTTP(S) URL.
@@ -393,7 +442,6 @@
throw 'Unexpected internal error: Extension URI $userUri contains \\';
}
-
String name;
String path; // Will end in '/'.
int index = userUri.lastIndexOf('/');
diff --git a/runtime/bin/builtin_gen_snapshot.cc b/runtime/bin/builtin_gen_snapshot.cc
index 3e25004..2852464 100644
--- a/runtime/bin/builtin_gen_snapshot.cc
+++ b/runtime/bin/builtin_gen_snapshot.cc
@@ -15,7 +15,7 @@
// Lists the native function implementing basic logging facility.
#define BUILTIN_NATIVE_LIST(V) \
- V(Logger_PrintString, 1)
+ V(Builtin_PrintString, 1)
BUILTIN_NATIVE_LIST(DECLARE_FUNCTION);
@@ -63,7 +63,7 @@
// Implementation of native functions which are used for some
// test/debug functionality in standalone dart mode.
-void FUNCTION_NAME(Logger_PrintString)(Dart_NativeArguments args) {
+void FUNCTION_NAME(Builtin_PrintString)(Dart_NativeArguments args) {
Dart_EnterScope();
intptr_t length = 0;
uint8_t* chars = NULL;
diff --git a/runtime/bin/builtin_natives.cc b/runtime/bin/builtin_natives.cc
index a7bb6d2..80a03cf 100644
--- a/runtime/bin/builtin_natives.cc
+++ b/runtime/bin/builtin_natives.cc
@@ -64,8 +64,8 @@
V(File_GetStdioHandleType, 1) \
V(File_GetType, 2) \
V(File_AreIdentical, 2) \
- V(Logger_PrintString, 1) \
- V(Builtin_LoadScript, 4) \
+ V(Builtin_PrintString, 1) \
+ V(Builtin_LoadSource, 4) \
V(Builtin_AsyncLoadError, 3) \
V(Builtin_DoneLoading, 0) \
V(Builtin_NativeLibraryExtension, 0) \
@@ -121,7 +121,7 @@
// Implementation of native functions which are used for some
// test/debug functionality in standalone dart mode.
-void FUNCTION_NAME(Logger_PrintString)(Dart_NativeArguments args) {
+void FUNCTION_NAME(Builtin_PrintString)(Dart_NativeArguments args) {
intptr_t length = 0;
uint8_t* chars = NULL;
Dart_Handle str = Dart_GetNativeArgument(args, 0);
diff --git a/runtime/bin/dartutils.cc b/runtime/bin/dartutils.cc
index fc8b0c5..745efbe 100644
--- a/runtime/bin/dartutils.cc
+++ b/runtime/bin/dartutils.cc
@@ -283,13 +283,13 @@
}
-Dart_Handle DartUtils::ResolveScriptUri(Dart_Handle script_uri,
- Dart_Handle builtin_lib) {
+Dart_Handle DartUtils::ResolveUriInWorkingDirectory(Dart_Handle script_uri,
+ Dart_Handle builtin_lib) {
const int kNumArgs = 1;
Dart_Handle dart_args[kNumArgs];
dart_args[0] = script_uri;
return Dart_Invoke(builtin_lib,
- NewString("_resolveScriptUri"),
+ NewString("_resolveInWorkingDirectory"),
kNumArgs,
dart_args);
}
@@ -515,7 +515,7 @@
// Callback function that gets called from dartutils when the library
// source has been read. Loads the library or part into the VM.
-void FUNCTION_NAME(Builtin_LoadScript)(Dart_NativeArguments args) {
+void FUNCTION_NAME(Builtin_LoadSource)(Dart_NativeArguments args) {
Dart_Handle tag_in = Dart_GetNativeArgument(args, 0);
Dart_Handle resolved_script_uri = Dart_GetNativeArgument(args, 1);
Dart_Handle library_uri = Dart_GetNativeArgument(args, 2);
@@ -624,6 +624,7 @@
void DartUtils::PrepareBuiltinLibrary(Dart_Handle builtin_lib,
Dart_Handle internal_lib,
bool is_service_isolate,
+ bool trace_loading,
const char* package_root) {
// Setup the internal library's 'internalPrint' function.
Dart_Handle print = Dart_Invoke(
@@ -634,10 +635,15 @@
DART_CHECK_VALID(result);
if (!is_service_isolate) {
- result =
- Dart_SetField(builtin_lib, NewString("_isWindows"),
- IsWindowsHost() ? Dart_True() : Dart_False());
- DART_CHECK_VALID(result);
+ if (IsWindowsHost()) {
+ result = Dart_SetField(builtin_lib, NewString("_isWindows"), Dart_True());
+ DART_CHECK_VALID(result);
+ }
+ if (trace_loading) {
+ result = Dart_SetField(builtin_lib,
+ NewString("_traceLoading"), Dart_True());
+ DART_CHECK_VALID(result);
+ }
}
if (!is_service_isolate) {
@@ -702,6 +708,7 @@
Dart_Handle DartUtils::PrepareForScriptLoading(const char* package_root,
bool is_service_isolate,
+ bool trace_loading,
Dart_Handle builtin_lib) {
// First ensure all required libraries are available.
Dart_Handle url = NewString(kCoreLibURL);
@@ -731,6 +738,7 @@
PrepareBuiltinLibrary(builtin_lib,
internal_lib,
is_service_isolate,
+ trace_loading,
package_root);
PrepareAsyncLibrary(async_lib, isolate_lib);
PrepareCoreLibrary(core_lib, builtin_lib, is_service_isolate);
diff --git a/runtime/bin/dartutils.h b/runtime/bin/dartutils.h
index 0b3e817..0c9ac19 100644
--- a/runtime/bin/dartutils.h
+++ b/runtime/bin/dartutils.h
@@ -127,6 +127,7 @@
static void PrepareBuiltinLibrary(Dart_Handle builtin_lib,
Dart_Handle internal_lib,
bool is_service_isolate,
+ bool trace_loading,
const char* package_root);
static void PrepareCoreLibrary(Dart_Handle core_lib,
Dart_Handle builtin_lib,
@@ -137,6 +138,7 @@
static void PrepareIsolateLibrary(Dart_Handle isolate_lib);
static Dart_Handle PrepareForScriptLoading(const char* package_root,
bool is_service_isolate,
+ bool trace_loading,
Dart_Handle builtin_lib);
static void SetupIOLibrary(const char* script_uri);
@@ -181,8 +183,8 @@
static Dart_Handle SetWorkingDirectory(Dart_Handle builtin_lib);
- static Dart_Handle ResolveScriptUri(Dart_Handle script_uri,
- Dart_Handle builtin_lib);
+ static Dart_Handle ResolveUriInWorkingDirectory(Dart_Handle script_uri,
+ Dart_Handle builtin_lib);
static Dart_Handle FilePathFromUri(Dart_Handle script_uri,
Dart_Handle builtin_lib);
diff --git a/runtime/bin/embedded_dart_io.cc b/runtime/bin/embedded_dart_io.cc
new file mode 100644
index 0000000..1b3f40b
--- /dev/null
+++ b/runtime/bin/embedded_dart_io.cc
@@ -0,0 +1,20 @@
+// Copyright (c) 2015, 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.
+
+#include "bin/embedded_dart_io.h"
+
+#include "bin/eventhandler.h"
+#include "bin/thread.h"
+
+namespace dart {
+namespace bin {
+
+void BootstrapDartIo() {
+ // Bootstrap 'dart:io' event handler.
+ Thread::InitOnce();
+ EventHandler::Start();
+}
+
+} // namespace bin
+} // namespace dart
diff --git a/runtime/bin/embedded_dart_io.h b/runtime/bin/embedded_dart_io.h
new file mode 100644
index 0000000..e19b21a
--- /dev/null
+++ b/runtime/bin/embedded_dart_io.h
@@ -0,0 +1,17 @@
+// Copyright (c) 2015, 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.
+
+#ifndef BIN_EMBEDDED_DART_IO_H_
+#define BIN_EMBEDDED_DART_IO_H_
+
+namespace dart {
+namespace bin {
+
+// Bootstraps 'dart:io'.
+void BootstrapDartIo();
+
+} // namespace bin
+} // namespace dart
+
+#endif // BIN_EMBEDDED_DART_IO_H_
diff --git a/runtime/bin/gen_snapshot.cc b/runtime/bin/gen_snapshot.cc
index be575c1..b55575d 100644
--- a/runtime/bin/gen_snapshot.cc
+++ b/runtime/bin/gen_snapshot.cc
@@ -196,19 +196,20 @@
Dart_Isolate UriResolverIsolateScope::isolate = NULL;
-static Dart_Handle ResolveScriptUri(const char* script_uri) {
+static Dart_Handle ResolveUriInWorkingDirectory(const char* script_uri) {
bool failed = false;
char* result_string = NULL;
{
UriResolverIsolateScope scope;
- // Run DartUtils::ResolveScriptUri in context of uri resolver isolate.
+ // Run DartUtils::ResolveUriInWorkingDirectory in context of uri resolver
+ // isolate.
Dart_Handle builtin_lib =
Builtin::LoadAndCheckLibrary(Builtin::kBuiltinLibrary);
CHECK_RESULT(builtin_lib);
- Dart_Handle result = DartUtils::ResolveScriptUri(
+ Dart_Handle result = DartUtils::ResolveUriInWorkingDirectory(
DartUtils::NewString(script_uri), builtin_lib);
if (Dart_IsError(result)) {
failed = true;
@@ -310,7 +311,7 @@
const char* mapped_library_url_string = DartUtils::MapLibraryUrl(
url_mapping, library_url_string);
if (mapped_library_url_string != NULL) {
- library_url = ResolveScriptUri(mapped_library_url_string);
+ library_url = ResolveUriInWorkingDirectory(mapped_library_url_string);
library_url_string = DartUtils::GetStringValue(library_url);
}
@@ -356,7 +357,7 @@
Dart_Handle resolved_url = url;
if (mapped_url_string != NULL) {
// Mapped urls are relative to working directory.
- resolved_url = ResolveScriptUri(mapped_url_string);
+ resolved_url = ResolveUriInWorkingDirectory(mapped_url_string);
if (Dart_IsError(resolved_url)) {
return resolved_url;
}
@@ -383,7 +384,7 @@
static Dart_Handle LoadSnapshotCreationScript(const char* script_name) {
- Dart_Handle resolved_script_uri = ResolveScriptUri(script_name);
+ Dart_Handle resolved_script_uri = ResolveUriInWorkingDirectory(script_name);
if (Dart_IsError(resolved_script_uri)) {
return resolved_script_uri;
}
@@ -584,7 +585,10 @@
// Prepare for script loading by setting up the 'print' and 'timer'
// closures and setting up 'package root' for URI resolution.
result =
- DartUtils::PrepareForScriptLoading(package_root, false, builtin_lib);
+ DartUtils::PrepareForScriptLoading(package_root,
+ false,
+ false,
+ builtin_lib);
CHECK_RESULT(result);
Dart_ExitScope();
Dart_ExitIsolate();
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index ef61bb4..db47bbc 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -65,9 +65,9 @@
// dart functions and not run anything.
static bool has_compile_all = false;
-// Global flag that is used to indicate that we want to print the source code
-// for script that is being run.
-static bool has_print_script = false;
+// Global flag that is used to indicate that we want to trace resolution of
+// URIs and the loading of libraries, parts and scripts.
+static bool has_trace_loading = false;
static const char* DEFAULT_VM_SERVICE_SERVER_IP = "127.0.0.1";
@@ -282,17 +282,6 @@
}
-static bool ProcessPrintScriptOption(const char* arg,
- CommandLineOptions* vm_options) {
- ASSERT(arg != NULL);
- if (*arg != '\0') {
- return false;
- }
- has_print_script = true;
- return true;
-}
-
-
static bool ProcessGenScriptSnapshotOption(const char* filename,
CommandLineOptions* vm_options) {
if (filename != NULL && strlen(filename) != 0) {
@@ -361,6 +350,16 @@
}
+static bool ProcessTraceLoadingOption(const char* arg,
+ CommandLineOptions* vm_options) {
+ if (*arg != '\0') {
+ return false;
+ }
+ has_trace_loading = true;
+ return true;
+}
+
+
static struct {
const char* option_name;
bool (*process)(const char* option, CommandLineOptions* vm_options);
@@ -378,10 +377,10 @@
{ "--compile_all", ProcessCompileAllOption },
{ "--debug", ProcessDebugOption },
{ "--snapshot=", ProcessGenScriptSnapshotOption },
- { "--print-script", ProcessPrintScriptOption },
{ "--enable-vm-service", ProcessEnableVmServiceOption },
{ "--observe", ProcessObserveOption },
{ "--trace-debug-protocol", ProcessTraceDebugProtocolOption },
+ { "--trace-loading", ProcessTraceLoadingOption},
{ NULL, NULL }
};
@@ -634,7 +633,10 @@
// Prepare for script loading by setting up the 'print' and 'timer'
// closures and setting up 'package root' for URI resolution.
- result = DartUtils::PrepareForScriptLoading(package_root, false, builtin_lib);
+ result = DartUtils::PrepareForScriptLoading(package_root,
+ false,
+ has_trace_loading,
+ builtin_lib);
CHECK_RESULT(result);
result = Dart_SetEnvironmentCallback(EnvironmentCallback);
@@ -748,12 +750,13 @@
"--snapshot=<file_name>\n"
" loads Dart script and generates a snapshot in the specified file\n"
"\n"
-"--print-script\n"
-" generates Dart source code back and prints it after parsing a Dart script\n"
+"--trace-loading\n"
+" enables tracing of library and script loading\n"
"\n"
"--enable-vm-service[:<port number>]\n"
" enables the VM service and listens on specified port for connections\n"
" (default port number is 8181)\n"
+"\n"
"--noopt\n"
" run unoptimized code only\n"
"\n"
@@ -816,40 +819,6 @@
}
-static Dart_Handle GenerateScriptSource() {
- Dart_Handle library_url = Dart_LibraryUrl(Dart_RootLibrary());
- if (Dart_IsError(library_url)) {
- return library_url;
- }
- Dart_Handle script_urls = Dart_GetScriptURLs(library_url);
- if (Dart_IsError(script_urls)) {
- return script_urls;
- }
- intptr_t length;
- Dart_Handle result = Dart_ListLength(script_urls, &length);
- if (Dart_IsError(result)) {
- return result;
- }
- for (intptr_t i = 0; i < length; i++) {
- Dart_Handle script_url = Dart_ListGetAt(script_urls, i);
- if (Dart_IsError(script_url)) {
- return script_url;
- }
- result = Dart_GenerateScriptSource(library_url, script_url);
- if (Dart_IsError(result)) {
- return result;
- }
- const char* script_source = NULL;
- result = Dart_StringToCString(result, &script_source);
- if (Dart_IsError(result)) {
- return result;
- }
- Log::Print("%s\n", script_source);
- }
- return Dart_True();
-}
-
-
static const char* ServiceRequestError(Dart_Handle error) {
TextBuffer buffer(128);
buffer.Printf("{\"type\":\"Error\",\"text\":\"Internal error %s\"}",
@@ -1053,47 +1022,43 @@
"Unable to find root library for '%s'\n",
script_name);
}
- if (has_print_script) {
- result = GenerateScriptSource();
- DartExitOnError(result);
- } else {
- // The helper function _getMainClosure creates a closure for the main
- // entry point which is either explicitly or implictly exported from the
- // root library.
- Dart_Handle main_closure = Dart_Invoke(
- builtin_lib, Dart_NewStringFromCString("_getMainClosure"), 0, NULL);
- DartExitOnError(main_closure);
- // Set debug breakpoint if specified on the command line before calling
- // the main function.
- if (breakpoint_at != NULL) {
- result = SetBreakpoint(breakpoint_at, root_lib);
- if (Dart_IsError(result)) {
- ErrorExit(kErrorExitCode,
- "Error setting breakpoint at '%s': %s\n",
- breakpoint_at,
- Dart_GetError(result));
- }
+ // The helper function _getMainClosure creates a closure for the main
+ // entry point which is either explicitly or implictly exported from the
+ // root library.
+ Dart_Handle main_closure = Dart_Invoke(
+ builtin_lib, Dart_NewStringFromCString("_getMainClosure"), 0, NULL);
+ DartExitOnError(main_closure);
+
+ // Set debug breakpoint if specified on the command line before calling
+ // the main function.
+ if (breakpoint_at != NULL) {
+ result = SetBreakpoint(breakpoint_at, root_lib);
+ if (Dart_IsError(result)) {
+ ErrorExit(kErrorExitCode,
+ "Error setting breakpoint at '%s': %s\n",
+ breakpoint_at,
+ Dart_GetError(result));
}
-
- // Call _startIsolate in the isolate library to enable dispatching the
- // initial startup message.
- const intptr_t kNumIsolateArgs = 2;
- Dart_Handle isolate_args[kNumIsolateArgs];
- isolate_args[0] = main_closure; // entryPoint
- isolate_args[1] = CreateRuntimeOptions(&dart_options); // args
-
- Dart_Handle isolate_lib = Dart_LookupLibrary(
- Dart_NewStringFromCString("dart:isolate"));
- result = Dart_Invoke(isolate_lib,
- Dart_NewStringFromCString("_startMainIsolate"),
- kNumIsolateArgs, isolate_args);
- DartExitOnError(result);
-
- // Keep handling messages until the last active receive port is closed.
- result = Dart_RunLoop();
- DartExitOnError(result);
}
+
+ // Call _startIsolate in the isolate library to enable dispatching the
+ // initial startup message.
+ const intptr_t kNumIsolateArgs = 2;
+ Dart_Handle isolate_args[kNumIsolateArgs];
+ isolate_args[0] = main_closure; // entryPoint
+ isolate_args[1] = CreateRuntimeOptions(&dart_options); // args
+
+ Dart_Handle isolate_lib = Dart_LookupLibrary(
+ Dart_NewStringFromCString("dart:isolate"));
+ result = Dart_Invoke(isolate_lib,
+ Dart_NewStringFromCString("_startMainIsolate"),
+ kNumIsolateArgs, isolate_args);
+ DartExitOnError(result);
+
+ // Keep handling messages until the last active receive port is closed.
+ result = Dart_RunLoop();
+ DartExitOnError(result);
}
Dart_ExitScope();
diff --git a/runtime/bin/vmservice/loader.dart b/runtime/bin/vmservice/loader.dart
index 1c4ae95..2e04455 100644
--- a/runtime/bin/vmservice/loader.dart
+++ b/runtime/bin/vmservice/loader.dart
@@ -88,6 +88,6 @@
} else if ((uri.scheme == 'data')) {
_loadDataUri(sp, uri);
} else {
- sp.send('Unknown scheme for $uri');
+ sp.send('Unknown scheme (${uri.scheme}) for $uri');
}
-}
\ No newline at end of file
+}
diff --git a/runtime/bin/vmservice_dartium.cc b/runtime/bin/vmservice_dartium.cc
index 725d204..a84365c 100644
--- a/runtime/bin/vmservice_dartium.cc
+++ b/runtime/bin/vmservice_dartium.cc
@@ -67,7 +67,7 @@
// Prepare for script loading by setting up the 'print' and 'timer'
// closures and setting up 'package root' for URI resolution.
- result = DartUtils::PrepareForScriptLoading(NULL, true, builtin_lib);
+ result = DartUtils::PrepareForScriptLoading(NULL, true, false, builtin_lib);
CHECK_RESULT(result);
ASSERT(Dart_IsServiceIsolate(isolate));
diff --git a/runtime/bin/vmservice_impl.cc b/runtime/bin/vmservice_impl.cc
index 4a54291..e830389 100644
--- a/runtime/bin/vmservice_impl.cc
+++ b/runtime/bin/vmservice_impl.cc
@@ -172,7 +172,7 @@
// Prepare for script loading by setting up the 'print' and 'timer'
// closures and setting up 'package root' for URI resolution.
- result = DartUtils::PrepareForScriptLoading(NULL, true, builtin_lib);
+ result = DartUtils::PrepareForScriptLoading(NULL, true, false, builtin_lib);
SHUTDOWN_ON_ERROR(result);
// Load main script.
diff --git a/runtime/dart-runtime.gyp b/runtime/dart-runtime.gyp
index d64b9a9..f9795a8 100644
--- a/runtime/dart-runtime.gyp
+++ b/runtime/dart-runtime.gyp
@@ -15,7 +15,8 @@
'version_in_cc_file': 'vm/version_in.cc',
'version_cc_file': '<(gen_source_dir)/version.cc',
- 'libdart_deps': ['libdart_lib_withcore', 'libdart_lib', 'libdart_vm',
+ 'libdart_deps': ['libdart_lib_nosnapshot', 'libdart_lib',
+ 'libdart_vm_nosnapshot', 'libdart_vm',
'libdouble_conversion',],
},
'targets': [
@@ -93,7 +94,7 @@
'type': 'executable',
'toolsets':['target'],
# The dependencies here are the union of the dependencies of libdart and
- # libdart_withcore.
+ # libdart_nosnapshot.
'dependencies': ['<@(libdart_deps)'],
'sources': [
'vm/libdart_dependency_helper.cc',
@@ -104,7 +105,7 @@
'type': 'executable',
'toolsets':['host'],
# The dependencies here are the union of the dependencies of libdart and
- # libdart_withcore.
+ # libdart_nosnapshot.
'dependencies': ['<@(libdart_deps)'],
'sources': [
'vm/libdart_dependency_helper.cc',
diff --git a/runtime/lib/array_patch.dart b/runtime/lib/array_patch.dart
index 109938b..e422e30 100644
--- a/runtime/lib/array_patch.dart
+++ b/runtime/lib/array_patch.dart
@@ -33,7 +33,7 @@
}
/* patch */ factory List.from(Iterable elements, { bool growable: true }) {
- if (elements is EfficientLength) {
+ if (elements is EfficientLengthIterable) {
int length = elements.length;
var list = growable ? new _GrowableList<E>(length) : new _List<E>(length);
int i = 0;
diff --git a/runtime/lib/collection_patch.dart b/runtime/lib/collection_patch.dart
index 8ed4e91..be2a2dd 100644
--- a/runtime/lib/collection_patch.dart
+++ b/runtime/lib/collection_patch.dart
@@ -432,8 +432,8 @@
_HashMapEntry(this.key, this.value, this.hashCode, this.next);
}
-abstract class _HashMapIterable<E> extends IterableBase<E>
- implements EfficientLength {
+abstract class _HashMapIterable<E> extends Iterable<E>
+ implements EfficientLengthIterable<E> {
final HashMap _map;
_HashMapIterable(this._map);
int get length => _map.length;
@@ -835,8 +835,8 @@
}
}
-class _LinkedHashMapKeyIterable<K> extends IterableBase<K>
- implements EfficientLength {
+class _LinkedHashMapKeyIterable<K> extends Iterable<K>
+ implements EfficientLengthIterable<K> {
LinkedHashMap<K, dynamic> _map;
_LinkedHashMapKeyIterable(this._map);
Iterator<K> get iterator => new _LinkedHashMapKeyIterator<K>(_map);
@@ -847,8 +847,8 @@
Set<K> toSet() => _map._newKeySet()..addAll(this);
}
-class _LinkedHashMapValueIterable<V> extends IterableBase<V>
- implements EfficientLength {
+class _LinkedHashMapValueIterable<V> extends Iterable<V>
+ implements EfficientLengthIterable<V> {
LinkedHashMap<dynamic, V> _map;
_LinkedHashMapValueIterable(this._map);
Iterator<V> get iterator => new _LinkedHashMapValueIterator<V>(_map);
diff --git a/runtime/lib/developer.cc b/runtime/lib/developer.cc
new file mode 100644
index 0000000..786e5de
--- /dev/null
+++ b/runtime/lib/developer.cc
@@ -0,0 +1,40 @@
+// Copyright (c) 2015, 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.
+
+#include "vm/bootstrap_natives.h"
+
+#include "include/dart_api.h"
+
+#include "vm/debugger.h"
+#include "vm/exceptions.h"
+#include "vm/native_entry.h"
+#include "vm/object.h"
+#include "vm/object_store.h"
+#include "vm/service.h"
+
+namespace dart {
+
+// Native implementations for the dart:developer library.
+
+DEFINE_NATIVE_ENTRY(Developer_debugger, 2) {
+ GET_NON_NULL_NATIVE_ARGUMENT(Bool, when, arguments->NativeArgAt(0));
+ GET_NATIVE_ARGUMENT(String, msg, arguments->NativeArgAt(1));
+ Debugger* debugger = isolate->debugger();
+ if (!debugger) {
+ return when.raw();
+ }
+ if (when.value()) {
+ debugger->BreakHere(msg);
+ }
+ return when.raw();
+}
+
+
+DEFINE_NATIVE_ENTRY(Developer_inspect, 1) {
+ GET_NATIVE_ARGUMENT(Instance, inspectee, arguments->NativeArgAt(0));
+ Service::SendInspectEvent(isolate, inspectee);
+ return inspectee.raw();
+}
+
+} // namespace dart
diff --git a/runtime/lib/developer.dart b/runtime/lib/developer.dart
new file mode 100644
index 0000000..689f23e
--- /dev/null
+++ b/runtime/lib/developer.dart
@@ -0,0 +1,7 @@
+// Copyright (c) 2015, 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.
+
+patch bool debugger({bool when: true, String msg}) native "Developer_debugger";
+
+patch inspect(object) native "Developer_inspect";
diff --git a/runtime/lib/developer_sources.gypi b/runtime/lib/developer_sources.gypi
new file mode 100644
index 0000000..4bedb67
--- /dev/null
+++ b/runtime/lib/developer_sources.gypi
@@ -0,0 +1,13 @@
+# Copyright (c) 2015, 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.
+
+# Sources visible via dart:developer library.
+
+{
+ 'sources': [
+ 'developer.cc',
+ 'developer.dart',
+ ],
+}
+
diff --git a/runtime/lib/growable_array.dart b/runtime/lib/growable_array.dart
index bd79837..482e9c0 100644
--- a/runtime/lib/growable_array.dart
+++ b/runtime/lib/growable_array.dart
@@ -157,7 +157,7 @@
(cid == ClassID.cidArray) ||
(cid == ClassID.cidGrowableObjectArray) ||
(cid == ClassID.cidImmutableArray);
- if (isVMList || (iterable is EfficientLength)) {
+ if (isVMList || (iterable is EfficientLengthIterable)) {
var cap = _capacity;
// Pregrow if we know iterable.length.
var iterLen = iterable.length;
diff --git a/runtime/lib/immutable_map.dart b/runtime/lib/immutable_map.dart
index 2377c8c..b4fcbcf 100644
--- a/runtime/lib/immutable_map.dart
+++ b/runtime/lib/immutable_map.dart
@@ -84,8 +84,8 @@
}
}
-class _ImmutableMapKeyIterable<E> extends IterableBase<E>
- implements EfficientLength {
+class _ImmutableMapKeyIterable<E> extends Iterable<E>
+ implements EfficientLengthIterable<E> {
final ImmutableMap _map;
_ImmutableMapKeyIterable(this._map);
@@ -96,8 +96,8 @@
int get length => _map.length;
}
-class _ImmutableMapValueIterable<E> extends IterableBase<E>
- implements EfficientLength {
+class _ImmutableMapValueIterable<E> extends Iterable<E>
+ implements EfficientLengthIterable<E> {
final ImmutableMap _map;
_ImmutableMapValueIterable(this._map);
diff --git a/runtime/lib/object.cc b/runtime/lib/object.cc
index 56a3872..d67dafc 100644
--- a/runtime/lib/object.cc
+++ b/runtime/lib/object.cc
@@ -16,7 +16,6 @@
namespace dart {
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(bool, trace_type_checks);
DECLARE_FLAG(bool, warn_on_javascript_compatibility);
diff --git a/runtime/lib/string_patch.dart b/runtime/lib/string_patch.dart
index 11db8fe..4547fa5 100644
--- a/runtime/lib/string_patch.dart
+++ b/runtime/lib/string_patch.dart
@@ -157,7 +157,7 @@
static String _createStringFromIterable(Iterable<int> charCodes,
int start, int end) {
// Treat charCodes as Iterable.
- if (charCodes is EfficientLength) {
+ if (charCodes is EfficientLengthIterable) {
int length = charCodes.length;
end = RangeError.checkValidRange(start, end, length);
List charCodeList = new List.from(charCodes.take(end).skip(start),
diff --git a/runtime/observatory/lib/service.dart b/runtime/observatory/lib/service.dart
index c1af206..7715717 100644
--- a/runtime/observatory/lib/service.dart
+++ b/runtime/observatory/lib/service.dart
@@ -6,6 +6,7 @@
import 'dart:async';
import 'dart:typed_data';
+import 'dart:math' as math;
import 'package:logging/logging.dart';
import 'package:observatory/cpu_profile.dart';
diff --git a/runtime/observatory/lib/src/app/application.dart b/runtime/observatory/lib/src/app/application.dart
index 3aad424..0f37816 100644
--- a/runtime/observatory/lib/src/app/application.dart
+++ b/runtime/observatory/lib/src/app/application.dart
@@ -107,6 +107,10 @@
notifications.add(event);
break;
+ case ServiceEvent.kInspect:
+ notifications.add(event);
+ break;
+
default:
// Ignore unrecognized events.
Logger.root.severe('Unrecognized event: $event');
diff --git a/runtime/observatory/lib/src/elements/class_view.html b/runtime/observatory/lib/src/elements/class_view.html
index eadd09b..0dddf08 100644
--- a/runtime/observatory/lib/src/elements/class_view.html
+++ b/runtime/observatory/lib/src/elements/class_view.html
@@ -199,18 +199,16 @@
</template>
</div>
- <hr>
-
- <div class="content">
+ <div class="content-centered-big">
+ <hr>
<eval-box callback="{{ eval }}"></eval-box>
+ <hr>
+ <script-inset script="{{ cls.script }}"
+ startPos="{{ cls.tokenPos }}"
+ endPos="{{ cls.endTokenPos }}">
+ </script-inset>
</div>
- <hr>
- <script-inset script="{{ cls.script }}"
- startPos="{{ cls.tokenPos }}"
- endPos="{{ cls.endTokenPos }}">
- </script-inset>
-
<view-footer></view-footer>
</template>
</polymer-element>
diff --git a/runtime/observatory/lib/src/elements/debugger.dart b/runtime/observatory/lib/src/elements/debugger.dart
index 7b8364b..b0efa0f 100644
--- a/runtime/observatory/lib/src/elements/debugger.dart
+++ b/runtime/observatory/lib/src/elements/debugger.dart
@@ -1086,6 +1086,7 @@
case ServiceEvent.kIsolateStart:
case ServiceEvent.kGraph:
case ServiceEvent.kGC:
+ case ServiceEvent.kInspect:
break;
default:
diff --git a/runtime/observatory/lib/src/elements/debugger.html b/runtime/observatory/lib/src/elements/debugger.html
index b2a2b65..e31dda9 100644
--- a/runtime/observatory/lib/src/elements/debugger.html
+++ b/runtime/observatory/lib/src/elements/debugger.html
@@ -250,11 +250,12 @@
<div class="flex-row">
<div class="flex-item-60-percent">
<script-inset height="{{ scriptHeight }}"
- script="{{ frame['function'].script }}"
+ script="{{ frame['function'].script }}"
startPos="{{ frame['function'].tokenPos }}"
endPos="{{ frame['function'].endTokenPos }}"
currentPos="{{ frame['tokenPos'] }}"
- inDebuggerContext="{{ true }}">
+ inDebuggerContext="{{ true }}"
+ variables="{{ frame['vars'] }}">
</script-inset>
</div>
<div class="flex-item-40-percent">
diff --git a/runtime/observatory/lib/src/elements/function_view.html b/runtime/observatory/lib/src/elements/function_view.html
index 8f4eab3..47342f4 100644
--- a/runtime/observatory/lib/src/elements/function_view.html
+++ b/runtime/observatory/lib/src/elements/function_view.html
@@ -96,11 +96,13 @@
</div>
</div>
- <hr>
- <script-inset script="{{ function.script }}"
- startPos="{{ function.tokenPos }}"
- endPos="{{ function.endTokenPos }}">
- </script-inset>
+ <div class="content-centered-big">
+ <hr>
+ <script-inset script="{{ function.script }}"
+ startPos="{{ function.tokenPos }}"
+ endPos="{{ function.endTokenPos }}">
+ </script-inset>
+ </div>
<view-footer></view-footer>
</template>
diff --git a/runtime/observatory/lib/src/elements/nav_bar.html b/runtime/observatory/lib/src/elements/nav_bar.html
index 218b75d..e9c782e 100644
--- a/runtime/observatory/lib/src/elements/nav_bar.html
+++ b/runtime/observatory/lib/src/elements/nav_bar.html
@@ -333,6 +333,13 @@
<a class="boxclose" on-click="{{ closeItem }}">×</a>
</div>
</template>
+ <template if="{{ event.eventType == 'Inspect' }}">
+ <div class="item">
+ Inspect <any-service-ref ref="{{ event.inspectee }}"></any-service-ref>
+ <br><br>
+ <a class="boxclose" on-click="{{ closeItem }}">×</a>
+ </div>
+ </template>
</template>
</polymer-element>
diff --git a/runtime/observatory/lib/src/elements/observatory_element.dart b/runtime/observatory/lib/src/elements/observatory_element.dart
index f516bac..8efc7b5 100644
--- a/runtime/observatory/lib/src/elements/observatory_element.dart
+++ b/runtime/observatory/lib/src/elements/observatory_element.dart
@@ -196,4 +196,35 @@
anchorElement.onClick.listen(onClickGoto);
shadowRoot.children.add(anchorElement);
}
+
+
+ var _onCopySubscription;
+ /// Exclude nodes from being copied, for example the line numbers and
+ /// breakpoint toggles in script insets. Must be called after [root]'s
+ /// children have been added, and only supports one node at a time.
+ void makeCssClassUncopyable(Element root, String className) {
+ var noCopyNodes = root.getElementsByClassName(className);
+ for (var node in noCopyNodes) {
+ node.style.setProperty('-moz-user-select', 'none');
+ node.style.setProperty('-khtml-user-select', 'none');
+ node.style.setProperty('-webkit-user-select', 'none');
+ node.style.setProperty('-ms-user-select', 'none');
+ node.style.setProperty('user-select', 'none');
+ }
+ if (_onCopySubscription != null) {
+ _onCopySubscription.cancel();
+ }
+ _onCopySubscription = root.onCopy.listen((event) {
+ // Mark the nodes as hidden before the copy happens, then mark them as
+ // visible on the next event loop turn.
+ for (var node in noCopyNodes) {
+ node.style.visibility = 'hidden';
+ }
+ Timer.run(() {
+ for (var node in noCopyNodes) {
+ node.style.visibility = 'visible';
+ }
+ });
+ });
+ }
}
diff --git a/runtime/observatory/lib/src/elements/script_inset.dart b/runtime/observatory/lib/src/elements/script_inset.dart
index 1c158c0..f2610bc 100644
--- a/runtime/observatory/lib/src/elements/script_inset.dart
+++ b/runtime/observatory/lib/src/elements/script_inset.dart
@@ -9,6 +9,7 @@
import 'observatory_element.dart';
import 'service_ref.dart';
import 'package:observatory/service.dart';
+import 'package:observatory/utils.dart';
import 'package:polymer/polymer.dart';
const nbsp = "\u00A0";
@@ -95,6 +96,24 @@
}
}
+class LocalVariableAnnotation extends Annotation {
+ final value;
+
+ LocalVariableAnnotation(LocalVarLocation location, this.value) {
+ line = location.line;
+ columnStart = location.column;
+ columnStop = location.endColumn;
+ }
+
+ void applyStyleTo(element) {
+ if (element == null) {
+ return; // TODO(rmacnak): Handling overlapping annotations.
+ }
+ element.style.fontWeight = "bold";
+ element.title = "${value.shortName}";
+ }
+}
+
class CallSiteAnnotation extends Annotation {
CallSite callSite;
@@ -219,6 +238,7 @@
@published int startPos;
@published int endPos;
@published bool inDebuggerContext = false;
+ @published ObservableList variables;
int _currentLine;
int _currentCol;
@@ -251,20 +271,24 @@
}
void currentPosChanged(oldValue) {
- update();
+ _updateTask.queue();
_scrollToCurrentPos();
}
void startPosChanged(oldValue) {
- update();
+ _updateTask.queue();
}
void endPosChanged(oldValue) {
- update();
+ _updateTask.queue();
}
void scriptChanged(oldValue) {
- update();
+ _updateTask.queue();
+ }
+
+ void variablesChanged(oldValue) {
+ _updateTask.queue();
}
Element a(String text) => new AnchorElement()..text = text;
@@ -288,7 +312,9 @@
Element container;
+ Task _updateTask;
void update() {
+ assert(_updateTask != null);
if (script == null) {
// We may have previously had a script.
if (container != null) {
@@ -315,6 +341,7 @@
}
container.children.clear();
container.children.add(table);
+ makeCssClassUncopyable(table, "noCopy");
}
void loadFunctionsOf(Library lib) {
@@ -376,6 +403,22 @@
}
}
+ // We have local variable information.
+ if (variables != null) {
+ // For each variable.
+ for (var variable in variables) {
+ // Find variable usage locations.
+ var locations = script.scanForLocalVariableLocations(
+ variable['name'], variable['tokenPos'], variable['endTokenPos']);
+
+ // Annotate locations.
+ for (var location in locations) {
+ annotations.add(new LocalVariableAnnotation(location,
+ variable['value']));
+ }
+ }
+ }
+
annotations.sort();
}
@@ -449,25 +492,25 @@
var busy = false;
if (line == null || !line.possibleBpt) {
e.classes.add("emptyBreakpoint");
+ e.classes.add('noCopy');
e.text = nbsp;
return e;
}
e.text = 'B';
update() {
+ e.classes.clear();
+ e.classes.add('noCopy');
+
if (busy) {
- e.classes.clear();
e.classes.add("busyBreakpoint");
} else {
if (line.breakpoints != null) {
if (line.breakpointResolved) {
- e.classes.clear();
e.classes.add("resolvedBreakpoint");
} else {
- e.classes.clear();
e.classes.add("unresolvedBreakpoint");
}
} else {
- e.classes.clear();
e.classes.add("possibleBreakpoint");
}
}
@@ -504,6 +547,7 @@
Element lineNumberElement(ScriptLine line) {
var lineNumber = line == null ? "..." : line.line;
var e = span("$nbsp$lineNumber$nbsp");
+ e.classes.add('noCopy');
if ((line == null) || (line.hits == null)) {
hitsUnknown(e);
@@ -553,8 +597,14 @@
consumeUntil(line.text.length);
}
+ // So blank lines are included when copying script to the clipboard.
+ e.append(span('\n'));
+
return e;
}
- ScriptInsetElement.created() : super.created();
+ ScriptInsetElement.created()
+ : super.created() {
+ _updateTask = new Task(update);
+ }
}
diff --git a/runtime/observatory/lib/src/elements/script_inset.html b/runtime/observatory/lib/src/elements/script_inset.html
index 313a84f..7fdbcbf 100644
--- a/runtime/observatory/lib/src/elements/script_inset.html
+++ b/runtime/observatory/lib/src/elements/script_inset.html
@@ -7,50 +7,51 @@
.sourceInset {
}
.sourceTable {
- display: table;
- background-color: #f5f5f5;
- border: 1px solid #ccc;
- padding: 10px;
- overflow-y: auto;
- width: 100%;
- box-sizing: border-box;
+ display: table;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ padding: 10px;
+ width: 100%;
+ box-sizing: border-box;
}
.sourceRow {
- display: table-row;
+ display: table-row;
}
.sourceItem, .sourceItemCurrent {
- display: table-cell;
- vertical-align: top;
- font: 400 14px consolas, courier, monospace;
- line-height: 125%;
- white-space: pre;
+ display: table-cell;
+ vertical-align: top;
+ font: 400 14px consolas, courier, monospace;
+ line-height: 125%;
+ white-space: pre;
+ max-width: 0;
+ overflow-x: hidden;
}
.currentLine {
- background-color: #fff;
+ background-color: #fff;
}
.currentCol {
- background-color: #6cf;
+ background-color: #6cf;
}
.hitsNone, .hitsNotExecuted, .hitsExecuted {
- display: table-cell;
- vertical-align: top;
- font: 400 14px consolas, courier, monospace;
- min-width: 32px;
- text-align: right;
- color: #a8a8a8;
+ display: table-cell;
+ vertical-align: top;
+ font: 400 14px consolas, courier, monospace;
+ width: 4em;
+ text-align: right;
+ color: #a8a8a8;
}
.hitsNotExecuted {
- background-color: #EEA7A7;
+ background-color: #EEA7A7;
}
.hitsExecuted {
- background-color: #9BDD9B;
+ background-color: #9BDD9B;
}
-
+ .noCopy {}
.emptyBreakpoint, .possibleBreakpoint, .busyBreakpoint, .unresolvedBreakpoint, .resolvedBreakpoint {
display: table-cell;
vertical-align: top;
font: 400 14px consolas, courier, monospace;
- min-width: 1em;
+ width: 1em;
text-align: center;
cursor: pointer;
}
diff --git a/runtime/observatory/lib/src/elements/script_view.html b/runtime/observatory/lib/src/elements/script_view.html
index a4aa02d..575a1ce 100644
--- a/runtime/observatory/lib/src/elements/script_view.html
+++ b/runtime/observatory/lib/src/elements/script_view.html
@@ -17,18 +17,13 @@
<nav-refresh callback="{{ refresh }}"></nav-refresh>
</nav-bar>
- <template if="{{ app.locationManager.internalArguments['pos'] == null }}">
- <script-inset id="scriptInset" script="{{ script }}">
- <h1>script {{ script.name }}</h1>
- </script-inset>
- </template>
-
- <template if="{{ app.locationManager.internalArguments['pos'] != null }}">
+ <div class="content-centered-big">
+ <h1>script {{ script.name }}</h1>
+ <hr>
<script-inset id="scriptInset" script="{{ script }}"
currentPos="{{ app.locationManager.internalArguments['pos'] | parseInt }}">
- <h1>script {{ script.name }}</h1>
</script-inset>
- </template>
+ </div>
<view-footer></view-footer>
</template>
diff --git a/runtime/observatory/lib/src/elements/view_footer.html b/runtime/observatory/lib/src/elements/view_footer.html
index f5816d5..aa82cca 100644
--- a/runtime/observatory/lib/src/elements/view_footer.html
+++ b/runtime/observatory/lib/src/elements/view_footer.html
@@ -5,16 +5,18 @@
<template><link rel="stylesheet" href="css/shared.css">
<br><br><br><br>
<br><br><br><br>
- <p align="right">
- <a href="https://www.dartlang.org/tools/observatory/">
+ <div align="right" style="padding: 1em">
+ <p>
+ <a href="https://www.dartlang.org/tools/observatory/" style="font-size:90%">
View documentation
</a>
</p>
- <p align="right">
- <a href="https://code.google.com/p/dart/issues/entry?template=Observatory">
+ <p>
+ <a href="https://code.google.com/p/dart/issues/entry?template=Observatory" style="font-size:90%">
File a bug report
</a>
</p>
+ </div>
</template>
</polymer-element>
diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart
index 44d7d65..fb119f8 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -1067,6 +1067,7 @@
switch(event.eventType) {
case ServiceEvent.kIsolateStart:
case ServiceEvent.kIsolateExit:
+ case ServiceEvent.kInspect:
// Handled elsewhere.
break;
@@ -1455,6 +1456,7 @@
static const kBreakpointRemoved = 'BreakpointRemoved';
static const kGraph = '_Graph';
static const kGC = 'GC';
+ static const kInspect = 'Inspect';
static const kConnectionClosed = 'ConnectionClosed';
ServiceEvent._empty(ServiceObjectOwner owner) : super._empty(owner);
@@ -1467,6 +1469,7 @@
@observable Breakpoint breakpoint;
@observable ServiceMap topFrame;
@observable ServiceMap exception;
+ @observable ServiceObject inspectee;
@observable ByteData data;
@observable int count;
@observable String reason;
@@ -1487,6 +1490,9 @@
if (map['exception'] != null) {
exception = map['exception'];
}
+ if (map['inspectee'] != null) {
+ inspectee = map['inspectee'];
+ }
if (map['_data'] != null) {
data = map['_data'];
}
@@ -1824,7 +1830,15 @@
_loaded = true;
}
- String get shortName => valueAsString != null ? valueAsString : 'a ${clazz.name}';
+ String get shortName {
+ if (isClosure) {
+ return closureFunc.qualifiedName;
+ }
+ if (valueAsString != null) {
+ return valueAsString;
+ }
+ return 'a ${clazz.name}';
+ }
String toString() => 'Instance($shortName)';
}
@@ -2062,6 +2076,8 @@
}
bool _isBlank;
+ bool get isTrivialLine => !possibleBpt;
+
static bool _isTrivialToken(String token) {
if (token == 'else') {
return true;
@@ -2082,6 +2098,9 @@
}
static bool _isTrivialLine(String text) {
+ if (text.trimLeft().startsWith('//')) {
+ return true;
+ }
var wsTokens = text.split(new RegExp(r"(\s)+"));
for (var wsToken in wsTokens) {
var tokens = wsToken.split(new RegExp(r"(\b)"));
@@ -2169,6 +2188,14 @@
String toString() => "CallSiteEntry(${receiverContainer.name}, $count)";
}
+/// The location of a local variable reference in a script.
+class LocalVarLocation {
+ final int line;
+ final int column;
+ final int endColumn;
+ LocalVarLocation(this.line, this.column, this.endColumn);
+}
+
class Script extends ServiceObject with Coverage {
Set<CallSite> callSites = new Set<CallSite>();
final lines = new ObservableList<ScriptLine>();
@@ -2325,6 +2352,120 @@
getLine(line).removeBreakpoint(bpt);
}
}
+
+ List<LocalVarLocation> scanLineForLocalVariableLocations(Pattern pattern,
+ String name,
+ String lineContents,
+ int lineNumber,
+ int columnOffset) {
+ var r = <LocalVarLocation>[];
+
+ pattern.allMatches(lineContents).forEach((Match match) {
+ // We have a match but our regular expression may have matched extra
+ // characters on either side of the name. Tighten the location.
+ var nameStart = match.input.indexOf(name, match.start);
+ var column = nameStart + columnOffset;
+ var endColumn = column + name.length;
+ var localVarLocation = new LocalVarLocation(lineNumber,
+ column,
+ endColumn);
+ r.add(localVarLocation);
+ });
+
+ return r;
+ }
+
+ List<LocalVarLocation> scanForLocalVariableLocations(String name,
+ int tokenPos,
+ int endTokenPos) {
+ // A pattern that matches:
+ // start of line OR non-(alpha numeric OR period) character followed by
+ // name followed by
+ // a non-alpha numerc character.
+ //
+ // NOTE: This pattern can over match on both ends. This is corrected for
+ // [scanLineForLocalVariableLocationse].
+ var pattern = new RegExp("(^|[^A-Za-z0-9\.])$name[^A-Za-z0-9]");
+
+ // Result.
+ var r = <LocalVarLocation>[];
+
+ // Limits.
+ final lastLine = tokenToLine(endTokenPos);
+ if (lastLine == null) {
+ return r;
+ }
+
+ final lastColumn = tokenToCol(endTokenPos);
+ if (lastColumn == null) {
+ return r;
+ }
+ // Current scan position.
+ var line = tokenToLine(tokenPos);
+ if (line == null) {
+ return r;
+ }
+ var column = tokenToCol(tokenPos);
+ if (column == null) {
+ return r;
+ }
+
+ // Move back by name length.
+ // TODO(johnmccutchan): Fix LocalVarDescriptor to set column before the
+ // identifier name.
+ column = math.max(0, column - name.length);
+
+ var lineContents;
+
+ if (line == lastLine) {
+ // Only one line.
+ if (!getLine(line).isTrivialLine) {
+ lineContents = getLine(line).text.substring(column, lastColumn - 1);
+ return scanLineForLocalVariableLocations(pattern,
+ name,
+ lineContents,
+ line,
+ column);
+ }
+ }
+
+ // Scan first line.
+ if (!getLine(line).isTrivialLine) {
+ lineContents = getLine(line).text.substring(column);
+ r.addAll(scanLineForLocalVariableLocations(pattern,
+ name,
+ lineContents,
+ line++,
+ column));
+ }
+
+ // Scan middle lines.
+ while (line < (lastLine - 1)) {
+ if (getLine(line).isTrivialLine) {
+ line++;
+ continue;
+ }
+ lineContents = getLine(line).text;
+ r.addAll(
+ scanLineForLocalVariableLocations(pattern,
+ name,
+ lineContents,
+ line++,
+ 0));
+ }
+
+ // Scan last line.
+ if (!getLine(line).isTrivialLine) {
+ lineContents = getLine(line).text.substring(0, lastColumn - 1);
+ r.addAll(
+ scanLineForLocalVariableLocations(pattern,
+ name,
+ lineContents,
+ line,
+ 0));
+ }
+ return r;
+ }
}
class PcDescriptor extends Observable {
diff --git a/runtime/observatory/lib/utils.dart b/runtime/observatory/lib/utils.dart
index 522a11e..c696529 100644
--- a/runtime/observatory/lib/utils.dart
+++ b/runtime/observatory/lib/utils.dart
@@ -4,6 +4,7 @@
library utils;
+import 'dart:async';
import 'dart:math';
class Utils {
@@ -140,3 +141,24 @@
static bool runningInJavaScript() => identical(1.0, 1);
}
+
+/// A [Task] that can be scheduled on the Dart event queue.
+class Task {
+ Timer _timer;
+ final Function callback;
+
+ Task(this.callback);
+
+ /// Queue [this] to run on the next Dart event queue pump. Does nothing
+ /// if [this] is already queued.
+ queue() {
+ if (_timer != null) {
+ // Already scheduled.
+ return;
+ }
+ _timer = new Timer(Duration.ZERO, () {
+ _timer = null;
+ callback();
+ });
+ }
+}
diff --git a/runtime/observatory/maintainers/pubspec.template b/runtime/observatory/maintainers/pubspec.template
index c6b306c..daed864 100644
--- a/runtime/observatory/maintainers/pubspec.template
+++ b/runtime/observatory/maintainers/pubspec.template
@@ -12,6 +12,7 @@
commandLineOptions: [--show-package-warnings]
dependencies:
args: any
+ charted: any
polymer: any
- unittest: any
+ unittest: < 0.12.0
usage: any
diff --git a/runtime/observatory/observatory.gypi b/runtime/observatory/observatory.gypi
index a53185f..156caad 100644
--- a/runtime/observatory/observatory.gypi
+++ b/runtime/observatory/observatory.gypi
@@ -63,7 +63,7 @@
],
'outputs': [
'<(PRODUCT_DIR)/observatory/build/web/index.html',
- '<(PRODUCT_DIR)/observatory/build/web/index.html_bootstrap.dart.js',
+ '<(PRODUCT_DIR)/observatory/build/web/index.html.polymer.bootstrap.dart.js',
],
'action': [
'python',
@@ -81,11 +81,11 @@
'inputs': [
'../../tools/observatory_tool.py',
'<(PRODUCT_DIR)/observatory/build/web/index.html',
- '<(PRODUCT_DIR)/observatory/build/web/index.html_bootstrap.dart.js',
+ '<(PRODUCT_DIR)/observatory/build/web/index.html.polymer.bootstrap.dart.js',
],
'outputs': [
'<(PRODUCT_DIR)/observatory/deployed/web/index.html',
- '<(PRODUCT_DIR)/observatory/deployed/web/index.html_bootstrap.dart.js',
+ '<(PRODUCT_DIR)/observatory/deployed/web/index.html.polymer.bootstrap.dart.js',
],
'action': [
'python',
diff --git a/runtime/observatory/pubspec.yaml b/runtime/observatory/pubspec.yaml
index ccdc3f7..294aa1d 100644
--- a/runtime/observatory/pubspec.yaml
+++ b/runtime/observatory/pubspec.yaml
@@ -7,13 +7,14 @@
inline_stylesheets:
lib/src/elements/css/shared.css: false
- $dart2js:
+ $include: "**/*.polymer.bootstrap.dart"
suppressWarnings: false
- $exclude: web/main.dart
commandLineOptions: [--show-package-warnings]
dependencies:
args: any
+ charted: any
polymer: any
- unittest: any
+ unittest: < 0.12.0
usage: any
dependency_overrides:
analyzer:
@@ -24,6 +25,8 @@
path: ../../third_party/observatory_pub_packages/barback
browser:
path: ../../third_party/observatory_pub_packages/browser
+ charted:
+ path: ../../third_party/observatory_pub_packages/charted
cli_util:
path: ../../third_party/observatory_pub_packages/cli_util
code_transformers:
@@ -36,10 +39,12 @@
path: ../../third_party/observatory_pub_packages/dart_style
glob:
path: ../../third_party/observatory_pub_packages/glob
- html5lib:
- path: ../../third_party/observatory_pub_packages/html5lib
+ html:
+ path: ../../third_party/observatory_pub_packages/html
initialize:
path: ../../third_party/observatory_pub_packages/initialize
+ intl:
+ path: ../../third_party/observatory_pub_packages/intl
logging:
path: ../../third_party/observatory_pub_packages/logging
matcher:
@@ -48,12 +53,18 @@
path: ../../third_party/observatory_pub_packages/observe
path:
path: ../../third_party/observatory_pub_packages/path
+ petitparser:
+ path: ../../third_party/observatory_pub_packages/petitparser
polymer:
path: ../../third_party/observatory_pub_packages/polymer
polymer_expressions:
path: ../../third_party/observatory_pub_packages/polymer_expressions
+ polymer_interop:
+ path: ../../third_party/observatory_pub_packages/polymer_interop
pool:
path: ../../third_party/observatory_pub_packages/pool
+ quiver:
+ path: ../../third_party/observatory_pub_packages/quiver
smoke:
path: ../../third_party/observatory_pub_packages/smoke
source_maps:
diff --git a/runtime/observatory/tests/service/debugger_inspect_test.dart b/runtime/observatory/tests/service/debugger_inspect_test.dart
new file mode 100644
index 0000000..5960665
--- /dev/null
+++ b/runtime/observatory/tests/service/debugger_inspect_test.dart
@@ -0,0 +1,43 @@
+// Copyright (c) 2015, 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.
+// VMOptions=--compile-all --error_on_bad_type --error_on_bad_override
+
+import 'package:observatory/service_io.dart';
+import 'package:unittest/unittest.dart';
+import 'test_helper.dart';
+import 'dart:async';
+import 'dart:developer';
+
+class Point {
+ int x, y;
+ Point(this.x, this.y);
+}
+
+void testeeDo() {
+ inspect(new Point(3, 4));
+}
+
+var tests = [
+
+(Isolate isolate) async {
+ Completer completer = new Completer();
+ var subscription;
+ subscription = isolate.vm.events.stream.listen((ServiceEvent event) {
+ print(event);
+ if (event.eventType == ServiceEvent.kInspect) {
+ expect((event.inspectee as Instance).clazz.name, equals('Point'));
+
+ subscription.cancel();
+ completer.complete();
+ }
+ });
+
+ // Start listening for events first.
+ await isolate.eval(isolate.rootLib, 'testeeDo();');
+ return completer.future;
+},
+
+];
+
+main(args) => runIsolateTests(args, tests);
diff --git a/runtime/observatory/tests/service/get_stack_rpc_test.dart b/runtime/observatory/tests/service/get_stack_rpc_test.dart
index e503527..7c253aa 100644
--- a/runtime/observatory/tests/service/get_stack_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_stack_rpc_test.dart
@@ -8,19 +8,18 @@
import 'test_helper.dart';
import 'dart:async';
import 'dart:isolate' as isolate;
+import 'dart:developer' as developer;
int counter = 0;
const stoppedAtLine = 23;
var port = new isolate.RawReceivePort(msgHandler);
// This name is used in a test below.
-void msgHandler(_) {
-}
+void msgHandler(_) { }
void periodicTask(_) {
- counter++;
port.sendPort.send(34);
- counter++; // Line 23. We set our breakpoint here.
+ developer.debugger(msg: "foo", when: true); // We will be at the next line.
counter++;
if (counter % 300 == 0) {
print('counter = $counter');
@@ -33,34 +32,14 @@
var tests = [
-// Add breakpoint
+// Initial data fetch and verify we've hit the breakpoint.
(Isolate isolate) async {
await isolate.rootLib.load();
-
- // Set up a listener to wait for breakpoint events.
- Completer completer = new Completer();
- var subscription;
- subscription = isolate.vm.events.stream.listen((ServiceEvent event) {
- if (event.eventType == ServiceEvent.kPauseBreakpoint) {
- print('Breakpoint reached');
- subscription.cancel();
- completer.complete();
- }
- });
-
var script = isolate.rootLib.scripts[0];
await script.load();
-
- // Add the breakpoint.
- var result = await isolate.addBreakpoint(script, stoppedAtLine);
- expect(result is Breakpoint, isTrue);
- Breakpoint bpt = result;
- expect(bpt.type, equals('Breakpoint'));
- expect(bpt.script.id, equals(script.id));
- expect(bpt.script.tokenToLine(bpt.tokenPos), equals(stoppedAtLine));
- expect(isolate.breakpoints.length, equals(1));
-
- await completer.future; // Wait for breakpoint events.
+ await hasStoppedAtBreakpoint(isolate);
+ // Sanity check.
+ expect(isolate.pauseEvent.eventType, equals(ServiceEvent.kPauseBreakpoint));
},
// Get stack
diff --git a/runtime/observatory/tests/service/service.status b/runtime/observatory/tests/service/service.status
index 415f062..ce688fb 100644
--- a/runtime/observatory/tests/service/service.status
+++ b/runtime/observatory/tests/service/service.status
@@ -26,11 +26,6 @@
[ $arch == simarm || $arch == simmips || $arch == simarm64]
*: SkipSlow
-# The transformations of dart2dart are not guaranteed to preserve the
-# state/properties of the VM that the Observatory tests are inspecting.
-[ $compiler == dart2dart ]
-*: Skip
-
# All tests use dart:io
[ $browser || $compiler == dart2js ]
*: SkipByDesign
diff --git a/runtime/observatory/tests/service/test_helper.dart b/runtime/observatory/tests/service/test_helper.dart
index 5fd2344..fd63933 100644
--- a/runtime/observatory/tests/service/test_helper.dart
+++ b/runtime/observatory/tests/service/test_helper.dart
@@ -151,6 +151,28 @@
}
+Future<Isolate> hasStoppedAtBreakpoint(Isolate isolate) {
+ if ((isolate.pauseEvent != null) &&
+ (isolate.pauseEvent.eventType == ServiceEvent.kPauseBreakpoint)) {
+ // Already waiting at a breakpoint.
+ print('Breakpoint reached');
+ return new Future.value(isolate);
+ }
+
+ // Set up a listener to wait for breakpoint events.
+ Completer completer = new Completer();
+ var subscription;
+ subscription = isolate.vm.events.stream.listen((ServiceEvent event) {
+ if (event.eventType == ServiceEvent.kPauseBreakpoint) {
+ print('Breakpoint reached');
+ subscription.cancel();
+ completer.complete(isolate);
+ }
+ });
+
+ return completer.future; // Will complete when breakpoint hit.
+}
+
/// Runs [tests] in sequence, each of which should take an [Isolate] and
/// return a [Future]. Code for setting up state can run before and/or
/// concurrently with the tests. Uses [mainArgs] to determine whether
diff --git a/runtime/observatory/web/main.dart b/runtime/observatory/web/main.dart
index 09ad356..8e316d9 100644
--- a/runtime/observatory/web/main.dart
+++ b/runtime/observatory/web/main.dart
@@ -21,7 +21,7 @@
Logger.root.info('Starting Observatory');
GoogleChart.initOnce().then((_) {
// Charts loaded, initialize polymer.
- initPolymer().run(() {
+ initPolymer().then((zone) {
Logger.root.info('Polymer initialized');
// Code here is in the polymer Zone, which ensures that
// @observable properties work correctly.
diff --git a/runtime/tests/vm/vm.status b/runtime/tests/vm/vm.status
index e04f9c2..52f40f1 100644
--- a/runtime/tests/vm/vm.status
+++ b/runtime/tests/vm/vm.status
@@ -69,21 +69,12 @@
# Data uri's not supported by dart2js or the analyzer.
dart/data_uri*test: Skip
-[ $compiler == dart2js && $cps_ir ]
-dart/error_stacktrace_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-dart/inline_stack_frame_test: Crash # (throw new ExpectException(message)): Unhandled node
-dart/optimized_stacktrace_test: Crash # (throw new ExpectException(message)): Unhandled node
-
[ $runtime == vm ]
dart/data_uri_failures_test/wrongmime: RuntimeError, OK # VM is more restrictive than the browser
dart/data_uri_failures_test/nomime: RuntimeError, OK
dart/data_uri_failures_test/nocharset: RuntimeError, OK
dart/data_uri_failures_test/base64: RuntimeError, OK
-[ $compiler == dart2dart ]
-# Skip until we stabilize language tests.
-*: Skip
-
[ $arch == mips ]
cc/StaticNonNullSumCallCodegen: Crash, Pass # Issue 17440
cc/ArrayLengthMaxElements: Crash # Issue 23275
@@ -99,3 +90,6 @@
[ $runtime == vm && $mode == debug && $builder_tag == asan ]
cc/Dart2JSCompileAll: Skip # Timeout.
+
+[ $compiler == dart2js && $cps_ir ]
+dart/error_stacktrace_test: RuntimeError # Please triage this failure.
diff --git a/runtime/vm/BUILD.gn b/runtime/vm/BUILD.gn
index bbb204c..27189b0 100644
--- a/runtime/vm/BUILD.gn
+++ b/runtime/vm/BUILD.gn
@@ -8,10 +8,11 @@
]
if (!is_android) {
- libs += [
- "pthread",
- "rt",
- ]
+ libs += [ "pthread" ]
+
+ if (is_linux) {
+ libs += [ "rt" ]
+ }
}
}
@@ -171,12 +172,13 @@
["core", "core"],
["collection", "collection"],
["convert", "convert"],
+ ["debugger", "debugger"],
["_internal", "internal"],
["isolate", "isolate"],
["math", "math"],
["mirrors", "mirrors"],
- ["typed_data", "typed_data"],
["profiler", "profiler"],
+ ["typed_data", "typed_data"],
]
}
diff --git a/runtime/vm/assembler_arm64.h b/runtime/vm/assembler_arm64.h
index 90334b9..7876345 100644
--- a/runtime/vm/assembler_arm64.h
+++ b/runtime/vm/assembler_arm64.h
@@ -660,6 +660,11 @@
EmitLogicalShiftOp(BICS, rd, rn, o, kDoubleWord);
}
+ // Count leading zero bits.
+ void clz(Register rd, Register rn) {
+ EmitMiscDP1Source(CLZ, rd, rn, kDoubleWord);
+ }
+
// Misc. arithmetic.
void udiv(Register rd, Register rn, Register rm) {
EmitMiscDP2Source(UDIV, rd, rn, rm, kDoubleWord);
@@ -1782,6 +1787,21 @@
Emit(encoding);
}
+ void EmitMiscDP1Source(MiscDP1SourceOp op,
+ Register rd, Register rn,
+ OperandSize sz) {
+ ASSERT((rd != CSP) && (rn != CSP));
+ ASSERT((sz == kDoubleWord) || (sz == kWord) || (sz == kUnsignedWord));
+ const Register crd = ConcreteRegister(rd);
+ const Register crn = ConcreteRegister(rn);
+ const int32_t size = (sz == kDoubleWord) ? B31 : 0;
+ const int32_t encoding =
+ op | size |
+ (static_cast<int32_t>(crd) << kRdShift) |
+ (static_cast<int32_t>(crn) << kRnShift);
+ Emit(encoding);
+ }
+
void EmitMiscDP2Source(MiscDP2SourceOp op,
Register rd, Register rn, Register rm,
OperandSize sz) {
diff --git a/runtime/vm/assembler_arm64_test.cc b/runtime/vm/assembler_arm64_test.cc
index fe7f15d..a23abd3 100644
--- a/runtime/vm/assembler_arm64_test.cc
+++ b/runtime/vm/assembler_arm64_test.cc
@@ -723,6 +723,38 @@
}
+ASSEMBLER_TEST_GENERATE(Clz, assembler) {
+ Label error;
+
+ __ clz(R1, ZR);
+ __ cmp(R1, Operand(64));
+ __ b(&error, NE);
+ __ LoadImmediate(R2, 42, kNoPP);
+ __ clz(R2, R2);
+ __ cmp(R2, Operand(58));
+ __ b(&error, NE);
+ __ LoadImmediate(R0, -1, kNoPP);
+ __ clz(R1, R0);
+ __ cmp(R1, Operand(0));
+ __ b(&error, NE);
+ __ add(R0, ZR, Operand(R0, LSR, 3));
+ __ clz(R1, R0);
+ __ cmp(R1, Operand(3));
+ __ b(&error, NE);
+ __ mov(R0, ZR);
+ __ ret();
+ __ Bind(&error);
+ __ LoadImmediate(R0, 1, kNoPP);
+ __ ret();
+}
+
+
+ASSEMBLER_TEST_RUN(Clz, test) {
+ typedef int64_t (*Int64Return)() DART_UNUSED;
+ EXPECT_EQ(0, EXECUTE_TEST_CODE_INT64(Int64Return, test->entry()));
+}
+
+
// Comparisons, branching.
ASSEMBLER_TEST_GENERATE(BranchALForward, assembler) {
Label l;
diff --git a/runtime/vm/ast.cc b/runtime/vm/ast.cc
index b66ad44..613b46c 100644
--- a/runtime/vm/ast.cc
+++ b/runtime/vm/ast.cc
@@ -12,8 +12,6 @@
namespace dart {
-DECLARE_FLAG(bool, enable_type_checks);
-
#define DEFINE_VISIT_FUNCTION(BaseName) \
void BaseName##Node::Visit(AstNodeVisitor* visitor) { \
visitor->Visit##BaseName##Node(this); \
diff --git a/runtime/vm/benchmark_test.cc b/runtime/vm/benchmark_test.cc
index 1ac1186..eb5f16d 100644
--- a/runtime/vm/benchmark_test.cc
+++ b/runtime/vm/benchmark_test.cc
@@ -280,7 +280,7 @@
const char* path_separator = File::PathSeparator();
OS::SNPrint(buffer, 2048, packages_path,
executable_path, path_separator, path_separator);
- bin::DartUtils::PrepareForScriptLoading(buffer, false, builtin_lib);
+ bin::DartUtils::PrepareForScriptLoading(buffer, false, false, builtin_lib);
}
BENCHMARK(Dart2JSCompileAll) {
diff --git a/runtime/vm/bootstrap.cc b/runtime/vm/bootstrap.cc
index b66e18c..c76ea3a 100644
--- a/runtime/vm/bootstrap.cc
+++ b/runtime/vm/bootstrap.cc
@@ -47,6 +47,10 @@
collection,
Bootstrap::collection_source_paths_,
Bootstrap::collection_patch_paths_),
+ INIT_LIBRARY(ObjectStore::kDeveloper,
+ developer,
+ Bootstrap::developer_source_paths_,
+ Bootstrap::developer_patch_paths_),
INIT_LIBRARY(ObjectStore::kInternal,
_internal,
Bootstrap::_internal_source_paths_,
@@ -63,16 +67,14 @@
mirrors,
Bootstrap::mirrors_source_paths_,
Bootstrap::mirrors_patch_paths_),
- INIT_LIBRARY(ObjectStore::kTypedData,
- typed_data,
- Bootstrap::typed_data_source_paths_,
- Bootstrap::typed_data_patch_paths_),
-
INIT_LIBRARY(ObjectStore::kProfiler,
profiler,
Bootstrap::profiler_source_paths_,
Bootstrap::profiler_patch_paths_),
-
+ INIT_LIBRARY(ObjectStore::kTypedData,
+ typed_data,
+ Bootstrap::typed_data_source_paths_,
+ Bootstrap::typed_data_patch_paths_),
{ ObjectStore::kNone, NULL, NULL, NULL, NULL }
};
diff --git a/runtime/vm/bootstrap.h b/runtime/vm/bootstrap.h
index 3419828..76758b6 100644
--- a/runtime/vm/bootstrap.h
+++ b/runtime/vm/bootstrap.h
@@ -24,13 +24,14 @@
static const char* core_source_paths_[];
static const char* collection_source_paths_[];
static const char* convert_source_paths_[];
+ static const char* developer_source_paths_[];
static const char* _internal_source_paths_[];
static const char* isolate_source_paths_[];
static const char* json_source_paths_[];
static const char* math_source_paths_[];
static const char* mirrors_source_paths_[];
- static const char* typed_data_source_paths_[];
static const char* profiler_source_paths_[];
+ static const char* typed_data_source_paths_[];
static const char* utf_source_paths_[];
// Source path mapping for patch URI and 'parts'.
@@ -38,12 +39,13 @@
static const char* core_patch_paths_[];
static const char* collection_patch_paths_[];
static const char* convert_patch_paths_[];
+ static const char* developer_patch_paths_[];
static const char* _internal_patch_paths_[];
static const char* isolate_patch_paths_[];
static const char* math_patch_paths_[];
static const char* mirrors_patch_paths_[];
- static const char* typed_data_patch_paths_[];
static const char* profiler_patch_paths_[];
+ static const char* typed_data_patch_paths_[];
};
} // namespace dart
diff --git a/runtime/vm/bootstrap_natives.cc b/runtime/vm/bootstrap_natives.cc
index 7167252..07c4928 100644
--- a/runtime/vm/bootstrap_natives.cc
+++ b/runtime/vm/bootstrap_natives.cc
@@ -95,12 +95,7 @@
library.set_native_entry_resolver(resolver);
library.set_native_entry_symbol_resolver(symbol_resolver);
- library = Library::MathLibrary();
- ASSERT(!library.IsNull());
- library.set_native_entry_resolver(resolver);
- library.set_native_entry_symbol_resolver(symbol_resolver);
-
- library = Library::MirrorsLibrary();
+ library = Library::DeveloperLibrary();
ASSERT(!library.IsNull());
library.set_native_entry_resolver(resolver);
library.set_native_entry_symbol_resolver(symbol_resolver);
@@ -115,7 +110,12 @@
library.set_native_entry_resolver(resolver);
library.set_native_entry_symbol_resolver(symbol_resolver);
- library = Library::TypedDataLibrary();
+ library = Library::MathLibrary();
+ ASSERT(!library.IsNull());
+ library.set_native_entry_resolver(resolver);
+ library.set_native_entry_symbol_resolver(symbol_resolver);
+
+ library = Library::MirrorsLibrary();
ASSERT(!library.IsNull());
library.set_native_entry_resolver(resolver);
library.set_native_entry_symbol_resolver(symbol_resolver);
@@ -124,6 +124,11 @@
ASSERT(!library.IsNull());
library.set_native_entry_resolver(resolver);
library.set_native_entry_symbol_resolver(symbol_resolver);
+
+ library = Library::TypedDataLibrary();
+ ASSERT(!library.IsNull());
+ library.set_native_entry_resolver(resolver);
+ library.set_native_entry_symbol_resolver(symbol_resolver);
}
diff --git a/runtime/vm/bootstrap_natives.h b/runtime/vm/bootstrap_natives.h
index 33d401e..78edd2f 100644
--- a/runtime/vm/bootstrap_natives.h
+++ b/runtime/vm/bootstrap_natives.h
@@ -63,6 +63,8 @@
V(Bigint_getUsed, 1) \
V(Bigint_getDigits, 1) \
V(Bigint_allocate, 4) \
+ V(Developer_debugger, 2) \
+ V(Developer_inspect, 1) \
V(Double_getIsNegative, 1) \
V(Double_getIsInfinite, 1) \
V(Double_getIsNaN, 1) \
diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc
index 5c59b2e..23c0d52 100644
--- a/runtime/vm/class_finalizer.cc
+++ b/runtime/vm/class_finalizer.cc
@@ -22,7 +22,6 @@
DEFINE_FLAG(bool, print_classes, false, "Prints details about loaded classes.");
DEFINE_FLAG(bool, trace_class_finalization, false, "Trace class finalization.");
DEFINE_FLAG(bool, trace_type_finalization, false, "Trace type finalization.");
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(bool, use_cha);
@@ -184,6 +183,7 @@
}
+#if defined(DART_NO_SNAPSHOT)
void ClassFinalizer::VerifyBootstrapClasses() {
if (FLAG_trace_class_finalization) {
OS::Print("VerifyBootstrapClasses START.\n");
@@ -247,6 +247,7 @@
}
Isolate::Current()->heap()->Verify();
}
+#endif // defined(DART_NO_SNAPSHOT).
// Resolve unresolved_class in the library of cls, or return null.
@@ -1683,6 +1684,13 @@
param ^= mixin_type_args.TypeAt(i);
param_bound = param.bound();
if (!param_bound.IsInstantiated()) {
+ // Make sure the bound is finalized before instantiating it.
+ if (!param_bound.IsFinalized() &&
+ !param_bound.IsBeingFinalized()) {
+ param_bound =
+ FinalizeType(mixin_app_class, param_bound, kCanonicalize);
+ param.set_bound(param_bound); // In case part of recursive type.
+ }
param_bound = param_bound.InstantiateFrom(mixin_type_args,
&bound_error);
// The instantiator contains only TypeParameter objects and no
diff --git a/runtime/vm/class_finalizer.h b/runtime/vm/class_finalizer.h
index 5515404..7a11b24 100644
--- a/runtime/vm/class_finalizer.h
+++ b/runtime/vm/class_finalizer.h
@@ -93,9 +93,11 @@
// Finalize the class including its fields and functions.
static void FinalizeClass(const Class& cls);
+#if defined(DART_NO_SNAPSHOT)
// Verify that the classes have been properly prefinalized. This is
// needed during bootstrapping where the classes have been preloaded.
static void VerifyBootstrapClasses();
+#endif // defined(DART_NO_SNAPSHOT).
// Resolve the class of the type, but not the type's type arguments.
static void ResolveTypeClass(const Class& cls, const AbstractType& type);
diff --git a/runtime/vm/code_descriptors.cc b/runtime/vm/code_descriptors.cc
index 233d1b6..cc5ad3e 100644
--- a/runtime/vm/code_descriptors.cc
+++ b/runtime/vm/code_descriptors.cc
@@ -9,38 +9,31 @@
void DescriptorList::AddDescriptor(RawPcDescriptors::Kind kind,
intptr_t pc_offset,
intptr_t deopt_id,
- intptr_t token_index,
+ intptr_t token_pos,
intptr_t try_index) {
ASSERT((kind == RawPcDescriptors::kRuntimeCall) ||
(kind == RawPcDescriptors::kOther) ||
(deopt_id != Isolate::kNoDeoptId));
- struct PcDesc data;
- data.pc_offset = pc_offset;
- data.kind = kind;
- data.deopt_id = deopt_id;
- data.SetTokenPos(token_index);
- data.try_index = try_index;
- list_.Add(data);
- if (try_index >= 0) {
- has_try_index_ = true;
- }
+
+ PcDescriptors::EncodeInteger(&delta_encoded_data_,
+ static_cast<intptr_t>(kind));
+ PcDescriptors::EncodeInteger(&delta_encoded_data_,
+ try_index);
+ PcDescriptors::EncodeInteger(&delta_encoded_data_,
+ pc_offset - prev_pc_offset);
+ PcDescriptors::EncodeInteger(&delta_encoded_data_,
+ deopt_id - prev_deopt_id);
+ PcDescriptors::EncodeInteger(&delta_encoded_data_,
+ token_pos - prev_token_pos);
+
+ prev_pc_offset = pc_offset;
+ prev_deopt_id = deopt_id;
+ prev_token_pos = token_pos;
}
RawPcDescriptors* DescriptorList::FinalizePcDescriptors(uword entry_point) {
- intptr_t num_descriptors = Length();
- const PcDescriptors& descriptors =
- PcDescriptors::Handle(PcDescriptors::New(num_descriptors,
- has_try_index_));
- for (intptr_t i = 0; i < num_descriptors; i++) {
- descriptors.AddDescriptor(i,
- PcOffset(i),
- Kind(i),
- DeoptId(i),
- TokenPos(i),
- TryIndex(i));
- }
- return descriptors.raw();
+ return PcDescriptors::New(&delta_encoded_data_);
}
diff --git a/runtime/vm/code_descriptors.h b/runtime/vm/code_descriptors.h
index 796f290..5354fe2 100644
--- a/runtime/vm/code_descriptors.h
+++ b/runtime/vm/code_descriptors.h
@@ -15,59 +15,29 @@
class DescriptorList : public ZoneAllocated {
public:
- struct PcDesc {
- intptr_t pc_offset; // PC offset value of the descriptor.
- RawPcDescriptors::Kind kind; // Descriptor kind (kDeopt, kOther).
- intptr_t deopt_id; // Deoptimization id.
- intptr_t data; // Token position or deopt reason.
- intptr_t try_index; // Try block index of PC or deopt array index.
- void SetTokenPos(intptr_t value) { data = value; }
- intptr_t TokenPos() const { return data; }
- void SetDeoptReason(ICData::DeoptReasonId value) { data = value; }
- ICData::DeoptReasonId DeoptReason() const {
- ASSERT((0 <= data) && (data < ICData::kDeoptNumReasons));
- return static_cast<ICData::DeoptReasonId>(data);
- }
- };
-
explicit DescriptorList(intptr_t initial_capacity)
- : list_(initial_capacity), has_try_index_(false) {}
+ : delta_encoded_data_(initial_capacity),
+ prev_pc_offset(0),
+ prev_deopt_id(0),
+ prev_token_pos(0) {}
+
~DescriptorList() { }
- intptr_t Length() const {
- return list_.length();
- }
-
- intptr_t PcOffset(intptr_t index) const {
- return list_[index].pc_offset;
- }
- RawPcDescriptors::Kind Kind(intptr_t index) const {
- return list_[index].kind;
- }
- intptr_t DeoptId(intptr_t index) const {
- return list_[index].deopt_id;
- }
- intptr_t TokenPos(intptr_t index) const {
- return list_[index].TokenPos();
- }
- ICData::DeoptReasonId DeoptReason(intptr_t index) const {
- return list_[index].DeoptReason();
- }
- intptr_t TryIndex(intptr_t index) const {
- return (has_try_index_) ? list_[index].try_index : -1;
- }
-
void AddDescriptor(RawPcDescriptors::Kind kind,
intptr_t pc_offset,
intptr_t deopt_id,
- intptr_t token_index,
+ intptr_t token_pos,
intptr_t try_index);
RawPcDescriptors* FinalizePcDescriptors(uword entry_point);
private:
- GrowableArray<struct PcDesc> list_;
- bool has_try_index_;
+ GrowableArray<uint8_t> delta_encoded_data_;
+
+ intptr_t prev_pc_offset;
+ intptr_t prev_deopt_id;
+ intptr_t prev_token_pos;
+
DISALLOW_COPY_AND_ASSIGN(DescriptorList);
};
diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc
index 1cd7e14..666b13c 100644
--- a/runtime/vm/code_generator.cc
+++ b/runtime/vm/code_generator.cc
@@ -56,8 +56,6 @@
DEFINE_FLAG(bool, trace_type_checks, false, "Trace runtime type checks.");
DECLARE_FLAG(int, deoptimization_counter_threshold);
-DECLARE_FLAG(bool, enable_asserts);
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(bool, warn_on_javascript_compatibility);
DEFINE_FLAG(bool, use_osr, true, "Use on-stack replacement.");
diff --git a/runtime/vm/compiler.cc b/runtime/vm/compiler.cc
index 88f20af..86a2a0f 100644
--- a/runtime/vm/compiler.cc
+++ b/runtime/vm/compiler.cc
@@ -890,7 +890,7 @@
ISL_Print("Variable Descriptors for function '%s' {\n",
function_fullname);
const LocalVarDescriptors& var_descriptors =
- LocalVarDescriptors::Handle(code.var_descriptors());
+ LocalVarDescriptors::Handle(code.GetLocalVarDescriptors());
intptr_t var_desc_length =
var_descriptors.IsNull() ? 0 : var_descriptors.Length();
String& var_name = String::Handle();
@@ -1129,6 +1129,26 @@
}
+void Compiler::ComputeLocalVarDescriptors(const Code& code) {
+ ASSERT(!code.is_optimized());
+ const Function& function = Function::Handle(code.function());
+ ParsedFunction* parsed_function = new ParsedFunction(
+ Thread::Current(), Function::ZoneHandle(function.raw()));
+ LocalVarDescriptors& var_descs =
+ LocalVarDescriptors::Handle(code.var_descriptors());
+ ASSERT(var_descs.IsNull());
+ // IsIrregexpFunction have eager var descriptors generation.
+ ASSERT(!function.IsIrregexpFunction());
+ // Parser should not produce any errors, therefore no LongJumpScope needed.
+ Parser::ParseFunction(parsed_function);
+ parsed_function->AllocateVariables();
+ var_descs = parsed_function->node_sequence()->scope()->
+ GetVarDescriptors(function);
+ ASSERT(!var_descs.IsNull());
+ code.set_var_descriptors(var_descs);
+}
+
+
RawError* Compiler::CompileAllFunctions(const Class& cls) {
Thread* thread = Thread::Current();
Zone* zone = thread->zone();
@@ -1176,6 +1196,14 @@
}
+static void CreateLocalVarDescriptors(const ParsedFunction& parsed_function) {
+ const Function& func = parsed_function.function();
+ LocalVarDescriptors& var_descs = LocalVarDescriptors::Handle();
+ var_descs = parsed_function.node_sequence()->scope()->GetVarDescriptors(func);
+ Code::Handle(func.unoptimized_code()).set_var_descriptors(var_descs);
+}
+
+
RawObject* Compiler::EvaluateStaticInitializer(const Field& field) {
ASSERT(field.is_static());
// The VM sets the field's value to transiton_sentinel prior to
@@ -1195,6 +1223,8 @@
parsed_function,
false,
Isolate::kNoDeoptId);
+ // Eagerly create local var descriptors.
+ CreateLocalVarDescriptors(*parsed_function);
// Invoke the function to evaluate the expression.
const Function& initializer = parsed_function->function();
@@ -1264,6 +1294,8 @@
false,
Isolate::kNoDeoptId);
+ // Eagerly create local var descriptors.
+ CreateLocalVarDescriptors(*parsed_function);
const Object& result = PassiveObject::Handle(
DartEntry::InvokeFunction(func, Object::empty_array()));
return result.raw();
diff --git a/runtime/vm/compiler.h b/runtime/vm/compiler.h
index e319956..1e92e71 100644
--- a/runtime/vm/compiler.h
+++ b/runtime/vm/compiler.h
@@ -73,6 +73,10 @@
// on compilation failure.
static RawObject* EvaluateStaticInitializer(const Field& field);
+ // Generates local var descriptors and sets it in 'code'. Do not call if the
+ // local var descriptor already exists.
+ static void ComputeLocalVarDescriptors(const Code& code);
+
// Eagerly compiles all functions in a class.
//
// Returns Error::null() if there is no compilation error.
diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h
index 85f98d0..2d74ef3 100644
--- a/runtime/vm/constants_arm64.h
+++ b/runtime/vm/constants_arm64.h
@@ -438,6 +438,13 @@
CSINV = ConditionalSelectFixed | B30,
};
+// C3.5.7
+enum MiscDP1SourceOp {
+ MiscDP1SourceMask = 0x5fe00000,
+ MiscDP1SourceFixed = DPRegisterFixed | B30 | B28 | B23 | B22,
+ CLZ = MiscDP1SourceFixed | B12,
+};
+
// C3.5.8
enum MiscDP2SourceOp {
MiscDP2SourceMask = 0x5fe00000,
@@ -609,6 +616,7 @@
_V(AddSubShiftExt) \
_V(AddSubWithCarry) \
_V(ConditionalSelect) \
+_V(MiscDP1Source) \
_V(MiscDP2Source) \
_V(MiscDP3Source) \
_V(LogicalShift) \
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index a19208a..1f2ac88 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -224,15 +224,12 @@
// Setup for profiling.
Profiler::InitProfilingForIsolate(isolate);
- if (snapshot_buffer == NULL) {
- const Error& error = Error::Handle(Object::Init(isolate));
- if (!error.IsNull()) {
- return error.raw();
- }
- } else {
- // Initialize from snapshot (this should replicate the functionality
- // of Object::Init(..) in a regular isolate creation path.
- Object::InitFromSnapshot(isolate);
+ const Error& error = Error::Handle(Object::Init(isolate));
+ if (!error.IsNull()) {
+ return error.raw();
+ }
+ if (snapshot_buffer != NULL) {
+ // Read the snapshot and setup the initial state.
// TODO(turnidge): Remove once length is not part of the snapshot.
const Snapshot* snapshot = Snapshot::SetupFromBuffer(snapshot_buffer);
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index e9b7fec..9783558 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -19,7 +19,6 @@
namespace dart {
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(int, optimization_counter_threshold);
DECLARE_FLAG(bool, verify_acquired_data);
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index 05ecbcb..60059ee 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -478,7 +478,7 @@
}
}
var_descriptors_ =
- Code::Handle(function().unoptimized_code()).var_descriptors();
+ Code::Handle(function().unoptimized_code()).GetLocalVarDescriptors();
ASSERT(!var_descriptors_.IsNull());
}
}
@@ -910,10 +910,13 @@
JSONObject jsvar(&jsvars);
String& var_name = String::Handle();
Instance& var_value = Instance::Handle();
- intptr_t unused;
- VariableAt(v, &var_name, &unused, &unused, &var_value);
+ intptr_t token_pos;
+ intptr_t end_token_pos;
+ VariableAt(v, &var_name, &token_pos, &end_token_pos, &var_value);
jsvar.AddProperty("name", var_name.ToCString());
jsvar.AddProperty("value", var_value, !full);
+ jsvar.AddProperty("tokenPos", token_pos);
+ jsvar.AddProperty("endTokenPos", end_token_pos);
}
}
}
@@ -2275,6 +2278,31 @@
}
+void Debugger::BreakHere(const String& msg) {
+ // We ignore this breakpoint when the VM is executing code invoked
+ // by the debugger to evaluate variables values, or when we see a nested
+ // breakpoint or exception event.
+ if (ignore_breakpoints_ || IsPaused() || !HasEventHandler()) {
+ return;
+ }
+
+ DebuggerStackTrace* stack_trace = CollectStackTrace();
+ ASSERT(stack_trace->Length() > 0);
+ ASSERT(stack_trace_ == NULL);
+ stack_trace_ = stack_trace;
+
+ // TODO(johnmccutchan): Send |msg| to Observatory.
+
+ // We are in the native call to Debugger_breakHere or Debugger_breakHereIf,
+ // the developer gets a better experience by not seeing this call. To
+ // accomplish this, we continue execution until the call exits (step out).
+ SetStepOut();
+ HandleSteppingRequest(stack_trace_);
+
+ stack_trace_ = NULL;
+}
+
+
void Debugger::Initialize(Isolate* isolate) {
if (initialized_) {
return;
diff --git a/runtime/vm/debugger.h b/runtime/vm/debugger.h
index 3796297..c95deb4 100644
--- a/runtime/vm/debugger.h
+++ b/runtime/vm/debugger.h
@@ -442,6 +442,8 @@
void SignalBpReached();
void DebuggerStepCallback();
+ void BreakHere(const String& msg);
+
void SignalExceptionThrown(const Instance& exc);
void SignalIsolateEvent(DebuggerEvent::EventType type);
static void SignalIsolateInterrupted();
diff --git a/runtime/vm/debugger_api_impl_test.cc b/runtime/vm/debugger_api_impl_test.cc
index 4bbc7e8..a516a99 100644
--- a/runtime/vm/debugger_api_impl_test.cc
+++ b/runtime/vm/debugger_api_impl_test.cc
@@ -2147,7 +2147,6 @@
Dart_Handle object_name = Dart_NewStringFromCString("Object");
Dart_Handle int_name = Dart_NewStringFromCString("int");
Dart_Handle set_name = Dart_NewStringFromCString("Set");
- Dart_Handle iterable_name = Dart_NewStringFromCString("Iterable");
Dart_Handle list_name = Dart_NewStringFromCString("List");
Dart_Handle object_type = Dart_GetType(core_lib, object_name, 0, NULL);
@@ -2208,7 +2207,7 @@
{
Dart_Handle set_type = Dart_GetType(core_lib, set_name, 0, NULL);
Dart_Handle super_type = Dart_GetSupertype(set_type);
- Dart_Handle iterable_type = Dart_GetType(core_lib, iterable_name, 0, NULL);
+ Dart_Handle iterable_type = Dart_GetType(core_lib, object_name, 0, NULL);
const Type& expected_type = Api::UnwrapTypeHandle(isolate, iterable_type);
const Type& actual_type = Api::UnwrapTypeHandle(isolate, super_type);
EXPECT(expected_type.raw() == actual_type.raw());
diff --git a/runtime/vm/disassembler_arm64.cc b/runtime/vm/disassembler_arm64.cc
index c6d6087..193d5b1 100644
--- a/runtime/vm/disassembler_arm64.cc
+++ b/runtime/vm/disassembler_arm64.cc
@@ -1036,6 +1036,23 @@
}
+void ARM64Decoder::DecodeMiscDP1Source(Instr* instr) {
+ if (instr->Bit(29) != 0) {
+ Unknown(instr);
+ }
+
+ const int op = instr->Bits(10, 10);
+ switch (op) {
+ case 4:
+ Format(instr, "clz'sf 'rd, 'rn");
+ break;
+ default:
+ Unknown(instr);
+ break;
+ }
+}
+
+
void ARM64Decoder::DecodeMiscDP2Source(Instr* instr) {
if (instr->Bit(29) != 0) {
Unknown(instr);
@@ -1111,6 +1128,8 @@
DecodeAddSubWithCarry(instr);
} else if (instr->IsLogicalShiftOp()) {
DecodeLogicalShift(instr);
+ } else if (instr->IsMiscDP1SourceOp()) {
+ DecodeMiscDP1Source(instr);
} else if (instr->IsMiscDP2SourceOp()) {
DecodeMiscDP2Source(instr);
} else if (instr->IsMiscDP3SourceOp()) {
diff --git a/runtime/vm/flow_graph_builder.cc b/runtime/vm/flow_graph_builder.cc
index 551e372..cfd44dd 100644
--- a/runtime/vm/flow_graph_builder.cc
+++ b/runtime/vm/flow_graph_builder.cc
@@ -35,11 +35,10 @@
"Eliminate type checks when allowed by static type analysis.");
DEFINE_FLAG(bool, print_ast, false, "Print abstract syntax tree.");
DEFINE_FLAG(bool, print_scopes, false, "Print scopes of local variables.");
+DEFINE_FLAG(bool, support_debugger, true, "Emit code needed for debugging");
DEFINE_FLAG(bool, trace_type_check_elimination, false,
"Trace type check elimination at compile time.");
-DECLARE_FLAG(bool, enable_asserts);
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(int, optimization_counter_threshold);
DECLARE_FLAG(bool, warn_on_javascript_compatibility);
DECLARE_FLAG(bool, use_field_guards);
@@ -1042,7 +1041,8 @@
// No debugger check is done in native functions or for return
// statements for which there is no associated source position.
const Function& function = owner()->function();
- if ((node->token_pos() != Scanner::kNoSourcePos) && !function.is_native()) {
+ if (FLAG_support_debugger &&
+ (node->token_pos() != Scanner::kNoSourcePos) && !function.is_native()) {
AddInstruction(new(Z) DebugStepCheckInstr(node->token_pos(),
RawPcDescriptors::kRuntimeCall));
}
@@ -3268,6 +3268,23 @@
}
+LoadFieldInstr* EffectGraphVisitor::BuildNativeGetter(
+ NativeBodyNode* node,
+ MethodRecognizer::Kind kind,
+ intptr_t offset,
+ const Type& type,
+ intptr_t class_id) {
+ Value* receiver = Bind(BuildLoadThisVar(node->scope()));
+ LoadFieldInstr* load = new(Z) LoadFieldInstr(receiver,
+ offset,
+ type,
+ node->token_pos());
+ load->set_result_cid(class_id);
+ load->set_recognized_kind(kind);
+ return load;
+}
+
+
void EffectGraphVisitor::VisitNativeBodyNode(NativeBodyNode* node) {
const Function& function = owner()->function();
if (!function.IsClosureFunction()) {
@@ -3291,18 +3308,13 @@
}
case MethodRecognizer::kStringBaseLength:
case MethodRecognizer::kStringBaseIsEmpty: {
- Value* receiver = Bind(BuildLoadThisVar(node->scope()));
// Treat length loads as mutable (i.e. affected by side effects) to
// avoid hoisting them since we can't hoist the preceding class-check.
// This is because of externalization of strings that affects their
// class-id.
- LoadFieldInstr* load = new(Z) LoadFieldInstr(
- receiver,
- String::length_offset(),
- Type::ZoneHandle(Z, Type::SmiType()),
- node->token_pos());
- load->set_result_cid(kSmiCid);
- load->set_recognized_kind(MethodRecognizer::kStringBaseLength);
+ LoadFieldInstr* load = BuildNativeGetter(
+ node, MethodRecognizer::kStringBaseLength, String::length_offset(),
+ Type::ZoneHandle(Z, Type::SmiType()), kSmiCid);
if (kind == MethodRecognizer::kStringBaseLength) {
return ReturnDefinition(load);
}
@@ -3322,15 +3334,10 @@
case MethodRecognizer::kObjectArrayLength:
case MethodRecognizer::kImmutableArrayLength:
case MethodRecognizer::kTypedDataLength: {
- Value* receiver = Bind(BuildLoadThisVar(node->scope()));
- LoadFieldInstr* load = new(Z) LoadFieldInstr(
- receiver,
- OffsetForLengthGetter(kind),
- Type::ZoneHandle(Z, Type::SmiType()),
- node->token_pos());
+ LoadFieldInstr* load = BuildNativeGetter(
+ node, kind, OffsetForLengthGetter(kind),
+ Type::ZoneHandle(Z, Type::SmiType()), kSmiCid);
load->set_is_immutable(kind != MethodRecognizer::kGrowableArrayLength);
- load->set_result_cid(kSmiCid);
- load->set_recognized_kind(kind);
return ReturnDefinition(load);
}
case MethodRecognizer::kClassIDgetID: {
@@ -3371,37 +3378,20 @@
return ReturnDefinition(create_array);
}
case MethodRecognizer::kBigint_getDigits: {
- Value* receiver = Bind(BuildLoadThisVar(node->scope()));
- LoadFieldInstr* load = new(Z) LoadFieldInstr(
- receiver,
- Bigint::digits_offset(),
+ return ReturnDefinition(BuildNativeGetter(
+ node, kind, Bigint::digits_offset(),
Type::ZoneHandle(Z, Type::DynamicType()),
- node->token_pos());
- load->set_result_cid(kTypedDataUint32ArrayCid);
- load->set_recognized_kind(kind);
- return ReturnDefinition(load);
+ kTypedDataUint32ArrayCid));
}
case MethodRecognizer::kBigint_getUsed: {
- Value* receiver = Bind(BuildLoadThisVar(node->scope()));
- LoadFieldInstr* load = new(Z) LoadFieldInstr(
- receiver,
- Bigint::used_offset(),
- Type::ZoneHandle(Z, Type::SmiType()),
- node->token_pos());
- load->set_result_cid(kSmiCid);
- load->set_recognized_kind(kind);
- return ReturnDefinition(load);
+ return ReturnDefinition(BuildNativeGetter(
+ node, kind, Bigint::used_offset(),
+ Type::ZoneHandle(Z, Type::SmiType()), kSmiCid));
}
case MethodRecognizer::kBigint_getNeg: {
- Value* receiver = Bind(BuildLoadThisVar(node->scope()));
- LoadFieldInstr* load = new(Z) LoadFieldInstr(
- receiver,
- Bigint::neg_offset(),
- Type::ZoneHandle(Z, Type::BoolType()),
- node->token_pos());
- load->set_result_cid(kBoolCid);
- load->set_recognized_kind(kind);
- return ReturnDefinition(load);
+ return ReturnDefinition(BuildNativeGetter(
+ node, kind, Bigint::neg_offset(),
+ Type::ZoneHandle(Z, Type::BoolType()), kBoolCid));
}
default:
break;
@@ -3438,14 +3428,16 @@
// a safe point for the debugger to stop, add an explicit stub
// call. Exception: don't do this when assigning to or from internal
// variables, or for generated code that has no source position.
- if ((node->value()->IsLiteralNode() ||
- (node->value()->IsLoadLocalNode() &&
- !node->value()->AsLoadLocalNode()->local().IsInternal()) ||
- node->value()->IsClosureNode()) &&
- !node->local().IsInternal() &&
- (node->token_pos() != Scanner::kNoSourcePos)) {
- AddInstruction(new(Z) DebugStepCheckInstr(
- node->token_pos(), RawPcDescriptors::kRuntimeCall));
+ if (FLAG_support_debugger) {
+ if ((node->value()->IsLiteralNode() ||
+ (node->value()->IsLoadLocalNode() &&
+ !node->value()->AsLoadLocalNode()->local().IsInternal()) ||
+ node->value()->IsClosureNode()) &&
+ !node->local().IsInternal() &&
+ (node->token_pos() != Scanner::kNoSourcePos)) {
+ AddInstruction(new(Z) DebugStepCheckInstr(
+ node->token_pos(), RawPcDescriptors::kRuntimeCall));
+ }
}
ValueGraphVisitor for_value(owner());
@@ -4249,11 +4241,13 @@
void EffectGraphVisitor::BuildThrowNode(ThrowNode* node) {
- if (node->exception()->IsLiteralNode() ||
- node->exception()->IsLoadLocalNode() ||
- node->exception()->IsClosureNode()) {
- AddInstruction(new(Z) DebugStepCheckInstr(
- node->token_pos(), RawPcDescriptors::kRuntimeCall));
+ if (FLAG_support_debugger) {
+ if (node->exception()->IsLiteralNode() ||
+ node->exception()->IsLoadLocalNode() ||
+ node->exception()->IsClosureNode()) {
+ AddInstruction(new(Z) DebugStepCheckInstr(
+ node->token_pos(), RawPcDescriptors::kRuntimeCall));
+ }
}
ValueGraphVisitor for_exception(owner());
node->exception()->Visit(&for_exception);
diff --git a/runtime/vm/flow_graph_builder.h b/runtime/vm/flow_graph_builder.h
index 1ecd7f5..f3d00bc 100644
--- a/runtime/vm/flow_graph_builder.h
+++ b/runtime/vm/flow_graph_builder.h
@@ -355,6 +355,12 @@
Definition* BuildStoreLocal(const LocalVariable& local, Value* value);
Definition* BuildLoadLocal(const LocalVariable& local);
LoadLocalInstr* BuildLoadThisVar(LocalScope* scope);
+ LoadFieldInstr* BuildNativeGetter(
+ NativeBodyNode* node,
+ MethodRecognizer::Kind kind,
+ intptr_t offset,
+ const Type& type,
+ intptr_t class_id);
// Helpers for translating parts of the AST.
void BuildPushArguments(const ArgumentListNode& node,
diff --git a/runtime/vm/flow_graph_compiler.cc b/runtime/vm/flow_graph_compiler.cc
index e1ce9bb..86cd660 100644
--- a/runtime/vm/flow_graph_compiler.cc
+++ b/runtime/vm/flow_graph_compiler.cc
@@ -31,6 +31,8 @@
"Instance call always as megamorphic.");
DEFINE_FLAG(bool, trace_inlining_intervals, false,
"Inlining interval diagnostics");
+DEFINE_FLAG(bool, eager_info_computation, false,
+ "TRANSITIONAL: Eagerly compute local var descriptors.");
DEFINE_FLAG(bool, enable_simd_inline, true,
"Enable inlining of SIMD related method calls.");
DEFINE_FLAG(int, min_optimization_counter_threshold, 5000,
@@ -38,6 +40,7 @@
DEFINE_FLAG(int, optimization_counter_scale, 2000,
"The scale of invocation count, by size of the function.");
DEFINE_FLAG(bool, source_lines, false, "Emit source line as assembly comment.");
+DEFINE_FLAG(bool, use_megamorphic_stub, true, "Out of line megamorphic lookup");
DECLARE_FLAG(bool, code_comments);
DECLARE_FLAG(int, deoptimize_every);
@@ -45,7 +48,6 @@
DECLARE_FLAG(bool, disassemble);
DECLARE_FLAG(bool, disassemble_optimized);
DECLARE_FLAG(bool, emit_edge_counters);
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(bool, intrinsify);
DECLARE_FLAG(int, optimization_counter_threshold);
DECLARE_FLAG(bool, propagate_ic_data);
@@ -53,10 +55,12 @@
DECLARE_FLAG(int, reoptimization_counter_threshold);
DECLARE_FLAG(int, stacktrace_every);
DECLARE_FLAG(charp, stacktrace_filter);
+DECLARE_FLAG(bool, support_debugger);
DECLARE_FLAG(bool, use_cha);
DECLARE_FLAG(bool, use_field_guards);
DECLARE_FLAG(bool, use_osr);
DECLARE_FLAG(bool, warn_on_javascript_compatibility);
+DECLARE_FLAG(bool, ic_range_profiling);
static void NooptModeHandler(bool value) {
if (value) {
@@ -65,6 +69,9 @@
FLAG_use_field_guards = false;
FLAG_use_osr = false;
FLAG_emit_edge_counters = false;
+ FLAG_support_debugger = false;
+ FLAG_ic_range_profiling = false;
+ FLAG_collect_code = false;
}
}
@@ -657,6 +664,8 @@
void FlowGraphCompiler::AddCurrentDescriptor(RawPcDescriptors::Kind kind,
intptr_t deopt_id,
intptr_t token_pos) {
+ // When running with optimizations disabled, don't emit deopt-descriptors.
+ if (!CanOptimize() && (kind == RawPcDescriptors::kDeopt)) return;
pc_descriptors_list()->AddDescriptor(kind,
assembler()->CodeSize(),
deopt_id,
@@ -920,6 +929,10 @@
}
LocalVarDescriptors& var_descs = LocalVarDescriptors::Handle();
if (parsed_function().node_sequence() == NULL) {
+ // Eager local var descriptors computation for Irregexp function as it is
+ // complicated to factor out.
+ // TODO(srdjan): Consider canonicalizing and reusing the local var
+ // descriptor for IrregexpFunction.
ASSERT(flow_graph().IsIrregexpFunction());
var_descs = LocalVarDescriptors::New(1);
RawLocalVarDescriptors::VarInfo info;
@@ -929,10 +942,6 @@
info.end_pos = 0;
info.set_index(parsed_function().current_context_var()->index());
var_descs.SetVar(0, Symbols::CurrentContextVar(), &info);
- } else {
- var_descs =
- parsed_function_.node_sequence()->scope()->GetVarDescriptors(
- parsed_function_.function());
}
code.set_var_descriptors(var_descs);
}
diff --git a/runtime/vm/flow_graph_compiler_arm.cc b/runtime/vm/flow_graph_compiler_arm.cc
index 8334bb0..741bd96 100644
--- a/runtime/vm/flow_graph_compiler_arm.cc
+++ b/runtime/vm/flow_graph_compiler_arm.cc
@@ -26,8 +26,8 @@
DEFINE_FLAG(bool, trap_on_deoptimization, false, "Trap on deoptimization.");
DEFINE_FLAG(bool, unbox_mints, true, "Optimize 64-bit integer arithmetic.");
DEFINE_FLAG(bool, unbox_doubles, true, "Optimize double arithmetic.");
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(bool, enable_simd_inline);
+DECLARE_FLAG(bool, use_megamorphic_stub);
FlowGraphCompiler::~FlowGraphCompiler() {
@@ -1288,47 +1288,21 @@
ASSERT(!arguments_descriptor.IsNull() && (arguments_descriptor.Length() > 0));
const MegamorphicCache& cache =
MegamorphicCache::ZoneHandle(table->Lookup(name, arguments_descriptor));
- __ LoadFromOffset(kWord, R0, SP, (argument_count - 1) * kWordSize);
- __ LoadTaggedClassIdMayBeSmi(R0, R0);
+ const Register receiverR = R0;
+ const Register cacheR = R1;
+ const Register targetR = R1;
+ __ LoadFromOffset(kWord, receiverR, SP, (argument_count - 1) * kWordSize);
+ __ LoadObject(cacheR, cache);
- // R0: class ID of the receiver (smi).
- __ LoadObject(R1, cache);
- __ ldr(R2, FieldAddress(R1, MegamorphicCache::buckets_offset()));
- __ ldr(R1, FieldAddress(R1, MegamorphicCache::mask_offset()));
- // R2: cache buckets array.
- // R1: mask.
- __ mov(R3, Operand(R0));
-
- Label loop, update, call_target_function;
- __ b(&loop);
-
- __ Bind(&update);
- __ add(R3, R3, Operand(Smi::RawValue(1)));
- __ Bind(&loop);
- __ and_(R3, R3, Operand(R1));
- const intptr_t base = Array::data_offset();
- // R3 is smi tagged, but table entries are two words, so LSL 2.
- __ add(IP, R2, Operand(R3, LSL, 2));
- __ ldr(R4, FieldAddress(IP, base));
-
- ASSERT(kIllegalCid == 0);
- __ tst(R4, Operand(R4));
- __ b(&call_target_function, EQ);
- __ cmp(R4, Operand(R0));
- __ b(&update, NE);
-
- __ Bind(&call_target_function);
- // Call the target found in the cache. For a class id match, this is a
- // proper target for the given name and arguments descriptor. If the
- // illegal class id was found, the target is a cache miss handler that can
- // be invoked as a normal Dart function.
- __ add(IP, R2, Operand(R3, LSL, 2));
- __ ldr(R0, FieldAddress(IP, base + kWordSize));
- __ ldr(R1, FieldAddress(R0, Function::instructions_offset()));
+ if (FLAG_use_megamorphic_stub) {
+ StubCode* stub_code = isolate()->stub_code();
+ __ BranchLink(&stub_code->MegamorphicLookupLabel());
+ } else {
+ StubCode::EmitMegamorphicLookup(assembler(), receiverR, cacheR, targetR);
+ }
__ LoadObject(R5, ic_data);
__ LoadObject(R4, arguments_descriptor);
- __ AddImmediate(R1, Instructions::HeaderSize() - kHeapObjectTag);
- __ blx(R1);
+ __ blx(targetR);
AddCurrentDescriptor(RawPcDescriptors::kOther,
Isolate::kNoDeoptId, token_pos);
RecordSafepoint(locs);
diff --git a/runtime/vm/flow_graph_compiler_arm64.cc b/runtime/vm/flow_graph_compiler_arm64.cc
index 3a7f574..dec7a2b 100644
--- a/runtime/vm/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/flow_graph_compiler_arm64.cc
@@ -24,6 +24,7 @@
DEFINE_FLAG(bool, trap_on_deoptimization, false, "Trap on deoptimization.");
DECLARE_FLAG(bool, enable_simd_inline);
+DECLARE_FLAG(bool, use_megamorphic_stub);
FlowGraphCompiler::~FlowGraphCompiler() {
@@ -1269,47 +1270,21 @@
ASSERT(!arguments_descriptor.IsNull() && (arguments_descriptor.Length() > 0));
const MegamorphicCache& cache =
MegamorphicCache::ZoneHandle(table->Lookup(name, arguments_descriptor));
- __ LoadFromOffset(R0, SP, (argument_count - 1) * kWordSize, PP);
- __ LoadTaggedClassIdMayBeSmi(R0, R0);
+ const Register receiverR = R0;
+ const Register cacheR = R1;
+ const Register targetR = R1;
+ __ LoadFromOffset(receiverR, SP, (argument_count - 1) * kWordSize, PP);
+ __ LoadObject(cacheR, cache, PP);
- // R0: class ID of the receiver (smi).
- __ LoadObject(R1, cache, PP);
- __ LoadFieldFromOffset(R2, R1, MegamorphicCache::buckets_offset(), PP);
- __ LoadFieldFromOffset(R1, R1, MegamorphicCache::mask_offset(), PP);
- // R2: cache buckets array.
- // R1: mask.
- __ mov(R3, R0);
-
- Label loop, update, call_target_function;
- __ b(&loop);
-
- __ Bind(&update);
- __ add(R3, R3, Operand(Smi::RawValue(1)));
- __ Bind(&loop);
- __ and_(R3, R3, Operand(R1));
- const intptr_t base = Array::data_offset();
- // R3 is smi tagged, but table entries are 16 bytes, so LSL 3.
- __ add(TMP, R2, Operand(R3, LSL, 3));
- __ LoadFieldFromOffset(R4, TMP, base, PP);
-
- ASSERT(kIllegalCid == 0);
- __ tst(R4, Operand(R4));
- __ b(&call_target_function, EQ);
- __ CompareRegisters(R4, R0);
- __ b(&update, NE);
-
- __ Bind(&call_target_function);
- // Call the target found in the cache. For a class id match, this is a
- // proper target for the given name and arguments descriptor. If the
- // illegal class id was found, the target is a cache miss handler that can
- // be invoked as a normal Dart function.
- __ add(TMP, R2, Operand(R3, LSL, 3));
- __ LoadFieldFromOffset(R0, TMP, base + kWordSize, PP);
- __ LoadFieldFromOffset(R1, R0, Function::instructions_offset(), PP);
+ if (FLAG_use_megamorphic_stub) {
+ StubCode* stub_code = isolate()->stub_code();
+ __ BranchLink(&stub_code->MegamorphicLookupLabel(), PP);
+ } else {
+ StubCode::EmitMegamorphicLookup(assembler(), receiverR, cacheR, targetR);
+ }
__ LoadObject(R5, ic_data, PP);
__ LoadObject(R4, arguments_descriptor, PP);
- __ AddImmediate(R1, R1, Instructions::HeaderSize() - kHeapObjectTag, PP);
- __ blr(R1);
+ __ blr(targetR);
AddCurrentDescriptor(RawPcDescriptors::kOther,
Isolate::kNoDeoptId, token_pos);
RecordSafepoint(locs);
diff --git a/runtime/vm/flow_graph_compiler_ia32.cc b/runtime/vm/flow_graph_compiler_ia32.cc
index e99ebd6..b389d5d 100644
--- a/runtime/vm/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/flow_graph_compiler_ia32.cc
@@ -27,8 +27,9 @@
DEFINE_FLAG(bool, trap_on_deoptimization, false, "Trap on deoptimization.");
DEFINE_FLAG(bool, unbox_mints, true, "Optimize 64-bit integer arithmetic.");
-DECLARE_FLAG(bool, enable_type_checks);
+
DECLARE_FLAG(bool, enable_simd_inline);
+DECLARE_FLAG(bool, use_megamorphic_stub);
FlowGraphCompiler::~FlowGraphCompiler() {
@@ -1303,54 +1304,29 @@
intptr_t deopt_id,
intptr_t token_pos,
LocationSummary* locs) {
- MegamorphicCacheTable* table = Isolate::Current()->megamorphic_cache_table();
+ MegamorphicCacheTable* table = isolate()->megamorphic_cache_table();
const String& name = String::Handle(ic_data.target_name());
const Array& arguments_descriptor =
Array::ZoneHandle(ic_data.arguments_descriptor());
ASSERT(!arguments_descriptor.IsNull() && (arguments_descriptor.Length() > 0));
const MegamorphicCache& cache =
MegamorphicCache::ZoneHandle(table->Lookup(name, arguments_descriptor));
- Label load_cache;
- __ movl(EBX, Address(ESP, (argument_count - 1) * kWordSize));
- __ LoadTaggedClassIdMayBeSmi(EAX, EBX);
+ const Register receiverR = EDI;
+ const Register cacheR = EBX;
+ const Register targetR = EBX;
+ __ movl(receiverR, Address(ESP, (argument_count - 1) * kWordSize));
+ __ LoadObject(cacheR, cache);
- // EAX: class ID of the receiver (smi).
- __ Bind(&load_cache);
- __ LoadObject(EBX, cache);
- __ movl(EDI, FieldAddress(EBX, MegamorphicCache::buckets_offset()));
- __ movl(EBX, FieldAddress(EBX, MegamorphicCache::mask_offset()));
- // EDI: cache buckets array.
- // EBX: mask.
- __ movl(ECX, EAX);
+ if (FLAG_use_megamorphic_stub) {
+ StubCode* stub_code = isolate()->stub_code();
+ __ call(&stub_code->MegamorphicLookupLabel());
+ } else {
+ StubCode::EmitMegamorphicLookup(assembler(), receiverR, cacheR, targetR);
+ }
- Label loop, update, call_target_function;
- __ jmp(&loop);
-
- __ Bind(&update);
- __ addl(ECX, Immediate(Smi::RawValue(1)));
- __ Bind(&loop);
- __ andl(ECX, EBX);
- const intptr_t base = Array::data_offset();
- // ECX is smi tagged, but table entries are two words, so TIMES_4.
- __ movl(EDX, FieldAddress(EDI, ECX, TIMES_4, base));
-
- ASSERT(kIllegalCid == 0);
- __ testl(EDX, EDX);
- __ j(ZERO, &call_target_function, Assembler::kNearJump);
- __ cmpl(EDX, EAX);
- __ j(NOT_EQUAL, &update, Assembler::kNearJump);
-
- __ Bind(&call_target_function);
- // Call the target found in the cache. For a class id match, this is a
- // proper target for the given name and arguments descriptor. If the
- // illegal class id was found, the target is a cache miss handler that can
- // be invoked as a normal Dart function.
- __ movl(EAX, FieldAddress(EDI, ECX, TIMES_4, base + kWordSize));
- __ movl(EBX, FieldAddress(EAX, Function::instructions_offset()));
__ LoadObject(ECX, ic_data);
__ LoadObject(EDX, arguments_descriptor);
- __ addl(EBX, Immediate(Instructions::HeaderSize() - kHeapObjectTag));
- __ call(EBX);
+ __ call(targetR);
AddCurrentDescriptor(RawPcDescriptors::kOther,
Isolate::kNoDeoptId, token_pos);
RecordSafepoint(locs);
diff --git a/runtime/vm/flow_graph_compiler_mips.cc b/runtime/vm/flow_graph_compiler_mips.cc
index 847048e..556a673 100644
--- a/runtime/vm/flow_graph_compiler_mips.cc
+++ b/runtime/vm/flow_graph_compiler_mips.cc
@@ -22,7 +22,7 @@
namespace dart {
DEFINE_FLAG(bool, trap_on_deoptimization, false, "Trap on deoptimization.");
-DECLARE_FLAG(bool, enable_type_checks);
+DECLARE_FLAG(bool, use_megamorphic_stub);
FlowGraphCompiler::~FlowGraphCompiler() {
@@ -1292,48 +1292,21 @@
const MegamorphicCache& cache =
MegamorphicCache::ZoneHandle(table->Lookup(name, arguments_descriptor));
__ Comment("MegamorphicInstanceCall");
- __ lw(T0, Address(SP, (argument_count - 1) * kWordSize));
- __ LoadTaggedClassIdMayBeSmi(T0, T0);
+ const Register receiverR = T0;
+ const Register cacheR = T1;
+ const Register targetR = T1;
+ __ lw(receiverR, Address(SP, (argument_count - 1) * kWordSize));
+ __ LoadObject(cacheR, cache);
- // T0: class ID of the receiver (smi).
- __ LoadObject(T1, cache);
- __ lw(T2, FieldAddress(T1, MegamorphicCache::buckets_offset()));
- __ lw(T1, FieldAddress(T1, MegamorphicCache::mask_offset()));
- // T2: cache buckets array.
- // T1: mask.
- __ mov(T3, T0);
-
- Label loop, update, call_target_function;
- __ b(&loop);
-
- __ Bind(&update);
- __ addiu(T3, T3, Immediate(Smi::RawValue(1)));
- __ Bind(&loop);
- __ and_(T3, T3, T1);
- const intptr_t base = Array::data_offset();
- // T3 is smi tagged, but table entries are two words, so LSL 2.
- __ sll(TMP, T3, 2);
- __ addu(TMP, T2, TMP);
- __ lw(T4, FieldAddress(TMP, base));
-
- ASSERT(kIllegalCid == 0);
- __ beq(T4, ZR, &call_target_function);
- __ bne(T4, T0, &update);
-
- __ Bind(&call_target_function);
- // Call the target found in the cache. For a class id match, this is a
- // proper target for the given name and arguments descriptor. If the
- // illegal class id was found, the target is a cache miss handler that can
- // be invoked as a normal Dart function.
- __ sll(T1, T3, 2);
- __ addu(T1, T2, T1);
- __ lw(T0, FieldAddress(T1, base + kWordSize));
-
- __ lw(T1, FieldAddress(T0, Function::instructions_offset()));
+ if (FLAG_use_megamorphic_stub) {
+ StubCode* stub_code = isolate()->stub_code();
+ __ BranchLink(&stub_code->MegamorphicLookupLabel());
+ } else {
+ StubCode::EmitMegamorphicLookup(assembler(), receiverR, cacheR, targetR);
+ }
__ LoadObject(S5, ic_data);
__ LoadObject(S4, arguments_descriptor);
- __ AddImmediate(T1, Instructions::HeaderSize() - kHeapObjectTag);
- __ jalr(T1);
+ __ jalr(targetR);
AddCurrentDescriptor(RawPcDescriptors::kOther,
Isolate::kNoDeoptId, token_pos);
RecordSafepoint(locs);
diff --git a/runtime/vm/flow_graph_compiler_x64.cc b/runtime/vm/flow_graph_compiler_x64.cc
index b0cc219..a590735 100644
--- a/runtime/vm/flow_graph_compiler_x64.cc
+++ b/runtime/vm/flow_graph_compiler_x64.cc
@@ -24,8 +24,8 @@
DEFINE_FLAG(bool, trap_on_deoptimization, false, "Trap on deoptimization.");
DEFINE_FLAG(bool, unbox_mints, true, "Optimize 64-bit integer arithmetic.");
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(bool, enable_simd_inline);
+DECLARE_FLAG(bool, use_megamorphic_stub);
FlowGraphCompiler::~FlowGraphCompiler() {
@@ -1311,53 +1311,28 @@
intptr_t deopt_id,
intptr_t token_pos,
LocationSummary* locs) {
- MegamorphicCacheTable* table = Isolate::Current()->megamorphic_cache_table();
+ MegamorphicCacheTable* table = isolate()->megamorphic_cache_table();
const String& name = String::Handle(ic_data.target_name());
const Array& arguments_descriptor =
Array::ZoneHandle(ic_data.arguments_descriptor());
ASSERT(!arguments_descriptor.IsNull() && (arguments_descriptor.Length() > 0));
const MegamorphicCache& cache =
MegamorphicCache::ZoneHandle(table->Lookup(name, arguments_descriptor));
- __ movq(RBX, Address(RSP, (argument_count - 1) * kWordSize));
- __ LoadTaggedClassIdMayBeSmi(RAX, RBX);
+ const Register receiverR = RDI;
+ const Register cacheR = RBX;
+ const Register targetR = RCX;
+ __ movq(receiverR, Address(RSP, (argument_count - 1) * kWordSize));
+ __ LoadObject(cacheR, cache, PP);
- // RAX: class ID of the receiver (smi).
- __ LoadObject(RBX, cache, PP);
- __ movq(RDI, FieldAddress(RBX, MegamorphicCache::buckets_offset()));
- __ movq(RBX, FieldAddress(RBX, MegamorphicCache::mask_offset()));
- // RDI: cache buckets array.
- // RBX: mask.
- __ movq(RCX, RAX);
-
- Label loop, update, call_target_function;
- __ jmp(&loop);
-
- __ Bind(&update);
- __ AddImmediate(RCX, Immediate(Smi::RawValue(1)), PP);
- __ Bind(&loop);
- __ andq(RCX, RBX);
- const intptr_t base = Array::data_offset();
- // RCX is smi tagged, but table entries are two words, so TIMES_8.
- __ movq(RDX, FieldAddress(RDI, RCX, TIMES_8, base));
-
- ASSERT(kIllegalCid == 0);
- __ testq(RDX, RDX);
- __ j(ZERO, &call_target_function, Assembler::kNearJump);
- __ cmpq(RDX, RAX);
- __ j(NOT_EQUAL, &update, Assembler::kNearJump);
-
- __ Bind(&call_target_function);
- // Call the target found in the cache. For a class id match, this is a
- // proper target for the given name and arguments descriptor. If the
- // illegal class id was found, the target is a cache miss handler that can
- // be invoked as a normal Dart function.
- __ movq(RAX, FieldAddress(RDI, RCX, TIMES_8, base + kWordSize));
- __ movq(RCX, FieldAddress(RAX, Function::instructions_offset()));
+ if (FLAG_use_megamorphic_stub) {
+ StubCode* stub_code = isolate()->stub_code();
+ __ call(&stub_code->MegamorphicLookupLabel());
+ } else {
+ StubCode::EmitMegamorphicLookup(assembler(), receiverR, cacheR, targetR);
+ }
__ LoadObject(RBX, ic_data, PP);
__ LoadObject(R10, arguments_descriptor, PP);
- __ AddImmediate(
- RCX, Immediate(Instructions::HeaderSize() - kHeapObjectTag), PP);
- __ call(RCX);
+ __ call(targetR);
AddCurrentDescriptor(RawPcDescriptors::kOther,
Isolate::kNoDeoptId, token_pos);
RecordSafepoint(locs);
diff --git a/runtime/vm/flow_graph_inliner.cc b/runtime/vm/flow_graph_inliner.cc
index 567e18c..6877f06 100644
--- a/runtime/vm/flow_graph_inliner.cc
+++ b/runtime/vm/flow_graph_inliner.cc
@@ -58,7 +58,6 @@
"Enable inlining annotations");
DECLARE_FLAG(bool, compiler_stats);
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(int, deoptimization_counter_threshold);
DECLARE_FLAG(bool, print_flow_graph);
DECLARE_FLAG(bool, print_flow_graph_optimized);
diff --git a/runtime/vm/flow_graph_optimizer.cc b/runtime/vm/flow_graph_optimizer.cc
index 1b33345..ee53c720 100644
--- a/runtime/vm/flow_graph_optimizer.cc
+++ b/runtime/vm/flow_graph_optimizer.cc
@@ -43,7 +43,6 @@
#if defined(TARGET_ARCH_ARM) || defined(TARGET_ARCH_IA32)
DEFINE_FLAG(bool, trace_smi_widening, false, "Trace Smi->Int32 widening pass.");
#endif
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(bool, source_lines);
DECLARE_FLAG(bool, trace_type_check_elimination);
DECLARE_FLAG(bool, warn_on_javascript_compatibility);
diff --git a/runtime/vm/flow_graph_type_propagator.cc b/runtime/vm/flow_graph_type_propagator.cc
index 0d646b8..bbf8d64 100644
--- a/runtime/vm/flow_graph_type_propagator.cc
+++ b/runtime/vm/flow_graph_type_propagator.cc
@@ -14,7 +14,6 @@
DEFINE_FLAG(bool, trace_type_propagation, false,
"Trace flow graph type propagation");
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(bool, propagate_types);
DECLARE_FLAG(bool, use_cha);
diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc
index eea43c4..47e7dab 100644
--- a/runtime/vm/intermediate_language.cc
+++ b/runtime/vm/intermediate_language.cc
@@ -37,7 +37,6 @@
"for binary and unary arithmetic operations");
DEFINE_FLAG(bool, unbox_numeric_fields, true,
"Support unboxed double and float32x4 fields.");
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(bool, eliminate_type_checks);
DECLARE_FLAG(bool, trace_optimization);
DECLARE_FLAG(bool, throw_on_javascript_int_overflow);
diff --git a/runtime/vm/intermediate_language_arm.cc b/runtime/vm/intermediate_language_arm.cc
index bc38b17..eac606c 100644
--- a/runtime/vm/intermediate_language_arm.cc
+++ b/runtime/vm/intermediate_language_arm.cc
@@ -26,7 +26,6 @@
DECLARE_FLAG(bool, emit_edge_counters);
DECLARE_FLAG(bool, enable_asserts);
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(int, optimization_counter_threshold);
DECLARE_FLAG(bool, use_osr);
@@ -2368,7 +2367,8 @@
ASSERT(locs()->in(kElementTypePos).reg() == kElemTypeReg);
ASSERT(locs()->in(kLengthPos).reg() == kLengthReg);
- if (num_elements()->BindsToConstant() &&
+ if (compiler->is_optimizing() &&
+ num_elements()->BindsToConstant() &&
num_elements()->BoundConstant().IsSmi()) {
const intptr_t length = Smi::Cast(num_elements()->BoundConstant()).Value();
if ((length >= 0) && (length <= Array::kMaxElements)) {
diff --git a/runtime/vm/intermediate_language_arm64.cc b/runtime/vm/intermediate_language_arm64.cc
index 5eecb10..92c25d8 100644
--- a/runtime/vm/intermediate_language_arm64.cc
+++ b/runtime/vm/intermediate_language_arm64.cc
@@ -25,7 +25,6 @@
DECLARE_FLAG(bool, emit_edge_counters);
DECLARE_FLAG(bool, enable_asserts);
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(int, optimization_counter_threshold);
DECLARE_FLAG(bool, use_osr);
@@ -2106,7 +2105,8 @@
ASSERT(locs()->in(kElementTypePos).reg() == kElemTypeReg);
ASSERT(locs()->in(kLengthPos).reg() == kLengthReg);
- if (num_elements()->BindsToConstant() &&
+ if (compiler->is_optimizing() &&
+ num_elements()->BindsToConstant() &&
num_elements()->BoundConstant().IsSmi()) {
const intptr_t length = Smi::Cast(num_elements()->BoundConstant()).Value();
if ((length >= 0) && (length <= Array::kMaxElements)) {
diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc
index 8505364..e88e35e 100644
--- a/runtime/vm/intermediate_language_ia32.cc
+++ b/runtime/vm/intermediate_language_ia32.cc
@@ -24,7 +24,6 @@
DECLARE_FLAG(bool, emit_edge_counters);
DECLARE_FLAG(bool, enable_asserts);
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(int, optimization_counter_threshold);
DECLARE_FLAG(bool, use_osr);
DECLARE_FLAG(bool, throw_on_javascript_int_overflow);
@@ -2104,7 +2103,8 @@
ASSERT(locs()->in(1).reg() == kLengthReg);
Label slow_path, done;
- if (num_elements()->BindsToConstant() &&
+ if (compiler->is_optimizing() &&
+ num_elements()->BindsToConstant() &&
num_elements()->BoundConstant().IsSmi()) {
const intptr_t length = Smi::Cast(num_elements()->BoundConstant()).Value();
if ((length >= 0) && (length <= Array::kMaxElements)) {
diff --git a/runtime/vm/intermediate_language_mips.cc b/runtime/vm/intermediate_language_mips.cc
index 602a4e2..302c5e1 100644
--- a/runtime/vm/intermediate_language_mips.cc
+++ b/runtime/vm/intermediate_language_mips.cc
@@ -25,7 +25,6 @@
DECLARE_FLAG(bool, emit_edge_counters);
DECLARE_FLAG(bool, enable_asserts);
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(int, optimization_counter_threshold);
DECLARE_FLAG(bool, use_osr);
@@ -2225,7 +2224,8 @@
ASSERT(locs()->in(1).reg() == kLengthReg);
Label slow_path, done;
- if (num_elements()->BindsToConstant() &&
+ if (compiler->is_optimizing() &&
+ num_elements()->BindsToConstant() &&
num_elements()->BoundConstant().IsSmi()) {
const intptr_t length = Smi::Cast(num_elements()->BoundConstant()).Value();
if ((length >= 0) && (length <= Array::kMaxElements)) {
diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc
index 433d67d..fa08bfb 100644
--- a/runtime/vm/intermediate_language_x64.cc
+++ b/runtime/vm/intermediate_language_x64.cc
@@ -24,7 +24,6 @@
DECLARE_FLAG(bool, emit_edge_counters);
DECLARE_FLAG(bool, enable_asserts);
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(int, optimization_counter_threshold);
DECLARE_FLAG(bool, throw_on_javascript_int_overflow);
DECLARE_FLAG(bool, use_osr);
@@ -2101,7 +2100,8 @@
ASSERT(locs()->in(1).reg() == kLengthReg);
Label slow_path, done;
- if (num_elements()->BindsToConstant() &&
+ if (compiler->is_optimizing() &&
+ num_elements()->BindsToConstant() &&
num_elements()->BoundConstant().IsSmi()) {
const intptr_t length = Smi::Cast(num_elements()->BoundConstant()).Value();
if ((length >= 0) && (length <= Array::kMaxElements)) {
diff --git a/runtime/vm/intrinsifier.cc b/runtime/vm/intrinsifier.cc
index d2df9ee..37ff3d7 100644
--- a/runtime/vm/intrinsifier.cc
+++ b/runtime/vm/intrinsifier.cc
@@ -24,7 +24,6 @@
DECLARE_FLAG(bool, code_comments);
DECLARE_FLAG(bool, print_flow_graph);
DECLARE_FLAG(bool, print_flow_graph_optimized);
-DECLARE_FLAG(bool, enable_type_checks);
bool Intrinsifier::CanIntrinsify(const Function& function) {
if (!FLAG_intrinsify) return false;
@@ -35,6 +34,7 @@
}
+#if defined(DART_NO_SNAPSHOT)
void Intrinsifier::InitializeState() {
Isolate* isolate = Isolate::Current();
Library& lib = Library::Handle(isolate);
@@ -91,6 +91,7 @@
#undef SETUP_FUNCTION
}
+#endif // defined(DART_NO_SNAPSHOT).
static void EmitCodeFor(FlowGraphCompiler* compiler,
@@ -144,7 +145,6 @@
switch (function.recognized_kind()) {
#define EMIT_CASE(class_name, function_name, enum_name, fp) \
case MethodRecognizer::k##enum_name: \
- CHECK_FINGERPRINT3(function, class_name, function_name, enum_name, fp); \
if (!Build_##enum_name(graph)) return false; \
break;
@@ -188,23 +188,21 @@
#define EMIT_CASE(class_name, function_name, enum_name, fp) \
case MethodRecognizer::k##enum_name: \
- CHECK_FINGERPRINT3(function, class_name, function_name, enum_name, fp); \
compiler->assembler()->Comment("Intrinsic"); \
enum_name(compiler->assembler()); \
break;
- if (FLAG_throw_on_javascript_int_overflow && (Smi::kBits >= 32)) {
- // Integer intrinsics are in the core library, but we don't want to
- // intrinsify when Smi > 32 bits if we are looking for javascript integer
- // overflow.
+ switch (function.recognized_kind()) {
+ ALL_INTRINSICS_NO_INTEGER_LIB_LIST(EMIT_CASE);
+ default:
+ break;
+ }
+ // Integer intrinsics are in the core library, but we don't want to
+ // intrinsify when Smi > 32 bits if we are looking for javascript integer
+ // overflow.
+ if (!(FLAG_throw_on_javascript_int_overflow && (Smi::kBits >= 32))) {
switch (function.recognized_kind()) {
- ALL_INTRINSICS_NO_INTEGER_LIB_LIST(EMIT_CASE);
- default:
- break;
- }
- } else {
- switch (function.recognized_kind()) {
- ALL_INTRINSICS_LIST(EMIT_CASE);
+ CORE_INTEGER_LIB_INTRINSIC_LIST(EMIT_CASE)
default:
break;
}
diff --git a/runtime/vm/intrinsifier.h b/runtime/vm/intrinsifier.h
index f334446..0203632 100644
--- a/runtime/vm/intrinsifier.h
+++ b/runtime/vm/intrinsifier.h
@@ -23,7 +23,9 @@
public:
static void Intrinsify(const ParsedFunction& parsed_function,
FlowGraphCompiler* compiler);
+#if defined(DART_NO_SNAPSHOT)
static void InitializeState();
+#endif
static bool GraphIntrinsify(const ParsedFunction& parsed_function,
FlowGraphCompiler* compiler);
diff --git a/runtime/vm/intrinsifier_arm.cc b/runtime/vm/intrinsifier_arm.cc
index f81581b..3cf09c5 100644
--- a/runtime/vm/intrinsifier_arm.cc
+++ b/runtime/vm/intrinsifier_arm.cc
@@ -18,8 +18,6 @@
namespace dart {
-DECLARE_FLAG(bool, enable_type_checks);
-
// When entering intrinsics code:
// R5: IC Data
// R4: Arguments descriptor
@@ -793,7 +791,14 @@
void Intrinsifier::Smi_bitLength(Assembler* assembler) {
- // TODO(sra): Implement as word-length - CLZ.
+ __ ldr(R0, Address(SP, 0 * kWordSize));
+ __ SmiUntag(R0);
+ // XOR with sign bit to complement bits if value is negative.
+ __ eor(R0, R0, Operand(R0, ASR, 31));
+ __ clz(R0, R0);
+ __ rsb(R0, R0, Operand(32));
+ __ SmiTag(R0);
+ __ Ret();
}
@@ -875,7 +880,7 @@
__ Bind(&loop_entry);
__ teq(R8, Operand(R6));
__ b(&loop, NE);
- __ str(R1, Address(R8, Bigint::kBytesPerDigit, Address::PostIndex));
+ __ str(R1, Address(R8, 0));
// Returning Object::null() is not required, since this method is private.
__ Ret();
}
diff --git a/runtime/vm/intrinsifier_arm64.cc b/runtime/vm/intrinsifier_arm64.cc
index a877dc9..9e44953 100644
--- a/runtime/vm/intrinsifier_arm64.cc
+++ b/runtime/vm/intrinsifier_arm64.cc
@@ -17,8 +17,6 @@
namespace dart {
-DECLARE_FLAG(bool, enable_type_checks);
-
// When entering intrinsics code:
// R5: IC Data
// R4: Arguments descriptor
@@ -692,17 +690,107 @@
void Intrinsifier::Smi_bitLength(Assembler* assembler) {
- // TODO(sra): Implement as word-length - CLZ.
+ __ ldr(R0, Address(SP, 0 * kWordSize));
+ __ SmiUntag(R0);
+ // XOR with sign bit to complement bits if value is negative.
+ __ eor(R0, R0, Operand(R0, ASR, 63));
+ __ clz(R0, R0);
+ __ LoadImmediate(R1, 64, kNoPP);
+ __ sub(R0, R1, Operand(R0));
+ __ SmiTag(R0);
+ __ ret();
}
void Intrinsifier::Bigint_lsh(Assembler* assembler) {
- // TODO(regis): Implement.
+ // static void _lsh(Uint32List x_digits, int x_used, int n,
+ // Uint32List r_digits)
+
+ // R2 = x_used, R3 = x_digits, x_used > 0, x_used is Smi.
+ __ ldp(R2, R3, Address(SP, 2 * kWordSize, Address::PairOffset));
+ __ add(R2, R2, Operand(2)); // x_used > 0, Smi. R2 = x_used + 1, round up.
+ __ AsrImmediate(R2, R2, 2); // R2 = num of digit pairs to read.
+ // R4 = r_digits, R5 = n, n is Smi, n % _DIGIT_BITS != 0.
+ __ ldp(R4, R5, Address(SP, 0 * kWordSize, Address::PairOffset));
+ __ SmiUntag(R5);
+ // R0 = n ~/ (2*_DIGIT_BITS)
+ __ AsrImmediate(R0, R5, 6);
+ // R6 = &x_digits[0]
+ __ add(R6, R3, Operand(TypedData::data_offset() - kHeapObjectTag));
+ // R7 = &x_digits[2*R2]
+ __ add(R7, R6, Operand(R2, LSL, 3));
+ // R8 = &r_digits[2*1]
+ __ add(R8, R4, Operand(TypedData::data_offset() - kHeapObjectTag +
+ 2 * Bigint::kBytesPerDigit));
+ // R8 = &r_digits[2*(R2 + n ~/ (2*_DIGIT_BITS) + 1)]
+ __ add(R0, R0, Operand(R2));
+ __ add(R8, R8, Operand(R0, LSL, 3));
+ // R3 = n % (2 * _DIGIT_BITS)
+ __ AndImmediate(R3, R5, 63, kNoPP);
+ // R2 = 64 - R3
+ __ LoadImmediate(R2, 64, kNoPP);
+ __ sub(R2, R2, Operand(R3));
+ __ mov(R1, ZR);
+ Label loop;
+ __ Bind(&loop);
+ __ ldr(R0, Address(R7, -2 * Bigint::kBytesPerDigit, Address::PreIndex));
+ __ lsrv(R4, R0, R2);
+ __ orr(R1, R1, Operand(R4));
+ __ str(R1, Address(R8, -2 * Bigint::kBytesPerDigit, Address::PreIndex));
+ __ lslv(R1, R0, R3);
+ __ cmp(R7, Operand(R6));
+ __ b(&loop, NE);
+ __ str(R1, Address(R8, -2 * Bigint::kBytesPerDigit, Address::PreIndex));
+ // Returning Object::null() is not required, since this method is private.
+ __ ret();
}
void Intrinsifier::Bigint_rsh(Assembler* assembler) {
- // TODO(regis): Implement.
+ // static void _lsh(Uint32List x_digits, int x_used, int n,
+ // Uint32List r_digits)
+
+ // R2 = x_used, R3 = x_digits, x_used > 0, x_used is Smi.
+ __ ldp(R2, R3, Address(SP, 2 * kWordSize, Address::PairOffset));
+ __ add(R2, R2, Operand(2)); // x_used > 0, Smi. R2 = x_used + 1, round up.
+ __ AsrImmediate(R2, R2, 2); // R2 = num of digit pairs to read.
+ // R4 = r_digits, R5 = n, n is Smi, n % _DIGIT_BITS != 0.
+ __ ldp(R4, R5, Address(SP, 0 * kWordSize, Address::PairOffset));
+ __ SmiUntag(R5);
+ // R0 = n ~/ (2*_DIGIT_BITS)
+ __ AsrImmediate(R0, R5, 6);
+ // R8 = &r_digits[0]
+ __ add(R8, R4, Operand(TypedData::data_offset() - kHeapObjectTag));
+ // R7 = &x_digits[2*(n ~/ (2*_DIGIT_BITS))]
+ __ add(R7, R3, Operand(TypedData::data_offset() - kHeapObjectTag));
+ __ add(R7, R7, Operand(R0, LSL, 3));
+ // R6 = &r_digits[2*(R2 - n ~/ (2*_DIGIT_BITS) - 1)]
+ __ add(R0, R0, Operand(1));
+ __ sub(R0, R2, Operand(R0));
+ __ add(R6, R8, Operand(R0, LSL, 3));
+ // R3 = n % (2*_DIGIT_BITS)
+ __ AndImmediate(R3, R5, 63, kNoPP);
+ // R2 = 64 - R3
+ __ LoadImmediate(R2, 64, kNoPP);
+ __ sub(R2, R2, Operand(R3));
+ // R1 = x_digits[n ~/ (2*_DIGIT_BITS)] >> (n % (2*_DIGIT_BITS))
+ __ ldr(R1, Address(R7, 2 * Bigint::kBytesPerDigit, Address::PostIndex));
+ __ lsrv(R1, R1, R3);
+ Label loop_entry;
+ __ b(&loop_entry);
+ Label loop;
+ __ Bind(&loop);
+ __ ldr(R0, Address(R7, 2 * Bigint::kBytesPerDigit, Address::PostIndex));
+ __ lslv(R4, R0, R2);
+ __ orr(R1, R1, Operand(R4));
+ __ str(R1, Address(R8, 2 * Bigint::kBytesPerDigit, Address::PostIndex));
+ __ lsrv(R1, R0, R3);
+ __ Bind(&loop_entry);
+ __ cmp(R8, Operand(R6));
+ __ b(&loop, NE);
+ __ str(R1, Address(R8, 0));
+ // Returning Object::null() is not required, since this method is private.
+ __ ret();
}
diff --git a/runtime/vm/intrinsifier_ia32.cc b/runtime/vm/intrinsifier_ia32.cc
index 66ea7d0..7bc8fd6 100644
--- a/runtime/vm/intrinsifier_ia32.cc
+++ b/runtime/vm/intrinsifier_ia32.cc
@@ -24,8 +24,6 @@
namespace dart {
-DECLARE_FLAG(bool, enable_type_checks);
-
// When entering intrinsics code:
// ECX: IC Data
// EDX: Arguments descriptor
@@ -789,7 +787,7 @@
// Argument is Smi (receiver).
void Intrinsifier::Smi_bitNegate(Assembler* assembler) {
- __ movl(EAX, Address(ESP, + 1 * kWordSize)); // Index.
+ __ movl(EAX, Address(ESP, + 1 * kWordSize)); // Receiver.
__ notl(EAX);
__ andl(EAX, Immediate(~kSmiTagMask)); // Remove inverted smi-tag.
__ ret();
@@ -798,7 +796,7 @@
void Intrinsifier::Smi_bitLength(Assembler* assembler) {
ASSERT(kSmiTagShift == 1);
- __ movl(EAX, Address(ESP, + 1 * kWordSize)); // Index.
+ __ movl(EAX, Address(ESP, + 1 * kWordSize)); // Receiver.
// XOR with sign bit to complement bits if value is negative.
__ movl(ECX, EAX);
__ sarl(ECX, Immediate(31)); // All 0 or all 1.
diff --git a/runtime/vm/intrinsifier_mips.cc b/runtime/vm/intrinsifier_mips.cc
index 330c589..2163bbe 100644
--- a/runtime/vm/intrinsifier_mips.cc
+++ b/runtime/vm/intrinsifier_mips.cc
@@ -17,8 +17,6 @@
namespace dart {
-DECLARE_FLAG(bool, enable_type_checks);
-
// When entering intrinsics code:
// S5: IC Data
// S4: Arguments descriptor
@@ -788,17 +786,115 @@
void Intrinsifier::Smi_bitLength(Assembler* assembler) {
- // TODO(sra): Implement.
+ __ lw(V0, Address(SP, 0 * kWordSize));
+ __ SmiUntag(V0);
+ // XOR with sign bit to complement bits if value is negative.
+ __ sra(T0, V0, 31);
+ __ xor_(V0, V0, T0);
+ __ clz(V0, V0);
+ __ LoadImmediate(T0, 32);
+ __ subu(V0, T0, V0);
+ __ Ret();
+ __ delay_slot()->SmiTag(V0);
}
void Intrinsifier::Bigint_lsh(Assembler* assembler) {
- // TODO(regis): Implement.
+ // static void _lsh(Uint32List x_digits, int x_used, int n,
+ // Uint32List r_digits)
+
+ // T2 = x_used, T3 = x_digits, x_used > 0, x_used is Smi.
+ __ lw(T2, Address(SP, 2 * kWordSize));
+ __ lw(T3, Address(SP, 3 * kWordSize));
+ // T4 = r_digits, T5 = n, n is Smi, n % _DIGIT_BITS != 0.
+ __ lw(T4, Address(SP, 0 * kWordSize));
+ __ lw(T5, Address(SP, 1 * kWordSize));
+ __ SmiUntag(T5);
+ // T0 = n ~/ _DIGIT_BITS
+ __ sra(T0, T5, 5);
+ // T6 = &x_digits[0]
+ __ addiu(T6, T3, Immediate(TypedData::data_offset() - kHeapObjectTag));
+ // V0 = &x_digits[x_used]
+ __ sll(T2, T2, 1);
+ __ addu(V0, T6, T2);
+ // V1 = &r_digits[1]
+ __ addiu(V1, T4, Immediate(TypedData::data_offset() - kHeapObjectTag +
+ Bigint::kBytesPerDigit));
+ // V1 = &r_digits[x_used + n ~/ _DIGIT_BITS + 1]
+ __ addu(V1, V1, T2);
+ __ sll(T1, T0, 2);
+ __ addu(V1, V1, T1);
+ // T3 = n % _DIGIT_BITS
+ __ andi(T3, T5, Immediate(31));
+ // T2 = 32 - T3
+ __ subu(T2, ZR, T3);
+ __ addiu(T2, T2, Immediate(32));
+ __ mov(T1, ZR);
+ Label loop;
+ __ Bind(&loop);
+ __ addiu(V0, V0, Immediate(-Bigint::kBytesPerDigit));
+ __ lw(T0, Address(V0, 0));
+ __ srlv(AT, T0, T2);
+ __ or_(T1, T1, AT);
+ __ addiu(V1, V1, Immediate(-Bigint::kBytesPerDigit));
+ __ sw(T1, Address(V1, 0));
+ __ bne(V0, T6, &loop);
+ __ delay_slot()->sllv(T1, T0, T3);
+ __ sw(T1, Address(V1, -Bigint::kBytesPerDigit));
+ // Returning Object::null() is not required, since this method is private.
+ __ Ret();
}
void Intrinsifier::Bigint_rsh(Assembler* assembler) {
- // TODO(regis): Implement.
+ // static void _lsh(Uint32List x_digits, int x_used, int n,
+ // Uint32List r_digits)
+
+ // T2 = x_used, T3 = x_digits, x_used > 0, x_used is Smi.
+ __ lw(T2, Address(SP, 2 * kWordSize));
+ __ lw(T3, Address(SP, 3 * kWordSize));
+ // T4 = r_digits, T5 = n, n is Smi, n % _DIGIT_BITS != 0.
+ __ lw(T4, Address(SP, 0 * kWordSize));
+ __ lw(T5, Address(SP, 1 * kWordSize));
+ __ SmiUntag(T5);
+ // T0 = n ~/ _DIGIT_BITS
+ __ sra(T0, T5, 5);
+ // V1 = &r_digits[0]
+ __ addiu(V1, T4, Immediate(TypedData::data_offset() - kHeapObjectTag));
+ // V0 = &x_digits[n ~/ _DIGIT_BITS]
+ __ addiu(V0, T3, Immediate(TypedData::data_offset() - kHeapObjectTag));
+ __ sll(T1, T0, 2);
+ __ addu(V0, V0, T1);
+ // T6 = &r_digits[x_used - n ~/ _DIGIT_BITS - 1]
+ __ sll(T2, T2, 1);
+ __ addu(T6, V1, T2);
+ __ subu(T6, T6, T1);
+ __ addiu(T6, T6, Immediate(-4));
+ // T3 = n % _DIGIT_BITS
+ __ andi(T3, T5, Immediate(31));
+ // T2 = 32 - T3
+ __ subu(T2, ZR, T3);
+ __ addiu(T2, T2, Immediate(32));
+ // T1 = x_digits[n ~/ _DIGIT_BITS] >> (n % _DIGIT_BITS)
+ __ lw(T1, Address(V0, 0));
+ __ addiu(V0, V0, Immediate(Bigint::kBytesPerDigit));
+ Label loop_exit;
+ __ beq(V1, T6, &loop_exit);
+ __ delay_slot()->srlv(T1, T1, T3);
+ Label loop;
+ __ Bind(&loop);
+ __ lw(T0, Address(V0, 0));
+ __ addiu(V0, V0, Immediate(Bigint::kBytesPerDigit));
+ __ sllv(AT, T0, T2);
+ __ or_(T1, T1, AT);
+ __ sw(T1, Address(V1, 0));
+ __ addiu(V1, V1, Immediate(Bigint::kBytesPerDigit));
+ __ bne(V1, T6, &loop);
+ __ delay_slot()->srlv(T1, T0, T3);
+ __ Bind(&loop_exit);
+ __ sw(T1, Address(V1, 0));
+ // Returning Object::null() is not required, since this method is private.
+ __ Ret();
}
diff --git a/runtime/vm/intrinsifier_x64.cc b/runtime/vm/intrinsifier_x64.cc
index d34759f..2f0655d 100644
--- a/runtime/vm/intrinsifier_x64.cc
+++ b/runtime/vm/intrinsifier_x64.cc
@@ -17,8 +17,6 @@
namespace dart {
-DECLARE_FLAG(bool, enable_type_checks);
-
// When entering intrinsics code:
// RBX: IC Data
// R10: Arguments descriptor
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 9f503b1..fb48273 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -937,13 +937,13 @@
MutexLocker ml(mutex_);
// Check if we are in a valid state to make the isolate runnable.
- if (is_runnable_ == true) {
+ if (is_runnable() == true) {
return false; // Already runnable.
}
// Set the isolate as runnable and if we are being spawned schedule
// isolate on thread pool for execution.
ASSERT(object_store()->root_library() != Library::null());
- is_runnable_ = true;
+ set_is_runnable(true);
if (!ServiceIsolate::IsServiceIsolate(this)) {
message_handler()->set_pause_on_start(FLAG_pause_isolates_on_start);
message_handler()->set_pause_on_exit(FLAG_pause_isolates_on_exit);
diff --git a/runtime/vm/method_recognizer.cc b/runtime/vm/method_recognizer.cc
index fcfbdd6..1aff186 100644
--- a/runtime/vm/method_recognizer.cc
+++ b/runtime/vm/method_recognizer.cc
@@ -25,15 +25,21 @@
}
-const char* MethodRecognizer::KindToCString(Kind kind) {
#define KIND_TO_STRING(class_name, function_name, enum_name, fp) \
- if (kind == k##enum_name) return #enum_name;
+ #enum_name,
+static const char* recognized_list_method_name[] = {
RECOGNIZED_LIST(KIND_TO_STRING)
+};
#undef KIND_TO_STRING
+
+const char* MethodRecognizer::KindToCString(Kind kind) {
+ if (kind > kUnknown && kind < kNumRecognizedMethods)
+ return recognized_list_method_name[kind];
return "?";
}
+#if defined(DART_NO_SNAPSHOT)
void MethodRecognizer::InitializeState() {
GrowableArray<Library*> libs(3);
libs.Add(&Library::ZoneHandle(Library::CoreLibrary()));
@@ -83,5 +89,6 @@
#undef SET_IS_POLYMORPHIC_TARGET
#undef SET_FUNCTION_BIT
}
+#endif // defined(DART_NO_SNAPSHOT).
} // namespace dart
diff --git a/runtime/vm/method_recognizer.h b/runtime/vm/method_recognizer.h
index d62c588..17dbb1b 100644
--- a/runtime/vm/method_recognizer.h
+++ b/runtime/vm/method_recognizer.h
@@ -455,7 +455,9 @@
static bool AlwaysInline(const Function& function);
static bool PolymorphicTarget(const Function& function);
static const char* KindToCString(Kind kind);
+#if defined(DART_NO_SNAPSHOT)
static void InitializeState();
+#endif // defined(DART_NO_SNAPSHOT).
};
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 401a2e4..f4f90c6 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -66,7 +66,6 @@
DEFINE_FLAG(bool, use_lib_cache, true, "Use library name cache");
DEFINE_FLAG(bool, trace_field_guards, false, "Trace changes in field's cids.");
-DECLARE_FLAG(bool, enable_type_checks);
DECLARE_FLAG(bool, error_on_bad_override);
DECLARE_FLAG(bool, trace_compiler);
DECLARE_FLAG(bool, trace_deoptimization);
@@ -627,11 +626,9 @@
// Allocate and initialize the empty_descriptors instance.
{
- uword address = heap->Allocate(
- PcDescriptors::InstanceSize(0, RawPcDescriptors::kCompressedRecSize),
- Heap::kOld);
+ uword address = heap->Allocate(PcDescriptors::InstanceSize(0), Heap::kOld);
InitializeObject(address, kPcDescriptorsCid,
- PcDescriptors::InstanceSize(0, RawPcDescriptors::kCompressedRecSize));
+ PcDescriptors::InstanceSize(0));
PcDescriptors::initializeHandle(
empty_descriptors_,
reinterpret_cast<RawPcDescriptors*>(address + kHeapObjectTag));
@@ -928,6 +925,10 @@
RawError* Object::Init(Isolate* isolate) {
TIMERSCOPE(isolate, time_bootstrap);
+
+#if defined(DART_NO_SNAPSHOT)
+ // Object::Init version when we are running in a version of dart that does
+ // not have a full snapshot linked in.
ObjectStore* object_store = isolate->object_store();
Class& cls = Class::Handle(isolate);
@@ -1427,11 +1428,10 @@
isolate->object_store()->InitKnownObjects();
return Error::null();
-}
-
-
-void Object::InitFromSnapshot(Isolate* isolate) {
- TIMERSCOPE(isolate, time_bootstrap);
+#else // defined(DART_NO_SNAPSHOT).
+ // Object::Init version when we are running in a version of dart that has
+ // a full snapshot linked in and an isolate is initialized using the full
+ // snapshot.
ObjectStore* object_store = isolate->object_store();
Class& cls = Class::Handle();
@@ -1541,6 +1541,9 @@
object_store->set_empty_context(context);
StubCode::InitBootstrapStubs(isolate);
+#endif // defined(DART_NO_SNAPSHOT).
+
+ return Error::null();
}
@@ -6973,8 +6976,6 @@
RawString* Field::GetterName(const String& field_name) {
CompilerStats::make_accessor_name++;
- // TODO(koda): Avoid most of these allocations by adding prefix-based lookup
- // to Class::Lookup*.
return String::Concat(Symbols::GetterPrefix(), field_name);
}
@@ -6986,8 +6987,6 @@
RawString* Field::SetterName(const String& field_name) {
CompilerStats::make_accessor_name++;
- // TODO(koda): Avoid most of these allocations by adding prefix-based lookup
- // to Class::Lookup*.
return String::Concat(Symbols::SetterPrefix(), field_name);
}
@@ -8914,6 +8913,19 @@
}
+static bool ShouldBePrivate(const String& name) {
+ return
+ (name.Length() >= 1 &&
+ name.CharAt(0) == '_') ||
+ (name.Length() >= 5 &&
+ (name.CharAt(4) == '_' &&
+ (name.CharAt(0) == 'g' || name.CharAt(0) == 's') &&
+ name.CharAt(1) == 'e' &&
+ name.CharAt(2) == 't' &&
+ name.CharAt(3) == ':'));
+}
+
+
RawObject* Library::ResolveName(const String& name) const {
Object& obj = Object::Handle();
if (FLAG_use_lib_cache && LookupResolvedNamesCache(name, &obj)) {
@@ -8930,7 +8942,7 @@
if (obj.IsNull()) {
accessor_name = Field::SetterName(name);
obj = LookupLocalObject(accessor_name);
- if (obj.IsNull()) {
+ if (obj.IsNull() && !ShouldBePrivate(name)) {
obj = LookupImportedObject(name);
}
}
@@ -9266,19 +9278,6 @@
}
-static bool ShouldBePrivate(const String& name) {
- return
- (name.Length() >= 1 &&
- name.CharAt(0) == '_') ||
- (name.Length() >= 5 &&
- (name.CharAt(4) == '_' &&
- (name.CharAt(0) == 'g' || name.CharAt(0) == 's') &&
- name.CharAt(1) == 'e' &&
- name.CharAt(2) == 't' &&
- name.CharAt(3) == ':'));
-}
-
-
RawField* Library::LookupFieldAllowPrivate(const String& name) const {
Object& obj = Object::Handle(LookupObjectAllowPrivate(name));
if (obj.IsField()) {
@@ -9352,6 +9351,7 @@
String& first_import_lib_url = String::Handle();
Object& found_obj = Object::Handle();
String& found_obj_name = String::Handle();
+ ASSERT(!ShouldBePrivate(name));
for (intptr_t i = 0; i < num_imports(); i++) {
import ^= ImportAt(i);
obj = import.Lookup(name);
@@ -9841,6 +9841,11 @@
}
+RawLibrary* Library::DeveloperLibrary() {
+ return Isolate::Current()->object_store()->developer_library();
+}
+
+
RawLibrary* Library::InternalLibrary() {
return Isolate::Current()->object_store()->internal_library();
}
@@ -9866,13 +9871,13 @@
}
-RawLibrary* Library::TypedDataLibrary() {
- return Isolate::Current()->object_store()->typed_data_library();
+RawLibrary* Library::ProfilerLibrary() {
+ return Isolate::Current()->object_store()->profiler_library();
}
-RawLibrary* Library::ProfilerLibrary() {
- return Isolate::Current()->object_store()->profiler_library();
+RawLibrary* Library::TypedDataLibrary() {
+ return Isolate::Current()->object_store()->typed_data_library();
}
@@ -10356,18 +10361,13 @@
intptr_t ignore = 0;
// Lookup the name in the library's symbols.
- const String* filter_name = &name;
Object& obj = Object::Handle(isolate, lib.LookupEntry(name, &ignore));
- if (Field::IsGetterName(name)) {
- filter_name = &String::Handle(Field::NameFromGetter(name));
- } else if (Field::IsSetterName(name)) {
- filter_name = &String::Handle(Field::NameFromSetter(name));
- } else {
- if (obj.IsNull() || obj.IsLibraryPrefix()) {
- obj = lib.LookupEntry(String::Handle(Field::GetterName(name)), &ignore);
- if (obj.IsNull()) {
- obj = lib.LookupEntry(String::Handle(Field::SetterName(name)), &ignore);
- }
+ if (!Field::IsGetterName(name) &&
+ !Field::IsSetterName(name) &&
+ (obj.IsNull() || obj.IsLibraryPrefix())) {
+ obj = lib.LookupEntry(String::Handle(Field::GetterName(name)), &ignore);
+ if (obj.IsNull()) {
+ obj = lib.LookupEntry(String::Handle(Field::SetterName(name)), &ignore);
}
}
@@ -10376,7 +10376,7 @@
// Lookup in the re-exported symbols.
obj = lib.LookupReExport(name);
}
- if (obj.IsNull() || HidesName(*filter_name) || obj.IsLibraryPrefix()) {
+ if (obj.IsNull() || HidesName(name) || obj.IsLibraryPrefix()) {
return Object::null();
}
return obj.raw();
@@ -10492,13 +10492,13 @@
MATH_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS);
all_libs.Clear();
- all_libs.Add(&Library::ZoneHandle(Library::TypedDataLibrary()));
- TYPED_DATA_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS);
-
- all_libs.Clear();
all_libs.Add(&Library::ZoneHandle(Library::ProfilerLibrary()));
PROFILER_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS);
+ all_libs.Clear();
+ all_libs.Add(&Library::ZoneHandle(Library::TypedDataLibrary()));
+ TYPED_DATA_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS);
+
#undef CHECK_FINGERPRINTS
Class& cls = Class::Handle();
@@ -10554,6 +10554,45 @@
}
+// Encode integer in SLEB128 format.
+void PcDescriptors::EncodeInteger(GrowableArray<uint8_t>* data,
+ intptr_t value) {
+ bool is_last_part = false;
+ while (!is_last_part) {
+ intptr_t part = value & 0x7f;
+ value >>= 7;
+ if ((value == 0 && (part & 0x40) == 0) ||
+ (value == -1 && (part & 0x40) != 0)) {
+ is_last_part = true;
+ } else {
+ part |= 0x80;
+ }
+ data->Add(part);
+ }
+}
+
+
+// Decode SLEB128 encoded integer. Update byte_index to the next integer.
+intptr_t PcDescriptors::DecodeInteger(intptr_t* byte_index) const {
+ NoSafepointScope no_safepoint;
+ const uint8_t* data = raw_ptr()->data();
+ ASSERT(*byte_index < Length());
+ uword shift = 0;
+ intptr_t value = 0;
+ intptr_t part = 0;
+ do {
+ part = data[(*byte_index)++];
+ value |= (part & 0x7f) << shift;
+ shift += 7;
+ } while ((part & 0x80) != 0);
+
+ if (shift < sizeof(value) * 8 && (part & 0x40) != 0) {
+ value |= -(1 << shift);
+ }
+ return value;
+}
+
+
intptr_t PcDescriptors::Length() const {
return raw_ptr()->length_;
}
@@ -10564,35 +10603,27 @@
}
-intptr_t PcDescriptors::RecordSizeInBytes() const {
- return raw_ptr()->record_size_in_bytes_;
-}
-
-
-void PcDescriptors::SetRecordSizeInBytes(intptr_t value) const {
- StoreNonPointer(&raw_ptr()->record_size_in_bytes_, value);
-}
-
-
-RawPcDescriptors* PcDescriptors::New(intptr_t num_descriptors,
- bool has_try_index) {
- ASSERT(Object::pc_descriptors_class() != Class::null());
- if (num_descriptors < 0 || num_descriptors > kMaxElements) {
- // This should be caught before we reach here.
- FATAL1("Fatal error in PcDescriptors::New: "
- "invalid num_descriptors %" Pd "\n", num_descriptors);
+void PcDescriptors::CopyData(GrowableArray<uint8_t>* delta_encoded_data) {
+ NoSafepointScope no_safepoint;
+ uint8_t* data = UnsafeMutableNonPointer(&raw_ptr()->data()[0]);
+ for (intptr_t i = 0; i < delta_encoded_data->length(); ++i) {
+ data[i] = (*delta_encoded_data)[i];
}
+}
+
+
+RawPcDescriptors* PcDescriptors::New(GrowableArray<uint8_t>* data) {
+ ASSERT(Object::pc_descriptors_class() != Class::null());
PcDescriptors& result = PcDescriptors::Handle();
{
- const intptr_t rec_size = RawPcDescriptors::RecordSize(has_try_index);
- uword size = PcDescriptors::InstanceSize(num_descriptors, rec_size);
+ uword size = PcDescriptors::InstanceSize(data->length());
RawObject* raw = Object::Allocate(PcDescriptors::kClassId,
size,
Heap::kOld);
NoSafepointScope no_safepoint;
result ^= raw;
- result.SetLength(num_descriptors);
- result.SetRecordSizeInBytes(rec_size);
+ result.SetLength(data->length());
+ result.CopyData(data);
}
return result.raw();
}
@@ -12050,6 +12081,18 @@
}
+RawLocalVarDescriptors* Code::GetLocalVarDescriptors() const {
+ const LocalVarDescriptors& v = LocalVarDescriptors::Handle(var_descriptors());
+ if (v.IsNull()) {
+ ASSERT(!is_optimized());
+ const Function& f = Function::Handle(function());
+ ASSERT(!f.IsIrregexpFunction()); // Not yet implemented.
+ Compiler::ComputeLocalVarDescriptors(*this);
+ }
+ return var_descriptors();
+}
+
+
void Code::set_state_bits(intptr_t bits) const {
StoreNonPointer(&raw_ptr()->state_bits_, bits);
}
@@ -15093,41 +15136,39 @@
const char* Type::ToCString() const {
- if (IsResolved()) {
- const TypeArguments& type_arguments = TypeArguments::Handle(arguments());
- const char* class_name;
- if (HasResolvedTypeClass()) {
- class_name = String::Handle(
- Class::Handle(type_class()).Name()).ToCString();
- } else {
- class_name = UnresolvedClass::Handle(unresolved_class()).ToCString();
- }
- if (type_arguments.IsNull()) {
- const char* format = "Type: class '%s'";
- const intptr_t len = OS::SNPrint(NULL, 0, format, class_name) + 1;
- char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
- OS::SNPrint(chars, len, format, class_name);
- return chars;
- } else if (IsFinalized() && IsRecursive()) {
- const char* format = "Type: (@%" Px " H%" Px ") class '%s', args:[%s]";
- const intptr_t hash = Hash();
- const char* args_cstr = TypeArguments::Handle(arguments()).ToCString();
- const intptr_t len =
- OS::SNPrint(NULL, 0, format, raw(), hash, class_name, args_cstr) + 1;
- char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
- OS::SNPrint(chars, len, format, raw(), hash, class_name, args_cstr);
- return chars;
- } else {
- const char* format = "Type: class '%s', args:[%s]";
- const char* args_cstr = TypeArguments::Handle(arguments()).ToCString();
- const intptr_t len =
- OS::SNPrint(NULL, 0, format, class_name, args_cstr) + 1;
- char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
- OS::SNPrint(chars, len, format, class_name, args_cstr);
- return chars;
- }
+ const char* unresolved = IsResolved() ? "" : "Unresolved ";
+ const TypeArguments& type_arguments = TypeArguments::Handle(arguments());
+ const char* class_name;
+ if (HasResolvedTypeClass()) {
+ class_name = String::Handle(
+ Class::Handle(type_class()).Name()).ToCString();
} else {
- return "Unresolved Type";
+ class_name = UnresolvedClass::Handle(unresolved_class()).ToCString();
+ }
+ if (type_arguments.IsNull()) {
+ const char* format = "%sType: class '%s'";
+ const intptr_t len =
+ OS::SNPrint(NULL, 0, format, unresolved, class_name) + 1;
+ char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
+ OS::SNPrint(chars, len, format, unresolved, class_name);
+ return chars;
+ } else if (IsResolved() && IsFinalized() && IsRecursive()) {
+ const char* format = "Type: (@%" Px " H%" Px ") class '%s', args:[%s]";
+ const intptr_t hash = Hash();
+ const char* args_cstr = TypeArguments::Handle(arguments()).ToCString();
+ const intptr_t len =
+ OS::SNPrint(NULL, 0, format, raw(), hash, class_name, args_cstr) + 1;
+ char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
+ OS::SNPrint(chars, len, format, raw(), hash, class_name, args_cstr);
+ return chars;
+ } else {
+ const char* format = "%sType: class '%s', args:[%s]";
+ const char* args_cstr = TypeArguments::Handle(arguments()).ToCString();
+ const intptr_t len =
+ OS::SNPrint(NULL, 0, format, unresolved, class_name, args_cstr) + 1;
+ char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
+ OS::SNPrint(chars, len, format, unresolved, class_name, args_cstr);
+ return chars;
}
}
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 4233887..69d0827 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -26,8 +26,6 @@
namespace dart {
-DECLARE_FLAG(bool, use_jscre);
-
// Forward declarations.
#define DEFINE_FORWARD_DECLARATION(clazz) \
class clazz;
@@ -527,7 +525,6 @@
// Initialize a new isolate either from source or from a snapshot.
static RawError* Init(Isolate* isolate);
- static void InitFromSnapshot(Isolate* isolate);
static void MakeUnusedSpaceTraversable(const Object& obj,
intptr_t original_size,
@@ -3048,13 +3045,14 @@
static RawLibrary* ConvertLibrary();
static RawLibrary* CoreLibrary();
static RawLibrary* CollectionLibrary();
+ static RawLibrary* DeveloperLibrary();
static RawLibrary* InternalLibrary();
static RawLibrary* IsolateLibrary();
static RawLibrary* MathLibrary();
static RawLibrary* MirrorsLibrary();
static RawLibrary* NativeWrappersLibrary();
- static RawLibrary* TypedDataLibrary();
static RawLibrary* ProfilerLibrary();
+ static RawLibrary* TypedDataLibrary();
// Eagerly compile all classes and functions in the library.
static RawError* CompileAll();
@@ -3274,43 +3272,20 @@
class PcDescriptors : public Object {
public:
- void AddDescriptor(intptr_t index,
- uword pc_offset,
- RawPcDescriptors::Kind kind,
- int64_t deopt_id,
- int64_t token_pos, // Or deopt reason.
- intptr_t try_index) const { // Or deopt index.
- NoSafepointScope no_safepoint;
- RawPcDescriptors::PcDescriptorRec* rec = recAt(index);
- rec->set_pc_offset(pc_offset);
- rec->set_kind(kind);
- ASSERT(Utils::IsInt(32, deopt_id));
- rec->set_deopt_id(static_cast<int32_t>(deopt_id));
- ASSERT(Utils::IsInt(32, token_pos));
- rec->set_token_pos(static_cast<int32_t>(token_pos),
- RecordSizeInBytes() == RawPcDescriptors::kCompressedRecSize);
- ASSERT(Utils::IsInt(16, try_index));
- rec->set_try_index(try_index);
- ASSERT(rec->try_index() == try_index);
- ASSERT(rec->token_pos() == token_pos);
- }
-
- static const intptr_t kMaxBytesPerElement =
- sizeof(RawPcDescriptors::PcDescriptorRec);
- static const intptr_t kMaxElements = kMaxInt32 / kMaxBytesPerElement;
+ static const intptr_t kBytesPerElement = 1;
+ static const intptr_t kMaxElements = kMaxInt32 / kBytesPerElement;
static intptr_t InstanceSize() {
ASSERT(sizeof(RawPcDescriptors) ==
OFFSET_OF_RETURNED_VALUE(RawPcDescriptors, data));
return 0;
}
- static intptr_t InstanceSize(intptr_t len, intptr_t record_size_in_bytes) {
+ static intptr_t InstanceSize(intptr_t len) {
ASSERT(0 <= len && len <= kMaxElements);
- return RoundedAllocationSize(
- sizeof(RawPcDescriptors) + (len * record_size_in_bytes));
+ return RoundedAllocationSize(sizeof(RawPcDescriptors) + len);
}
- static RawPcDescriptors* New(intptr_t num_descriptors, bool has_try_index);
+ static RawPcDescriptors* New(GrowableArray<uint8_t>* delta_encoded_data);
// Verify (assert) assumptions about pc descriptors in debug mode.
void Verify(const Function& function) const;
@@ -3319,6 +3294,12 @@
void PrintToJSONObject(JSONObject* jsobj, bool ref) const;
+ // Encode integer in SLEB128 format.
+ static void EncodeInteger(GrowableArray<uint8_t>* data, intptr_t value);
+
+ // Decode SLEB128 encoded integer. Update byte_index to the next integer.
+ intptr_t DecodeInteger(intptr_t* byte_index) const;
+
// We would have a VisitPointers function here to traverse the
// pc descriptors table to visit objects if any in the table.
// Note: never return a reference to a RawPcDescriptors::PcDescriptorRec
@@ -3328,73 +3309,62 @@
Iterator(const PcDescriptors& descriptors, intptr_t kind_mask)
: descriptors_(descriptors),
kind_mask_(kind_mask),
- next_ix_(0),
- current_ix_(-1) {
- MoveToMatching();
+ byte_index_(0),
+ cur_pc_offset_(0),
+ cur_kind_(0),
+ cur_deopt_id_(0),
+ cur_token_pos_(0),
+ cur_try_index_(0) {
}
bool MoveNext() {
- if (HasNext()) {
- current_ix_ = next_ix_++;
- MoveToMatching();
- return true;
- } else {
- return false;
+ // Moves to record that matches kind_mask_.
+ while (byte_index_ < descriptors_.Length()) {
+ cur_kind_ = descriptors_.DecodeInteger(&byte_index_);
+ cur_try_index_ = descriptors_.DecodeInteger(&byte_index_);
+ cur_pc_offset_ += descriptors_.DecodeInteger(&byte_index_);
+ cur_deopt_id_ += descriptors_.DecodeInteger(&byte_index_);
+ cur_token_pos_ += descriptors_.DecodeInteger(&byte_index_);
+
+ if ((cur_kind_ & kind_mask_) != 0) {
+ return true; // Current is valid.
+ }
}
+ return false;
}
- uword PcOffset() const {
- NoSafepointScope no_safepoint;
- return descriptors_.recAt(current_ix_)->pc_offset();
- }
- intptr_t DeoptId() const {
- NoSafepointScope no_safepoint;
- return descriptors_.recAt(current_ix_)->deopt_id();
- }
- intptr_t TokenPos() const {
- NoSafepointScope no_safepoint;
- return descriptors_.recAt(current_ix_)->token_pos();
- }
- intptr_t TryIndex() const {
- NoSafepointScope no_safepoint;
- return descriptors_.recAt(current_ix_)->try_index();
- }
+ uword PcOffset() const { return cur_pc_offset_; }
+ intptr_t DeoptId() const { return cur_deopt_id_; }
+ intptr_t TokenPos() const { return cur_token_pos_; }
+ intptr_t TryIndex() const { return cur_try_index_; }
RawPcDescriptors::Kind Kind() const {
- NoSafepointScope no_safepoint;
- return descriptors_.recAt(current_ix_)->kind();
+ return static_cast<RawPcDescriptors::Kind>(cur_kind_);
}
private:
friend class PcDescriptors;
- bool HasNext() const { return next_ix_ < descriptors_.Length(); }
-
// For nested iterations, starting at element after.
explicit Iterator(const Iterator& iter)
: ValueObject(),
descriptors_(iter.descriptors_),
kind_mask_(iter.kind_mask_),
- next_ix_(iter.next_ix_),
- current_ix_(iter.current_ix_) {}
-
- // Moves to record that matches kind_mask_.
- void MoveToMatching() {
- NoSafepointScope no_safepoint;
- while (next_ix_ < descriptors_.Length()) {
- const RawPcDescriptors::PcDescriptorRec& rec =
- *descriptors_.recAt(next_ix_);
- if ((rec.kind() & kind_mask_) != 0) {
- return; // Current is valid.
- } else {
- ++next_ix_;
- }
- }
- }
+ byte_index_(iter.byte_index_),
+ cur_pc_offset_(iter.cur_pc_offset_),
+ cur_kind_(iter.cur_kind_),
+ cur_deopt_id_(iter.cur_deopt_id_),
+ cur_token_pos_(iter.cur_token_pos_),
+ cur_try_index_(iter.cur_try_index_) {}
const PcDescriptors& descriptors_;
const intptr_t kind_mask_;
- intptr_t next_ix_;
- intptr_t current_ix_;
+ intptr_t byte_index_;
+
+ intptr_t cur_pc_offset_;
+ intptr_t cur_kind_;
+ intptr_t cur_deopt_id_;
+ intptr_t cur_token_pos_;
+ intptr_t cur_try_index_;
};
private:
@@ -3402,16 +3372,7 @@
intptr_t Length() const;
void SetLength(intptr_t value) const;
-
- void SetRecordSizeInBytes(intptr_t value) const;
- intptr_t RecordSizeInBytes() const;
-
- RawPcDescriptors::PcDescriptorRec* recAt(intptr_t ix) const {
- ASSERT((0 <= ix) && (ix < Length()));
- uint8_t* d = UnsafeMutableNonPointer(raw_ptr()->data()) +
- (ix * RecordSizeInBytes());
- return reinterpret_cast<RawPcDescriptors::PcDescriptorRec*>(d);
- }
+ void CopyData(GrowableArray<uint8_t>* data);
FINAL_HEAP_OBJECT_IMPLEMENTATION(PcDescriptors, Object);
friend class Class;
@@ -4039,6 +4000,9 @@
StorePointer(&raw_ptr()->var_descriptors_, value.raw());
}
+ // Will compute local var descriptors is necessary.
+ RawLocalVarDescriptors* GetLocalVarDescriptors() const;
+
RawExceptionHandlers* exception_handlers() const {
return raw_ptr()->exception_handlers_;
}
diff --git a/runtime/vm/object_store.cc b/runtime/vm/object_store.cc
index 7ba0aba..c2c14d539 100644
--- a/runtime/vm/object_store.cc
+++ b/runtime/vm/object_store.cc
@@ -62,14 +62,15 @@
core_library_(Library::null()),
collection_library_(Library::null()),
convert_library_(Library::null()),
+ developer_library_(Library::null()),
internal_library_(Library::null()),
isolate_library_(Library::null()),
math_library_(Library::null()),
mirrors_library_(Library::null()),
native_wrappers_library_(Library::null()),
+ profiler_library_(Library::null()),
root_library_(Library::null()),
typed_data_library_(Library::null()),
- profiler_library_(Library::null()),
libraries_(GrowableObjectArray::null()),
pending_classes_(GrowableObjectArray::null()),
pending_functions_(GrowableObjectArray::null()),
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index 8d1519a..c1d7312 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -25,12 +25,13 @@
kCore,
kCollection,
kConvert,
+ kDeveloper,
kInternal,
kIsolate,
kMath,
kMirrors,
- kTypedData,
kProfiler,
+ kTypedData,
};
~ObjectStore();
@@ -257,12 +258,14 @@
RawLibrary* core_library() const { return core_library_; }
RawLibrary* collection_library() const { return collection_library_; }
RawLibrary* convert_library() const { return convert_library_; }
+ RawLibrary* developer_library() const { return developer_library_; }
RawLibrary* internal_library() const { return internal_library_; }
RawLibrary* isolate_library() const { return isolate_library_; }
RawLibrary* math_library() const { return math_library_; }
RawLibrary* mirrors_library() const { return mirrors_library_; }
- RawLibrary* typed_data_library() const { return typed_data_library_; }
RawLibrary* profiler_library() const { return profiler_library_; }
+ RawLibrary* typed_data_library() const { return typed_data_library_; }
+
void set_bootstrap_library(BootstrapLibraryId index, const Library& value) {
switch (index) {
case kAsync:
@@ -277,6 +280,9 @@
case kConvert:
convert_library_ = value.raw();
break;
+ case kDeveloper:
+ developer_library_ = value.raw();
+ break;
case kInternal:
internal_library_ = value.raw();
break;
@@ -289,12 +295,12 @@
case kMirrors:
mirrors_library_ = value.raw();
break;
- case kTypedData:
- typed_data_library_ = value.raw();
- break;
case kProfiler:
profiler_library_ = value.raw();
break;
+ case kTypedData:
+ typed_data_library_ = value.raw();
+ break;
default:
UNREACHABLE();
}
@@ -483,14 +489,15 @@
RawLibrary* core_library_;
RawLibrary* collection_library_;
RawLibrary* convert_library_;
+ RawLibrary* developer_library_;
RawLibrary* internal_library_;
RawLibrary* isolate_library_;
RawLibrary* math_library_;
RawLibrary* mirrors_library_;
RawLibrary* native_wrappers_library_;
+ RawLibrary* profiler_library_;
RawLibrary* root_library_;
RawLibrary* typed_data_library_;
- RawLibrary* profiler_library_;
RawGrowableObjectArray* libraries_;
RawGrowableObjectArray* pending_classes_;
RawGrowableObjectArray* pending_functions_;
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index e76ce3a..5e72ebf 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -15,6 +15,7 @@
#include "vm/simulator.h"
#include "vm/symbols.h"
#include "vm/unit_test.h"
+#include "vm/code_descriptors.h"
namespace dart {
@@ -2865,16 +2866,18 @@
TEST_CASE(PcDescriptors) {
- const int kNumEntries = 6;
- // Add PcDescriptors to the code.
+ DescriptorList* builder = new DescriptorList(0);
+
+ // kind, pc_offset, deopt_id, token_pos, try_index
+ builder->AddDescriptor(RawPcDescriptors::kOther, 10, 1, 20, 1);
+ builder->AddDescriptor(RawPcDescriptors::kDeopt, 20, 2, 30, 0);
+ builder->AddDescriptor(RawPcDescriptors::kOther, 30, 3, 40, 1);
+ builder->AddDescriptor(RawPcDescriptors::kOther, 10, 4, 40, 2);
+ builder->AddDescriptor(RawPcDescriptors::kOther, 10, 5, 80, 3);
+ builder->AddDescriptor(RawPcDescriptors::kOther, 80, 6, 150, 3);
+
PcDescriptors& descriptors = PcDescriptors::Handle();
- descriptors ^= PcDescriptors::New(kNumEntries, true);
- descriptors.AddDescriptor(0, 10, RawPcDescriptors::kOther, 1, 20, 1);
- descriptors.AddDescriptor(1, 20, RawPcDescriptors::kDeopt, 2, 30, 0);
- descriptors.AddDescriptor(2, 30, RawPcDescriptors::kOther, 3, 40, 1);
- descriptors.AddDescriptor(3, 10, RawPcDescriptors::kOther, 4, 40, 2);
- descriptors.AddDescriptor(4, 10, RawPcDescriptors::kOther, 5, 80, 3);
- descriptors.AddDescriptor(5, 80, RawPcDescriptors::kOther, 6, 150, 3);
+ descriptors ^= builder->FinalizePcDescriptors(0);
extern void GenerateIncrement(Assembler* assembler);
Assembler _assembler_;
@@ -2919,18 +2922,19 @@
}
-TEST_CASE(PcDescriptorsCompressed) {
- const int kNumEntries = 6;
- // Add PcDescriptors to the code.
+TEST_CASE(PcDescriptorsLargeDeltas) {
+ DescriptorList* builder = new DescriptorList(0);
+
+ // kind, pc_offset, deopt_id, token_pos, try_index
+ builder->AddDescriptor(RawPcDescriptors::kOther, 100, 1, 200, 1);
+ builder->AddDescriptor(RawPcDescriptors::kDeopt, 200, 2, 300, 0);
+ builder->AddDescriptor(RawPcDescriptors::kOther, 300, 3, 400, 1);
+ builder->AddDescriptor(RawPcDescriptors::kOther, 100, 4, 0, 2);
+ builder->AddDescriptor(RawPcDescriptors::kOther, 100, 5, 800, 3);
+ builder->AddDescriptor(RawPcDescriptors::kOther, 800, 6, 150, 3);
+
PcDescriptors& descriptors = PcDescriptors::Handle();
- // PcDescritpors have no try-index.
- descriptors ^= PcDescriptors::New(kNumEntries, false);
- descriptors.AddDescriptor(0, 10, RawPcDescriptors::kOther, 1, 20, -1);
- descriptors.AddDescriptor(1, 20, RawPcDescriptors::kDeopt, 2, 30, -1);
- descriptors.AddDescriptor(2, 30, RawPcDescriptors::kOther, 3, 40, -1);
- descriptors.AddDescriptor(3, 10, RawPcDescriptors::kOther, 4, 40, -1);
- descriptors.AddDescriptor(4, 10, RawPcDescriptors::kOther, 5, 80, -1);
- descriptors.AddDescriptor(5, 80, RawPcDescriptors::kOther, 6, 150, -1);
+ descriptors ^= builder->FinalizePcDescriptors(0);
extern void GenerateIncrement(Assembler* assembler);
Assembler _assembler_;
@@ -2944,26 +2948,37 @@
PcDescriptors::Iterator iter(pc_descs, RawPcDescriptors::kAnyKind);
EXPECT_EQ(true, iter.MoveNext());
- EXPECT_EQ(static_cast<uword>(10), iter.PcOffset());
- EXPECT_EQ(-1, iter.TryIndex());
+ EXPECT_EQ(200, iter.TokenPos());
+ EXPECT_EQ(1, iter.TryIndex());
+ EXPECT_EQ(static_cast<uword>(100), iter.PcOffset());
EXPECT_EQ(1, iter.DeoptId());
- EXPECT_EQ(20, iter.TokenPos());
+ EXPECT_EQ(RawPcDescriptors::kOther, iter.Kind());
EXPECT_EQ(true, iter.MoveNext());
- EXPECT_EQ(true, iter.MoveNext());
- EXPECT_EQ(true, iter.MoveNext());
- EXPECT_EQ(true, iter.MoveNext());
- EXPECT_EQ(true, iter.MoveNext());
+ EXPECT_EQ(300, iter.TokenPos());
+ EXPECT_EQ(RawPcDescriptors::kDeopt, iter.Kind());
- EXPECT_EQ(-1, iter.TryIndex());
- EXPECT_EQ(static_cast<uword>(80), iter.PcOffset());
+ EXPECT_EQ(true, iter.MoveNext());
+ EXPECT_EQ(400, iter.TokenPos());
+
+ EXPECT_EQ(true, iter.MoveNext());
+ EXPECT_EQ(0, iter.TokenPos());
+
+ EXPECT_EQ(true, iter.MoveNext());
+ EXPECT_EQ(800, iter.TokenPos());
+
+ EXPECT_EQ(true, iter.MoveNext());
EXPECT_EQ(150, iter.TokenPos());
+ EXPECT_EQ(3, iter.TryIndex());
+ EXPECT_EQ(static_cast<uword>(800), iter.PcOffset());
+ EXPECT_EQ(150, iter.TokenPos());
+ EXPECT_EQ(RawPcDescriptors::kOther, iter.Kind());
+
EXPECT_EQ(false, iter.MoveNext());
}
-
static RawClass* CreateTestClass(const char* name) {
const String& class_name = String::Handle(Symbols::New(name));
const Class& cls = Class::Handle(
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index 25e7fa9..049dbf2 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -5279,8 +5279,7 @@
// or final field implies a setter which throws a NoSuchMethodError,
// thus we need to check for conflicts with existing setters and
// getters.
- String& accessor_name = String::Handle(Z,
- Field::GetterName(var_name));
+ String& accessor_name = String::Handle(Z, Field::GetterName(var_name));
if (library_.LookupLocalObject(accessor_name) != Object::null()) {
ReportError(name_pos, "getter for '%s' is already defined",
var_name.ToCString());
@@ -5302,8 +5301,7 @@
}
if (CurrentToken() == Token::kASSIGN) {
ConsumeToken();
- Instance& field_value = Instance::Handle(Z,
- Object::sentinel().raw());
+ Instance& field_value = Instance::Handle(Z, Object::sentinel().raw());
bool has_simple_literal = false;
if (LookaheadToken(1) == Token::kSEMICOLON) {
has_simple_literal = IsSimpleLiteral(type, &field_value);
@@ -5312,8 +5310,7 @@
field.set_value(field_value);
if (!has_simple_literal) {
// Create a static final getter.
- String& getter_name = String::Handle(Z,
- Field::GetterSymbol(var_name));
+ String& getter_name = String::Handle(Z, Field::GetterSymbol(var_name));
getter = Function::New(getter_name,
RawFunction::kImplicitStaticFinalGetter,
is_static,
@@ -5411,8 +5408,7 @@
ReportError(name_pos, "missing '%s' cannot be patched",
func_name.ToCString());
}
- String& accessor_name = String::Handle(Z,
- Field::GetterName(func_name));
+ String& accessor_name = String::Handle(Z, Field::GetterName(func_name));
if (library_.LookupLocalObject(accessor_name) != Object::null()) {
ReportError(name_pos, "'%s' is already defined as getter",
func_name.ToCString());
diff --git a/runtime/vm/parser_test.cc b/runtime/vm/parser_test.cc
index b2819b0..c65cbca 100644
--- a/runtime/vm/parser_test.cc
+++ b/runtime/vm/parser_test.cc
@@ -213,7 +213,7 @@
LocalVarDescriptors& var_desc = LocalVarDescriptors::Handle();
for (intptr_t i = 0; i < num_frames; i++) {
ActivationFrame* frame = stack->FrameAt(i);
- var_desc = frame->code().var_descriptors();
+ var_desc = frame->code().GetLocalVarDescriptors();
const char* var_str = SkipIndex(var_desc.ToCString());
const char* function_str = String::Handle(
frame->function().QualifiedUserVisibleName()).ToCString();
diff --git a/runtime/vm/profiler.cc b/runtime/vm/profiler.cc
index 29eb1e1..8226d93 100644
--- a/runtime/vm/profiler.cc
+++ b/runtime/vm/profiler.cc
@@ -37,7 +37,7 @@
#endif
DEFINE_FLAG(int, profile_depth, 8,
"Maximum number stack frames walked. Minimum 1. Maximum 255.");
-#if defined(PROFILE_NATIVE_CODE) || defined(USING_SIMULATOR)
+#if defined(USING_SIMULATOR)
DEFINE_FLAG(bool, profile_vm, true,
"Always collect native stack traces.");
#else
diff --git a/runtime/vm/raw_object.cc b/runtime/vm/raw_object.cc
index 2d83e8f..c45af8f 100644
--- a/runtime/vm/raw_object.cc
+++ b/runtime/vm/raw_object.cc
@@ -142,11 +142,8 @@
case kPcDescriptorsCid: {
const RawPcDescriptors* raw_descriptors =
reinterpret_cast<const RawPcDescriptors*>(this);
- const intptr_t num_descriptors = raw_descriptors->ptr()->length_;
- const intptr_t rec_size_in_bytes =
- raw_descriptors->ptr()->record_size_in_bytes_;
- instance_size = PcDescriptors::InstanceSize(num_descriptors,
- rec_size_in_bytes);
+ intptr_t length = raw_descriptors->ptr()->length_;
+ instance_size = PcDescriptors::InstanceSize(length);
break;
}
case kStackmapCid: {
@@ -563,8 +560,7 @@
intptr_t RawPcDescriptors::VisitPcDescriptorsPointers(
RawPcDescriptors* raw_obj, ObjectPointerVisitor* visitor) {
- return PcDescriptors::InstanceSize(raw_obj->ptr()->length_,
- raw_obj->ptr()->record_size_in_bytes_);
+ return PcDescriptors::InstanceSize(raw_obj->ptr()->length_);
}
diff --git a/runtime/vm/regexp.cc b/runtime/vm/regexp.cc
index 47e296d..fcfa02c 100644
--- a/runtime/vm/regexp.cc
+++ b/runtime/vm/regexp.cc
@@ -5063,10 +5063,10 @@
IRRegExpMacroAssembler* macro_assembler =
new(zone) IRRegExpMacroAssembler(specialization_cid,
- data->capture_count,
- parsed_function,
- ic_data_array,
- zone);
+ data->capture_count,
+ parsed_function,
+ ic_data_array,
+ zone);
// Inserted here, instead of in Assembler, because it depends on information
// in the AST that isn't replicated in the Node structure.
diff --git a/runtime/vm/regexp_test.cc b/runtime/vm/regexp_test.cc
index a0f5621..4796279 100644
--- a/runtime/vm/regexp_test.cc
+++ b/runtime/vm/regexp_test.cc
@@ -11,8 +11,6 @@
namespace dart {
-DECLARE_FLAG(bool, use_jscre);
-
static RawArray* Match(const String& pat, const String& str) {
Zone* zone = Thread::Current()->zone();
const JSRegExp& regexp = JSRegExp::Handle(
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index 2acbfe4..f17949f 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -38,8 +38,6 @@
DECLARE_FLAG(bool, trace_service);
DECLARE_FLAG(bool, trace_service_pause_events);
-DECLARE_FLAG(bool, enable_type_checks);
-DECLARE_FLAG(bool, enable_asserts);
// TODO(johnmccutchan): Unify embedder service handler lists and their APIs.
EmbedderServiceHandler* Service::isolate_service_handler_head_ = NULL;
@@ -2256,6 +2254,13 @@
}
+void Service::SendInspectEvent(Isolate* isolate, const Object& inspectee) {
+ ServiceEvent event(isolate, ServiceEvent::kInspect);
+ event.set_inspectee(&inspectee);
+ Service::HandleEvent(&event);
+}
+
+
class ContainsAddressVisitor : public FindObjectVisitor {
public:
ContainsAddressVisitor(Isolate* isolate, uword addr)
diff --git a/runtime/vm/service.h b/runtime/vm/service.h
index dfc6a21..a635dc3 100644
--- a/runtime/vm/service.h
+++ b/runtime/vm/service.h
@@ -47,6 +47,7 @@
static void SendEchoEvent(Isolate* isolate, const char* text);
static void SendGraphEvent(Isolate* isolate);
+ static void SendInspectEvent(Isolate* isolate, const Object& inspectee);
private:
static void InvokeMethod(Isolate* isolate, const Array& message);
diff --git a/runtime/vm/service_event.cc b/runtime/vm/service_event.cc
index c1be690..070125d 100644
--- a/runtime/vm/service_event.cc
+++ b/runtime/vm/service_event.cc
@@ -37,6 +37,7 @@
breakpoint_(NULL),
top_frame_(NULL),
exception_(NULL),
+ inspectee_(NULL),
gc_stats_(NULL) {
DebuggerEvent::EventType type = debugger_event->type();
if (type == DebuggerEvent::kBreakpointReached) {
@@ -81,6 +82,8 @@
return "BreakpointRemoved";
case kGC:
return "GC"; // TODO(koda): Change to GarbageCollected.
+ case kInspect:
+ return "Inspect";
default:
UNREACHABLE();
return "Unknown";
@@ -103,6 +106,9 @@
if (exception() != NULL) {
jsobj.AddProperty("exception", *(exception()));
}
+ if (inspectee() != NULL) {
+ jsobj.AddProperty("inspectee", *(inspectee()));
+ }
if (gc_stats() != NULL) {
jsobj.AddProperty("reason", Heap::GCReasonToString(gc_stats()->reason_));
isolate()->heap()->PrintToJSONObject(Heap::kNew, &jsobj);
diff --git a/runtime/vm/service_event.h b/runtime/vm/service_event.h
index 4de7aa4..e74ee66 100644
--- a/runtime/vm/service_event.h
+++ b/runtime/vm/service_event.h
@@ -30,6 +30,7 @@
kBreakpointRemoved,
kGC,
+ kInspect,
kIllegal,
};
@@ -40,6 +41,7 @@
breakpoint_(NULL),
top_frame_(NULL),
exception_(NULL),
+ inspectee_(NULL),
gc_stats_(NULL) {}
explicit ServiceEvent(const DebuggerEvent* debugger_event);
@@ -78,6 +80,14 @@
exception_ = exception;
}
+ const Object* inspectee() const {
+ return inspectee_;
+ }
+ void set_inspectee(const Object* inspectee) {
+ ASSERT(type_ == kInspect);
+ inspectee_ = inspectee;
+ }
+
const Heap::GCStats* gc_stats() const {
return gc_stats_;
}
@@ -96,6 +106,7 @@
SourceBreakpoint* breakpoint_;
ActivationFrame* top_frame_;
const Object* exception_;
+ const Object* inspectee_;
const Heap::GCStats* gc_stats_;
};
diff --git a/runtime/vm/service_test.cc b/runtime/vm/service_test.cc
index d177304..fd3ec23 100644
--- a/runtime/vm/service_test.cc
+++ b/runtime/vm/service_test.cc
@@ -367,7 +367,7 @@
EXPECT(!code_c.IsNull());
const LocalVarDescriptors& descriptors =
- LocalVarDescriptors::Handle(code_c.var_descriptors());
+ LocalVarDescriptors::Handle(code_c.GetLocalVarDescriptors());
// Generate an ID for this object.
ObjectIdRing* ring = isolate->object_id_ring();
intptr_t id = ring->GetIdForObject(descriptors.raw());
diff --git a/runtime/vm/simulator_arm64.cc b/runtime/vm/simulator_arm64.cc
index 992b3c0..2d0cbd3 100644
--- a/runtime/vm/simulator_arm64.cc
+++ b/runtime/vm/simulator_arm64.cc
@@ -2420,6 +2420,43 @@
}
+void Simulator::DecodeMiscDP1Source(Instr* instr) {
+ if (instr->Bit(29) != 0) {
+ UnimplementedInstruction(instr);
+ }
+
+ const Register rd = instr->RdField();
+ const Register rn = instr->RnField();
+ const int op = instr->Bits(10, 10);
+ const int64_t rn_val64 = get_register(rn, R31IsZR);
+ const int32_t rn_val32 = get_wregister(rn, R31IsZR);
+ switch (op) {
+ case 4: {
+ // Format(instr, "clz'sf 'rd, 'rn");
+ int64_t rd_val = 0;
+ int64_t rn_val = (instr->SFField() == 1) ? rn_val64 : rn_val32;
+ if (rn_val != 0) {
+ while (rn_val > 0) {
+ rd_val++;
+ rn_val <<= 1;
+ }
+ } else {
+ rd_val = (instr->SFField() == 1) ? 64 : 32;
+ }
+ if (instr->SFField() == 1) {
+ set_register(instr, rd, rd_val, R31IsZR);
+ } else {
+ set_wregister(rd, rd_val, R31IsZR);
+ }
+ break;
+ }
+ default:
+ UnimplementedInstruction(instr);
+ break;
+ }
+}
+
+
void Simulator::DecodeMiscDP2Source(Instr* instr) {
if (instr->Bit(29) != 0) {
UnimplementedInstruction(instr);
@@ -2428,7 +2465,7 @@
const Register rd = instr->RdField();
const Register rn = instr->RnField();
const Register rm = instr->RmField();
- const int op = instr->Bits(10, 6);
+ const int op = instr->Bits(10, 5);
const int64_t rn_val64 = get_register(rn, R31IsZR);
const int64_t rm_val64 = get_register(rm, R31IsZR);
const int32_t rn_val32 = get_wregister(rn, R31IsZR);
@@ -2612,6 +2649,8 @@
DecodeAddSubWithCarry(instr);
} else if (instr->IsLogicalShiftOp()) {
DecodeLogicalShift(instr);
+ } else if (instr->IsMiscDP1SourceOp()) {
+ DecodeMiscDP1Source(instr);
} else if (instr->IsMiscDP2SourceOp()) {
DecodeMiscDP2Source(instr);
} else if (instr->IsMiscDP3SourceOp()) {
diff --git a/runtime/vm/stub_code.cc b/runtime/vm/stub_code.cc
index 0c17653..2f41ba0 100644
--- a/runtime/vm/stub_code.cc
+++ b/runtime/vm/stub_code.cc
@@ -151,6 +151,7 @@
stub.set_owner(cls);
cls.set_allocation_stub(stub);
if (FLAG_disassemble_stubs) {
+ LogBlock lb(Isolate::Current());
ISL_Print("Code for allocation stub '%s': {\n", name);
DisassembleToStdout formatter;
stub.Disassemble(&formatter);
@@ -184,6 +185,7 @@
GenerateStub(&assembler);
const Code& code = Code::Handle(Code::FinalizeCode(name, &assembler));
if (FLAG_disassemble_stubs) {
+ LogBlock lb(Isolate::Current());
ISL_Print("Code for stub '%s': {\n", name);
DisassembleToStdout formatter;
code.Disassemble(&formatter);
diff --git a/runtime/vm/stub_code.h b/runtime/vm/stub_code.h
index f058a29..a45216d 100644
--- a/runtime/vm/stub_code.h
+++ b/runtime/vm/stub_code.h
@@ -75,6 +75,7 @@
V(UnoptimizedIdenticalWithNumberCheck) \
V(OptimizedIdenticalWithNumberCheck) \
V(DebugStepCheck) \
+ V(MegamorphicLookup) \
#define STUB_CODE_LIST(V) \
BOOTSTRAP_STUB_CODE_LIST(V) \
@@ -183,6 +184,9 @@
static const intptr_t kNoInstantiator = 0;
+ static void EmitMegamorphicLookup(
+ Assembler*, Register recv, Register cache, Register target);
+
private:
void GenerateBootstrapStubsFor(Isolate* isolate);
void GenerateStubsFor(Isolate* isolate);
diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc
index 84f251e..1d438ec 100644
--- a/runtime/vm/stub_code_arm.cc
+++ b/runtime/vm/stub_code_arm.cc
@@ -26,6 +26,8 @@
DEFINE_FLAG(bool, use_slow_path, false,
"Set to true for debugging & verifying the slow paths.");
DECLARE_FLAG(bool, trace_optimized_ic_calls);
+DECLARE_FLAG(int, optimization_counter_threshold);
+DECLARE_FLAG(bool, support_debugger);
// Input parameters:
// LR : return address.
@@ -1238,14 +1240,16 @@
// Loads function into 'temp_reg'.
void StubCode::GenerateUsageCounterIncrement(Assembler* assembler,
Register temp_reg) {
- Register ic_reg = R5;
- Register func_reg = temp_reg;
- ASSERT(temp_reg == R6);
- __ Comment("Increment function counter");
- __ ldr(func_reg, FieldAddress(ic_reg, ICData::owner_offset()));
- __ ldr(R7, FieldAddress(func_reg, Function::usage_counter_offset()));
- __ add(R7, R7, Operand(1));
- __ str(R7, FieldAddress(func_reg, Function::usage_counter_offset()));
+ if (FLAG_optimization_counter_threshold >= 0) {
+ Register ic_reg = R5;
+ Register func_reg = temp_reg;
+ ASSERT(temp_reg == R6);
+ __ Comment("Increment function counter");
+ __ ldr(func_reg, FieldAddress(ic_reg, ICData::owner_offset()));
+ __ ldr(R7, FieldAddress(func_reg, Function::usage_counter_offset()));
+ __ add(R7, R7, Operand(1));
+ __ str(R7, FieldAddress(func_reg, Function::usage_counter_offset()));
+ }
}
@@ -1301,12 +1305,14 @@
__ Stop("Incorrect IC data");
__ Bind(&ok);
#endif
- // Update counter.
- const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
- __ LoadFromOffset(kWord, R1, R6, count_offset);
- __ adds(R1, R1, Operand(Smi::RawValue(1)));
- __ LoadImmediate(R1, Smi::RawValue(Smi::kMaxValue), VS); // Overflow.
- __ StoreIntoSmiField(Address(R6, count_offset), R1);
+ if (FLAG_optimization_counter_threshold >= 0) {
+ // Update counter.
+ const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
+ __ LoadFromOffset(kWord, R1, R6, count_offset);
+ __ adds(R1, R1, Operand(Smi::RawValue(1)));
+ __ LoadImmediate(R1, Smi::RawValue(Smi::kMaxValue), VS); // Overflow.
+ __ StoreIntoSmiField(Address(R6, count_offset), R1);
+ }
__ Ret();
}
@@ -1342,14 +1348,15 @@
}
#endif // DEBUG
-
- __ Comment("Check single stepping");
Label stepping, done_stepping;
- __ LoadIsolate(R6);
- __ ldrb(R6, Address(R6, Isolate::single_step_offset()));
- __ CompareImmediate(R6, 0);
- __ b(&stepping, NE);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Comment("Check single stepping");
+ __ LoadIsolate(R6);
+ __ ldrb(R6, Address(R6, Isolate::single_step_offset()));
+ __ CompareImmediate(R6, 0);
+ __ b(&stepping, NE);
+ __ Bind(&done_stepping);
+ }
__ Comment("Range feedback collection");
Label not_smi_or_overflow;
@@ -1460,11 +1467,13 @@
const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
__ LoadFromOffset(kWord, R0, R6, target_offset);
- __ Comment("Update caller's counter");
- __ LoadFromOffset(kWord, R1, R6, count_offset);
- __ adds(R1, R1, Operand(Smi::RawValue(1)));
- __ LoadImmediate(R1, Smi::RawValue(Smi::kMaxValue), VS); // Overflow.
- __ StoreIntoSmiField(Address(R6, count_offset), R1);
+ if (FLAG_optimization_counter_threshold >= 0) {
+ __ Comment("Update caller's counter");
+ __ LoadFromOffset(kWord, R1, R6, count_offset);
+ __ adds(R1, R1, Operand(Smi::RawValue(1)));
+ __ LoadImmediate(R1, Smi::RawValue(Smi::kMaxValue), VS); // Overflow.
+ __ StoreIntoSmiField(Address(R6, count_offset), R1);
+ }
__ Comment("Call target");
__ Bind(&call_target_function);
@@ -1494,13 +1503,15 @@
__ bx(R2);
}
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ Push(R5); // Preserve IC data.
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ Pop(R5);
- __ LeaveStubFrame();
- __ b(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ Push(R5); // Preserve IC data.
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ Pop(R5);
+ __ LeaveStubFrame();
+ __ b(&done_stepping);
+ }
}
@@ -1638,11 +1649,13 @@
// Check single stepping.
Label stepping, done_stepping;
- __ LoadIsolate(R6);
- __ ldrb(R6, Address(R6, Isolate::single_step_offset()));
- __ CompareImmediate(R6, 0);
- __ b(&stepping, NE);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ LoadIsolate(R6);
+ __ ldrb(R6, Address(R6, Isolate::single_step_offset()));
+ __ CompareImmediate(R6, 0);
+ __ b(&stepping, NE);
+ __ Bind(&done_stepping);
+ }
// R5: IC data object (preserved).
__ ldr(R6, FieldAddress(R5, ICData::ic_data_offset()));
@@ -1652,11 +1665,13 @@
const intptr_t target_offset = ICData::TargetIndexFor(0) * kWordSize;
const intptr_t count_offset = ICData::CountIndexFor(0) * kWordSize;
- // Increment count for this call.
- __ LoadFromOffset(kWord, R1, R6, count_offset);
- __ adds(R1, R1, Operand(Smi::RawValue(1)));
- __ LoadImmediate(R1, Smi::RawValue(Smi::kMaxValue), VS); // Overflow.
- __ StoreIntoSmiField(Address(R6, count_offset), R1);
+ if (FLAG_optimization_counter_threshold >= 0) {
+ // Increment count for this call.
+ __ LoadFromOffset(kWord, R1, R6, count_offset);
+ __ adds(R1, R1, Operand(Smi::RawValue(1)));
+ __ LoadImmediate(R1, Smi::RawValue(Smi::kMaxValue), VS); // Overflow.
+ __ StoreIntoSmiField(Address(R6, count_offset), R1);
+ }
// Load arguments descriptor into R4.
__ ldr(R4, FieldAddress(R5, ICData::arguments_descriptor_offset()));
@@ -1670,13 +1685,15 @@
__ AddImmediate(R2, Instructions::HeaderSize() - kHeapObjectTag);
__ bx(R2);
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ Push(R5); // Preserve IC data.
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ Pop(R5);
- __ LeaveStubFrame();
- __ b(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ Push(R5); // Preserve IC data.
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ Pop(R5);
+ __ LeaveStubFrame();
+ __ b(&done_stepping);
+ }
}
@@ -2021,11 +2038,13 @@
Assembler* assembler) {
// Check single stepping.
Label stepping, done_stepping;
- __ LoadIsolate(R1);
- __ ldrb(R1, Address(R1, Isolate::single_step_offset()));
- __ CompareImmediate(R1, 0);
- __ b(&stepping, NE);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ LoadIsolate(R1);
+ __ ldrb(R1, Address(R1, Isolate::single_step_offset()));
+ __ CompareImmediate(R1, 0);
+ __ b(&stepping, NE);
+ __ Bind(&done_stepping);
+ }
const Register temp = R2;
const Register left = R1;
@@ -2035,11 +2054,13 @@
GenerateIdenticalWithNumberCheckStub(assembler, left, right, temp);
__ Ret();
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ LeaveStubFrame();
- __ b(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ LeaveStubFrame();
+ __ b(&done_stepping);
+ }
}
@@ -2059,6 +2080,60 @@
__ Ret();
}
+
+void StubCode::EmitMegamorphicLookup(
+ Assembler* assembler, Register receiver, Register cache, Register target) {
+ ASSERT((cache != R0) && (cache != R2));
+ __ LoadTaggedClassIdMayBeSmi(R0, receiver);
+ // R0: class ID of the receiver (smi).
+ __ ldr(R2, FieldAddress(cache, MegamorphicCache::buckets_offset()));
+ __ ldr(R1, FieldAddress(R1, MegamorphicCache::mask_offset()));
+ // R2: cache buckets array.
+ // R1: mask.
+ __ mov(R3, Operand(R0));
+
+ Label loop, update, call_target_function;
+ __ b(&loop);
+
+ __ Bind(&update);
+ __ add(R3, R3, Operand(Smi::RawValue(1)));
+ __ Bind(&loop);
+ __ and_(R3, R3, Operand(R1));
+ const intptr_t base = Array::data_offset();
+ // R3 is smi tagged, but table entries are two words, so LSL 2.
+ __ add(IP, R2, Operand(R3, LSL, 2));
+ __ ldr(R4, FieldAddress(IP, base));
+
+ ASSERT(kIllegalCid == 0);
+ __ tst(R4, Operand(R4));
+ __ b(&call_target_function, EQ);
+ __ cmp(R4, Operand(R0));
+ __ b(&update, NE);
+
+ __ Bind(&call_target_function);
+ // Call the target found in the cache. For a class id match, this is a
+ // proper target for the given name and arguments descriptor. If the
+ // illegal class id was found, the target is a cache miss handler that can
+ // be invoked as a normal Dart function.
+ __ add(IP, R2, Operand(R3, LSL, 2));
+ __ ldr(R0, FieldAddress(IP, base + kWordSize));
+ __ ldr(target, FieldAddress(R0, Function::instructions_offset()));
+ // TODO(srdjan): Evaluate performance impact of moving the instruction below
+ // to the call site, instead of having it here.
+ __ AddImmediate(target, Instructions::HeaderSize() - kHeapObjectTag);
+}
+
+
+// Called from megamorphic calls.
+// R0: receiver.
+// R1: lookup cache.
+// Result:
+// R1: entry point.
+void StubCode::GenerateMegamorphicLookupStub(Assembler* assembler) {
+ EmitMegamorphicLookup(assembler, R0, R1, R1);
+ __ Ret();
+}
+
} // namespace dart
#endif // defined TARGET_ARCH_ARM
diff --git a/runtime/vm/stub_code_arm64.cc b/runtime/vm/stub_code_arm64.cc
index e2ae703..745c8cd 100644
--- a/runtime/vm/stub_code_arm64.cc
+++ b/runtime/vm/stub_code_arm64.cc
@@ -25,6 +25,8 @@
DEFINE_FLAG(bool, use_slow_path, false,
"Set to true for debugging & verifying the slow paths.");
DECLARE_FLAG(bool, trace_optimized_ic_calls);
+DECLARE_FLAG(int, optimization_counter_threshold);
+DECLARE_FLAG(bool, support_debugger);
// Input parameters:
// LR : return address.
@@ -1265,16 +1267,18 @@
// Loads function into 'temp_reg'.
void StubCode::GenerateUsageCounterIncrement(Assembler* assembler,
Register temp_reg) {
- Register ic_reg = R5;
- Register func_reg = temp_reg;
- ASSERT(temp_reg == R6);
- __ Comment("Increment function counter");
- __ LoadFieldFromOffset(func_reg, ic_reg, ICData::owner_offset(), kNoPP);
- __ LoadFieldFromOffset(
- R7, func_reg, Function::usage_counter_offset(), kNoPP, kWord);
- __ AddImmediate(R7, R7, 1, kNoPP);
- __ StoreFieldToOffset(
- R7, func_reg, Function::usage_counter_offset(), kNoPP, kWord);
+ if (FLAG_optimization_counter_threshold >= 0) {
+ Register ic_reg = R5;
+ Register func_reg = temp_reg;
+ ASSERT(temp_reg == R6);
+ __ Comment("Increment function counter");
+ __ LoadFieldFromOffset(func_reg, ic_reg, ICData::owner_offset(), kNoPP);
+ __ LoadFieldFromOffset(
+ R7, func_reg, Function::usage_counter_offset(), kNoPP, kWord);
+ __ AddImmediate(R7, R7, 1, kNoPP);
+ __ StoreFieldToOffset(
+ R7, func_reg, Function::usage_counter_offset(), kNoPP, kWord);
+ }
}
@@ -1343,13 +1347,15 @@
__ Stop("Incorrect IC data");
__ Bind(&ok);
#endif
- const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
- // Update counter.
- __ LoadFromOffset(R1, R6, count_offset, kNoPP);
- __ adds(R1, R1, Operand(Smi::RawValue(1)));
- __ LoadImmediate(R2, Smi::RawValue(Smi::kMaxValue), kNoPP);
- __ csel(R1, R2, R1, VS); // Overflow.
- __ StoreToOffset(R1, R6, count_offset, kNoPP);
+ if (FLAG_optimization_counter_threshold >= 0) {
+ const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
+ // Update counter.
+ __ LoadFromOffset(R1, R6, count_offset, kNoPP);
+ __ adds(R1, R1, Operand(Smi::RawValue(1)));
+ __ LoadImmediate(R2, Smi::RawValue(Smi::kMaxValue), kNoPP);
+ __ csel(R1, R2, R1, VS); // Overflow.
+ __ StoreToOffset(R1, R6, count_offset, kNoPP);
+ }
__ ret();
}
@@ -1387,14 +1393,16 @@
}
#endif // DEBUG
- __ Comment("Check single stepping");
Label stepping, done_stepping;
- __ LoadIsolate(R6, kNoPP);
- __ LoadFromOffset(
- R6, R6, Isolate::single_step_offset(), kNoPP, kUnsignedByte);
- __ CompareRegisters(R6, ZR);
- __ b(&stepping, NE);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Comment("Check single stepping");
+ __ LoadIsolate(R6, kNoPP);
+ __ LoadFromOffset(
+ R6, R6, Isolate::single_step_offset(), kNoPP, kUnsignedByte);
+ __ CompareRegisters(R6, ZR);
+ __ b(&stepping, NE);
+ __ Bind(&done_stepping);
+ }
__ Comment("Range feedback collection");
Label not_smi_or_overflow;
@@ -1520,12 +1528,14 @@
const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
__ LoadFromOffset(R0, R6, target_offset, kNoPP);
- // Update counter.
- __ LoadFromOffset(R1, R6, count_offset, kNoPP);
- __ adds(R1, R1, Operand(Smi::RawValue(1)));
- __ LoadImmediate(R2, Smi::RawValue(Smi::kMaxValue), kNoPP);
- __ csel(R1, R2, R1, VS); // Overflow.
- __ StoreToOffset(R1, R6, count_offset, kNoPP);
+ if (FLAG_optimization_counter_threshold >= 0) {
+ // Update counter.
+ __ LoadFromOffset(R1, R6, count_offset, kNoPP);
+ __ adds(R1, R1, Operand(Smi::RawValue(1)));
+ __ LoadImmediate(R2, Smi::RawValue(Smi::kMaxValue), kNoPP);
+ __ csel(R1, R2, R1, VS); // Overflow.
+ __ StoreToOffset(R1, R6, count_offset, kNoPP);
+ }
__ Comment("Call target");
__ Bind(&call_target_function);
@@ -1556,13 +1566,15 @@
__ br(R2);
}
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ Push(R5); // Preserve IC data.
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ Pop(R5);
- __ LeaveStubFrame();
- __ b(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ Push(R5); // Preserve IC data.
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ Pop(R5);
+ __ LeaveStubFrame();
+ __ b(&done_stepping);
+ }
}
@@ -1690,12 +1702,14 @@
// Check single stepping.
Label stepping, done_stepping;
- __ LoadIsolate(R6, kNoPP);
- __ LoadFromOffset(
- R6, R6, Isolate::single_step_offset(), kNoPP, kUnsignedByte);
- __ CompareImmediate(R6, 0, kNoPP);
- __ b(&stepping, NE);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ LoadIsolate(R6, kNoPP);
+ __ LoadFromOffset(
+ R6, R6, Isolate::single_step_offset(), kNoPP, kUnsignedByte);
+ __ CompareImmediate(R6, 0, kNoPP);
+ __ b(&stepping, NE);
+ __ Bind(&done_stepping);
+ }
// R5: IC data object (preserved).
__ LoadFieldFromOffset(R6, R5, ICData::ic_data_offset(), kNoPP);
@@ -1705,12 +1719,14 @@
const intptr_t target_offset = ICData::TargetIndexFor(0) * kWordSize;
const intptr_t count_offset = ICData::CountIndexFor(0) * kWordSize;
- // Increment count for this call.
- __ LoadFromOffset(R1, R6, count_offset, kNoPP);
- __ adds(R1, R1, Operand(Smi::RawValue(1)));
- __ LoadImmediate(R2, Smi::RawValue(Smi::kMaxValue), kNoPP);
- __ csel(R1, R2, R1, VS); // Overflow.
- __ StoreToOffset(R1, R6, count_offset, kNoPP);
+ if (FLAG_optimization_counter_threshold >= 0) {
+ // Increment count for this call.
+ __ LoadFromOffset(R1, R6, count_offset, kNoPP);
+ __ adds(R1, R1, Operand(Smi::RawValue(1)));
+ __ LoadImmediate(R2, Smi::RawValue(Smi::kMaxValue), kNoPP);
+ __ csel(R1, R2, R1, VS); // Overflow.
+ __ StoreToOffset(R1, R6, count_offset, kNoPP);
+ }
// Load arguments descriptor into R4.
__ LoadFieldFromOffset(R4, R5, ICData::arguments_descriptor_offset(), kNoPP);
@@ -1725,13 +1741,15 @@
R2, R2, Instructions::HeaderSize() - kHeapObjectTag, kNoPP);
__ br(R2);
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ Push(R5); // Preserve IC data.
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ Pop(R5);
- __ LeaveStubFrame();
- __ b(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ Push(R5); // Preserve IC data.
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ Pop(R5);
+ __ LeaveStubFrame();
+ __ b(&done_stepping);
+ }
}
@@ -2070,12 +2088,14 @@
Assembler* assembler) {
// Check single stepping.
Label stepping, done_stepping;
- __ LoadIsolate(R1, kNoPP);
- __ LoadFromOffset(
- R1, R1, Isolate::single_step_offset(), kNoPP, kUnsignedByte);
- __ CompareImmediate(R1, 0, kNoPP);
- __ b(&stepping, NE);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ LoadIsolate(R1, kNoPP);
+ __ LoadFromOffset(
+ R1, R1, Isolate::single_step_offset(), kNoPP, kUnsignedByte);
+ __ CompareImmediate(R1, 0, kNoPP);
+ __ b(&stepping, NE);
+ __ Bind(&done_stepping);
+ }
const Register left = R1;
const Register right = R0;
@@ -2084,11 +2104,13 @@
GenerateIdenticalWithNumberCheckStub(assembler, left, right);
__ ret();
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ LeaveStubFrame();
- __ b(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ LeaveStubFrame();
+ __ b(&done_stepping);
+ }
}
@@ -2108,6 +2130,60 @@
__ ret();
}
+
+void StubCode::EmitMegamorphicLookup(
+ Assembler* assembler, Register receiver, Register cache, Register target) {
+ ASSERT((cache != R0) && (cache != R2));
+ __ LoadTaggedClassIdMayBeSmi(R0, receiver);
+ // R0: class ID of the receiver (smi).
+ __ LoadFieldFromOffset(R2, cache, MegamorphicCache::buckets_offset(), PP);
+ __ LoadFieldFromOffset(R1, cache, MegamorphicCache::mask_offset(), PP);
+ // R2: cache buckets array.
+ // R1: mask.
+ __ mov(R3, R0);
+
+ Label loop, update, call_target_function;
+ __ b(&loop);
+
+ __ Bind(&update);
+ __ add(R3, R3, Operand(Smi::RawValue(1)));
+ __ Bind(&loop);
+ __ and_(R3, R3, Operand(R1));
+ const intptr_t base = Array::data_offset();
+ // R3 is smi tagged, but table entries are 16 bytes, so LSL 3.
+ __ add(TMP, R2, Operand(R3, LSL, 3));
+ __ LoadFieldFromOffset(R4, TMP, base, PP);
+
+ ASSERT(kIllegalCid == 0);
+ __ tst(R4, Operand(R4));
+ __ b(&call_target_function, EQ);
+ __ CompareRegisters(R4, R0);
+ __ b(&update, NE);
+
+ __ Bind(&call_target_function);
+ // Call the target found in the cache. For a class id match, this is a
+ // proper target for the given name and arguments descriptor. If the
+ // illegal class id was found, the target is a cache miss handler that can
+ // be invoked as a normal Dart function.
+ __ add(TMP, R2, Operand(R3, LSL, 3));
+ __ LoadFieldFromOffset(R0, TMP, base + kWordSize, PP);
+ __ LoadFieldFromOffset(R1, R0, Function::instructions_offset(), PP);
+ // TODO(srdjan): Evaluate performance impact of moving the instruction below
+ // to the call site, instead of having it here.
+ __ AddImmediate(target, R1, Instructions::HeaderSize() - kHeapObjectTag, PP);
+}
+
+
+// Called from megamorphic calls.
+// R0: receiver.
+// R1: lookup cache.
+// Result:
+// R1: entry point.
+void StubCode::GenerateMegamorphicLookupStub(Assembler* assembler) {
+ EmitMegamorphicLookup(assembler, R0, R1, R1);
+ __ ret();
+}
+
} // namespace dart
#endif // defined TARGET_ARCH_ARM64
diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc
index 6e35450..e8b0245 100644
--- a/runtime/vm/stub_code_ia32.cc
+++ b/runtime/vm/stub_code_ia32.cc
@@ -27,7 +27,8 @@
DEFINE_FLAG(bool, use_slow_path, false,
"Set to true for debugging & verifying the slow paths.");
DECLARE_FLAG(bool, trace_optimized_ic_calls);
-DEFINE_FLAG(bool, verify_incoming_contexts, false, "");
+DECLARE_FLAG(int, optimization_counter_threshold);
+DECLARE_FLAG(bool, support_debugger);
#define INT32_SIZEOF(x) static_cast<int32_t>(sizeof(x))
@@ -1185,12 +1186,14 @@
// Loads function into 'temp_reg'.
void StubCode::GenerateUsageCounterIncrement(Assembler* assembler,
Register temp_reg) {
- Register ic_reg = ECX;
- Register func_reg = temp_reg;
- ASSERT(ic_reg != func_reg);
- __ Comment("Increment function counter");
- __ movl(func_reg, FieldAddress(ic_reg, ICData::owner_offset()));
- __ incl(FieldAddress(func_reg, Function::usage_counter_offset()));
+ if (FLAG_optimization_counter_threshold >= 0) {
+ Register ic_reg = ECX;
+ Register func_reg = temp_reg;
+ ASSERT(ic_reg != func_reg);
+ __ Comment("Increment function counter");
+ __ movl(func_reg, FieldAddress(ic_reg, ICData::owner_offset()));
+ __ incl(FieldAddress(func_reg, Function::usage_counter_offset()));
+ }
}
@@ -1258,14 +1261,15 @@
__ Stop("Incorrect IC data");
__ Bind(&ok);
#endif
- // Update counter.
- const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
- __ movl(ECX, Address(EBX, count_offset));
- __ addl(ECX, Immediate(Smi::RawValue(1)));
- __ movl(EDI, Immediate(Smi::RawValue(Smi::kMaxValue)));
- __ cmovno(EDI, ECX);
- __ StoreIntoSmiField(Address(EBX, count_offset), EDI);
-
+ if (FLAG_optimization_counter_threshold >= 0) {
+ // Update counter.
+ const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
+ __ movl(ECX, Address(EBX, count_offset));
+ __ addl(ECX, Immediate(Smi::RawValue(1)));
+ __ movl(EDI, Immediate(Smi::RawValue(Smi::kMaxValue)));
+ __ cmovno(EDI, ECX);
+ __ StoreIntoSmiField(Address(EBX, count_offset), EDI);
+ }
__ ret();
}
@@ -1301,14 +1305,15 @@
}
#endif // DEBUG
- __ Comment("Check single stepping");
Label stepping, done_stepping;
- uword single_step_address = reinterpret_cast<uword>(Isolate::Current()) +
- Isolate::single_step_offset();
- __ cmpb(Address::Absolute(single_step_address), Immediate(0));
- __ j(NOT_EQUAL, &stepping);
- __ Bind(&done_stepping);
-
+ if (FLAG_support_debugger) {
+ __ Comment("Check single stepping");
+ uword single_step_address = reinterpret_cast<uword>(Isolate::Current()) +
+ Isolate::single_step_offset();
+ __ cmpb(Address::Absolute(single_step_address), Immediate(0));
+ __ j(NOT_EQUAL, &stepping);
+ __ Bind(&done_stepping);
+ }
__ Comment("Range feedback collection");
Label not_smi_or_overflow;
if (range_collection_mode == kCollectRanges) {
@@ -1422,13 +1427,14 @@
// EBX: Pointer to an IC data check group.
const intptr_t target_offset = ICData::TargetIndexFor(num_args) * kWordSize;
const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
-
- __ Comment("Update caller's counter");
- __ movl(EAX, Address(EBX, count_offset));
- __ addl(EAX, Immediate(Smi::RawValue(1)));
- __ movl(EDI, Immediate(Smi::RawValue(Smi::kMaxValue)));
- __ cmovno(EDI, EAX);
- __ StoreIntoSmiField(Address(EBX, count_offset), EDI);
+ if (FLAG_optimization_counter_threshold >= 0) {
+ __ Comment("Update caller's counter");
+ __ movl(EAX, Address(EBX, count_offset));
+ __ addl(EAX, Immediate(Smi::RawValue(1)));
+ __ movl(EDI, Immediate(Smi::RawValue(Smi::kMaxValue)));
+ __ cmovno(EDI, EAX);
+ __ StoreIntoSmiField(Address(EBX, count_offset), EDI);
+ }
__ movl(EAX, Address(EBX, target_offset));
__ Bind(&call_target_function);
@@ -1459,13 +1465,15 @@
__ jmp(EBX);
}
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ pushl(ECX);
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ popl(ECX);
- __ LeaveFrame();
- __ jmp(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ pushl(ECX);
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ popl(ECX);
+ __ LeaveFrame();
+ __ jmp(&done_stepping);
+ }
}
@@ -1615,11 +1623,13 @@
#endif // DEBUG
// Check single stepping.
Label stepping, done_stepping;
- uword single_step_address = reinterpret_cast<uword>(Isolate::Current()) +
- Isolate::single_step_offset();
- __ cmpb(Address::Absolute(single_step_address), Immediate(0));
- __ j(NOT_EQUAL, &stepping, Assembler::kNearJump);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ uword single_step_address = reinterpret_cast<uword>(Isolate::Current()) +
+ Isolate::single_step_offset();
+ __ cmpb(Address::Absolute(single_step_address), Immediate(0));
+ __ j(NOT_EQUAL, &stepping, Assembler::kNearJump);
+ __ Bind(&done_stepping);
+ }
// ECX: IC data object (preserved).
__ movl(EBX, FieldAddress(ECX, ICData::ic_data_offset()));
@@ -1629,12 +1639,14 @@
const intptr_t target_offset = ICData::TargetIndexFor(0) * kWordSize;
const intptr_t count_offset = ICData::CountIndexFor(0) * kWordSize;
- // Increment count for this call.
- __ movl(EAX, Address(EBX, count_offset));
- __ addl(EAX, Immediate(Smi::RawValue(1)));
- __ movl(EDI, Immediate(Smi::RawValue(Smi::kMaxValue)));
- __ cmovno(EDI, EAX);
- __ StoreIntoSmiField(Address(EBX, count_offset), EDI);
+ if (FLAG_optimization_counter_threshold >= 0) {
+ // Increment count for this call.
+ __ movl(EAX, Address(EBX, count_offset));
+ __ addl(EAX, Immediate(Smi::RawValue(1)));
+ __ movl(EDI, Immediate(Smi::RawValue(Smi::kMaxValue)));
+ __ cmovno(EDI, EAX);
+ __ StoreIntoSmiField(Address(EBX, count_offset), EDI);
+ }
// Load arguments descriptor into EDX.
__ movl(EDX, FieldAddress(ECX, ICData::arguments_descriptor_offset()));
@@ -1647,13 +1659,15 @@
__ addl(EBX, Immediate(Instructions::HeaderSize() - kHeapObjectTag));
__ jmp(EBX);
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ pushl(ECX);
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ popl(ECX);
- __ LeaveFrame();
- __ jmp(&done_stepping, Assembler::kNearJump);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ pushl(ECX);
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ popl(ECX);
+ __ LeaveFrame();
+ __ jmp(&done_stepping, Assembler::kNearJump);
+ }
}
@@ -2016,11 +2030,13 @@
Assembler* assembler) {
// Check single stepping.
Label stepping, done_stepping;
- __ LoadIsolate(EAX);
- __ movzxb(EAX, Address(EAX, Isolate::single_step_offset()));
- __ cmpl(EAX, Immediate(0));
- __ j(NOT_EQUAL, &stepping);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ LoadIsolate(EAX);
+ __ movzxb(EAX, Address(EAX, Isolate::single_step_offset()));
+ __ cmpl(EAX, Immediate(0));
+ __ j(NOT_EQUAL, &stepping);
+ __ Bind(&done_stepping);
+ }
const Register left = EAX;
const Register right = EDX;
@@ -2030,11 +2046,13 @@
GenerateIdenticalWithNumberCheckStub(assembler, left, right, temp);
__ ret();
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ LeaveFrame();
- __ jmp(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ LeaveFrame();
+ __ jmp(&done_stepping);
+ }
}
@@ -2054,6 +2072,60 @@
__ ret();
}
+
+void StubCode::EmitMegamorphicLookup(
+ Assembler* assembler, Register receiver, Register cache, Register target) {
+ ASSERT((cache != EAX) && (cache != EDI));
+ __ LoadTaggedClassIdMayBeSmi(EAX, receiver);
+
+ // EAX: class ID of the receiver (smi).
+ __ movl(EDI, FieldAddress(cache, MegamorphicCache::buckets_offset()));
+ __ movl(EBX, FieldAddress(cache, MegamorphicCache::mask_offset()));
+ // EDI: cache buckets array.
+ // EBX: mask.
+ __ movl(ECX, EAX);
+
+ Label loop, update, call_target_function;
+ __ jmp(&loop);
+
+ __ Bind(&update);
+ __ addl(ECX, Immediate(Smi::RawValue(1)));
+ __ Bind(&loop);
+ __ andl(ECX, EBX);
+ const intptr_t base = Array::data_offset();
+ // ECX is smi tagged, but table entries are two words, so TIMES_4.
+ __ movl(EDX, FieldAddress(EDI, ECX, TIMES_4, base));
+
+ ASSERT(kIllegalCid == 0);
+ __ testl(EDX, EDX);
+ __ j(ZERO, &call_target_function, Assembler::kNearJump);
+ __ cmpl(EDX, EAX);
+ __ j(NOT_EQUAL, &update, Assembler::kNearJump);
+
+ __ Bind(&call_target_function);
+ // Call the target found in the cache. For a class id match, this is a
+ // proper target for the given name and arguments descriptor. If the
+ // illegal class id was found, the target is a cache miss handler that can
+ // be invoked as a normal Dart function.
+ __ movl(EAX, FieldAddress(EDI, ECX, TIMES_4, base + kWordSize));
+ __ movl(target, FieldAddress(EAX, Function::instructions_offset()));
+ // TODO(srdjan): Evaluate performance impact of moving the instruction below
+ // to the call site, instead of having it here.
+ __ addl(target, Immediate(Instructions::HeaderSize() - kHeapObjectTag));
+}
+
+
+// Called from megamorphic calls.
+// EDI: receiver.
+// EBX: lookup cache.
+// Result:
+// EBX: entry point.
+void StubCode::GenerateMegamorphicLookupStub(Assembler* assembler) {
+ EmitMegamorphicLookup(assembler, EDI, EBX, EBX);
+ __ ret();
+}
+
+
} // namespace dart
#endif // defined TARGET_ARCH_IA32
diff --git a/runtime/vm/stub_code_mips.cc b/runtime/vm/stub_code_mips.cc
index 91abd0a..503a3f1 100644
--- a/runtime/vm/stub_code_mips.cc
+++ b/runtime/vm/stub_code_mips.cc
@@ -25,6 +25,8 @@
DEFINE_FLAG(bool, use_slow_path, false,
"Set to true for debugging & verifying the slow paths.");
DECLARE_FLAG(bool, trace_optimized_ic_calls);
+DECLARE_FLAG(int, optimization_counter_threshold);
+DECLARE_FLAG(bool, support_debugger);
// Input parameters:
// RA : return address.
@@ -1337,15 +1339,17 @@
// Loads function into 'temp_reg'.
void StubCode::GenerateUsageCounterIncrement(Assembler* assembler,
Register temp_reg) {
- __ Comment("UsageCounterIncrement");
- Register ic_reg = S5;
- Register func_reg = temp_reg;
- ASSERT(temp_reg == T0);
- __ Comment("Increment function counter");
- __ lw(func_reg, FieldAddress(ic_reg, ICData::owner_offset()));
- __ lw(T1, FieldAddress(func_reg, Function::usage_counter_offset()));
- __ addiu(T1, T1, Immediate(1));
- __ sw(T1, FieldAddress(func_reg, Function::usage_counter_offset()));
+ if (FLAG_optimization_counter_threshold >= 0) {
+ __ Comment("UsageCounterIncrement");
+ Register ic_reg = S5;
+ Register func_reg = temp_reg;
+ ASSERT(temp_reg == T0);
+ __ Comment("Increment function counter");
+ __ lw(func_reg, FieldAddress(ic_reg, ICData::owner_offset()));
+ __ lw(T1, FieldAddress(func_reg, Function::usage_counter_offset()));
+ __ addiu(T1, T1, Immediate(1));
+ __ sw(T1, FieldAddress(func_reg, Function::usage_counter_offset()));
+ }
}
@@ -1404,14 +1408,16 @@
__ Stop("Incorrect IC data");
__ Bind(&ok);
#endif
- // Update counter.
- const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
- __ lw(T4, Address(T0, count_offset));
- __ AddImmediateDetectOverflow(T7, T4, Smi::RawValue(1), T5, T6);
- __ slt(CMPRES1, T5, ZR); // T5 is < 0 if there was overflow.
- __ LoadImmediate(T4, Smi::RawValue(Smi::kMaxValue));
- __ movz(T4, T7, CMPRES1);
- __ sw(T4, Address(T0, count_offset));
+ if (FLAG_optimization_counter_threshold >= 0) {
+ // Update counter.
+ const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
+ __ lw(T4, Address(T0, count_offset));
+ __ AddImmediateDetectOverflow(T7, T4, Smi::RawValue(1), T5, T6);
+ __ slt(CMPRES1, T5, ZR); // T5 is < 0 if there was overflow.
+ __ LoadImmediate(T4, Smi::RawValue(Smi::kMaxValue));
+ __ movz(T4, T7, CMPRES1);
+ __ sw(T4, Address(T0, count_offset));
+ }
__ Ret();
}
@@ -1449,12 +1455,14 @@
#endif // DEBUG
- __ Comment("Check single stepping");
Label stepping, done_stepping;
- __ LoadIsolate(T0);
- __ lbu(T0, Address(T0, Isolate::single_step_offset()));
- __ BranchNotEqual(T0, Immediate(0), &stepping);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Comment("Check single stepping");
+ __ LoadIsolate(T0);
+ __ lbu(T0, Address(T0, Isolate::single_step_offset()));
+ __ BranchNotEqual(T0, Immediate(0), &stepping);
+ __ Bind(&done_stepping);
+ }
__ Comment("Range feedback collection");
Label not_smi_or_overflow;
@@ -1593,13 +1601,15 @@
const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
__ lw(T3, Address(T0, target_offset));
- // Update counter.
- __ lw(T4, Address(T0, count_offset));
- __ AddImmediateDetectOverflow(T7, T4, Smi::RawValue(1), T5, T6);
- __ slt(CMPRES1, T5, ZR); // T5 is < 0 if there was overflow.
- __ LoadImmediate(T4, Smi::RawValue(Smi::kMaxValue));
- __ movz(T4, T7, CMPRES1);
- __ sw(T4, Address(T0, count_offset));
+ if (FLAG_optimization_counter_threshold >= 0) {
+ // Update counter.
+ __ lw(T4, Address(T0, count_offset));
+ __ AddImmediateDetectOverflow(T7, T4, Smi::RawValue(1), T5, T6);
+ __ slt(CMPRES1, T5, ZR); // T5 is < 0 if there was overflow.
+ __ LoadImmediate(T4, Smi::RawValue(Smi::kMaxValue));
+ __ movz(T4, T7, CMPRES1);
+ __ sw(T4, Address(T0, count_offset));
+ }
__ Comment("Call target");
__ Bind(&call_target_function);
@@ -1636,17 +1646,19 @@
}
// Call single step callback in debugger.
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ addiu(SP, SP, Immediate(-2 * kWordSize));
- __ sw(S5, Address(SP, 1 * kWordSize)); // Preserve IC data.
- __ sw(RA, Address(SP, 0 * kWordSize)); // Return address.
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ lw(RA, Address(SP, 0 * kWordSize));
- __ lw(S5, Address(SP, 1 * kWordSize));
- __ addiu(SP, SP, Immediate(2 * kWordSize));
- __ LeaveStubFrame();
- __ b(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ addiu(SP, SP, Immediate(-2 * kWordSize));
+ __ sw(S5, Address(SP, 1 * kWordSize)); // Preserve IC data.
+ __ sw(RA, Address(SP, 0 * kWordSize)); // Return address.
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ lw(RA, Address(SP, 0 * kWordSize));
+ __ lw(S5, Address(SP, 1 * kWordSize));
+ __ addiu(SP, SP, Immediate(2 * kWordSize));
+ __ LeaveStubFrame();
+ __ b(&done_stepping);
+ }
}
@@ -1776,10 +1788,12 @@
// Check single stepping.
Label stepping, done_stepping;
- __ LoadIsolate(T0);
- __ lbu(T0, Address(T0, Isolate::single_step_offset()));
- __ BranchNotEqual(T0, Immediate(0), &stepping);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ LoadIsolate(T0);
+ __ lbu(T0, Address(T0, Isolate::single_step_offset()));
+ __ BranchNotEqual(T0, Immediate(0), &stepping);
+ __ Bind(&done_stepping);
+ }
// S5: IC data object (preserved).
__ lw(T0, FieldAddress(S5, ICData::ic_data_offset()));
@@ -1789,13 +1803,15 @@
const intptr_t target_offset = ICData::TargetIndexFor(0) * kWordSize;
const intptr_t count_offset = ICData::CountIndexFor(0) * kWordSize;
- // Increment count for this call.
- __ lw(T4, Address(T0, count_offset));
- __ AddImmediateDetectOverflow(T7, T4, Smi::RawValue(1), T5, T6);
- __ slt(CMPRES1, T5, ZR); // T5 is < 0 if there was overflow.
- __ LoadImmediate(T4, Smi::RawValue(Smi::kMaxValue));
- __ movz(T4, T7, CMPRES1);
- __ sw(T4, Address(T0, count_offset));
+ if (FLAG_optimization_counter_threshold >= 0) {
+ // Increment count for this call.
+ __ lw(T4, Address(T0, count_offset));
+ __ AddImmediateDetectOverflow(T7, T4, Smi::RawValue(1), T5, T6);
+ __ slt(CMPRES1, T5, ZR); // T5 is < 0 if there was overflow.
+ __ LoadImmediate(T4, Smi::RawValue(Smi::kMaxValue));
+ __ movz(T4, T7, CMPRES1);
+ __ sw(T4, Address(T0, count_offset));
+ }
// Load arguments descriptor into S4.
__ lw(S4, FieldAddress(S5, ICData::arguments_descriptor_offset()));
@@ -1809,17 +1825,19 @@
__ jr(T4);
// Call single step callback in debugger.
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ addiu(SP, SP, Immediate(-2 * kWordSize));
- __ sw(S5, Address(SP, 1 * kWordSize)); // Preserve IC data.
- __ sw(RA, Address(SP, 0 * kWordSize)); // Return address.
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ lw(RA, Address(SP, 0 * kWordSize));
- __ lw(S5, Address(SP, 1 * kWordSize));
- __ addiu(SP, SP, Immediate(2 * kWordSize));
- __ LeaveStubFrame();
- __ b(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ addiu(SP, SP, Immediate(-2 * kWordSize));
+ __ sw(S5, Address(SP, 1 * kWordSize)); // Preserve IC data.
+ __ sw(RA, Address(SP, 0 * kWordSize)); // Return address.
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ lw(RA, Address(SP, 0 * kWordSize));
+ __ lw(S5, Address(SP, 1 * kWordSize));
+ __ addiu(SP, SP, Immediate(2 * kWordSize));
+ __ LeaveStubFrame();
+ __ b(&done_stepping);
+ }
}
@@ -2212,10 +2230,12 @@
Assembler* assembler) {
// Check single stepping.
Label stepping, done_stepping;
- __ LoadIsolate(T0);
- __ lbu(T0, Address(T0, Isolate::single_step_offset()));
- __ BranchNotEqual(T0, Immediate(0), &stepping);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ LoadIsolate(T0);
+ __ lbu(T0, Address(T0, Isolate::single_step_offset()));
+ __ BranchNotEqual(T0, Immediate(0), &stepping);
+ __ Bind(&done_stepping);
+ }
const Register temp1 = T2;
const Register temp2 = T3;
@@ -2227,15 +2247,17 @@
__ Ret();
// Call single step callback in debugger.
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ addiu(SP, SP, Immediate(-1 * kWordSize));
- __ sw(RA, Address(SP, 0 * kWordSize)); // Return address.
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ lw(RA, Address(SP, 0 * kWordSize));
- __ addiu(SP, SP, Immediate(1 * kWordSize));
- __ LeaveStubFrame();
- __ b(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ addiu(SP, SP, Immediate(-1 * kWordSize));
+ __ sw(RA, Address(SP, 0 * kWordSize)); // Return address.
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ lw(RA, Address(SP, 0 * kWordSize));
+ __ addiu(SP, SP, Immediate(1 * kWordSize));
+ __ LeaveStubFrame();
+ __ b(&done_stepping);
+ }
}
@@ -2255,6 +2277,61 @@
__ Ret();
}
+
+void StubCode::EmitMegamorphicLookup(
+ Assembler* assembler, Register receiver, Register cache, Register target) {
+ ASSERT((cache != T0) && (cache != T2));
+ __ LoadTaggedClassIdMayBeSmi(T0, receiver);
+ // T0: class ID of the receiver (smi).
+ __ lw(T2, FieldAddress(cache, MegamorphicCache::buckets_offset()));
+ __ lw(T1, FieldAddress(cache, MegamorphicCache::mask_offset()));
+ // T2: cache buckets array.
+ // T1: mask.
+ __ mov(T3, T0);
+
+ Label loop, update, call_target_function;
+ __ b(&loop);
+
+ __ Bind(&update);
+ __ addiu(T3, T3, Immediate(Smi::RawValue(1)));
+ __ Bind(&loop);
+ __ and_(T3, T3, T1);
+ const intptr_t base = Array::data_offset();
+ // T3 is smi tagged, but table entries are two words, so LSL 2.
+ __ sll(TMP, T3, 2);
+ __ addu(TMP, T2, TMP);
+ __ lw(T4, FieldAddress(TMP, base));
+
+ ASSERT(kIllegalCid == 0);
+ __ beq(T4, ZR, &call_target_function);
+ __ bne(T4, T0, &update);
+
+ __ Bind(&call_target_function);
+ // Call the target found in the cache. For a class id match, this is a
+ // proper target for the given name and arguments descriptor. If the
+ // illegal class id was found, the target is a cache miss handler that can
+ // be invoked as a normal Dart function.
+ __ sll(T1, T3, 2);
+ __ addu(T1, T2, T1);
+ __ lw(T0, FieldAddress(T1, base + kWordSize));
+
+ __ lw(target, FieldAddress(T0, Function::instructions_offset()));
+ // TODO(srdjan): Evaluate performance impact of moving the instruction below
+ // to the call site, instead of having it here.
+ __ AddImmediate(target, Instructions::HeaderSize() - kHeapObjectTag);
+}
+
+
+// Called from megamorphic calls.
+// T0: receiver.
+// T1: lookup cache.
+// Result:
+// T1: entry point.
+void StubCode::GenerateMegamorphicLookupStub(Assembler* assembler) {
+ EmitMegamorphicLookup(assembler, T0, T1, T1);
+ __ Ret();
+}
+
} // namespace dart
#endif // defined TARGET_ARCH_MIPS
diff --git a/runtime/vm/stub_code_x64.cc b/runtime/vm/stub_code_x64.cc
index 0961ef7..77da070 100644
--- a/runtime/vm/stub_code_x64.cc
+++ b/runtime/vm/stub_code_x64.cc
@@ -26,6 +26,8 @@
DEFINE_FLAG(bool, use_slow_path, false,
"Set to true for debugging & verifying the slow paths.");
DECLARE_FLAG(bool, trace_optimized_ic_calls);
+DECLARE_FLAG(int, optimization_counter_threshold);
+DECLARE_FLAG(bool, support_debugger);
// Input parameters:
// RSP : points to return address.
@@ -1214,12 +1216,14 @@
// Loads function into 'temp_reg', preserves 'ic_reg'.
void StubCode::GenerateUsageCounterIncrement(Assembler* assembler,
Register temp_reg) {
- Register ic_reg = RBX;
- Register func_reg = temp_reg;
- ASSERT(ic_reg != func_reg);
- __ Comment("Increment function counter");
- __ movq(func_reg, FieldAddress(ic_reg, ICData::owner_offset()));
- __ incl(FieldAddress(func_reg, Function::usage_counter_offset()));
+ if (FLAG_optimization_counter_threshold >= 0) {
+ Register ic_reg = RBX;
+ Register func_reg = temp_reg;
+ ASSERT(ic_reg != func_reg);
+ __ Comment("Increment function counter");
+ __ movq(func_reg, FieldAddress(ic_reg, ICData::owner_offset()));
+ __ incl(FieldAddress(func_reg, Function::usage_counter_offset()));
+ }
}
@@ -1296,13 +1300,15 @@
__ Bind(&ok);
#endif
- const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
- // Update counter.
- __ movq(R8, Address(R12, count_offset));
- __ addq(R8, Immediate(Smi::RawValue(1)));
- __ movq(R9, Immediate(Smi::RawValue(Smi::kMaxValue)));
- __ cmovnoq(R9, R8);
- __ StoreIntoSmiField(Address(R12, count_offset), R9);
+ if (FLAG_optimization_counter_threshold >= 0) {
+ const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
+ // Update counter.
+ __ movq(R8, Address(R12, count_offset));
+ __ addq(R8, Immediate(Smi::RawValue(1)));
+ __ movq(R9, Immediate(Smi::RawValue(Smi::kMaxValue)));
+ __ cmovnoq(R9, R8);
+ __ StoreIntoSmiField(Address(R12, count_offset), R9);
+ }
__ ret();
}
@@ -1339,12 +1345,14 @@
}
#endif // DEBUG
- __ Comment("Check single stepping");
Label stepping, done_stepping;
- __ LoadIsolate(RAX);
- __ cmpb(Address(RAX, Isolate::single_step_offset()), Immediate(0));
- __ j(NOT_EQUAL, &stepping);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Comment("Check single stepping");
+ __ LoadIsolate(RAX);
+ __ cmpb(Address(RAX, Isolate::single_step_offset()), Immediate(0));
+ __ j(NOT_EQUAL, &stepping);
+ __ Bind(&done_stepping);
+ }
__ Comment("Range feedback collection");
Label not_smi_or_overflow;
@@ -1453,18 +1461,20 @@
__ jmp(&call_target_function);
__ Bind(&found);
- __ Comment("Update caller's counter");
// R12: Pointer to an IC data check group.
const intptr_t target_offset = ICData::TargetIndexFor(num_args) * kWordSize;
const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
__ movq(RAX, Address(R12, target_offset));
- // Update counter.
- __ movq(R8, Address(R12, count_offset));
- __ addq(R8, Immediate(Smi::RawValue(1)));
- __ movq(R9, Immediate(Smi::RawValue(Smi::kMaxValue)));
- __ cmovnoq(R9, R8);
- __ StoreIntoSmiField(Address(R12, count_offset), R9);
+ if (FLAG_optimization_counter_threshold >= 0) {
+ // Update counter.
+ __ Comment("Update caller's counter");
+ __ movq(R8, Address(R12, count_offset));
+ __ addq(R8, Immediate(Smi::RawValue(1)));
+ __ movq(R9, Immediate(Smi::RawValue(Smi::kMaxValue)));
+ __ cmovnoq(R9, R8);
+ __ StoreIntoSmiField(Address(R12, count_offset), R9);
+ }
__ Comment("Call target");
__ Bind(&call_target_function);
@@ -1496,13 +1506,15 @@
__ jmp(RCX);
}
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ pushq(RBX);
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ popq(RBX);
- __ LeaveStubFrame();
- __ jmp(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ pushq(RBX);
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ popq(RBX);
+ __ LeaveStubFrame();
+ __ jmp(&done_stepping);
+ }
}
@@ -1652,16 +1664,18 @@
// Check single stepping.
Label stepping, done_stepping;
- __ LoadIsolate(RAX);
- __ movzxb(RAX, Address(RAX, Isolate::single_step_offset()));
- __ cmpq(RAX, Immediate(0));
+ if (FLAG_support_debugger) {
+ __ LoadIsolate(RAX);
+ __ movzxb(RAX, Address(RAX, Isolate::single_step_offset()));
+ __ cmpq(RAX, Immediate(0));
#if defined(DEBUG)
static const bool kJumpLength = Assembler::kFarJump;
#else
static const bool kJumpLength = Assembler::kNearJump;
#endif // DEBUG
- __ j(NOT_EQUAL, &stepping, kJumpLength);
- __ Bind(&done_stepping);
+ __ j(NOT_EQUAL, &stepping, kJumpLength);
+ __ Bind(&done_stepping);
+ }
// RBX: IC data object (preserved).
__ movq(R12, FieldAddress(RBX, ICData::ic_data_offset()));
@@ -1671,12 +1685,14 @@
const intptr_t target_offset = ICData::TargetIndexFor(0) * kWordSize;
const intptr_t count_offset = ICData::CountIndexFor(0) * kWordSize;
- // Increment count for this call.
- __ movq(R8, Address(R12, count_offset));
- __ addq(R8, Immediate(Smi::RawValue(1)));
- __ movq(R9, Immediate(Smi::RawValue(Smi::kMaxValue)));
- __ cmovnoq(R9, R8);
- __ StoreIntoSmiField(Address(R12, count_offset), R9);
+ if (FLAG_optimization_counter_threshold >= 0) {
+ // Increment count for this call.
+ __ movq(R8, Address(R12, count_offset));
+ __ addq(R8, Immediate(Smi::RawValue(1)));
+ __ movq(R9, Immediate(Smi::RawValue(Smi::kMaxValue)));
+ __ cmovnoq(R9, R8);
+ __ StoreIntoSmiField(Address(R12, count_offset), R9);
+ }
// Load arguments descriptor into R10.
__ movq(R10, FieldAddress(RBX, ICData::arguments_descriptor_offset()));
@@ -1688,13 +1704,15 @@
__ addq(RCX, Immediate(Instructions::HeaderSize() - kHeapObjectTag));
__ jmp(RCX);
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ pushq(RBX); // Preserve IC data object.
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ popq(RBX);
- __ LeaveStubFrame();
- __ jmp(&done_stepping, Assembler::kNearJump);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ pushq(RBX); // Preserve IC data object.
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ popq(RBX);
+ __ LeaveStubFrame();
+ __ jmp(&done_stepping, Assembler::kNearJump);
+ }
}
@@ -2065,11 +2083,13 @@
Assembler* assembler) {
// Check single stepping.
Label stepping, done_stepping;
- __ LoadIsolate(RAX);
- __ movzxb(RAX, Address(RAX, Isolate::single_step_offset()));
- __ cmpq(RAX, Immediate(0));
- __ j(NOT_EQUAL, &stepping);
- __ Bind(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ LoadIsolate(RAX);
+ __ movzxb(RAX, Address(RAX, Isolate::single_step_offset()));
+ __ cmpq(RAX, Immediate(0));
+ __ j(NOT_EQUAL, &stepping);
+ __ Bind(&done_stepping);
+ }
const Register left = RAX;
const Register right = RDX;
@@ -2079,11 +2099,13 @@
GenerateIdenticalWithNumberCheckStub(assembler, left, right);
__ ret();
- __ Bind(&stepping);
- __ EnterStubFrame();
- __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
- __ LeaveStubFrame();
- __ jmp(&done_stepping);
+ if (FLAG_support_debugger) {
+ __ Bind(&stepping);
+ __ EnterStubFrame();
+ __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+ __ LeaveStubFrame();
+ __ jmp(&done_stepping);
+ }
}
@@ -2103,6 +2125,59 @@
__ ret();
}
+
+void StubCode::EmitMegamorphicLookup(
+ Assembler* assembler, Register receiver, Register cache, Register target) {
+ ASSERT((cache != RAX) && (cache != RDI));
+ __ LoadTaggedClassIdMayBeSmi(RAX, receiver);
+ // RAX: class ID of the receiver (smi).
+ __ movq(RDI, FieldAddress(cache, MegamorphicCache::buckets_offset()));
+ __ movq(RBX, FieldAddress(cache, MegamorphicCache::mask_offset()));
+ // RDI: cache buckets array.
+ // RBX: mask.
+ __ movq(RCX, RAX);
+
+ Label loop, update, call_target_function;
+ __ jmp(&loop);
+
+ __ Bind(&update);
+ __ AddImmediate(RCX, Immediate(Smi::RawValue(1)), PP);
+ __ Bind(&loop);
+ __ andq(RCX, RBX);
+ const intptr_t base = Array::data_offset();
+ // RCX is smi tagged, but table entries are two words, so TIMES_8.
+ __ movq(RDX, FieldAddress(RDI, RCX, TIMES_8, base));
+
+ ASSERT(kIllegalCid == 0);
+ __ testq(RDX, RDX);
+ __ j(ZERO, &call_target_function, Assembler::kNearJump);
+ __ cmpq(RDX, RAX);
+ __ j(NOT_EQUAL, &update, Assembler::kNearJump);
+
+ __ Bind(&call_target_function);
+ // Call the target found in the cache. For a class id match, this is a
+ // proper target for the given name and arguments descriptor. If the
+ // illegal class id was found, the target is a cache miss handler that can
+ // be invoked as a normal Dart function.
+ __ movq(RAX, FieldAddress(RDI, RCX, TIMES_8, base + kWordSize));
+ __ movq(target, FieldAddress(RAX, Function::instructions_offset()));
+ // TODO(srdjan): Evaluate performance impact of moving the instruction below
+ // to the call site, instead of having it here.
+ __ AddImmediate(
+ target, Immediate(Instructions::HeaderSize() - kHeapObjectTag), PP);
+}
+
+
+// Called from megamorphic calls.
+// RDI: receiver.
+// RBX: lookup cache.
+// Result:
+// RCX: entry point.
+void StubCode::GenerateMegamorphicLookupStub(Assembler* assembler) {
+ EmitMegamorphicLookup(assembler, RDI, RBX, RCX);
+ __ ret();
+}
+
} // namespace dart
#endif // defined TARGET_ARCH_X64
diff --git a/runtime/vm/symbols.cc b/runtime/vm/symbols.cc
index cb23091..eadd9ff 100644
--- a/runtime/vm/symbols.cc
+++ b/runtime/vm/symbols.cc
@@ -30,8 +30,8 @@
"", // matches kKwTableStart.
-#define DEFINE_KEYWORD_SYMBOL_INDEX(token, chars, ignore1, ignore2) \
- chars,
+#define DEFINE_KEYWORD_SYMBOL_INDEX(t, s, p, a) \
+ s,
DART_KEYWORD_LIST(DEFINE_KEYWORD_SYMBOL_INDEX)
#undef DEFINE_KEYWORD_SYMBOL_INDEX
};
@@ -65,23 +65,17 @@
// Create all predefined symbols.
ASSERT((sizeof(names) / sizeof(const char*)) == Symbols::kNullCharId);
- // First set up all the predefined string symbols.
- for (intptr_t i = 1; i < Symbols::kKwTableStart; i++) {
+ // Set up all the predefined string symbols and create symbols for language
+ // keywords. We don't expect to find any overlaps between the predefined
+ // string symbols and the language keywords. If an overlap is introduced
+ // inadvertantly the ASSERT in AddToVMIsolate while fail.
+ for (intptr_t i = 1; i < Symbols::kNullCharId; i++) {
String* str = String::ReadOnlyHandle();
*str = OneByteString::New(names[i], Heap::kOld);
AddToVMIsolate(*str);
symbol_handles_[i] = str;
}
- // Create symbols for language keywords. Some keywords are equal to
- // symbols we already created, so use New() instead of Add() to ensure
- // that the symbols are canonicalized.
- for (intptr_t i = Symbols::kKwTableStart; i < Symbols::kNullCharId; i++) {
- String* str = String::ReadOnlyHandle();
- *str = New(names[i]);
- symbol_handles_[i] = str;
- }
-
// Add Latin1 characters as Symbols, so that Symbols::FromCharCode is fast.
for (intptr_t c = 0; c < kNumberOfOneCharCodeSymbols; c++) {
intptr_t idx = (kNullCharId + c);
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index f52e20a..a5a4383 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -396,13 +396,13 @@
#define DEFINE_SYMBOL_INDEX(symbol, literal) \
k##symbol##Id,
-PREDEFINED_SYMBOLS_LIST(DEFINE_SYMBOL_INDEX)
+ PREDEFINED_SYMBOLS_LIST(DEFINE_SYMBOL_INDEX)
#undef DEFINE_SYMBOL_INDEX
kKwTableStart, // First keyword at kKwTableStart + 1.
-#define DEFINE_KEYWORD_SYMBOL_INDEX(token, chars, ignore1, ignore2) \
- token##Id,
+#define DEFINE_KEYWORD_SYMBOL_INDEX(t, s, p, a) \
+ t##Id,
DART_KEYWORD_LIST(DEFINE_KEYWORD_SYMBOL_INDEX)
#undef DEFINE_KEYWORD_SYMBOL_INDEX
@@ -514,10 +514,17 @@
static const String& True() { return *(symbol_handles_[kTRUEId]); }
static const String& Void() { return *(symbol_handles_[kVOIDId]); }
- // Access methods for symbol handles stored in the vm isolate.
+ // Access methods for symbol handles stored in the vm isolate for predefined
+ // symbols.
#define DEFINE_SYMBOL_HANDLE_ACCESSOR(symbol, literal) \
static const String& symbol() { return *(symbol_handles_[k##symbol##Id]); }
-PREDEFINED_SYMBOLS_LIST(DEFINE_SYMBOL_HANDLE_ACCESSOR)
+ PREDEFINED_SYMBOLS_LIST(DEFINE_SYMBOL_HANDLE_ACCESSOR)
+#undef DEFINE_SYMBOL_HANDLE_ACCESSOR
+
+ // Access methods for symbol handles stored in the vm isolate for keywords.
+#define DEFINE_SYMBOL_HANDLE_ACCESSOR(t, s, p, a) \
+ static const String& t() { return *(symbol_handles_[t##Id]); }
+ DART_KEYWORD_LIST(DEFINE_SYMBOL_HANDLE_ACCESSOR)
#undef DEFINE_SYMBOL_HANDLE_ACCESSOR
// Get symbol for scanner keyword.
diff --git a/runtime/vm/vm.gypi b/runtime/vm/vm.gypi
index c38c55b..211950f 100644
--- a/runtime/vm/vm.gypi
+++ b/runtime/vm/vm.gypi
@@ -15,6 +15,8 @@
'collection_patch_cc_file': '<(gen_source_dir)/collection_patch_gen.cc',
'convert_cc_file': '<(gen_source_dir)/convert_gen.cc',
'convert_patch_cc_file': '<(gen_source_dir)/convert_patch_gen.cc',
+ 'developer_cc_file': '<(gen_source_dir)/developer_gen.cc',
+ 'developer_patch_cc_file': '<(gen_source_dir)/developer_patch_gen.cc',
'internal_cc_file': '<(gen_source_dir)/internal_gen.cc',
'internal_patch_cc_file': '<(gen_source_dir)/internal_patch_gen.cc',
'isolate_cc_file': '<(gen_source_dir)/isolate_gen.cc',
@@ -23,14 +25,14 @@
'math_patch_cc_file': '<(gen_source_dir)/math_patch_gen.cc',
'mirrors_cc_file': '<(gen_source_dir)/mirrors_gen.cc',
'mirrors_patch_cc_file': '<(gen_source_dir)/mirrors_patch_gen.cc',
+ 'profiler_cc_file': '<(gen_source_dir)/profiler_gen.cc',
+ 'profiler_patch_cc_file': '<(gen_source_dir)/profiler_patch_gen.cc',
'service_cc_file': '<(gen_source_dir)/service_gen.cc',
'snapshot_test_dat_file': '<(gen_source_dir)/snapshot_test.dat',
'snapshot_test_in_dat_file': 'snapshot_test_in.dat',
'snapshot_test_dart_file': 'snapshot_test.dart',
'typed_data_cc_file': '<(gen_source_dir)/typed_data_gen.cc',
'typed_data_patch_cc_file': '<(gen_source_dir)/typed_data_patch_gen.cc',
- 'profiler_cc_file': '<(gen_source_dir)/profiler_gen.cc',
- 'profiler_patch_cc_file': '<(gen_source_dir)/profiler_patch_gen.cc',
},
'targets': [
{
@@ -101,7 +103,77 @@
}]],
},
{
- 'target_name': 'libdart_lib_withcore',
+ 'target_name': 'libdart_vm_nosnapshot',
+ 'type': 'static_library',
+ 'toolsets':['host', 'target'],
+ 'dependencies': [
+ 'generate_service_cc_file#host'
+ ],
+ 'includes': [
+ 'vm_sources.gypi',
+ '../platform/platform_headers.gypi',
+ '../platform/platform_sources.gypi',
+ ],
+ 'sources': [
+ # Include generated source files.
+ '<(service_cc_file)',
+ ],
+ 'sources/': [
+ # Exclude all _test.[cc|h] files.
+ ['exclude', '_test\\.(cc|h)$'],
+ ],
+ 'include_dirs': [
+ '..',
+ ],
+ 'defines': [
+ 'DART_NO_SNAPSHOT',
+ ],
+ 'conditions': [
+ ['OS=="linux"', {
+ 'link_settings': {
+ 'libraries': [
+ '-lpthread',
+ '-lrt',
+ '-ldl',
+ ],
+ },
+ }],
+ ['OS=="android" and _toolset=="host"', {
+ 'link_settings': {
+ 'libraries': [
+ '-lpthread',
+ '-lrt',
+ '-ldl',
+ ],
+ },
+ }],
+ ['OS=="win"', {
+ 'sources/' : [
+ ['exclude', 'gdbjit.cc'],
+ ],
+ }],
+ ['dart_vtune_support==0', {
+ 'sources/' : [
+ ['exclude', 'vtune\\.(cc|h)$'],
+ ],
+ }],
+ ['dart_vtune_support==1', {
+ 'include_dirs': ['<(dart_vtune_root)/include'],
+ 'defines': ['DART_VTUNE_SUPPORT'],
+ 'link_settings': {
+ 'conditions': [
+ ['OS=="linux"', {
+ 'libraries': ['-ljitprofiling'],
+ }],
+ ['OS=="win"', {
+ 'libraries': ['-ljitprofiling.lib'],
+ }],
+ ],
+ },
+ }]],
+ },
+ {
+ 'target_name': 'libdart_lib_nosnapshot',
'type': 'static_library',
'toolsets':['host', 'target'],
'dependencies': [
@@ -113,6 +185,8 @@
'generate_collection_patch_cc_file#host',
'generate_convert_cc_file#host',
'generate_convert_patch_cc_file#host',
+ 'generate_developer_cc_file#host',
+ 'generate_developer_patch_cc_file#host',
'generate_internal_cc_file#host',
'generate_internal_patch_cc_file#host',
'generate_isolate_cc_file#host',
@@ -121,21 +195,22 @@
'generate_math_patch_cc_file#host',
'generate_mirrors_cc_file#host',
'generate_mirrors_patch_cc_file#host',
- 'generate_typed_data_cc_file#host',
- 'generate_typed_data_patch_cc_file#host',
'generate_profiler_cc_file#host',
'generate_profiler_patch_cc_file#host',
+ 'generate_typed_data_cc_file#host',
+ 'generate_typed_data_patch_cc_file#host',
],
'includes': [
'../lib/async_sources.gypi',
'../lib/collection_sources.gypi',
'../lib/core_sources.gypi',
+ '../lib/developer_sources.gypi',
+ '../lib/internal_sources.gypi',
'../lib/isolate_sources.gypi',
'../lib/math_sources.gypi',
'../lib/mirrors_sources.gypi',
- '../lib/typed_data_sources.gypi',
'../lib/profiler_sources.gypi',
- '../lib/internal_sources.gypi',
+ '../lib/typed_data_sources.gypi',
],
'sources': [
'bootstrap.cc',
@@ -148,6 +223,8 @@
'<(collection_patch_cc_file)',
'<(convert_cc_file)',
'<(convert_patch_cc_file)',
+ '<(developer_cc_file)',
+ '<(developer_patch_cc_file)',
'<(internal_cc_file)',
'<(internal_patch_cc_file)',
'<(isolate_cc_file)',
@@ -156,10 +233,10 @@
'<(math_patch_cc_file)',
'<(mirrors_cc_file)',
'<(mirrors_patch_cc_file)',
- '<(typed_data_cc_file)',
- '<(typed_data_patch_cc_file)',
'<(profiler_cc_file)',
'<(profiler_patch_cc_file)',
+ '<(typed_data_cc_file)',
+ '<(typed_data_patch_cc_file)',
],
'include_dirs': [
'..',
@@ -173,12 +250,13 @@
'../lib/async_sources.gypi',
'../lib/collection_sources.gypi',
'../lib/core_sources.gypi',
+ '../lib/developer_sources.gypi',
+ '../lib/internal_sources.gypi',
'../lib/isolate_sources.gypi',
'../lib/math_sources.gypi',
'../lib/mirrors_sources.gypi',
- '../lib/typed_data_sources.gypi',
'../lib/profiler_sources.gypi',
- '../lib/internal_sources.gypi',
+ '../lib/typed_data_sources.gypi',
],
'sources': [
'bootstrap_nocore.cc',
@@ -987,6 +1065,86 @@
]
},
{
+ 'target_name': 'generate_developer_cc_file',
+ 'type': 'none',
+ 'toolsets':['host'],
+ 'includes': [
+ # Load the shared library sources.
+ '../../sdk/lib/developer/developer_sources.gypi',
+ ],
+ 'sources/': [
+ # Exclude all .[cc|h] files.
+ # This is only here for reference. Excludes happen after
+ # variable expansion, so the script has to do its own
+ # exclude processing of the sources being passed.
+ ['exclude', '\\.cc|h$'],
+ ],
+ 'actions': [
+ {
+ 'action_name': 'generate_developer_cc',
+ 'inputs': [
+ '../tools/gen_library_src_paths.py',
+ '<(libgen_in_cc_file)',
+ '<@(_sources)',
+ ],
+ 'outputs': [
+ '<(developer_cc_file)',
+ ],
+ 'action': [
+ 'python',
+ 'tools/gen_library_src_paths.py',
+ '--output', '<(developer_cc_file)',
+ '--input_cc', '<(libgen_in_cc_file)',
+ '--include', 'vm/bootstrap.h',
+ '--var_name', 'dart::Bootstrap::developer_source_paths_',
+ '--library_name', 'dart:developer',
+ '<@(_sources)',
+ ],
+ 'message': 'Generating ''<(developer_cc_file)'' file.'
+ },
+ ]
+ },
+ {
+ 'target_name': 'generate_developer_patch_cc_file',
+ 'type': 'none',
+ 'toolsets':['host'],
+ 'includes': [
+ # Load the runtime implementation sources.
+ '../lib/developer_sources.gypi',
+ ],
+ 'sources/': [
+ # Exclude all .[cc|h] files.
+ # This is only here for reference. Excludes happen after
+ # variable expansion, so the script has to do its own
+ # exclude processing of the sources being passed.
+ ['exclude', '\\.cc|h$'],
+ ],
+ 'actions': [
+ {
+ 'action_name': 'generate_developer_patch_cc',
+ 'inputs': [
+ '../tools/gen_library_src_paths.py',
+ '<(libgen_in_cc_file)',
+ '<@(_sources)',
+ ],
+ 'outputs': [
+ '<(developer_patch_cc_file)',
+ ],
+ 'action': [
+ 'python',
+ 'tools/gen_library_src_paths.py',
+ '--output', '<(developer_patch_cc_file)',
+ '--input_cc', '<(libgen_in_cc_file)',
+ '--include', 'vm/bootstrap.h',
+ '--var_name', 'dart::Bootstrap::developer_patch_paths_',
+ '--library_name', 'dart:developer',
+ '<@(_sources)',
+ ],
+ 'message': 'Generating ''<(developer_patch_cc_file)'' file.'
+ },
+ ]
+ },
+ {
'target_name': 'generate_snapshot_test_dat_file',
'type': 'none',
'toolsets':['host'],
diff --git a/sdk/lib/_internal/compiler/js_lib/collection_patch.dart b/sdk/lib/_internal/compiler/js_lib/collection_patch.dart
index 9df7c99..06d944a 100644
--- a/sdk/lib/_internal/compiler/js_lib/collection_patch.dart
+++ b/sdk/lib/_internal/compiler/js_lib/collection_patch.dart
@@ -430,7 +430,7 @@
}
class HashMapKeyIterable<E> extends Iterable<E>
- implements EfficientLength {
+ implements EfficientLengthIterable<E> {
final _map;
HashMapKeyIterable(this._map);
diff --git a/sdk/lib/_internal/compiler/js_lib/constant_map.dart b/sdk/lib/_internal/compiler/js_lib/constant_map.dart
index e716cf1..dcaef2a 100644
--- a/sdk/lib/_internal/compiler/js_lib/constant_map.dart
+++ b/sdk/lib/_internal/compiler/js_lib/constant_map.dart
@@ -23,8 +23,7 @@
void addAll(Map<K, V> other) => _throwUnmodifiable();
}
-class ConstantStringMap<K, V> extends ConstantMap<K, V>
- implements _symbol_dev.EfficientLength {
+class ConstantStringMap<K, V> extends ConstantMap<K, V> {
// This constructor is not used. The instantiation is shortcut by the
// compiler. It is here to make the uninitialized final fields legal.
diff --git a/sdk/lib/_internal/compiler/js_lib/developer_patch.dart b/sdk/lib/_internal/compiler/js_lib/developer_patch.dart
new file mode 100644
index 0000000..a6087a1
--- /dev/null
+++ b/sdk/lib/_internal/compiler/js_lib/developer_patch.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2015, 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.
+
+// Patch file for dart:developer library.
+
+import 'dart:_js_helper' show patch;
+import 'dart:_foreign_helper' show JS;
+
+/// If [when] is true, stop the program as if a breakpoint where hit at the
+/// following statement. Returns the value of [when]. Some debuggers may
+/// display [msg].
+/// NOTE: When invoked, the isolate will not return until a debugger
+/// continues execution. When running in the Dart VM the behaviour is the same
+/// regardless of whether or not a debugger is connected. When compiled to
+/// JavaScript, this uses the "debugger" statement, and behaves exactly as
+/// that does.
+@patch
+@ForceInline()
+bool debugger({bool when: true, String msg}) {
+ if (when) {
+ JS('', 'debugger');
+ }
+ return when;
+}
+
+/// Send a reference to [object] to any attached debuggers so they may open an
+/// inspector on the object. Returns the argument.
+@patch
+inspect(object) {
+ return object;
+}
diff --git a/sdk/lib/_internal/compiler/js_lib/foreign_helper.dart b/sdk/lib/_internal/compiler/js_lib/foreign_helper.dart
index 6b58793..e5e7f6f 100644
--- a/sdk/lib/_internal/compiler/js_lib/foreign_helper.dart
+++ b/sdk/lib/_internal/compiler/js_lib/foreign_helper.dart
@@ -198,11 +198,6 @@
JS_INTERCEPTOR_CONSTANT(Type type) {}
/**
- * Returns the prefix used for generated is checks on classes.
- */
-String JS_OPERATOR_IS_PREFIX() {}
-
-/**
* Returns the prefix used for generated type argument substitutions on classes.
*/
String JS_OPERATOR_AS_PREFIX() {}
diff --git a/sdk/lib/_internal/compiler/js_lib/isolate_helper.dart b/sdk/lib/_internal/compiler/js_lib/isolate_helper.dart
index 2619c35..ad6883c 100644
--- a/sdk/lib/_internal/compiler/js_lib/isolate_helper.dart
+++ b/sdk/lib/_internal/compiler/js_lib/isolate_helper.dart
@@ -753,29 +753,20 @@
static final Expando<int> workerIds = new Expando<int>();
/**
- * The src url for the script tag that loaded this Used to create
- * JavaScript workers.
+ * The src url for the script tag that loaded this function.
+ *
+ * Used to create JavaScript workers and load deferred libraries.
*/
static String computeThisScript() {
var currentScript = JS_EMBEDDED_GLOBAL('', CURRENT_SCRIPT);
if (currentScript != null) {
return JS('String', 'String(#.src)', currentScript);
}
- if (Primitives.isD8) return computeThisScriptD8();
- if (Primitives.isJsshell) return computeThisScriptJsshell();
// A worker has no script tag - so get an url from a stack-trace.
if (_globalState.isWorker) return computeThisScriptFromTrace();
return null;
}
- static String computeThisScriptJsshell() {
- return JS('String|Null', 'thisFilename()');
- }
-
- // TODO(ahe): The following is for supporting D8. We should move this code
- // to a helper library that is only loaded when testing on D8.
- static String computeThisScriptD8() => computeThisScriptFromTrace();
-
static String computeThisScriptFromTrace() {
var stack = JS('String|Null', 'new Error().stack');
if (stack == null) {
diff --git a/sdk/lib/_internal/compiler/js_lib/js_array.dart b/sdk/lib/_internal/compiler/js_lib/js_array.dart
index 2afabdd..bef5026 100644
--- a/sdk/lib/_internal/compiler/js_lib/js_array.dart
+++ b/sdk/lib/_internal/compiler/js_lib/js_array.dart
@@ -83,8 +83,7 @@
// to know if the property exists.
JS('void', r'#.fixed$length = Array', list);
JS('void', r'#.immutable$list = Array', list);
- // TODO(23309): Make it detectable that the list has fixed length.
- return JS('JSArray', '#', list);
+ return JS('JSUnmodifiableArray', '#', list);
}
checkMutable(reason) {
@@ -125,7 +124,7 @@
void insertAll(int index, Iterable<E> iterable) {
checkGrowable('insertAll');
RangeError.checkValueInInterval(index, 0, this.length, "index");
- if (iterable is! EfficientLength) {
+ if (iterable is! EfficientLengthIterable) {
iterable = iterable.toList();
}
int insertionLength = iterable.length;
@@ -440,7 +439,7 @@
void replaceRange(int start, int end, Iterable<E> replacement) {
checkGrowable('replace range');
RangeError.checkValidRange(start, end, this.length);
- if (replacement is! EfficientLength) {
+ if (replacement is! EfficientLengthIterable) {
replacement = replacement.toList();
}
int removeLength = end - start;
@@ -613,6 +612,7 @@
class JSMutableArray<E> extends JSArray<E> implements JSMutableIndexable {}
class JSFixedArray<E> extends JSMutableArray<E> {}
class JSExtendableArray<E> extends JSMutableArray<E> {}
+class JSUnmodifiableArray<E> extends JSArray<E> {} // Already is JSIndexable.
/// An [Iterator] that iterates a JSArray.
diff --git a/sdk/lib/_internal/compiler/js_lib/js_helper.dart b/sdk/lib/_internal/compiler/js_lib/js_helper.dart
index 58ead91..f0d7ebf 100644
--- a/sdk/lib/_internal/compiler/js_lib/js_helper.dart
+++ b/sdk/lib/_internal/compiler/js_lib/js_helper.dart
@@ -19,9 +19,7 @@
JsBuiltin,
JsGetName,
LEAF_TAGS,
- METADATA,
- NATIVE_SUPERCLASS_TAG_NAME,
- TYPES;
+ NATIVE_SUPERCLASS_TAG_NAME;
import 'dart:collection';
@@ -62,14 +60,13 @@
JS_NULL_CLASS_NAME,
JS_OBJECT_CLASS_NAME,
JS_OPERATOR_AS_PREFIX,
- JS_OPERATOR_IS_PREFIX,
JS_SIGNATURE_NAME,
JS_STRING_CONCAT,
RAW_DART_FUNCTION_REF;
import 'dart:_interceptors';
import 'dart:_internal' as _symbol_dev;
-import 'dart:_internal' show EfficientLength, MappedIterable;
+import 'dart:_internal' show MappedIterable;
import 'dart:_native_typed_data';
@@ -92,6 +89,15 @@
abstract class InternalMap {
}
+/// Extracts the classname from the isCheckProperty.
+// TODO(floitsch): move this to foreign_helper.dart or similar.
+@ForceInline()
+String classNameFromIsCheckProperty(String isCheckProperty) {
+ return JS_BUILTIN('returns:String;depends:none;effects:none',
+ JsBuiltin.classNameFromIsCheckProperty,
+ isCheckProperty);
+}
+
/// Returns true if the given [type] is a function type object.
// TODO(floitsch): move this to foreign_helper.dart or similar.
@ForceInline()
@@ -137,6 +143,28 @@
return JS_BUILTIN('', JsBuiltin.rawRuntimeType, o);
}
+/// Returns whether the given [type] is a subtype of [other].
+///
+/// The argument [other] is the name of the other type, as computed by
+/// [runtimeTypeToString].
+bool builtinIsSubtype(type, String other) {
+ return JS_BUILTIN('returns:bool;effects:none;depends:none',
+ JsBuiltin.isSubtype, other, type);
+}
+
+/// Returns the metadata of the given [index].
+@ForceInline()
+getMetadata(int index) {
+ return JS_BUILTIN('returns:var;effects:none;depends:none',
+ JsBuiltin.getMetadata, index);
+}
+
+/// Returns the type of the given [index].
+@ForceInline()
+getType(int index) {
+ return JS_BUILTIN('returns:var;effects:none;depends:none',
+ JsBuiltin.getType, index);
+}
/// No-op method that is called to inform the compiler that preambles might
/// be needed when executing the resulting JS file in a command-line
@@ -513,8 +541,8 @@
metadataIndex = JS('int', '#[# + # + #]', data,
parameter, optionalParameterCount, FIRST_DEFAULT_ARGUMENT);
}
- var metadata = JS_EMBEDDED_GLOBAL('', METADATA);
- return JS('String', '#[#]', metadata, metadataIndex);
+ var name = getMetadata(metadataIndex);
+ return JS('String', '#', name);
}
List<int> parameterMetadataAnnotations(int parameter) {
@@ -597,16 +625,6 @@
String get reflectionName => JS('String', r'#.$reflectionName', jsFunction);
}
-getMetadata(int index) {
- var metadata = JS_EMBEDDED_GLOBAL('', METADATA);
- return JS('', '#[#]', metadata, index);
-}
-
-getType(int index) {
- var types = JS_EMBEDDED_GLOBAL('', TYPES);
- return JS('', '#[#]', types, index);
-}
-
class Primitives {
/// Isolate-unique ID for caching [JsClosureMirror.function].
/// Note the initial value is used by the first isolate (or if there are no
@@ -2266,14 +2284,20 @@
var signatureFunction;
if (JS('bool', 'typeof # == "number"', functionType)) {
- var types = JS_EMBEDDED_GLOBAL('', TYPES);
- // It is ok, if the access is inlined into the JS. The access is safe in
- // and outside the function. In fact we prefer if there is a textual
- // inlining.
+ // We cannot call [getType] here, since the types-metadata might not be
+ // set yet. This is, because fromTearOff might be called for constants
+ // when the program isn't completely set up yet.
+ //
+ // Note that we cannot just textually inline the call
+ // `getType(functionType)` since we cannot guarantee that the (then)
+ // captured variable `functionType` isn't reused.
signatureFunction =
- JS('', '(function(s){return function(){return #[s]}})(#)',
- types,
- functionType);
+ JS('',
+ '''(function(t) {
+ return function(){ return #(t); };
+ })(#)''',
+ RAW_DART_FUNCTION_REF(getType),
+ functionType);
} else if (!isStatic
&& JS('bool', 'typeof # == "function"', functionType)) {
var getReceiver = isIntercepted
@@ -2823,8 +2847,7 @@
}
void propertyTypeError(value, property) {
- // Cuts the property name to the class name.
- String name = property.substring(3, property.length);
+ String name = classNameFromIsCheckProperty(property);
throw new TypeErrorImplementation(value, name);
}
diff --git a/sdk/lib/_internal/compiler/js_lib/js_rti.dart b/sdk/lib/_internal/compiler/js_lib/js_rti.dart
index ed75bc8..ec6ae53 100644
--- a/sdk/lib/_internal/compiler/js_lib/js_rti.dart
+++ b/sdk/lib/_internal/compiler/js_lib/js_rti.dart
@@ -271,14 +271,9 @@
///
/// In minified mode, uses the unminified names if available.
String computeTypeName(String isField, List arguments) {
- // Shorten the field name to the class name and append the textual
+ // Extract the class name from the is field and append the textual
// representation of the type arguments.
- // TODO(floitsch): change this to:
- // String className = JS_BUILTIN('depends:none;effects:none;returns:String',
- // JsBuiltin.classNameFroIsCheckProperty,
- // isField);
- int prefixLength = JS_OPERATOR_IS_PREFIX().length;
- return Primitives.formatType(isField.substring(prefixLength, isField.length),
+ return Primitives.formatType(classNameFromIsCheckProperty(isField),
arguments);
}
@@ -456,20 +451,15 @@
// constructed from the type of [t].
var typeOfS = isJsArray(s) ? getIndex(s, 0) : s;
var typeOfT = isJsArray(t) ? getIndex(t, 0) : t;
+
// Check for a subtyping flag.
- var name = runtimeTypeToString(typeOfT);
// Get the necessary substitution of the type arguments, if there is one.
var substitution;
if (isNotIdentical(typeOfT, typeOfS)) {
- // TODO(floitsch): change this to:
- // if (!JS_BUILTIN('depends:none;effects:none;returns:bool',
- // JsBuiltin.implementsType,
- // typeOfSPrototype, name)) {
- // return false;
- // }
- var test = '${JS_OPERATOR_IS_PREFIX()}${name}';
+ if (!builtinIsSubtype(typeOfS, runtimeTypeToString(typeOfT))) {
+ return false;
+ }
var typeOfSPrototype = JS('', '#.prototype', typeOfS);
- if (hasNoField(typeOfSPrototype, test)) return false;
var field = '${JS_OPERATOR_AS_PREFIX()}${runtimeTypeToString(typeOfT)}';
substitution = getField(typeOfSPrototype, field);
}
diff --git a/sdk/lib/_internal/compiler/js_lib/linked_hash_map.dart b/sdk/lib/_internal/compiler/js_lib/linked_hash_map.dart
index bbf76d3..eb5f295 100644
--- a/sdk/lib/_internal/compiler/js_lib/linked_hash_map.dart
+++ b/sdk/lib/_internal/compiler/js_lib/linked_hash_map.dart
@@ -370,7 +370,7 @@
}
class LinkedHashMapKeyIterable<E> extends Iterable<E>
- implements EfficientLength {
+ implements EfficientLengthIterable<E> {
final _map;
LinkedHashMapKeyIterable(this._map);
diff --git a/sdk/lib/_internal/compiler/js_lib/preambles/d8.js b/sdk/lib/_internal/compiler/js_lib/preambles/d8.js
index a48f918..18823e1 100644
--- a/sdk/lib/_internal/compiler/js_lib/preambles/d8.js
+++ b/sdk/lib/_internal/compiler/js_lib/preambles/d8.js
@@ -281,6 +281,43 @@
self.clearInterval = cancelTimer;
self.scheduleImmediate = addTask;
+ function computeCurrentScript() {
+ try {
+ throw new Error();
+ } catch(e) {
+ var stack = e.stack;
+ // The V8 stack looks like:
+ // at computeCurrentScript (preambles/d8.js:286:13)
+ // at Object.currentScript (preambles/d8.js:308:31)
+ // at init.currentScript (/tmp/foo.js:308:19)
+ // at /tmp/foo.js:320:7
+ // at /tmp/foo.js:331:4
+ var re = new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$", "mg");
+ var lastMatch = null;
+ do {
+ var match = re.exec(stack);
+ if (match != null) lastMatch = match;
+ } while (match != null);
+ return lastMatch[1];
+ }
+ }
+
+ // Adding a 'document' is dangerous since it invalidates the 'typeof document'
+ // test to see if we are running in the browser. It means that the runtime
+ // needs to do more precise checks.
+ // Note that we can't run "currentScript" right away, since that would give
+ // us the location of the preamble file. Instead we wait for the first access
+ // which should happen just before invoking main. At this point we are in
+ // the main file and setting the currentScript property is correct.
+ var cachedCurrentScript = null;
+ self.document = { get currentScript() {
+ if (cachedCurrentScript == null) {
+ cachedCurrentScript = {src: computeCurrentScript()};
+ }
+ return cachedCurrentScript;
+ }
+ };
+
// Support for deferred loading.
self.dartDeferredLibraryLoader = function(uri, successCallback, errorCallback) {
try {
diff --git a/sdk/lib/_internal/compiler/js_lib/preambles/jsshell.js b/sdk/lib/_internal/compiler/js_lib/preambles/jsshell.js
index 0012539..a33a58f 100644
--- a/sdk/lib/_internal/compiler/js_lib/preambles/jsshell.js
+++ b/sdk/lib/_internal/compiler/js_lib/preambles/jsshell.js
@@ -18,6 +18,46 @@
self.location = { href: "file://" + workingDirectory + "/" };
+ function computeCurrentScript() {
+ try {
+ throw new Error();
+ } catch(e) {
+ var stack = e.stack;
+ print(stack);
+ // The jsshell stack looks like:
+ // computeCurrentScript@...preambles/jsshell.js:23:13
+ // self.document.currentScript@...preambles/jsshell.js:53:37
+ // @/tmp/foo.js:308:1
+ // @/tmp/foo.js:303:1
+ // @/tmp/foo.js:5:1
+ var re = new RegExp("^.*@(.*):[0-9]*:[0-9]*$", "mg");
+ var lastMatch = null;
+ do {
+ var match = re.exec(stack);
+ if (match != null) lastMatch = match;
+ } while (match != null);
+ return lastMatch[1];
+ }
+ }
+
+ // Adding a 'document' is dangerous since it invalidates the 'typeof document'
+ // test to see if we are running in the browser. It means that the runtime
+ // needs to do more precise checks.
+ // Note that we can't run "currentScript" right away, since that would give
+ // us the location of the preamble file. Instead we wait for the first access
+ // which should happen just before invoking main. At this point we are in
+ // the main file and setting the currentScript property is correct.
+ // Note that we cannot use `thisFileName()`, since that would give us the
+ // preamble and not the script file.
+ var cachedCurrentScript = null;
+ self.document = { get currentScript() {
+ if (cachedCurrentScript == null) {
+ cachedCurrentScript = {src: computeCurrentScript()};
+ }
+ return cachedCurrentScript;
+ }
+ };
+
// Support for deferred loading.
self.dartDeferredLibraryLoader = function(uri, successCallback, errorCallback) {
try {
diff --git a/sdk/lib/_internal/compiler/js_lib/shared/embedded_names.dart b/sdk/lib/_internal/compiler/js_lib/shared/embedded_names.dart
index 8976873..0e45562 100644
--- a/sdk/lib/_internal/compiler/js_lib/shared/embedded_names.dart
+++ b/sdk/lib/_internal/compiler/js_lib/shared/embedded_names.dart
@@ -31,7 +31,6 @@
const LIBRARIES = 'libraries';
const FINISHED_CLASSES = 'finishedClasses';
const ALL_CLASSES = 'allClasses';
-const METADATA = 'metadata';
const INTERCEPTORS_BY_TAG = 'interceptorsByTag';
const LEAF_TAGS = 'leafTags';
const LAZIES = 'lazies';
@@ -46,8 +45,16 @@
const DEFERRED_INITIALIZED = 'deferredInitialized';
const PRECOMPILED = 'precompiled';
+/// The name of the embedded global for metadata.
+///
+/// Use [JsBuiltin.getMetadata] instead of directly accessing this embedded
+/// global.
+const METADATA = 'metadata';
+
/// A list of types used in the program e.g. for reflection or encoding of
/// function types.
+///
+/// Use [JsBuiltin.getType] instead of directly accessing this embedded global.
const TYPES = 'types';
/// Returns a function that creates a new Isolate (its static state).
@@ -89,14 +96,25 @@
}
enum JsBuiltin {
- /// Returns the JavaScript constructor function for Dart's Object class.
- /// This can be used for type tests, as in
- ///
- /// var constructor = JS_BUILTIN('', JsBuiltin.dartObjectContructor);
- /// if (JS('bool', '# instanceof #', obj, constructor))
- /// ...
+ /// Returns the JavaScript constructor function for Dart's Object class.
+ /// This can be used for type tests, as in
+ ///
+ /// var constructor = JS_BUILTIN('', JsBuiltin.dartObjectContructor);
+ /// if (JS('bool', '# instanceof #', obj, constructor))
+ /// ...
dartObjectConstructor,
+ /// Returns the class name given an [isCheckProperty].
+ ///
+ /// This relies on a deterministic encoding of is-check properties (for
+ /// example `$isFoo` for a class `Foo`). In minified code the returned
+ /// classname is the minified name of the class.
+ ///
+ /// JS_BUILTIN('returns:String;depends:none;effects:none',
+ /// JsBuiltin.classNameFromIsCheckProperty,
+ /// isCheckProperty);
+ classNameFromIsCheckProperty,
+
/// Returns true if the given type is a function type. Returns false for
/// the one `Function` type singleton. (See [isFunctionTypeSingleton]).
///
@@ -124,4 +142,27 @@
///
/// JS_BUILTIN('', JsBuiltin.rawRuntimeType, o)
rawRuntimeType,
+
+ /// Returns whether the given type is a subtype of other.
+ ///
+ /// The argument `other` is the name of the potential supertype. It is
+ /// computed by `runtimeTypeToString`;
+ ///
+ /// *The `other` name must be passed in before the `type`.*
+ ///
+ /// JS_BUILTIN('returns:bool;effects:none;depends:none',
+ /// JsBuiltin.isSubtype, other, type);
+ isSubtype,
+
+ /// Returns the metadata of the given [index].
+ ///
+ /// JS_BUILTIN('returns:var;effects:none;depends:none',
+ /// JsBuiltin.getMetadata, index);
+ getMetadata,
+
+ /// Returns the type of the given [index].
+ ///
+ /// JS_BUILTIN('returns:var;effects:none;depends:none',
+ /// JsBuiltin.getType, index);
+ getType,
}
diff --git a/sdk/lib/_internal/libraries.dart b/sdk/lib/_internal/libraries.dart
index 938c389..7cd70c2 100644
--- a/sdk/lib/_internal/libraries.dart
+++ b/sdk/lib/_internal/libraries.dart
@@ -54,6 +54,11 @@
maturity: Maturity.STABLE,
dart2jsPatchPath: "_internal/compiler/js_lib/core_patch.dart"),
+ "developer": const LibraryInfo(
+ "developer/developer.dart",
+ maturity: Maturity.UNSTABLE,
+ dart2jsPatchPath: "_internal/compiler/js_lib/developer_patch.dart"),
+
"html": const LibraryInfo(
"html/dartium/html_dartium.dart",
category: "Client",
diff --git a/sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart b/sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart
index bfd97b3..a8a56f0 100644
--- a/sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart
+++ b/sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart
@@ -184,14 +184,10 @@
/// Starts up the admin server on an appropriate port and returns it.
///
/// This may only be called once on the build environment.
- Future<AdminServer> startAdminServer([int port]) {
+ Future<AdminServer> startAdminServer(int port) {
// Can only start once.
assert(_adminServer == null);
- // The admin server is bound to one before the base port by default, unless
- // it's ephemeral in which case the admin port is too.
- if (port == null) port = _basePort == 0 ? 0 : _basePort - 1;
-
return AdminServer.bind(this, _hostname, port)
.then((server) => _adminServer = server);
}
diff --git a/sdk/lib/_internal/pub/lib/src/command/cache_add.dart b/sdk/lib/_internal/pub/lib/src/command/cache_add.dart
index 453ccbd..ae5c1da 100644
--- a/sdk/lib/_internal/pub/lib/src/command/cache_add.dart
+++ b/sdk/lib/_internal/pub/lib/src/command/cache_add.dart
@@ -30,7 +30,7 @@
help: "Version constraint.");
}
- Future run() {
+ Future run() async {
// Make sure there is a package.
if (argResults.rest.isEmpty) {
usageException("No package to add given.");
@@ -59,38 +59,36 @@
var source = cache.sources["hosted"];
// TODO(rnystrom): Allow specifying the server.
- return source.getVersions(package, package).then((versions) {
- versions = versions.where(constraint.allows).toList();
+ var pubspecs = await source.getVersions(package, package);
+ var versions = pubspecs.map((pubspec) => pubspec.version)
+ .where(constraint.allows).toList();
- if (versions.isEmpty) {
- // TODO(rnystrom): Show most recent unmatching version?
- fail("Package $package has no versions that match $constraint.");
+ if (versions.isEmpty) {
+ // TODO(rnystrom): Show most recent unmatching version?
+ fail("Package $package has no versions that match $constraint.");
+ }
+
+ downloadVersion(version) async {
+ var id = new PackageId(package, source.name, version, package);
+ if (await cache.contains(id)) {
+ // TODO(rnystrom): Include source and description if not hosted.
+ // See solve_report.dart for code to harvest.
+ log.message("Already cached ${id.name} ${id.version}.");
+ return null;
}
- downloadVersion(Version version) {
- var id = new PackageId(package, source.name, version, package);
- return cache.contains(id).then((contained) {
- if (contained) {
- // TODO(rnystrom): Include source and description if not hosted.
- // See solve_report.dart for code to harvest.
- log.message("Already cached ${id.name} ${id.version}.");
- return null;
- }
+ // Download it.
+ await source.downloadToSystemCache(id);
+ }
- // Download it.
- return source.downloadToSystemCache(id);
- });
- }
-
- if (argResults["all"]) {
- // Install them in ascending order.
- versions.sort();
- return Future.forEach(versions, downloadVersion);
- } else {
- // Pick the best matching version.
- versions.sort(Version.prioritize);
- return downloadVersion(versions.last);
- }
- });
+ if (argResults["all"]) {
+ // Install them in ascending order.
+ versions.sort();
+ await Future.forEach(versions, downloadVersion);
+ } else {
+ // Pick the best matching version.
+ versions.sort(Version.prioritize);
+ await downloadVersion(versions.last);
+ }
}
}
diff --git a/sdk/lib/_internal/pub/lib/src/command/serve.dart b/sdk/lib/_internal/pub/lib/src/command/serve.dart
index d7e9de5..e43a9fc 100644
--- a/sdk/lib/_internal/pub/lib/src/command/serve.dart
+++ b/sdk/lib/_internal/pub/lib/src/command/serve.dart
@@ -98,15 +98,17 @@
var directoryLength = sourceDirectories.map((dir) => dir.length)
.reduce(math.max);
- var server = await environment.startAdminServer(adminPort);
- server.results.listen((_) {
- // The admin server produces no result values.
- assert(false);
- }, onError: _fatalError);
+ if (adminPort != null) {
+ var server = await environment.startAdminServer(adminPort);
+ server.results.listen((_) {
+ // The admin server produces no result values.
+ assert(false);
+ }, onError: _fatalError);
- if (logAdminUrl) {
- log.message("Running admin server on "
- "${log.bold('http://$hostname:${server.port}')}");
+ if (logAdminUrl) {
+ log.message("Running admin server on "
+ "${log.bold('http://$hostname:${server.port}')}");
+ }
}
// Start up the servers. We pause updates while this is happening so
diff --git a/sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart b/sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart
index 73dfd5c..66a7b90 100644
--- a/sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart
+++ b/sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart
@@ -126,7 +126,7 @@
///
/// Completes with a list of specific package versions if successful or an
/// error if it failed to find a solution.
- Future<SolveResult> solve() {
+ Future<SolveResult> solve() async {
var stopwatch = new Stopwatch();
_logParameters();
@@ -135,40 +135,36 @@
var overrides = _overrides.values.toList();
overrides.sort((a, b) => a.name.compareTo(b.name));
- // TODO(nweiz): Use async/await here once
- // https://github.com/dart-lang/async_await/issues/79 is fixed.
- return new Future.sync(() {
+ try {
stopwatch.start();
// Pre-cache the root package's known pubspec.
cache.cache(new PackageId.root(root), root.pubspec);
_validateSdkConstraint(root.pubspec);
- return _traverseSolution();
- }).then((packages) {
+ var packages = await _traverseSolution();
+
var pubspecs = new Map.fromIterable(packages,
key: (id) => id.name,
value: (id) => cache.getCachedPubspec(id));
- return Future.wait(
- packages.map((id) => sources[id.source].resolveId(id)))
- .then((packages) {
- return new SolveResult.success(sources, root, lockFile, packages,
- overrides, pubspecs, _getAvailableVersions(packages),
- attemptedSolutions);
- });
- }).catchError((error) {
- if (error is! SolveFailure) throw error;
+ var resolved = await Future.wait(
+ packages.map((id) => sources[id.source].resolveId(id)));
+
+ return new SolveResult.success(sources, root, lockFile, resolved,
+ overrides, pubspecs, _getAvailableVersions(resolved),
+ attemptedSolutions);
+ } on SolveFailure catch (error) {
// Wrap a failure in a result so we can attach some other data.
return new SolveResult.failure(sources, root, lockFile, overrides,
error, attemptedSolutions);
- }).whenComplete(() {
+ } finally {
// Gather some solving metrics.
var buffer = new StringBuffer();
buffer.writeln('${runtimeType} took ${stopwatch.elapsed} seconds.');
buffer.writeln(cache.describeResults());
log.solver(buffer);
- });
+ }
}
/// Generates a map containing all of the known available versions for each
@@ -251,20 +247,19 @@
/// If there are no more versions, continues to backtrack to previous
/// selections, and so on. If there is nothing left to backtrack to,
/// completes to the last failure that occurred.
- Future<List<PackageId>> _traverseSolution() => resetStack(() {
- return new Traverser(this).traverse().catchError((error) {
- if (error is! SolveFailure) throw error;
+ Future<List<PackageId>> _traverseSolution() => resetStack(() async {
+ // Avoid starving the event queue by waiting for a timer-level event.
+ await new Future(() {});
- return _backtrack(error).then((canTry) {
- if (canTry) {
- _attemptedSolutions++;
- return _traverseSolution();
- }
+ try {
+ return await new Traverser(this).traverse();
+ } on SolveFailure catch (error) {
+ // All out of solutions, so fail.
+ if (!(await _backtrack(error))) rethrow;
- // All out of solutions, so fail.
- throw error;
- });
- });
+ _attemptedSolutions++;
+ return await _traverseSolution();
+ }
});
/// Backtracks from the current failed solution and determines the next
@@ -275,9 +270,9 @@
/// possible solution.
///
/// Returns `true` if there is a new solution to try.
- Future<bool> _backtrack(SolveFailure failure) {
+ Future<bool> _backtrack(SolveFailure failure) async {
// Bail if there is nothing to backtrack to.
- if (_selected.isEmpty) return new Future.value(false);
+ if (_selected.isEmpty) return false;
// Mark any packages that may have led to this failure so that we know to
// consider them when backtracking.
@@ -290,28 +285,22 @@
}
// Advance past the current version of the leaf-most package.
- advanceVersion() {
+ while (!_selected.isEmpty) {
_backjump(failure);
var previous = _selected.last.current;
- return _selected.last.advance().then((success) {
- if (success) {
- logSolve();
- return true;
- }
+ var success = await _selected.last.advance();
+ if (success) {
+ logSolve();
+ return true;
+ }
- logSolve('$previous is last version, backtracking');
+ logSolve('$previous is last version, backtracking');
- // That package has no more versions, so pop it and try the next one.
- _selected.removeLast();
- if (_selected.isEmpty) return false;
-
- // If we got here, the leafmost package was discarded so we need to
- // advance the next one.
- return advanceVersion();
- });
+ // That package has no more versions, so pop it and try the next one.
+ _selected.removeLast();
}
- return advanceVersion();
+ return false;
}
/// Walks the selected packages from most to least recent to determine which
@@ -381,6 +370,10 @@
for (var i = 0; i < _selected.length; i++) {
var id = _selected[i].current;
+ // TODO(nweiz): The "complex backtrack" test case in version_solver_test
+ // currently depends on this returning `null` for pubspecs that haven't
+ // been explicitly cached, but that's gross. We should make this resilient
+ // to more pubspecs being available.
var pubspec = cache.getCachedPubspec(id);
if (pubspec != null) addDependencies(id.name, pubspec.dependencies);
}
@@ -486,155 +479,156 @@
/// Completes to a list of package IDs if the traversal completed
/// successfully and found a solution. Completes to an error if the traversal
/// failed. Otherwise, recurses to the next package in the queue, etc.
- Future<List<PackageId>> _traversePackage() {
- if (_packages.isEmpty) {
- // We traversed the whole graph. If we got here, we successfully found
- // a solution.
- return new Future<List<PackageId>>.value(_visited.toList());
- }
-
- var id = _packages.removeFirst();
-
- // Don't visit the same package twice.
- if (_visited.contains(id)) {
- return _traversePackage();
- }
- _visited.add(id);
-
- return _solver.cache.getPubspec(id).then((pubspec) {
- _validateSdkConstraint(pubspec);
-
- var deps = pubspec.dependencies.toSet();
-
- if (id.isRoot) {
- // Include dev dependencies of the root package.
- deps.addAll(pubspec.devDependencies);
-
- // Add all overrides. This ensures a dependency only present as an
- // override is still included.
- deps.addAll(_solver._overrides.values);
+ Future<List<PackageId>> _traversePackage() async {
+ // TODO(nweiz): Use a real while loop when issue 23394 is fixed.
+ await Future.doWhile(() async {
+ // Move past any packages we've already traversed.
+ while (_packages.isNotEmpty && _visited.contains(_packages.first)) {
+ _packages.removeFirst();
}
- // Replace any overridden dependencies.
- deps = deps.map((dep) {
- var override = _solver._overrides[dep.name];
- if (override != null) return override;
+ // If there are no more packages to traverse, we've traversed the whole
+ // graph. If we got here, we successfully found a solution.
+ if (_packages.isEmpty) return false;
- // Not overridden.
- return dep;
- }).toSet();
+ var id = _packages.removeFirst();
+ _visited.add(id);
+ await _traverseDeps(id, await _dependencyQueueFor(id));
+ return true;
+ });
- // Make sure the package doesn't have any bad dependencies.
- for (var dep in deps) {
- if (!dep.isRoot && _solver.sources[dep.source] is UnknownSource) {
- throw new UnknownSourceException(id.name,
- [new Dependency(id.name, id.version, dep)]);
- }
- }
+ return _visited.toList();
+ }
- return _traverseDeps(id, new DependencyQueue(_solver, deps));
- }).catchError((error) {
- if (error is! PackageNotFoundException) throw error;
-
+ Future<DependencyQueue> _dependencyQueueFor(PackageId id) async {
+ var pubspec;
+ try {
+ pubspec = await _solver.cache.getPubspec(id);
+ } on PackageNotFoundException {
// We can only get here if the lockfile refers to a specific package
// version that doesn't exist (probably because it was yanked).
throw new NoVersionException(id.name, null, id.version, []);
- });
+ }
+
+ _validateSdkConstraint(pubspec);
+
+ var deps = pubspec.dependencies.toSet();
+
+ if (id.isRoot) {
+ // Include dev dependencies of the root package.
+ deps.addAll(pubspec.devDependencies);
+
+ // Add all overrides. This ensures a dependency only present as an
+ // override is still included.
+ deps.addAll(_solver._overrides.values);
+ }
+
+ // Replace any overridden dependencies.
+ deps = deps.map((dep) {
+ var override = _solver._overrides[dep.name];
+ if (override != null) return override;
+
+ // Not overridden.
+ return dep;
+ }).toSet();
+
+ // Make sure the package doesn't have any bad dependencies.
+ for (var dep in deps) {
+ if (!dep.isRoot && _solver.sources[dep.source] is UnknownSource) {
+ throw new UnknownSourceException(id.name,
+ [new Dependency(id.name, id.version, dep)]);
+ }
+ }
+
+ return new DependencyQueue(_solver, deps);
}
/// Traverses the references that [depender] depends on, stored in [deps].
///
- /// Desctructively modifies [deps]. Completes to a list of packages if the
- /// traversal is complete. Completes it to an error if a failure occurred.
- /// Otherwise, recurses.
- Future<List<PackageId>> _traverseDeps(PackageId depender,
- DependencyQueue deps) {
- // Move onto the next package if we've traversed all of these references.
- if (deps.isEmpty) return _traversePackage();
+ /// Desctructively modifies [deps].
+ Future _traverseDeps(PackageId depender, DependencyQueue deps) {
+ // TODO(nweiz): Use a real while loop when issue 23394 is fixed.
+ return Future.doWhile(() async {
+ if (deps.isEmpty) return false;
- return resetStack(() {
- return deps.advance().then((dep) {
- var dependency = new Dependency(depender.name, depender.version, dep);
- return _registerDependency(dependency).then((_) {
- if (dep.name == "barback") return _addImplicitDependencies();
- });
- }).then((_) => _traverseDeps(depender, deps));
+ var dep = await deps.advance();
+ var dependency = new Dependency(depender.name, depender.version, dep);
+ await _registerDependency(dependency);
+ if (dep.name == "barback") await _addImplicitDependencies();
+ return true;
});
}
/// Register [dependency]'s constraints on the package it depends on and
/// enqueues the package for processing if necessary.
- Future _registerDependency(Dependency dependency) {
- return new Future.sync(() {
- _validateDependency(dependency);
+ Future _registerDependency(Dependency dependency) async {
+ _validateDependency(dependency);
- var dep = dependency.dep;
- var dependencies = _getDependencies(dep.name);
- dependencies.add(dependency);
+ var dep = dependency.dep;
+ var dependencies = _getDependencies(dep.name);
+ dependencies.add(dependency);
- var constraint = _getConstraint(dep.name);
+ var constraint = _getConstraint(dep.name);
- // See if it's possible for a package to match that constraint.
- if (constraint.isEmpty) {
- var constraints = dependencies
- .map((dep) => " ${dep.dep.constraint} from ${dep.depender}")
- .join('\n');
- _solver.logSolve(
- 'disjoint constraints on ${dep.name}:\n$constraints');
- throw new DisjointConstraintException(dep.name, dependencies);
- }
+ // See if it's possible for a package to match that constraint.
+ if (constraint.isEmpty) {
+ var constraints = dependencies
+ .map((dep) => " ${dep.dep.constraint} from ${dep.depender}")
+ .join('\n');
+ _solver.logSolve(
+ 'disjoint constraints on ${dep.name}:\n$constraints');
+ throw new DisjointConstraintException(dep.name, dependencies);
+ }
- var selected = _validateSelected(dep, constraint);
- if (selected != null) {
- // The selected package version is good, so enqueue it to traverse
- // into it.
- _packages.add(selected);
- return null;
- }
+ var selected = _validateSelected(dep, constraint);
+ if (selected != null) {
+ // The selected package version is good, so enqueue it to traverse
+ // into it.
+ _packages.add(selected);
+ return;
+ }
- // We haven't selected a version. Try all of the versions that match
- // the constraints we currently have for this package.
- var locked = _getValidLocked(dep.name);
+ // We haven't selected a version. Try all of the versions that match
+ // the constraints we currently have for this package.
+ var locked = _getValidLocked(dep.name);
- return VersionQueue.create(locked, () {
- return _getAllowedVersions(dep);
- }).then((versions) => _packages.add(_solver.select(versions)));
- });
+ var versions = await VersionQueue.create(
+ locked, () => _getAllowedVersions(dep));
+ _packages.add(_solver.select(versions));
}
/// Gets all versions of [dep] that match the current constraints placed on
/// it.
- Future<Iterable<PackageId>> _getAllowedVersions(PackageDep dep) {
+ Future<Iterable<PackageId>> _getAllowedVersions(PackageDep dep) async {
var constraint = _getConstraint(dep.name);
- return _solver.cache.getVersions(dep.toRef()).then((versions) {
- var allowed = versions.where((id) => constraint.allows(id.version));
+ var versions;
+ try {
+ versions = await _solver.cache.getVersions(dep.toRef());
+ } on PackageNotFoundException catch (error) {
+ // Show the user why the package was being requested.
+ throw new DependencyNotFoundException(
+ dep.name, error, _getDependencies(dep.name));
+ }
- if (allowed.isEmpty) {
- _solver.logSolve('no versions for ${dep.name} match $constraint');
- throw new NoVersionException(dep.name, null, constraint,
- _getDependencies(dep.name));
- }
+ var allowed = versions.where((id) => constraint.allows(id.version));
- // If we're doing an upgrade on this package, only allow the latest
- // version.
- if (_solver._forceLatest.contains(dep.name)) allowed = [allowed.first];
+ if (allowed.isEmpty) {
+ _solver.logSolve('no versions for ${dep.name} match $constraint');
+ throw new NoVersionException(dep.name, null, constraint,
+ _getDependencies(dep.name));
+ }
- // Remove the locked version, if any, since that was already handled.
- var locked = _getValidLocked(dep.name);
- if (locked != null) {
- allowed = allowed.where((dep) => dep.version != locked.version);
- }
+ // If we're doing an upgrade on this package, only allow the latest
+ // version.
+ if (_solver._forceLatest.contains(dep.name)) allowed = [allowed.first];
- return allowed;
- }).catchError((error, stackTrace) {
- if (error is PackageNotFoundException) {
- // Show the user why the package was being requested.
- throw new DependencyNotFoundException(
- dep.name, error, _getDependencies(dep.name));
- }
+ // Remove the locked version, if any, since that was already handled.
+ var locked = _getValidLocked(dep.name);
+ if (locked != null) {
+ allowed = allowed.where((dep) => dep.version != locked.version);
+ }
- throw error;
- });
+ return allowed;
}
/// Ensures that dependency [dep] from [depender] is consistent with the
@@ -689,11 +683,11 @@
///
/// Pub has an implicit version constraint on barback and various other
/// packages used in barback's plugin isolate.
- Future _addImplicitDependencies() {
+ Future _addImplicitDependencies() async {
/// Ensure we only add the barback dependency once.
- if (_getDependencies("barback").length != 1) return new Future.value();
+ if (_getDependencies("barback").length != 1) return;
- return Future.wait(barback.pubConstraints.keys.map((depName) {
+ await Future.wait(barback.pubConstraints.keys.map((depName) {
var constraint = barback.pubConstraints[depName];
_solver.logSolve('add implicit $constraint pub dependency on '
'$depName');
diff --git a/sdk/lib/_internal/pub/lib/src/solver/dependency_queue.dart b/sdk/lib/_internal/pub/lib/src/solver/dependency_queue.dart
index b215247..e802154 100644
--- a/sdk/lib/_internal/pub/lib/src/solver/dependency_queue.dart
+++ b/sdk/lib/_internal/pub/lib/src/solver/dependency_queue.dart
@@ -80,16 +80,13 @@
/// It is an error to call this if [isEmpty] returns `true`. Note that this
/// function is *not* re-entrant. You should only advance after the previous
/// advance has completed.
- Future<PackageDep> advance() {
+ Future<PackageDep> advance() async {
// Emit the sorted ones first.
- if (_presorted.isNotEmpty) {
- return new Future.value(_presorted.removeFirst());
- }
+ if (_presorted.isNotEmpty) return _presorted.removeFirst();
// Sort the remaining packages when we need the first one.
- if (!_isSorted) return _sort().then((_) => _remaining.removeAt(0));
-
- return new Future.value(_remaining.removeAt(0));
+ if (!_isSorted) await _sort();
+ return _remaining.removeAt(0);
}
/// Sorts the unselected packages by number of versions and name.
@@ -123,32 +120,31 @@
/// Given a dependency, returns a future that completes to the number of
/// versions available for it.
- Future<int> _getNumVersions(PackageDep dep) {
+ Future<int> _getNumVersions(PackageDep dep) async {
// There is only ever one version of the root package.
- if (dep.isRoot) {
- return new Future.value(1);
- }
+ if (dep.isRoot) return 1;
- return _solver.cache.getVersions(dep.toRef()).then((versions) {
- // If the root package depends on this one, ignore versions that don't
- // match that constraint. Since the root package's dependency constraints
- // won't change during solving, we can safely filter out packages that
- // don't meet it.
- for (var rootDep in _solver.root.immediateDependencies) {
- if (rootDep.name == dep.name) {
- versions = versions.where(
- (id) => rootDep.constraint.allows(id.version));
- break;
- }
- }
-
- return versions.length;
- }).catchError((error, trace) {
+ var versions;
+ try {
+ versions = await _solver.cache.getVersions(dep.toRef());
+ } catch (error, stackTrace) {
// If it fails for any reason, just treat that as no versions. This
// will sort this reference higher so that we can traverse into it
// and report the error more properly.
- log.solver("Could not get versions for $dep:\n$error\n\n$trace");
+ log.solver("Could not get versions for $dep:\n$error\n\n$stackTrace");
return 0;
- });
+ }
+
+ // If the root package depends on this one, ignore versions that don't match
+ // that constraint. Since the root package's dependency constraints won't
+ // change during solving, we can safely filter out packages that don't meet
+ // it.
+ for (var rootDep in _solver.root.immediateDependencies) {
+ if (rootDep.name != dep.name) continue;
+ return versions.where((id) => rootDep.constraint.allows(id.version))
+ .length;
+ }
+
+ return versions.length;
}
}
diff --git a/sdk/lib/_internal/pub/lib/src/solver/version_queue.dart b/sdk/lib/_internal/pub/lib/src/solver/version_queue.dart
index 78fa587..a6723aa 100644
--- a/sdk/lib/_internal/pub/lib/src/solver/version_queue.dart
+++ b/sdk/lib/_internal/pub/lib/src/solver/version_queue.dart
@@ -56,16 +56,13 @@
/// synchronously. If there is no locked version, we need to get the list of
/// versions asynchronously before we can determine what the first one is.
static Future<VersionQueue> create(PackageId locked,
- PackageIdGenerator allowedGenerator) {
+ PackageIdGenerator allowedGenerator) async {
var versions = new VersionQueue._(locked, allowedGenerator);
- // If there is a locked version, it's the current one so it's synchronously
- // available now.
- if (locked != null) return new Future.value(versions);
-
- // Otherwise, the current version needs to be calculated before we can
+ // If there isn't a locked version, it needs to be calculated before we can
// return.
- return versions._calculateAllowed().then((_) => versions);
+ if (locked == null) await versions._calculateAllowed();
+ return versions;
}
VersionQueue._(this._locked, this._allowedGenerator);
@@ -74,7 +71,7 @@
///
/// Returns `true` if it moved to a new version (which can be accessed from
/// [current]. Returns `false` if there are no more versions.
- Future<bool> advance() {
+ Future<bool> advance() async {
// Any failure was the fault of the previous version, not necessarily the
// new one.
_hasFailed = false;
@@ -83,15 +80,14 @@
if (_locked != null) {
// Advancing past the locked version, so need to load the others now
// so that [current] is available.
- return _calculateAllowed().then((_) {
- _locked = null;
- return _allowed.isNotEmpty;
- });
+ await _calculateAllowed();
+ _locked = null;
+ } else {
+ // Move to the next allowed version.
+ _allowed.removeFirst();
}
- // Move to the next allowed version.
- _allowed.removeFirst();
- return new Future.value(_allowed.isNotEmpty);
+ return _allowed.isNotEmpty;
}
/// Marks the selected version as being directly or indirectly responsible
@@ -102,9 +98,8 @@
/// Determines the list of allowed versions matching its constraint and places
/// them in [_allowed].
- Future _calculateAllowed() {
- return _allowedGenerator().then((allowed) {
- _allowed = new Queue<PackageId>.from(allowed);
- });
+ Future _calculateAllowed() async {
+ var allowed = await _allowedGenerator();
+ _allowed = new Queue<PackageId>.from(allowed);
}
}
\ No newline at end of file
diff --git a/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart b/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart
index 0a71f00..0a10c9d 100644
--- a/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart
+++ b/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart
@@ -139,7 +139,7 @@
class PubspecCache {
final SourceRegistry _sources;
- /// The already-requested cached version lists.
+ /// The already-requested cached pubspec lists.
final _versions = new Map<PackageRef, List<PackageId>>();
/// The errors from failed version list requests.
@@ -148,6 +148,12 @@
/// The already-requested cached pubspecs.
final _pubspecs = new Map<PackageId, Pubspec>();
+ // TODO(nweiz): Currently, if [getCachedPubspec] returns pubspecs cached via
+ // [getVersions], the "complex backtrack" test case in version_solver_test
+ // fails. Fix that. See also [BacktrackingSolver._getTransitiveDependers].
+ /// The set of package ids for which [getPubspec] has been explicitly called.
+ final _explicitlyCached = new Set<PackageId>();
+
/// The type of version resolution that was run.
final SolveType _type;
@@ -175,25 +181,27 @@
}
/// Loads the pubspec for the package identified by [id].
- Future<Pubspec> getPubspec(PackageId id) {
+ Future<Pubspec> getPubspec(PackageId id) async {
+ _explicitlyCached.add(id);
+
// Complete immediately if it's already cached.
if (_pubspecs.containsKey(id)) {
_pubspecCacheHits++;
- return new Future<Pubspec>.value(_pubspecs[id]);
+ return _pubspecs[id];
}
_pubspecCacheMisses++;
var source = _sources[id.source];
- return source.describe(id).then((pubspec) {
- _pubspecs[id] = pubspec;
- return pubspec;
- });
+ var pubspec = await source.describe(id);
+ _pubspecs[id] = pubspec;
+ return pubspec;
}
/// Returns the previously cached pubspec for the package identified by [id]
/// or returns `null` if not in the cache.
- Pubspec getCachedPubspec(PackageId id) => _pubspecs[id];
+ Pubspec getCachedPubspec(PackageId id) =>
+ _explicitlyCached.contains(id) ? _pubspecs[id] : null;
/// Gets the list of versions for [package].
///
@@ -201,7 +209,7 @@
/// versions (i.e. ones without a prerelease suffix) before pre-release
/// versions. This ensures that the solver prefers stable packages over
/// unstable ones.
- Future<List<PackageId>> getVersions(PackageRef package) {
+ Future<List<PackageId>> getVersions(PackageRef package) async {
if (package.isRoot) {
throw new StateError("Cannot get versions for root package $package.");
}
@@ -210,36 +218,45 @@
var versions = _versions[package];
if (versions != null) {
_versionCacheHits++;
- return new Future.value(versions);
+ return versions;
}
// See if we cached a failure.
var error = _versionErrors[package];
if (error != null) {
_versionCacheHits++;
- return new Future.error(error.first, error.last);
+ await new Future.error(error.first, error.last);
}
_versionCacheMisses++;
var source = _sources[package.source];
- return source.getVersions(package.name, package.description)
- .then((versions) {
- // Sort by priority so we try preferred versions first.
- versions.sort(_type == SolveType.DOWNGRADE ? Version.antiprioritize :
- Version.prioritize);
-
- var ids = versions.reversed.map(
- (version) => package.atVersion(version)).toList();
- _versions[package] = ids;
- return ids;
- }).catchError((error, trace) {
+ var pubspecs;
+ try {
+ pubspecs = await source.getVersions(package.name, package.description);
+ } catch (error, stackTrace) {
// If an error occurs, cache that too. We only want to do one request
// for any given package, successful or not.
- log.solver("Could not get versions for $package:\n$error\n\n$trace");
- _versionErrors[package] = new Pair(error, new Chain.forTrace(trace));
+ log.solver("Could not get versions for $package:\n$error\n\n$stackTrace");
+ _versionErrors[package] = new Pair(error, new Chain.forTrace(stackTrace));
throw error;
+ }
+
+ // Sort by priority so we try preferred versions first.
+ pubspecs.sort((pubspec1, pubspec2) {
+ return _type == SolveType.DOWNGRADE
+ ? Version.antiprioritize(pubspec1.version, pubspec2.version)
+ : Version.prioritize(pubspec1.version, pubspec2.version);
});
+
+ var ids = pubspecs.reversed.map((pubspec) {
+ var id = package.atVersion(pubspec.version);
+ // Eagerly cache the pubspec now since we have it.
+ _pubspecs[id] = pubspec;
+ return id;
+ }).toList();
+ _versions[package] = ids;
+ return ids;
}
/// Returns the previously cached list of versions for the package identified
diff --git a/sdk/lib/_internal/pub/lib/src/source.dart b/sdk/lib/_internal/pub/lib/src/source.dart
index 7affb68..85218d3 100644
--- a/sdk/lib/_internal/pub/lib/src/source.dart
+++ b/sdk/lib/_internal/pub/lib/src/source.dart
@@ -57,7 +57,7 @@
this._systemCache = systemCache;
}
- /// Get the list of all versions that exist for the package described by
+ /// Get the pubspecs of all versions that exist for the package described by
/// [description].
///
/// [name] is the expected name of the package.
@@ -69,9 +69,9 @@
///
/// By default, this assumes that each description has a single version and
/// uses [describe] to get that version.
- Future<List<Version>> getVersions(String name, description) {
+ Future<List<Pubspec>> getVersions(String name, description) async {
var id = new PackageId(name, this.name, Version.none, description);
- return describe(id).then((pubspec) => [pubspec.version]);
+ return [await describe(id)];
}
/// Loads the (possibly remote) pubspec for the package version identified by
diff --git a/sdk/lib/_internal/pub/lib/src/source/hosted.dart b/sdk/lib/_internal/pub/lib/src/source/hosted.dart
index f1649d1..c9ab68e 100644
--- a/sdk/lib/_internal/pub/lib/src/source/hosted.dart
+++ b/sdk/lib/_internal/pub/lib/src/source/hosted.dart
@@ -37,43 +37,48 @@
/// Downloads a list of all versions of a package that are available from the
/// site.
- Future<List<Version>> getVersions(String name, description) {
+ Future<List<Pubspec>> getVersions(String name, description) async {
var url = _makeUrl(description,
(server, package) => "$server/api/packages/$package");
log.io("Get versions from $url.");
- return httpClient.read(url, headers: PUB_API_HEADERS).then((body) {
- var doc = JSON.decode(body);
- return doc['versions']
- .map((version) => new Version.parse(version['version']))
- .toList();
- }).catchError((ex, stackTrace) {
+
+ var body;
+ try {
+ body = await httpClient.read(url, headers: PUB_API_HEADERS);
+ } catch (error, stackTrace) {
var parsed = _parseDescription(description);
- _throwFriendlyError(ex, stackTrace, parsed.first, parsed.last);
- });
+ _throwFriendlyError(error, stackTrace, parsed.first, parsed.last);
+ }
+
+ var doc = JSON.decode(body);
+ return doc['versions'].map((map) {
+ return new Pubspec.fromMap(
+ map['pubspec'], systemCache.sources,
+ expectedName: name, location: url);
+ }).toList();
}
/// Downloads and parses the pubspec for a specific version of a package that
/// is available from the site.
- Future<Pubspec> describeUncached(PackageId id) {
+ Future<Pubspec> describeUncached(PackageId id) async {
// Request it from the server.
var url = _makeVersionUrl(id, (server, package, version) =>
"$server/api/packages/$package/versions/$version");
log.io("Describe package at $url.");
- return httpClient.read(url, headers: PUB_API_HEADERS).then((version) {
- version = JSON.decode(version);
-
- // TODO(rnystrom): After this is pulled down, we could place it in
- // a secondary cache of just pubspecs. This would let us have a
- // persistent cache for pubspecs for packages that haven't actually
- // been downloaded.
- return new Pubspec.fromMap(version['pubspec'], systemCache.sources,
- expectedName: id.name, location: url);
- }).catchError((ex, stackTrace) {
+ var version;
+ try {
+ version = JSON.decode(
+ await httpClient.read(url, headers: PUB_API_HEADERS));
+ } catch (error, stackTrace) {
var parsed = _parseDescription(id.description);
- _throwFriendlyError(ex, stackTrace, id.name, parsed.last);
- });
+ _throwFriendlyError(error, stackTrace, id.name, parsed.last);
+ }
+
+ return new Pubspec.fromMap(
+ version['pubspec'], systemCache.sources,
+ expectedName: id.name, location: url);
}
/// Downloads the package identified by [id] to the system cache.
@@ -236,22 +241,20 @@
/// no network access.
class OfflineHostedSource extends HostedSource {
/// Gets the list of all versions of [name] that are in the system cache.
- Future<List<Version>> getVersions(String name, description) {
- return newFuture(() {
- var parsed = _parseDescription(description);
- var server = parsed.last;
- log.io("Finding versions of $name in "
- "$systemCacheRoot/${_urlToDirectory(server)}");
- return _getCachedPackagesInDirectory(_urlToDirectory(server))
- .where((package) => package.name == name)
- .map((package) => package.version)
- .toList();
- }).then((versions) {
- // If there are no versions in the cache, report a clearer error.
- if (versions.isEmpty) fail("Could not find package $name in cache.");
+ Future<List<Pubspec>> getVersions(String name, description) async {
+ var parsed = _parseDescription(description);
+ var server = parsed.last;
+ log.io("Finding versions of $name in "
+ "$systemCacheRoot/${_urlToDirectory(server)}");
+ var versions = await _getCachedPackagesInDirectory(_urlToDirectory(server))
+ .where((package) => package.name == name)
+ .map((package) => package.pubspec)
+ .toList();
- return versions;
- });
+ // If there are no versions in the cache, report a clearer error.
+ if (versions.isEmpty) fail("Could not find package $name in cache.");
+
+ return versions;
}
Future<bool> _download(String server, String package, Version version,
diff --git a/sdk/lib/_internal/pub/lib/src/validator/dependency.dart b/sdk/lib/_internal/pub/lib/src/validator/dependency.dart
index fe30ac5..8e8ea84 100644
--- a/sdk/lib/_internal/pub/lib/src/validator/dependency.dart
+++ b/sdk/lib/_internal/pub/lib/src/validator/dependency.dart
@@ -64,37 +64,41 @@
}
/// Warn that dependencies should use the hosted source.
- Future _warnAboutSource(PackageDep dep) {
- return entrypoint.cache.sources['hosted']
- .getVersions(dep.name, dep.name)
- .catchError((e) => <Version>[])
- .then((versions) {
- var constraint;
- var primary = Version.primary(versions);
- if (primary != null) {
- constraint = _constraintForVersion(primary);
- } else {
- constraint = dep.constraint.toString();
- if (!dep.constraint.isAny && dep.constraint is! Version) {
- constraint = '"$constraint"';
- }
- }
+ Future _warnAboutSource(PackageDep dep) async {
+ var versions;
+ try {
+ var pubspecs = await entrypoint.cache.sources['hosted']
+ .getVersions(dep.name, dep.name);
+ versions = pubspecs.map((pubspec) => pubspec.version).toList();
+ } catch (error) {
+ versions = [];
+ }
- // Path sources are errors. Other sources are just warnings.
- var messages = warnings;
- if (dep.source == "path") {
- messages = errors;
+ var constraint;
+ var primary = Version.primary(versions);
+ if (primary != null) {
+ constraint = _constraintForVersion(primary);
+ } else {
+ constraint = dep.constraint.toString();
+ if (!dep.constraint.isAny && dep.constraint is! Version) {
+ constraint = '"$constraint"';
}
+ }
- messages.add('Don\'t depend on "${dep.name}" from the ${dep.source} '
- 'source. Use the hosted source instead. For example:\n'
- '\n'
- 'dependencies:\n'
- ' ${dep.name}: $constraint\n'
- '\n'
- 'Using the hosted source ensures that everyone can download your '
- 'package\'s dependencies along with your package.');
- });
+ // Path sources are errors. Other sources are just warnings.
+ var messages = warnings;
+ if (dep.source == "path") {
+ messages = errors;
+ }
+
+ messages.add('Don\'t depend on "${dep.name}" from the ${dep.source} '
+ 'source. Use the hosted source instead. For example:\n'
+ '\n'
+ 'dependencies:\n'
+ ' ${dep.name}: $constraint\n'
+ '\n'
+ 'Using the hosted source ensures that everyone can download your '
+ 'package\'s dependencies along with your package.');
}
/// Warn that dependencies should have version constraints.
diff --git a/sdk/lib/_internal/pub/pub.status b/sdk/lib/_internal/pub/pub.status
index 5571320..8776cae 100644
--- a/sdk/lib/_internal/pub/pub.status
+++ b/sdk/lib/_internal/pub/pub.status
@@ -7,7 +7,7 @@
test/transformer/loads_a_diamond_transformer_dependency_graph_test: Pass, Slow
# Pub only runs on the VM, so just rule out all compilers.
-[ $compiler == dart2js || $compiler == dart2dart ]
+[ $compiler == dart2js ]
*: Skip
# Pub only runs on the standalone VM, not the browser.
diff --git a/sdk/lib/_internal/pub/test/get/hosted/avoid_network_requests_test.dart b/sdk/lib/_internal/pub/test/get/hosted/avoid_network_requests_test.dart
index 27ccca3..c651b8f 100644
--- a/sdk/lib/_internal/pub/test/get/hosted/avoid_network_requests_test.dart
+++ b/sdk/lib/_internal/pub/test/get/hosted/avoid_network_requests_test.dart
@@ -53,8 +53,6 @@
expect(paths, unorderedEquals([
// Bar should be requested because it's new, but not foo.
"api/packages/bar",
- // Should only request the most recent version.
- "api/packages/bar/versions/1.2.0",
// Need to download it.
"packages/bar/versions/1.2.0.tar.gz"
]));
diff --git a/sdk/lib/_internal/pub/test/serve/utils.dart b/sdk/lib/_internal/pub/test/serve/utils.dart
index f84eb9a..be87afc 100644
--- a/sdk/lib/_internal/pub/test/serve/utils.dart
+++ b/sdk/lib/_internal/pub/test/serve/utils.dart
@@ -155,6 +155,7 @@
"serve",
"--port=0", // Use port 0 to get an ephemeral port.
"--force-poll",
+ "--admin-port=0", // Use port 0 to get an ephemeral port.
"--log-admin-url"
];
@@ -223,6 +224,7 @@
/// Parses the port number from the "Running admin server on localhost:1234"
/// line printed by pub serve.
bool _parseAdminPort(String line) {
+ expect(line, startsWith('Running admin server on'));
var match = _parsePortRegExp.firstMatch(line);
if (match == null) return false;
_adminPort = int.parse(match[2]);
diff --git a/sdk/lib/_internal/pub/test/version_solver_test.dart b/sdk/lib/_internal/pub/test/version_solver_test.dart
index cdadb67..cee9a96 100644
--- a/sdk/lib/_internal/pub/test/version_solver_test.dart
+++ b/sdk/lib/_internal/pub/test/version_solver_test.dart
@@ -1377,7 +1377,7 @@
return new Future.value('${id.name}-${id.version}');
}
- Future<List<Version>> getVersions(String name, String description) {
+ Future<List<Pubspec>> getVersions(String name, String description) {
return new Future.sync(() {
// Make sure the solver doesn't request the same thing twice.
if (_requestedVersions.contains(description)) {
@@ -1392,7 +1392,8 @@
'"$description".');
}
- return _packages[description].keys.toList();
+ return _packages[description].values
+ .map((package) => package.pubspec).toList();
});
}
diff --git a/sdk/lib/collection/hash_map.dart b/sdk/lib/collection/hash_map.dart
index e67fa77..6fb73a5 100644
--- a/sdk/lib/collection/hash_map.dart
+++ b/sdk/lib/collection/hash_map.dart
@@ -56,15 +56,32 @@
* The [isValidKey] function defaults to just testing if the object is a
* [K] instance.
*
+ * Example:
+ *
+ * new HashMap<int,int>(equals: (int a, int b) => (b - a) % 5 == 0,
+ * hashCode: (int e) => e % 5)
+ *
+ * This example map does not need an `isValidKey` function to be passed.
+ * The default function accepts only `int` values, which can safely be
+ * passed to both the `equals` and `hashCode` functions.
+ *
+ * If neither `equals`, `hashCode`, nor `isValidKey` is provided,
+ * the default `isValidKey` instead accepts all keys.
+ * The default equality and hashcode operations are assumed to work on all
+ * objects.
+ *
+ * Likewise, if `equals` is [identical], `hashCode` is [identityHashCode]
+ * and `isValidKey` is omitted, the resulting map is identity based,
+ * and the `isValidKey` defaults to accepting all keys.
+ * Such a map can be created directly using [HashMap.identity].
+ *
* The used `equals` and `hashCode` method should always be consistent,
* so that if `equals(a, b)` then `hashCode(a) == hashCode(b)`. The hash
* of an object, or what it compares equal to, should not change while the
- * object is in the table. If it does change, the result is unpredictable.
+ * object is a key in the map. If it does change, the result is unpredictable.
*
* If you supply one of [equals] and [hashCode],
* you should generally also to supply the other.
- * An example would be using [identical] and [identityHashCode],
- * which is equivalent to using the shorthand [HashMap.identity]).
*/
external factory HashMap({bool equals(K key1, K key2),
int hashCode(K key),
@@ -75,7 +92,8 @@
*
* Effectively a shorthand for:
*
- * new HashMap(equals: identical, hashCode: identityHashCodeOf)
+ * new HashMap(equals: identical,
+ * hashCode: identityHashCodeOf)
*/
external factory HashMap.identity();
diff --git a/sdk/lib/collection/hash_set.dart b/sdk/lib/collection/hash_set.dart
index 53a96f0..bb76082 100644
--- a/sdk/lib/collection/hash_set.dart
+++ b/sdk/lib/collection/hash_set.dart
@@ -55,21 +55,41 @@
*
* The provided [equals] must define a stable equivalence relation, and
* [hashCode] must be consistent with [equals]. If the [equals] or [hashCode]
- * methods won't work on all objects, but only to instances of E, the
- * [isValidKey] predicate can be used to restrict the keys that they are
- * applied to. Any key for which [isValidKey] returns false is automatically
- * assumed to not be in the set.
+ * methods won't work on all objects, but only on some instances of E, the
+ * [isValidKey] predicate can be used to restrict the keys that the functions
+ * are applied to.
+ * Any key for which [isValidKey] returns false is automatically assumed
+ * to not be in the set when asking `contains`.
*
* If [equals] or [hashCode] are omitted, the set uses
- * the objects' intrinsic [Object.operator==] and [Object.hashCode].
- *
- * If [isValidKey] is omitted, it defaults to testing if the object is an
- * [E] instance.
+ * the elements' intrinsic [Object.operator==] and [Object.hashCode].
*
* If you supply one of [equals] and [hashCode],
* you should generally also to supply the other.
- * An example would be using [identical] and [identityHashCode],
- * which is equivalent to using the shorthand [LinkedSet.identity]).
+ *
+ * If the supplied `equals` or `hashCode` functions won't work on all [E]
+ * objects, and the map will be used in a setting where a non-`E` object
+ * is passed to, e.g., `contains`, then the [isValidKey] function should
+ * also be supplied.
+ *
+ * If [isValidKey] is omitted, it defaults to testing if the object is an
+ * [E] instance. That means that:
+ *
+ * new HashSet<int>(equals: (int e1, int e2) => (e1 - e2) % 5 == 0,
+ * hashCode: (int e) => e % 5)
+ *
+ * does not need an `isValidKey` argument, because it defaults to only
+ * accepting `int` values which are accepted by both `equals` and `hashCode`.
+ *
+ * If neither `equals`, `hashCode`, nor `isValidKey` is provided,
+ * the default `isValidKey` instead accepts all values.
+ * The default equality and hashcode operations are assumed to work on all
+ * objects.
+ *
+ * Likewise, if `equals` is [identical], `hashCode` is [identityHashCode]
+ * and `isValidKey` is omitted, the resulting set is identity based,
+ * and the `isValidKey` defaults to accepting all keys.
+ * Such a map can be created directly using [HashSet.identity].
*/
external factory HashSet({bool equals(E e1, E e2),
int hashCode(E e),
@@ -80,7 +100,8 @@
*
* Effectively a shorthand for:
*
- * new HashSet(equals: identical, hashCode: identityHashCodeOf)
+ * new HashSet<E>(equals: identical,
+ * hashCode: identityHashCodeOf)
*/
external factory HashSet.identity();
diff --git a/sdk/lib/collection/iterable.dart b/sdk/lib/collection/iterable.dart
index 3290682..8556595 100644
--- a/sdk/lib/collection/iterable.dart
+++ b/sdk/lib/collection/iterable.dart
@@ -90,7 +90,7 @@
Set<E> toSet() => new Set<E>.from(this);
int get length {
- assert(this is! EfficientLength);
+ assert(this is! EfficientLengthIterable);
int count = 0;
Iterator it = iterator;
while (it.moveNext()) {
@@ -397,3 +397,34 @@
parts.add(penultimateString);
parts.add(ultimateString);
}
+
+
+/**
+ * Marker interface for [Iterable] implementations that have an efficient
+ * [length] getter.
+ *
+ * An iterable implementing this interface should have an "efficient"
+ * implementation of `length` that doesn't trigger iteration of the
+ * iterable. Being efficient doesn't necessarily require being constant
+ * time, but should at least attempt to have have execution time that is
+ * better than linear in the elements of the iterable.
+ *
+ * Methods that worry about reading the length of an `Iterable` because it
+ * may be inefficient or may trigger side-effects, or may even never complete,
+ * can first check if the iterable `is EfficientLengthIterable`,
+ * and if so, use [length] without those concerns.
+ *
+ * The `EfficientLengthIterable` type should never be used as a type
+ * assertion - neither as argument type or return type of a function.
+ * Always use [Iterable] for the type and just document the performance if it
+ * is relevant. This avoids needlessly restricting the values that can be used.
+ */
+abstract class EfficientLengthIterable<T> implements Iterable<T> {
+ /**
+ * Returns the number of elements in the iterable.
+ *
+ * This is an efficient operation that doesn't iterate through
+ * the elements.
+ */
+ int get length;
+}
diff --git a/sdk/lib/collection/linked_hash_map.dart b/sdk/lib/collection/linked_hash_map.dart
index e1bca0f..e06f9e6 100644
--- a/sdk/lib/collection/linked_hash_map.dart
+++ b/sdk/lib/collection/linked_hash_map.dart
@@ -43,6 +43,25 @@
* The [isValidKey] function defaults to just testing if the object is a
* [K] instance.
*
+ * Example:
+ *
+ * new LinkedHashMap<int,int>(equals: (int a, int b) => (b - a) % 5 == 0,
+ * hashCode: (int e) => e % 5)
+ *
+ * This example map does not need an `isValidKey` function to be passed.
+ * The default function accepts only `int` values, which can safely be
+ * passed to both the `equals` and `hashCode` functions.
+ *
+ * If neither `equals`, `hashCode`, nor `isValidKey` is provided,
+ * the default `isValidKey` instead accepts all keys.
+ * The default equality and hashcode operations are assumed to work on all
+ * objects.
+ *
+ * Likewise, if `equals` is [identical], `hashCode` is [identityHashCode]
+ * and `isValidKey` is omitted, the resulting map is identity based,
+ * and the `isValidKey` defaults to accepting all keys.
+ * Such a map can be created directly using [LinkedHashMap.identity].
+ *
* The used `equals` and `hashCode` method should always be consistent,
* so that if `equals(a, b)` then `hashCode(a) == hashCode(b)`. The hash
* of an object, or what it compares equal to, should not change while the
@@ -50,19 +69,18 @@
*
* If you supply one of [equals] and [hashCode],
* you should generally also to supply the other.
- * An example would be using [identical] and [identityHashCode],
- * which is equivalent to using the shorthand [LinkedHashMap.identity]).
*/
- external factory LinkedHashMap({ bool equals(K key1, K key2),
- int hashCode(K key),
- bool isValidKey(potentialKey) });
+ external factory LinkedHashMap({bool equals(K key1, K key2),
+ int hashCode(K key),
+ bool isValidKey(potentialKey)});
/**
* Creates an insertion-ordered identity-based map.
*
* Effectively a shorthand for:
*
- * new LinkedHashMap(equals: identical, hashCode: identityHashCodeOf)
+ * new LinkedHashMap(equals: identical,
+ * hashCode: identityHashCodeOf)
*/
external factory LinkedHashMap.identity();
diff --git a/sdk/lib/collection/linked_hash_set.dart b/sdk/lib/collection/linked_hash_set.dart
index b937e53..a4848f4 100644
--- a/sdk/lib/collection/linked_hash_set.dart
+++ b/sdk/lib/collection/linked_hash_set.dart
@@ -36,32 +36,55 @@
*
* The provided [equals] must define a stable equivalence relation, and
* [hashCode] must be consistent with [equals]. If the [equals] or [hashCode]
- * methods won't work on all objects, but only to instances of E, the
- * [isValidKey] predicate can be used to restrict the keys that they are
- * applied to. Any key for which [isValidKey] returns false is automatically
- * assumed to not be in the set.
+ * methods won't work on all objects, but only on some instances of E, the
+ * [isValidKey] predicate can be used to restrict the keys that the functions
+ * are applied to.
+ * Any key for which [isValidKey] returns false is automatically assumed
+ * to not be in the set when asking `contains`.
*
* If [equals] or [hashCode] are omitted, the set uses
- * the objects' intrinsic [Object.operator==] and [Object.hashCode],
- *
- * If [isValidKey] is omitted, it defaults to testing if the object is an
- * [E] instance.
+ * the elements' intrinsic [Object.operator==] and [Object.hashCode],
+ * and [isValidKey] is ignored since these operations are assumed
+ * to work on all objects.
*
* If you supply one of [equals] and [hashCode],
* you should generally also to supply the other.
- * An example would be using [identical] and [identityHashCode],
- * which is equivalent to using the shorthand [LinkedSet.identity]).
+ *
+ * If the supplied `equals` or `hashCode` functions won't work on all [E]
+ * objects, and the map will be used in a setting where a non-`E` object
+ * is passed to, e.g., `contains`, then the [isValidKey] function should
+ * also be supplied.
+ *
+ * If [isValidKey] is omitted, it defaults to testing if the object is an
+ * [E] instance. That means that:
+ *
+ * new LinkedHashSet<int>(equals: (int e1, int e2) => (e1 - e2) % 5 == 0,
+ * hashCode: (int e) => e % 5)
+ *
+ * does not need an `isValidKey` argument, because it defaults to only
+ * accepting `int` values which are accepted by both `equals` and `hashCode`.
+ *
+ * If neither `equals`, `hashCode`, nor `isValidKey` is provided,
+ * the default `isValidKey` instead accepts all values.
+ * The default equality and hashcode operations are assumed to work on all
+ * objects.
+ *
+ * Likewise, if `equals` is [identical], `hashCode` is [identityHashCode]
+ * and `isValidKey` is omitted, the resulting set is identity based,
+ * and the `isValidKey` defaults to accepting all keys.
+ * Such a map can be created directly using [LinkedHashSet.identity].
*/
- external factory LinkedHashSet({ bool equals(E e1, E e2),
- int hashCode(E e),
- bool isValidKey(potentialKey) });
+ external factory LinkedHashSet({bool equals(E e1, E e2),
+ int hashCode(E e),
+ bool isValidKey(potentialKey)});
/**
* Creates an insertion-ordered identity-based set.
*
* Effectively a shorthand for:
*
- * new LinkedHashSet(equals: identical, hashCode: identityHashCodeOf)
+ * new LinkedHashSet(equals: identical,
+ * hashCode: identityHashCodeOf)
*/
external factory LinkedHashSet.identity();
diff --git a/sdk/lib/collection/list.dart b/sdk/lib/collection/list.dart
index e7d902e..0d02f85 100644
--- a/sdk/lib/collection/list.dart
+++ b/sdk/lib/collection/list.dart
@@ -389,7 +389,7 @@
void replaceRange(int start, int end, Iterable<E> newContents) {
RangeError.checkValidRange(start, end, this.length);
- if (newContents is! EfficientLength) {
+ if (newContents is! EfficientLengthIterable) {
newContents = newContents.toList();
}
int removeLength = end - start;
@@ -476,7 +476,7 @@
void insertAll(int index, Iterable<E> iterable) {
RangeError.checkValueInInterval(index, 0, length, "index");
- if (iterable is EfficientLength) {
+ if (iterable is EfficientLengthIterable) {
iterable = iterable.toList();
}
int insertionLength = iterable.length;
diff --git a/sdk/lib/collection/maps.dart b/sdk/lib/collection/maps.dart
index 7945e7e..ecc2bf7 100644
--- a/sdk/lib/collection/maps.dart
+++ b/sdk/lib/collection/maps.dart
@@ -112,7 +112,7 @@
* map's `operator[]` to lookup the keys.
*/
class _MapBaseValueIterable<V> extends Iterable<V>
- implements EfficientLength {
+ implements EfficientLengthIterable<V> {
final Map _map;
_MapBaseValueIterable(this._map);
diff --git a/sdk/lib/collection/queue.dart b/sdk/lib/collection/queue.dart
index af8e07a..067c17b 100644
--- a/sdk/lib/collection/queue.dart
+++ b/sdk/lib/collection/queue.dart
@@ -17,7 +17,7 @@
* This goes both for using the [iterator] directly, or for iterating an
* `Iterable` returned by a method like [map] or [where].
*/
-abstract class Queue<E> implements Iterable<E>, EfficientLength {
+abstract class Queue<E> implements EfficientLengthIterable<E> {
/**
* Creates a queue.
@@ -482,7 +482,7 @@
return queue;
} else {
int capacity = _INITIAL_CAPACITY;
- if (elements is EfficientLength) {
+ if (elements is EfficientLengthIterable) {
capacity = elements.length;
}
ListQueue<E> result = new ListQueue<E>(capacity);
diff --git a/sdk/lib/collection/splay_tree.dart b/sdk/lib/collection/splay_tree.dart
index b5fcb93..597c23f 100644
--- a/sdk/lib/collection/splay_tree.dart
+++ b/sdk/lib/collection/splay_tree.dart
@@ -274,7 +274,7 @@
factory SplayTreeMap.from(Map other,
[int compare(K key1, K key2),
bool isValidKey(potentialKey)]) {
- SplayTreeMap<K, V> result = new SplayTreeMap<K, V>();
+ SplayTreeMap<K, V> result = new SplayTreeMap<K, V>(compare, isValidKey);
other.forEach((k, v) { result[k] = v; });
return result;
}
@@ -600,7 +600,7 @@
}
class _SplayTreeKeyIterable<K> extends Iterable<K>
- implements EfficientLength {
+ implements EfficientLengthIterable<K> {
_SplayTree<K> _tree;
_SplayTreeKeyIterable(this._tree);
int get length => _tree._count;
@@ -618,7 +618,7 @@
}
class _SplayTreeValueIterable<K, V> extends Iterable<V>
- implements EfficientLength {
+ implements EfficientLengthIterable<V> {
SplayTreeMap<K, V> _map;
_SplayTreeValueIterable(this._map);
int get length => _map._count;
diff --git a/sdk/lib/core/iterable.dart b/sdk/lib/core/iterable.dart
index dbc8c55..e435b1e 100644
--- a/sdk/lib/core/iterable.dart
+++ b/sdk/lib/core/iterable.dart
@@ -347,7 +347,7 @@
* Some iterables have a more efficient way to find the number of elements.
*/
int get length {
- assert(this is! EfficientLength);
+ assert(this is! EfficientLengthIterable);
int count = 0;
Iterator it = iterator;
while (it.moveNext()) {
@@ -594,7 +594,7 @@
typedef E _Generator<E>(int index);
class _GeneratorIterable<E> extends Iterable<E>
- implements EfficientLength {
+ implements EfficientLengthIterable<E> {
final int _start;
final int _end;
final _Generator<E> _generator;
diff --git a/sdk/lib/core/list.dart b/sdk/lib/core/list.dart
index 9d9a093..0d10e85 100644
--- a/sdk/lib/core/list.dart
+++ b/sdk/lib/core/list.dart
@@ -51,7 +51,7 @@
* directly or through iterating an [Iterable] that is backed by the list, will
* break the iteration.
*/
-abstract class List<E> implements Iterable<E>, EfficientLength {
+abstract class List<E> implements EfficientLengthIterable<E> {
/**
* Creates a list of the given length.
*
diff --git a/sdk/lib/core/set.dart b/sdk/lib/core/set.dart
index 2c6b524..a908d57 100644
--- a/sdk/lib/core/set.dart
+++ b/sdk/lib/core/set.dart
@@ -31,7 +31,7 @@
* iterating either the set itself or any [Iterable] that is backed by the set,
* such as the ones returned by methods like [where] and [map].
*/
-abstract class Set<E> extends Iterable<E> implements EfficientLength {
+abstract class Set<E> implements EfficientLengthIterable<E> {
/**
* Creates an empty [Set].
*
diff --git a/sdk/lib/developer/developer.dart b/sdk/lib/developer/developer.dart
new file mode 100644
index 0000000..db56aec
--- /dev/null
+++ b/sdk/lib/developer/developer.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2015, 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.
+
+/// ## Status: Unstable
+///
+/// The dart:developer library is unstable and its API might change slightly
+/// as a result of developer feedback. This library is platform dependent and
+/// therefore it has implementations for both dart2js and the Dart VM. Both are
+/// under development and may not support all operations yet.
+///
+library dart.developer;
+
+/// If [when] is true, stop the program as if a breakpoint where hit at the
+/// following statement. Returns the value of [when]. Some debuggers may
+/// display [msg].
+/// NOTE: When invoked, the isolate will not return until a debugger
+/// continues execution. When running in the Dart VM the behaviour is the same
+/// regardless of whether or not a debugger is connected. When compiled to
+/// JavaScript, this uses the "debugger" statement, and behaves exactly as
+/// that does.
+external bool debugger({bool when: true, String msg});
+
+/// Send a reference to [object] to any attached debuggers so they may open an
+/// inspector on the object. Returns the argument.
+external inspect(object);
diff --git a/sdk/lib/developer/developer_sources.gypi b/sdk/lib/developer/developer_sources.gypi
new file mode 100644
index 0000000..fa6a87c
--- /dev/null
+++ b/sdk/lib/developer/developer_sources.gypi
@@ -0,0 +1,10 @@
+# Copyright (c) 2015, 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.
+
+{
+ 'sources': [
+ 'developer.dart',
+ # The above file needs to be first if additional parts are added to the lib.
+ ],
+}
diff --git a/sdk/lib/internal/iterable.dart b/sdk/lib/internal/iterable.dart
index 47c94f8..0a59b0e 100644
--- a/sdk/lib/internal/iterable.dart
+++ b/sdk/lib/internal/iterable.dart
@@ -5,27 +5,13 @@
part of dart._internal;
/**
- * Marker interface for [Iterable] subclasses that have an efficient
- * [length] implementation.
- */
-abstract class EfficientLength {
- /**
- * Returns the number of elements in the iterable.
- *
- * This is an efficient operation that doesn't require iterating through
- * the elements.
- */
- int get length;
-}
-
-/**
* An [Iterable] for classes that have efficient [length] and [elementAt].
*
* All other methods are implemented in terms of [length] and [elementAt],
* including [iterator].
*/
abstract class ListIterable<E> extends Iterable<E>
- implements EfficientLength {
+ implements EfficientLengthIterable<E> {
int get length;
E elementAt(int i);
@@ -351,7 +337,7 @@
final _Transformation<S, T> _f;
factory MappedIterable(Iterable iterable, T function(S value)) {
- if (iterable is EfficientLength) {
+ if (iterable is EfficientLengthIterable) {
return new EfficientLengthMappedIterable<S, T>(iterable, function);
}
return new MappedIterable<S, T>._(iterable, function);
@@ -373,7 +359,7 @@
}
class EfficientLengthMappedIterable<S, T> extends MappedIterable<S, T>
- implements EfficientLength {
+ implements EfficientLengthIterable<T> {
EfficientLengthMappedIterable(Iterable iterable, T function(S value))
: super._(iterable, function);
}
@@ -402,8 +388,7 @@
*
* Expects efficient `length` and `elementAt` on the source iterable.
*/
-class MappedListIterable<S, T> extends ListIterable<T>
- implements EfficientLength {
+class MappedListIterable<S, T> extends ListIterable<T> {
final Iterable<S> _source;
final _Transformation<S, T> _f;
@@ -496,7 +481,7 @@
if (takeCount is! int || takeCount < 0) {
throw new ArgumentError(takeCount);
}
- if (iterable is EfficientLength) {
+ if (iterable is EfficientLengthIterable) {
return new EfficientLengthTakeIterable<E>(iterable, takeCount);
}
return new TakeIterable<E>._(iterable, takeCount);
@@ -510,7 +495,7 @@
}
class EfficientLengthTakeIterable<E> extends TakeIterable<E>
- implements EfficientLength {
+ implements EfficientLengthIterable<E> {
EfficientLengthTakeIterable(Iterable<E> iterable, int takeCount)
: super._(iterable, takeCount);
@@ -583,7 +568,7 @@
final int _skipCount;
factory SkipIterable(Iterable<E> iterable, int count) {
- if (iterable is EfficientLength) {
+ if (iterable is EfficientLengthIterable) {
return new EfficientLengthSkipIterable<E>(iterable, count);
}
return new SkipIterable<E>._(iterable, count);
@@ -610,7 +595,7 @@
}
class EfficientLengthSkipIterable<E> extends SkipIterable<E>
- implements EfficientLength {
+ implements EfficientLengthIterable<E> {
EfficientLengthSkipIterable(Iterable<E> iterable, int skipCount)
: super._(iterable, skipCount);
@@ -672,7 +657,8 @@
/**
* The always empty [Iterable].
*/
-class EmptyIterable<E> extends Iterable<E> implements EfficientLength {
+class EmptyIterable<E> extends Iterable<E>
+ implements EfficientLengthIterable<E> {
const EmptyIterable();
Iterator<E> get iterator => const EmptyIterator();
diff --git a/sdk/lib/io/http_impl.dart b/sdk/lib/io/http_impl.dart
index 42c1db9..f06179b 100644
--- a/sdk/lib/io/http_impl.dart
+++ b/sdk/lib/io/http_impl.dart
@@ -1289,8 +1289,24 @@
"Unexpected response (unsolicited response without request).",
uri: _currentUri);
}
- _nextResponseCompleter.complete(incoming);
- _nextResponseCompleter = null;
+
+ // Check for status code '100 Continue'. In that case just
+ // consume that response as the final response will follow
+ // it. There is currently no API for the client to wait for
+ // the '100 Continue' response.
+ if (incoming.statusCode == 100) {
+ incoming.drain().then((_) {
+ _subscription.resume();
+ }).catchError((error, [StackTrace stackTrace]) {
+ _nextResponseCompleter.completeError(
+ new HttpException(error.message, uri: _currentUri),
+ stackTrace);
+ _nextResponseCompleter = null;
+ });
+ } else {
+ _nextResponseCompleter.complete(incoming);
+ _nextResponseCompleter = null;
+ }
},
onError: (error, [StackTrace stackTrace]) {
if (_nextResponseCompleter != null) {
diff --git a/sdk/lib/io/process.dart b/sdk/lib/io/process.dart
index ea1bd76..93aa63e 100644
--- a/sdk/lib/io/process.dart
+++ b/sdk/lib/io/process.dart
@@ -68,7 +68,7 @@
_ProcessUtils._setExitCode(code);
}
-/*
+/**
* Get the global exit code for the Dart VM.
*
* The exit code is global for the Dart VM and the last assignment to
diff --git a/sdk/lib/io/websocket_impl.dart b/sdk/lib/io/websocket_impl.dart
index 6e30809..2657606 100644
--- a/sdk/lib/io/websocket_impl.dart
+++ b/sdk/lib/io/websocket_impl.dart
@@ -959,16 +959,26 @@
_outCloseCode = code;
_outCloseReason = reason;
}
- if (_closeTimer == null && !_controller.isClosed) {
- // When closing the web-socket, we no longer accept data.
- _closeTimer = new Timer(const Duration(seconds: 5), () {
- // Reuse code and reason from the local close.
- _closeCode = _outCloseCode;
- _closeReason = _outCloseReason;
- _subscription.cancel();
- _controller.close();
- _webSockets.remove(_serviceId);
- });
+ if (!_controller.isClosed) {
+ // If a close has not yet been received from the other end then
+ // 1) make sure to listen on the stream so the close frame will be
+ // processed if received.
+ // 2) set a timer terminate the connection if a close frame is
+ // not received.
+ if (!_controller.hasListener) {
+ _controller.stream.drain().catchError((_) => {});
+ }
+ if (_closeTimer == null) {
+ // When closing the web-socket, we no longer accept data.
+ _closeTimer = new Timer(const Duration(seconds: 5), () {
+ // Reuse code and reason from the local close.
+ _closeCode = _outCloseCode;
+ _closeReason = _outCloseReason;
+ _subscription.cancel();
+ _controller.close();
+ _webSockets.remove(_serviceId);
+ });
+ }
}
return _sink.close();
}
diff --git a/sdk/lib/mirrors/mirrors.dart b/sdk/lib/mirrors/mirrors.dart
index 7153424..5d73641 100644
--- a/sdk/lib/mirrors/mirrors.dart
+++ b/sdk/lib/mirrors/mirrors.dart
@@ -1196,7 +1196,7 @@
*
* Example usage:
*
- * @MirrorsUsed(symbols: 'foo', override: '*')
+ * @MirrorsUsed(symbols: 'foo')
* import 'dart:mirrors';
*
* class Foo {
@@ -1209,12 +1209,25 @@
* new Foo().foo(); // Prints "foo".
* new Foo().bar(); // Might print an arbitrary (mangled) name, "bar".
* }
+ *
+ * For a detailed description of the parameters to the [MirrorsUsed] constructor
+ * see the comments for [symbols], [targets], [metaTargets] and [override].
+ *
+ * An import of `dart:mirrors` may have multiple [MirrorsUsed] annotations. This
+ * is particularly helpful to specify overrides for specific libraries. For
+ * example:
+ *
+ * @MirrorsUsed(targets: 'foo.Bar', override: 'foo')
+ * @MirrorsUsed(targets: 'Bar')
+ * import 'dart:mirrors';
+ *
+ * will ensure that the target `Bar` from the current library and from library
+ * `foo` is available for reflection. See also [override].
*/
-// TODO(ahe): Remove ", override: '*'" when it isn't necessary anymore.
class MirrorsUsed {
// Note: the fields of this class are untyped. This is because the most
- // convenient way to specify to specify symbols today is using a single
- // string. In some cases, a const list of classes might be convenient. Some
+ // convenient way to specify symbols today is using a single string. In
+ // some cases, a const list of classes might be convenient. Some
// might prefer to use a const list of symbols.
/**
@@ -1228,19 +1241,29 @@
*
* The following text is non-normative:
*
- * Specifying this option turns off the following warnings emitted by
+ * Dart2js currently supports the following formats to specify symbols:
+ *
+ * * A constant [List] of [String] constants representing symbol names,
+ * e.g., `const ['foo', 'bar']`.
+ * * A single [String] constant whose value is a comma-separated list of
+ * symbol names, e.g., `"foo, bar"`.
+ *
+ * Specifying the `symbols` field turns off the following warnings emitted by
* dart2js:
*
* * Using "MirrorSystem.getName" may result in larger output.
- * * Using "new #{name}" may result in larger output.
+ * * Using "new Symbol" may result in larger output.
*
- * Use symbols = "*" to turn off the warnings mentioned above.
+ * For example, if you're using [noSuchMethod] to interact with a database,
+ * extract all the possible column names and include them in this list.
+ * Similarly, if you're using [noSuchMethod] to interact with another
+ * language (JavaScript, for example) extract all the identifiers from the
+ * API you use and include them in this list.
*
- * For example, if using [noSuchMethod] to interact with a database, extract
- * all the possible column names and include them in this list. Similarly,
- * if using [noSuchMethod] to interact with another language (JavaScript, for
- * example) extract all the identifiers from API used and include them in
- * this list.
+ * Note that specifying a symbol only ensures that the symbol will be
+ * available under that name at runtime. It does not mark targets with
+ * that name as available for reflection. See [targets] and [metaTargets]
+ * for that purpose.
*/
final symbols;
@@ -1253,16 +1276,97 @@
* The following text is non-normative:
*
* For now, there is no formal description of what a reflective target is.
- * Informally, it is a list of things that are expected to have fully
- * functional mirrors.
+ * Informally, a target is a library, a class, a method or a field.
+ *
+ * Dart2js currently supports the following formats to specify targets:
+ *
+ * * A constant [List] containing [String] constants representing (qualified)
+ * names of targets and Dart types.
+ * * A single [String] constant whose value is a comma-separated list of
+ * (qualified) names.
+ * * A single Dart type.
+ *
+ * A (qualified) name is resolved to a target as follows:
+ *
+ * 1. If the qualified name matches a library name, the matching library is
+ * the target.
+ * 2. Else, find the longest prefix of the name such that the prefix ends
+ * just before a `.` and is a library name.
+ * 3. Use that library as current scope. If no matching prefix was found, use
+ * the current library, i.e., the library where the [MirrorsUsed]
+ * annotation was placed.
+ * 4. Split the remaining suffix (the entire name if no library name was
+ * found in step 3) into a list of [String] using `.` as a
+ * separator.
+ * 5. Select all targets in the current scope whose name matches a [String]
+ * from the list.
+ *
+ * For example:
+ *
+ * library my.library.one;
+ *
+ * class A {
+ * var aField;
+ * }
+ *
+ * library main;
+ *
+ * @MirrorsUsed(targets: "my.library.one.A.aField")
+ * import "dart:mirrors";
+ *
+ * The [MirrorsUsed] annotation specifies `A` and `aField` from library
+ * `my.library.one` as targets. This will mark the class `A` as a reflective
+ * target. The target specification for `aField` has no effect, as there is
+ * no target in `my.library.one` with that name.
+ *
+ * Note that everything within a target also is available for reflection.
+ * So, if a library is specified as target, all classes in that library
+ * become targets for reflection. Likewise, if a class is a target, all
+ * its methods and fields become targets for reflection. As a consequence,
+ * `aField` in the above example is also a reflective target.
+ *
*/
final targets;
/**
* A list of classes that when used as metadata indicates a reflective
- * target.
+ * target. See also [targets].
*
- * See [targets].
+ * The following text is non-normative:
+ *
+ * The format for specifying the list of classes is the same as used for
+ * specifying [targets]. However, as a library cannot be used as a metadata
+ * annotation in Dart, adding a library to the list of [metaTargets] has no
+ * effect. In particular, adding a library to [metaTargets] does not make
+ * the library's classes valid metadata annotations to enable reflection.
+ *
+ * If an instance of a class specified in [metaTargets] is used as
+ * metadata annotation on a library, class, field or method, that library,
+ * class, field or method is added to the set of targets for reflection.
+ *
+ * Example usage:
+ *
+ * library example;
+ * @MirrorsUsed(metaTargets: "example.Reflectable")
+ * import "dart:mirrors";
+ *
+ * class Reflectable {
+ * const Reflectable();
+ * }
+ *
+ * class Foo {
+ * @Reflectable()
+ * reflectableMethod() { ... }
+ *
+ * nonReflectableMethod() { ... }
+ * }
+ *
+ * In the above example. `reflectableMethod` is marked as reflectable by
+ * using the `Reflectable` class, which in turn is specified in the
+ * [metaTargets] annotation.
+ *
+ * The method `nonReflectableMethod` lacks a metadata annotation and thus
+ * will not be reflectable at runtime.
*/
final metaTargets;
@@ -1271,10 +1375,58 @@
*
* When used as metadata on an import of "dart:mirrors", this metadata does
* not apply to the library in which the annotation is used, but instead
- * applies to the other libraries (all libraries if "*" is used).
+ * applies to the other libraries (all libraries if "*" is used).
+ *
+ * The following text is non-normative:
+ *
+ * Dart2js currently supports the following formats to specify libraries:
+ *
+ * * A constant [List] containing [String] constants representing names of
+ * libraries.
+ * * A single [String] constant whose value is a comma-separated list of
+ * library names.
+ *
+ * Conceptually, a [MirrorsUsed] annotation with [override] has the same
+ * effect as placing the annotation directly on the import of `dart:mirrors`
+ * in each of the referenced libraries. Thus, if the library had no
+ * [MirrorsUsed] annotation before, its unconditional import of
+ * `dart:mirrors` is overridden by an annotated import.
+ *
+ * Note that, like multiple explicit [MirrorsUsed] annotations, using
+ * override on a library with an existing [MirrorsUsed] annotation is
+ * additive. That is, the overall set of reflective targets is the union
+ * of the reflective targets that arise from the original and the
+ * overriding [MirrorsUsed] annotations.
+ *
+ * The use of [override] is only meaningful for libraries that have an
+ * import of `dart:mirrors` without annotation because otherwise it would
+ * work exactly the same way without the [override] parameter.
+ *
+ * While the annotation will apply to the given target libraries, the
+ * [symbols], [targets] and [metaTargets] are still evaluated in the
+ * scope of the annotation. Thus, to select a target from library `foo`,
+ * a qualified name has to be used or, if the target is visible in the
+ * current scope, its type may be referenced.
+ *
+ * For example, the following code marks all targets in the library `foo`
+ * as reflectable that have a metadata annotation using the `Reflectable`
+ * class from the same library.
+ *
+ * @MirrorsUsed(metaTargets: "foo.Reflectable", override: "foo")
+ *
+ * However, the following code would require the use of the `Reflectable`
+ * class from the current library, instead.
+ *
+ * @MirrorsUsed(metaTargets: "Reflectable", override: "foo")
+ *
*/
final override;
+ /**
+ * See the documentation for [MirrorsUsed.symbols], [MirrorsUsed.targets],
+ * [MirrorsUsed.metaTargets] and [MirrorsUsed.override] for documentation
+ * of the parameters.
+ */
const MirrorsUsed(
{this.symbols, this.targets, this.metaTargets, this.override});
}
diff --git a/site/try/app.yaml b/site/try/app.yaml
index 2e53e66..f6c9eee 100644
--- a/site/try/app.yaml
+++ b/site/try/app.yaml
@@ -60,10 +60,6 @@
static_dir: packages/logging
secure: always
-- url: /packages/matcher
- static_dir: packages/matcher
- secure: always
-
- url: /packages/math
static_dir: packages/math
secure: always
diff --git a/site/try/build_try.gyp b/site/try/build_try.gyp
index 084e78c..ae1125b 100644
--- a/site/try/build_try.gyp
+++ b/site/try/build_try.gyp
@@ -54,7 +54,6 @@
'../../third_party/pkg/http_parser/lib',
'../../third_party/pkg/intl/lib',
'../../third_party/pkg/logging/lib',
- '../../third_party/pkg/matcher/lib',
'../../third_party/pkg/path/lib',
'../../third_party/pkg/stack_trace/lib',
'../../third_party/pkg/string_scanner/lib',
diff --git a/tests/benchmark_smoke/benchmark_smoke.status b/tests/benchmark_smoke/benchmark_smoke.status
index 0e012ef..31fecec 100644
--- a/tests/benchmark_smoke/benchmark_smoke.status
+++ b/tests/benchmark_smoke/benchmark_smoke.status
@@ -9,4 +9,4 @@
*: Fail, Pass # TODO(ahe): Triage these tests.
[ $compiler == dart2js && $cps_ir ]
-benchmark_smoke_test: Crash # cannot compile methods that need interceptor calling convention.
+benchmark_smoke_test: Crash # (testForCompletion): handleStaticFunctionGet: function(testForCompletion)
diff --git a/tests/co19/co19-dart2dart.status b/tests/co19/co19-dart2dart.status
deleted file mode 100644
index eb20aa4..0000000
--- a/tests/co19/co19-dart2dart.status
+++ /dev/null
@@ -1,122 +0,0 @@
-# Copyright (c) 2013, 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.
-
-[ $compiler == dart2dart && $builder_tag == new_backend ]
-Language/12_Expressions/18_Assignment_A04_t09: RuntimeError # Issue 23015
-
-[ $compiler == dart2dart && $builder_tag != new_backend ]
-Language/12_Expressions/18_Assignment_A04_t09: RuntimeError # co19-roll r667: Please triage this failure
-
-[ $compiler == dart2dart ]
-Language/03_Overview/1_Scoping_A02_t05: Fail # Inherited from dart2js
-Language/03_Overview/1_Scoping_A02_t06: Fail # inherited from dart2js
-Language/03_Overview/1_Scoping_A02_t28: Fail # co19-roll r559: Please triage this failure
-Language/03_Overview/2_Privacy_A01_t19: Fail # Calling unresolved class constructor.
-Language/03_Overview/2_Privacy_A01_t20: Fail # Calling unresolved class constructor.
-Language/05_Variables/05_Variables_A05_t01: fail # co19-roll r546: Please triage this failure
-Language/05_Variables/05_Variables_A05_t02: fail # co19-roll r546: Please triage this failure
-Language/05_Variables/05_Variables_A11_t01: fail
-Language/07_Classes/07_Classes_A13_t02: Fail # Missing CT error on member with same name a type parameter
-Language/07_Classes/07_Classes_A13_t03: Fail # Missing CT error on member with same name a type parameter
-Language/07_Classes/07_Classes_A13_t05: Fail # Missing CT error on member with same name a type parameter
-Language/07_Classes/07_Classes_A13_t06: Fail # Missing CT error on member with same name a type parameter
-Language/07_Classes/07_Classes_A13_t08: Fail # Missing CT error on member with same name a type parameter
-Language/07_Classes/07_Classes_A13_t09: Fail # Missing CT error on member with same name a type parameter
-Language/07_Classes/1_Instance_Methods_A07_t01: fail # Issue 21201
-Language/07_Classes/3_Setters_A04_t01: Fail # inherited from VM
-Language/07_Classes/3_Setters_A04_t02: Fail # inherited from VM
-Language/07_Classes/3_Setters_A04_t07: Fail # inherited from VM
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A12_t02: fail # 13363
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A20_t02: fail # 13363
-Language/07_Classes/6_Constructors/2_Factories_A08_t02: fail # Issue 21202
-Language/07_Classes/6_Constructors/2_Factories_A10_t02: fail # Issue 21202
-Language/07_Classes/6_Constructors/2_Factories_A10_t03: fail # Issue 21202
-Language/07_Classes/6_Constructors_A03_t03: Fail # Calling unresolved class constructor.
-Language/07_Classes/9_Superclasses/1_Inheritance_and_Overriding_A01_t03: Fail # TODO(dart2dart-team): Please triage this failure.
-Language/10_Generics/09_Generics_A01_t17: fail # Issue 21203
-Language/12_Expressions/01_Constants_A03_t01: Fail # Issue 13652
-Language/12_Expressions/12_Instance_Creation/1_New_A02_t03: fail # co19-roll r546: Please triage this failure
-Language/12_Expressions/12_Instance_Creation/1_New_A02_t05: fail # co19-roll r546: Please triage this failure
-Language/12_Expressions/12_Instance_Creation/1_New_A02_t06: fail # co19-roll r546: Please triage this failure
-Language/12_Expressions/12_Instance_Creation/1_New_A02_t07: fail # co19-roll r546: Please triage this failure
-Language/12_Expressions/12_Instance_Creation/1_New_A03_t01: fail # co19-roll r546: Please triage this failure
-Language/12_Expressions/12_Instance_Creation/1_New_A03_t02: fail # co19-roll r546: Please triage this failure
-Language/12_Expressions/12_Instance_Creation/1_New_A04_t01: fail # co19-roll r546: Please triage this failure
-Language/12_Expressions/12_Instance_Creation/1_New_A04_t02: RuntimeError # co19-roll r607: Please triage this failure
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t04: fail # co19-roll r546: Please triage this failure
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t05: fail # co19-roll r546: Please triage this failure
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t06: fail # co19-roll r546: Please triage this failure
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t15: CompileTimeError # Issue 21092
-Language/12_Expressions/12_Instance_Creation/2_Const_A11_t01: MissingCompileTimeError # Issue 21134
-Language/12_Expressions/12_Instance_Creation/2_Const_A11_t03: MissingCompileTimeError # Issue 21134
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t09: RuntimeError # co19-roll r623: Please triage this failure
-Language/12_Expressions/17_Getter_Invocation_A07_t02: Pass, RuntimeError # co19-roll r607: Please triage this failure
-Language/12_Expressions/22_Equality_A01_t01: fail # co19-roll r546: Please triage this failure
-Language/12_Expressions/22_Equality_A05_t01: fail # co19-roll r546: Please triage this failure
-Language/12_Expressions/30_Identifier_Reference_A02_t01: fail # co19-roll r546: Please triage this failure
-Language/13_Statements/04_Local_Function_Declaration_A04_t01: Fail, MissingCompileTimeError # co19-roll r607: Please triage this failure
-Language/13_Statements/04_Local_Function_Declaration_A04_t03: MissingCompileTimeError # co19-roll r667: Please triage this failure
-Language/13_Statements/09_Switch_A01_t02: fail # co19-roll r546: Please triage this failure
-Language/13_Statements/12_Labels_A01_t03: fail # co19-roll r546: Please triage this failure
-Language/14_Libraries_and_Scripts/1_Imports_A03_t08: fail # co19-roll r546: Please triage this failure
-Language/14_Libraries_and_Scripts/1_Imports_A03_t09: fail # co19-roll r546: Please triage this failure
-Language/14_Libraries_and_Scripts/1_Imports_A03_t10: fail # co19-roll r546: Please triage this failure
-Language/14_Libraries_and_Scripts/1_Imports_A03_t28: fail # co19-roll r546: Please triage this failure
-Language/14_Libraries_and_Scripts/1_Imports_A03_t29: fail # co19-roll r546: Please triage this failure
-Language/14_Libraries_and_Scripts/1_Imports_A03_t30: fail # co19-roll r546: Please triage this failure
-Language/15_Types/4_Interface_Types_A11_t01: crash # co19-roll r546: Please triage this failure
-Language/15_Types/4_Interface_Types_A11_t02: crash # co19-roll r546: Please triage this failure
-Language/15_Types/4_Interface_Types_A11_t04: fail # Issue 14654
-Language/15_Types/5_Function_Types_A06_t01: fail # co19-roll r546: Please triage this failure
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A40_t04: fail # co19-roll r546: Please triage this failure
-Language/16_Reference/1_Lexical_Rules_A02_t06: fail # co19-roll r546: Please triage this failure
-LibTest/async/DeferredLibrary/DeferredLibrary_A01_t01: RuntimeError # Issue 22032
-LibTest/core/DateTime/parse_A03_t01: fail # co19-roll r546: Please triage this failure
-LibTest/core/Function/Function_class_A01_t01: RuntimeError # co19-roll r623: Please triage this failure
-LibTest/core/Invocation/memberName_A01_t01: Pass, RuntimeError # co18-roll r607: Please triage this failure
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: Fail # inherited from VM. Issue 22200
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t05: Fail # inherited from VM. Issue 22200
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t06: Fail # inherited from VM. Issue 22200
-LibTest/core/Symbol/Symbol_A01_t03: RuntimeError # co19-roll r607: Please triage this failure
-LibTest/core/Symbol/Symbol_A01_t05: RuntimeError # co19-roll r607: Please triage this failure
-LibTest/core/int/operator_left_shift_A01_t02: Fail, OK # co19 issue 129
-LibTest/core/int/toRadixString_A01_t01: Fail # inherited from VM
-LibTest/isolate/Isolate/spawnUri_A01_t01: Fail # co19-roll r672: Please triage this failure
-LibTest/isolate/Isolate/spawnUri_A01_t02: Fail # co19-roll r672: Please triage this failure
-LibTest/isolate/Isolate/spawnUri_A01_t03: Fail # co19-roll r672: Please triage this failure
-LibTest/isolate/Isolate/spawnUri_A01_t04: Fail # co19-roll r672: Please triage this failure
-LibTest/isolate/Isolate/spawnUri_A01_t05: Fail # co19-roll r672: Please triage this failure
-LibTest/isolate/Isolate/spawnUri_A02_t01: RuntimeError # Issue 15617
-LibTest/isolate/Isolate/spawn_A02_t02: RuntimeError # Issue 15617
-LibTest/isolate/IsolateStream/any_A02_t01: fail # co19-roll r546: Please triage this failure
-LibTest/isolate/ReceivePort/receive_A01_t02: Fail, OK # co19 issue 276
-LibTest/isolate/SendPort/send_A01_t01: CompileTimeError # co19-roll r706: Please triage this failure
-LibTest/isolate/SendPort/send_A01_t02: CompileTimeError # co19-roll r706: Please triage this failure
-LibTest/isolate/SendPort/send_A01_t03: CompileTimeError # co19-roll r706: Please triage this failure
-LibTest/isolate/SendPort/send_A02_t02: timeout # co19-roll r546: Please triage this failure
-LibTest/isolate/SendPort/send_A02_t03: timeout # co19-roll r546: Please triage this failure
-LibTest/math/tan_A01_t01: Fail # co19 issue 44
-LibTest/typed_data/Float32x4/equal_A01_t01: Skip # co19 issue 656
-LibTest/typed_data/Float32x4/greaterThanOrEqual_A01_t01: Skip # co19 issue 656
-LibTest/typed_data/Float32x4/greaterThan_A01_t01: Skip # co19 issue 656
-LibTest/typed_data/Float32x4/lessThanOrEqual_A01_t01: Skip # co19 issue 656
-LibTest/typed_data/Float32x4/lessThan_A01_t01: Skip # co19 issue 656
-LibTest/typed_data/Float32x4/notEqual_A01_t01: Skip # co19 issue 656
-
-[ $compiler == dart2dart && $system == windows ]
-LibTest/core/double/operator_remainder_A01_t04: Fail # Result is NaN
-LibTest/core/double/round_A01_t01: Fail # Result is NaN
-LibTest/core/double/remainder_A01_t04: Fail # Result is NaN
-
-[ $compiler == dart2dart && $system == macos ]
-LibTest/math/acos_A01_t01: Fail, OK # co19 issue 44
-LibTest/math/asin_A01_t01: Fail, OK # co19 issue 44
-LibTest/math/atan_A01_t01: Fail, OK # co19 issue 44
-
-[ $compiler == dart2dart && $minified ]
-Language/12_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A01_t02: fail # co19-roll r559: Please triage this failure
-Language/12_Expressions/17_Getter_Invocation_A02_t01: fail # co19-roll r559: Please triage this failure
-Language/12_Expressions/18_Assignment_A05_t02: fail # co19-roll r559: Please triage this failure
-Language/12_Expressions/18_Assignment_A05_t04: fail # co19-roll r559: Please triage this failure
-LibTest/convert/JsonCodec/encode_A01_t02: RuntimeError # co19-roll r641: Please triage this failure
diff --git a/tests/co19/co19-dart2js.status b/tests/co19/co19-dart2js.status
index d9c2e62..a4a7276 100644
--- a/tests/co19/co19-dart2js.status
+++ b/tests/co19/co19-dart2js.status
@@ -51,8 +51,6 @@
Language/14_Libraries_and_Scripts/1_Imports_A03_t09: fail # Issue 21171
Language/14_Libraries_and_Scripts/1_Imports_A03_t10: fail # Issue 21171
Language/14_Libraries_and_Scripts/1_Imports_A03_t28: fail # Issue 21171
-Language/14_Libraries_and_Scripts/1_Imports_A03_t29: fail # co19 issue 723
-Language/14_Libraries_and_Scripts/1_Imports_A03_t30: fail # co19 issue 723
Language/15_Types/4_Interface_Types_A11_t01: crash # Issue 21174
Language/15_Types/4_Interface_Types_A11_t02: crash # Issue 21174
Language/15_Types/4_Interface_Types_A11_t04: fail # Issue 14654
@@ -98,14 +96,9 @@
LibTest/isolate/Isolate/spawnUri_A01_t05: Fail # Dart issue 15974
LibTest/isolate/Isolate/spawnUri_A02_t01: RuntimeError, Pass # Dart issue 15617
LibTest/isolate/Isolate/spawn_A02_t02: RuntimeError, Pass # Dart issue 15617
-LibTest/isolate/IsolateStream/any_A02_t01: fail # co19-roll r546: Please triage this failure
-LibTest/isolate/IsolateStream/contains_A02_t01: fail # co19-roll r546: Please triage this failure
-LibTest/isolate/ReceivePort/receive_A01_t02: RuntimeError # Issue 6750
LibTest/isolate/SendPort/send_A01_t01: CompileTimeError # co19-roll r706: Please triage this failure
LibTest/isolate/SendPort/send_A01_t02: CompileTimeError # co19-roll r706: Please triage this failure
LibTest/isolate/SendPort/send_A01_t03: CompileTimeError # co19-roll r706: Please triage this failure
-LibTest/isolate/SendPort/send_A02_t04: RuntimeError # Runtime error: TypeError: Cannot call method 'toSendPort$0' of undefined.
-LibTest/isolate/SendPort/send_A02_t04: RuntimeError, OK # co19 issue 293 Passes on IE
LibTest/math/MutableRectangle/boundingBox_A01_t01: RuntimeError, Pass # co19-roll r706: Please triage this failure.
LibTest/math/Rectangle/boundingBox_A01_t01: RuntimeError, Pass # co19-roll r706: Please triage this failure.
LibTest/math/pow_A04_t01: fail # co19-roll r587: Please triage this failure
@@ -314,8 +307,6 @@
LibTest/core/Stopwatch/stop_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
LibTest/core/Uri/Uri_A06_t03: Pass, Slow
LibTest/isolate/ReceivePort/asBroadcastStream_A04_t03: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/isolate/SendPort/send_A02_t05: RuntimeError # TODO(ahe): Please triage this failure.
-LibTest/isolate/SendPort/send_A02_t06: RuntimeError # TODO(ahe): Please triage this failure.
LibTest/typed_data/Float32List/Float32List.view_A06_t01: fail # co19-roll r587: Please triage this failure
LibTest/typed_data/Float32List/toList_A01_t01: Skip # co19-roll r559: Please triage this failure
LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: fail # co19-roll r587: Please triage this failure
@@ -9447,1348 +9438,352 @@
WebPlatformTest/webstorage/storage_session_setitem_t01: RuntimeError # Please triage this failure
[ $compiler == dart2js && $cps_ir ]
-Language/03_Overview/03_Overview_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/03_Overview_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A01_t28: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A01_t29: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A01_t34: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A01_t39: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A02_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A02_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A02_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A02_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A02_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A02_t12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A02_t13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A02_t14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A02_t15: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A02_t16: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+Language/03_Overview/03_Overview_A01_t01: Crash # (main): handleStaticFunctionGet: function(main)
+Language/03_Overview/1_Scoping_A01_t34: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+Language/03_Overview/1_Scoping_A01_t39: Crash # Instance of 'TypeOperator': type check unimplemented for f.
Language/03_Overview/1_Scoping_A02_t19: Crash # (switch (1){case 1:var x;break;case 2:var x;break;}): Unhandled node
-Language/03_Overview/1_Scoping_A02_t29: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/1_Scoping_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/2_Privacy_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/2_Privacy_A01_t04: Crash # "on T" catch block
-Language/03_Overview/2_Privacy_A01_t05: Crash # "on T" catch block
-Language/03_Overview/2_Privacy_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/2_Privacy_A01_t07: Crash # (try {a._setter=1;}on int catch (ok){}): "on T" catch block
-Language/03_Overview/2_Privacy_A01_t08: Crash # "on T" catch block
-Language/03_Overview/2_Privacy_A01_t09: Crash # "on T" catch block
-Language/03_Overview/2_Privacy_A01_t10: Crash # "on T" catch block
-Language/03_Overview/2_Privacy_A01_t11: Crash # "on T" catch block
-Language/03_Overview/2_Privacy_A01_t13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/2_Privacy_A01_t14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/2_Privacy_A01_t16: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/03_Overview/2_Privacy_A01_t18: Crash # "on T" catch block
-Language/03_Overview/2_Privacy_A01_t19: Crash # "on T" catch block
-Language/03_Overview/2_Privacy_A01_t20: Crash # "on T" catch block
-Language/03_Overview/2_Privacy_A01_t21: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/05_Variables_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/05_Variables_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/05_Variables_A03_t02: Crash # (Expect): Error expression `Expect` unhandled.
-Language/05_Variables/05_Variables_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/05_Variables_A07_t01: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A07_t02: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A07_t03: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A07_t04: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A07_t09: Crash # Please triage this failure.
-Language/05_Variables/05_Variables_A07_t10: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A08_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/05_Variables/05_Variables_A08_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/05_Variables/05_Variables_A08_t03: Crash # Please triage this failure.
-Language/05_Variables/05_Variables_A09_t01: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A11_t01: Crash # (w): Error expression `w` unhandled.
-Language/05_Variables/05_Variables_A11_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/05_Variables_A12_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/05_Variables_A12_t09: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A12_t10: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A12_t11: Crash # "on T" catch block
+Language/03_Overview/2_Privacy_A01_t06: Crash # Instance of 'TypeOperator': type check unimplemented for _inaccessibleFuncType.
+Language/05_Variables/05_Variables_A04_t01: Crash # unsupported element kind: foo:field
Language/05_Variables/05_Variables_A12_t12: Crash # unsupported element kind: z5:field
-Language/05_Variables/05_Variables_A13_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/05_Variables_A13_t02: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A13_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/05_Variables_A14_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/05_Variables_A14_t02: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A14_t03: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A14_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/05_Variables_A14_t05: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A14_t06: Crash # "on T" catch block
-Language/05_Variables/05_Variables_A14_t07: Crash # (throw new ExpectException(message)): Unhandled node
-Language/05_Variables/05_Variables_A15_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/05_Variables_A15_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/05_Variables_A15_t03: Crash # (throw new ExpectException(message)): Unhandled node
-Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t05: Crash # "on T" catch block
-Language/06_Functions/06_Functions_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/06_Functions/06_Functions_A01_t06: Crash # (function()): Error expression `function()` unhandled.
-Language/06_Functions/06_Functions_A01_t07: Crash # (function()): Error expression `function()` unhandled.
-Language/06_Functions/06_Functions_A01_t08: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t09: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t10: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t12: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t14: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t15: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t16: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t17: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t18: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t19: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t20: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t21: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t23: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t24: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t25: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/06_Functions_A01_t33: Crash # (f2()): Error expression `f2()` unhandled.
-Language/06_Functions/06_Functions_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/06_Functions/06_Functions_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/06_Functions/06_Functions_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/06_Functions/1_Function_Declaration_A01_t01: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/1_Function_Declaration_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/06_Functions/2_Formal_Parameters/1_Required_Formals_A02_t05: Crash # "on T" catch block
-Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t04: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t05: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t06: Crash # "on T" catch block
-Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t08: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t09: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t10: Crash # "on T" catch block
-Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/06_Functions/2_Formal_Parameters_A01_t02: Crash # (f(1,1)): Error expression `f(1,1)` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t03: Crash # (f(1)): Error expression `f(1)` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t04: Crash # (f(1)): Error expression `f(1)` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t05: Crash # (f(1)): Error expression `f(1)` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t06: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t07: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t09: Crash # (f(1,1)): Error expression `f(1,1)` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t10: Crash # (f(1)): Error expression `f(1)` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t12: Crash # (f(1)): Error expression `f(1)` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t13: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t14: Crash # (f()): Error expression `f()` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t16: Crash # (f(1)): Error expression `f(1)` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t17: Crash # (f(1)): Error expression `f(1)` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t20: Crash # (f(1,2,3)): Error expression `f(1,2,3)` unhandled.
-Language/06_Functions/2_Formal_Parameters_A01_t21: Crash # (f(1,2,3)): Error expression `f(1,2,3)` unhandled.
-Language/06_Functions/2_Formal_Parameters_A02_t01: Crash # "on T" catch block
-Language/06_Functions/2_Formal_Parameters_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/06_Functions/2_Formal_Parameters_A03_t03: Crash # (f(1)): handleStaticFunctionIncompatibleInvoke
-Language/06_Functions/2_Formal_Parameters_A03_t04: Crash # (f(1)): handleStaticFunctionIncompatibleInvoke
-Language/06_Functions/2_Formal_Parameters_A03_t06: Crash # (f(1)): handleStaticFunctionIncompatibleInvoke
-Language/06_Functions/3_Type_of_a_Function_A01_t01: Crash # "on T" catch block
-Language/06_Functions/4_External_Functions_A01_t01: Crash # "on T" catch block
-Language/07_Classes/07_Classes_A02_t12: Crash # (A): Error expression `A` unhandled.
-Language/07_Classes/07_Classes_A02_t13: Crash # (const A()): Error expression `const A()` unhandled.
-Language/07_Classes/07_Classes_A02_t16: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A02_t17: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A02_t18: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A02_t19: Crash # (new A.B()): Error expression `new A.B()` unhandled.
-Language/07_Classes/07_Classes_A02_t21: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A02_t22: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A02_t23: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A04_t01: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A04_t02: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A04_t04: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A04_t05: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A04_t13: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A04_t17: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/07_Classes_A06_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/07_Classes_A10_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/07_Classes_A11_t02: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/07_Classes_A11_t04: Crash # (new A()): Error expression `new A()` unhandled.
-Language/07_Classes/10_Superinterfaces_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/10_Superinterfaces_A07_t04: Crash # cannot compile methods that need interceptor calling convention.
-Language/07_Classes/1_Instance_Methods/2_Operators_A01_t01: Crash # cannot compile methods that need interceptor calling convention.
-Language/07_Classes/1_Instance_Methods/2_Operators_A01_t02: Crash # (new C()): Error expression `new C()` unhandled.
-Language/07_Classes/1_Instance_Methods/2_Operators_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/1_Instance_Methods/2_Operators_A02_t02: Crash # (new C()): Error expression `new C()` unhandled.
+Language/05_Variables/05_Variables_A14_t07: Crash # unsupported element kind: z2:field
+Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t01: Crash # unsupported element kind: c:field
+Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t02: Crash # unsupported element kind: sFinalTyped:field
+Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t03: Crash # unsupported element kind: sFinalTyped:field
+Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t04: RuntimeError # Please triage this failure.
+Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t05: Crash # unsupported element kind: sTyped:field
+Language/07_Classes/07_Classes_A02_t17: Crash # Please triage this failure.
+Language/07_Classes/07_Classes_A02_t18: Crash # Please triage this failure.
+Language/07_Classes/07_Classes_A02_t19: Crash # Please triage this failure.
Language/07_Classes/1_Instance_Methods/2_Operators_A02_t06: Crash # Please triage this failure.
-Language/07_Classes/1_Instance_Methods/2_Operators_A02_t20: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/1_Instance_Methods/2_Operators_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/07_Classes/1_Instance_Methods/2_Operators_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/07_Classes/1_Instance_Methods/2_Operators_A08_t01: Crash # cannot compile methods that need interceptor calling convention.
-Language/07_Classes/2_Getters_A01_t03: Crash # (try {var x=new C().getter;}on C catch (ok){}): "on T" catch block
-Language/07_Classes/2_Getters_A01_t05: Crash # (try {var x=C.getter;}on C catch (ok){}): "on T" catch block
-Language/07_Classes/2_Getters_A02_t01: Crash # "on T" catch block
-Language/07_Classes/2_Getters_A04_t08: Crash # (C.foo()): Error expression `C.foo()` unhandled.
-Language/07_Classes/2_Getters_A04_t09: Crash # (C.foo()): Error expression `C.foo()` unhandled.
-Language/07_Classes/3_Setters_A04_t01: Crash # "on T" catch block
-Language/07_Classes/3_Setters_A04_t05: Crash # "on T" catch block
-Language/07_Classes/3_Setters_A04_t07: Crash # (C.foo(1)): Error expression `C.foo(1)` unhandled.
-Language/07_Classes/3_Setters_A08_t01: Crash # (C.foo="foo"): Error expression `C.foo="foo"` unhandled.
-Language/07_Classes/3_Setters_A08_t02: Crash # (C.foo="foo"): Error expression `C.foo="foo"` unhandled.
-Language/07_Classes/3_Setters_A08_t04: Crash # (C.foo="foo"): Error expression `C.foo="foo"` unhandled.
-Language/07_Classes/3_Setters_A08_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/4_Abstract_Instance_Members_A02_t01: Crash # "on T" catch block
-Language/07_Classes/4_Abstract_Instance_Members_A02_t02: Crash # "on T" catch block
-Language/07_Classes/4_Abstract_Instance_Members_A02_t03: Crash # "on T" catch block
-Language/07_Classes/4_Abstract_Instance_Members_A02_t04: Crash # "on T" catch block
-Language/07_Classes/4_Abstract_Instance_Members_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/4_Abstract_Instance_Members_A03_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/4_Abstract_Instance_Members_A03_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/4_Abstract_Instance_Members_A04_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/4_Abstract_Instance_Members_A04_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/4_Abstract_Instance_Members_A04_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/4_Abstract_Instance_Members_A07_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A01_t06: Crash # (new C.c3()): Error expression `new C.c3()` unhandled.
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t01: Crash # handleStaticFunctionGet: function(foo)
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t02: Crash # (new C()): Error expression `new C()` unhandled.
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t03: Crash # (new C()): Error expression `new C()` unhandled.
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t05: Crash # (new C()): Error expression `new C()` unhandled.
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t07: Crash # (new C()): Error expression `new C()` unhandled.
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t09: Crash # (new C()): Error expression `new C()` unhandled.
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t10: Crash # (new C()): Error expression `new C()` unhandled.
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t11: Crash # (new C()): Error expression `new C()` unhandled.
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t15: Crash # "on T" catch block
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t16: Crash # (new C()): Error expression `new C()` unhandled.
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A06_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A11_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A11_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A11_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A11_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A12_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A12_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A12_t03: Crash # "on T" catch block
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A12_t04: Crash # "on T" catch block
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A13_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A17_t01: Crash # "on T" catch block
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A17_t02: Crash # "on T" catch block
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A18_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A18_t03: Crash # "on T" catch block
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A20_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A20_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/2_Factories_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/2_Factories_A03_t07: Crash # "on T" catch block
-Language/07_Classes/6_Constructors/2_Factories_A06_t01: Crash # "on T" catch block
-Language/07_Classes/6_Constructors/2_Factories_A06_t02: Crash # "on T" catch block
-Language/07_Classes/6_Constructors/2_Factories_A06_t03: Crash # "on T" catch block
-Language/07_Classes/6_Constructors/2_Factories_A06_t04: Crash # "on T" catch block
-Language/07_Classes/6_Constructors/2_Factories_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/2_Factories_A07_t02: Crash # (new A.foo()): Error expression `new A.foo()` unhandled.
-Language/07_Classes/6_Constructors/2_Factories_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/2_Factories_A08_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors/2_Factories_A09_t01: Crash # (new F()): Error expression `new F()` unhandled.
-Language/07_Classes/6_Constructors/2_Factories_A09_t02: Crash # (new F.id()): Error expression `new F.id()` unhandled.
-Language/07_Classes/6_Constructors/2_Factories_A09_t03: Crash # (new F()): Error expression `new F()` unhandled.
-Language/07_Classes/6_Constructors/2_Factories_A09_t04: Crash # (new F1()): Error expression `new F1()` unhandled.
-Language/07_Classes/6_Constructors/2_Factories_A10_t01: Crash # (new F()): Error expression `new F()` unhandled.
-Language/07_Classes/6_Constructors/2_Factories_A10_t02: Crash # (new F()): Error expression `new F()` unhandled.
-Language/07_Classes/6_Constructors/2_Factories_A10_t03: Crash # (new F()): Error expression `new F()` unhandled.
-Language/07_Classes/6_Constructors/2_Factories_A10_t04: Crash # (new F.foo()): Error expression `new F.foo()` unhandled.
-Language/07_Classes/6_Constructors/2_Factories_A12_t02: Crash # "on T" catch block
-Language/07_Classes/6_Constructors/2_Factories_A14_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors_A01_t01: Crash # (new C.foo()): Error expression `new C.foo()` unhandled.
-Language/07_Classes/6_Constructors_A01_t02: Crash # (new C.foo()): Error expression `new C.foo()` unhandled.
-Language/07_Classes/6_Constructors_A01_t03: Crash # (new C.foo()): Error expression `new C.foo()` unhandled.
-Language/07_Classes/6_Constructors_A01_t06: Crash # (new C.foo()): Error expression `new C.foo()` unhandled.
-Language/07_Classes/6_Constructors_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/6_Constructors_A03_t03: Crash # "on T" catch block
-Language/07_Classes/7_Static_Methods_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/7_Static_Methods_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/8_Static_Variables_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/9_Superclasses/1_Inheritance_and_Overriding_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/9_Superclasses/1_Inheritance_and_Overriding_A01_t03: Crash # "on T" catch block
-Language/07_Classes/9_Superclasses/1_Inheritance_and_Overriding_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/9_Superclasses/1_Inheritance_and_Overriding_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/9_Superclasses/1_Inheritance_and_Overriding_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/9_Superclasses/1_Inheritance_and_Overriding_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/9_Superclasses/1_Inheritance_and_Overriding_A02_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/9_Superclasses/1_Inheritance_and_Overriding_A02_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/9_Superclasses_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/9_Superclasses_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/07_Classes/9_Superclasses_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/08_Interfaces/5_Superinterfaces/1_Inheritance_and_Overriding_A01_t01: Crash # "on T" catch block
-Language/08_Interfaces/5_Superinterfaces/1_Inheritance_and_Overriding_A01_t02: Crash # "on T" catch block
-Language/08_Interfaces/5_Superinterfaces/1_Inheritance_and_Overriding_A02_t01: Crash # "on T" catch block
-Language/08_Interfaces/5_Superinterfaces/1_Inheritance_and_Overriding_A02_t02: Crash # "on T" catch block
-Language/08_Interfaces/5_Superinterfaces/1_Inheritance_and_Overriding_A02_t04: Crash # "on T" catch block
-Language/08_Interfaces/5_Superinterfaces/1_Inheritance_and_Overriding_A02_t05: Crash # "on T" catch block
-Language/08_Interfaces/5_Superinterfaces_A01_t04: Crash # (new B()): Error expression `new B()` unhandled.
-Language/10_Generics/09_Generics_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/10_Generics/09_Generics_A01_t16: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/10_Generics/09_Generics_A03_t01: Crash # "on T" catch block
-Language/10_Generics/09_Generics_A04_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/10_Generics/09_Generics_A04_t06: Crash # "on T" catch block
-Language/10_Generics/10_Generics_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/10_Generics/10_Generics_A05_t02: Crash # "on T" catch block
-Language/10_Generics/10_Generics_A05_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A02_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A03_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A04_t02: Crash # Please triage this failure.
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A05_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A07_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A07_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/00_Object_Identity/1_Object_Identity_A08_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/01_Constants_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/01_Constants_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/01_Constants_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A09_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A10_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A10_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A11_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A12_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A12_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A12_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A12_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A13_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A13_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A14_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/01_Constants_A14_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/02_Null_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/02_Null_A05_t02: Crash # "on T" catch block
-Language/12_Expressions/03_Numbers_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/03_Numbers_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/03_Numbers_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/03_Numbers_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/03_Numbers_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/03_Numbers_A01_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/03_Numbers_A01_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/03_Numbers_A05_t02: Crash # "on T" catch block
-Language/12_Expressions/03_Numbers_A06_t02: Crash # "on T" catch block
-Language/12_Expressions/04_Booleans/1_Boolean_Conversion_A01_t01: Crash # (try {if(null){}fail=true;}on AssertionError catch (ok){}): "on T" catch block
-Language/12_Expressions/04_Booleans/1_Boolean_Conversion_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/04_Booleans/1_Boolean_Conversion_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/04_Booleans/1_Boolean_Conversion_A02_t01: Crash # "on T" catch block
-Language/12_Expressions/04_Booleans_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/04_Booleans_A04_t02: Crash # "on T" catch block
-Language/12_Expressions/05_Strings/1_String_Interpolation_A01_t06: Crash # (try {"${T}";}on NoSuchMethodError catch (ok){print(ok);}): "on T" catch block
-Language/12_Expressions/05_Strings/1_String_Interpolation_A01_t07: Crash # "on T" catch block
-Language/12_Expressions/05_Strings/1_String_Interpolation_A01_t12: Crash # handleStaticFunctionGet: function(foo)
-Language/12_Expressions/05_Strings/1_String_Interpolation_A01_t13: Crash # "on T" catch block
-Language/12_Expressions/05_Strings/1_String_Interpolation_A01_t17: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/05_Strings/1_String_Interpolation_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings/1_String_Interpolation_A02_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings/1_String_Interpolation_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/05_Strings/1_String_Interpolation_A03_t02: Crash # "on T" catch block
-Language/12_Expressions/05_Strings/1_String_Interpolation_A03_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/05_Strings/1_String_Interpolation_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/05_Strings/1_String_Interpolation_A04_t02: Crash # "on T" catch block
-Language/12_Expressions/05_Strings/1_String_Interpolation_A04_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/05_Strings/1_String_Interpolation_A04_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/05_Strings_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A07_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A08_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A09_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A10_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A11_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A12_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A13_t04: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A14_t05: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A15_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A15_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A16_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A18_t02: Crash # "on T" catch block
-Language/12_Expressions/05_Strings_A18_t03: Crash # "on T" catch block
-Language/12_Expressions/05_Strings_A18_t04: Crash # "on T" catch block
-Language/12_Expressions/05_Strings_A18_t05: Crash # "on T" catch block
-Language/12_Expressions/05_Strings_A18_t06: Crash # "on T" catch block
-Language/12_Expressions/05_Strings_A18_t07: Crash # "on T" catch block
-Language/12_Expressions/05_Strings_A18_t08: Crash # "on T" catch block
-Language/12_Expressions/05_Strings_A18_t09: Crash # "on T" catch block
-Language/12_Expressions/05_Strings_A20_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A21_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/05_Strings_A21_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/05_Strings_A21_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/05_Strings_A21_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/06_Lists_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/06_Lists_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/06_Lists_A05_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/06_Lists_A06_t01: Crash # Please triage this failure.
-Language/12_Expressions/06_Lists_A07_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/06_Lists_A07_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/06_Lists_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/06_Lists_A08_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/06_Lists_A08_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/06_Lists_A08_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/06_Lists_A09_t01: Crash # "on T" catch block
-Language/12_Expressions/06_Lists_A09_t02: Crash # "on T" catch block
-Language/12_Expressions/06_Lists_A09_t03: Crash # "on T" catch block
-Language/12_Expressions/06_Lists_A09_t04: Crash # "on T" catch block
-Language/12_Expressions/06_Lists_A09_t05: Crash # "on T" catch block
-Language/12_Expressions/06_Symbols_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/06_Symbols_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/07_Maps_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/07_Maps_A04_t02: Crash # Please triage this failure.
-Language/12_Expressions/07_Maps_A05_t01: Crash # Please triage this failure.
-Language/12_Expressions/07_Maps_A06_t01: Crash # Please triage this failure.
-Language/12_Expressions/07_Maps_A06_t02: Crash # Please triage this failure.
-Language/12_Expressions/07_Maps_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/07_Maps_A07_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/07_Maps_A07_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/07_Maps_A07_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/07_Maps_A09_t01: Crash # Please triage this failure.
-Language/12_Expressions/07_Maps_A10_t02: Crash # "on T" catch block
-Language/12_Expressions/07_Maps_A10_t03: Crash # "on T" catch block
-Language/12_Expressions/07_Maps_A10_t04: Crash # "on T" catch block
-Language/12_Expressions/07_Maps_A10_t05: Crash # "on T" catch block
-Language/12_Expressions/08_Throw_A02_t01: Crash # (throw "fail1"): Unhandled node
-Language/12_Expressions/08_Throw_A03_t02: Crash # "on T" catch block
-Language/12_Expressions/08_Throw_A03_t03: Crash # "on T" catch block
-Language/12_Expressions/08_Throw_A03_t04: Crash # "on T" catch block
-Language/12_Expressions/08_Throw_A04_t01: Crash # (throw last): Unhandled node
-Language/12_Expressions/08_Throw_A08_t01: Crash # (try {bar(new Error());}on Error catch (e){Expect.isNotNull(e.stackTrace);}): "on T" catch block
-Language/12_Expressions/09_Function_Expressions_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/09_Function_Expressions_A03_t03: Crash # "on T" catch block
-Language/12_Expressions/09_Function_Expressions_A03_t04: Crash # "on T" catch block
-Language/12_Expressions/09_Function_Expressions_A04_t03: Crash # "on T" catch block
-Language/12_Expressions/09_Function_Expressions_A04_t04: Crash # "on T" catch block
-Language/12_Expressions/09_Function_Expressions_A05_t02: Crash # "on T" catch block
-Language/12_Expressions/09_Function_Expressions_A05_t03: Crash # "on T" catch block
-Language/12_Expressions/09_Function_Expressions_A05_t04: Crash # "on T" catch block
-Language/12_Expressions/09_Function_Expressions_A05_t05: Crash # "on T" catch block
-Language/12_Expressions/09_Function_Expressions_A06_t02: Crash # "on T" catch block
-Language/12_Expressions/09_Function_Expressions_A06_t03: Crash # "on T" catch block
-Language/12_Expressions/09_Function_Expressions_A06_t04: Crash # "on T" catch block
-Language/12_Expressions/10_Expressions_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/10_This_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/10_This_A02_t01: Crash # "on T" catch block
-Language/12_Expressions/10_This_A03_t02: Crash # (func(1,2)): Error expression `func(1,2)` unhandled.
-Language/12_Expressions/12_Instance_Creation/1_New_A01_t04: Crash # (try {A();}on NoSuchMethodError catch (e){}): "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A02_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t01: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t02: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t04: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t05: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t06: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t12: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t15: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t16: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t17: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A06_t18: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A07_t01: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A08_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/12_Instance_Creation/1_New_A08_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/12_Instance_Creation/1_New_A08_t03: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A09_t14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A12_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A12_t02: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A13_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A13_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A13_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation/1_New_A15_t01: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A15_t02: Crash # "on T" catch block
-Language/12_Expressions/12_Instance_Creation/1_New_A16_t01: Crash # (new C()): Error expression `new C()` unhandled.
-Language/12_Expressions/12_Instance_Creation/1_New_A16_t02: Crash # (new C.id()): Error expression `new C.id()` unhandled.
-Language/12_Expressions/12_Instance_Creation/2_Const_A08_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/12_Instance_Creation/2_Const_A08_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/12_Instance_Creation/2_Const_A08_t03: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/12_Instance_Creation/2_Const_A08_t04: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/12_Instance_Creation/2_Const_A08_t05: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/12_Instance_Creation_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/12_Instance_Creation_A01_t07: Crash # "on T" catch block
-Language/12_Expressions/13_Property_Extraction_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/13_Property_Extraction_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/13_Property_Extraction_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/13_Property_Extraction_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/13_Property_Extraction_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/13_Property_Extraction_A03_t02: Crash # (throw new ExpectException(message)): Unhandled node
+Language/07_Classes/1_Instance_Methods/2_Operators_A02_t20: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t01: Crash # (foo): handleStaticFunctionGet: function(foo)
+Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t02: Crash # Please triage this failure.
+Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t03: Crash # Please triage this failure.
+Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t05: Crash # Please triage this failure.
+Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t07: Crash # Please triage this failure.
+Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t09: Crash # Please triage this failure.
+Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t10: Crash # Please triage this failure.
+Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t11: Crash # Please triage this failure.
+Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t16: Crash # Please triage this failure.
+Language/07_Classes/6_Constructors/1_Generative_Constructors_A13_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/07_Classes/6_Constructors/2_Factories_A09_t01: Crash # Please triage this failure.
+Language/07_Classes/6_Constructors/2_Factories_A09_t02: Crash # Please triage this failure.
+Language/07_Classes/6_Constructors/2_Factories_A09_t03: Crash # Please triage this failure.
+Language/07_Classes/6_Constructors/2_Factories_A09_t04: Crash # Please triage this failure.
+Language/07_Classes/6_Constructors/2_Factories_A14_t03: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/07_Classes/7_Static_Methods_A01_t02: RuntimeError # Please triage this failure.
+Language/10_Generics/09_Generics_A04_t03: Crash # Instance of 'TypeOperator': type check unimplemented for S.
+Language/10_Generics/10_Generics_A05_t01: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+Language/10_Generics/10_Generics_A05_t03: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+Language/12_Expressions/00_Object_Identity/1_Object_Identity_A01_t01: Crash # unsupported element kind: notNil:field
+Language/12_Expressions/00_Object_Identity/1_Object_Identity_A01_t02: Crash # unsupported element kind: false2:field
+Language/12_Expressions/00_Object_Identity/1_Object_Identity_A05_t01: Crash # unsupported element kind: o2:field
+Language/12_Expressions/00_Object_Identity/1_Object_Identity_A07_t01: Crash # unsupported element kind: n7:field
+Language/12_Expressions/01_Constants_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A03_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A04_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A07_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A08_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A09_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A10_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A10_t03: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A11_t04: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A12_t03: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A12_t04: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A12_t05: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A12_t06: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A13_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A13_t05: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A14_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/01_Constants_A14_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/05_Strings/1_String_Interpolation_A01_t12: Crash # (foo): handleStaticFunctionGet: function(foo)
+Language/12_Expressions/05_Strings/1_String_Interpolation_A02_t02: Crash # (id): handleStaticFunctionGet: function(id)
+Language/12_Expressions/06_Lists_A08_t04: Crash # Instance of 'TypeOperator': type check unimplemented for List<int>.
+Language/12_Expressions/07_Maps_A07_t04: Crash # Instance of 'TypeOperator': type check unimplemented for Map<String, int>.
+Language/12_Expressions/07_Maps_A09_t01: Crash # (func): handleStaticFunctionGet: function(func)
+Language/12_Expressions/10_Expressions_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/12_Instance_Creation/1_New_A06_t07: Crash # (test): handleStaticFunctionGet: function(test)
+Language/12_Expressions/12_Instance_Creation/1_New_A06_t08: Crash # (test): handleStaticFunctionGet: function(test)
+Language/12_Expressions/12_Instance_Creation/1_New_A06_t09: Crash # (test): handleStaticFunctionGet: function(test)
+Language/12_Expressions/12_Instance_Creation/1_New_A06_t12: RuntimeError # Please triage this failure.
+Language/12_Expressions/12_Instance_Creation/1_New_A06_t13: RuntimeError # Please triage this failure.
+Language/12_Expressions/12_Instance_Creation/1_New_A06_t14: Crash # Please triage this failure.
+Language/12_Expressions/12_Instance_Creation/1_New_A09_t02: Crash # Instance of 'TypeOperator': type check unimplemented for A.
+Language/12_Expressions/12_Instance_Creation/1_New_A09_t11: Crash # Instance of 'TypeOperator': type check unimplemented for A.
+Language/12_Expressions/13_Property_Extraction_A03_t01: RuntimeError # Please triage this failure.
+Language/12_Expressions/13_Property_Extraction_A03_t02: RuntimeError # Please triage this failure.
Language/12_Expressions/13_Property_Extraction_A03_t03: RuntimeError # Please triage this failure.
-Language/12_Expressions/13_Property_Extraction_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/13_Property_Extraction_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/13_Property_Extraction_A04_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/13_Spawning_an_Isolate_A01_t01: Crash # unsupported element kind: _completer:field
-Language/12_Expressions/14_Function_Invocation/1_Actual_Argument_List_Evaluation_A01_t01: Crash # Please triage this failure.
-Language/12_Expressions/14_Function_Invocation/1_Actual_Argument_List_Evaluation_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A02_t01: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A03_t01: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A05_t01: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A05_t02: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A05_t03: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A05_t04: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A06_t01: Crash # Please triage this failure.
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A06_t04: Crash # Please triage this failure.
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A06_t05: Crash # (func(1,2,3,4)): handleStaticFunctionIncompatibleInvoke
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A06_t08: Crash # (C.func(1,2,3,4)): handleStaticFunctionIncompatibleInvoke
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A07_t01: Crash # (func(1,2,p:3)): handleStaticFunctionIncompatibleInvoke
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A07_t04: Crash # (C.func(1,2,p:3)): handleStaticFunctionIncompatibleInvoke
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A08_t01: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A08_t02: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A08_t03: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A08_t04: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t03: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t04: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t05: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t07: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t10: Crash # (try {undeclared();}on NoSuchMethodError catch (ok){}): "on T" catch block
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t15: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t16: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t17: Crash # unable to build cps definition of generative_constructor(C#)
-Language/12_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A01_t02: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A02_t01: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A03_t01: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A03_t02: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A04_t02: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A05_t02: Crash # "on T" catch block
-Language/12_Expressions/14_Function_Invocation_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/14_Function_Invocation_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/14_Function_Invocation_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/14_Function_Invocation_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A02_t01: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A03_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A03_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A04_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A04_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t01: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t02: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t03: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t05: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t07: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A06_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A06_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A06_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A07_t01: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A08_t01: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/2_Cascaded_Invocation_A01_t01: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/15_Method_Invocation/2_Cascaded_Invocation_A01_t19: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/2_Cascaded_Invocation_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/15_Method_Invocation/2_Cascaded_Invocation_A02_t02: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A02_t01: Crash # (C): Error expression `C` unhandled.
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t01: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t02: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t03: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t07: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t08: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t09: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A05_t01: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A06_t02: Crash # "on T" catch block
+Language/12_Expressions/13_Spawning_an_Isolate_A01_t01: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+Language/12_Expressions/14_Function_Invocation/1_Actual_Argument_List_Evaluation_A01_t01: Crash # (f): handleStaticFunctionGet: function(f)
+Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t05: Crash # unsupported element kind: f:field
+Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t13: Crash # unsupported element kind: test4:field
+Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t14: Crash # unsupported element kind: test4:field
+Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t04: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t07: Crash # (func): handleStaticFunctionGet: function(func)
+Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t05: Crash # (func): handleStaticFunctionGet: function(C#func)
Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A01_t01: RuntimeError # Please triage this failure.
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t01: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t02: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t04: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A03_t01: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A03_t02: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A03_t03: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A03_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A04_t01: Crash # (throw new TestException()): Unhandled node
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A04_t02: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A04_t03: Crash # (throw new TestException()): Unhandled node
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A04_t04: Crash # (throw new TestException()): Unhandled node
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A06_t01: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A06_t02: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A06_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A06_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A06_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A07_t01: Crash # "on T" catch block
-Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A08_t02: Crash # "on T" catch block
-Language/12_Expressions/16_Getter_Lookup_A02_t05: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/16_Getter_Lookup_A02_t06: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/17_Getter_Invocation_A01_t01: Crash # "on T" catch block
-Language/12_Expressions/17_Getter_Invocation_A01_t02: Crash # "on T" catch block
-Language/12_Expressions/17_Getter_Invocation_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/17_Getter_Invocation_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/17_Getter_Invocation_A02_t01: Crash # "on T" catch block
-Language/12_Expressions/17_Getter_Invocation_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/17_Getter_Invocation_A04_t02: Crash # "on T" catch block
-Language/12_Expressions/17_Getter_Invocation_A05_t01: Crash # "on T" catch block
-Language/12_Expressions/17_Getter_Invocation_A05_t02: Crash # "on T" catch block
-Language/12_Expressions/17_Getter_Invocation_A05_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/17_Getter_Invocation_A05_t04: Crash # "on T" catch block
-Language/12_Expressions/17_Getter_Invocation_A05_t05: Crash # "on T" catch block
-Language/12_Expressions/17_Getter_Invocation_A06_t01: Crash # (try {v;Expect.fail("TestException is expected");}on TestException catch (e){}): "on T" catch block
-Language/12_Expressions/17_Getter_Invocation_A06_t02: Crash # "on T" catch block
-Language/12_Expressions/17_Getter_Invocation_A06_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/17_Getter_Invocation_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/17_Getter_Invocation_A07_t02: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/17_Getter_Invocation_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/17_Getter_Invocation_A08_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/17_Getter_Invocation_A08_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A01_t01: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A01_t02: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A01_t03: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A01_t04: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A01_t05: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A01_t06: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A01_t07: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A01_t08: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A01_t09: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A01_t10: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A01_t11: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A02_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A02_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A02_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A02_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A02_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A02_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A02_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A02_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A02_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A03_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A03_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A03_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A03_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A03_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A03_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A03_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A03_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A03_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A04_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A04_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A04_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A04_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A04_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A04_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A04_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A04_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment/1_Compound_Assignment_A04_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A01_t05: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A01_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A02_t01: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A03_t01: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A04_t03: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A04_t04: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A04_t05: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A04_t06: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A04_t07: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A04_t08: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A04_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A05_t02: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A05_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A05_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A05_t05: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A06_t01: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A07_t01: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A08_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A08_t03: Crash # "on T" catch block
-Language/12_Expressions/18_Assignment_A08_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A08_t05: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/18_Assignment_A09_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A09_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/18_Assignment_A09_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/19_Conditional_A02_t01: Crash # "on T" catch block
-Language/12_Expressions/19_Conditional_A02_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/19_Conditional_A02_t03: Crash # "on T" catch block
-Language/12_Expressions/19_Conditional_A02_t04: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/19_Conditional_A03_t01: Crash # "on T" catch block
-Language/12_Expressions/19_Conditional_A04_t02: Crash # "on T" catch block
-Language/12_Expressions/19_Conditional_A04_t03: Crash # "on T" catch block
-Language/12_Expressions/19_Conditional_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/19_Conditional_A06_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/19_Conditional_A06_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/19_Conditional_A06_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A01_t01: Crash # "on T" catch block
-Language/12_Expressions/20_Logical_Boolean_Expressions_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/20_Logical_Boolean_Expressions_A03_t01: Crash # "on T" catch block
-Language/12_Expressions/20_Logical_Boolean_Expressions_A04_t02: Crash # "on T" catch block
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t15: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t16: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t17: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t18: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t19: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t20: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t21: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t27: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t28: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t29: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t30: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t31: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t32: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/21_Bitwise_Expressions_A01_t01: Crash # Please triage this failure.
-Language/12_Expressions/21_Bitwise_Expressions_A01_t14: Crash # (try {fun|1;}on NoSuchMethodError catch (e){}): "on T" catch block
-Language/12_Expressions/21_Bitwise_Expressions_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/21_Bitwise_Expressions_A02_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/21_Bitwise_Expressions_A02_t03: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/21_Bitwise_Expressions_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/21_Bitwise_Expressions_A03_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/21_Bitwise_Expressions_A03_t03: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/22_Equality_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/22_Equality_A02_t03: Crash # Please triage this failure.
-Language/12_Expressions/22_Equality_A02_t04: Crash # "on T" catch block
-Language/12_Expressions/22_Equality_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/22_Equality_A03_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/22_Equality_A03_t03: Crash # "on T" catch block
-Language/12_Expressions/22_Equality_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/22_Equality_A10_t02: Crash # "on T" catch block
-Language/12_Expressions/23_Relational_Expressions_A01_t01: Crash # Please triage this failure.
-Language/12_Expressions/23_Relational_Expressions_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/23_Relational_Expressions_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/24_Shift_A01_t01: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/24_Shift_A01_t15: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/24_Shift_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/24_Shift_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/25_Additive_Expressions_A01_t01: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/25_Additive_Expressions_A01_t17: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/25_Additive_Expressions_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/25_Additive_Expressions_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/25_Additive_Expressions_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/26_Multiplicative_Expressions_A01_t01: Crash # Please triage this failure.
-Language/12_Expressions/26_Multiplicative_Expressions_A01_t27: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/26_Multiplicative_Expressions_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/26_Multiplicative_Expressions_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/27_Unary_Expressions_A01_t01: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/27_Unary_Expressions_A01_t02: Crash # ( --A): Error expression ` --A` unhandled.
-Language/12_Expressions/27_Unary_Expressions_A01_t04: Crash # ( --f): Error expression ` --f` unhandled.
-Language/12_Expressions/27_Unary_Expressions_A01_t05: Crash # ( ++T): Error expression ` ++T` unhandled.
-Language/12_Expressions/27_Unary_Expressions_A01_t10: Crash # Please triage this failure.
-Language/12_Expressions/27_Unary_Expressions_A01_t27: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/27_Unary_Expressions_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/27_Unary_Expressions_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/27_Unary_Expressions_A02_t03: Crash # "on T" catch block
-Language/12_Expressions/27_Unary_Expressions_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/27_Unary_Expressions_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/27_Unary_Expressions_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/27_Unary_Expressions_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/27_Unary_Expressions_A07_t01: Crash # (try {~a;Expect.fail("Operator ~ was not called");}on TestException catch (e){}): "on T" catch block
-Language/12_Expressions/27_Unary_Expressions_A08_t01: Crash # "on T" catch block
-Language/12_Expressions/28_Postfix_Expressions_A01_t01: Crash # Please triage this failure.
-Language/12_Expressions/28_Postfix_Expressions_A01_t02: Crash # (f++ ): Error expression `f++ ` unhandled.
-Language/12_Expressions/28_Postfix_Expressions_A01_t03: Crash # (A++ ): Error expression `A++ ` unhandled.
-Language/12_Expressions/28_Postfix_Expressions_A01_t05: Crash # (T++ ): Error expression `T++ ` unhandled.
-Language/12_Expressions/28_Postfix_Expressions_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A05_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A06_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A07_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A08_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A09_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/28_Postfix_Expressions_A09_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/29_Assignable_Expressions_A01_t02: Crash # cannot compile methods that need interceptor calling convention.
-Language/12_Expressions/29_Assignable_Expressions_A01_t06: Crash # (A=1): Error expression `A=1` unhandled.
-Language/12_Expressions/29_Assignable_Expressions_A01_t08: Crash # (T=null): Error expression `T=null` unhandled.
-Language/12_Expressions/29_Assignable_Expressions_A01_t09: Crash # (f=null): Error expression `f=null` unhandled.
-Language/12_Expressions/29_Assignable_Expressions_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/29_Assignable_Expressions_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/29_Assignable_Expressions_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/29_Assignable_Expressions_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/29_Assignable_Expressions_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/30_Identifier_Reference_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/30_Identifier_Reference_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/30_Identifier_Reference_A01_t05: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/30_Identifier_Reference_A01_t06: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/30_Identifier_Reference_A01_t08: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/30_Identifier_Reference_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/30_Identifier_Reference_A04_t02: Crash # "on T" catch block
-Language/12_Expressions/30_Identifier_Reference_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A08_t02: Crash # "on T" catch block
-Language/12_Expressions/30_Identifier_Reference_A08_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A08_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A09_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A09_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t04: RuntimeError # Please triage this failure.
+Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A03_t04: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/12_Expressions/17_Getter_Invocation_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+Language/12_Expressions/17_Getter_Invocation_A07_t02: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+Language/12_Expressions/18_Assignment_A05_t02: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+Language/12_Expressions/18_Assignment_A05_t05: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+Language/12_Expressions/20_Logical_Boolean_Expressions_A01_t01: RuntimeError # Please triage this failure.
+Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t09: Crash # unsupported element kind: x:field
+Language/12_Expressions/20_Logical_Boolean_Expressions_A06_t10: Crash # unsupported element kind: x:field
+Language/12_Expressions/22_Equality_A03_t01: RuntimeError # Please triage this failure.
+Language/12_Expressions/30_Identifier_Reference_A08_t01: Crash # unsupported element kind: tlFinalTyped:field
+Language/12_Expressions/30_Identifier_Reference_A08_t02: Crash # unsupported element kind: tlFinalTyped:field
+Language/12_Expressions/30_Identifier_Reference_A08_t03: Crash # unsupported element kind: tlFinalTyped:field
Language/12_Expressions/30_Identifier_Reference_A09_t03: Crash # (i=0): For-loop variable captured in loop header
-Language/12_Expressions/30_Identifier_Reference_A09_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A10_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A10_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A10_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A11_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A12_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A13_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A14_t01: Crash # "on T" catch block
-Language/12_Expressions/30_Identifier_Reference_A14_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/30_Identifier_Reference_A14_t03: Crash # "on T" catch block
-Language/12_Expressions/30_Identifier_Reference_A14_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A15_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/30_Identifier_Reference_A15_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/30_Identifier_Reference_A15_t03: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/30_Identifier_Reference_A15_t04: Crash # "on T" catch block
+Language/12_Expressions/30_Identifier_Reference_A09_t04: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/12_Expressions/30_Identifier_Reference_A10_t01: Crash # (staticFunc): handleStaticFunctionGet: function(A#staticFunc)
+Language/12_Expressions/30_Identifier_Reference_A10_t02: Crash # (lib.f): handleStaticFunctionGet: function(f)
+Language/12_Expressions/30_Identifier_Reference_A13_t01: Crash # unsupported element kind: x4:field
Language/12_Expressions/30_Identifier_Reference_A15_t05: Crash # unsupported element kind: x:field
Language/12_Expressions/30_Identifier_Reference_A15_t06: Crash # unsupported element kind: x:field
-Language/12_Expressions/30_Identifier_Reference_A15_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A15_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/30_Identifier_Reference_A16_t04: Crash # handleStaticFunctionGet: function(libraryFunc)
-Language/12_Expressions/32_Type_Test_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/32_Type_Test_A02_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/32_Type_Test_A02_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/32_Type_Test_A02_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/32_Type_Test_A02_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/32_Type_Test_A02_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/32_Type_Test_A02_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/32_Type_Test_A02_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/32_Type_Test_A02_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/32_Type_Test_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/32_Type_Test_A03_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/12_Expressions/32_Type_Test_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/32_Type_Test_A07_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/32_Type_Test_A07_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/33_Type_Cast_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/33_Type_Cast_A01_t04: Crash # (try {int as num;Expect.fail("CastError expected");}on CastError catch (e){}): "on T" catch block
-Language/12_Expressions/33_Type_Cast_A02_t01: Crash # (try {c=1 as I;Expect.fail("CastError expected");}on CastError catch (e){}): "on T" catch block
-Language/12_Expressions/33_Type_Cast_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/33_Type_Cast_A02_t03: Crash # (try {1 as func;Expect.fail("CastError expected");}on CastError catch (ok){}): "on T" catch block
-Language/12_Expressions/33_Type_Cast_A02_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/33_Type_Cast_A02_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/33_Type_Cast_A02_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/33_Type_Cast_A02_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/33_Type_Cast_A02_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/33_Type_Cast_A02_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/33_Type_Cast_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/33_Type_Cast_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/Expressions_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/12_Expressions/Expressions_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/01_Blocks_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/01_Blocks_A01_t02: Crash # (throw 1): Unhandled node
-Language/13_Statements/01_Blocks_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/01_Blocks_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/02_Expression_Statements_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/02_Expression_Statements_A01_t06: Crash # cannot compile methods that need interceptor calling convention.
-Language/13_Statements/03_Variable_Declaration_A01_t01: Crash # "on T" catch block
-Language/13_Statements/03_Variable_Declaration_A01_t02: Crash # "on T" catch block
-Language/13_Statements/03_Variable_Declaration_A01_t05: Crash # "on T" catch block
-Language/13_Statements/03_Variable_Declaration_A01_t06: Crash # "on T" catch block
-Language/13_Statements/03_Variable_Declaration_A01_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/03_Variable_Declaration_A01_t14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/03_Variable_Declaration_A01_t15: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/03_Variable_Declaration_A01_t18: Crash # "on T" catch block
-Language/13_Statements/03_Variable_Declaration_A01_t19: Crash # "on T" catch block
-Language/13_Statements/03_Variable_Declaration_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/13_Statements/03_Variable_Declaration_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/03_Variable_Declaration_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/04_Local_Function_Declaration_A02_t01: Crash # "on T" catch block
-Language/13_Statements/04_Local_Function_Declaration_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/04_Local_Function_Declaration_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/04_Local_Function_Declaration_A04_t01: Crash # (func()): Error expression `func()` unhandled.
-Language/13_Statements/04_Local_Function_Declaration_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/04_Local_Function_Declaration_A04_t03: Crash # (oddHandler(x)): Error expression `oddHandler(x)` unhandled.
-Language/13_Statements/05_If_A01_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/05_If_A01_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/05_If_A01_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/05_If_A01_t12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/05_If_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/13_Statements/05_If_A02_t02: Crash # (try {if(i){i="hello";}}on AssertionError catch (e){err=true;}): "on T" catch block
-Language/13_Statements/05_If_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/05_If_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/05_If_A03_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/05_If_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/05_If_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/13_Statements/05_If_A05_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/13_Statements/05_If_A06_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/05_If_A06_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/05_If_A06_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/06_For/1_For_Loop_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/06_For/1_For_Loop_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/06_For/1_For_Loop_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/06_For/1_For_Loop_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-Language/13_Statements/06_For/1_For_Loop_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/06_For/1_For_Loop_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/06_For/1_For_Loop_A01_t07: Crash # "on T" catch block
-Language/13_Statements/06_For/1_For_Loop_A01_t08: Crash # "on T" catch block
-Language/13_Statements/06_For/1_For_Loop_A01_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/06_For/1_For_Loop_A01_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/06_For/2_For_in_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/06_For/2_For_in_A01_t02: Crash # "on T" catch block
-Language/13_Statements/06_For/2_For_in_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-Language/13_Statements/06_For/2_For_in_A01_t04: Crash # "on T" catch block
-Language/13_Statements/06_For/2_For_in_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/06_For_A01_t07: Crash # "on T" catch block
-Language/13_Statements/07_While_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/07_While_A02_t02: Crash # (try {while(null){break;}fail=true;}on AssertionError catch (ok){}): "on T" catch block
-Language/13_Statements/07_While_A02_t03: Crash # (throw new ExpectException(message)): Unhandled node
-Language/13_Statements/07_While_A03_t01: Crash # "on T" catch block
-Language/13_Statements/07_While_A03_t02: Crash # "on T" catch block
-Language/13_Statements/07_While_A03_t03: Crash # "on T" catch block
-Language/13_Statements/08_Do_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/08_Do_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/08_Do_A02_t03: Crash # "on T" catch block
-Language/13_Statements/08_Do_A02_t04: Crash # (throw new ExpectException(message)): Unhandled node
+Language/12_Expressions/30_Identifier_Reference_A16_t04: Crash # (libraryFunc): handleStaticFunctionGet: function(libraryFunc)
+Language/12_Expressions/32_Type_Test_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+Language/12_Expressions/32_Type_Test_A02_t03: Crash # Instance of 'TypeOperator': type check unimplemented for Undeclared.
+Language/12_Expressions/32_Type_Test_A02_t04: Crash # Instance of 'TypeOperator': type check unimplemented for G<int, bool>.
+Language/12_Expressions/32_Type_Test_A02_t05: Crash # Instance of 'TypeOperator': type check unimplemented for G<int, bool>.
+Language/12_Expressions/32_Type_Test_A02_t06: Crash # Instance of 'TypeOperator': type check unimplemented for G<int, bool>.
+Language/12_Expressions/32_Type_Test_A02_t07: Crash # Instance of 'TypeOperator': type check unimplemented for G<Unknown>.
+Language/12_Expressions/32_Type_Test_A03_t01: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+Language/12_Expressions/32_Type_Test_A07_t01: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+Language/12_Expressions/32_Type_Test_A07_t02: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+Language/12_Expressions/33_Type_Cast_A01_t01: Crash # (f): handleStaticFunctionGet: function(f)
+Language/12_Expressions/33_Type_Cast_A01_t04: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/33_Type_Cast_A02_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/33_Type_Cast_A02_t02: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/33_Type_Cast_A02_t03: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/33_Type_Cast_A02_t04: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/33_Type_Cast_A02_t05: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/33_Type_Cast_A02_t06: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/33_Type_Cast_A02_t07: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/33_Type_Cast_A02_t08: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/33_Type_Cast_A02_t09: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/33_Type_Cast_A04_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/33_Type_Cast_A04_t02: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/Expressions_A01_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/12_Expressions/Expressions_A01_t02: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/13_Statements/02_Expression_Statements_A01_t06: Crash # (C.s): handleStaticFunctionGet: function(C#s)
+Language/13_Statements/03_Variable_Declaration_A01_t14: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+Language/13_Statements/03_Variable_Declaration_A01_t15: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+Language/13_Statements/06_For_A01_t07: Crash # Instance of 'InvokeStatic': cannot generate error handling code for call to unresolved target
Language/13_Statements/09_Switch_A01_t01: Crash # (switch (1){case 0:case 1:}): Unhandled node
Language/13_Statements/09_Switch_A01_t02: Crash # (switch (1){l1:l2:l3:case (1):}): Unhandled node
-Language/13_Statements/09_Switch_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/09_Switch_A01_t05: Crash # (switchTest(0)): Error expression `switchTest(0)` unhandled.
-Language/13_Statements/09_Switch_A01_t06: Crash # (switchTest(1)): Error expression `switchTest(1)` unhandled.
-Language/13_Statements/09_Switch_A01_t09: Crash # (switchTest(0)): Error expression `switchTest(0)` unhandled.
-Language/13_Statements/09_Switch_A01_t10: Crash # (switchTest(0)): Error expression `switchTest(0)` unhandled.
-Language/13_Statements/09_Switch_A01_t12: Crash # (switchTest(0)): Error expression `switchTest(0)` unhandled.
-Language/13_Statements/09_Switch_A01_t14: Crash # (switchTest(0)): Error expression `switchTest(0)` unhandled.
-Language/13_Statements/09_Switch_A01_t18: Crash # (foo(1)): Error expression `foo(1)` unhandled.
+Language/13_Statements/09_Switch_A01_t03: Crash # Unhandled node
Language/13_Statements/09_Switch_A01_t19: Crash # (switch (1){case 0:break;label:print("hello");}): Unhandled node
Language/13_Statements/09_Switch_A02_t03: Crash # (switch (null){case null:}): Unhandled node
-Language/13_Statements/09_Switch_A05_t01: Crash # "on T" catch block
-Language/13_Statements/09_Switch_A05_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/09_Switch_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/09_Switch_A06_t02: Crash # "on T" catch block
-Language/13_Statements/09_Switch_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/09_Switch_A07_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/09_Switch_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/09_Switch_A08_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/09_Switch_A09_t01: Crash # "on T" catch block
+Language/13_Statements/09_Switch_A05_t01: Crash # (switch ('abc'){case 1:break;}): Unhandled node
+Language/13_Statements/09_Switch_A05_t02: Crash # (switch (p){default:return 1;}): Unhandled node
+Language/13_Statements/09_Switch_A06_t01: Crash # (switch (p){case 1:var x=2;return x;case 2:var x=4;return x;}): Unhandled node
+Language/13_Statements/09_Switch_A06_t02: Crash # (switch (2){case 1:var x=2;break;case 2:x++ ;}): Unhandled node
+Language/13_Statements/09_Switch_A07_t01: Crash # Unhandled node
+Language/13_Statements/09_Switch_A07_t02: Crash # Unhandled node
+Language/13_Statements/09_Switch_A08_t01: Crash # Unhandled node
+Language/13_Statements/09_Switch_A08_t02: Crash # (switch (value){case 1:case 2:result=1;case 3:case 4:result=2;break;case 5:case 6:}): Unhandled node
+Language/13_Statements/09_Switch_A09_t01: Crash # (switch (false){case 0:case 1:}): Unhandled node
Language/13_Statements/09_Switch_A10_t01: Crash # (switch (1){case 0:false;case 1:true;break;}): Unhandled node
Language/13_Statements/09_Switch_A10_t02: Crash # (switch (1){case 0:false;break;case 1:true;}): Unhandled node
Language/13_Statements/09_Switch_A10_t03: Crash # (switch (1){case 0:false;break;default:true;}): Unhandled node
-Language/13_Statements/10_Rethrow_A01_t01: Crash # "on T" catch block
-Language/13_Statements/10_Rethrow_A01_t02: Crash # (try {f2();}on String catch (bad){Expect.fail("wrong handler");}): "on T" catch block
-Language/13_Statements/10_Rethrow_A01_t03: Crash # "on T" catch block
-Language/13_Statements/10_Rethrow_A01_t04: Crash # "on T" catch block
-Language/13_Statements/10_Rethrow_A01_t05: Crash # "on T" catch block
-Language/13_Statements/11_Return_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/11_Return_A02_t01: Crash # "on T" catch block
-Language/13_Statements/11_Return_A02_t02: Crash # (throw new ExpectException(message)): Unhandled node
-Language/13_Statements/11_Return_A02_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/11_Return_A03_t01: Crash # "on T" catch block
-Language/13_Statements/11_Return_A03_t02: Crash # "on T" catch block
-Language/13_Statements/11_Return_A04_t01: Crash # "on T" catch block
-Language/13_Statements/11_Return_A07_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/13_Statements/11_Return_A07_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/13_Statements/11_Try_A01_t01: Crash # (try {throw "";}on int catch (ok){}catch (ok){}finally {}): "on T" catch block
-Language/13_Statements/11_Try_A01_t14: Crash # (throw "foo"): Unhandled node
-Language/13_Statements/11_Try_A02_t01: Crash # "on T" catch block
-Language/13_Statements/11_Try_A02_t03: Crash # (try {throw new T2();}on T1 catch (p1,st){success=true;}): "on T" catch block
-Language/13_Statements/11_Try_A02_t04: Crash # "on T" catch block
-Language/13_Statements/11_Try_A03_t01: Crash # "on T" catch block
-Language/13_Statements/11_Try_A03_t02: Crash # "on T" catch block
-Language/13_Statements/11_Try_A03_t03: Crash # "on T" catch block
-Language/13_Statements/11_Try_A03_t04: Crash # "on T" catch block
-Language/13_Statements/11_Try_A04_t01: Crash # "on T" catch block
-Language/13_Statements/11_Try_A04_t03: Crash # (try {throw new T2();}on T1 catch (p1){success=true;}): "on T" catch block
-Language/13_Statements/11_Try_A04_t04: Crash # "on T" catch block
-Language/13_Statements/11_Try_A05_t01: Crash # (throw new T2()): Unhandled node
-Language/13_Statements/11_Try_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/13_Statements/11_Try_A07_t01: Crash # "on T" catch block
-Language/13_Statements/11_Try_A07_t02: Crash # "on T" catch block
-Language/13_Statements/11_Try_A07_t03: Crash # "on T" catch block
-Language/13_Statements/11_Try_A08_t01: Crash # "on T" catch block
-Language/13_Statements/11_Try_A09_t01: Crash # not exactly one catch block
-Language/13_Statements/11_Try_A10_t01: Crash # "on T" catch block
-Language/13_Statements/11_Try_A11_t01: Crash # "on T" catch block
-Language/13_Statements/11_Try_A11_t02: Crash # "on T" catch block
-Language/13_Statements/11_Try_A11_t03: Crash # "on T" catch block
-Language/13_Statements/11_Try_A11_t04: Crash # "on T" catch block
-Language/13_Statements/11_Try_A12_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+Language/13_Statements/11_Return_A02_t02: Crash # (try {return 1;}finally {flag=true;}): try/finally
+Language/13_Statements/11_Return_A02_t03: Crash # (try {return 1;}finally {return 2;}): try/finally
+Language/13_Statements/11_Try_A01_t01: Crash # (try {throw "";}on int catch (ok){}catch (ok){}finally {}): try/finally
+Language/13_Statements/11_Try_A03_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Unavailable.
+Language/13_Statements/11_Try_A03_t02: Crash # Instance of 'TypeOperator': type check unimplemented for Unavailable.
+Language/13_Statements/11_Try_A03_t03: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+Language/13_Statements/11_Try_A03_t04: Crash # unsupported element kind: error:field
+Language/13_Statements/11_Try_A07_t02: Crash # (try {throw ex;}on int catch (i){}on bool catch (b){}finally {isFinallyExecuted=true;}): try/finally
+Language/13_Statements/11_Try_A08_t01: Crash # try/finally
+Language/13_Statements/11_Try_A09_t01: Crash # try/finally
+Language/13_Statements/11_Try_A10_t01: Crash # try/finally
+Language/13_Statements/11_Try_A11_t01: Crash # try/finally
+Language/13_Statements/11_Try_A11_t02: Crash # try/finally
+Language/13_Statements/11_Try_A11_t03: Crash # (try {throw 42;}finally {return true;}): try/finally
+Language/13_Statements/11_Try_A11_t04: Crash # (try {throw 42;}finally {throw true;}): try/finally
+Language/13_Statements/11_Try_A12_t01: Crash # try/finally
Language/13_Statements/12_Labels_A01_t01: Crash # (switch (1){K:case 2:L:case 1:break;case 0:M:default:N:var x=0;}): Unhandled node
Language/13_Statements/12_Labels_A03_t04: Crash # (switch (i){L:case 0:flag=true;break;case 2:continue L;}): Unhandled node
Language/13_Statements/12_Labels_A03_t06: Crash # (switch (1){Label:case 1:break;default:break;}): Unhandled node
-Language/13_Statements/13_Break_A03_t01: Crash # not exactly one catch block
-Language/13_Statements/13_Break_A03_t02: Crash # "on T" catch block
-Language/13_Statements/13_Break_A03_t03: Crash # not exactly one catch block
-Language/13_Statements/13_Break_A03_t04: Crash # not exactly one catch block
+Language/13_Statements/13_Break_A03_t01: Crash # try/finally
+Language/13_Statements/13_Break_A03_t02: Crash # try/finally
+Language/13_Statements/13_Break_A03_t03: Crash # try/finally
+Language/13_Statements/13_Break_A03_t04: Crash # try/finally
Language/13_Statements/13_Break_A03_t05: Crash # (switch (1){case 0:break;case 1:break L;}): Unhandled node
-Language/13_Statements/13_Break_A03_t06: Crash # not exactly one catch block
+Language/13_Statements/13_Break_A03_t06: Crash # try/finally
Language/13_Statements/13_Break_A03_t07: Crash # Unhandled node
-Language/13_Statements/13_Break_A03_t08: Crash # (try {try {break;}finally {order.add(2);}}finally {order.add(1);}): not exactly one catch block
-Language/13_Statements/13_Break_A03_t09: Crash # not exactly one catch block
+Language/13_Statements/13_Break_A03_t08: Crash # (try {try {break;}finally {order.add(2);}}finally {order.add(1);}): try/finally
+Language/13_Statements/13_Break_A03_t09: Crash # try/finally
Language/13_Statements/14_Continue_A02_t12: Crash # (switch (2){L:case 1:flag=true;break;case 2:continue L;}): Unhandled node
Language/13_Statements/14_Continue_A02_t13: Crash # (switch (2){case 2:continue L;L:case 1:flag=true;}): Unhandled node
-Language/13_Statements/14_Continue_A03_t01: Crash # not exactly one catch block
-Language/13_Statements/14_Continue_A03_t02: Crash # not exactly one catch block
-Language/13_Statements/14_Continue_A03_t03: Crash # not exactly one catch block
-Language/13_Statements/14_Continue_A03_t04: Crash # not exactly one catch block
+Language/13_Statements/14_Continue_A03_t01: Crash # try/finally
+Language/13_Statements/14_Continue_A03_t02: Crash # try/finally
+Language/13_Statements/14_Continue_A03_t03: Crash # try/finally
+Language/13_Statements/14_Continue_A03_t04: Crash # try/finally
Language/13_Statements/14_Continue_A03_t05: Crash # Unhandled node
-Language/13_Statements/14_Continue_A03_t06: Crash # "on T" catch block
-Language/13_Statements/14_Continue_A03_t07: Crash # "on T" catch block
-Language/13_Statements/15_Assert_A02_t01: Crash # (try {var i=1;String s=i;return false;}on TypeError catch (e){return true;}): "on T" catch block
-Language/13_Statements/15_Assert_A03_t01: Crash # "on T" catch block
-Language/13_Statements/15_Assert_A03_t02: Crash # "on T" catch block
-Language/13_Statements/15_Assert_A03_t03: Crash # "on T" catch block
-Language/13_Statements/15_Assert_A03_t04: Crash # "on T" catch block
-Language/13_Statements/15_Assert_A03_t05: Crash # "on T" catch block
-Language/13_Statements/15_Assert_A03_t06: Crash # "on T" catch block
-Language/13_Statements/15_Assert_A03_t08: Crash # (throw new ExpectException(message)): Unhandled node
-Language/13_Statements/15_Assert_A03_t09: Crash # "on T" catch block
-Language/13_Statements/15_Assert_A04_t02: Crash # "on T" catch block
-Language/13_Statements/15_Assert_A04_t03: Crash # "on T" catch block
-Language/13_Statements/15_Assert_A04_t04: Crash # "on T" catch block
-Language/13_Statements/15_Assert_A04_t05: Crash # "on T" catch block
-Language/13_Statements/15_Assert_A04_t06: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/13_Libraries_and_Scripts_A05_t01: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/13_Libraries_and_Scripts_A05_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/13_Libraries_and_Scripts_A05_t03: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/13_Libraries_and_Scripts_A05_t04: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/13_Libraries_and_Scripts_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A01_t09: Crash # (someVar=0): Error expression `someVar=0` unhandled.
-Language/14_Libraries_and_Scripts/1_Imports_A01_t18: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A01_t19: Crash # (someVar=0): Error expression `someVar=0` unhandled.
-Language/14_Libraries_and_Scripts/1_Imports_A01_t32: Crash # (someVar=0): Error expression `someVar=0` unhandled.
-Language/14_Libraries_and_Scripts/1_Imports_A01_t39: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A01_t40: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A01_t41: Crash # (someVar=0): Error expression `someVar=0` unhandled.
-Language/14_Libraries_and_Scripts/1_Imports_A01_t43: Crash # (someVar=0): Error expression `someVar=0` unhandled.
-Language/14_Libraries_and_Scripts/1_Imports_A01_t49: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A01_t51: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/1_Imports_A01_t52: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/1_Imports_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t03: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/1_Imports_A02_t04: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/1_Imports_A02_t05: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/1_Imports_A02_t06: Crash # cannot compile methods that need interceptor calling convention.
-Language/14_Libraries_and_Scripts/1_Imports_A02_t09: Crash # (throw new ExpectException(message)): Unhandled node
-Language/14_Libraries_and_Scripts/1_Imports_A02_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t13: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/1_Imports_A02_t14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t15: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t16: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/1_Imports_A02_t17: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/1_Imports_A02_t18: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t19: Crash # (try {new F();Expect.fail("runtime error expected");}on Error catch (ok){}): "on T" catch block
-Language/14_Libraries_and_Scripts/1_Imports_A02_t20: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t21: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t22: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t23: Crash # (prefix.foo): Error expression `prefix.foo` unhandled.
-Language/14_Libraries_and_Scripts/1_Imports_A02_t24: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t25: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t26: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t27: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A02_t28: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A03_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A03_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A03_t22: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A03_t24: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A03_t25: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A03_t31: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A03_t44: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A03_t45: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A03_t64: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A03_t65: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A06_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A07_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A07_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/1_Imports_A07_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/2_Exports_A01_t01: Crash # (foo): Error expression `foo` unhandled.
-Language/14_Libraries_and_Scripts/2_Exports_A01_t02: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/2_Exports_A01_t03: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/2_Exports_A01_t04: Crash # (foo): Error expression `foo` unhandled.
-Language/14_Libraries_and_Scripts/2_Exports_A01_t05: Crash # (foo): Error expression `foo` unhandled.
-Language/14_Libraries_and_Scripts/2_Exports_A01_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/2_Exports_A01_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/2_Exports_A01_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/2_Exports_A01_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/2_Exports_A01_t12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/2_Exports_A01_t13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/2_Exports_A01_t14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/2_Exports_A01_t17: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/2_Exports_A03_t01: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/2_Exports_A03_t02: Crash # "on T" catch block
-Language/14_Libraries_and_Scripts/2_Exports_A04_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/2_Exports_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/2_Exports_A06_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/2_Exports_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/3_Parts_A02_t03: Crash # Please triage this failure.
-Language/14_Libraries_and_Scripts/3_Parts_A02_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/3_Parts_A03_t01: Crash # Please triage this failure.
-Language/14_Libraries_and_Scripts/3_Parts_A03_t03: Crash # (foo): Error expression `foo` unhandled.
-Language/14_Libraries_and_Scripts/3_Parts_A03_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/3_Parts_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/4_Scripts_A01_t17: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/14_Libraries_and_Scripts/4_Scripts_A02_t16: Crash # (g()): Error expression `g()` unhandled.
-Language/15_Types/1_Static_Types_A03_t01: Crash # "on T" catch block
-Language/15_Types/1_Static_Types_A03_t02: Crash # "on T" catch block
-Language/15_Types/1_Static_Types_A03_t03: Crash # "on T" catch block
-Language/15_Types/1_Static_Types_A03_t04: Crash # "on T" catch block
-Language/15_Types/2_Dynamic_Type_System_A01_t01: Crash # "on T" catch block
-Language/15_Types/2_Dynamic_Type_System_A01_t02: Crash # "on T" catch block
-Language/15_Types/3_Type_Declarations/1_Typedef_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/3_Type_Declarations/1_Typedef_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/3_Type_Declarations/1_Typedef_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/3_Type_Declarations/1_Typedef_A02_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/3_Type_Declarations/1_Typedef_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/3_Type_Declarations/1_Typedef_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/3_Type_Declarations/1_Typedef_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/3_Type_Declarations/1_Typedef_A07_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/3_Type_Declarations/1_Typedef_A07_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/3_Type_Declarations/1_Typedef_A07_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A05_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A05_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A05_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A06_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A07_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A08_t03: Crash # "on T" catch block
-Language/15_Types/4_Interface_Types_A08_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A08_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A08_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A09_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A10_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A10_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A10_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A10_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A10_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A10_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A10_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A10_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A11_t02: Timeout # Please triage this failure.
-Language/15_Types/4_Interface_Types_A11_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A11_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A12_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A12_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A12_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A12_t12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A12_t13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A12_t14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A12_t16: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A12_t18: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/4_Interface_Types_A12_t19: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A01_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A01_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A01_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A01_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A02_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A02_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A02_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A02_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A02_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A02_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A02_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A02_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A02_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A02_t12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A03_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A03_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A03_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A03_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A03_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A03_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A03_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A03_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A03_t12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A03_t13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/15_Types/5_Function_Types_A05_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A05_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A05_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A05_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/5_Function_Types_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/6_Type_dynamic_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/6_Type_dynamic_A03_t01: Crash # "on T" catch block
-Language/15_Types/6_Type_dynamic_A04_t01: Crash # "on T" catch block
-Language/15_Types/6_Type_dynamic_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Language/15_Types/7_Type_Void_A01_t15: Crash # (foo(1)): Error expression `foo(1)` unhandled.
-Language/15_Types/7_Type_Void_A04_t02: Crash # "on T" catch block
-Language/15_Types/7_Type_Void_A04_t03: Crash # "on T" catch block
-Language/15_Types/7_Type_Void_A04_t04: Crash # "on T" catch block
-Language/15_Types/7_Type_Void_A04_t05: Crash # "on T" catch block
-Language/15_Types/8_Parameterized_Types_A03_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/15_Types/8_Parameterized_Types_A03_t07: Crash # "on T" catch block
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A01_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A02_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A03_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A04_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A05_t08: Crash # (f()): Error expression `f()` unhandled.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A06_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A07_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A08_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A09_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A10_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A11_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A12_t08: Crash # (f()): Error expression `f()` unhandled.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A13_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A14_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A15_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A16_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A17_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A18_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A19_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A20_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A21_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A22_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A23_t08: Crash # (f()): Error expression `f()` unhandled.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A24_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A25_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A26_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A27_t08: Crash # (f()): Error expression `f()` unhandled.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A28_t08: Crash # (f()): Error expression `f()` unhandled.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A29_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A30_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A31_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A32_t08: Crash # Please triage this failure.
-Language/16_Reference/1_Lexical_Rules/1_Reserved_Words_A40_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules/2_Comments_A01_t05: Crash # (throw new ExpectException(message)): Unhandled node
-Language/16_Reference/1_Lexical_Rules/2_Comments_A01_t06: Crash # (try {foo(1,0);Expect.fail("");}on Exception catch (e){}): "on T" catch block
-Language/16_Reference/1_Lexical_Rules/2_Comments_A01_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules/2_Comments_A01_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules/2_Comments_A01_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules/2_Comments_A01_t11: Crash # (try {foo(1,0);Expect.fail("");}on Exception catch (e){}): "on T" catch block
-Language/16_Reference/1_Lexical_Rules/2_Comments_A02_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules/2_Comments_A02_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules/2_Comments_A02_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules/2_Comments_A03_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules/2_Comments_A03_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules/2_Comments_A04_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/1_Lexical_Rules_A01_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/2_Operator_Precedence_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/2_Operator_Precedence_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/2_Operator_Precedence_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/2_Operator_Precedence_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/2_Operator_Precedence_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Language/16_Reference/2_Operator_Precedence_A01_t06: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/alignment/parse-align-items_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/alignment/parse-align-self_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/alignment/parse-justify-self_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/animation/request-animation-frame-callback-id_t01: Crash # (throw new ExpectException(message)): Unhandled node
+Language/13_Statements/14_Continue_A03_t06: Crash # try/finally
+Language/13_Statements/14_Continue_A03_t07: Crash # try/finally
+Language/14_Libraries_and_Scripts/13_Libraries_and_Scripts_A05_t02: Crash # Instance of 'TypeOperator': type check unimplemented for _td.
+Language/14_Libraries_and_Scripts/13_Libraries_and_Scripts_A06_t01: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A01_t39: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A01_t40: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A01_t49: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t01: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t02: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t09: Crash # (bar): handleStaticFunctionGet: function(bar)
+Language/14_Libraries_and_Scripts/1_Imports_A02_t11: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t14: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t16: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t17: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t18: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t20: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t21: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t22: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t26: Crash # Instance of 'TypeOperator': type check unimplemented for prefix.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t27: Crash # Instance of 'TypeOperator': type check unimplemented for bar.
+Language/14_Libraries_and_Scripts/1_Imports_A02_t28: Crash # Instance of 'TypeOperator': type check unimplemented for bar.
+Language/14_Libraries_and_Scripts/1_Imports_A03_t02: Crash # Instance of 'TypeOperator': type check unimplemented for foo.
+Language/14_Libraries_and_Scripts/1_Imports_A03_t04: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/14_Libraries_and_Scripts/1_Imports_A03_t05: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/14_Libraries_and_Scripts/1_Imports_A03_t22: Crash # Instance of 'TypeOperator': type check unimplemented for foo.
+Language/14_Libraries_and_Scripts/1_Imports_A03_t24: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/14_Libraries_and_Scripts/1_Imports_A03_t25: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/14_Libraries_and_Scripts/1_Imports_A03_t31: Crash # Instance of 'TypeOperator': type check unimplemented for foo.
+Language/14_Libraries_and_Scripts/1_Imports_A03_t44: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/14_Libraries_and_Scripts/1_Imports_A03_t45: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/14_Libraries_and_Scripts/1_Imports_A03_t64: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/14_Libraries_and_Scripts/1_Imports_A03_t65: Crash # Instance of 'TypeOperator': type casts not implemented.
+Language/14_Libraries_and_Scripts/1_Imports_A06_t01: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/1_Imports_A06_t02: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/2_Exports_A03_t01: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/2_Exports_A03_t02: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/2_Exports_A04_t03: Crash # Instance of 'TypeOperator': type check unimplemented for foo.
+Language/14_Libraries_and_Scripts/2_Exports_A06_t02: Crash # Instance of 'TypeOperator': type check unimplemented for foo.
+Language/14_Libraries_and_Scripts/2_Exports_A08_t01: RuntimeError # Please triage this failure.
+Language/14_Libraries_and_Scripts/3_Parts_A02_t03: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/14_Libraries_and_Scripts/3_Parts_A02_t04: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/14_Libraries_and_Scripts/3_Parts_A03_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/14_Libraries_and_Scripts/3_Parts_A03_t11: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/14_Libraries_and_Scripts/3_Parts_A04_t01: RuntimeError # Please triage this failure.
+Language/15_Types/1_Static_Types_A03_t01: Crash # Instance of 'TypeOperator': type check unimplemented for UnknownType.
+Language/15_Types/3_Type_Declarations/1_Typedef_A01_t03: Crash # Instance of 'TypeOperator': type check unimplemented for f.
+Language/15_Types/3_Type_Declarations/1_Typedef_A02_t01: Crash # (f): handleStaticFunctionGet: function(f)
+Language/15_Types/3_Type_Declarations/1_Typedef_A02_t02: Crash # (f): handleStaticFunctionGet: function(f)
+Language/15_Types/3_Type_Declarations/1_Typedef_A02_t03: Crash # (f): handleStaticFunctionGet: function(f)
+Language/15_Types/3_Type_Declarations/1_Typedef_A03_t01: Crash # (ifunc): handleStaticFunctionGet: function(ifunc)
+Language/15_Types/3_Type_Declarations/1_Typedef_A04_t01: Crash # Instance of 'TypeOperator': type check unimplemented for f1.
+Language/15_Types/3_Type_Declarations/1_Typedef_A04_t02: Crash # Instance of 'TypeOperator': type check unimplemented for f1.
+Language/15_Types/3_Type_Declarations/1_Typedef_A07_t05: Crash # Instance of 'TypeOperator': type check unimplemented for f.
+Language/15_Types/3_Type_Declarations/1_Typedef_A07_t06: Crash # Instance of 'TypeOperator': type check unimplemented for f.
+Language/15_Types/3_Type_Declarations/1_Typedef_A07_t07: Crash # Instance of 'TypeOperator': type check unimplemented for f.
+Language/15_Types/4_Interface_Types_A05_t02: Crash # Instance of 'TypeOperator': type check unimplemented for A.
+Language/15_Types/4_Interface_Types_A05_t03: Crash # Instance of 'TypeOperator': type check unimplemented for A.
+Language/15_Types/4_Interface_Types_A05_t04: Crash # Please triage this failure.
+Language/15_Types/4_Interface_Types_A06_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List<double>.
+Language/15_Types/4_Interface_Types_A07_t01: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/4_Interface_Types_A07_t02: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+Language/15_Types/4_Interface_Types_A08_t01: Crash # Instance of 'TypeOperator': type check unimplemented for S.
+Language/15_Types/4_Interface_Types_A08_t03: Crash # (f01): handleStaticFunctionGet: function(f01)
+Language/15_Types/4_Interface_Types_A08_t04: Crash # Instance of 'TypeOperator': type check unimplemented for G.
+Language/15_Types/4_Interface_Types_A08_t05: Crash # Instance of 'TypeOperator': type check unimplemented for G.
+Language/15_Types/4_Interface_Types_A08_t06: Crash # Instance of 'TypeOperator': type check unimplemented for IManyArgs<int, G, G, G, double>.
+Language/15_Types/4_Interface_Types_A10_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/15_Types/4_Interface_Types_A10_t02: Crash # Instance of 'TypeOperator': type check unimplemented for Checker_Object<Object>.
+Language/15_Types/4_Interface_Types_A10_t03: Crash # Instance of 'TypeOperator': type check unimplemented for Checker_I<I>.
+Language/15_Types/4_Interface_Types_A10_t04: Crash # Please triage this failure.
+Language/15_Types/4_Interface_Types_A10_t06: Crash # Please triage this failure.
+Language/15_Types/4_Interface_Types_A10_t07: Crash # Please triage this failure.
+Language/15_Types/4_Interface_Types_A10_t08: Crash # Please triage this failure.
+Language/15_Types/4_Interface_Types_A10_t09: Crash # Please triage this failure.
+Language/15_Types/4_Interface_Types_A11_t03: Crash # Instance of 'TypeOperator': type check unimplemented for I.
+Language/15_Types/4_Interface_Types_A11_t04: Crash # Instance of 'TypeOperator': type check unimplemented for S<int>.
+Language/15_Types/4_Interface_Types_A12_t09: Crash # Instance of 'TypeOperator': type check unimplemented for List<String>.
+Language/15_Types/4_Interface_Types_A12_t10: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/15_Types/4_Interface_Types_A12_t12: Crash # Instance of 'TypeOperator': type check unimplemented for G<B, B, B, B>.
+Language/15_Types/4_Interface_Types_A12_t13: Crash # Instance of 'TypeOperator': type check unimplemented for G<C>.
+Language/15_Types/4_Interface_Types_A12_t14: Crash # Instance of 'TypeOperator': type check unimplemented for A<double>.
+Language/15_Types/4_Interface_Types_A12_t16: Crash # Instance of 'TypeOperator': type check unimplemented for A<int, int, double, int>.
+Language/15_Types/4_Interface_Types_A12_t18: Crash # Instance of 'TypeOperator': type check unimplemented for F1.
+Language/15_Types/4_Interface_Types_A12_t19: Crash # (f): handleStaticFunctionGet: function(f)
+Language/15_Types/5_Function_Types_A01_t01: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A01_t03: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A01_t04: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A01_t05: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A01_t06: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A01_t07: Crash # Instance of 'TypeOperator': type check unimplemented for f.
+Language/15_Types/5_Function_Types_A01_t08: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A01_t09: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A01_t11: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A02_t02: Crash # Instance of 'TypeOperator': type check unimplemented for classesFunc.
+Language/15_Types/5_Function_Types_A02_t03: Crash # Instance of 'TypeOperator': type check unimplemented for classesFunc.
+Language/15_Types/5_Function_Types_A02_t04: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A02_t05: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A02_t06: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A02_t07: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A02_t08: Crash # Instance of 'TypeOperator': type check unimplemented for t2.
+Language/15_Types/5_Function_Types_A02_t09: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A02_t10: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A02_t11: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A02_t12: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A03_t01: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A03_t02: Crash # Instance of 'TypeOperator': type check unimplemented for classesFunc.
+Language/15_Types/5_Function_Types_A03_t03: Crash # Instance of 'TypeOperator': type check unimplemented for classesFunc.
+Language/15_Types/5_Function_Types_A03_t04: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A03_t06: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A03_t07: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A03_t08: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A03_t09: Crash # Instance of 'TypeOperator': type check unimplemented for t1.
+Language/15_Types/5_Function_Types_A03_t10: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A03_t11: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A03_t12: Crash # Instance of 'TypeOperator': type check unimplemented for classesFunc.
+Language/15_Types/5_Function_Types_A03_t13: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A05_t01: Crash # (f1): handleStaticFunctionGet: function(f1)
+Language/15_Types/5_Function_Types_A05_t02: Crash # (C.f1s): handleStaticFunctionGet: function(C#f1s)
+Language/15_Types/5_Function_Types_A05_t05: Crash # (tlf1): handleStaticFunctionGet: function(tlf1)
+Language/15_Types/5_Function_Types_A06_t01: Crash # Instance of 'TypeOperator': type check unimplemented for f.
+Language/15_Types/6_Type_dynamic_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for S.
+Language/15_Types/7_Type_Void_A04_t05: Crash # (f): handleStaticFunctionGet: function(f)
+Language/15_Types/8_Parameterized_Types_A03_t06: Crash # Instance of 'TypeOperator': type check unimplemented for T1.
+Language/16_Reference/1_Lexical_Rules/2_Comments_A02_t10: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/16_Reference/1_Lexical_Rules_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/16_Reference/1_Lexical_Rules_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/16_Reference/1_Lexical_Rules_A01_t03: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/16_Reference/1_Lexical_Rules_A01_t04: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/16_Reference/1_Lexical_Rules_A01_t05: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/16_Reference/1_Lexical_Rules_A01_t06: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Language/16_Reference/1_Lexical_Rules_A01_t10: Crash # unsupported element kind: characters:field
LayoutTests/fast/animation/request-animation-frame-cancel2_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/animation/request-animation-frame-cancel_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/animation/request-animation-frame-missing-arguments_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/animation/request-animation-frame-prefix_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/animation/request-animation-frame-timestamps-advance_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/animation/request-animation-frame-timestamps_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/animation/request-animation-frame-timestamps_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/animation/request-animation-frame-within-callback_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/backgrounds/001_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/backgrounds/animated-gif-as-background_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/backgrounds/background-position-parsing-2_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/backgrounds/background-repeat-computed-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/backgrounds/composite-highlight-is-invalid_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/backgrounds/mask-box-image-width_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/backgrounds/multiple-backgrounds-assert_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/backgrounds/multiple-backgrounds-computed-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/backgrounds/multiple-backgrounds-initial-values_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/backgrounds/repeat/parsing-background-repeat_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/borders/border-color-visited_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/borders/border-image-width-negative_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/borders/border-image-width-numbers-computed-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/borders/border-radius-child_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/borders/border-width-percent_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/box-shadow/box-shadow-parsing-invalid_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/box-sizing/css-table-with-box-sizing_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/box-sizing/table-cell_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/2d.composite.globalAlpha.fillPath_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/2d.fillText.gradient_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/backgrounds/multiple-backgrounds-computed-style_t01: Crash # Unhandled node
+LayoutTests/fast/canvas/2d.composite.globalAlpha.fillPath_t01: Crash # (math.max): handleStaticFunctionGet: function(max)
LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.gradient_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.negative_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.veryLarge_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.verySmall_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/alpha_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-2d-imageData-create-nonfinite_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-alphaImageData-behavior_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-arc-360-winding_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-arc-connecting-line_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas_arc_largeangles_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-arc-negative-radius_t01: Crash # (new Path()): Error expression `new Path()` unhandled.
-LayoutTests/fast/canvas/canvas-arc-zero-lineto_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/canvas/DrawImageSinglePixelStretch_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/canvas-as-image-incremental-repaint_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/canvas-before-css_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/canvas-bezier-same-endpoint_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-blend-image_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-blending-clipping_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-blending-color-over-color_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-blending-color-over-gradient_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/canvas/canvas-blending-clipping_t01: Crash # unsupported element kind: nonSeparateBlendModes:field
+LayoutTests/fast/canvas/canvas-blending-color-over-color_t01: Crash # unsupported element kind: nonSeparateBlendModes:field
+LayoutTests/fast/canvas/canvas-blending-color-over-gradient_t01: Crash # unsupported element kind: nonSeparateBlendModes:field
LayoutTests/fast/canvas/canvas-blending-color-over-image_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/canvas-blending-color-over-pattern_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/canvas-blending-fill-style_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-blending-global-alpha_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-blending-gradient-over-color_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-blending-gradient-over-gradient_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/canvas/canvas-blending-fill-style_t01: Crash # unsupported element kind: nonSeparateBlendModes:field
+LayoutTests/fast/canvas/canvas-blending-global-alpha_t01: Crash # unsupported element kind: nonSeparateBlendModes:field
+LayoutTests/fast/canvas/canvas-blending-gradient-over-color_t01: Crash # unsupported element kind: nonSeparateBlendModes:field
+LayoutTests/fast/canvas/canvas-blending-gradient-over-gradient_t01: Crash # unsupported element kind: nonSeparateBlendModes:field
LayoutTests/fast/canvas/canvas-blending-gradient-over-image_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/canvas-blending-gradient-over-pattern_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/canvas-blending-image-over-color_t01: Crash # unsupported element kind: _completer:field
@@ -10799,386 +9794,119 @@
LayoutTests/fast/canvas/canvas-blending-pattern-over-gradient_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/canvas-blending-pattern-over-image_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/canvas-blending-pattern-over-pattern_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/canvas-blending-shadow_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-blending-text_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-blending-transforms_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-blend-solid_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-clearRect_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-clip-rule_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-closePath-single-point_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-color-clamping_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/canvas/canvas-blending-shadow_t01: Crash # unsupported element kind: nonSeparateBlendModes:field
+LayoutTests/fast/canvas/canvas-blending-text_t01: Crash # unsupported element kind: nonSeparateBlendModes:field
+LayoutTests/fast/canvas/canvas-blending-transforms_t01: Crash # unsupported element kind: nonSeparateBlendModes:field
LayoutTests/fast/canvas/canvas-composite-alpha_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/canvas-composite-canvas_t01: Crash # unsupported element kind: compositeTypes:field
LayoutTests/fast/canvas/canvas-composite-image_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/canvas-composite-stroke-alpha_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/canvas-composite-text-alpha_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/canvas-copyPixels_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/canvas/canvas-css-crazy_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/canvas-currentColor_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-currentTransform_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-drawImage-incomplete_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-drawImage-scaled-copy-to-self_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-ellipse-360-winding_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-ellipse-negative-radius_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-ellipse_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-ellipse-zero-lineto_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-empty-image-pattern_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-fillRect_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-fillRect-zeroSizeGradient_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-fill-rule_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-fillStyle-no-quirks-parsing_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-LayoutTests/fast/canvas/canvas-fillText-invalid-maxWidth_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-fillText-zeroSizeGradient_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-fill-zeroSizeGradient_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-font-consistency_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-font-ex-units-crash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-getContext-invalid_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-getImageData-invalid_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-getImageData-negative-source_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-getImageData-rounding_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-getImageData_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-gradient-without-path_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/canvas/canvas-imageSmoothingEnabled-repaint_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/canvas-imageSmoothingEnabled_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-invalid-fillstyle_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-invalid-strokestyle_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-large-dimensions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-lineDash-input-sequence_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-lineDash-invalid_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-lineDash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-lineWidth-intact-after-strokeRect_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-lineWidth_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-longlived-context_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/canvas/canvas-lineDash-invalid_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/canvas/canvas-lineDash_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/canvas/canvas-longlived-context_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/canvas/canvas-lose-restore-googol-size_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/canvas/canvas-lose-restore-max-int-size_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/canvas/canvas-modify-emptyPath_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-pattern-behaviour_t01: Crash # Please triage this failure.
-LayoutTests/fast/canvas/canvas-pattern-modify_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-pattern-transform_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-putImageData_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-quadratic-same-endpoint_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-radial-gradient-spreadMethod_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-resetTransform_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/canvas/canvas-modify-emptyPath_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/canvas/canvas-pattern-behaviour_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/canvas/canvas-pattern-modify_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/canvas/canvas-putImageData_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/canvas/canvas-resize-after-paint_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/canvas-save-restore_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-save-restore-with-path_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/canvas/canvas-save-restore-with-path_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/canvas/canvas-scale-drawImage-shadow_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/canvas-scale-fillPath-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-scale-fillRect-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-scale-shadowBlur_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-scale-strokePath-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-set-properties-with-non-invertible-ctm_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-setTransform_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-skia-excessive-size_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-state-intact-after-putImageData_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-stroke-empty-fill_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-strokePath-alpha-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-strokePath-cap-join_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-strokePath-gradient-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-strokePath-shadow_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/canvas-strokeRect-alpha-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-strokeRect-gradient-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-strokeRect_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-strokeRect-zeroSizeGradient_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-strokeText-invalid-maxWidth_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-strokeText-strokes-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-strokeText-zeroSizeGradient_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-stroke-zeroSizeGradient_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-style-intact-after-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-to-canvas_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-toDataURL-case-insensitive-mimetype_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-transforms-fillRect-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-transparency-and-composite_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-with-illegal-args_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/canvas-with-incorrect-args_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/draw-custom-focus-ring_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/DrawImageSinglePixelStretch_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/canvas/canvas-strokePath-alpha-shadow_t01: Crash # (shouldBe): handleStaticFunctionGet: function(shouldBe)
+LayoutTests/fast/canvas/canvas-strokePath-gradient-shadow_t01: Crash # (shouldBe): handleStaticFunctionGet: function(shouldBe)
+LayoutTests/fast/canvas/canvas-strokeRect-alpha-shadow_t01: Crash # (shouldBe): handleStaticFunctionGet: function(shouldBe)
+LayoutTests/fast/canvas/canvas-strokeRect-gradient-shadow_t01: Crash # (shouldBe): handleStaticFunctionGet: function(shouldBe)
+LayoutTests/fast/canvas/canvas_arc_largeangles_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/canvas/drawImage-with-broken-image_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/drawImage-with-negative-source-destination_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/canvas/drawImage-with-valid-image_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/fallback-content_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/fillText-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/gradient-addColorStop-with-invalid-color_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/gradient-with-clip_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/linearGradient-infinite-values_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/pattern-with-transform_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/pointInPath_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/radialGradient-infinite-values_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/rgba-parsing_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/set-colors_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/canvas/gradient-with-clip_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/canvas/pattern-with-transform_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/canvas/setWidthResetAfterForcedRender_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/text-globalAlpha_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/toDataURL-noData_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/translate-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/array-bounds-clamping_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/attrib-location-length-limits_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/bad-arguments-test_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/buffer-bind-test_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/buffer-data-array-buffer_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/canvas/translate-text_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/canvas/webgl/WebGLContextEvent_t01: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+LayoutTests/fast/canvas/webgl/attrib-location-length-limits_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/bad-arguments-test_t01: Crash # (wtu.shouldGenerateGLError): handleStaticFunctionGet: function(shouldGenerateGLError)
LayoutTests/fast/canvas/webgl/canvas-2d-webgl-texture_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/canvas/webgl/canvas-resize-crash_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/canvas/webgl/canvas-test_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/webgl/canvas-zero-size_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/canvas/webgl/canvas-zero-size_t01: Crash # unsupported element kind: error:field
LayoutTests/fast/canvas/webgl/compressed-tex-image_t01: Crash # Please triage this failure.
-LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias-t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias-t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/canvas/webgl/context-destroyed-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/webgl/context-lost-restored_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/context-lost_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/copy-tex-image-and-sub-image-2d_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/canvas/webgl/context-lost-restored_t01: Crash # (wtu.shouldGenerateGLError): handleStaticFunctionGet: function(shouldGenerateGLError)
+LayoutTests/fast/canvas/webgl/context-lost_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/canvas/webgl/copy-tex-image-and-sub-image-2d_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/canvas/webgl/css-webkit-canvas-repaint_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/webgl/draw-arrays-out-of-bounds_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/draw-elements-out-of-bounds_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/drawingbuffer-test_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/canvas/webgl/draw-webgl-to-canvas-2d_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/canvas/webgl/error-reporting_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/canvas/webgl/drawingbuffer-test_t01: Crash # unsupported element kind: error:field
LayoutTests/fast/canvas/webgl/framebuffer-bindings-unaffected-on-resize_t01: Crash # unsupported element kind: requestAnimFrame:field
LayoutTests/fast/canvas/webgl/framebuffer-object-attachment_t01: Crash # Please triage this failure.
-LayoutTests/fast/canvas/webgl/framebuffer-test_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/functions-returning-strings_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/get-active-test_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/gl-bind-attrib-location-test_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/gl-enable-enum-test_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/gl-enum-tests_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/gl-get-calls_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/gl-getshadersource_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/gl-getstring_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/gl-object-get-calls_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/gl-pixelstorei_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/glsl-conformance_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/canvas/webgl/functions-returning-strings_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List<String>.
+LayoutTests/fast/canvas/webgl/gl-enable-enum-test_t01: Crash # unsupported element kind: desktopGL:field
+LayoutTests/fast/canvas/webgl/gl-enum-tests_t01: Crash # unsupported element kind: desktopGL:field
+LayoutTests/fast/canvas/webgl/gl-get-calls_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/canvas/webgl/gl-object-get-calls_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/canvas/webgl/gl-teximage_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/canvas/webgl/gl-uniformmatrix4fv_t01: Crash # Unhandled node
-LayoutTests/fast/canvas/webgl/gl-vertexattribpointer_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/gl-vertex-attrib_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/gl-vertex-attrib-zero-issues_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/incorrect-context-object-behaviour_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/index-validation-copies-indices_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/index-validation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/index-validation-verifies-too-many-indices_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/index-validation-with-resized-buffer_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/invalid-passed-params_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/is-object_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/null-object-behaviour_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/null-uniform-location_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/object-deletion-behaviour_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/oes-element-index-uint_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/oes-vertex-array-object_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/point-size_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/canvas/webgl/gl-vertex-attrib-zero-issues_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/glsl-conformance_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/index-validation_t01: Crash # (Math.max): handleStaticFunctionGet: function(max)
+LayoutTests/fast/canvas/webgl/invalid-passed-params_t01: Crash # unsupported element kind: desktopGL:field
+LayoutTests/fast/canvas/webgl/is-object_t01: Crash # (wtu.shouldGenerateGLError): handleStaticFunctionGet: function(shouldGenerateGLError)
+LayoutTests/fast/canvas/webgl/null-object-behaviour_t01: Crash # (wtu.shouldGenerateGLError): handleStaticFunctionGet: function(shouldGenerateGLError)
+LayoutTests/fast/canvas/webgl/object-deletion-behaviour_t01: Crash # (wtu.shouldGenerateGLError): handleStaticFunctionGet: function(shouldGenerateGLError)
+LayoutTests/fast/canvas/webgl/oes-element-index-uint_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/oes-vertex-array-object_t01: Crash # unsupported element kind: error:field
LayoutTests/fast/canvas/webgl/premultiplyalpha-test_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/webgl/program-test_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/canvas/webgl/read-pixels-pack-alignment_t01: Crash # Unhandled node
LayoutTests/fast/canvas/webgl/read-pixels-test_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/webgl/renderbuffer-initialization_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/renderer-and-vendor-strings_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/shader-precision-format_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/texImage2DImageDataTest_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-array-buffer-view_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas-rgb565_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas-rgba4444_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas-rgba5551_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data-rgb565_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data-rgba4444_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data-rgba5551_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgb565_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba4444_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba5551_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/canvas/webgl/renderbuffer-initialization_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-array-buffer-view_t01: Crash # Unhandled node
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas-rgb565_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas-rgba4444_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas-rgba5551_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data-rgb565_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data-rgba4444_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data-rgba5551_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgb565_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba4444_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba5551_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgb565_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba4444_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba5551_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/webgl/tex-image-and-uniform-binding-bugs_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/texImageTest_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/tex-image-webgl_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/tex-input-validation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/tex-sub-image-2d-bad-args_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/tex-sub-image-2d_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/tex-sub-image-cube-maps_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/texture-active-bind_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/texture-bindings-uneffected-on-resize_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/canvas/webgl/tex-image-webgl_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/tex-sub-image-2d_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/canvas/webgl/tex-sub-image-cube-maps_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/texture-bindings-uneffected-on-resize_t01: Crash # unsupported element kind: error:field
LayoutTests/fast/canvas/webgl/texture-color-profile_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/canvas/webgl/texture-complete_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/texture-npot_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/texture-transparent-pixels-initialized_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/triangle_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/uniform-location-length-limits_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/canvas/webgl/uniform-location_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/uninitialized-test_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/viewport-unchanged-upon-resize_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/canvas/webgl/texture-npot_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/texture-transparent-pixels-initialized_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/uniform-location-length-limits_t01: Crash # unsupported element kind: error:field
LayoutTests/fast/canvas/webgl/webgl-composite-modes-repaint_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/webgl/webgl-composite-modes_t01: Crash # (throw ("*** Error: unknown script element"+scriptId)): Unhandled node
-LayoutTests/fast/canvas/webgl/WebGLContextEvent_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/webgl-depth-texture_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/canvas/webgl/webgl-exceptions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/canvas/webgl/webgl-composite-modes_t01: Crash # unsupported element kind: error:field
+LayoutTests/fast/canvas/webgl/webgl-depth-texture_t01: Crash # unsupported element kind: error:field
LayoutTests/fast/canvas/webgl/webgl-large-texture_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/canvas/webgl/webgl-layer-update_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/webgl/webgl-specific_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/canvas/webgl/webgl-specific_t01: Crash # unsupported element kind: error:field
LayoutTests/fast/canvas/webgl/webgl-texture-binding-preserved_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/webgl/webgl-unprefixed-context-id_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/canvas/webgl/webgl-viewport-parameters-preserved_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/canvas/winding-enumeration_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/cookies/local-file-can-set-cookies_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css3-text/css3-text-align-last/getComputedStyle/getComputedStyle-text-align-last-inherited_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css3-text/css3-text-align-last/getComputedStyle/getComputedStyle-text-align-last_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-line_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-underline-position_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent-inherited_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css3-text/css3-text-justify/getComputedStyle/getComputedStyle-text-justify_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/add-remove-stylesheets-at-once-minimal-recalc-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/appearance-caps-lock-indicator_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/aspect-ratio-inheritance_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/aspect-ratio-parsing-tests_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/attribute-selector-begin-dynamic-no-elementstyle_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/attribute-selector-recursive-update-on-setAttribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/auto-min-size_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/background-clip-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/background-currentcolor_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/background-position-inherit_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/background-position-serialize_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/background-serialize_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/border-image-null-image-crash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/border-image-style-length_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/border-radius-property-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/border-shorthand-initialize-longhands_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/border-spacing-without-vertical-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/border-start-end_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/border-width-large_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/box-sizing-backwards-compat-prefix_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/box-sizing-border-box-dynamic-padding-border-update_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/css/button-height_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/cached-sheet-restore-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/case-sensitive-attr_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/checked-pseudo-selector_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/child-selector-implicit-tbody_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/collapsed-whitespace-reattach-in-style-recalc_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/comment-before-charset-external_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/comment-before-charset_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/computed-offset-with-zoom_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/content/content-none_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/content/content-normal_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/content/content-quotes-01_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/content/content-quotes-02_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/content/content-quotes-03_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/content/content-quotes-04_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/content/content-quotes-05_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/content/content-quotes-06_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/content-language-case-insensitivity_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/content-language-dynamically-added_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/content-language-dynamically-removed_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/content-language-mapped-to-webkit-locale_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/content-language-multiple_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/content-language-no-content_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/counters/asterisk-counter-update-after-layout-crash_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/css/counters/complex-before_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/counters/counter-before-selector-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/counters/counter-cssText_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/counters/counter-reparent-table-children-crash_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/css/counters/counter-reset-subtree-insert-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/counters/counter-ruby-text-cleared_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/counters/counter-traverse-object-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/crash-on-incomplete-not_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/css3-nth-space_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/css3-nth-tokens-script_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/css3-nth-tokens-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/css-escaped-identifier_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-LayoutTests/fast/css/css-keyframe-style-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/css-keyframe-unexpected-end_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/cssom-remove-shorthand-property_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/css-properties-case-insensitive_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/css-selector-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/cssText-cache_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/csstext-of-content-string_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/cssText-shorthand_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/cursor-parsing-image-set_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/cursor-parsing-quirks_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/cursor-parsing_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/deprecated-flexbox-auto-min-size_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/css/deprecated-flex-box-zero-width-intrinsic-max-width_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/device-aspect-ratio_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/dfn-default-font-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/display-inline-block-scrollbar_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/css/div_plus_nav_bug47971_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/draggable-region-parser_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/duplicate-property-in-rule-important_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/duplicate-property-in-rule_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/dynamic-class-backdrop-pseudo_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/dynamic-class-pseudo-elements_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/dynamic-pseudo-class_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/dynamic-style-attribute-query_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/empty-display-none_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/emptyStyleTag_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/ex-unit-with-no-x-height_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/first-letter-inline-flow-split-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/first-letter-inline-flow-split-table-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/first-letter-nested_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/first-line-parent-style-different_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/fixed-width-intrinsic-width-excludes-scrollbars_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/css/focus-display-block-inline_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/font-face-cache-bug_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/font-face-descending-unicode-range_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/font-face-font-family-descriptor_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/font-face-insert-link_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/font-face-multiple-ranges-for-unicode-range_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/fontface-properties_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/fontfaceset-download-error_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/fontfaceset-events_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/fontfaceset-loadingdone_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/font-face-svg-decoding-error_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/font-face-unicode-range-load_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/font-face-unicode-range-monospace_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/font-face-unicode-range-overlap-load_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/font-face-used-after-retired_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/font-family-builtins_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/font-family-initial-shorthand_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/font-family-trailing-bracket-gunk_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/font-property-priority_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/font-shorthand-from-longhands_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/font-shorthand-mix-inherit_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css-generated-content/block-after_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/css-generated-content/bug91547_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css-generated-content/details-before-after-content_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/css-generated-content/float-first-letter-siblings-convert-to-inline_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css-generated-content/hit-test-generated-content_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/css-generated-content/inline-splitting-with-after-float-crash_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css-generated-content/pseudo-animation-before-onload_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/css-generated-content/pseudo-animation-display_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/css-generated-content/pseudo-animation-display_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css-generated-content/pseudo-animation_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css-generated-content/pseudo-element-events_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css-generated-content/pseudo-transition-event_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css-generated-content/pseudo-transition_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/css-generated-content/summary-before-after-content_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/getComputedStyle/computed-style-border-image_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/computed-style-display-none_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/computed-style-font_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/computed-style-negative-top_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/computed-style-page-break-inside_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/computed-style-properties_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/computed-style-select-overflow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/computed-style-with-zoom_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/counterIncrement-without-counter_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/font-family-fallback-reset_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-box_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-image-slice_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-borderRadius-2_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-style-shorthand_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-column-rule_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-height_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-length-unit_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-outline-offset_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-zIndex-auto_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getPropertyValue-border_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getPropertyValue-clip_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getPropertyValue-column-rule_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getPropertyValue-columns_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getPropertyValue-webkit-margin-collapse_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/getPropertyValue-webkit-text-stroke_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/css-grid-layout/auto-content-resolution-rows_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/breadth-size-resolution-grid_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/calc-resolution-grid-item_t01: Crash # unsupported element kind: _completer:field
@@ -11188,7 +9916,7 @@
LayoutTests/fast/css-grid-layout/flex-content-resolution-rows_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/grid-auto-columns-rows-get-set_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/grid-auto-flow-get-set_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css-grid-layout/grid-auto-flow-update_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
+LayoutTests/fast/css-grid-layout/grid-auto-flow-update_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css-grid-layout/grid-container-change-explicit-grid-recompute-child_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css-grid-layout/grid-element-bad-cast-addchild_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/grid-element-border-grid-item_t01: Crash # unsupported element kind: _completer:field
@@ -11202,12 +9930,12 @@
LayoutTests/fast/css-grid-layout/grid-item-area-get-set_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/grid-item-bad-named-area-auto-placement_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/grid-item-bad-resolution-double-span_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css-grid-layout/grid-item-change-order-auto-flow_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
+LayoutTests/fast/css-grid-layout/grid-item-change-order-auto-flow_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css-grid-layout/grid-item-display_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows-horiz-bt_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows-vert-lr_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows-vert-rl_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/grid-item-margin-resolution_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/grid-item-order-auto-flow-resolution_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/grid-strict-ordering-crash_t01: Crash # unsupported element kind: _completer:field
@@ -11217,26 +9945,13 @@
LayoutTests/fast/css-grid-layout/minmax-fixed-logical-height-only_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/minmax-fixed-logical-width-only_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track-in-percent-grid_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track-update_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/css-grid-layout/percent-padding-margin-resolution-grid-item_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/percent-padding-margin-resolution-grid-item-update_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/css-grid-layout/percent-padding-margin-resolution-grid-item_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/percent-resolution-grid-item_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-grid-layout/place-cell-by-index_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/html-attr-case-sensitivity_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/id-or-class-before-stylesheet-strict_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/id-or-class-before-stylesheet_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/image-set-parsing-invalid_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/image-set-setting_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/implicit-attach-marking_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/important-js-override_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/inherited-properties-explicit_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/inherited-properties-rare-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/inherit-initial-shorthand-values_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/insertRule-font-face_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/insertRule-media_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/css-intrinsic-dimensions/css-tables_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css-intrinsic-dimensions/height-property-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-absolutes_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-blocks_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items_t01: Crash # unsupported element kind: _completer:field
@@ -11244,460 +9959,115 @@
LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-replaced-absolutes_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-intrinsic-dimensions/multicol_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css-intrinsic-dimensions/tables_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css-intrinsic-dimensions/width-property-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/css-intrinsic-dimensions/width-shrinks-avoid-floats_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/invalidation/clears-invalidation-whole-tree_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/detach-reattach-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/detach-reattach_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/dynamic-selector-list-pseudo_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/invalidation-set-with-adjacent-combinators_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/no-invalidation-set-local-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/shadow-host-toggle_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/style-update-with-added-stylesheet_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/targeted-attribute-style-invalidation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/targeted-class-any-pseudo_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/targeted-class-host-pseudo_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/targeted-class-id_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/targeted-class-shadow-combinator_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/targeted-class-style-invalidation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/targeted-class-type-selectors_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/targeted-id-style-invalidation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalidation/toggle-style-inside-shadow-root_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalid-hex-color_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalid-not-with-pseudo-element_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/invalid-not-with-simple-selector-sequence_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/invalid-predefined-color_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/invalid-rule-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/large-number-round-trip_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/last-child-innerhtml_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/legacy-opacity-styles_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/css/attribute-selector-begin-dynamic-no-elementstyle_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/cached-sheet-restore-crash_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/comment-before-charset-external_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/comment-before-charset_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/content/content-none_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/content/content-normal_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/content/content-quotes-01_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/content/content-quotes-02_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/content/content-quotes-03_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/content/content-quotes-04_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/content/content-quotes-05_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/content/content-quotes-06_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/counters/asterisk-counter-update-after-layout-crash_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/css/counters/complex-before_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/css/counters/counter-before-selector-crash_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/counters/counter-reparent-table-children-crash_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/css/counters/counter-reset-subtree-insert-crash_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/counters/counter-ruby-text-cleared_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/counters/counter-traverse-object-crash_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/crash-on-incomplete-not_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/css-keyframe-style-crash_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/device-aspect-ratio_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/first-letter-inline-flow-split-crash_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/first-letter-inline-flow-split-table-crash_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/first-line-parent-style-different_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/css/focus-display-block-inline_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/font-face-cache-bug_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/font-face-insert-link_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/font-face-svg-decoding-error_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/font-face-unicode-range-load_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/css/font-face-unicode-range-overlap-load_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/font-face-used-after-retired_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/fontfaceset-download-error_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/fontfaceset-events_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/fontfaceset-loadingdone_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/implicit-attach-marking_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css/link-alternate-stylesheet-1_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css/link-alternate-stylesheet-2_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css/link-alternate-stylesheet-3_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css/link-alternate-stylesheet-4_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css/link-alternate-stylesheet-5_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css/link-disabled-attr-parser_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/list-item-text-align_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/many-spaces-before-charset_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/margin-start-end_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/MarqueeLayoutTest_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/max-device-aspect-ratio_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/max-height-and-max-width_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/max-width-none_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/media-rule-dyn_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/media-rule-no-whitespace_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/media-rule-screenDepthPerComponent_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/min-device-aspect-ratio_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/min-max-width_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/misplaced-charset_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/named-colors_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/css/max-device-aspect-ratio_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/css/media-rule-dyn_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/css/min-device-aspect-ratio_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css/nested-at-rules_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/nested-rule-parent-sheet_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/next-sibling-changed_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/nth-child-implied-step_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/nth-child-no-mutations_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/nth-child-n_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/nth-child-odd-case-insensitive_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/nth-child-unary-prefix_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/outline-currentcolor_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/outline-hidden-illegal-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/overflow-property_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/padding-no-renderer_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/padding-start-end_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parse-color-int-or-percent-crash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parsing-css-allowed-string-characters_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parsing-css-comment_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parsing-css-escapes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parsing-css-nonascii_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parsing-css-nth-child_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parsing-css-surrogate-pairs_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parsing-expr-error-recovery_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/parsing-font-variant-ligatures_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parsing-not-after-supports_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parsing-object-fit_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parsing-object-position_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parsing-text-rendering_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/parsing-unexpected-eof_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-LayoutTests/fast/css/parsing-webkit-font-smoothing_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/css/parsing-css-allowed-string-characters_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/css/parsing-css-comment_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/css/parsing-css-escapes_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/css/parsing-css-nonascii_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/css/parsing-css-nth-child_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/css/parsing-css-surrogate-pairs_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
LayoutTests/fast/css/percent-min-width-img-src-change_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css/percent-width-img-src-change_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/position-absolute-float_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/positioned-in-relative-position-inline-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/positioned-overflow-scroll_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/css/pseudo-any_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-default-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-default-002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-default-003_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-default-004_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-empty-display-none_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-empty-dynamic-empty_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/pseudo-escaped-parenthesis_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-in-range-invalid-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-in-range_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-invalid-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-invalid-002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-invalid-novalidate-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-not_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-out-of-range_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-required-optional-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-required-optional-002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-required-optional-003_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-required-optional-004_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-required-optional-005_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/pseudo-required-optional-006_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-required-optional-unapplied_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/css/positioned-in-relative-position-inline-crash_t01: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+LayoutTests/fast/css/pseudo-out-of-range_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
LayoutTests/fast/css/pseudo-target-indirect-sibling-001_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css/pseudo-target-indirect-sibling-002_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/css/pseudo-valid-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-valid-002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-valid-004_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-valid-007_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-valid-dynamic_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/pseudo-valid-unapplied_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/readonly-pseudoclass-opera-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/readonly-pseudoclass-opera-002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/readonly-pseudoclass-opera-003_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/readonly-pseudoclass-opera-004_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/readonly-pseudoclass-opera-005_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/readwrite-contenteditable-recalc_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/recalc-direct-adjacent-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/recalc-optgroup-inherit_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/relative-positioned-block-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/relative-position-replaced-in-table-display-crash_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/css/remove-attribute-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/remove-class-name_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/css/pseudo-valid-dynamic_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/css/readonly-pseudoclass-opera-005_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/css/relative-position-replaced-in-table-display-crash_t01: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+LayoutTests/fast/css/relative-positioned-block-crash_t01: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
LayoutTests/fast/css/remove-fixed-resizer-crash_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/css/rem-units-body_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/resize-value-compared_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/rgba-custom-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/selector-text-escape_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/css/shadow-current-color_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/shadow-dom-scope_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/css/sheet-collection-link_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css/sheet-title_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/css/shorthand-priority_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/shorthand-setProperty-important_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/shorthands-four-values_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/sibling-selectors-dynamic_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/sibling-selectors_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/css/space-before-charset-external_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/css/space-before-charset_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/sticky/parsing-position-sticky_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/css/sticky/remove-inline-sticky-crash_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css/sticky/remove-sticky-crash_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css/sticky/sticky-table-col-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/string-quote-binary_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/css/style-element-process-crash_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/css/style-scoped/style-scoped-in-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/style-scoped/style-scoped-nested_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/style-scoped/style-scoped-scoping-nodes-different-order_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/css/style-scoped/style-scoped-shadow-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/style-scoped/style-scoped-with-dom-operation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/style-scoped/style-scoped-with-important-rule_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/style-sharing-grand-parent-invalidate_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/style-sharing-inline-stylesheet_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/style-sharing-type-and-readonly_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/css/stylesheet-enable-first-alternate-link_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css/stylesheet-enable-first-alternate-on-load-link_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css/stylesheet-enable-first-alternate-on-load-sheet_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css/stylesheet-enable-second-alternate-link_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css/stylesheet-parentStyleSheet_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/css/test-setting-canvas-color_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/text-align-initial_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/text-align-webkit-match-parent-parse_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/text-align-webkit-match-parent_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/transform-origin-parsing_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/unicode-bidi-computed-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/url-with-multi-byte-unicode-escape_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/vertical-align-length-copy-bug_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/visibility-collapse-form-buttons_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/visited-link-hang_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/css/webkit-color-adjust_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/css/visited-link-hang_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
LayoutTests/fast/css/webkit-keyframes-crash_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/css/webkit-marquee-speed-unit-in-quirksmode_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/css/word-break-user-modify-allowed-values_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/zoom-in-length-round-trip_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/css/zoom-property-parsing_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/52776_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/allowed-children_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/anchor-origin_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/anchor-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/anchor-toString_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/anchor-without-content_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Attr/access-after-element-destruction_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Attr/change-id-via-attr-node-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Attr/direction-attribute-set-and-cleared_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/attribute-namespaces-get-set_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/background-shorthand-csstext_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/blur-contenteditable_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/boolean-attribute-reflection_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/capturing-event-listeners_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/characterdata-api-arguments_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/click-method-on-html-element_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/clone-contents-0-end-offset_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/clone-node-default-argument_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Comment/comment-constructor_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/comment-dom-node_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/comment-not-documentElement_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Comment/remove_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/computed-style-set-property_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/containerNode_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/createDocument_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/createDocumentType2_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/createDocumentType-ownerDocument_t01: Crash # (throw "${reason}: ${e}"): Unhandled node
-LayoutTests/fast/dom/createDocumentType_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/createElementNS-empty-namespace_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/createElementNS-namespace-errors_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/createElementNS_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/createElement_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/createElement-with-column_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/createElement-with-column_xml_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/css-cached-import-rule_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/css-delete-doc_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/css-inline-style-important_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/css-innerHTML_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/css-insert-import-rule_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/css-insert-import-rule-twice_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/css-mediarule-deleteRule-update_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/css-mediarule-functions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/css-mediarule-insertRule-update_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/css-mediarule-parentRule_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/css-rule-functions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/css-selectorText_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/css-set-property-exception_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/css-shorthand-common-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/css-shortHands_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/cssTarget-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/custom/attribute-changed-callback_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-LayoutTests/fast/dom/custom/constructor-calls-created-synchronously_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/custom/created-callback_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-LayoutTests/fast/dom/custom/document-register-basic_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/custom/document-register-namespace_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/custom/document-register-on-create-callback_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/custom/document-register-svg-extends_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-LayoutTests/fast/dom/custom/document-register-type-extensions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/custom/element-names_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-LayoutTests/fast/dom/custom/element-type_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/custom/element-upgrade_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/custom/invalid-type-extension-crash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/custom/type-extensions_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-LayoutTests/fast/dom/custom/unresolved-pseudoclass_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/custom/upgrade-candidate-remove-crash_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/dataset_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/dataset-xhtml_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/basic_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-strict-mode-wtih-checkbox_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-user-select-none_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-zoom-and-scroll_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-with-first-letter-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/replace-element_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Document/clone-node_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Document/createElement-invalid-names_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Document/createElementNS-namespace-err_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Document/createElement-valid-names_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Document/document-title-get_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/DocumentFragment/document-fragment-constructor_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/document-importNode-arguments_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/document-set-title-mutations_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/document-set-title-no-child-on-empty_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/document-set-title-no-reuse_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/document-stylesheets-empty-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Document/title-property-creates-title-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Document/title-property-set-multiple-times_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Document/title-with-multiple-children_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/document-width-height-force-layout_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/DOMException/dispatch-event-exception_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/DOMException/prototype-object_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/DOMException/XPathException_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/DOMImplementation/createDocument-namespace-err_t01: Crash # (impl): Error expression `impl` unhandled.
-LayoutTests/fast/dom/DOMImplementation/createDocumentType-err_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/DOMImplementation/createHTMLDocument-title_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/dom-instanceof_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/dom-method-document-change_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/domparser-parsefromstring-mimetype-support_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/dom-parse-serialize-display_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/dom-parse-serialize_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/dom-parse-serialize-xmldecl_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/domtimestamp-is-number_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/duplicate-ids-document-order_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/duplicate-ids_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Element/attribute-uppercase_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Element/class-name_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Element/client-rect-list-argument_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Element/dimension-properties-unrendered_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Element/fixed-position-offset-parent_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/elementFromPoint-scaled-scrolled_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Element/getBoundingClientRect-getClientRects-relative-to-viewport_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Element/getClientRects_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Element/hostname-host_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Element/id-in-frame_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Element/id-in-getelement01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Element/id-in-insert-hr_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Element/id-in-map_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Element/id-in-param_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Element/node-list-identity_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Element/offsetTop-table-cell_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Element/remove_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Element/scrollWidth_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Element/setAttribute-case-insensitivity_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Element/setAttributeNS-namespace-err_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Element/setAttribute-with-colon_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/empty-hash-and-search_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/focus-contenteditable_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/fragment-activation-focuses-target_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/gc-image-element-2_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/gc-image-element_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/getElementById-consistency2_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/getElementById-consistency3_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/getElementById-consistency4_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/getElementById-consistency5_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/getElementById-consistency_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/getelementbyname-invalidation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/003_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/004_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/005_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/006_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/007_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/008_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/009_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/010_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/011_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/012_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/013_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/014_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/015_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getElementsByClassName/dumpNodeList_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/getelementsbyname-invalidation-cache_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/horizontal-scrollbar-in-rtl-doesnt-fire-onscroll_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/horizontal-scrollbar-in-rtl_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/horizontal-scrollbar-when-dir-change_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLAnchorElement/get-href-attribute-port_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/HTMLAnchorElement/remove-href-from-focused-anchor_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-hash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-hostname_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-host_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-pathname_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-port_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-protocol_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-rebase_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-search_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-whitespace_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLBaseElement/href-attribute-resolves-with-respect-to-document_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLBaseElement/multiple-base-elements_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLButtonElement/change-type_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLButtonElement/value/getset_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/htmlcollection-length-after-item_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/html-collections-named-getter-mandatory-arg_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/dialog-autofocus_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/dialog-close-event_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/dialog-enabled_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/dialog-open_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/dialog-scrolled-viewport_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/dialog-show-modal_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/HTMLDialogElement/inert-does-not-match-disabled-selector_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/inert-node-is-unfocusable_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/inert-node-is-unselectable_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/multiple-centered-dialogs_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/non-anchored-dialog-positioning_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/show-modal-focusing-steps_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/HTMLDialogElement/submit-dialog-close-event_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/HTMLDialogElement/synthetic-click-inert_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-relative_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-static_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
LayoutTests/fast/dom/HTMLDocument/active-element-gets-unforcusable_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/HTMLDocument/activeElement_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDocument/clone-node_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/HTMLDocument/set-focus-on-valid-element_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/HTMLDocument/title-get_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLDocument/title-set_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-before-text-node_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-child-node_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-text-form-control_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-children_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-remove-add-children_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-text-form-control-child_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-text-form-control_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-dir-value-change_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-empty-string_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-false-string_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-invalid-string_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-missing-ancestor-false_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-missing-ancestor-true_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-missing-parent-ancestor-missing_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-missing-parent-false_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-missing-parent-true_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/attr-true-string_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/insertAdjacentHTML-errors_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/set-false_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/set-inherit-parent-false_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/set-inherit-parent-true_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/set-inner-outer-optimization_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/set-invalid-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/set-true_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/set-value-caseinsensitive_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/spellcheck_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLElement/translate_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLFontElement/size-attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLFormElement/elements-not-in-document_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/HTMLImageElement/image-loading-gc_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/HTMLImageElement/image-natural-width-height_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/HTMLImageElement/image-src-absolute-url_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/HTMLImageElement/parse-src_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLInputElement/checked-pseudo-selector_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/HTMLInputElement/cloned-input-checked-state_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/HTMLInputElement/clone-input-checked_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLInputElement/duplicate-element-names_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLInputElement/input-checked-reset_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/HTMLInputElement/input-hidden-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLInputElement/input-size-attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLInputElement/input-text-reset_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/HTMLInputElement/size-as-number_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLInputElement/size-attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLLabelElement/click-label_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLLabelElement/focus-label_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLLabelElement/form/test1_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/HTMLLabelElement/label-control_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/HTMLLinkElement/link-and-subresource-test-nonexistent_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/HTMLLinkElement/link-and-subresource-test_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/HTMLLinkElement/link-beforeload-recursive_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/HTMLLinkElement/link-onerror-stylesheet-with-existent-and-non-existent-import_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/HTMLLinkElement/link-onerror-stylesheet-with-non-existent-import_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/HTMLLinkElement/link-onerror_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/HTMLLinkElement/link-onload2_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/HTMLLinkElement/link-onload-before-page-load_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/HTMLLinkElement/link-onload-stylesheet-with-import_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/HTMLLinkElement/link-onload_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/HTMLLinkElement/link-sheet-out-of-tree_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/dom/HTMLLinkElement/link-onload-stylesheet-with-import_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/HTMLLinkElement/link-onload2_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/dom/HTMLLinkElement/link-onload_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/HTMLLinkElement/onload-completion-test_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/HTMLLinkElement/prefetch-beforeload_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/HTMLLinkElement/prefetch_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/HTMLLinkElement/resolve-url-on-insertion_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLLinkElement/subresource_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/HTMLMetaElement/meta-attributes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLMeterElement/set-meter-properties_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/HTMLObjectElement/beforeload-set-text-crash_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/HTMLObjectElement/children-changed_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/HTMLObjectElement/form/test1_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/dom/HTMLObjectElement/set-type-to-null-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/HTMLOutputElement/dom-settable-token-list_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement-children-removed_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement-reset-event_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement-validity_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLProgressElement/indeterminate-progress-002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/HTMLProgressElement/progress-element-with-style-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/HTMLProgressElement/set-progress-properties_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/HTMLScriptElement/async-false-inside-async-false-load_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/HTMLScriptElement/async-onbeforeload_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/HTMLScriptElement/defer-onbeforeload_t01: Crash # unsupported element kind: _completer:field
@@ -11706,80 +10076,18 @@
LayoutTests/fast/dom/HTMLScriptElement/isURLAttribute_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/HTMLScriptElement/remove-in-beforeload_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/HTMLScriptElement/remove-source_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/HTMLScriptElement/script-async-attr_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/dom/HTMLScriptElement/script-for-attribute-unexpected-execution_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/HTMLScriptElement/script-load-events_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/dom/HTMLScriptElement/script-load-events_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/HTMLScriptElement/script-reexecution_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/HTMLScriptElement/script-set-src_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/HTMLSelectElement/change-multiple-preserve-selection_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLSelectElement/listbox-select-reset_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLSelectElement/named-options_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLSelectElement/selected-false_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLSelectElement/selected-index-preserved-when-option-text-changes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLSelectElement/select-element-item-argument_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLSelectElement/select-selectedOptions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLStyleElement/insert-parser-generated_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/HTMLStyleElement/programmatically-add-style-with-onerror-handler_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/HTMLStyleElement/programmatically-add-style-with-onload-handler_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/HTMLStyleElement/style-onerror_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/HTMLStyleElement/style-onerror-with-existent-and-non-existent-import_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/HTMLStyleElement/style-onload2_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/dom/HTMLStyleElement/style-onerror_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/HTMLStyleElement/style-onload-before-page-load_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/dom/HTMLStyleElement/style-onload2_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/HTMLStyleElement/style-onload_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/HTMLTableElement/cellpadding-attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTableElement/createCaption_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTableElement/early-acid3-65-excerpt_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTableElement/early-acid3-66-excerpt_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTableElement/exceptions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTableElement/insert-row_t01: Crash # Please triage this failure.
-LayoutTests/fast/dom/HTMLTableElement/rows_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTableElement/table-with-invalid-border_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTableElement/tBodies_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTableRowElement/cells_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTableRowElement/exceptions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTableRowElement/insertCell_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTableSectionElement/rows_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTemplateElement/cloneNode_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/HTMLTemplateElement/contentWrappers_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTemplateElement/custom-element-wrapper-gc_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTemplateElement/cycles-in-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTemplateElement/cycles_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTemplateElement/inertContents_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/dom/HTMLTemplateElement/innerHTML-inert_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/HTMLTemplateElement/innerHTML_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTemplateElement/no-form-association_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/HTMLTemplateElement/ownerDocument_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTemplateElement/ownerDocumentXHTML_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTemplateElement/xhtml-parsing-and-serialization_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/HTMLTextAreaElement/reset-textarea_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/icon-size-property_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/icon-url-change_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/icon-url-list_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/id-attribute-with-namespace-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/image-object_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/implementation-api-args_t01: Crash # (throw "${reason}: ${e}"): Unhandled node
-LayoutTests/fast/dom/implementation-createHTMLDocument_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/import-document-fragment_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/importNode-confusing-localName_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/importNodeHTML_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/importNode-null_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/importNode-prefix_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/importNode-unsupported-node-type_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/importNodeXML_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/innerHTML-detached-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/innerHTML-escaping-attribute_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/innerHTML-nbsp_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/inner-text-first-letter_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/inner-text_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/inner-width-height_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/javascript-backslash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/jsDevicePixelRatio_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/left-overflow-in-ltr_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/length-attribute-mapping_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/location-hash_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/location-missing-arguments_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/multiple-ids_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/MutationObserver/added-out-of-order_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/MutationObserver/callback-arguments_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/MutationObserver/clear-transient-without-delivery_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/MutationObserver/create-during-delivery_t01: Crash # unsupported element kind: _completer:field
@@ -11789,2368 +10097,831 @@
LayoutTests/fast/dom/MutationObserver/disconnect-cancel-pending_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/MutationObserver/document-fragment-insertion_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/MutationObserver/mutate-during-delivery_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/MutationObserver/mutation-record-constructor_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/MutationObserver/mutation-record-nullity_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/MutationObserver/observe-attributes_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/MutationObserver/observe-characterdata_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/MutationObserver/observe-childList_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/MutationObserver/observe-exceptions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/MutationObserver/observe-options-attributes_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/MutationObserver/observe-options-character-data_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/MutationObserver/observer-wrapper-dropoff_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/MutationObserver/observer-wrapper-dropoff-transient_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/MutationObserver/observe-subtree_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/MutationObserver/removed-out-of-order_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/dom/MutationObserver/observer-wrapper-dropoff-transient_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/dom/MutationObserver/observer-wrapper-dropoff_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/MutationObserver/takeRecords_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/MutationObserver/transient-gc-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/MutationObserver/weak-callback-gc-crash_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/navigator-userAgent_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/navigator-vendorSub_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/node-childNodes-idempotence_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Node/contains-method_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Node/DOMNodeRemovedEvent_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Node/fragment-mutation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Node/initial-values_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/NodeIterator/NodeIterator-basic_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-LayoutTests/fast/dom/node-iterator-reference-node-removed_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/node-iterator-with-doctype-root_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/NodeList/childNodes-reset-cache_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/NodeList/childNodes-reverse-iteration_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/NodeList/invalidate-node-lists-when-parsing_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/NodeList/nodelist-reachable_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/no-elements_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/dom/SelectorAPI/bug-17313_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/SelectorAPI/dumpNodeList-2_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/SelectorAPI/dumpNodeList-almost-strict_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/SelectorAPI/dumpNodeList_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/StyleSheet/detached-style-2_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/StyleSheet/detached-style_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/StyleSheet/discarded-sheet-owner-null_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/TreeWalker/TreeWalker-basic_t01: Crash # Please triage this failure.
+LayoutTests/fast/dom/Window/getMatchedCSSRules-nested-rules_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/Window/getMatchedCSSRules-parent-stylesheets_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/css-cached-import-rule_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/css-delete-doc_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/css-insert-import-rule-twice_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/css-insert-import-rule_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/css-mediarule-deleteRule-update_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/css-mediarule-insertRule-update_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/cssTarget-crash_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/custom/attribute-changed-callback_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/custom/constructor-calls-created-synchronously_t01: Crash # unsupported element kind: attributeChangedCallback:field
+LayoutTests/fast/dom/custom/created-callback_t01: Crash # unsupported element kind: createdCallback:field
+LayoutTests/fast/dom/custom/document-register-on-create-callback_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/custom/element-type_t01: Crash # unsupported element kind: createdCallback:field
+LayoutTests/fast/dom/custom/element-upgrade_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/document-set-title-mutations_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/domtimestamp-is-number_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/empty-hash-and-search_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/gc-image-element-2_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/gc-image-element_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/getElementsByClassName/001_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/002_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/003_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/004_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/005_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/006_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/007_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/008_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/009_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/010_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/011_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/012_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/013_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/014_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/015_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/getElementsByClassName/dumpNodeList_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/horizontal-scrollbar-in-rtl-doesnt-fire-onscroll_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/dom/horizontal-scrollbar-in-rtl_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/dom/horizontal-scrollbar-when-dir-change_t01: Crash # unsupported element kind: _asyncCounter:field
+LayoutTests/fast/dom/icon-url-change_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/icon-url-list_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/id-attribute-with-namespace-crash_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/image-object_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/inner-text_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/location-hash_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/dom/non-styled-element-id-crash_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/noscript-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/object-plugin-hides-properties_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/offset-parent-positioned-and-inline_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/offset-position-writing-modes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/dom/object-plugin-hides-properties_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/dom/onerror-img_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/option-properties_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/partial-layout-block_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/partial-layout-overlay-scrollbars_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/Range/13000_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/31684_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/bug-19527_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/create-contextual-fragment-script-not-ran_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Range/create-contextual-fragment-script-unmark-already-started_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/create-contextual-fragment_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Range/deleted-range-endpoints_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/getClientRects-character_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Range/insertNode-empty-fragment-crash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/missing-arguments_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/mutation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-clone-contents_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-clone-empty_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Range/range-comparePoint_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-constructor_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-created-during-remove-children_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-detached-exceptions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-exceptions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-extract-contents_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-insertNode-separate-endContainer_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-insertNode-splittext_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-isPointInRange_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-modifycontents_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-on-detached-node_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/range-processing-instructions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/select-node-different-document_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/surroundContents-1_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/surroundContents-check-boundary-points_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Range/surroundContents-for-detached-node_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/remove-body-during-body-replacement_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/replace-child-siblings_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/replace-first-child_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Selection/collapseToX-empty-selection_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Selection/getRangeAt_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/SelectorAPI/bug-17313_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/SelectorAPI/caseID-almost-strict_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/SelectorAPI/caseID-strict_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/SelectorAPI/caseID_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/SelectorAPI/caseTag_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/SelectorAPI/caseTagX_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/SelectorAPI/detached-element_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/SelectorAPI/dumpNodeList-2_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/SelectorAPI/dumpNodeList-almost-strict_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/SelectorAPI/dumpNodeList_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/SelectorAPI/duplicate-id-scope_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/SelectorAPI/elementRoot_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/SelectorAPI/id-fastpath-almost-strict_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/SelectorAPI/id-fastpath-strict_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/SelectorAPI/id-fastpath_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/SelectorAPI/not-supported-namespace-in-selector_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/SelectorAPI/unknown-pseudo_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/SelectorAPI/viewless-document_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/serialize-attribute_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/setAttributeNS-namespace-errors_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/setAttribute-using-initial-input-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/set-custom-validity-with-too-few-arguments_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/set-innerHTML_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/setter-type-enforcement_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/base-in-shadow-tree_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/content-element-api_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/content-element-includer_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/content-element-outside-shadow-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/content-pseudo-element-css-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/shadow/content-pseudo-element-dynamic-attribute-change_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/shadow/content-pseudo-element-overridden_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/content-pseudo-element-relative-selector-css-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/content-pseudo-element-with-host-pseudo-class_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/content-reprojection-fallback-crash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/custom-pseudo-in-selector-api_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/distribution-for-event-path_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/distribution-update-recalcs-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/elementfrompoint_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/elements-in-frameless-document_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/event-path-not-in-document_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/event-path_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/form-in-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/getComputedStyle-composed-parent-dirty_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/get-distributed-nodes-orphan_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/getelementbyid-in-orphan_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/get-element-by-id-in-shadow-mutation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/getelementbyid-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/host-context-pseudo-class-css-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/host-pseudo-class-css-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/dom/shadow/distribution-for-event-path_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/shadow/event-path_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/dom/shadow/get-distributed-nodes-orphan_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/dom/shadow/insertion-point-list-menu-crash_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/shadow/insertion-point-video-crash_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/shadow/link-in-shadow-tree_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/shadow/nested-reprojection-inconsistent_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/shadow/no-renderers-for-light-children_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/shadow/offsetWidth-host-style-change_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/olderShadowRoot_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/dom/shadow/pseudoclass-update-checked-option_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/shadow/pseudoclass-update-disabled-optgroup_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/shadow/pseudoclass-update-disabled-option_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/shadow/pseudoclass-update-enabled-optgroup_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/shadow/pseudoclass-update-enabled-option_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/shadow/reinsert-insertion-point_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/shadow/remove-and-insert-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/shadow-aware-shadow-root_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/shadow/shadow-disable_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/shadowdom-dynamic-styling_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/shadowdom-for-input-type-change_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/shadow-element-inactive_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/shadow-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/shadow-hierarchy-exception_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/dom/shadow/remove-and-insert-style_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/dom/shadow/shadow-root-js-api_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/dom/shadow/shadowhost-keyframes_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/shadow/shadow-removechild-and-blur-event_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/shadow-root-append_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/shadow/shadowroot-clonenode_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/shadowroot-host_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/shadow-root-js-api_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/shadow/shadowroot-keyframes_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/shadow/sibling-rules-dynamic-changes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/style-of-distributed-node_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/style-sharing-sibling-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/style-sharing-styles-in-older-shadow-roots_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/suppress-mutation-events-in-shadow-characterdata_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/shadow/title-element-in-shadow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/shared-inline-style-after-node-removal_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/stripNullFromTextNodes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/StyleSheet/css-medialist-item_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/StyleSheet/detached-parent-rule-without-wrapper_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/StyleSheet/detached-shadow-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/StyleSheet/detached-style-2_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/StyleSheet/detached-stylesheet-without-wrapper_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/StyleSheet/detached-style_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/StyleSheet/discarded-sheet-owner-null_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/StyleSheet/empty-shadow-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/subtree-modified-attributes_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/dom/text-api-arguments_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Text/next-element-sibling_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/text-node-attach-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/Text/previous-element-sibling_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Text/remove_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Text/replaceWholeText_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Text/text-constructor_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/title-content-set-innerText-get_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/TreeWalker/TreeWalker-basic_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-LayoutTests/fast/dom/TreeWalker/TreeWalker-currentNode_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dom/vertical-scrollbar-in-rtl-doesnt-fire-onscroll_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/dom/vertical-scrollbar-when-dir-change_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/Window/atob-btoa_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Window/dispatchEvent_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Window/getMatchedCSSRules-nested-rules_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/Window/getMatchedCSSRules-parent-stylesheets_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dom/Window/getMatchedCSSRules-with-invalid-pseudo-elements_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Window/getMatchedCSSRules-with-pseudo-elements-complex_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Window/getMatchedCSSRules-with-pseudo-elements_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Window/invalid-protocol_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Window/querySelectorAll-with-pseudo-elements_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Window/replaceable_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Window/window-remove-event-listener_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Window/window-resize-contents_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Window/window-resize_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/Window/window-screen-properties_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/dom/Window/window-scroll-arguments_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/xhtml-fragment-parsing-exceptions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/xhtml-fragment-whitespace_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/XMLHttpRequest-constants_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/XMLSerializer-attribute-entities_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/XMLSerializer-attribute-namespaces_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/XMLSerializer-doctype2_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/XMLSerializer-doctype_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/XMLSerializer-double-xmlns_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/XMLSerializer-element-ns-no-reemit_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-LayoutTests/fast/dom/xmlserializer-serialize-to-string-exception_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dom/XMLSerializer_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/dynamic/continuation-detach-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dynamic/inline-to-block-crash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/dynamic/insertAdjacentHTML-allowed-parents_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/dynamic/inline-to-block-crash_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
LayoutTests/fast/dynamic/jQuery-animation-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/dynamic/style-access-late-stylesheet-load_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/encoding/bom-in-content_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/encoding/css-charset-dom_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/events/add-event-without-document_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/events/change-overflow-on-overflow-change_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/events/clipboard-clearData_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/events/clipboard-dataTransferItemList-remove_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/events/clipboard-dataTransferItemList_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/events/defaultprevented_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/events/dispatch-event-being-dispatched_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/events/dispatch-event-no-document_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/events/dispatch-synthetic-mouseevent_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/events/div-focus_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/events/div-focus_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/events/document-elementFromPoint_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/events/domnodeinsertedintodocument-dispatched-post-rendering_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/events/event-attributes-after-exception_t01: Crash # try/finally
-LayoutTests/fast/events/event-creation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/event-fired-after-removal_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/event-fire-order_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/event-listener-list-mutation_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/events/event-listener-moving-documents_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/event-listener-sharing_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/event-on-created-document_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/events/event-fire-order_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/events/event-fired-after-removal_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/events/event-on-created-document_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/events/event-on-xhr-document_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/events/event-trace_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/events/fire-scroll-event-element_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/events/fire-scroll-event_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/events/form-onchange_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/init-message-event_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/input-focus-no-duplicate-events_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/invalid-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/invalid-002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/invalid-003_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/invalid-004_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/invalid-005_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/keyboardevent-location-constants_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/mutation-during-append-child_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/mutation-during-insert-before_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/mutation-during-replace-child-2_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/mutation-during-replace-child_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/events/input-focus-no-duplicate-events_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/events/nested-event-remove-node-crash_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/events/no-window-load_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/events/onerror-bubbling_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/events/onerror-img-after-gc_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/eventsource/eventsource-attribute-listeners_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/eventsource/eventsource-constructor_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/events/onerror-bubbling_t01: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+LayoutTests/fast/events/onerror-img-after-gc_t01: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
LayoutTests/fast/events/overflowchanged-event-raf-timing_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/events/page-visibility-null-view_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/events/programmatic-check-no-change-event_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/events/scoped/editing-commands_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/events/scroll-during-zoom-change_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/events/scroll-event-does-not-bubble_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/events/scroll-event-phase_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/events/selectstart-on-selectall_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/events/selectstart-prevent-selectall_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/events/stop-immediate-propagation_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/events/stopPropagation-checkbox_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/events/submit-reset-nested-bubble_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/events/submit-reset-nested-bubble_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/events/tabindex-removal-from-focused-element_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/events/wheelevent-constructor_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/events/window-load-capture_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/events/xhr-onclick-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/exclusions/parsing/parsing-wrap-flow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/exclusions/parsing/parsing-wrap-through_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/files/blob-close-read_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/files/blob-close-revoke_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/files/blob-close_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/files/blob-constructor_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/eventsource/eventsource-constructor_t01: Crash # Please triage this failure.
+LayoutTests/fast/exclusions/parsing/parsing-wrap-flow_t01: Crash # (testExclusionSpecifiedProperty): handleStaticFunctionGet: function(testExclusionSpecifiedProperty)
+LayoutTests/fast/exclusions/parsing/parsing-wrap-through_t01: Crash # (testExclusionSpecifiedProperty): handleStaticFunctionGet: function(testExclusionSpecifiedProperty)
+LayoutTests/fast/files/blob-close-read_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/files/blob-close-revoke_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/files/blob-parts-slice-test_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/files/blob-slice-overflow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/files/blob-slice-test_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/files/create-blob-url-crash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/files/file-reader-abort-in-last-progress_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/files/file-reader-done-reading-abort_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/files/file-reader-done-reading-abort_t01: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
LayoutTests/fast/files/file-reader-fffd_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/files/file-reader-immediate-abort_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/files/file-reader-immediate-abort_t01: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
LayoutTests/fast/files/file-reader-methods-illegal-arguments_t01: Crash # Unhandled node
LayoutTests/fast/files/file-reader-readystate_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/files/file-reader-result-twice_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/files/not-enough-arguments_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/files/read-blob-as-array-buffer_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/files/revoke-blob-url_t01: Crash # Please triage this failure.
-LayoutTests/fast/files/url-null_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/files/url-required-arguments_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/files/workers/inline-worker-via-blob-url_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/files/xhr-response-blob_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/async-operations_t01: Crash # cannot compile methods that need interceptor calling convention.
+LayoutTests/fast/files/xhr-response-blob_t01: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+LayoutTests/fast/filesystem/async-operations_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/filesystem/directory-entry-to-uri_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/filesystem/file-after-reload-crash_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/filesystem/file-entry-to-uri_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/filesystem/file-from-file-entry_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/file-metadata-after-write_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/filesystem/file-metadata-after-write_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/filesystem/file-writer-abort-continue_t01: Crash # (onError): handleStaticFunctionGet: function(onError)
+LayoutTests/fast/filesystem/file-writer-abort-depth_t01: Crash # (onError): handleStaticFunctionGet: function(onError)
+LayoutTests/fast/filesystem/file-writer-abort_t01: Crash # (onError): handleStaticFunctionGet: function(onError)
+LayoutTests/fast/filesystem/file-writer-empty-blob_t01: Crash # (onError): handleStaticFunctionGet: function(onError)
+LayoutTests/fast/filesystem/file-writer-events_t01: Crash # (onError): handleStaticFunctionGet: function(onError)
+LayoutTests/fast/filesystem/file-writer-gc-blob_t01: Crash # (onError): handleStaticFunctionGet: function(onError)
+LayoutTests/fast/filesystem/file-writer-truncate-extend_t01: Crash # (onError): handleStaticFunctionGet: function(onError)
+LayoutTests/fast/filesystem/file-writer-write-overlapped_t01: Crash # (onError): handleStaticFunctionGet: function(onError)
LayoutTests/fast/filesystem/filesystem-reference_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/filesystem/filesystem-unserializable_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/filesystem-uri-origin_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/filesystem/file-writer-abort-continue_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/file-writer-abort-depth_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/file-writer-abort_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/file-writer-empty-blob_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/file-writer-events_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/file-writer-gc-blob_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/file-writer-truncate-extend_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/filesystem/file-writer-write-overlapped_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/filesystem/input-access-entries_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/filesystem/op-copy_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/op-get-entry_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/op-get-metadata_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/op-get-parent_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/op-move_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/op-read-directory_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/op-remove_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/op-restricted-chars_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/op-restricted-names_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/op-restricted-unicode_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/filesystem/read-directory-many_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/filesystem/read-directory_t01: Crash # cannot compile methods that need interceptor calling convention.
-LayoutTests/fast/filesystem/simple-readonly-file-object_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/filesystem/simple-readonly_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/filesystem/op-copy_t01: Crash # (fileSystemCallback): handleStaticFunctionGet: function(fileSystemCallback)
+LayoutTests/fast/filesystem/op-get-entry_t01: Crash # (fileSystemCallback): handleStaticFunctionGet: function(fileSystemCallback)
+LayoutTests/fast/filesystem/op-get-metadata_t01: Crash # (fileSystemCallback): handleStaticFunctionGet: function(fileSystemCallback)
+LayoutTests/fast/filesystem/op-get-parent_t01: Crash # (fileSystemCallback): handleStaticFunctionGet: function(fileSystemCallback)
+LayoutTests/fast/filesystem/op-move_t01: Crash # (fileSystemCallback): handleStaticFunctionGet: function(fileSystemCallback)
+LayoutTests/fast/filesystem/op-read-directory_t01: Crash # (fileSystemCallback): handleStaticFunctionGet: function(fileSystemCallback)
+LayoutTests/fast/filesystem/op-remove_t01: Crash # (fileSystemCallback): handleStaticFunctionGet: function(fileSystemCallback)
+LayoutTests/fast/filesystem/op-restricted-chars_t01: Crash # (fileSystemCallback): handleStaticFunctionGet: function(fileSystemCallback)
+LayoutTests/fast/filesystem/op-restricted-names_t01: Crash # (fileSystemCallback): handleStaticFunctionGet: function(fileSystemCallback)
+LayoutTests/fast/filesystem/op-restricted-unicode_t01: Crash # (fileSystemCallback): handleStaticFunctionGet: function(fileSystemCallback)
+LayoutTests/fast/filesystem/read-directory-many_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/filesystem/read-directory_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/filesystem/simple-readonly-file-object_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/filesystem/simple-readonly_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/filesystem/simple-required-arguments-getdirectory_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/filesystem/simple-required-arguments-getfile_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/filesystem/simple-temporary_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/filesystem/snapshot-file-with-gc_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/flexbox/box-orient-button_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/flexbox/child-flexing_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/flexbox/crash-flexbox-no-layout-child_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/flexbox/flexing-overflow-scroll-item_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/flexbox/intrinsic-min-width-applies-with-fixed-width_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
LayoutTests/fast/flexbox/layoutHorizontalBox-crash_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/flexbox/overhanging-floats-not-removed-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/flexbox/repaint-scrollbar_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/flexbox/vertical-box-form-controls_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/11423_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/8250_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/forms/HTMLOptionElement_selected_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/forms/activate-and-disabled-elements_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/forms/autocomplete_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/autofocus-attribute_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/autofocus-focus-only-once_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/forms/autofocus-focus-only-once_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/forms/autofocus-input-css-style-change_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/forms/autofocus-opera-004_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/forms/autofocus-opera-005_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/forms/autofocus-opera-007_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/autofocus-opera-008_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/forms/autofocus-readonly-attribute_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/button-baseline-and-collapsing_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/button/button-disabled-blur_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/forms/button-click-DOM_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/forms/checkbox-click-indeterminate_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/checkbox-default-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/forms/button/button-disabled-blur_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/forms/checkbox-onchange_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/forms/checkValidity-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/checkValidity-002_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/checkValidity-003_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/checkValidity-004_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/checkValidity-cancel_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/checkValidity-handler-updates-dom_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/clone-input-with-dirty-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/color/color-setrangetext_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/color/input-value-sanitization-color_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/cursor-position_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/forms/dangling-form-element-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/datalist/datalist-child-validation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/datalist/datalist-nonoption-child_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/datalist/datalist_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/datalist/input-list_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/date/date-click-on-label_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/date/date-input-type_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/date/date-interactive-validation-required_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/date/date-pseudo-classes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/date/date-setrangetext_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/date/input-date-validation-message_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/date/input-valueasdate-date_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/date/input-valueasnumber-date_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-change-layout-by-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-onblur-setvalue-onfocusremoved_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/datetimelocal/datetimelocal-input-type_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/datetimelocal/datetimelocal-interactive-validation-required_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/datetimelocal/datetimelocal-pseudo-classes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/datetimelocal/datetimelocal-setrangetext_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/datetimelocal/input-valueasdate-datetimelocal_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/datetimelocal/input-valueasnumber-datetimelocal_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-change-layout-by-value_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/datetimelocal/ValidityState-rangeOverflow-datetimelocal_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/datetimelocal/ValidityState-rangeUnderflow-datetimelocal_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/datetimelocal/ValidityState-stepMismatch-datetimelocal_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/datetimelocal/ValidityState-typeMismatch-datetimelocal_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/date/ValidityState-rangeOverflow-date_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/date/ValidityState-rangeUnderflow-date_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/date/ValidityState-stepMismatch-date_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/date/ValidityState-typeMismatch-date_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/delete-text-with-invisible-br_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/disabled-attr-checkvalidity_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/double-focus_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/enctype-attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/fieldset/fieldset-disabled_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/fieldset/fieldset-elements_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/fieldset/fieldset-name_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/fieldset/fieldset-type_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/fieldset/focus-in-fieldset-disabled_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/fieldset/validation-in-fieldset_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/file/file-input-capture_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/file/file-setrangetext_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/forms/datalist/datalist-child-validation_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/forms/datalist/datalist_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/forms/date/date-interactive-validation-required_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/forms/date/date-pseudo-classes_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/forms/datetimelocal/datetimelocal-interactive-validation-required_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/forms/datetimelocal/datetimelocal-pseudo-classes_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/forms/fieldset/fieldset-elements_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
LayoutTests/fast/forms/focus-style-pending_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/forms/focus_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/forms/focus_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LayoutTests/fast/forms/form-added-to-table_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/forms/form-associated-element-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/form-attribute-nonexistence-form-id_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/form-attribute-not-in-document_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/form-attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/form-dirname-attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/form-input-named-arguments_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/formmethod-attribute-button-html_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/formmethod-attribute-input-2_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/formmethod-attribute-input-html_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/formmethod-attribute-test_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/formnovalidate-attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/forms/form-submission-create-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/hidden/hidden-setrangetext_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/hidden-input-enabled_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/HTMLOptionElement_selected2_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/HTMLOptionElement_selected_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/forms/image/image-error-event-crash_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/forms/image/image-error-event-modifies-type-crash_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/forms/image/image-setrangetext_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/image/width-and-height-of-detached-input_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/incremental-dom-property_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/indeterminate-input-types_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/input-appearance-elementFromPoint_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-appearance-maxlength_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/input-changing-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-file-set-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-hit-test-border_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/input-implicit-length-limit_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-inputmode_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-maxlength_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-maxlength-unsupported_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-minmax_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-multiple_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-pattern_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-selection-hidden_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-select-webkit-user-select-none_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-setvalue-selection_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-stepup-stepdown_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-text-maxlength_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-text-paste-maxlength_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-type-change3_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/input-type-change-focusout_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/forms/input-type-change_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/forms/input-valueasnumber-unsupported_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-value-sanitization_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/input-width-height-attributes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/forms/input-width-height-attributes-without-renderer-loaded-image_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/forms/input-width-height-attributes-without-renderer_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/input-widths_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/forms/interactive-validation-assertion-by-validate-twice_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/forms/interactive-validation-attach-assertion_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/forms/interactive-validation-select-crash_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/legend-absolute-position-auto-width_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/legend-display-none_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/forms/listbox-scroll-after-options-removed_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/listbox-select-all_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/listbox-selection-2_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/forms/menulist-disabled-selected-option_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/menulist-selection-reset_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/forms/menulist-submit-without-selection_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/method-attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/min-content-form-controls_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/missing-action_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/multiple-selected-options-innerHTML_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/novalidate-attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/onchange-change-type_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/option-change-single-selected_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/option-index_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/option-label-trim-html-spaces_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/option-strip-unicode-spaces_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/option-value-and-label-changed-by-js_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/option-value-and-label_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/option-value-trim-html-spaces_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/parser-associated-form-removal_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/paste-into-textarea_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/paste-multiline-text-input_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/pattern-attribute-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/pattern-attribute-002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/pattern-attribute-003_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/percent-height-auto-width-form-controls_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/placeholder-dom-property_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/plaintext-mode-1_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/radio-checkbox-restore-indeterminate_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/required-attribute-001_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/required-attribute-002_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/forms/search-placeholder-value-changed_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/search-popup-crasher_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/forms/search-popup-crasher_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
LayoutTests/fast/forms/select-change-listbox-to-popup-roundtrip_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/forms/select-change-popup-to-listbox-in-event-handler_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/forms/select-change-popup-to-listbox-roundtrip_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/select-clientheight-large-size_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/select-clientheight-with-multiple-attr_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/forms/select-generated-content_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/forms/selection-direction_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/selection-start-end-readonly_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/selection-wrongtype_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/select-max-length_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/select-namedItem_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/select-remove-option_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/select-reset-multiple-selections-4-single-selection_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/select-reset_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/select-set-length_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/select-set-length-with-mutation-remove_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/select-set-length-with-mutation-reorder_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/select-set-length-with-mutation-reparent_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/select-set-length-with-mutation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/select-width-font-change_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/setCustomValidity-arguments_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/setCustomValidity-existence_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/setCustomValidity_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/setrangetext_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/shadow-tree-exposure_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/slow-click_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/submit-form-attributes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/submit-form-with-dirname-attribute_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/submit-form-with-dirname-attribute-with-ancestor-dir-attribute_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/submit-form-with-dirname-attribute-with-nonhtml-ancestor_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/textarea-crlf_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textarea-default-value-leading-newline_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textarea-initial-caret-position_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textarea-maxlength_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textarea-newline_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textarea-no-scroll-on-blur_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/textarea-paste-newline_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textarea-placeholder-dom-property_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textarea-placeholder-relayout-assertion_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/forms/textarea-rows-cols_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/forms/textarea-placeholder-relayout-assertion_t01: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
LayoutTests/fast/forms/textarea-scrollbar-height_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/forms/textarea-selection-preservation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textarea-set-defaultvalue-after-value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textarea-setvalue-without-renderer_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textarea-submit-crash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textarea-trailing-newline_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textarea-wrap-attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/text-control-select-blurred_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/textfield-clone_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LayoutTests/fast/forms/textfield-focus-out_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/forms/validationMessage_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/validity-property_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/ValidityState-customError_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-patternMismatch_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-patternMismatch-unsupported_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/ValidityState-rangeOverflow_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-rangeUnderflow_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-stepMismatch_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/forms/ValidityState-tooLong-input_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-tooLong-textarea_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-typeMismatch-email_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-typeMismatch-url_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-valueMissing-001_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-valueMissing-002_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-valueMissing-003_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-valueMissing-004_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-valueMissing-005_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-valueMissing-006_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-valueMissing-008_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/ValidityState-valueMissing-009_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/forms/willvalidate_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/adjacent-html-context-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/article-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/aside-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/body-offset-properties_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/clone-range_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/details-add-child-1_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/details-add-child-2_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/details-add-details-child-1_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/details-add-details-child-2_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/details-click-controls_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/html/details-mouse-click_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/html/disable-style-element_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/html/draggable_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/empty-fragment-id-goto-top_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/eventhandler-attribute-non-callable_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/figcaption-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/figure-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/footer-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/header-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/hgroup-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/hidden-attr-dom_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/hidden-attr_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/html/details-add-child-1_t01: Crash # unsupported element kind: createNewElement:field
+LayoutTests/fast/html/details-add-child-2_t01: Crash # unsupported element kind: createNewElement:field
+LayoutTests/fast/html/details-add-details-child-1_t01: Crash # unsupported element kind: createNewElement:field
+LayoutTests/fast/html/details-add-details-child-2_t01: Crash # unsupported element kind: createNewElement:field
LayoutTests/fast/html/imports/import-element-removed-flag_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/html/imports/import-events_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/input-type-change-crash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/layout-with-pending-stylesheet_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/main-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/mark-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/numbered-header-element_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/html/object-border_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/range-point-in-range-for-different-documents_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/html/section-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/select-dropdown-consistent-background-color_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/tabindex-removal_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/html/text-field-input-types_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/unknown-tag_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/html/xhtml-serialize_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/inline-block/inline-block-vertical-align-t02: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/inline/boundingBox-with-continuation_t01: Crash # (internals): Error expression `internals` unhandled.
-LayoutTests/fast/inline/continuation-inlines-inserted-in-reverse-after-block_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/inline/empty-inline-before-collapsed-space_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/inline/fixed-pos-moves-with-abspos-inline-parent_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/inline/fixed-pos-moves-with-abspos-parent-relative-ancestor_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/inline/fixed-pos-moves-with-abspos-parent_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/inline/fixed-pos-with-transform-container-moves-with-abspos-parent_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/inline/inline-position-top-align_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/inline/inline-relative-offset-boundingbox_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/inline/inline-with-empty-inline-children_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/inline/out-of-flow-objects-and-whitespace-after-empty-inline_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/inline/parent-inline-element-padding-contributes-width_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/inline/positioned-element-padding-contributes-width_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/inline/reattach-inlines-in-anonymous-blocks-with-out-of-flow-siblings_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/inline/skipped-whitespace-client-rect_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/innerHTML/001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/innerHTML/002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/innerHTML/003_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/innerHTML/005_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/innerHTML/additional-inline-style_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/innerHTML/innerHTML-case_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/innerHTML/innerHTML-custom-tag_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/innerHTML/innerHTML-iframe_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/innerHTML/innerHTML-nbsp_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/innerHTML/innerHTML-special-elements_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/innerHTML/innerHTML-svg-read_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/innerHTML/innerHTML-svg-write_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/innerHTML/innerHTML-uri-resolution_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/innerHTML/javascript-url_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/layers/negative-scroll-positions_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/layers/normal-flow-hit-test_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/layers/zindex-hit-test_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/lists/calc-width-with-space_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/lists/item-not-in-list-line-wrapping_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/lists/list-style-position-inside_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/lists/marker-preferred-margins_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/loader/about-blank-hash-change_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/loader/about-blank-hash-kept_t01: Crash # (new_hash): Error expression `new_hash` unhandled.
-LayoutTests/fast/loader/hashchange-event-async_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/loader/hashchange-event-properties_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/loader/loadInProgress_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/loader/local-css-allowed-in-strict-mode_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/loader/onhashchange-attribute-listeners_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/html/imports/import-events_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LayoutTests/fast/innerHTML/innerHTML-special-elements_t01: Crash # unsupported element kind: outerTests:field
+LayoutTests/fast/loader/about-blank-hash-change_t01: Crash # (onload_callback): handleStaticFunctionGet: function(onload_callback)
+LayoutTests/fast/loader/about-blank-hash-kept_t01: Crash # (onload_callback): handleStaticFunctionGet: function(onload_callback)
+LayoutTests/fast/loader/hashchange-event-async_t01: Crash # (loadHandler): handleStaticFunctionGet: function(loadHandler)
+LayoutTests/fast/loader/hashchange-event-properties_t01: Crash # (onhashchange): handleStaticFunctionGet: function(onhashchange)
+LayoutTests/fast/loader/loadInProgress_t01: Crash # (testForm): handleStaticFunctionGet: function(testForm)
+LayoutTests/fast/loader/local-css-allowed-in-strict-mode_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/loader/onhashchange-attribute-listeners_t01: Crash # (bodyInlineAttribute): handleStaticFunctionGet: function(bodyInlineAttribute)
LayoutTests/fast/loader/onload-policy-ignore-for-frame_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/loader/scroll-position-restored-on-back_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/loader/scroll-position-restored-on-reload-at-load-event_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/loader/stateobjects/pushstate-updates-location_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/loader/stateobjects/replacestate-in-onunload_t01: Crash # (history): Error expression `history` unhandled.
-LayoutTests/fast/loader/stateobjects/replacestate-updates-location_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/masking/parsing-clip-path-iri_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/masking/parsing-clip-path-shape_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/masking/parsing-mask-source-type_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/masking/parsing-mask_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/media/color-does-not-include-alpha_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/media/invalid-lengths_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/media/matchmedium-query-api_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/media/media-query-list-syntax_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/media/media-query-list_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/media/media-query-serialization_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/media/mq-append-delete_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/media/mq-color-index_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/media/mq-color-index_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/media/mq-js-media-except_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/media/mq-js-media-except_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/media/mq-js-update-media_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/media/mq-parsing_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/mediastream/getusermedia_t01: Crash # (gotStream1): Error expression `gotStream1` unhandled.
-LayoutTests/fast/mediastream/RTCIceCandidate_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/multicol/balance-short-trailing-empty-block_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/balance-trailing-border_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/balance-trailing-border_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/balance-unbreakable_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/break-after-always-bottom-margin_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/break-properties_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/columns-shorthand-parsing_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/column-width-zero_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/cssom-view_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/fixed-column-percent-logical-height-orthogonal-writing-mode_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/multicol/flipped-blocks-hit-test_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/float-truncation_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/gap-non-negative_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/hit-test-above-or-below_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/hit-test-end-of-column_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/hit-test-end-of-column-with-line-height_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/hit-test-float_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/hit-test-gap-between-pages-flipped_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/hit-test-gap-between-pages_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/image-inside-nested-blocks-with-border_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/inherit-column-values_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/initial-column-values_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/inline-getclientrects_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/newmulticol/balance-images_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/newmulticol/balance-maxheight_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/newmulticol/balance-maxheight_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/newmulticol/balance_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/newmulticol/balance_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/newmulticol/balance_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/newmulticol/balance_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/newmulticol/balance_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/newmulticol/balance_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/newmulticol/balance_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/newmulticol/balance_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/newmulticol/balance_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/newmulticol/balance_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/orphans-relayout_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/vertical-lr/break-properties_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/vertical-lr/float-truncation_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/vertical-lr/gap-non-negative_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/vertical-lr/image-inside-nested-blocks-with-border_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/vertical-rl/break-properties_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/vertical-rl/float-truncation_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/vertical-rl/gap-non-negative_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/vertical-rl/image-inside-nested-blocks-with-border_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/widows-and-orphans_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/widows_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/multicol/widows_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/multicol/zeroColumnCount_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/overflow/child-100percent-height-inside-fixed-container-with-overflow-auto_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/overflow/height-during-simplified-layout_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/overflow/overflow-rtl-vertical-origin_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/overflow/replaced-child-100percent-height-inside-fixed-container-with-overflow-auto_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/overflow/scrollbar-restored_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/overflow/scroll-vertical-not-horizontal_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/parser/block-nesting-cap_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/parser/foster-parent-adopted_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/parser/foster-parent-adopted_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/parser/foster-parent_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/parser/fragment-parser-doctype_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/parser/href-whitespace_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/parser/image-tag-parses-to-HTMLImageElement_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/parser/innerhtml-with-prefixed-elements_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/parser/parse-wbr_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/parser/pop-all-after-after-body_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/parser/pre-first-line-break_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/parser/residual-style-close-across-n-blocks_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/parser/stray-end-tags-with-attributes-001_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/parser/stray-end-tags-with-attributes-002-alt_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/parser/stray-end-tags-with-attributes-002_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/parser/stray-param_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/parser/strict-img-in-map_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/replaced/available-height-for-content_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-and-fixed-ancestor_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-and-fixed-ancestor-vertical-lr_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-inside-table-cell-and-fixed-ancestor_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-inside-table-cell-and-fixed-ancestor-vertical-lr_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/replaced/container-width-zero_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-anonymous-table-cell_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-table-cell-ignore-height_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/replaced/preferred-widths_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/replaced/table-percent-height_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/replaced/table-percent-height-text-controls_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/replaced/table-percent-width_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/replaced/table-replaced-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/ruby/modify-positioned-ruby-text-crash_t01: Crash # handleStaticFunctionGet: function(doTest)
-LayoutTests/fast/ruby/parse-rp_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/ruby/ruby-line-height_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/scrolling/scroll-element-into-view_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/scrolling/scroll-max-value_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/selectors/querySelector-leftmost-selector-matches-ancestor_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/selectors/querySelector-leftmost-selector-matches-rootNode_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/selectors/querySelector-scope_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/selectors/specificity-overflow_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/selectors/style-sharing-adjacent-selector_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/selectors/style-sharing-last-child_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/shapes/parsing/parsing-shape-image-threshold_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/shapes/parsing/parsing-shape-lengths_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/shapes/parsing/parsing-shape-margin_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/shapes/parsing/parsing-shape-outside-none_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/shapes/parsing/parsing-shape-outside_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/shapes/parsing/parsing-shape-property-aliases_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-big-box-border-radius_t01: Crash # Error expression `shouldBeCloseTo(elementRect('b').right,borderXIntercept(20),1)` unhandled.
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-diamond-margin-polygon_t01: Crash # Error expression `shouldBeCloseTo(elementRect('l1').left,marginLeftXIntercept(1),1)` unhandled.
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-left_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-right_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin_t01: Crash # Error expression `shouldBeCloseTo(imageShapeRect('a').left,292,1)` unhandled.
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin_t02: Crash # Error expression `shouldBeCloseTo(imageShapeRect('a').right,292,1)` unhandled.
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-different-writing-modes-left_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-different-writing-modes-right_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-rounded-boxes_t01: Crash # Error expression `shouldBeCloseTo(elementRect('b').left,cornerEllipseRightXIntercept(40,0,100,30),SubPixelLayout.resolution())` unhandled.
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-rounded-boxes_t02: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/loader/scroll-position-restored-on-back_t01: Crash # (navigate): handleStaticFunctionGet: function(navigate)
+LayoutTests/fast/loader/scroll-position-restored-on-reload-at-load-event_t01: Crash # (init): handleStaticFunctionGet: function(init)
+LayoutTests/fast/loader/stateobjects/pushstate-updates-location_t01: Crash # (onload): handleStaticFunctionGet: function(onload)
+LayoutTests/fast/loader/stateobjects/replacestate-in-onunload_t01: Crash # (onload): handleStaticFunctionGet: function(onload)
+LayoutTests/fast/loader/stateobjects/replacestate-updates-location_t01: Crash # (onload): handleStaticFunctionGet: function(onload)
+LayoutTests/fast/media/media-query-list-syntax_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/media/mq-js-update-media_t01: Crash # (updateMediaQuery2): handleStaticFunctionGet: function(updateMediaQuery2)
+LayoutTests/fast/media/mq-parsing_t01: Crash # (runTests): handleStaticFunctionGet: function(runTests)
+LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream_t01: Crash # (gotStream1): handleStaticFunctionGet: function(gotStream1)
+LayoutTests/fast/mediastream/getusermedia_t01: Crash # (error): handleStaticFunctionGet: function(error)
+LayoutTests/fast/multicol/columns-shorthand-parsing_t02: Crash # unsupported element kind: tests:field
+LayoutTests/fast/multicol/float-truncation_t01: Crash # unsupported element kind: tests:field
+LayoutTests/fast/multicol/hit-test-above-or-below_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/multicol/image-inside-nested-blocks-with-border_t01: Crash # unsupported element kind: tests:field
+LayoutTests/fast/multicol/orphans-relayout_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/multicol/vertical-lr/float-truncation_t01: Crash # unsupported element kind: tests:field
+LayoutTests/fast/multicol/vertical-lr/image-inside-nested-blocks-with-border_t01: Crash # unsupported element kind: tests:field
+LayoutTests/fast/multicol/vertical-rl/float-truncation_t01: Crash # unsupported element kind: tests:field
+LayoutTests/fast/multicol/vertical-rl/image-inside-nested-blocks-with-border_t01: Crash # unsupported element kind: tests:field
+LayoutTests/fast/multicol/widows-and-orphans_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/overflow/scroll-vertical-not-horizontal_t01: Crash # (startTest): handleStaticFunctionGet: function(startTest)
+LayoutTests/fast/parser/href-whitespace_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/parser/image-tag-parses-to-HTMLImageElement_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/parser/parse-wbr_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/parser/pop-all-after-after-body_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/parser/residual-style-close-across-n-blocks_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/parser/strict-img-in-map_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-anonymous-table-cell_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-table-cell-ignore-height_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/replaced/table-percent-height-text-controls_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/replaced/table-percent-height_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/replaced/table-percent-width_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/replaced/table-replaced-element_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/ruby/modify-positioned-ruby-text-crash_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/ruby/parse-rp_t01: Crash # (test): handleStaticFunctionGet: function(test)
+LayoutTests/fast/scrolling/scroll-element-into-view_t01: Crash # unsupported element kind: container:field
+LayoutTests/fast/selectors/style-sharing-last-child_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/shapes/parsing/parsing-shape-image-threshold_t01: Crash # (testShapeComputedProperty): handleStaticFunctionGet: function(testShapeComputedProperty)
+LayoutTests/fast/shapes/parsing/parsing-shape-margin_t01: Crash # (testShapeComputedProperty): handleStaticFunctionGet: function(testShapeComputedProperty)
+LayoutTests/fast/shapes/parsing/parsing-shape-outside_t01: Crash # (testNotInheritedShapeProperty): handleStaticFunctionGet: function(testNotInheritedShapeProperty)
+LayoutTests/fast/shapes/parsing/parsing-shape-property-aliases_t01: Crash # (testPropertyAlias): handleStaticFunctionGet: function(testPropertyAlias)
+LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin_t02: Crash # (runTest): handleStaticFunctionGet: function(runTest)
LayoutTests/fast/speechsynthesis/speech-synthesis-boundary-events_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/speechsynthesis/speech-synthesis-cancel_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/speechsynthesis/speech-synthesis-pause-resume_t01: Crash # unsupported element kind: _completer:field
LayoutTests/fast/speechsynthesis/speech-synthesis-speak_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-uses-voice_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/speechsynthesis/speech-synthesis-voices_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/storage/disallowed-storage_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/storage/storage-disallowed-in-data-url_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/sub-pixel/auto-table-layout-should-avoid-text-wrapping_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/sub-pixel/block-preferred-widths-with-sub-pixel-floats_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/sub-pixel/boundingclientrect-subpixel-margin_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/client-and-offset-width_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/sub-pixel/computedstylemargin_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/cssom-subpixel-precision_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/float-containing-block-with-margin_t01: Crash # (throw new ExpectException(message)): Unhandled node
LayoutTests/fast/sub-pixel/float-list-inside_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/sub-pixel/float-percentage-widths_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/float-with-margin-in-container_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/float-with-right-margin-zoom_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/sub-pixel/inline-block-with-padding_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/layout-boxes-with-zoom_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/replaced-element-baseline_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/shadows-computed-style_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/size-of-span-with-different-positions_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/sub-pixel/table-cells-have-stable-width_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/table-cells-with-padding-do-not-wrap_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/table-rows-have-stable-height_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/tiled-canvas-elements_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/sub-pixel/vertical-align-middle-overflow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/svg/getbbox_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/svg/tabindex-focus_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/svg/whitespace-angle_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/svg/whitespace-integer_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/svg/whitespace-length-invalid_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/svg/whitespace-length_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/svg/whitespace-number_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/absolute-table-percent-lengths_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/anonymous-table-section-removed_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/before-child-non-table-section-add-table-crash_t01: Crash # handleStaticFunctionGet: function(runTest)
-LayoutTests/fast/table/border-changes_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/caption-orthogonal-writing-mode-sizing_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/col-width-span-expand_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/css-table-max-height_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/css-table-max-width_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/css-table-width_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/css-table-width-with-border-padding_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/fixed-table-layout-toggle-colwidth_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/fixed-table-layout-width-change_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/fixed-table-with-percent-width-inside-extra-large-div_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/table/form-with-non-table-display-inside-table-elements_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/table/hittest-tablecell-bottom-edge_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/hittest-tablecell-right-edge_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/hittest-tablecell-with-borders-bottom-edge_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/hittest-tablecell-with-borders-right-edge_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/html-table-width-max-width-constrained_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/incorrect-colgroup-span-values_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/large-shrink-wrapped-width_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/margins-flipped-text-direction_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/margins-perpendicular-containing-block_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/min-max-width-preferred-size_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/min-width-css-block-table_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/min-width-css-inline-table_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/min-width-html-block-table_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/min-width-html-inline-table_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/nested-tables-with-div-offset_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/padding-height-and-override-height_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LayoutTests/fast/svg/getbbox_t01: Crash # unsupported element kind: epsilon:field
+LayoutTests/fast/svg/tabindex-focus_t01: Crash # try/finally
+LayoutTests/fast/svg/whitespace-angle_t01: Crash # try/finally
+LayoutTests/fast/svg/whitespace-integer_t01: Crash # try/finally
+LayoutTests/fast/svg/whitespace-length-invalid_t01: Crash # unsupported element kind: EPSILON:field
+LayoutTests/fast/svg/whitespace-length_t01: Crash # unsupported element kind: EPSILON:field
+LayoutTests/fast/svg/whitespace-number_t01: Crash # unsupported element kind: EPSILON:field
+LayoutTests/fast/table/before-child-non-table-section-add-table-crash_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/table/col-width-span-expand_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/table/css-table-max-height_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/table/css-table-width-with-border-padding_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/table/fixed-table-layout-toggle-colwidth_t01: Crash # (toggleWidth): handleStaticFunctionGet: function(toggleWidth)
+LayoutTests/fast/table/fixed-table-layout-width-change_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/table/hittest-tablecell-bottom-edge_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/table/hittest-tablecell-right-edge_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/table/hittest-tablecell-with-borders-bottom-edge_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/table/hittest-tablecell-with-borders-right-edge_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/table/html-table-width-max-width-constrained_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/table/incorrect-colgroup-span-values_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/table/min-width-css-block-table_t01: Crash # (computeLogicalWidth): handleStaticFunctionGet: function(computeLogicalWidth)
+LayoutTests/fast/table/min-width-css-inline-table_t01: Crash # (computeLogicalWidth): handleStaticFunctionGet: function(computeLogicalWidth)
+LayoutTests/fast/table/min-width-html-block-table_t01: Crash # (computeLogicalWidth): handleStaticFunctionGet: function(computeLogicalWidth)
+LayoutTests/fast/table/min-width-html-inline-table_t01: Crash # (computeLogicalWidth): handleStaticFunctionGet: function(computeLogicalWidth)
LayoutTests/fast/table/prepend-in-anonymous-table_t01: Crash # unsupported element kind: childTypes:field
-LayoutTests/fast/table/resize-table-binding-cell_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/resize-table-cell_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/resize-table-row_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/rowindex-comment-nodes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/table/switch-table-layout-dynamic-cells_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/switch-table-layout-multiple-section_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/switch-table-layout_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/table-all-rowspans-height-distribution-in-rows-except-overlapped_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/table-all-rowspans-height-distribution-in-rows_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/table-cell-offset-width_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/table/table-colgroup-present-after-table-row_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/table-rowspan-cell-with-empty-cell_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/table-rowspan-height-distribution-in-rows_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/table-rowspan-height-distribution-in-rows_t02: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/table-sections-border-spacing_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/table-size-integer-overflow_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/table/table-width-exceeding-max-width_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/table-with-borderattr-null_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/table/table-with-borderattr-set-to-null_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/table/table-with-content-width-exceeding-max-width_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/table/td-bordercolor-attribute_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text-autosizing/display-type-change-lineHeight_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text-autosizing/inline-width_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text-autosizing/table-inline-width_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text-autosizing/text-removal_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text-autosizing/vertical-writing-mode_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/container-align-with-inlines_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/decomposed-after-stacked-diacritics_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/find-backwards_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/find-case-folding_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/find-hidden-text_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/find-kana_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/find-quotes_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/find-russian_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/find-soft-hyphen_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/find-spaces_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/font-fallback-synthetic-italics_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/font-ligature-letter-spacing_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/font-ligatures-linebreak_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/font-ligatures-linebreak-word_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/font-linux-normalize_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/font-size-zero_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/glyph-reordering_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/international/cjk-segmentation_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/international/combining-marks-position_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/international/complex-text-rectangle_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/international/iso-8859-8_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/international/listbox-width-rtl_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/international/rtl-text-wrapping_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/international/thai-offsetForPosition-inside-character_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/ipa-tone-letters_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/justification-padding-mid-word_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/line-break-after-empty-inline-hebrew_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/line-break-after-inline-latin1_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/line-break-after-question-mark_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/line-breaks-after-closing-punctuations_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/line-breaks-after-hyphen-before-number_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/line-breaks-after-ideographic-comma-or-full-stop_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/line-breaks-after-ideographic-comma-or-full-stop_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/multiglyph-characters_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/offsetForPosition-cluster-at-zero_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/pre-wrap-trailing-tab_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/regional-indicator-symobls_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/remove-zero-length-run_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/selection-exceptions_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/soft-hyphen-5_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/split-text-crash_t01: Crash # handleStaticFunctionGet: function(crash)
-LayoutTests/fast/text/sub-pixel/text-scaling-ltr_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/sub-pixel/text-scaling-pixel_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/sub-pixel/text-scaling-rtl_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/sub-pixel/text-scaling-vertical_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/sub-pixel/text-scaling-webfont_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/text/text-between-two-brs-in-nowrap-overflow_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/text-combine-shrink-to-fit_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/text/whitespace/nowrap-line-break-after-white-space_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/window-find_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/zero-width-characters-complex-script_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/text/zero-width-characters_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/tokenizer/doctype-search-reset_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/tokenizer/entities_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/tokenizer/entities_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/tokenizer/entities_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/transforms/bounding-rect-zoom_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/transforms/hit-test-large-scale_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/transforms/scrollIntoView-transformed_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/transforms/topmost-becomes-bottomost-for-scrolling_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/transforms/transform-hit-test-flipped_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/transforms/transform-inside-overflow-scroll_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/anchor_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/file-http-base_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/url/file_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/url/host-lowercase-per-scheme_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/host_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/idna2003_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/idna2008_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/invalid-urls-utf8_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/ipv4_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/ipv6_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/mailto_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/path_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/path-url_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/port_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/query_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/relative_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/relative-unix_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/relative-win_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/safari-extension_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/scheme_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/segments-from-data-url_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/segments_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/standard-url_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/trivial-segments_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/url/trivial_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/writing-mode/auto-margins-across-boundaries_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/writing-mode/auto-sizing-orthogonal-flows_t01: Crash # (throw "You must provide a CSS selector of nodes to check."): Unhandled node
-LayoutTests/fast/writing-mode/block-formatting-context_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/table/rowindex-comment-nodes_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/table/table-size-integer-overflow_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/text-autosizing/vertical-writing-mode_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/text/find-backwards_t01: Crash # unsupported element kind: selection:field
+LayoutTests/fast/text/find-case-folding_t01: Crash # (runTests): handleStaticFunctionGet: function(runTests)
+LayoutTests/fast/text/find-hidden-text_t01: Crash # (runTests): handleStaticFunctionGet: function(runTests)
+LayoutTests/fast/text/find-quotes_t01: Crash # (runTests): handleStaticFunctionGet: function(runTests)
+LayoutTests/fast/text/find-spaces_t01: Crash # (runTests): handleStaticFunctionGet: function(runTests)
+LayoutTests/fast/text/font-ligature-letter-spacing_t01: Crash # (testLetterSpaceAndLigature): handleStaticFunctionGet: function(testLetterSpaceAndLigature)
+LayoutTests/fast/text/font-ligatures-linebreak-word_t01: Crash # (testLetterSpaceAndLigature): handleStaticFunctionGet: function(testLetterSpaceAndLigature)
+LayoutTests/fast/text/font-ligatures-linebreak_t01: Crash # (testLetterSpaceAndLigature): handleStaticFunctionGet: function(testLetterSpaceAndLigature)
+LayoutTests/fast/text/international/cjk-segmentation_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/text/ipa-tone-letters_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/text/line-breaks-after-hyphen-before-number_t01: Crash # unsupported element kind: expected:field
+LayoutTests/fast/text/split-text-crash_t01: Crash # (crash): handleStaticFunctionGet: function(crash)
+LayoutTests/fast/text/zero-width-characters-complex-script_t01: Crash # (runTests): handleStaticFunctionGet: function(runTests)
+LayoutTests/fast/tokenizer/entities_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/tokenizer/entities_t02: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/tokenizer/entities_t03: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/transforms/bounding-rect-zoom_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/transforms/hit-test-large-scale_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/transforms/scrollIntoView-transformed_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/transforms/transform-hit-test-flipped_t01: Crash # (runTest): handleStaticFunctionGet: function(runTest)
+LayoutTests/fast/url/anchor_t01: Crash # unsupported element kind: cases:field
+LayoutTests/fast/url/file-http-base_t01: Crash # unsupported element kind: cases:field
+LayoutTests/fast/url/file_t01: Crash # unsupported element kind: cases:field
+LayoutTests/fast/url/host-lowercase-per-scheme_t01: Crash # unsupported element kind: urlExpectationsUppercase:field
+LayoutTests/fast/url/host_t01: Crash # unsupported element kind: cases:field
+LayoutTests/fast/url/idna2003_t01: Crash # unsupported element kind: cases:field
+LayoutTests/fast/url/idna2008_t01: Crash # unsupported element kind: cases:field
+LayoutTests/fast/url/invalid-urls-utf8_t01: Crash # unsupported element kind: testSet:field
+LayoutTests/fast/url/ipv4_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/url/ipv6_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/url/mailto_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/url/path-url_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/url/path_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/url/port_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/url/query_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/url/relative-unix_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/url/relative-win_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/url/relative_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/url/safari-extension_t01: Crash # unsupported element kind: safariExtensionTestSet:field
+LayoutTests/fast/url/scheme_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/url/segments-from-data-url_t01: Crash # unsupported element kind: cases:field
+LayoutTests/fast/url/segments_t01: Crash # unsupported element kind: cases:field
+LayoutTests/fast/url/standard-url_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/url/trivial-segments_t01: Crash # unsupported element kind: cases:field
+LayoutTests/fast/url/trivial_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
LayoutTests/fast/writing-mode/broken-ideographic-font_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/writing-mode/display-mutation_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/writing-mode/flipped-blocks-hit-test-overflow-scroll_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/writing-mode/flipped-blocks-hit-test-overflow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/writing-mode/flipped-blocks-text-map-local-to-container_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/writing-mode/overhanging-float-legend-crash_t01: Crash # handleStaticFunctionGet: function(crash)
-LayoutTests/fast/writing-mode/percentage-margins-absolute-replaced_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/writing-mode/percentage-margins-absolute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/writing-mode/percentage-padding_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/writing-mode/positionForPoint_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/writing-mode/relative-positioning-percentages_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/writing-mode/table-hit-test_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/writing-mode/vertical-font-vmtx-units-per-em_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/writing-mode/vertical-inline-block-hittest_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xmlhttprequest/null-document-xmlhttprequest-open_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-default-attributes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/writing-mode/overhanging-float-legend-crash_t01: Crash # (crash): handleStaticFunctionGet: function(crash)
+LayoutTests/fast/writing-mode/percentage-margins-absolute-replaced_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/writing-mode/percentage-margins-absolute_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/writing-mode/vertical-font-vmtx-units-per-em_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+LayoutTests/fast/xmlhttprequest/null-document-xmlhttprequest-open_t01: Crash # (checkPass): handleStaticFunctionGet: function(checkPass)
+LayoutTests/fast/xmlhttprequest/xmlhttprequest-default-attributes_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Stream.
LayoutTests/fast/xmlhttprequest/xmlhttprequest-get_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/xmlhttprequest/xmlhttprequest-html-response-encoding_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-invalid-values_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-abort_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-arraybuffer_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-before-open-sync-request_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-before-open_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-document_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-set-at-headers-received_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-sync-request_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-text_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/xmlhttprequest/xmlhttprequest-invalid-values_t01: Crash # (checkExc): handleStaticFunctionGet: function(checkExc)
LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-html-document-responsetype-quirks_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-html-no-responsetype_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-invalid-xml_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-xml-document-responsetype_t01: Crash # unsupported element kind: _asyncCounter:field
LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-xml-text-responsetype_t01: Crash # unsupported element kind: _asyncCounter:field
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-set-responsetype_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-withcredentials-before-open_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Borrowed/cz_20030217_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/4XPath/Borrowed/kd_20010423_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/4XPath/Borrowed/namespace-nodes_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Borrowed/od_20000608_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/4XPath/Borrowed/rs_20010831_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/4XPath/Borrowed/sr_20021217_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/4XPath/Core/test_boolean_expr_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Core/test_literal_expr_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Core/test_location_path_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Core/test_nodeset_expr_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Core/test_node_test_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Core/test_numeric_expr_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Core/test_predicate_list_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/4XPath/Core/test_step_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/ambiguous-operators_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/ancestor-axis_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/attribute-node-predicate_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/attr-namespace_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/attr-namespace_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/complex-id_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/detached-subtree-invalidate-iterator_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/empty-string-substring_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/ensure-null-namespace_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/evaluator-exceptions_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/id-path_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/id-simple_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/implicit-node-args_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/invalid-resolver_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/name-null-namespace_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/nan-to-boolean_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/node-name-case-sensitivity_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/node-name-case-sensitivity_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/nodeset-duplicates_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/position_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/py-dom-xpath/axes_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/py-dom-xpath/data_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/py-dom-xpath/expressions_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/py-dom-xpath/paths_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/reverse-axes_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xpath/substring-after_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/substring-nan-position_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/substring-non-positive-postion_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/xpath-detached-nodes_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xpath/xpath-template-element_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xsl/default-html_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xsl/extra-lf-at-end_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests/fast/xsl/nbsp-in-stylesheet_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LayoutTests/fast/xsl/transformToFragment-XML-declaration_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-abort_t01: Crash # (load): handleStaticFunctionGet: function(load)
+LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-arraybuffer_t01: Crash # (stateChange): handleStaticFunctionGet: function(stateChange)
+LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-document_t01: Crash # (load): handleStaticFunctionGet: function(load)
+LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-set-at-headers-received_t01: Crash # unsupported element kind: _completer:field
+LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-text_t01: Crash # (load): handleStaticFunctionGet: function(load)
+LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t01: Crash # unsupported element kind: LCHILD2:field
+LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t02: Crash # unsupported element kind: CHILD1:field
+LayoutTests/fast/xpath/4XPath/Core/test_location_path_t01: Crash # unsupported element kind: LCHILDREN:field
+LayoutTests/fast/xpath/4XPath/Core/test_node_test_t01: Crash # unsupported element kind: PI2:field
+LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: Crash # unsupported element kind: CHILD3:field
+LayoutTests/fast/xpath/4XPath/Core/test_nodeset_expr_t01: Crash # unsupported element kind: CHILD1:field
+LayoutTests/fast/xpath/4XPath/Core/test_numeric_expr_t01: Crash # unsupported element kind: CHILD1:field
+LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: Crash # unsupported element kind: ROOT:field
+LayoutTests/fast/xpath/4XPath/Core/test_predicate_list_t01: Crash # unsupported element kind: ROOT:field
+LayoutTests/fast/xpath/4XPath/Core/test_step_t01: Crash # unsupported element kind: GCHILD11:field
+LayoutTests/fast/xpath/name-null-namespace_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/xsl/default-html_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LayoutTests/fast/xsl/extra-lf-at-end_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
LayoutTests/fast/xsl/xslt-bad-import-uri_t01: Crash # unsupported element kind: _completer:field
-LayoutTests/fast/xsl/xslt-string-parameters_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Completer/complete_A01_t01: Crash # Please triage this failure.
-LibTest/async/Completer/complete_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Completer/complete_A01_t03: Crash # unsupported element kind: _asyncCounter:field
-LibTest/async/Completer/complete_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Completer/complete_A01_t05: Crash # unsupported element kind: _completer:field
-LibTest/async/Completer/complete_A01_t06: Crash # unsupported element kind: _completer:field
-LibTest/async/Completer/complete_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Completer/complete_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Completer/completeError_A01_t01: Crash # Please triage this failure.
-LibTest/async/Completer/completeError_A01_t02: Crash # (throw error): Unhandled node
+LibTest/async/Completer/Completer_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Completer.
+LibTest/async/Completer/completeError_A01_t01: Crash # unsupported element kind: futures:field
+LibTest/async/Completer/completeError_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Completer/completeError_A01_t03: Crash # unsupported element kind: _completer:field
LibTest/async/Completer/completeError_A01_t04: Crash # unsupported element kind: _completer:field
-LibTest/async/Completer/completeError_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Completer/completeError_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Completer/completeError_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Completer/Completer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Completer/Completer.sync_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Completer/future_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Completer/isCompleted_A01_t01: Crash # Please triage this failure.
-LibTest/async/DeferredLibrary/DeferredLibrary_A01_t01: Crash # (try {lazy.method();}on NoSuchMethodError catch (ok){}): "on T" catch block
-LibTest/async/Future/asStream_A01_t01: Crash # Please triage this failure.
+LibTest/async/Completer/complete_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Completer/complete_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Completer/complete_A01_t03: Crash # unsupported element kind: _asyncCounter:field
+LibTest/async/Completer/complete_A01_t04: Crash # unsupported element kind: futures:field
+LibTest/async/Completer/complete_A01_t05: Crash # unsupported element kind: _completer:field
+LibTest/async/Completer/complete_A01_t06: Crash # unsupported element kind: _completer:field
+LibTest/async/Completer/future_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Future.
+LibTest/async/DeferredLibrary/DeferredLibrary_A01_t01: Crash # (lazy.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+LibTest/async/Future/Future.delayed_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.delayed_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.delayed_A02_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.delayed_A03_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.error_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.error_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.microtask_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.microtask_A01_t03: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.microtask_A01_t04: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.sync_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.sync_A01_t03: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.sync_A01_t04: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.value_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future.value_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future_A01_t03: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/Future_A01_t04: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/asStream_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Future/asStream_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Future/asStream_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Future/asStream_A02_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/catchError_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Future/catchError_A01_t02: Crash # unsupported element kind: _asyncCounter:field
+LibTest/async/Future/catchError_A01_t01: Crash # (onError): handleStaticFunctionGet: function(onError)
+LibTest/async/Future/catchError_A01_t02: Crash # (onError1): handleStaticFunctionGet: function(onError1)
LibTest/async/Future/catchError_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Future/catchError_A03_t01: Crash # unsupported element kind: _asyncCounter:field
LibTest/async/Future/catchError_A03_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Future/catchError_A03_t03: Crash # unsupported element kind: _asyncCounter:field
-LibTest/async/Future/catchError_A03_t04: Crash # (throw error): Unhandled node
-LibTest/async/Future/catchError_A03_t05: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/catchError_A03_t04: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/catchError_A03_t05: Crash # (f): handleStaticFunctionGet: function(f)
LibTest/async/Future/forEach_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Future/forEach_A02_t01: Crash # unsupported element kind: N:field
LibTest/async/Future/forEach_A03_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/Future_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Future/Future_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/Future_A01_t03: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/Future_A01_t04: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/Future.delayed_A01_t01: Crash # Please triage this failure.
-LibTest/async/Future/Future.delayed_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/Future.delayed_A02_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/Future.delayed_A03_t01: Crash # (throw value): Unhandled node
-LibTest/async/Future/Future.error_A01_t01: Crash # Please triage this failure.
-LibTest/async/Future/Future.error_A01_t02: Crash # (throw error): Unhandled node
-LibTest/async/Future/Future.microtask_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Future/Future.microtask_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/Future.microtask_A01_t03: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/Future.microtask_A01_t04: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/Future.sync_A01_t01: Crash # Please triage this failure.
-LibTest/async/Future/Future.sync_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Future/Future.sync_A01_t03: Crash # Please triage this failure.
-LibTest/async/Future/Future.sync_A01_t04: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/Future.value_A01_t01: Crash # Please triage this failure.
-LibTest/async/Future/Future.value_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Future/then_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Future/then_A01_t02: Crash # unsupported element kind: _asyncCounter:field
-LibTest/async/Future/then_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/async/Future/then_A01_t03: Crash # unsupported element kind: _completer:field
LibTest/async/Future/then_A01_t04: Crash # unsupported element kind: _completer:field
LibTest/async/Future/then_A02_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/then_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/async/Future/then_A03_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Future/then_A03_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Future/then_A04_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/then_A05_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/then_A05_t02: Crash # (throw error): Unhandled node
+LibTest/async/Future/then_A05_t01: Crash # (f): handleStaticFunctionGet: function(f)
+LibTest/async/Future/then_A05_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Future/then_A05_t03: Crash # unsupported element kind: _completer:field
LibTest/async/Future/wait_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Future/wait_A01_t03: Crash # unsupported element kind: _completer:field
LibTest/async/Future/wait_A01_t04: Crash # unsupported element kind: _completer:field
LibTest/async/Future/wait_A01_t05: Crash # unsupported element kind: _completer:field
LibTest/async/Future/wait_A01_t06: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/wait_A01_t07: Crash # unsupported element kind: _completer:field
+LibTest/async/Future/wait_A01_t07: Crash # (inc): handleStaticFunctionGet: function(inc)
LibTest/async/Future/wait_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Future/wait_A02_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Future/whenComplete_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Future/whenComplete_A02_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Future/whenComplete_A03_t01: Crash # (throw value): Unhandled node
+LibTest/async/Future/whenComplete_A03_t01: Crash # unsupported element kind: _asyncCounter:field
LibTest/async/Future/whenComplete_A04_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Future/whenComplete_A04_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/Stream.eventTransformed_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/Stream.eventTransformed_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/Stream.fromFuture_A02_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/Stream.fromFuture_A02_t02: Crash # unsupported element kind: error:field
+LibTest/async/Stream/Stream.fromIterable_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/Stream.fromIterable_A02_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/Stream.periodic_A01_t01: Crash # Please triage this failure.
+LibTest/async/Stream/Stream.periodic_A02_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/Stream.periodic_A03_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/any_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/any_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/any_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/asBroadcastStream_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/asBroadcastStream_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Stream/asBroadcastStream_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/async/Stream/asBroadcastStream_A01_t03: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/asBroadcastStream_A01_t04: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/asBroadcastStream_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Stream/asBroadcastStream_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Stream/asBroadcastStream_A03_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/asBroadcastStream_A03_t03: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/asBroadcastStream_A03_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/asBroadcastStream_A03_t02: Crash # (f): handleStaticFunctionGet: function(f)
+LibTest/async/Stream/asBroadcastStream_A03_t03: Crash # (f): handleStaticFunctionGet: function(f)
LibTest/async/Stream/asBroadcastStream_A04_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/asBroadcastStream_A04_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/asBroadcastStream_A04_t03: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/contains_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/contains_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/contains_A03_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/add_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/addError_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/addError_A01_t02: Crash # (throw error0): Unhandled node
-LibTest/async/StreamController/addStream_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/addStream_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/StreamController/addStream_A02_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/addStream_A03_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/addStream_A03_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/close_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/StreamController/close_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/done_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/StreamController/done_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/hasListener_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/hasListener_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/isClosed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/StreamController/isClosed_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/StreamController/isPaused_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/isPaused_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/isPaused_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/sink_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/StreamController/stream_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/StreamController/StreamController_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/StreamController_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/StreamController_A03_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/StreamController_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/StreamController_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/StreamController_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/StreamController_A06_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/StreamController.broadcast_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/StreamController.broadcast_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/StreamController.broadcast_A04_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/StreamController.broadcast_A05_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/StreamController.broadcast_A06_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamController/StreamController.broadcast_A07_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/StreamController.broadcast_A07_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/StreamController/StreamController.broadcast_A08_t01: Crash # (throw new ExpectException(message)): Unhandled node
LibTest/async/Stream/distinct_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/distinct_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Stream/drain_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/async/Stream/distinct_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/drain_A01_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
LibTest/async/Stream/drain_A02_t01: Crash # Please triage this failure.
LibTest/async/Stream/drain_A02_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/elementAt_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/elementAt_A01_t02: Crash # unsupported element kind: _asyncCounter:field
-LibTest/async/Stream/elementAt_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Stream/elementAt_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/async/Stream/elementAt_A01_t02: Crash # (f): handleStaticFunctionGet: function(f)
+LibTest/async/Stream/elementAt_A02_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LibTest/async/Stream/elementAt_A03_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/every_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/every_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/expand_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/first_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/first_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Stream/first_A02_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/first_A03_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/firstWhere_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/firstWhere_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/firstWhere_A03_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/firstWhere_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/async/Stream/firstWhere_A03_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/first_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/first_A02_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/first_A02_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/first_A03_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/fold_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/fold_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/forEach_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/forEach_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/forEach_A02_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/handleError_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/async/Stream/handleError_A01_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
LibTest/async/Stream/handleError_A02_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/handleError_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Stream/handleError_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Stream/handleError_A04_t02: Crash # (throw error): Unhandled node
+LibTest/async/Stream/handleError_A03_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LibTest/async/Stream/handleError_A04_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/handleError_A04_t02: Crash # unsupported element kind: _asyncCounter:field
LibTest/async/Stream/handleError_A04_t03: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/isBroadcast_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Stream/isBroadcast_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
LibTest/async/Stream/isEmpty_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamIterator/cancel_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamIterator/current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/StreamIterator/moveNext_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamIterator/moveNext_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamIterator/StreamIterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/async/Stream/join_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/join_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/join_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/join_A02_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/last_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/last_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Stream/last_A03_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/lastWhere_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/lastWhere_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/lastWhere_A03_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/lastWhere_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/async/Stream/lastWhere_A04_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/last_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/last_A02_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/last_A03_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/length_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/listen_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/listen_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/listen_A03_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/listen_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Stream/listen_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Stream/listen_A05_t02: Crash # (throw error): Unhandled node
-LibTest/async/Stream/listen_A05_t03: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/async/Stream/listen_A04_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LibTest/async/Stream/listen_A05_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/listen_A05_t02: Crash # unsupported element kind: _asyncCounter:field
+LibTest/async/Stream/listen_A05_t03: Crash # unsupported element kind: _asyncCounter:field
LibTest/async/Stream/listen_A06_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/map_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/pipe_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/reduce_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/reduce_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/reduce_A01_t03: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/single_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/single_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/async/Stream/singleWhere_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/singleWhere_A02_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamSink/add_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamSink/addError_A01_t01: Crash # (throw 2): Unhandled node
-LibTest/async/StreamSink/addStream_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamSink/addStream_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamSink/addStream_A01_t03: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamSink/addStream_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/StreamSink/addStream_A01_t05: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamSink/close_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamSink/done_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/async/Stream/single_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/single_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/skipWhile_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/Stream.eventTransformed_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/Stream.eventTransformed_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/Stream.fromFuture_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Stream/Stream.fromFuture_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Stream/Stream.fromFuture_A02_t02: Crash # unsupported element kind: error:field
-LibTest/async/Stream/Stream.fromIterable_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Stream/Stream.fromIterable_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/Stream.fromIterable_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Stream/Stream.periodic_A01_t01: Crash # Please triage this failure.
-LibTest/async/Stream/Stream.periodic_A02_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/Stream.periodic_A03_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/take_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/take_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Stream/take_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/async/Stream/skip_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/takeWhile_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/take_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/take_A01_t02: Crash # Instance of 'TypeOperator': type casts not implemented.
+LibTest/async/Stream/take_A01_t03: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/toList_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/toSet_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/transform_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Stream/transform_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamTransformer/bind_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamTransformer/StreamTransformer_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/async/Stream/where_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Stream/where_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController.broadcast_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController.broadcast_A03_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController.broadcast_A04_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController.broadcast_A05_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController.broadcast_A06_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController.broadcast_A07_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController.broadcast_A07_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController.broadcast_A08_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController_A02_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController_A03_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController_A05_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController_A06_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/StreamController_A06_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/addError_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/addError_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/addStream_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/addStream_A02_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/addStream_A02_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/addStream_A03_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/addStream_A03_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/add_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/close_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Future.
+LibTest/async/StreamController/close_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/done_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Future.
+LibTest/async/StreamController/done_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamController/sink_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for StreamSink.
+LibTest/async/StreamController/stream_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Stream.
+LibTest/async/StreamIterator/StreamIterator_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for StreamIterator.
+LibTest/async/StreamIterator/cancel_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamIterator/moveNext_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamIterator/moveNext_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamSink/addError_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamSink/addStream_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamSink/addStream_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamSink/addStream_A01_t03: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamSink/addStream_A01_t05: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamSink/add_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamSink/close_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamSink/done_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t03: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t04: Crash # unsupported element kind: _completer:field
LibTest/async/StreamTransformer/StreamTransformer_A01_t03: Crash # unsupported element kind: _completer:field
LibTest/async/StreamTransformer/StreamTransformer_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/async/StreamTransformer/StreamTransformer_A02_t02: Crash # unsupported element kind: _completer:field
LibTest/async/StreamTransformer/StreamTransformer_A03_t01: Crash # unsupported element kind: _completer:field
LibTest/async/StreamTransformer/StreamTransformer_A03_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t04: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/where_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Stream/where_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Timer/cancel_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Timer/isActive_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Timer/isActive_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Timer/run_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Timer/run_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Timer/Timer_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Timer/Timer_A02_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/StreamTransformer/bind_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Timer/Timer.periodic_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Timer/Timer.periodic_A02_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Zone/bindBinaryCallback_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/bindBinaryCallback_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/bindCallback_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/bindCallback_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/bindUnaryCallback_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/bindUnaryCallback_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/async/Timer/Timer_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Timer/Timer_A02_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Timer/cancel_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Timer/isActive_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Timer/isActive_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Timer/run_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/async/Timer/run_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/async/Zone/bindBinaryCallback_A01_t02: Crash # (handler): handleStaticFunctionGet: function(handler)
+LibTest/async/Zone/bindCallback_A01_t02: Crash # (handler): handleStaticFunctionGet: function(handler)
+LibTest/async/Zone/bindUnaryCallback_A01_t02: Crash # (handler): handleStaticFunctionGet: function(handler)
LibTest/async/Zone/createPeriodicTimer_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/async/Zone/createTimer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/current_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/async/Zone/createTimer_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Zone/current_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/async/Zone/fork_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/handleUncaughtError_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Zone/handleUncaughtError_A01_t02: Crash # (throw error): Unhandled node
-LibTest/async/Zone/handleUncaughtError_A01_t03: Crash # (throw count): Unhandled node
-LibTest/async/Zone/handleUncaughtError_A01_t04: Crash # (throw count): Unhandled node
-LibTest/async/Zone/inSameErrorZone_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/async/Zone/handleUncaughtError_A01_t01: Crash # (test): handleStaticFunctionGet: function(test)
+LibTest/async/Zone/handleUncaughtError_A01_t02: Crash # (myErrorHandler): handleStaticFunctionGet: function(myErrorHandler)
+LibTest/async/Zone/handleUncaughtError_A01_t03: Crash # (test): handleStaticFunctionGet: function(test)
+LibTest/async/Zone/handleUncaughtError_A01_t04: Crash # (test): handleStaticFunctionGet: function(test)
+LibTest/async/Zone/inSameErrorZone_A01_t01: Crash # (same): handleStaticFunctionGet: function(same)
LibTest/async/Zone/inSameErrorZone_A01_t02: Crash # unsupported element kind: _asyncCounter:field
-LibTest/async/Zone/inSameErrorZone_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Zone/inSameErrorZone_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/async/Zone/inSameErrorZone_A01_t03: Crash # unsupported element kind: _completer:field
+LibTest/async/Zone/inSameErrorZone_A01_t04: Crash # unsupported element kind: _completer:field
LibTest/async/Zone/inSameErrorZone_A01_t05: Crash # unsupported element kind: _completer:field
-LibTest/async/Zone/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/async/Zone/parent_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/registerBinaryCallback_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/registerCallback_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/registerUnaryCallback_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/ROOT_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/run_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/runBinary_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/runBinaryGuarded_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/runGuarded_A01_t01: Crash # (throw 0): Unhandled node
-LibTest/async/Zone/runUnary_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/async/Zone/runUnaryGuarded_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/async/Zone/registerBinaryCallback_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for ZoneBinaryCallback.
+LibTest/async/Zone/registerCallback_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for ZoneCallback.
+LibTest/async/Zone/registerUnaryCallback_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for ZoneUnaryCallback.
+LibTest/async/Zone/runBinaryGuarded_A01_t01: Crash # (errorHandler): handleStaticFunctionGet: function(errorHandler)
+LibTest/async/Zone/runGuarded_A01_t01: Crash # (errorHandler): handleStaticFunctionGet: function(errorHandler)
+LibTest/async/Zone/runUnaryGuarded_A01_t01: Crash # (errorHandler): handleStaticFunctionGet: function(errorHandler)
LibTest/async/Zone/scheduleMicrotask_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/async/Zone/scheduleMicrotask_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/collection/DoubleLinkedQueue/add_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/add_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/addAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/addAll_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/addFirst_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/addFirst_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/addLast_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/addLast_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/any_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/clear_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue_class_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue.from_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue.from_A01_t02: Crash # cannot compile methods that need interceptor calling convention.
-LibTest/collection/DoubleLinkedQueue/elementAt_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/elementAt_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/every_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/every_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/expand_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/expand_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/first_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/first_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/firstEntry_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/firstEntry_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/firstWhere_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/forEach_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/forEach_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/forEach_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/forEach_A01_t04: Crash # "on T" catch block
-LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t04: Crash # "on T" catch block
-LibTest/collection/DoubleLinkedQueue/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/iterator_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/iterator_current_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/iterator_moveNext_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/join_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/last_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/last_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/lastEntry_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/lastEntry_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/lastWhere_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/length_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/remove_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/removeFirst_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/removeFirst_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/removeLast_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/removeLast_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/removeWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/retainWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/singleWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/singleWhere_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/skip_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/skipWhile_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/skipWhile_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/takeWhile_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/takeWhile_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/toList_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/toList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/DoubleLinkedQueue/toList_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/toString_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/DoubleLinkedQueue/where_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/HashMap/allTests_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/HashMap/allTests_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/HashMap/HashMap_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/HashMap/HashMap.from_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/HashMap/HashMap.from_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/HashSet/HashSet_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/HashSet/HashSet_class_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/HashSet/HashSet.from_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/HashSet/HashSet.from_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/HasNextIterator/HasNextIterator_class_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/IterableBase/IterableBase_class_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/IterableBase/IterableBase_class_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/IterableMixin/IterableMixin_class_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/IterableMixin/IterableMixin_class_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedHashMap/LinkedHashMap_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedHashMap/LinkedHashMap_class_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedHashMap/LinkedHashMap_class_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedHashMap/LinkedHashMap_class_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedHashMap/LinkedHashMap.from_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedHashMap/LinkedHashMap.from_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedHashSet/LinkedHashSet_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedHashSet/LinkedHashSet_class_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedHashSet/LinkedHashSet_class_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedHashSet/LinkedHashSet.from_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedHashSet/LinkedHashSet.from_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/add_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/add_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/addAll_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/addAll_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/addAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/addFirst_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/addFirst_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/clear_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/elementAt_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/every_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/every_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/every_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/expand_A02_t01: Crash # (throw new Exception("should not be called")): Unhandled node
-LibTest/collection/LinkedList/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/first_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/firstWhere_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/forEach_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/forEach_A01_t02: Crash # (try {var i=1;String s=i;return false;}on TypeError catch (e){return true;}): "on T" catch block
-LibTest/collection/LinkedList/forEach_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/iterator_current_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/join_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/last_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/lastWhere_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/lastWhere_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/length_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/LinkedList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/ListQueue.from_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/remove_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/singleWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/singleWhere_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/skip_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/skipWhile_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/skipWhile_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/skipWhile_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/takeWhile_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/LinkedList/takeWhile_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/toList_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/toList_A01_t02: Crash # cannot compile methods that need interceptor calling convention.
-LibTest/collection/LinkedList/toList_A01_t03: Crash # (try {l.clear();failures.add("clear");}on UnsupportedError catch (ok){}): "on T" catch block
-LibTest/collection/LinkedList/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/where_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/LinkedList/where_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/ListBase/ListBase_class_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/ListBase/ListBase_class_A01_t02: Crash # Please triage this failure.
-LibTest/collection/ListMixin/ListMixin_class_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/ListMixin/ListMixin_class_A01_t02: Crash # Please triage this failure.
-LibTest/collection/ListQueue/ListQueue_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/ListQueue/ListQueue_class_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/ListQueue/ListQueue.from_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/ListQueue/ListQueue.from_A01_t02: Crash # cannot compile methods that need interceptor calling convention.
-LibTest/collection/ListQueue/ListQueue.from_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/Maps/containsValue_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/forEach_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/forEach_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/Maps/forEach_A01_t04: Crash # "on T" catch block
-LibTest/collection/Maps/forEach_A01_t06: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/forEach_A01_t08: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/forEach_A02_t01: Crash # "on T" catch block
-LibTest/collection/Maps/getValues_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/length_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/mapToString_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/mapToString_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/Maps/putIfAbsent_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/putIfAbsent_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/putIfAbsent_A01_t04: Crash # "on T" catch block
-LibTest/collection/Maps/putIfAbsent_A01_t06: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/putIfAbsent_A01_t07: Crash # "on T" catch block
-LibTest/collection/Maps/putIfAbsent_A01_t08: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Maps/putIfAbsent_A01_t09: Crash # handleStaticFunctionGet: function(A#f)
-LibTest/collection/Maps/putIfAbsent_A01_t10: Crash # "on T" catch block
-LibTest/collection/Maps/putIfAbsent_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Queue/Queue_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Queue/Queue_class_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/collection/Queue/Queue.from_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/collection/Queue/Queue.from_A01_t02: Crash # cannot compile methods that need interceptor calling convention.
-LibTest/collection/Queue/Queue.from_A02_t01: Crash # "on T" catch block
-LibTest/collection/SplayTreeMap/allTests_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/convert/JsonCodec/decode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/convert/JsonCodec/decode_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/convert/JsonCodec/decode_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/convert/JsonCodec/encode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/convert/JsonCodec/encode_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/convert/JsonCodec/encode_A02_t01: Crash # "on T" catch block
-LibTest/convert/JsonCodec/encode_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/convert/JsonCodec/encode_A02_t03: Crash # "on T" catch block
-LibTest/convert/JsonCodec/encode_A03_t01: Crash # "on T" catch block
-LibTest/convert/JsonCodec/JsonCodec_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/convert/JsonCodec/JsonCodec.withReviver_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/convert/JsonDecoder/convert_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/convert/JsonDecoder/convert_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/convert/JsonDecoder/convert_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/convert/JsonDecoder/fuse_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/convert/JsonEncoder/convert_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/convert/JsonEncoder/convert_A02_t01: Crash # "on T" catch block
-LibTest/convert/JsonEncoder/fuse_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/AbstractClassInstantiationError/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/ArgumentError/ArgumentError_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/ArgumentError/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/AssertionError/AssertionError_A01_t01: Crash # "on T" catch block
-LibTest/core/AssertionError/toString_A01_t01: Crash # "on T" catch block
-LibTest/core/bool/toString_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/bool/toString_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/add_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/add_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/add_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/add_A02_t01: Crash # "on T" catch block
-LibTest/core/DateTime/compareTo_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/DateTime_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/DateTime_A01_t02: Crash # "on T" catch block
-LibTest/core/DateTime/DateTime_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/DateTime_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/DateTime.fromMillisecondsSinceEpoch_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/DateTime.fromMillisecondsSinceEpoch_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/DateTime.fromMillisecondsSinceEpoch_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/DateTime.now_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/DateTime.now_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/DateTime.now_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/DateTime.utc_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/day_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/difference_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/difference_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/difference_A02_t01: Crash # "on T" catch block
-LibTest/core/DateTime/hashCode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/hashCode_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/hour_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/isAfter_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/isAtSameMomentAs_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/isBefore_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/isUtc_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/millisecond_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/millisecondsSinceEpoch_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/minute_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/month_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/parse_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/parse_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/parse_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/second_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/subtract_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/subtract_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/subtract_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/subtract_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/timeZoneName_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/timeZoneOffset_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/toLocal_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/toString_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/toString_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/DateTime/toUtc_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/weekday_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/DateTime/year_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/abs_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/abs_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/abs_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/abs_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/abs_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceil_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceil_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceil_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceil_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceil_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceil_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceil_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceilToDouble_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceilToDouble_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceilToDouble_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceilToDouble_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceilToDouble_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/ceilToDouble_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/ceilToDouble_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/compareTo_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/compareTo_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/compareTo_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/double_class_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/floor_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/floor_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/floor_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/floor_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/floor_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/floorToDouble_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/floorToDouble_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/floorToDouble_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/floorToDouble_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/floorToDouble_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/floorToDouble_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/INFINITY_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/INFINITY_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/INFINITY_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/INFINITY_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/isInfinite_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/isInfinite_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/isInfinite_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/isNaN_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/isNaN_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/isNaN_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/isNegative_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/isNegative_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/NAN_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/NAN_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/NAN_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/NAN_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/NEGATIVE_INFINITY_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/NEGATIVE_INFINITY_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/NEGATIVE_INFINITY_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/NEGATIVE_INFINITY_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_addition_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_addition_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_addition_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_addition_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_addition_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_addition_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_addition_A01_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_addition_A01_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_addition_A02_t01: Crash # (try {d+null;Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/double/operator_division_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_division_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_division_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_division_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_division_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_division_A01_t06: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_division_A01_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_division_A01_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_division_A01_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_division_A01_t10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_division_A01_t11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_division_A01_t12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_division_A02_t01: Crash # (try {d/null;Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/double/operator_GE_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_GE_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_GE_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_GE_A02_t01: Crash # (try {d>=null;Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/double/operator_GT_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_GT_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_GT_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_GT_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_GT_A02_t01: Crash # (try {d>null;Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/double/operator_LE_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_LE_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_LE_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_LE_A02_t01: Crash # (try {d<=null;Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/double/operator_LT_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_LT_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_LT_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_LT_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_LT_A02_t01: Crash # (try {d<null;Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/double/operator_multiplication_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_multiplication_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_multiplication_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_multiplication_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_multiplication_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_multiplication_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_multiplication_A01_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_multiplication_A01_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_multiplication_A01_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_multiplication_A02_t01: Crash # (try {d*null;Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/double/operator_remainder_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_remainder_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_remainder_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_remainder_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_remainder_A01_t05: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_remainder_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_remainder_A01_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_remainder_A02_t01: Crash # (try {val%null;Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/double/operator_subtraction_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_subtraction_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_subtraction_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_subtraction_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_subtraction_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_subtraction_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_subtraction_A01_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_subtraction_A01_t08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_subtraction_A01_t09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_subtraction_A02_t01: Crash # (try {d-null;Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/double/operator_truncating_division_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_truncating_division_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_truncating_division_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_truncating_division_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_truncating_division_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_truncating_division_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_truncating_division_A01_t07: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_truncating_division_A01_t08: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_truncating_division_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_unary_minus_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_unary_minus_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/operator_unary_minus_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/operator_unary_minus_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/parse_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/parse_A02_t01: Crash # "on T" catch block
-LibTest/core/double/remainder_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/remainder_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/remainder_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/remainder_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/remainder_A01_t05: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/remainder_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/remainder_A01_t07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/remainder_A02_t01: Crash # "on T" catch block
-LibTest/core/double/round_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/round_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/round_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/round_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/round_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/round_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/roundToDouble_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/roundToDouble_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/roundToDouble_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/roundToDouble_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/roundToDouble_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/roundToDouble_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toDouble_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toDouble_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/toDouble_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toInt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toInt_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toInt_A01_t03: Crash # Please triage this failure.
-LibTest/core/double/toInt_A01_t04: Crash # Please triage this failure.
-LibTest/core/double/toInt_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toInt_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsExponential_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsExponential_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsExponential_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsExponential_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsExponential_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsExponential_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsExponential_A02_t01: Crash # Please triage this failure.
-LibTest/core/double/toStringAsFixed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsFixed_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsFixed_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsFixed_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsFixed_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsFixed_A02_t01: Crash # Please triage this failure.
-LibTest/core/double/toStringAsFixed_A02_t02: Crash # Please triage this failure.
-LibTest/core/double/toStringAsFixed_A02_t03: Crash # Please triage this failure.
-LibTest/core/double/toStringAsPrecision_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsPrecision_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsPrecision_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsPrecision_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsPrecision_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/toStringAsPrecision_A01_t06: Crash # Please triage this failure.
-LibTest/core/double/toStringAsPrecision_A01_t07: Crash # Please triage this failure.
-LibTest/core/double/toStringAsPrecision_A01_t08: Crash # Please triage this failure.
-LibTest/core/double/toStringAsPrecision_A02_t01: Crash # "on T" catch block
-LibTest/core/double/truncate_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/truncate_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/truncate_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/truncate_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/truncate_A02_t01: Crash # "on T" catch block
-LibTest/core/double/truncate_A02_t02: Crash # "on T" catch block
-LibTest/core/double/truncateToDouble_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/truncateToDouble_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/truncateToDouble_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/double/truncateToDouble_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/truncateToDouble_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/double/truncateToDouble_A01_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/compareTo_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/compareTo_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/Duration_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/Duration_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/Duration_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/HOURS_PER_DAY_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/inDays_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/inHours_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/inMilliseconds_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/inMinutes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/inSeconds_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/MILLISECONDS_PER_DAY_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/MILLISECONDS_PER_HOUR_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/MILLISECONDS_PER_MINUTE_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/MILLISECONDS_PER_SECOND_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/MINUTES_PER_DAY_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/MINUTES_PER_HOUR_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/operator_div_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/operator_eq_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/operator_gt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/operator_gte_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/operator_lt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/operator_lte_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/operator_minus_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/operator_mult_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/operator_plus_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/SECONDS_PER_DAY_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/SECONDS_PER_HOUR_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Duration/SECONDS_PER_MINUTE_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Expando/Expando_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Expando/Expando_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Expando/Expando_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Expando/Expando_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Expando/Expando_A03_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Expando/Expando_A03_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Expando/Expando_A03_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Expando/Expando_A03_t05: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Expando/Expando_A03_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Expando/Expando_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Expando/Expando_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/FallThroughError/toString_A01_t01: Crash # "on T" catch block
-LibTest/core/FallThroughError/toString_A01_t02: Crash # "on T" catch block
-LibTest/core/FormatException/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Function/apply_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Function/Function_class_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/abs_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/ceil_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/ceilToDouble_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/compareTo_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/compareTo_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/IntegerDivisionByZeroException/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/floor_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/floorToDouble_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/isEven_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/isInfinite_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/isNaN_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/isNegative_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/isOdd_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/operator_addition_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/operator_AND_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/operator_division_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/operator_division_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/operator_division_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/operator_GE_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/operator_GT_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/operator_LE_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/operator_left_shift_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/operator_left_shift_A01_t03: Crash # "on T" catch block
-LibTest/core/int/operator_LT_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/operator_multiplication_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/operator_NOT_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/operator_OR_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/operator_remainder_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/operator_remainder_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/operator_remainder_A01_t03: Crash # "on T" catch block
-LibTest/core/int/operator_right_shift_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/operator_right_shift_A01_t03: Crash # "on T" catch block
-LibTest/core/int/operator_subtraction_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/operator_truncating_division_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/operator_truncating_division_A01_t02: Crash # "on T" catch block
-LibTest/core/int/operator_unary_minus_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/operator_XOR_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/parse_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/parse_A02_t01: Crash # "on T" catch block
-LibTest/core/int/remainder_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/remainder_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/remainder_A01_t03: Crash # "on T" catch block
-LibTest/core/int/round_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/roundToDouble_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/toDouble_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/toInt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/toRadixString_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/int/toRadixString_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/toStringAsExponential_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/toStringAsExponential_A02_t01: Crash # Please triage this failure.
-LibTest/core/int/toStringAsExponential_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/toStringAsFixed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/toStringAsFixed_A02_t01: Crash # Please triage this failure.
-LibTest/core/int/toStringAsPrecision_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/toStringAsPrecision_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/truncate_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/int/truncateToDouble_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Invocation/isAccessor_A01_t01: Crash # (super.foo): Error expression `super.foo` unhandled.
-LibTest/core/Invocation/isAccessor_A01_t02: Crash # (super.foo()): Error expression `super.foo()` unhandled.
-LibTest/core/Invocation/isGetter_A01_t01: Crash # (super.foo): Error expression `super.foo` unhandled.
-LibTest/core/Invocation/isGetter_A01_t02: Crash # (super.foo()): Error expression `super.foo()` unhandled.
-LibTest/core/Invocation/isMethod_A01_t01: Crash # (super.foo()): Error expression `super.foo()` unhandled.
-LibTest/core/Invocation/isMethod_A01_t02: Crash # (super.foo): Error expression `super.foo` unhandled.
-LibTest/core/Invocation/isSetter_A01_t01: Crash # (super.bar=1): Error expression `super.bar=1` unhandled.
-LibTest/core/Invocation/isSetter_A01_t02: Crash # (super.foo()): Error expression `super.foo()` unhandled.
-LibTest/core/Invocation/memberName_A01_t01: Crash # (super.foo): Error expression `super.foo` unhandled.
-LibTest/core/Invocation/namedArguments_A01_t01: Crash # (super.foo): Error expression `super.foo` unhandled.
-LibTest/core/Invocation/positionalArguments_A01_t01: Crash # (super.foo): Error expression `super.foo` unhandled.
-LibTest/core/Iterable/Iterable.generate_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/List/List_A01_t01: Crash # (try {a[0]=1;Expect.fail("expected RangeError");}on RangeError catch (ok){}): "on T" catch block
-LibTest/core/List/List_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/List/List_A02_t01: Crash # "on T" catch block
-LibTest/core/List/List_A03_t01: Crash # "on T" catch block
-LibTest/core/List/List_class_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/List/List_class_A01_t02: Crash # Please triage this failure.
-LibTest/core/List/List.filled_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/List/List.from_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/List/List.from_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/List/List.from_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/List/List.generate_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/List/List.generate_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/List/List.generate_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/List/removeAt_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Map/allTests_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Map/Map_A01_t01: Crash # unimplemented translation of type expression SomeFunction
-LibTest/core/Map/Map_class_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Map/Map_class_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Map/Map_class_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Map/Map_class_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Map/Map_class_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Match/end_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Match/group_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Match/group_A02_t01: Crash # "on T" catch block
-LibTest/core/Match/groupCount_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Match/groups_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Match/groups_A02_t01: Crash # "on T" catch block
-LibTest/core/Match/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Match/operator_subscript_A02_t01: Crash # (try {m[index];Expect.fail("RangeError is expected");}on RangeError catch (e){}): "on T" catch block
-LibTest/core/Match/pattern_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Match/start_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Match/str_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/NoSuchMethodError/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Null/Null_class_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Null/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Object/operator_equality_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Object/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/OutOfMemoryError/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RangeError/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RegExp/allMatches_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RegExp/allMatches_A02_t01: Crash # "on T" catch block
-LibTest/core/RegExp/firstMatch_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/firstMatch_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RegExp/firstMatch_A03_t01: Crash # "on T" catch block
-LibTest/core/RegExp/hasMatch_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/hasMatch_A02_t01: Crash # (try {re.hasMatch(null);Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/RegExp/isCaseSensitive_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RegExp/isMultiLine_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RegExp/pattern_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A03_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A03_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_AtomEscape_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClass_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClass_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue_class_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/DoubleLinkedQueue/elementAt_A02_t01: Crash # unsupported element kind: queue:field
+LibTest/collection/DoubleLinkedQueue/expand_A01_t02: Crash # (f): handleStaticFunctionGet: function(f)
+LibTest/collection/DoubleLinkedQueue/expand_A02_t01: Crash # (f): handleStaticFunctionGet: function(f)
+LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t04: RuntimeError # Please triage this failure.
+LibTest/collection/DoubleLinkedQueue/forEach_A01_t04: RuntimeError # Please triage this failure.
+LibTest/collection/DoubleLinkedQueue/iterator_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Iterator.
+LibTest/collection/DoubleLinkedQueue/map_A01_t01: Crash # (f): handleStaticFunctionGet: function(f)
+LibTest/collection/DoubleLinkedQueue/map_A02_t01: Crash # (f): handleStaticFunctionGet: function(f)
+LibTest/collection/DoubleLinkedQueue/map_A03_t01: Crash # (f): handleStaticFunctionGet: function(f)
+LibTest/collection/DoubleLinkedQueue/skipWhile_A02_t01: Crash # (test): handleStaticFunctionGet: function(test)
+LibTest/collection/DoubleLinkedQueue/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/collection/DoubleLinkedQueue/takeWhile_A02_t01: Crash # (test): handleStaticFunctionGet: function(test)
+LibTest/collection/DoubleLinkedQueue/toList_A01_t03: Crash # unsupported element kind: failures:field
+LibTest/collection/HashMap/HashMap_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for HashMap.
+LibTest/collection/HashMap/allTests_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/HashMap/allTests_A01_t02: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/HashSet/HashSet_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for HashSet.
+LibTest/collection/HashSet/HashSet_class_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/IterableBase/IterableBase_class_A01_t02: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/LinkedHashMap/LinkedHashMap_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for LinkedHashMap.
+LibTest/collection/LinkedHashMap/LinkedHashMap_class_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/LinkedHashMap/LinkedHashMap_class_A01_t02: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/LinkedHashSet/LinkedHashSet_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for LinkedHashSet.
+LibTest/collection/LinkedHashSet/LinkedHashSet_class_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/LinkedList/any_A01_t01: Crash # (isOne): handleStaticFunctionGet: function(isOne)
+LibTest/collection/LinkedList/every_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Set.
+LibTest/collection/LinkedList/every_A01_t02: Crash # (allTrue): handleStaticFunctionGet: function(allTrue)
+LibTest/collection/LinkedList/every_A02_t02: Crash # (allTrue): handleStaticFunctionGet: function(allTrue)
+LibTest/collection/LinkedList/forEach_A02_t01: Crash # unsupported element kind: list:field
+LibTest/collection/LinkedList/lastWhere_A02_t01: Crash # unsupported element kind: noneMatches:field
+LibTest/collection/LinkedList/map_A01_t01: Crash # (f): handleStaticFunctionGet: function(f)
+LibTest/collection/LinkedList/map_A02_t01: Crash # (f): handleStaticFunctionGet: function(f)
+LibTest/collection/LinkedList/map_A03_t01: Crash # (f): handleStaticFunctionGet: function(f)
+LibTest/collection/LinkedList/skipWhile_A02_t01: Crash # (test): handleStaticFunctionGet: function(test)
+LibTest/collection/LinkedList/takeWhile_A02_t01: Crash # (test): handleStaticFunctionGet: function(test)
+LibTest/collection/LinkedList/toList_A01_t03: Crash # unsupported element kind: failures:field
+LibTest/collection/LinkedList/where_A02_t01: Crash # (test): handleStaticFunctionGet: function(test)
+LibTest/collection/ListBase/ListBase_class_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/ListBase/ListBase_class_A01_t02: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/ListMixin/ListMixin_class_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/ListMixin/ListMixin_class_A01_t02: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/ListQueue/ListQueue_class_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/Maps/putIfAbsent_A01_t09: Crash # (A.f): handleStaticFunctionGet: function(A#f)
+LibTest/collection/Queue/Queue_class_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/collection/SplayTreeMap/allTests_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/convert/JsonCodec/JsonCodec.withReviver_A01_t01: Crash # (reviver): handleStaticFunctionGet: function(reviver)
+LibTest/convert/JsonCodec/JsonCodec_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Codec.
+LibTest/convert/JsonCodec/decode_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/convert/JsonCodec/decode_A02_t01: Crash # (reviver): handleStaticFunctionGet: function(reviver)
+LibTest/convert/JsonCodec/decode_A03_t01: Crash # unsupported element kind: table:field
+LibTest/convert/JsonCodec/encode_A01_t01: Crash # unsupported element kind: table:field
+LibTest/convert/JsonCodec/encode_A01_t02: Crash # unsupported element kind: table:field
+LibTest/convert/JsonCodec/encode_A02_t01: Crash # unsupported element kind: table:field
+LibTest/convert/JsonCodec/encode_A02_t03: Crash # unsupported element kind: table:field
+LibTest/convert/JsonCodec/encode_A03_t01: Crash # unsupported element kind: table:field
+LibTest/convert/JsonDecoder/convert_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/convert/JsonDecoder/convert_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/convert/JsonDecoder/convert_A03_t01: Crash # unsupported element kind: table:field
+LibTest/convert/JsonDecoder/fuse_A01_t01: Crash # unsupported element kind: table:field
+LibTest/convert/JsonEncoder/convert_A01_t01: Crash # unsupported element kind: table:field
+LibTest/convert/JsonEncoder/convert_A02_t01: Crash # unsupported element kind: table:field
+LibTest/convert/JsonEncoder/fuse_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/core/Duration/compareTo_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Comparable.
+LibTest/core/FallThroughError/toString_A01_t02: Crash # Unhandled node
+LibTest/core/Function/Function_class_A01_t01: Crash # (foo): handleStaticFunctionGet: function(foo)
+LibTest/core/Function/apply_A01_t01: Crash # (foo): handleStaticFunctionGet: function(foo)
+LibTest/core/Invocation/isAccessor_A01_t01: RuntimeError # Please triage this failure.
+LibTest/core/Invocation/isGetter_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/core/Invocation/isGetter_A01_t02: RuntimeError # Please triage this failure.
+LibTest/core/Invocation/isMethod_A01_t02: RuntimeError # Please triage this failure.
+LibTest/core/Invocation/isSetter_A01_t01: Crash # Please triage this failure.
+LibTest/core/Invocation/memberName_A01_t01: RuntimeError # Please triage this failure.
+LibTest/core/Invocation/namedArguments_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/core/Invocation/positionalArguments_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/core/List/List.from_A01_t03: Crash # unsupported element kind: failures:field
+LibTest/core/List/List.generate_A01_t03: Crash # unsupported element kind: failures:field
+LibTest/core/List/List_A01_t03: Crash # unsupported element kind: failures:field
+LibTest/core/List/List_class_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/core/List/List_class_A01_t02: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/core/List/removeAt_A02_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/core/Map/Map_A01_t01: Crash # Please triage this failure.
+LibTest/core/Map/allTests_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/core/Object/operator_equality_A01_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+LibTest/core/Object/toString_A01_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A03_t01: Crash # Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A06_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A07_t01: Crash # Please triage this failure.
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A08_t01: Crash # Please triage this failure.
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A08_t02: Crash # Please triage this failure.
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A09_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t02: Crash # Please triage this failure.
-LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Disjunction_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: Crash # "on T" catch block
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t03: Crash # "on T" catch block
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t04: Crash # Please triage this failure.
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t05: Crash # Please triage this failure.
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t06: Crash # Please triage this failure.
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
LibTest/core/RegExp/Pattern_semantics/splitQueryString_A02_t01: Crash # Unhandled node
-LibTest/core/RegExp/RegExp_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RegExp/RegExp_A01_t03: Crash # "on T" catch block
-LibTest/core/RegExp/RegExp_A01_t04: Crash # "on T" catch block
-LibTest/core/RegExp/stringMatch_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RegExp/stringMatch_A02_t01: Crash # "on T" catch block
-LibTest/core/RuneIterator/current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/current_A01_t02: Crash # "on T" catch block
-LibTest/core/RuneIterator/currentAsString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/currentAsString_A01_t02: Crash # "on T" catch block
-LibTest/core/RuneIterator/currentAsString_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/currentAsString_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RuneIterator/currentSize_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/currentSize_A01_t02: Crash # "on T" catch block
-LibTest/core/RuneIterator/currentSize_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RuneIterator/moveNext_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RuneIterator/movePrevious_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RuneIterator/movePrevious_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RuneIterator/movePrevious_A02_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RuneIterator/rawIndex_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/rawIndex_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RuneIterator/rawIndex_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/rawIndex_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/rawIndex_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/rawIndex_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/reset_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RuneIterator/reset_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/reset_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/reset_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/reset_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/reset_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/RuneIterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/RuneIterator.at_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/RuneIterator.at_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/RuneIterator/RuneIterator.at_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/RuneIterator.at_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/RuneIterator.at_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/string_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/RuneIterator/string_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Runes/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Runes/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/core/Runes/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Runes/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/first_A01_t02: Crash # "on T" catch block
-LibTest/core/Runes/first_A02_t01: Crash # "on T" catch block
-LibTest/core/Runes/first_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/core/Runes/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/forEach_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Runes/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/core/Runes/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Runes/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/core/Runes/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/iterator_A01_t02: Crash # "on T" catch block
-LibTest/core/Runes/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Runes/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Runes/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/last_A01_t02: Crash # "on T" catch block
-LibTest/core/Runes/last_A02_t01: Crash # "on T" catch block
-LibTest/core/Runes/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/core/Runes/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/length_A01_t02: Crash # "on T" catch block
-LibTest/core/Runes/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Runes/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/reduce_A02_t01: Crash # "on T" catch block
-LibTest/core/Runes/Runes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/single_A01_t02: Crash # "on T" catch block
-LibTest/core/Runes/single_A02_t01: Crash # "on T" catch block
-LibTest/core/Runes/single_A02_t02: Crash # "on T" catch block
-LibTest/core/Runes/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/core/Runes/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/core/Runes/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Runes/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/skipWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/string_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/string_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/takeWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/toList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/toList_A02_t01: Crash # "on T" catch block
-LibTest/core/Runes/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Runes/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Runes/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Set/add_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/add_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/add_A01_t06: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/addAll_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/addAll_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/clear_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/contains_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/containsAll_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/containsAll_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/every_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/every_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/forEach_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/forEach_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/forEach_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/forEach_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/forEach_A01_t05: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/intersection_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/intersection_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/intersection_A02_t01: Crash # (try {res=s.intersection(null);}on Error catch (e){return;}): "on T" catch block
-LibTest/core/Set/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/IterableBase_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/length_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/remove_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/remove_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/remove_A01_t05: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/removeAll_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/removeAll_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Set/Set_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Set/Set.from_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/Set.from_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Set/Set.from_A02_t01: Crash # (try {new Set.from(null);Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/StackOverflowError/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/StateError/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Stopwatch/elapsed_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/core/Stopwatch/elapsed_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/core/Stopwatch/elapsed_A01_t03: Crash # unsupported element kind: _completer:field
-LibTest/core/Stopwatch/elapsedInMs_A01_t01: Crash # unsupported element kind: delay:field
-LibTest/core/Stopwatch/elapsedInUs_A01_t01: Crash # unsupported element kind: delay:field
-LibTest/core/Stopwatch/elapsedTicks_A01_t01: Crash # unsupported element kind: delay:field
-LibTest/core/Stopwatch/elapsedTicks_A01_t02: Crash # unsupported element kind: delay:field
-LibTest/core/Stopwatch/elapsedTicks_A01_t03: Crash # unsupported element kind: delay:field
-LibTest/core/Stopwatch/frequency_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Stopwatch/start_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/core/Stopwatch/start_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/core/Stopwatch/start_A01_t03: Crash # unsupported element kind: _completer:field
-LibTest/core/Stopwatch/stop_A01_t01: Crash # unsupported element kind: delay:field
-LibTest/core/Stopwatch/Stopwatch_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/StringBuffer/clear_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/StringBuffer/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/StringBuffer/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/StringBuffer/StringBuffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/StringBuffer/StringBuffer_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/StringBuffer/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/StringBuffer/write_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/StringBuffer/write_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/StringBuffer/writeAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/StringBuffer/writeAll_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/StringBuffer/writeAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/codeUnitAt_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/codeUnitAt_A02_t01: Crash # "on T" catch block
-LibTest/core/String/codeUnitAt_A03_t01: Crash # "on T" catch block
-LibTest/core/String/codeUnits_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/compareTo_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/contains_A01_t02: Crash # "on T" catch block
-LibTest/core/String/contains_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/contains_A02_t01: Crash # "on T" catch block
-LibTest/core/String/endsWith_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/endsWith_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/endsWith_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/endsWith_A02_t01: Crash # (try {"".endsWith(null);Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/String/hashCode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/indexOf_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/indexOf_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/indexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/lastIndexOf_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/lastIndexOf_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/lastIndexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/length_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/operator_equality_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/operator_subscript_A02_t01: Crash # "on T" catch block
-LibTest/core/String/replaceAll_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/replaceAll_A02_t01: Crash # "on T" catch block
-LibTest/core/String/replaceFirst_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/replaceFirst_A02_t01: Crash # "on T" catch block
-LibTest/core/String/split_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/split_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/split_A02_t01: Crash # (try {"1111".split(null);Expect.fail("Error is expected");}on Error catch (e){}): "on T" catch block
-LibTest/core/String/startsWith_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/startsWith_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/startsWith_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/startsWith_A02_t01: Crash # "on T" catch block
-LibTest/core/String/String_class_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/String_class_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/String_class_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/String.fromCharCodes_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/String.fromCharCodes_A02_t01: Crash # "on T" catch block
-LibTest/core/String/String.fromCharCodes_A03_t01: Crash # "on T" catch block
-LibTest/core/String/substring_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/substring_A02_t01: Crash # "on T" catch block
-LibTest/core/String/toLowerCase_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/toLowerCase_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/toLowerCase_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/toLowerCase_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/toUpperCase_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/toUpperCase_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/String/toUpperCase_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/toUpperCase_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/trim_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/String/trim_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Symbol/Symbol_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Symbol/Symbol_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Symbol/Symbol_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Symbol/Symbol_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Symbol/Symbol_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/TypeError/toString_A01_t01: Crash # "on T" catch block
-LibTest/core/UnimplementedError/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/authority_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/decodeComponent_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/decodeFull_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/decodeQueryComponent_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/decodeQueryComponent_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/encodeComponent_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/encodeComponent_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Uri/encodeFull_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/encodeFull_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Uri/encodeQueryComponent_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/encodeQueryComponent_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/fragment_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/hasAuthority_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Uri/hashCode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/host_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/isAbsolute_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Uri/operator_eq_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Uri/origin_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/parse_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/parse_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/parse_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/path_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/path_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/pathSegments_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/pathSegments_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/pathSegments_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/pathSegments_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/port_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/query_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/query_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/queryParameters_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/queryParameters_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/queryParameters_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/resolve_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/resolveUri_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/scheme_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/splitQueryString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/splitQueryString_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/toFilePath_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/toFilePath_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/toFilePath_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/toFilePath_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/toFilePath_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/toFilePath_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Uri/Uri_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri_A05_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri_A06_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri_A06_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri.file_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Uri/Uri.file_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri.file_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri.file_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/core/Uri/Uri.file_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri.http_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri.http_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri.http_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri.http_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri.https_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri.https_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri.https_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/Uri.https_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/core/Uri/userInfo_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/core/Runes/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/core/Runes/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/core/Runes/toList_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/core/Set/IterableBase_A01_t01: Crash # (create): handleStaticFunctionGet: function(create)
+LibTest/core/Set/Set_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Set.
+LibTest/core/Set/add_A01_t03: RuntimeError # Please triage this failure.
+LibTest/core/Stopwatch/elapsedInMs_A01_t01: Crash # (proc1): handleStaticFunctionGet: function(proc1)
+LibTest/core/Stopwatch/elapsedInUs_A01_t01: Crash # (proc1): handleStaticFunctionGet: function(proc1)
+LibTest/core/Stopwatch/elapsedTicks_A01_t01: Crash # (proc1): handleStaticFunctionGet: function(proc1)
+LibTest/core/Stopwatch/elapsedTicks_A01_t02: Crash # (proc1): handleStaticFunctionGet: function(proc1)
+LibTest/core/Stopwatch/elapsedTicks_A01_t03: Crash # (proc1): handleStaticFunctionGet: function(proc1)
+LibTest/core/Stopwatch/elapsed_A01_t01: Crash # (proc1): handleStaticFunctionGet: function(proc1)
+LibTest/core/Stopwatch/elapsed_A01_t02: Crash # (proc1): handleStaticFunctionGet: function(proc1)
+LibTest/core/Stopwatch/elapsed_A01_t03: Crash # (proc1): handleStaticFunctionGet: function(proc1)
+LibTest/core/Stopwatch/start_A01_t01: Crash # (proc1): handleStaticFunctionGet: function(proc1)
+LibTest/core/Stopwatch/start_A01_t02: Crash # (proc1): handleStaticFunctionGet: function(proc1)
+LibTest/core/Stopwatch/start_A01_t03: Crash # (proc1): handleStaticFunctionGet: function(proc1)
+LibTest/core/Stopwatch/stop_A01_t01: Crash # (proc1): handleStaticFunctionGet: function(proc1)
+LibTest/core/String/String_class_A03_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Comparable.
+LibTest/core/Symbol/Symbol_A01_t03: RuntimeError # Please triage this failure.
+LibTest/core/Symbol/Symbol_A01_t05: RuntimeError # Please triage this failure.
+LibTest/core/Uri/Uri_A06_t02: Crash # (encodeOctet): handleStaticFunctionGet: function(encodeOctet)
+LibTest/core/Uri/Uri_A06_t03: Crash # (encodeOctet): handleStaticFunctionGet: function(encodeOctet)
+LibTest/core/Uri/decodeComponent_A01_t01: Crash # (encodeOctet): handleStaticFunctionGet: function(encodeOctet)
+LibTest/core/Uri/decodeFull_A01_t01: Crash # (encodeOctet): handleStaticFunctionGet: function(encodeOctet)
+LibTest/core/Uri/decodeQueryComponent_A01_t01: Crash # (encodeOctet): handleStaticFunctionGet: function(encodeOctet)
+LibTest/core/Uri/encodeComponent_A01_t01: Crash # (encodeOctet): handleStaticFunctionGet: function(encodeOctet)
+LibTest/core/Uri/encodeFull_A01_t01: Crash # (encodeOctet): handleStaticFunctionGet: function(encodeOctet)
+LibTest/core/Uri/encodeFull_A01_t02: Crash # unsupported element kind: canBeNotEncoded:field
+LibTest/core/Uri/encodeQueryComponent_A01_t01: Crash # (encodeOctet): handleStaticFunctionGet: function(encodeOctet)
+LibTest/core/Uri/encodeQueryComponent_A01_t02: Crash # (encodeOctet): handleStaticFunctionGet: function(encodeOctet)
+LibTest/core/Uri/parse_A02_t01: Crash # unsupported element kind: r:field
+LibTest/core/Uri/pathSegments_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/core/Uri/pathSegments_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/core/Uri/pathSegments_A01_t03: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/core/Uri/queryParameters_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/core/Uri/queryParameters_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/core/Uri/splitQueryString_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/core/Uri/splitQueryString_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/core/double/INFINITY_A01_t04: Pass # Please triage this failure.
+LibTest/core/double/NEGATIVE_INFINITY_A01_t04: Pass # Please triage this failure.
+LibTest/core/double/operator_GE_A01_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_GE_A01_t03: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_GE_A02_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_GT_A01_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_GT_A01_t03: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_GT_A02_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_LE_A01_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_LE_A01_t03: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_LE_A02_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_LT_A01_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_LT_A01_t03: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_LT_A02_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_addition_A01_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_addition_A01_t02: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_addition_A01_t03: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_addition_A01_t04: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_addition_A01_t07: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_addition_A02_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_division_A01_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_division_A01_t02: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_division_A01_t03: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_division_A01_t04: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_division_A01_t05: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_division_A01_t07: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_division_A01_t08: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_division_A01_t11: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_division_A02_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_multiplication_A01_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_multiplication_A01_t02: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_multiplication_A01_t03: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_multiplication_A01_t04: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_multiplication_A01_t06: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_multiplication_A01_t08: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_multiplication_A02_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_remainder_A01_t02: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_remainder_A01_t04: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_remainder_A01_t05: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_remainder_A01_t06: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_remainder_A02_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_subtraction_A01_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_subtraction_A01_t02: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_subtraction_A01_t03: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_subtraction_A01_t04: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_subtraction_A01_t07: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_subtraction_A01_t08: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_subtraction_A02_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_truncating_division_A01_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_truncating_division_A01_t02: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_truncating_division_A01_t03: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_truncating_division_A01_t05: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_truncating_division_A01_t08: RuntimeError # Please triage this failure.
+LibTest/core/double/operator_truncating_division_A02_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/remainder_A01_t02: RuntimeError # Please triage this failure.
+LibTest/core/double/remainder_A01_t04: RuntimeError # Please triage this failure.
+LibTest/core/double/remainder_A01_t05: RuntimeError # Please triage this failure.
+LibTest/core/double/remainder_A01_t06: RuntimeError # Please triage this failure.
+LibTest/core/double/remainder_A02_t01: RuntimeError # Please triage this failure.
+LibTest/core/double/toStringAsFixed_A02_t01: RuntimeError # Please triage this failure.
LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t03: Crash # unsupported element kind: _completer:field
@@ -14158,49 +10929,16 @@
LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t05: Crash # unsupported element kind: _completer:field
LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t06: Crash # unsupported element kind: _completer:field
LibTest/html/Document/addEventListener_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Document/adoptNode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/append_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/append_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/append_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/childNodes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/childNodes_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/clone_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/clone_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/contains_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/createDocumentFragment_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/createElement_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/Document/childNodes_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for DocumentType.
+LibTest/html/Document/clone_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LibTest/html/Document/dispatchEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Document/documentElement_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/firstChild_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/getElementById_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/getElementsByClassName_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/getElementsByName_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/getElementsByTagName_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/hasChildNodes_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/importNode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/insertAllBefore_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/insertAllBefore_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/insertBefore_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/insertBefore_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/lastChild_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/nextNode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/nodeName_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/nodes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/nodeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/nodeValue_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/html/Document/nodes_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LibTest/html/Document/on_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Document/on_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/html/Document/ownerDocument_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/parent_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/parentNode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/previousNode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/querySelector_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/querySelectorAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/readyState_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/removeEventListener_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/securityPolicy_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Document/text_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Document/window_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/Document/querySelectorAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/html/Document/removeEventListener_A01_t01: Crash # (listener): handleStaticFunctionGet: function(listener)
+LibTest/html/Document/securityPolicy_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for SecurityPolicy.
+LibTest/html/Element/Element.tag_A01_t01: Crash # unsupported element kind: Html5Elements:field
LibTest/html/Element/abortEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/addEventListener_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/addEventListener_A01_t02: Crash # unsupported element kind: _completer:field
@@ -14208,116 +10946,52 @@
LibTest/html/Element/addEventListener_A01_t04: Crash # unsupported element kind: _completer:field
LibTest/html/Element/addEventListener_A01_t05: Crash # unsupported element kind: _completer:field
LibTest/html/Element/addEventListener_A01_t06: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/append_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/append_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/append_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/appendHtml_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/appendText_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/Element/attributeChanged_A01_t01: Crash # unsupported element kind: _asyncCounter:field
-LibTest/html/Element/attributes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/attributes_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/Element/attributes_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
LibTest/html/Element/beforeCopyEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/beforeCutEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/beforePasteEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/blur_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/blurEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/borderEdge_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/html/Element/blur_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/changeEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/childNodes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/childNodes_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/children_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/children_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/classes_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/className_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/click_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/clickEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/clone_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/clone_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/clone_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/clone_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/contains_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/contains_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/contentEdge_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/contentEditable_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/contentEditable_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/Element/click_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/Element/clone_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/html/Element/clone_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
LibTest/html/Element/contextMenuEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/copyEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/createFragment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/createFragment_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/createFragment_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/Element/createFragment_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/html/Element/createFragment_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/html/Element/createFragment_A01_t03: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
LibTest/html/Element/cutEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/dataset_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/dataset_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/dataset_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/dir_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/dir_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/documentOffset_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/html/Element/dataset_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/html/Element/dataset_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/html/Element/dataset_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
LibTest/html/Element/doubleClickEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/dragEndEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/dragEnterEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/dragEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/draggable_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/draggable_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/Element/dragLeaveEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/dragOverEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/dragStartEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/dropEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/Element_element_ctors_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/Element.html_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/Element.html_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/Element.html_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/Element.html_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/Element.html_A04_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/Element.tag_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/Element.tag_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/Element/enteredView_A01_t01: Crash # unsupported element kind: _asyncCounter:field
LibTest/html/Element/errorEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/firstChild_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/focus_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/focusEvent_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/Element/focus_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/fullscreenChangeEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/fullscreenErrorEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/getAttribute_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/getAttributeNS_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/getAttributeNS_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/getBoundingClientRect_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/getBoundingClientRect_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/getClientRects_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/getClientRects_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/getElementsByClassName_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/getElementsByClassName_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/getNamespacedAttributes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/hasChildNodes_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/hidden_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/id_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/innerHtml_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/innerHtml_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/Element/getClientRects_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/html/Element/getNamespacedAttributes_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/html/Element/innerHtml_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
LibTest/html/Element/inputEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/insertAdjacentElement_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/insertAdjacentHtml_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/insertAdjacentText_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/insertAllBefore_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/insertAllBefore_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/insertBefore_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/insertBefore_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/Element/invalidEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/isContentEditable_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/isContentEditable_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/isTagSupported_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/isTagSupported_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/isTagSupported_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/html/Element/isTagSupported_A01_t01: Crash # unsupported element kind: Html5Elements:field
LibTest/html/Element/keyDownEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/keyPressEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/keyUpEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/lang_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/lang_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/lastChild_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/Element/leftView_A01_t01: Crash # unsupported element kind: _asyncCounter:field
LibTest/html/Element/loadEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/marginEdge_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/matches_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/matchesWithAncestors_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
LibTest/html/Element/mouseDownEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/mouseEnterEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/mouseLeaveEvent_A01_t01: Crash # unsupported element kind: _completer:field
@@ -14326,26 +11000,6 @@
LibTest/html/Element/mouseOverEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/mouseUpEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/mouseWheelEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/namespaceUri_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/nextElementSibling_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/nextNode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/nodeName_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/nodeName_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/nodeName_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/nodeName_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/nodeName_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/nodeName_A12_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/nodes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/nodes_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/offset_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/offsetHeight_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/offsetLeft_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/offsetParent_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/offsetTo_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/offsetTo_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/offsetTop_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/offsetWidth_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/on_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onAbort_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onBeforeCopy_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onBeforeCut_A01_t01: Crash # unsupported element kind: _completer:field
@@ -14357,12 +11011,12 @@
LibTest/html/Element/onCopy_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onCut_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onDoubleClick_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/onDrag_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onDragEnd_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onDragEnter_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onDragLeave_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onDragOver_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onDragStart_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/Element/onDrag_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onDrop_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onError_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onFocus_A01_t01: Crash # unsupported element kind: _completer:field
@@ -14386,8 +11040,8 @@
LibTest/html/Element/onReset_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onScroll_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onSearch_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/onSelect_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onSelectStart_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/Element/onSelect_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onSubmit_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onTouchCancel_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onTouchEnd_A01_t01: Crash # unsupported element kind: _completer:field
@@ -14396,56 +11050,22 @@
LibTest/html/Element/onTouchMove_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onTouchStart_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/onTransitionEnd_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/outerHtml_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/ownerDocument_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/ownerDocument_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/ownerDocument_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/ownerDocument_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/ownerDocument_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/paddingEdge_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/parent_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/parent_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/parent_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/parentNode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/parentNode_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/parentNode_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/Element/on_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/pasteEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/previousElementSibling_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/previousNode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/query_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/queryAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/querySelector_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/querySelectorAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/querySelectorAll_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/remove_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/Element/queryAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/html/Element/querySelectorAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LibTest/html/Element/removeEventListener_A01_t01: Crash # unsupported element kind: _asyncCounter:field
LibTest/html/Element/removeEventListener_A01_t02: Crash # unsupported element kind: _asyncCounter:field
-LibTest/html/Element/replaceWith_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/replaceWith_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/Element/resetEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/scrollEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/searchEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/selectEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/selectStartEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/setAttribute_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/setAttributeNS_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/setInnerHtml_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/setInnerHtml_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/setInnerHtml_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/spellcheck_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/spellcheck_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/style_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/style_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/html/Element/setInnerHtml_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/html/Element/setInnerHtml_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/html/Element/setInnerHtml_A01_t03: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
LibTest/html/Element/submitEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/tabIndex_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/tagName_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/tagName_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/tagName_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/text_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Element/text_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/text_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/text_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Element/title_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/Element/tagName_A01_t01: Crash # unsupported element kind: Html5Elements:field
LibTest/html/Element/touchCancelEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/touchEndEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/touchEnterEvent_A01_t01: Crash # unsupported element kind: _completer:field
@@ -14453,144 +11073,66 @@
LibTest/html/Element/touchMoveEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/touchStartEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Element/transitionEndEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Element/translate_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Event/bubbles_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Event/cancelable_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Event/currentTarget_A01_t01: Crash # unsupported element kind: _asyncCounter:field
-LibTest/html/Event/defaultPrevented_A01_t01: Crash # unsupported element kind: _asyncCounter:field
LibTest/html/Event/Event_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Event/Event_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/html/Event/Event_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Event/Event_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Event/Event.eventType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/Event/currentTarget_A01_t01: Crash # unsupported element kind: _asyncCounter:field
+LibTest/html/Event/defaultPrevented_A01_t01: Crash # unsupported element kind: _asyncCounter:field
LibTest/html/Event/eventPhase_A01_t01: Crash # unsupported element kind: _asyncCounter:field
LibTest/html/Event/matchingTarget_A01_t01: Crash # unsupported element kind: _asyncCounter:field
LibTest/html/Event/matchingTarget_A01_t02: Crash # unsupported element kind: _asyncCounter:field
-LibTest/html/Event/preventDefault_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
LibTest/html/Event/stopImmediatePropagation_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Event/stopImmediatePropagation_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/html/Event/stopImmediatePropagation_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/html/Event/stopPropagation_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Event/target_A01_t01: Crash # unsupported element kind: _asyncCounter:field
-LibTest/html/Event/type_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/HttpRequest/abort_A01_t01: Crash # Unhandled node
LibTest/html/HttpRequest/addEventListener_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/HttpRequest/dispatchEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/HttpRequest/getAllResponseHeaders_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/HttpRequest/getResponseHeader_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/HttpRequest/getString_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/HttpRequest/HttpRequest_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/HttpRequest/getAllResponseHeaders_A01_t01: Crash # Unhandled node
+LibTest/html/HttpRequest/getResponseHeader_A01_t01: Crash # Unhandled node
+LibTest/html/HttpRequest/getString_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/HttpRequest/onAbort_A01_t01: Crash # unsupported element kind: _asyncCounter:field
LibTest/html/HttpRequest/onError_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/html/HttpRequest/onLoad_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/HttpRequest/onLoadEnd_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/HttpRequest/onLoadStart_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/HttpRequest/onLoad_A01_t01: Crash # Unhandled node
LibTest/html/HttpRequest/onReadyStateChange_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/HttpRequest/open_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/HttpRequest/overrideMimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/HttpRequest/readyStateChangeEvent_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/HttpRequest/removeEventListener_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/HttpRequest/request_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/HttpRequest/responseText_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/HttpRequest/responseText_A01_t02: Crash # (r): Error expression `r` unhandled.
-LibTest/html/HttpRequest/responseType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/HttpRequest/responseType_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/HttpRequest/setRequestHeader_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/HttpRequest/status_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/HttpRequest/overrideMimeType_A01_t01: Crash # Unhandled node
+LibTest/html/HttpRequest/readyStateChangeEvent_A01_t01: Crash # Unhandled node
+LibTest/html/HttpRequest/request_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/HttpRequest/responseText_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/HttpRequest/responseText_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/html/HttpRequest/setRequestHeader_A01_t01: Crash # Unhandled node
LibTest/html/HttpRequest/statusText_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/HttpRequest/status_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/HttpRequestUpload/onAbort_A01_t01: Crash # unsupported element kind: _asyncCounter:field
LibTest/html/HttpRequestUpload/onError_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/html/HttpRequestUpload/onLoad_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/HttpRequestUpload/onLoadEnd_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/HttpRequestUpload/onLoadStart_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/HttpRequestUpload/onLoad_A01_t01: Crash # Unhandled node
LibTest/html/IFrameElement/addEventListener_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/addEventListener_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/addEventListener_A01_t03: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/addEventListener_A01_t04: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/addEventListener_A01_t05: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/addEventListener_A01_t06: Crash # unsupported element kind: _completer:field
-LibTest/html/IFrameElement/append_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/append_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/append_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/appendHtml_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/appendHtml_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/appendText_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/IFrameElement/attributeChanged_A01_t01: Crash # unsupported element kind: _asyncCounter:field
-LibTest/html/IFrameElement/attributes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/attributes_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/attributes_setter_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/IFrameElement/attributes_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
LibTest/html/IFrameElement/blur_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/IFrameElement/borderEdge_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/childNodes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/childNodes_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/children_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/children_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/children_setter_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/classes_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/classes_setter_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/className_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/IFrameElement/click_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/IFrameElement/clone_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/clone_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/clone_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/clone_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/contains_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/contentEdge_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/IFrameElement/clone_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/html/IFrameElement/clone_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
LibTest/html/IFrameElement/contentWindow_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/IFrameElement/createFragment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/createFragment_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/createFragment_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/createShadowRoot_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/dataset_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/dataset_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/dataset_setter_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/IFrameElement/createFragment_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/html/IFrameElement/createFragment_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/html/IFrameElement/createFragment_A01_t03: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/html/IFrameElement/dataset_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/html/IFrameElement/dataset_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+LibTest/html/IFrameElement/dataset_setter_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
LibTest/html/IFrameElement/dispatchEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/IFrameElement/documentOffset_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/draggable_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/draggable_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/IFrameElement/enteredView_A01_t01: Crash # unsupported element kind: _asyncCounter:field
-LibTest/html/IFrameElement/firstChild_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/IFrameElement/focus_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/IFrameElement/getAttribute_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/getAttributeNS_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/getBoundingClientRect_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/getClientRects_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/getClientRects_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/getElementsByClassName_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/getElementsByClassName_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/getNamespacedAttributes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/hasChildNodes_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/hasChildNodes_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/hidden_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/id_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/IFrameElement.created_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/innerHtml_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/insertAdjacentElement_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/insertAdjacentHtml_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/insertAdjacentText_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/insertAllBefore_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/insertAllBefore_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/insertBefore_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/insertBefore_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/isContentEditable_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/lang_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/lang_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/lastChild_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/IFrameElement/getClientRects_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LibTest/html/IFrameElement/leftView_A01_t01: Crash # unsupported element kind: _asyncCounter:field
-LibTest/html/IFrameElement/marginEdge_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/matches_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/matchesWithAncestors_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/namespaceUri_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/nextElementSibling_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/nextNode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/nodeName_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/nodes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/nodes_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/nodes_setter_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/nodeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/nodeValue_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/offsetTo_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/on_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onAbort_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onBeforeCopy_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onBeforeCut_A01_t01: Crash # unsupported element kind: _completer:field
@@ -14602,12 +11144,12 @@
LibTest/html/IFrameElement/onCopy_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onCut_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onDoubleClick_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/IFrameElement/onDrag_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onDragEnd_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onDragEnter_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onDragLeave_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onDragOver_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onDragStart_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/IFrameElement/onDrag_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onDrop_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onError_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onFocus_A01_t01: Crash # unsupported element kind: _completer:field
@@ -14631,8 +11173,8 @@
LibTest/html/IFrameElement/onReset_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onScroll_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onSearch_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/IFrameElement/onSelect_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onSelectStart_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/IFrameElement/onSelect_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onSubmit_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onTouchCancel_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onTouchEnd_A01_t01: Crash # unsupported element kind: _completer:field
@@ -14641,2635 +11183,405 @@
LibTest/html/IFrameElement/onTouchMove_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onTouchStart_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/onTransitionEnd_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/IFrameElement/outerHtml_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/ownerDocument_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/ownerDocument_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/ownerDocument_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/ownerDocument_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/ownerDocument_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/paddingEdge_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/parent_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/parent_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/parentNode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/previousElementSibling_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/previousNode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/querySelector_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/remove_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/IFrameElement/on_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/removeEventListener_A01_t01: Crash # unsupported element kind: _asyncCounter:field
LibTest/html/IFrameElement/removeEventListener_A01_t02: Crash # unsupported element kind: _asyncCounter:field
-LibTest/html/IFrameElement/replaceWith_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/IFrameElement/resetEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/scrollEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/searchEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/selectEvent_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/IFrameElement/selectStartEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/IFrameElement/setAttribute_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/setAttributeNS_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/setInnerHtml_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/spellcheck_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/IFrameElement/spellcheck_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/style_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/style_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/tabIndex_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/tagName_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/tagName_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/tagName_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/text_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/text_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/text_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/text_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/text_setter_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/title_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/IFrameElement/translate_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/html/IFrameElement/setInnerHtml_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
LibTest/html/Node/addEventListener_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Node/addEventListener_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/html/Node/addEventListener_A01_t03: Crash # unsupported element kind: _completer:field
LibTest/html/Node/addEventListener_A01_t04: Crash # unsupported element kind: _completer:field
LibTest/html/Node/addEventListener_A01_t05: Crash # unsupported element kind: _completer:field
-LibTest/html/Node/append_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/append_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/append_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/childNodes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/childNodes_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/clone_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Node/clone_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Node/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Node/contains_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/html/Node/childNodes_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
LibTest/html/Node/dispatchEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Node/firstChild_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/hasChildNodes_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Node/lastChild_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/nextNode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/nodes_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Node/nodes_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Node/nodeType_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/nodeType_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/nodeType_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/nodeType_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/nodeType_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/nodeType_A12_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/nodeValue_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/nodeValue_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Node/nodeValue_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Node/nodeValue_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Node/nodeValue_A07_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Node/nodeValue_A12_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/Node/on_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Node/ownerDocument_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/parent_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/parentNode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/previousNode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Node/remove_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/Node/ownerDocument_A01_t01: Crash # unsupported element kind: d:field
LibTest/html/Node/removeEventListener_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Node/removeEventListener_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/html/Node/replaceWith_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/html/Window/addEventListener_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Window/animationFrame_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Window/close_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/html/Window/animationFrame_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/html/Window/dispatchEvent_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Window/document_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Window/find_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/find_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/find_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/find_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/find_A03_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/find_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/find_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/find_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/find_A07_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/moveBy_A01_t01: Crash # not exactly one catch block
-LibTest/html/Window/moveTo_A01_t01: Crash # not exactly one catch block
-LibTest/html/Window/moveTo_A02_t01: Crash # not exactly one catch block
-LibTest/html/Window/open_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/html/Window/moveBy_A01_t01: Crash # try/finally
+LibTest/html/Window/moveTo_A01_t01: Crash # try/finally
+LibTest/html/Window/moveTo_A02_t01: Crash # try/finally
LibTest/html/Window/postMessage_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/html/Window/postMessage_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/html/Window/removeEventListener_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/requestFileSystem_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/requestFileSystem_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/requestFileSystem_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/html/Window/resizeBy_A01_t01: Crash # not exactly one catch block
-LibTest/html/Window/resizeTo_A01_t01: Crash # not exactly one catch block
-LibTest/isolate/Isolate/spawn_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/Isolate/spawn_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/isolate/Isolate/spawn_A01_t03: Crash # unsupported element kind: _completer:field
-LibTest/isolate/Isolate/spawn_A01_t04: Crash # unsupported element kind: _completer:field
-LibTest/isolate/Isolate/spawn_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/isolate/Isolate/spawn_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/isolate/Isolate/spawn_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/isolate/Isolate/spawnUri_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/Window/postMessage_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/html/Window/removeEventListener_A01_t01: Crash # (listener): handleStaticFunctionGet: function(listener)
+LibTest/html/Window/requestFileSystem_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/Window/requestFileSystem_A01_t02: Crash # unsupported element kind: _completer:field
+LibTest/html/Window/requestFileSystem_A02_t01: Crash # unsupported element kind: _completer:field
+LibTest/html/Window/resizeBy_A01_t01: Crash # try/finally
+LibTest/html/Window/resizeTo_A01_t01: Crash # try/finally
+LibTest/isolate/Isolate/spawnUri_A01_t01: Crash # (receiveHandler): handleStaticFunctionGet: function(receiveHandler)
LibTest/isolate/Isolate/spawnUri_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/isolate/Isolate/spawnUri_A01_t03: Crash # unsupported element kind: _completer:field
+LibTest/isolate/Isolate/spawnUri_A01_t03: Crash # (receiveHandler): handleStaticFunctionGet: function(receiveHandler)
LibTest/isolate/Isolate/spawnUri_A01_t04: Crash # unsupported element kind: _completer:field
-LibTest/isolate/Isolate/spawnUri_A01_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/isolate/Isolate/spawnUri_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/isolate/Isolate/spawnUri_A01_t05: Crash # unsupported element kind: _completer:field
LibTest/isolate/Isolate/spawnUri_A02_t02: Crash # unsupported element kind: _completer:field
LibTest/isolate/Isolate/spawnUri_A02_t03: Crash # unsupported element kind: _completer:field
LibTest/isolate/Isolate/spawnUri_A02_t04: Crash # unsupported element kind: _completer:field
-LibTest/isolate/RawReceivePort/close_A01_t01: Crash # unsupported element kind: receivePort:field
-LibTest/isolate/RawReceivePort/handler_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/isolate/RawReceivePort/RawReceivePort_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/RawReceivePort/RawReceivePort_A01_t02: Crash # unsupported element kind: receivePort:field
-LibTest/isolate/RawReceivePort/sendPort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/isolate/Isolate/spawn_A01_t01: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/Isolate/spawn_A01_t02: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/Isolate/spawn_A01_t03: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/Isolate/spawn_A01_t04: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/Isolate/spawn_A01_t05: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/RawReceivePort/RawReceivePort_A01_t01: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/RawReceivePort/RawReceivePort_A01_t02: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/RawReceivePort/close_A01_t01: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/RawReceivePort/handler_A01_t01: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/RawReceivePort/sendPort_A01_t01: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/ReceivePort/ReceivePort.fromRawReceivePort_A02_t01: Crash # (receiveHandler): handleStaticFunctionGet: function(receiveHandler)
LibTest/isolate/ReceivePort/any_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/any_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/asBroadcastStream_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/asBroadcastStream_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/isolate/ReceivePort/asBroadcastStream_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/isolate/ReceivePort/asBroadcastStream_A01_t02: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/ReceivePort/asBroadcastStream_A01_t03: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/asBroadcastStream_A01_t04: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/asBroadcastStream_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/isolate/ReceivePort/asBroadcastStream_A03_t02: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/asBroadcastStream_A03_t03: Crash # unsupported element kind: _completer:field
+LibTest/isolate/ReceivePort/asBroadcastStream_A03_t01: Crash # unsupported element kind: _completer:field
+LibTest/isolate/ReceivePort/asBroadcastStream_A03_t02: Crash # (f): handleStaticFunctionGet: function(f)
+LibTest/isolate/ReceivePort/asBroadcastStream_A03_t03: Crash # (f): handleStaticFunctionGet: function(f)
LibTest/isolate/ReceivePort/asBroadcastStream_A04_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/asBroadcastStream_A04_t02: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/asBroadcastStream_A04_t03: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/close_A01_t01: Crash # unsupported element kind: receivePort:field
-LibTest/isolate/ReceivePort/close_A02_t01: Crash # unsupported element kind: receivePort:field
+LibTest/isolate/ReceivePort/close_A01_t01: Crash # (receiveHandler): handleStaticFunctionGet: function(receiveHandler)
+LibTest/isolate/ReceivePort/close_A02_t01: Crash # (receiveHandler): handleStaticFunctionGet: function(receiveHandler)
LibTest/isolate/ReceivePort/contains_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/distinct_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/distinct_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/isolate/ReceivePort/distinct_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/drain_A02_t01: Crash # Please triage this failure.
LibTest/isolate/ReceivePort/drain_A02_t02: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/elementAt_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/elementAt_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/isolate/ReceivePort/elementAt_A03_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/every_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/expand_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/first_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/first_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/isolate/ReceivePort/first_A02_t02: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/firstWhere_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/firstWhere_A02_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/firstWhere_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/isolate/ReceivePort/firstWhere_A03_t02: Crash # unsupported element kind: _completer:field
+LibTest/isolate/ReceivePort/first_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/isolate/ReceivePort/first_A02_t01: Crash # unsupported element kind: _completer:field
+LibTest/isolate/ReceivePort/first_A02_t02: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/fold_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/fold_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/forEach_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/isBroadcast_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/isolate/ReceivePort/isBroadcast_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
LibTest/isolate/ReceivePort/isEmpty_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/join_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/join_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/last_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/last_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/isolate/ReceivePort/lastWhere_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/lastWhere_A02_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/lastWhere_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/isolate/ReceivePort/lastWhere_A04_t01: Crash # unsupported element kind: _completer:field
+LibTest/isolate/ReceivePort/last_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/isolate/ReceivePort/last_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/length_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/listen_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/map_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/pipe_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/ReceivePort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/isolate/ReceivePort/ReceivePort.fromRawReceivePort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/isolate/ReceivePort/ReceivePort.fromRawReceivePort_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
LibTest/isolate/ReceivePort/reduce_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/reduce_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/reduce_A01_t03: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/sendPort_A01_t01: Crash # (Expect): Error expression `Expect` unhandled.
-LibTest/isolate/ReceivePort/single_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/single_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/isolate/ReceivePort/sendPort_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/singleWhere_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/singleWhere_A02_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/skip_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
+LibTest/isolate/ReceivePort/single_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/isolate/ReceivePort/single_A02_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/skipWhile_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/take_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/ReceivePort/take_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/isolate/ReceivePort/take_A01_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/isolate/ReceivePort/skip_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/takeWhile_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/isolate/ReceivePort/take_A01_t01: Crash # unsupported element kind: _completer:field
+LibTest/isolate/ReceivePort/take_A01_t02: Crash # Instance of 'TypeOperator': type casts not implemented.
+LibTest/isolate/ReceivePort/take_A01_t03: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/toList_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/toSet_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/transform_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/transform_A01_t02: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/where_A01_t01: Crash # unsupported element kind: _completer:field
LibTest/isolate/ReceivePort/where_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/isolate/SendPort/hashCode_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/isolate/SendPort/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/isolate/SendPort/send_A01_t01: Crash # unsupported element kind: _completer:field
-LibTest/isolate/SendPort/send_A01_t02: Crash # unsupported element kind: _completer:field
-LibTest/isolate/SendPort/send_A01_t03: Crash # unsupported element kind: _completer:field
-LibTest/isolate/SendPort/send_A01_t04: Crash # unsupported element kind: _completer:field
-LibTest/isolate/SendPort/send_A02_t01: Crash # unsupported element kind: _completer:field
-LibTest/math/acos_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/acos_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/acos_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/asin_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/asin_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/asin_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/atan2_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/atan2_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/atan2_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/atan2_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/atan2_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/atan2_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/atan_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/atan_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/atan_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/atan_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/cos_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/cos_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/cos_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/exp_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/exp_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/exp_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/exp_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/log_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/log_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/log_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/log_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/max_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/max_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/max_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/min_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/min_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/min_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/MutableRectangle/boundingBox_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/MutableRectangle/boundingBox_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/MutableRectangle/containsPoint_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/MutableRectangle/containsRectangle_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/MutableRectangle/intersection_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/MutableRectangle/intersects_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/MutableRectangle/MutableRectangle_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/MutableRectangle/MutableRectangle.fromPoints_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/MutableRectangle/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/MutableRectangle/operator_equality_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/MutableRectangle/operator_equality_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/MutableRectangle/operator_equality_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/Point/distanceTo_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Point/magnitude_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/Point/operator_addition_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Point/operator_addition_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Point/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/Point/operator_equality_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Point/operator_equality_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/Point/operator_equality_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/Point/operator_mult_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Point/operator_mult_A02_t01: Crash # "on T" catch block
-LibTest/math/Point/operator_mult_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Point/operator_subtraction_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Point/operator_subtraction_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Point/Point_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Point/squaredDistanceTo_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/Point/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/pow_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/pow_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/pow_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A09_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A10_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A11_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A12_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A13_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A14_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A15_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A16_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/pow_A17_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Random/nextBool_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Random/nextDouble_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/Random/nextInt_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/Random/Random_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Rectangle/boundingBox_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/Rectangle/boundingBox_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Rectangle/containsPoint_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Rectangle/containsRectangle_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Rectangle/intersection_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Rectangle/intersects_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Rectangle/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/Rectangle/operator_equality_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Rectangle/operator_equality_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/Rectangle/operator_equality_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/Rectangle/Rectangle_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/Rectangle/Rectangle.fromPoints_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/sin_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/sin_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/sin_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/sin_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/sqrt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/sqrt_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/sqrt_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/sqrt_A02_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/sqrt_A02_t03: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/sqrt_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/math/tan_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/tan_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/math/tan_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteBuffer/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/ByteBuffer/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteBuffer/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteBuffer/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteBuffer/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/ByteBuffer/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteBuffer/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteBuffer/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/buffer_A01_t01: Crash # (Expect.equal(byteBuffer,l.buffer)): Error expression `Expect.equal(byteBuffer,l.buffer)` unhandled.
-LibTest/typed_data/ByteData/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/ByteData_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/ByteData_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/ByteData_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/ByteData.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/ByteData.view_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/ByteData.view_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/ByteData.view_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/ByteData.view_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/ByteData.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/ByteData.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/ByteData.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/ByteData/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getFloat32_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/ByteData/getFloat32_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getFloat32_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getFloat64_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/ByteData/getFloat64_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getFloat64_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getInt16_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/getInt16_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getInt16_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getInt32_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/getInt32_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getInt32_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getInt64_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/getInt64_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getInt64_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getInt8_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/getInt8_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getInt8_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getUint16_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/getUint16_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getUint16_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getUint32_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/getUint32_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getUint32_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getUint64_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/getUint64_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getUint64_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getUint8_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/getUint8_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/getUint8_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/ByteData/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/ByteData/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setFloat32_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/ByteData/setFloat32_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setFloat32_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setFloat64_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/ByteData/setFloat64_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setFloat64_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setInt16_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/setInt16_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setInt16_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setInt32_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/setInt32_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setInt32_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setInt64_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/setInt64_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setInt64_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setInt8_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/setInt8_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setInt8_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setUint16_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/setUint16_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setUint16_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setUint32_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/setUint32_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setUint32_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setUint64_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/setUint64_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setUint64_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setUint8_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/ByteData/setUint8_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/ByteData/setUint8_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/ByteData/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/add_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/addAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/asMap_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/asMap_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/asMap_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/buffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/clear_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/fillRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/fillRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/first_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/first_A02_t01: Crash # (try {l.first;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Float32List/first_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/Float32List_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/Float32List_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/Float32List_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/Float32List.fromList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/Float32List.fromList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/Float32List.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/Float32List.view_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/Float32List.view_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/Float32List.view_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/Float32List.view_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/Float32List.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/Float32List.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/Float32List.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/Float32List/Float32List.view_A06_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/forEach_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/getRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/getRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/getRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/getRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/indexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/indexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/indexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/indexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/insert_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/insertAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/iterator_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/iterator_current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/last_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/last_A02_t01: Crash # (try {l.last;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Float32List/lastIndexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/lastIndexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/lastIndexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/lastIndexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/length_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/operator_subscript_A02_t01: Crash # (try {l[-1];Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Float32List/operator_subscripted_assignment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/operator_subscripted_assignment_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/reduce_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/remove_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/removeAt_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/removeLast_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/removeRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/removeWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/replaceRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/retainWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/reversed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/reversed_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/setAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/setAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/setAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/setRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/setRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/setRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/setRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/single_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/single_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/single_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32List/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/skipWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/sort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/sublist_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/sublist_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/sublist_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/sublist_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/takeWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/toList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/toList_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32List/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32List/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32List/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/abs_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/clamp_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/clamp_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/Float32x4_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/Float32x4_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/Float32x4.fromInt32x4Bits_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/Float32x4.fromInt32x4Bits_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/Float32x4.splat_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/Float32x4.splat_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/Float32x4.zero_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/add_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/addAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/asMap_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/asMap_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/asMap_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/buffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/clear_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/fillRange_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/fillRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/first_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/first_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/first_A02_t01: Crash # (try {l.first;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Float32x4List/first_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/firstWhere_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/firstWhere_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/Float32x4List_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/Float32x4List_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/Float32x4List_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/Float32x4List.fromList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/Float32x4List.fromList_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/Float32x4List.view_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/Float32x4List.view_A03_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/Float32x4List.view_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/Float32x4List.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/Float32x4List.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/Float32x4List.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/forEach_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/getRange_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/getRange_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/getRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/getRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/indexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/indexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/insert_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/insertAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/iterator_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/iterator_current_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/last_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/last_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/last_A02_t01: Crash # (try {l.last;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Float32x4List/lastIndexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/lastIndexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/lastWhere_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/length_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/operator_subscript_A02_t01: Crash # (try {l[-1];Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Float32x4List/operator_subscripted_assignment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/operator_subscripted_assignment_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/reduce_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/remove_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/removeAt_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/removeLast_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/removeRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/removeWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/replaceRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/retainWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/reversed_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/reversed_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/setAll_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/setAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/setAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/setRange_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/setRange_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/setRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/setRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/single_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/single_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/single_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/single_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/singleWhere_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/skip_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/skipWhile_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/skipWhile_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/sort_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/sublist_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/sublist_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/sublist_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/sublist_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/take_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/take_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/takeWhile_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/toList_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/toList_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float32x4List/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4List/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4List/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/max_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/min_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/operator_addition_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/operator_division_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/operator_division_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/operator_multiplication_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/operator_subtraction_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/operator_unary_minus_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/reciprocal_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/reciprocalSqrt_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/scale_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/shuffle_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/shuffleMix_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float32x4/sqrt_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/w_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/w_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4/withW_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/withX_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/withY_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/withZ_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/x_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/x_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4/y_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/y_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float32x4/z_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float32x4/z_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/add_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/addAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/asMap_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/asMap_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/asMap_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/buffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/clear_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/fillRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/fillRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/first_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/first_A02_t01: Crash # (try {l.first;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Float64List/first_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/Float64List_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/Float64List_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/Float64List_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/Float64List.fromList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/Float64List.fromList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/Float64List.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/Float64List.view_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/Float64List.view_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/Float64List.view_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/Float64List.view_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/Float64List.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/Float64List.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/Float64List.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/Float64List/Float64List.view_A06_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/forEach_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/getRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/getRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/getRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/getRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/indexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/indexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/indexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/indexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/insert_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/insertAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/iterator_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/iterator_current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/last_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/last_A02_t01: Crash # (try {l.last;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Float64List/lastIndexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/lastIndexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/lastIndexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/lastIndexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/length_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/operator_subscript_A02_t01: Crash # (try {l[-1];Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Float64List/operator_subscripted_assignment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/operator_subscripted_assignment_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/reduce_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/remove_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/removeAt_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/removeLast_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/removeRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/removeWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/replaceRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/retainWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/reversed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/reversed_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/setAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/setAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/setAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/setRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/setRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/setRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/setRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/single_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/single_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/single_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Float64List/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/skipWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/sort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/sublist_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/sublist_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/sublist_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/sublist_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/takeWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/toList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/toList_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Float64List/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Float64List/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Float64List/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/add_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/addAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/asMap_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/asMap_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/asMap_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/buffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/clear_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/fillRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/fillRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/first_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/first_A02_t01: Crash # (try {l.first;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int16List/first_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/forEach_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/getRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/getRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/getRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/getRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/indexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/indexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/indexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/indexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/insert_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/insertAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/Int16List_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/Int16List_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/Int16List_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/Int16List.fromList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/Int16List.fromList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/Int16List.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/Int16List.view_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/Int16List.view_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/Int16List.view_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/Int16List.view_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/Int16List.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/Int16List.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/Int16List.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/Int16List/Int16List.view_A06_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/iterator_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/iterator_current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/last_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/last_A02_t01: Crash # (try {l.last;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int16List/lastIndexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/lastIndexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/lastIndexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/lastIndexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/length_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/operator_subscript_A02_t01: Crash # (try {l[-1];Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int16List/operator_subscripted_assignment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/operator_subscripted_assignment_A02_t01: Crash # (try {l[-1]=1;Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int16List/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/reduce_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/remove_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/removeAt_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/removeLast_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/removeRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/removeWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/replaceRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/retainWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/reversed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/reversed_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/setAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/setAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/setAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/setRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/setRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/setRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/setRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/single_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/single_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/single_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Int16List/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/skipWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/sort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/sublist_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/sublist_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/sublist_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/sublist_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/takeWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/toList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/toList_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int16List/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int16List/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int16List/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/add_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/addAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/asMap_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/asMap_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/asMap_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/buffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/clear_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/fillRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/fillRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/first_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/first_A02_t01: Crash # (try {l.first;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int32List/first_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/forEach_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/getRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/getRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/getRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/getRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/indexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/indexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/indexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/indexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/insert_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/insertAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/Int32List_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/Int32List_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/Int32List_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/Int32List.fromList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/Int32List.fromList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/Int32List.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/Int32List.view_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/Int32List.view_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/Int32List.view_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/Int32List.view_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/Int32List.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/Int32List.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/Int32List.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/Int32List/Int32List.view_A06_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/iterator_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/iterator_current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/last_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/last_A02_t01: Crash # (try {l.last;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int32List/lastIndexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/lastIndexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/lastIndexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/lastIndexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/length_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/operator_subscript_A02_t01: Crash # (try {l[-1];Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int32List/operator_subscripted_assignment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/operator_subscripted_assignment_A02_t01: Crash # (try {l[-1]=1;Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int32List/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/reduce_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/remove_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/removeAt_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/removeLast_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/removeRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/removeWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/replaceRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/retainWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/reversed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/reversed_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/setAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/setAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/setAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/setRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/setRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/setRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/setRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/single_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/single_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/single_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32List/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/skipWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/sort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/sublist_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/sublist_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/sublist_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/sublist_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/takeWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/toList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/toList_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int32List/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32List/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32List/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/flagW_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32x4/flagW_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/flagW_A01_t03: Crash # "on T" catch block
-LibTest/typed_data/Int32x4/flagX_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32x4/flagX_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/flagX_A01_t03: Crash # "on T" catch block
-LibTest/typed_data/Int32x4/flagY_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32x4/flagY_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/flagY_A01_t03: Crash # "on T" catch block
-LibTest/typed_data/Int32x4/flagZ_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32x4/flagZ_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/flagZ_A01_t03: Crash # "on T" catch block
-LibTest/typed_data/Int32x4/Int32x4_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/Int32x4.bool_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/Int32x4.fromFloat32x4Bits_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/Int32x4.fromFloat32x4Bits_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int32x4/operator_AND_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/operator_OR_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/operator_XOR_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/select_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/w_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/w_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32x4/withFlagW_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/withFlagX_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/withFlagY_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/withFlagZ_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/withW_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/withX_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/withY_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/withZ_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/x_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/x_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32x4/y_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/y_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int32x4/z_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int32x4/z_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/add_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/addAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/asMap_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/asMap_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/asMap_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/buffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/clear_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/fillRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/fillRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/first_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/first_A02_t01: Crash # (try {l.first;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int64List/first_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/forEach_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/getRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/getRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/getRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/getRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/indexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/indexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/indexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/indexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/insert_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/insertAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/Int64List_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/Int64List_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/Int64List_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/Int64List.fromList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/Int64List.fromList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/Int64List.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/Int64List.view_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/Int64List.view_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/Int64List.view_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/Int64List.view_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/Int64List.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/Int64List.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/Int64List.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/Int64List/Int64List.view_A06_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/iterator_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/iterator_current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/last_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/last_A02_t01: Crash # (try {l.last;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int64List/lastIndexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/lastIndexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/lastIndexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/lastIndexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/length_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/operator_subscript_A02_t01: Crash # (try {l[-1];Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int64List/operator_subscripted_assignment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/operator_subscripted_assignment_A02_t01: Crash # (try {l[-1]=1;Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int64List/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/reduce_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/remove_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/removeAt_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/removeLast_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/removeRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/removeWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/replaceRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/retainWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/reversed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/reversed_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/setAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/setAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/setAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/setRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/setRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/setRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/setRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/single_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/single_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/single_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Int64List/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/skipWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/sort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/sublist_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/sublist_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/sublist_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/sublist_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/takeWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/toList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/toList_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int64List/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int64List/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int64List/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/add_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/addAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/asMap_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/asMap_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/asMap_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/buffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/clear_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/fillRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/fillRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/first_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/first_A02_t01: Crash # (try {l.first;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int8List/first_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/forEach_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/getRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/getRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/getRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/getRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/indexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/indexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/indexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/indexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/insert_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/insertAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/Int8List_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/Int8List_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/Int8List_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/Int8List.fromList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/Int8List.fromList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/Int8List.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/Int8List.view_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/Int8List.view_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/Int8List.view_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/Int8List.view_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/Int8List.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/Int8List.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/Int8List.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/Int8List/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/iterator_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/iterator_current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/last_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/last_A02_t01: Crash # (try {l.last;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int8List/lastIndexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/lastIndexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/lastIndexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/lastIndexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/length_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/operator_subscript_A02_t01: Crash # (try {l[-1];Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int8List/operator_subscripted_assignment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/operator_subscripted_assignment_A02_t01: Crash # (try {l[-1]=1;Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Int8List/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/reduce_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/remove_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/removeAt_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/removeLast_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/removeRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/removeWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/replaceRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/retainWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/reversed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/reversed_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/setAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/setAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/setAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/setRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/setRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/setRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/setRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/single_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/single_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/single_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Int8List/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/skipWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/sort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/sublist_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/sublist_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/sublist_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/sublist_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/takeWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/toList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/toList_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Int8List/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Int8List/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Int8List/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/add_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/addAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/asMap_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/asMap_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/asMap_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/buffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/clear_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/fillRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/fillRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/first_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/first_A02_t01: Crash # (try {l.first;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint16List/first_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/forEach_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/getRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/getRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/getRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/getRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/indexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/indexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/indexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/indexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/insert_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/insertAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/iterator_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/iterator_current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/last_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/last_A02_t01: Crash # (try {l.last;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint16List/lastIndexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/lastIndexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/lastIndexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/lastIndexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/length_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/operator_subscript_A02_t01: Crash # (try {l[-1];Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint16List/operator_subscripted_assignment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/operator_subscripted_assignment_A02_t01: Crash # (try {l[-1]=1;Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint16List/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/reduce_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/remove_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/removeAt_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/removeLast_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/removeRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/removeWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/replaceRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/retainWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/reversed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/reversed_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/setAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/setAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/setAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/setRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/setRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/setRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/setRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/single_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/single_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/single_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/skipWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/sort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/sublist_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/sublist_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/sublist_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/sublist_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/takeWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/toList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/toList_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint16List/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/Uint16List_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/Uint16List_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/Uint16List_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/Uint16List.fromList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/Uint16List.fromList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/Uint16List.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/Uint16List.view_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/Uint16List.view_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/Uint16List.view_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/Uint16List.view_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/Uint16List.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/Uint16List.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/Uint16List.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/Uint16List.view_A06_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint16List/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint16List/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/add_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/addAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/asMap_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/asMap_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/asMap_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/buffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/clear_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/fillRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/fillRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/first_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/first_A02_t01: Crash # (try {l.first;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint32List/first_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/forEach_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/getRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/getRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/getRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/getRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/indexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/indexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/indexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/indexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/insert_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/insertAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/iterator_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/iterator_current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/last_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/last_A02_t01: Crash # (try {l.last;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint32List/lastIndexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/lastIndexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/lastIndexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/lastIndexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/length_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/operator_subscript_A02_t01: Crash # (try {l[-1];Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint32List/operator_subscripted_assignment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/operator_subscripted_assignment_A02_t01: Crash # (try {l[-1]=1;Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint32List/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/reduce_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/remove_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/removeAt_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/removeLast_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/removeRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/removeWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/replaceRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/retainWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/reversed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/reversed_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/setAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/setAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/setAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/setRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/setRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/setRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/setRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/single_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/single_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/single_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/skipWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/sort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/sublist_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/sublist_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/sublist_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/sublist_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/takeWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/toList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/toList_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint32List/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/Uint32List_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/Uint32List_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/Uint32List_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/Uint32List.fromList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/Uint32List.fromList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/Uint32List.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/Uint32List.view_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/Uint32List.view_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/Uint32List.view_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/Uint32List.view_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/Uint32List.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/Uint32List.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/Uint32List.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/Uint32List.view_A06_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint32List/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint32List/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/add_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/addAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/asMap_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/asMap_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/asMap_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/buffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/clear_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/fillRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/fillRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/first_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/first_A02_t01: Crash # (try {l.first;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint64List/first_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/forEach_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/getRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/getRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/getRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/getRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/indexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/indexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/indexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/indexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/insert_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/insertAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/iterator_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/iterator_current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/last_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/last_A02_t01: Crash # (try {l.last;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint64List/lastIndexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/lastIndexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/lastIndexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/lastIndexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/length_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/operator_subscript_A02_t01: Crash # (try {l[-1];Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint64List/operator_subscripted_assignment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/operator_subscripted_assignment_A02_t01: Crash # (try {l[-1]=1;Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint64List/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/reduce_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/remove_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/removeAt_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/removeLast_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/removeRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/removeWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/replaceRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/retainWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/reversed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/reversed_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/setAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/setAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/setAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/setRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/setRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/setRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/setRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/single_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/single_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/single_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/skipWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/sort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/sublist_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/sublist_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/sublist_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/sublist_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/takeWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/toList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/toList_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint64List/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/Uint64List_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/Uint64List_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/Uint64List_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/Uint64List.fromList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/Uint64List.fromList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/Uint64List.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/Uint64List.view_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/Uint64List.view_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/Uint64List.view_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/Uint64List.view_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/Uint64List.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/Uint64List.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/Uint64List.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/Uint64List.view_A06_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint64List/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint64List/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/add_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/addAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/asMap_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/asMap_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/asMap_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/buffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/clear_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/fillRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/fillRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/first_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/first_A02_t01: Crash # (try {l.first;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint8ClampedList/first_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/forEach_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/getRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/getRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/getRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/getRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/indexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/indexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/indexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/indexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/insert_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/insertAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/iterator_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/iterator_current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/last_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/last_A02_t01: Crash # (try {l.last;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint8ClampedList/lastIndexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/lastIndexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/lastIndexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/lastIndexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/length_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/operator_subscript_A02_t01: Crash # (try {l[-1];Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint8ClampedList/operator_subscripted_assignment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/operator_subscripted_assignment_A02_t01: Crash # (try {l[-1]=1;Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint8ClampedList/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/reduce_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/remove_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/removeAt_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/removeLast_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/removeRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/removeWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/replaceRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/retainWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/reversed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/reversed_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/setAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/setAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/setAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/setRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/setRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/setRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/setRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/single_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/single_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/single_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/skipWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/sort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/sublist_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/sublist_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/sublist_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/sublist_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/takeWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/toList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/toList_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8ClampedList/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.fromList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.fromList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/Uint8ClampedList/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8ClampedList/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/add_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/addAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/any_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/asMap_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/asMap_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/asMap_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/buffer_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/buffer_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/clear_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/contains_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/elementAt_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/elementAt_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/elementSizeInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/elementSizeInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/every_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/expand_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/fillRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/fillRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/first_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/first_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/first_A02_t01: Crash # (try {l.first;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint8List/first_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/firstWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/firstWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/firstWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/fold_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/forEach_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/getRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/getRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/getRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/getRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/hashCode_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/hashCode_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/indexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/indexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/indexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/indexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/insert_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/insertAll_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/isEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/isEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/isNotEmpty_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/isNotEmpty_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/iterator_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/iterator_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/iterator_current_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/iterator_moveNext_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/join_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/join_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/last_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/last_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/last_A02_t01: Crash # (try {l.last;Expect.fail("StateError is expected");}on StateError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint8List/lastIndexOf_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/lastIndexOf_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/lastIndexOf_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/lastIndexOf_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/lastWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/lastWhere_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/lastWhere_A03_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/length_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/length_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/lengthInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/lengthInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/map_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/map_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/map_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/offsetInBytes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/offsetInBytes_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/operator_equality_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/operator_subscript_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/operator_subscript_A02_t01: Crash # (try {l[-1];Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint8List/operator_subscripted_assignment_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/operator_subscripted_assignment_A02_t01: Crash # (try {l[-1]=1;Expect.fail("RangeError is expected");}on RangeError catch (ok){}): "on T" catch block
-LibTest/typed_data/Uint8List/reduce_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/reduce_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/remove_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/removeAt_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/removeLast_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/removeRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/removeWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/replaceRange_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/retainWhere_A01_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/reversed_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/reversed_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/runtimeType_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/runtimeType_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/setAll_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/setAll_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/setAll_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/setRange_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/setRange_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/setRange_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/setRange_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/single_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/single_A01_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/single_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/single_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/singleWhere_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/singleWhere_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/singleWhere_A02_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/skip_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/skip_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/skip_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/skipWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/skipWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/skipWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/skipWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/sort_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/sublist_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/sublist_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/sublist_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/sublist_A03_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/take_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/take_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/take_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/takeWhile_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/takeWhile_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/takeWhile_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/takeWhile_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/toList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/toList_A02_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/toList_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/toSet_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-LibTest/typed_data/Uint8List/toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/Uint8List_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/Uint8List_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/Uint8List_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/Uint8List.fromList_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/Uint8List.fromList_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/Uint8List.view_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/Uint8List.view_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/Uint8List.view_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/Uint8List.view_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/Uint8List.view_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/Uint8List.view_A05_t01: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/Uint8List.view_A05_t02: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/Uint8List.view_A05_t03: Crash # "on T" catch block
-LibTest/typed_data/Uint8List/where_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/where_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LibTest/typed_data/Uint8List/where_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Utils/tests/Expect/approxEquals_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/Expect/approxEquals_A01_t02: Crash # "on T" catch block
-Utils/tests/Expect/approxEquals_A01_t03: Crash # "on T" catch block
-Utils/tests/Expect/approxEquals_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/Expect/approxEquals_A02_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/Expect/approxEquals_A03_t01: Crash # "on T" catch block
-Utils/tests/Expect/approxEquals_A04_t01: Crash # "on T" catch block
-Utils/tests/Expect/equals_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Utils/tests/Expect/equals_A01_t02: Crash # "on T" catch block
-Utils/tests/Expect/equals_A01_t03: Crash # "on T" catch block
-Utils/tests/Expect/equals_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Utils/tests/Expect/equals_A02_t01: Crash # "on T" catch block
-Utils/tests/ExpectException/ExpectException_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/ExpectException/message_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Utils/tests/ExpectException/toString_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/Expect/fail_A01_t01: Crash # "on T" catch block
-Utils/tests/Expect/fail_A02_t01: Crash # "on T" catch block
-Utils/tests/Expect/identical_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/Expect/identical_A01_t02: Crash # "on T" catch block
-Utils/tests/Expect/identical_A01_t03: Crash # "on T" catch block
-Utils/tests/Expect/identical_A02_t01: Crash # "on T" catch block
-Utils/tests/Expect/isFalse_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/Expect/isFalse_A01_t02: Crash # "on T" catch block
-Utils/tests/Expect/isFalse_A02_t01: Crash # "on T" catch block
-Utils/tests/Expect/isNotNull_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/Expect/isNotNull_A01_t02: Crash # "on T" catch block
-Utils/tests/Expect/isNotNull_A02_t01: Crash # "on T" catch block
-Utils/tests/Expect/isNull_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/Expect/isNull_A01_t02: Crash # "on T" catch block
-Utils/tests/Expect/isNull_A02_t01: Crash # "on T" catch block
-Utils/tests/Expect/isTrue_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/Expect/isTrue_A01_t02: Crash # "on T" catch block
-Utils/tests/Expect/isTrue_A02_t01: Crash # "on T" catch block
-Utils/tests/Expect/listEquals_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Utils/tests/Expect/listEquals_A01_t02: Crash # "on T" catch block
-Utils/tests/Expect/listEquals_A01_t03: Crash # "on T" catch block
-Utils/tests/Expect/listEquals_A02_t01: Crash # "on T" catch block
-Utils/tests/Expect/listEquals_A03_t01: Crash # "on T" catch block
-Utils/tests/Expect/notEquals_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/Expect/notEquals_A01_t02: Crash # "on T" catch block
-Utils/tests/Expect/notEquals_A01_t03: Crash # "on T" catch block
-Utils/tests/Expect/notEquals_A02_t01: Crash # "on T" catch block
-Utils/tests/Expect/setEquals_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/Expect/setEquals_A01_t02: Crash # "on T" catch block
-Utils/tests/Expect/setEquals_A02_t01: Crash # "on T" catch block
-Utils/tests/Expect/setEquals_A03_t01: Crash # "on T" catch block
-Utils/tests/Expect/stringEquals_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-Utils/tests/Expect/stringEquals_A01_t02: Crash # "on T" catch block
-Utils/tests/Expect/stringEquals_A02_t01: Crash # "on T" catch block
-Utils/tests/Expect/throws_A01_t01: Crash # "on T" catch block
-Utils/tests/Expect/throws_A01_t02: Crash # "on T" catch block
-Utils/tests/Expect/throws_A01_t03: Crash # "on T" catch block
-Utils/tests/Expect/throws_A01_t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-Utils/tests/Expect/throws_A01_t05: Crash # "on T" catch block
-Utils/tests/Expect/throws_A02_t01: Crash # "on T" catch block
-WebPlatformTest/custom-elements/concepts/type_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/concepts/type_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/concepts/type_A04_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/custom-elements/concepts/type_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/custom-elements/concepts/type_A06_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/custom-elements/concepts/type_A07_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/custom-elements/concepts/type_A08_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/custom-elements/instantiating/createElement_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/createElement_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/createElement_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/createElement_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/createElement_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/custom-elements/instantiating/createElementNS_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/createElementNS_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/createElementNS_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/createElementNS_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/createElementNS_A05_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/custom-elements/instantiating/isAttribute_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/isAttribute_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/isAttribute_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/isAttribute_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/localName_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/custom-elements/instantiating/namespace_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/collections/emptyName_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/collections/emptyName_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/collections/emptyName_A01_t05: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/collections/emptyName_A01_t06: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/collections/emptyName_A01_t07: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/DOMEvents/approved/addEventListener.optional.useCapture_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/DOMEvents/approved/dispatchEvent.return.value_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/DOMEvents/approved/DOM.event.flow_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/DOMEvents/approved/domnodeinserted_t01: Crash # unsupported element kind: _asyncCounter:field
-WebPlatformTest/DOMEvents/approved/Event.bubbles.false_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+LibTest/isolate/SendPort/send_A01_t01: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/SendPort/send_A01_t02: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/SendPort/send_A01_t03: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/SendPort/send_A01_t04: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/isolate/SendPort/send_A02_t01: Crash # (iMain): handleStaticFunctionGet: function(iMain)
+LibTest/math/MutableRectangle/MutableRectangle.fromPoints_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/MutableRectangle/MutableRectangle_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/MutableRectangle/boundingBox_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/MutableRectangle/boundingBox_A01_t02: Crash # unsupported element kind: rand:field
+LibTest/math/MutableRectangle/operator_equality_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/Point/distanceTo_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/Point/operator_addition_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/Point/operator_equality_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/Point/operator_mult_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/Point/operator_subtraction_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/Point/squaredDistanceTo_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/Rectangle/Rectangle.fromPoints_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/Rectangle/Rectangle_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/Rectangle/boundingBox_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/math/Rectangle/boundingBox_A01_t02: Crash # unsupported element kind: rand:field
+LibTest/math/Rectangle/operator_equality_A01_t01: Crash # unsupported element kind: rand:field
+LibTest/typed_data/ByteData/ByteData.view_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/ByteData/setInt16_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/ByteData/setInt32_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/ByteData/setInt64_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/ByteData/setInt8_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/ByteData/setUint16_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/ByteData/setUint32_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/ByteData/setUint64_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/ByteData/setUint8_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Float32List/Float32List.fromList_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Float32List/Float32List.fromList_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Float32List/Float32List.view_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Float32List/Float32List_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Float32List/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Float32List/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Float32List/setAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Float32List/setRange_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Float32List/setRange_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Float32List/sort_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Float32List/toList_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Float32x4List/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Float32x4List/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Float64List/Float64List.fromList_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Float64List/Float64List.fromList_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Float64List/Float64List.view_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Float64List/Float64List_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Float64List/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Float64List/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Float64List/setAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Float64List/setRange_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Float64List/setRange_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Float64List/sort_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Float64List/toList_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int16List/Int16List.fromList_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Int16List/Int16List.fromList_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int16List/Int16List.view_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Int16List/Int16List_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Int16List/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Int16List/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Int16List/setAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int16List/setRange_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int16List/setRange_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int16List/sort_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int16List/toList_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int32List/Int32List.fromList_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Int32List/Int32List.fromList_A01_t02: Crash # (toInt32): handleStaticFunctionGet: function(toInt32)
+LibTest/typed_data/Int32List/Int32List.view_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Int32List/Int32List_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Int32List/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Int32List/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Int32List/setAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int32List/setRange_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int32List/setRange_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int32List/sort_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int32List/toList_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int64List/Int64List.fromList_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int64List/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Int64List/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Int64List/setAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int64List/setRange_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int64List/setRange_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int64List/sort_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int64List/toList_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int8List/Int8List.fromList_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Int8List/Int8List.fromList_A01_t02: Crash # (toInt8): handleStaticFunctionGet: function(toInt8)
+LibTest/typed_data/Int8List/Int8List.view_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Int8List/Int8List_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Int8List/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Int8List/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Int8List/setAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int8List/setRange_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int8List/setRange_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int8List/sort_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Int8List/toList_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint16List/Uint16List.fromList_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Uint16List/Uint16List.fromList_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint16List/Uint16List.view_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Uint16List/Uint16List_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Uint16List/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Uint16List/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Uint16List/setAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint16List/setRange_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint16List/setRange_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint16List/sort_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint16List/toList_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint32List/Uint32List.fromList_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Uint32List/Uint32List.fromList_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint32List/Uint32List.view_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Uint32List/Uint32List_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Uint32List/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Uint32List/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Uint32List/setAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint32List/setRange_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint32List/setRange_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint32List/sort_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint32List/toList_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint64List/Uint64List.fromList_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint64List/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Uint64List/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Uint64List/setAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint64List/setRange_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint64List/setRange_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint64List/sort_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint64List/toList_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.fromList_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.fromList_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Uint8ClampedList/Uint8ClampedList_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Uint8ClampedList/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Uint8ClampedList/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Uint8ClampedList/setAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint8ClampedList/setRange_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint8ClampedList/setRange_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint8ClampedList/sort_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint8ClampedList/toList_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint8List/Uint8List.fromList_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Uint8List/Uint8List.fromList_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint8List/Uint8List.view_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Uint8List/Uint8List_A01_t01: RuntimeError # Please triage this failure.
+LibTest/typed_data/Uint8List/any_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Uint8List/every_A01_t01: Crash # (pred): handleStaticFunctionGet: function(pred)
+LibTest/typed_data/Uint8List/setAll_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint8List/setRange_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint8List/setRange_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint8List/sort_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+LibTest/typed_data/Uint8List/toList_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Utils/tests/Expect/approxEquals_A04_t01: RuntimeError # Please triage this failure.
+Utils/tests/Expect/equals_A01_t04: RuntimeError # Please triage this failure.
+Utils/tests/Expect/listEquals_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Utils/tests/Expect/listEquals_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Utils/tests/Expect/listEquals_A01_t03: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Utils/tests/Expect/listEquals_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Utils/tests/Expect/listEquals_A03_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+Utils/tests/Expect/stringEquals_A02_t01: RuntimeError # Please triage this failure.
+Utils/tests/Expect/throws_A01_t01: Crash # (badboy): handleStaticFunctionGet: function(badboy)
+Utils/tests/Expect/throws_A01_t02: Crash # (goodboy): handleStaticFunctionGet: function(goodboy)
+Utils/tests/Expect/throws_A01_t03: Crash # (badboy): handleStaticFunctionGet: function(badboy)
+WebPlatformTest/DOMEvents/approved/DOM.event.flow_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/DOMEvents/approved/Event.bubbles.false_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
WebPlatformTest/DOMEvents/approved/EventListener.eventHandler_t01: Crash # unsupported element kind: _asyncCounter:field
-WebPlatformTest/DOMEvents/approved/EventObject.after.dispatchEvenr_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/DOMEvents/approved/EventObject.multiple.dispatchEvent_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+WebPlatformTest/DOMEvents/approved/EventObject.after.dispatchEvenr_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/DOMEvents/approved/EventObject.multiple.dispatchEvent_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
WebPlatformTest/DOMEvents/approved/ProcessingInstruction.DOMCharacterDataModified_t01: Crash # unsupported element kind: _completer:field
-WebPlatformTest/DOMEvents/approved/Propagation.path.target.moved_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/DOMEvents/approved/Propagation.path.target.removed_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/DOMEvents/approved/stopImmediatePropagation.effect_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/DOMEvents/approved/stopPropagation.deferred.effect_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/DOMEvents/approved/stopPropagation.dispatchEvent_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/events/defaultPrevented_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/events/defaultPrevented_A01_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/events/defaultPrevented_A01_t03: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/events/defaultPrevented_A01_t04: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/events/defaultPrevented_A01_t05: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/events/defaultPrevented_A01_t06: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/events/event_constants/constants_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/events/event_constructors/Event_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/events/event_constructors/Event_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/events/propagation_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/events/type_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/EventTarget/dispatchEvent_A01_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/EventTarget/dispatchEvent_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+WebPlatformTest/DOMEvents/approved/Propagation.path.target.moved_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/DOMEvents/approved/Propagation.path.target.removed_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/DOMEvents/approved/addEventListener.optional.useCapture_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/DOMEvents/approved/dispatchEvent.return.value_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/DOMEvents/approved/domnodeinserted_t01: Crash # unsupported element kind: _asyncCounter:field
+WebPlatformTest/DOMEvents/approved/stopImmediatePropagation.effect_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/DOMEvents/approved/stopPropagation.deferred.effect_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/Utils/test/asyncTestFail_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/Utils/test/asyncTestFail_t02: Crash # unsupported element kind: _completer:field
+WebPlatformTest/Utils/test/asyncTestPass_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/Utils/test/asyncTestTimeout_t01: Crash # unsupported element kind: _asyncCounter:field
+WebPlatformTest/custom-elements/concepts/type_A04_t01: Crash # unsupported element kind: EXTENDER_CHARS:field
+WebPlatformTest/custom-elements/concepts/type_A05_t01: Crash # unsupported element kind: COMBINING_CHARS:field
+WebPlatformTest/custom-elements/concepts/type_A06_t01: Crash # unsupported element kind: BASE_CHARS_SINGLE:field
+WebPlatformTest/custom-elements/concepts/type_A07_t01: Crash # unsupported element kind: IDEOGRAPHIC_CHARS_SINGLE:field
+WebPlatformTest/custom-elements/concepts/type_A08_t01: Crash # unsupported element kind: DIGIT_CHARS_RANGES:field
+WebPlatformTest/custom-elements/instantiating/createElementNS_A02_t01: Crash # Unhandled node
+WebPlatformTest/custom-elements/instantiating/createElementNS_A03_t01: Crash # Unhandled node
+WebPlatformTest/custom-elements/instantiating/createElementNS_A04_t01: Crash # Unhandled node
+WebPlatformTest/custom-elements/instantiating/createElement_A02_t01: Crash # Unhandled node
+WebPlatformTest/custom-elements/instantiating/createElement_A03_t01: Crash # Unhandled node
+WebPlatformTest/custom-elements/instantiating/createElement_A04_t01: Crash # Unhandled node
+WebPlatformTest/custom-elements/instantiating/isAttribute_A01_t01: Crash # Unhandled node
+WebPlatformTest/custom-elements/instantiating/isAttribute_A01_t02: Crash # Unhandled node
+WebPlatformTest/custom-elements/instantiating/isAttribute_A02_t01: Crash # unsupported element kind: HTML5_TABLE_ELEMENTS:field
+WebPlatformTest/dom/EventTarget/dispatchEvent_A01_t01: Crash # unsupported element kind: _asyncCounter:field
+WebPlatformTest/dom/EventTarget/dispatchEvent_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
WebPlatformTest/dom/EventTarget/dispatchEvent_A03_t01: Crash # unsupported element kind: _asyncCounter:field
-WebPlatformTest/dom/EventTarget/dispatchEvent_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/lists/DOMTokenList.toString_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/attributes_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/attributes_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/attributes_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/attributes_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/attributes_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/attributes_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttribute_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttribute_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttribute_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttribute_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttribute_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttribute_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttribute_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttribute_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttribute_A09_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A03_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A04_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A05_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A06_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A06_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A06_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A07_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A07_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A07_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A08_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A09_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A09_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A10_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A10_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/CharacterData/appendData_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/CharacterData/deleteData_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/CharacterData/deleteData_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/CharacterData/insertData_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/CharacterData/insertData_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/CharacterData/remove_A01_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/CharacterData/remove_A01_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/CharacterData/remove_A02_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/CharacterData/remove_A02_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/Comment-constructor_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Document-adoptNode_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Document-createElement-namespace_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/Document-createElementNS_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Document-createElementNS_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/Document-getElementById_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Document-getElementsByTagName_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Document-importNode_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/DocumentType-remove_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/DOMImplementation-createDocument_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/DOMImplementation-createDocumentType_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/DOMImplementation-hasFeature_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Element-childElementCount-dynamic-add_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Element-childElementCount-dynamic-remove_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Element-childElementCount_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Node-appendChild_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Node-appendChild_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/Node-cloneNode_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/Node-contains_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/dom/nodes/Node-insertBefore_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Node-isEqualNode_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Node-nodeName_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Node-parentElement_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Node-parentNode_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Node-replaceChild_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/nodes/Node-textContent_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/ranges/Range-attributes_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/ranges/Range-attributes_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/ranges/Range-comparePoint_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/dom/ranges/Range-comparePoint_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+WebPlatformTest/dom/EventTarget/dispatchEvent_A04_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/dom/nodes/CharacterData/remove_A01_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/dom/nodes/CharacterData/remove_A01_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/dom/nodes/CharacterData/remove_A02_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/dom/nodes/CharacterData/remove_A02_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/dom/nodes/Comment-constructor_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/dom/nodes/DOMImplementation-createDocumentType_t01: Crash # unsupported element kind: tests:field
+WebPlatformTest/dom/nodes/DOMImplementation-createDocument_t01: Crash # unsupported element kind: tests:field
+WebPlatformTest/dom/nodes/DOMImplementation-hasFeature_t01: Crash # unsupported element kind: badTests:field
+WebPlatformTest/dom/nodes/Document-createElementNS_t01: Crash # unsupported element kind: invalidNSQNameCombinations:field
+WebPlatformTest/dom/nodes/DocumentType-remove_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/dom/nodes/Node-cloneNode_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+WebPlatformTest/dom/nodes/Node-insertBefore_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/dom/nodes/Node-isEqualNode_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/dom/nodes/Node-parentNode_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/dom/nodes/Node-replaceChild_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/dom/nodes/attributes/setAttributeNS_A03_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+WebPlatformTest/dom/nodes/attributes/setAttributeNS_A05_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+WebPlatformTest/dom/nodes/attributes/setAttributeNS_A06_t03: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+WebPlatformTest/dom/nodes/attributes/setAttribute_A06_t01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+WebPlatformTest/html-imports/link-import_t02: Crash # unsupported element kind: _completer:field
+WebPlatformTest/html-templates/parsing-html-templates/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-body-context_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+WebPlatformTest/html-templates/parsing-html-templates/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-context_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+WebPlatformTest/html-templates/parsing-html-templates/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-row-context_t01: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+WebPlatformTest/html-templates/parsing-html-templates/creating-an-element-for-the-token/template-owner-document_t01: Crash # unsupported element kind: HTML5_VOID_ELEMENTS:field
+WebPlatformTest/html-templates/template-element/template-as-a-descendant_t01: Crash # (templateIsAChild): handleStaticFunctionGet: function(templateIsAChild)
+WebPlatformTest/html-templates/template-element/template-content_t01: Crash # (assert_not_equals): handleStaticFunctionGet: function(assert_not_equals)
WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-image_t01: Crash # unsupported element kind: _completer:field
WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-video_t01: Crash # unsupported element kind: _asyncCounter:field
WebPlatformTest/html/browsers/browsing-the-web/read-text/load-text-plain_t01: Crash # unsupported element kind: _asyncCounter:field
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-getter_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-setter_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/documents/dom-tree-accessors/Document.getElementsByClassName-null_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-case_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-id_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-namespace_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-newelements_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-param_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.head_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.head_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.title_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.title_t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.title_t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.title_t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.title_t07: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/documents/dom-tree-accessors/Element.getElementsByClassName-null_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t03: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t04: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t05: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t06: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/elements/global-attributes/classlist-nonstring_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/elements/global-attributes/dataset-delete_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/elements/global-attributes/dataset-enumeration_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/elements/global-attributes/dataset-get_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/elements/global-attributes/dataset-set_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/dom/elements/global-attributes/id-name_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html-imports/link-import-null_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html-imports/link-import_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html-imports/link-import_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html-imports/loading-import_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/disabled-elements/disabledElement_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/document-metadata/styling/LinkStyle_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/edits/the-del-element/del_effect_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/edits/the-ins-element/ins_effect_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/embedded-content/media-elements/error-codes/error_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLMediaElement/addTextTrack_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLMediaElement/textTracks_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/default_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/kind_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/label_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/readyState_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/srclang_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/src_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/track_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/TextTrack/cues_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/TextTrack/kind_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/TextTrack/mode_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/embedded-content/the-audio-element/audio_constructor_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/attributes-common-to-form-controls/formAction_document_address_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/attributes-common-to-form-controls/formaction_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/textfieldselection/selection-not-application-textarea_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/forms/textfieldselection/selection_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/textfieldselection/textfieldselection-setRangeText_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-button-element/button-validation_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-datalist-element/datalistelement_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-datalist-element/datalistoptions_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-fieldset-element/disabled_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-fieldset-element/HTMLFieldSetElement_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-form-element/form-autocomplete_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-form-element/form-elements-matches_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-form-element/form-elements-nameditem_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/forms/the-form-element/form-nameditem_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/color_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/date_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/datetime-local_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/datetime_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/forms/the-input-element/datetime_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/email_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/hidden_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/input-textselection_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/input-type-button_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/input-type-checkbox_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/mobiles_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/month_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/password_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/pattern_attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/forms/the-input-element/range_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/range_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/required_attribute_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/forms/the-input-element/search_input_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/telephone_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/text_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/time_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/time_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/type-change-state_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/url_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/valueMode_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-input-element/week_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-meter-element/meter_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-option-element/option-text-backslash_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/forms/the-option-element/option-text-recurse_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-option-element/option-text-spaces_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/forms/the-output-element/output_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/forms/the-textarea-element/textarea-type_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/grouping-content/the-blockquote-element/grouping-blockquote_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/grouping-content/the-li-element/grouping-li_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/grouping-content/the-ol-element/ol.start-reflection_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/grouping-content/the-ol-element/ol.start-reflection_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/interactive-elements/the-details-element/toggleEvent_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/interactive-elements/the-dialog-element/dialog-close_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/interactive-elements/the-dialog-element/dialog-showModal_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/scripting-1/the-script-element/async_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/scripting-1/the-script-element/async_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/scripting-1/the-script-element/async_t11: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/scripting-1/the-script-element/script-text_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/scripting-1/the-script-element/script-text_t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/selectors/pseudo-classes/checked_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/selectors/pseudo-classes/default_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/selectors/pseudo-classes/dir_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/selectors/pseudo-classes/disabled_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/selectors/pseudo-classes/enabled_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/selectors/pseudo-classes/focus_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/selectors/pseudo-classes/indeterminate_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/selectors/pseudo-classes/inrange-outofrange_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/selectors/pseudo-classes/link_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/selectors/pseudo-classes/required-optional_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/selectors/pseudo-classes/valid-invalid_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/tabular-data/attributes-common-to-td-and-th-elements/cellIndex_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/tabular-data/the-caption-element/caption_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/tabular-data/the-table-element/border_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/tabular-data/the-table-element/caption-methods_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/tabular-data/the-table-element/createTBody_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/tabular-data/the-table-element/insertRow-method_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/tabular-data/the-table-element/insertRow-method_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/tabular-data/the-table-element/table-insertRow_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/tabular-data/the-table-element/table-rows_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/tabular-data/the-table-element/tBodies_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/semantics/tabular-data/the-tr-element/rowIndex_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/text-level-semantics/the-a-element/a.text-getter_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/semantics/text-level-semantics/the-a-element/a.text-setter_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/syntax/parsing/Document.getElementsByTagName-foreign_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/syntax/parsing/Document.getElementsByTagName-foreign_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/syntax/parsing/math-parse_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/syntax/parsing/math-parse_t03: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/syntax/serializing-html-fragments/outerHTML_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html-templates/additions-to-the-steps-to-clone-a-node/template-clone-children_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/additions-to-the-steps-to-clone-a-node/templates-copy-document-owner_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/definitions/template-contents-owner-document-type_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/definitions/template-contents-owner-test-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/definitions/template-contents_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/innerhtml-on-templates/innerhtml_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-foster-parenting/template-is-a-foster-parent-element_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-foster-parenting/template-is-not-a-foster-parent-element_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-body-insertion-mode/generating-of-implied-end-tags_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-body-insertion-mode/ignore-body-token_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-body-insertion-mode/ignore-frameset-token_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-body-insertion-mode/ignore-head-token_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-body-insertion-mode/ignore-html-token_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-body-insertion-mode/start-tag-body_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-body-insertion-mode/template-end-tag-without-start-one_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-head-insertion-mode/generating-of-implied-end-tags_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-head-insertion-mode/template-end-tag-without-start-one_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-table-insertion-mode/end-tag-table_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/appending-to-a-template/template-child-nodes_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-body-context_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-context_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-row-context_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/parsing-html-templates/creating-an-element-for-the-token/template-owner-document_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/serializing-html-templates/outerhtml_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/template-element/content-attribute_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/template-element/node-document-changes_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/template-element/template-as-a-descendant_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/template-element/template-content-node-document_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html-templates/template-element/template-content_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol_t00: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-004_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-004_t02: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-005_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-006_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/elements-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-003_t01: Crash # (throw new ExpectException(message)): Unhandled node
+WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t03: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t04: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t05: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t06: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/embedded-content/media-elements/error-codes/error_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/TextTrack/cues_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/html/semantics/forms/the-datalist-element/datalistoptions_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/forms/the-fieldset-element/HTMLFieldSetElement_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/forms/the-form-element/form-elements-matches_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/forms/the-form-element/form-elements-nameditem_t02: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/forms/the-input-element/datetime_t01: Crash # Instance of 'TypeOperator': type casts not implemented.
+WebPlatformTest/html/semantics/forms/the-input-element/valueMode_t01: Crash # Unhandled node
+WebPlatformTest/html/semantics/interactive-elements/the-details-element/toggleEvent_t01: Crash # unsupported element kind: asyncCompleted:field
+WebPlatformTest/html/semantics/scripting-1/the-script-element/script-text_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/selectors/pseudo-classes/checked_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/selectors/pseudo-classes/default_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/selectors/pseudo-classes/dir_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/selectors/pseudo-classes/disabled_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/selectors/pseudo-classes/enabled_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/selectors/pseudo-classes/focus_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/selectors/pseudo-classes/indeterminate_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/selectors/pseudo-classes/inrange-outofrange_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/selectors/pseudo-classes/link_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/selectors/pseudo-classes/required-optional_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/selectors/pseudo-classes/valid-invalid_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/tabular-data/the-table-element/createTBody_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/tabular-data/the-table-element/table-insertRow_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+WebPlatformTest/html/semantics/tabular-data/the-table-element/table-rows_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List<TableRowElement>.
+WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/elements-001_t01: Crash # unsupported element kind: HTML5_ELEMENT_NAMES:field
WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-event-interface/event-path-001_t01: Crash # unsupported element kind: _completer:field
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-007_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-008_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-009_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-010_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-011_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-012_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-013_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-002_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-005_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-006_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-007_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-010_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-002_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-003_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-004_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-004_t02: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-005_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-006_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-002_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-003_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-003_t02: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-004_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-005_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/events/event-dispatch/test-001_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/event-dispatch/test-002_t01: Crash # (throw new ExpectException(message)): Unhandled node
+WebPlatformTest/shadow-dom/events/event-dispatch/test-001_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/event-dispatch/test-002_t01: Crash # unsupported element kind: _completer:field
WebPlatformTest/shadow-dom/events/event-dispatch/test-003_t01: Crash # unsupported element kind: _completer:field
-WebPlatformTest/shadow-dom/events/event-retargeting/test-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
+WebPlatformTest/shadow-dom/events/event-retargeting/test-001_t01: Crash # unsupported element kind: _completer:field
WebPlatformTest/shadow-dom/events/event-retargeting/test-002_t01: Crash # unsupported element kind: _completer:field
WebPlatformTest/shadow-dom/events/event-retargeting/test-003_t01: Crash # unsupported element kind: _completer:field
-WebPlatformTest/shadow-dom/events/event-retargeting/test-004_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-001_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-002_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-003_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-004_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-005_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-006_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-007_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-008_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-009_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t02: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t03: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t04: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t05: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t06: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-002_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-003_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-001_t01: Crash # (throw new ExpectException(message)): Unhandled node
+WebPlatformTest/shadow-dom/events/event-retargeting/test-004_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-001_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-002_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-003_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-004_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-005_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-006_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-007_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-008_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-009_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t02: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t05: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t06: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-002_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-003_t01: Crash # unsupported element kind: _completer:field
+WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-001_t01: Crash # unsupported element kind: _completer:field
WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-002_t01: Crash # unsupported element kind: _completer:field
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-003_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-002_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-003_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-004_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/html-forms/test-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/html-forms/test-002_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/inert-html-elements/test-002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/composition/test-001_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/custom-pseudo-elements/test-001_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/distributed-pseudo-element/test-001_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/distributed-pseudo-element/test-002_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-003_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/distribution-003_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-003_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-004_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-005_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/nested-shadow-trees/test-001_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/rendering-shadow-trees/test-001_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/reprojection/test-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-002_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-003_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-004_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-005_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-006_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-017_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/dom-tree-accessors-002_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/ownerdocument-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/ownerdocument-002_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/selectors-api-001_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/selectors-api-002_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/shadow-root-001_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-005_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-007_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-009_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-011_t01: Crash # (throw '${testName}: ${e}'): Unhandled node
-WebPlatformTest/Utils/test/asyncTestFail_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/Utils/test/asyncTestFail_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/Utils/test/asyncTestPass_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/Utils/test/asyncTestTimeout_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/Utils/test/testFail_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/Utils/test/testPass_t01: Crash # (throw new ExpectException(message)): Unhandled node
+WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/html-forms/test-001_t01: Crash # unsupported element kind: HTML5_FORM_ASSOCIATED_ELEMENTS:field
+WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/html-forms/test-002_t01: Crash # unsupported element kind: HTML5_FORM_ASSOCIATED_ELEMENTS:field
+WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/ownerdocument-002_t01: Crash # (testElement): handleStaticFunctionGet: function(testElement)
+WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-005_t01: Crash # unsupported element kind: HTML5_FORM_ASSOCIATED_ELEMENTS:field
+WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-007_t01: Crash # unsupported element kind: HTML5_FORM_ASSOCIATED_ELEMENTS:field
WebPlatformTest/webstorage/event_constructor_t01: Crash # unsupported element kind: _completer:field
WebPlatformTest/webstorage/event_constructor_t02: Crash # unsupported element kind: _completer:field
WebPlatformTest/webstorage/event_local_key_t01: Crash # unsupported element kind: _completer:field
@@ -17284,18 +11596,4 @@
WebPlatformTest/webstorage/event_session_storagearea_t01: Crash # unsupported element kind: _completer:field
WebPlatformTest/webstorage/event_session_storageeventinit_t01: Crash # unsupported element kind: _completer:field
WebPlatformTest/webstorage/event_session_url_t01: Crash # unsupported element kind: _completer:field
-WebPlatformTest/webstorage/storage_builtins_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/webstorage/storage_clear_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/webstorage/storage_local_getitem_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/webstorage/storage_local_key_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/webstorage/storage_local_length_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/webstorage/storage_local_remove_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/webstorage/storage_local_setitem_quotaexceedederr_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/webstorage/storage_local_setitem_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/webstorage/storage_session_getitem_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/webstorage/storage_session_getitem_t02: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/webstorage/storage_session_key_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/webstorage/storage_session_length_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/webstorage/storage_session_removeitem_t01: Crash # (throw new ExpectException(message)): Unhandled node
-WebPlatformTest/webstorage/storage_session_setitem_quotaexceedederr_t01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-WebPlatformTest/webstorage/storage_session_setitem_t01: Crash # (throw new ExpectException(message)): Unhandled node
+WebPlatformTest/webstorage/storage_builtins_t01: Crash # Instance of 'TypeOperator': type check unimplemented for List.
diff --git a/tests/co19/co19-runtime.status b/tests/co19/co19-runtime.status
index b7d8699..b5c5bc4c 100644
--- a/tests/co19/co19-runtime.status
+++ b/tests/co19/co19-runtime.status
@@ -49,7 +49,6 @@
Language/14_Libraries_and_Scripts/3_Parts_A01_t06: Fail
[ $runtime == vm ]
-# These flaky tests also fail with dart2dart.
LibTest/math/MutableRectangle/MutableRectangle.fromPoints_A01_t01: Pass, RuntimeError # co19-roll r607: Please triage this failure
[ $compiler == none && $runtime == vm && $mode == debug ]
diff --git a/tests/compiler/dart2js/analyze_unused_dart2js_test.dart b/tests/compiler/dart2js/analyze_unused_dart2js_test.dart
index b0bdf8d..fe36410 100644
--- a/tests/compiler/dart2js/analyze_unused_dart2js_test.dart
+++ b/tests/compiler/dart2js/analyze_unused_dart2js_test.dart
@@ -29,10 +29,16 @@
"The method 'error"],
"lib/src/resolution/semantic_visitor_mixins.dart": const [
"The method 'error"],
+ "lib/src/cps_ir/cps_ir_builder_task.dart": const [
+ "The method 'error"],
// Uncalled type predicate. Keep while related predicates are used.
"lib/src/ssa/nodes.dart": const [
"The method 'isArray' is never called"],
+
+ // Method in abstract class. Currently only instantiated trough tests.
+ "lib/src/constants/expressions.dart": const [
+ "The method 'readFromEnvironment' is never called"],
};
void main() {
diff --git a/tests/compiler/dart2js/compiler_helper.dart b/tests/compiler/dart2js/compiler_helper.dart
index 8953792..e139a0e 100644
--- a/tests/compiler/dart2js/compiler_helper.dart
+++ b/tests/compiler/dart2js/compiler_helper.dart
@@ -75,7 +75,7 @@
new leg.ResolutionWorkItem(element, context);
resolutionWork.run(compiler, compiler.enqueuer.resolution);
leg.CodegenWorkItem work =
- new leg.CodegenWorkItem(element, context);
+ new leg.CodegenWorkItem(compiler, element, context);
compiler.phase = Compiler.PHASE_COMPILING;
work.run(compiler, compiler.enqueuer.codegen);
js.JavaScriptBackend backend = compiler.backend;
diff --git a/tests/compiler/dart2js/constant_expression_evaluate_test.dart b/tests/compiler/dart2js/constant_expression_evaluate_test.dart
new file mode 100644
index 0000000..2a2c41e
--- /dev/null
+++ b/tests/compiler/dart2js/constant_expression_evaluate_test.dart
@@ -0,0 +1,239 @@
+// Copyright (c) 2015, 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.
+
+library dart2js.constants.expressions.evaluate_test;
+
+import 'dart:async';
+import 'package:async_helper/async_helper.dart';
+import 'package:expect/expect.dart';
+import 'package:compiler/src/constants/expressions.dart';
+import 'package:compiler/src/constants/values.dart';
+import 'package:compiler/src/constant_system_dart.dart';
+import 'package:compiler/src/core_types.dart';
+import 'package:compiler/src/dart2jslib.dart';
+import 'package:compiler/src/elements/elements.dart';
+import 'memory_compiler.dart';
+
+class TestData {
+ /// Declarations needed for the [constants].
+ final String declarations;
+ /// Tested constants.
+ final List constants;
+
+ const TestData(this.declarations, this.constants);
+}
+
+class ConstantData {
+ /// Source code for the constant expression.
+ final String code;
+ /// Map from environment to expected constant value as structured text.
+ final Map<Map<String, String>, String> expectedValues;
+
+ const ConstantData(this.code,
+ this.expectedValues);
+}
+
+class MemoryEnvironment implements Environment {
+ final Compiler compiler;
+ final Map<String, String> env;
+
+ MemoryEnvironment(this.compiler, [this.env = const <String, String>{}]);
+
+ @override
+ String readFromEnvironment(String name) => env[name];
+}
+
+const List<TestData> DATA = const [
+ const TestData('', const [
+ const ConstantData('null', const { const {} : 'NullConstant' }),
+ const ConstantData('false', const { const {} : 'BoolConstant(false)' }),
+ const ConstantData('true', const { const {} : 'BoolConstant(true)' }),
+ const ConstantData('0', const { const {} : 'IntConstant(0)' }),
+ const ConstantData('0.0', const { const {} : 'DoubleConstant(0.0)' }),
+ const ConstantData('"foo"', const { const {} : 'StringConstant("foo")' }),
+ const ConstantData('1 + 2', const { const {} : 'IntConstant(3)' }),
+ const ConstantData('-(1)', const { const {} : 'IntConstant(-1)' }),
+ const ConstantData('identical(0, 1)',
+ const { const {} : 'BoolConstant(false)' }),
+ const ConstantData('"a" "b"', const { const {} : 'StringConstant("ab")' }),
+ const ConstantData('identical',
+ const { const {} : 'FunctionConstant(identical)' }),
+ const ConstantData('true ? 0 : 1', const { const {} : 'IntConstant(0)' }),
+ const ConstantData('proxy',
+ const { const {} : 'ConstructedConstant(_Proxy())' }),
+ const ConstantData('Object', const { const {} : 'TypeConstant(Object)' }),
+ const ConstantData('const [0, 1]',
+ const { const {} : 'ListConstant([IntConstant(0), IntConstant(1)])' }),
+ const ConstantData('const <int>[0, 1]', const {
+ const {} : 'ListConstant(<int>[IntConstant(0), IntConstant(1)])' }),
+ const ConstantData('const {0: 1, 2: 3}',
+ const { const {} :
+ 'MapConstant({IntConstant(0): IntConstant(1), '
+ 'IntConstant(2): IntConstant(3)})' }),
+ const ConstantData('const <int, int>{0: 1, 2: 3}',
+ const { const {} :
+ 'MapConstant(<int, int>{IntConstant(0): IntConstant(1), '
+ 'IntConstant(2): IntConstant(3)})' }),
+ const ConstantData(
+ 'const bool.fromEnvironment("foo", defaultValue: false)',
+ const { const {} : 'BoolConstant(false)',
+ const {'foo': 'true'} : 'BoolConstant(true)'}),
+ const ConstantData(
+ 'const int.fromEnvironment("foo", defaultValue: 42)',
+ const { const {} : 'IntConstant(42)',
+ const {'foo': '87'} : 'IntConstant(87)'}),
+ const ConstantData(
+ 'const String.fromEnvironment("foo", defaultValue: "bar")',
+ const { const {} : 'StringConstant("bar")',
+ const {'foo': 'foo'} : 'StringConstant("foo")'}),
+ ]),
+ const TestData('''
+const a = const bool.fromEnvironment("foo", defaultValue: true);
+const b = const int.fromEnvironment("bar", defaultValue: 42);
+
+class A {
+ const A();
+}
+class B {
+ final field1;
+ const B(this.field1);
+}
+class C extends B {
+ final field2;
+ const C({field1: 42, this.field2: false}) : super(field1);
+ const C.named([field = false]) : this(field1: field, field2: field);
+}
+''', const [
+ const ConstantData('const Object()',
+ const { const {} : 'ConstructedConstant(Object())' }),
+ const ConstantData('const A()',
+ const { const {} : 'ConstructedConstant(A())' }),
+ const ConstantData('const B(0)',
+ const { const {} : 'ConstructedConstant(B(field1=IntConstant(0)))' }),
+ const ConstantData('const B(const A())',
+ const { const {} :
+ 'ConstructedConstant(B(field1=ConstructedConstant(A())))' }),
+ const ConstantData('const C()', const { const {} :
+ 'ConstructedConstant(C(field1=IntConstant(42),'
+ 'field2=BoolConstant(false)))' }),
+ const ConstantData('const C(field1: 87)', const { const {} :
+ 'ConstructedConstant(C(field1=IntConstant(87),'
+ 'field2=BoolConstant(false)))' }),
+ const ConstantData('const C(field2: true)', const { const {} :
+ 'ConstructedConstant(C(field1=IntConstant(42),'
+ 'field2=BoolConstant(true)))' }),
+ const ConstantData('const C.named()', const { const {} :
+ 'ConstructedConstant(C(field1=BoolConstant(false),'
+ 'field2=BoolConstant(false)))' }),
+ const ConstantData('const C.named(87)', const { const {} :
+ 'ConstructedConstant(C(field1=IntConstant(87),'
+ 'field2=IntConstant(87)))' }),
+ const ConstantData('const C(field1: a, field2: b)', const {
+ const {} :
+ 'ConstructedConstant(C(field1=BoolConstant(true),'
+ 'field2=IntConstant(42)))',
+ const {'foo': 'false', 'bar': '87'} :
+ 'ConstructedConstant(C(field1=BoolConstant(false),'
+ 'field2=IntConstant(87)))', }),
+ ]),
+ const TestData('''
+class A<T> implements B {
+ final field1;
+ const A({this.field1:42});
+}
+class B<S> implements C {
+ const factory B({field1}) = A<B<S>>;
+ // TODO(johnniwinther): Enable this when the constructor evaluator doesn't
+ // crash:
+ /*const factory B.named() = A<S>;*/
+}
+class C<U> {
+ const factory C({field1}) = A<B<double>>;
+}
+''', const [
+ const ConstantData('const A()',
+ const { const {} :
+ 'ConstructedConstant(A<dynamic>(field1=IntConstant(42)))' }),
+ const ConstantData('const A<int>(field1: 87)',
+ const { const {} :
+ 'ConstructedConstant(A<int>(field1=IntConstant(87)))' }),
+ const ConstantData('const B()',
+ const { const {} :
+ 'ConstructedConstant(A<B<dynamic>>(field1=IntConstant(42)))' }),
+ const ConstantData('const B<int>()',
+ const { const {} :
+ 'ConstructedConstant(A<B<int>>(field1=IntConstant(42)))' }),
+ const ConstantData('const B<int>(field1: 87)',
+ const { const {} :
+ 'ConstructedConstant(A<B<int>>(field1=IntConstant(87)))' }),
+ const ConstantData('const C<int>(field1: 87)',
+ const { const {} :
+ 'ConstructedConstant(A<B<double>>(field1=IntConstant(87)))' }),
+ // TODO(johnniwinther): Enable this when the constructor evaluator doesn't
+ // crash:
+ /*const ConstantData('const B<int>.named()',
+ const { const {} :
+ 'ConstructedConstant(A<int>(field1=IntConstant(42)))' }),*/
+ ]),
+ const TestData('''
+const c = const int.fromEnvironment("foo", defaultValue: 5);
+const d = const int.fromEnvironment("bar", defaultValue: 10);
+
+class A {
+ final field;
+ const A(a, b) : field = a + b;
+}
+
+class B extends A {
+ const B(a) : super(a, a * 2);
+}
+''', const [
+ const ConstantData('const A(c, d)', const {
+ const {} :
+ 'ConstructedConstant(A(field=IntConstant(15)))',
+ const {'foo': '7', 'bar': '11'} :
+ 'ConstructedConstant(A(field=IntConstant(18)))', }),
+ const ConstantData('const B(d)', const {
+ const {} :
+ 'ConstructedConstant(B(field=IntConstant(30)))',
+ const {'bar': '42'} :
+ 'ConstructedConstant(B(field=IntConstant(126)))', }),
+ ]),
+];
+
+main() {
+ asyncTest(() => Future.forEach(DATA, testData));
+}
+
+Future testData(TestData data) {
+ StringBuffer sb = new StringBuffer();
+ sb.write('${data.declarations}\n');
+ Map constants = {};
+ data.constants.forEach((ConstantData constantData) {
+ String name = 'c${constants.length}';
+ sb.write('const $name = ${constantData.code};\n');
+ constants[name] = constantData;
+ });
+ sb.write('main() {}\n');
+ String source = sb.toString();
+ Compiler compiler = compilerFor(
+ {'main.dart': source}, options: ['--analyze-all']);
+ return compiler.runCompiler(Uri.parse('memory:main.dart')).then((_) {
+ var library = compiler.mainApp;
+ constants.forEach((String name, ConstantData data) {
+ FieldElement field = library.localLookup(name);
+ ConstantExpression constant = field.constant;
+ data.expectedValues.forEach(
+ (Map<String, String> env, String expectedText) {
+ Environment environment = new MemoryEnvironment(compiler, env);
+ ConstantValue value =
+ constant.evaluate(environment, DART_CONSTANT_SYSTEM);
+ String valueText = value.toStructuredString();
+ Expect.equals(expectedText, valueText,
+ "Unexpected value '${valueText}' for contant "
+ "`${constant.getText()}`, expected '${expectedText}'.");
+ });
+ });
+ });
+}
diff --git a/tests/compiler/dart2js/constant_expression_test.dart b/tests/compiler/dart2js/constant_expression_test.dart
new file mode 100644
index 0000000..c7fdaaf
--- /dev/null
+++ b/tests/compiler/dart2js/constant_expression_test.dart
@@ -0,0 +1,247 @@
+// Copyright (c) 2015, 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.
+
+library constant_expression_test;
+
+import 'dart:async';
+import 'package:async_helper/async_helper.dart';
+import 'package:expect/expect.dart';
+import 'package:compiler/src/constants/expressions.dart';
+import 'package:compiler/src/dart2jslib.dart';
+import 'package:compiler/src/elements/elements.dart';
+import 'memory_compiler.dart';
+
+class TestData {
+ /// Declarations needed for the [constants].
+ final String declarations;
+ /// Tested constants.
+ final List constants;
+
+ const TestData(this.declarations, this.constants);
+}
+
+class ConstantData {
+ /// Source code for the constant expression.
+ final String code;
+ /// The expected constant expression kind.
+ final ConstantExpressionKind kind;
+ /// ConstantExpression.getText() result if different from [code].
+ final String text;
+ /// The expected instance type for ConstructedConstantExpression.
+ final String type;
+ /// The expected instance fields for ConstructedConstantExpression.
+ final Map<String, String> fields;
+
+ const ConstantData(String code,
+ this.kind,
+ {String text,
+ this.type,
+ this.fields})
+ : this.code = code,
+ this.text = text != null ? text : code;
+}
+
+const List<TestData> DATA = const [
+ const TestData('', const [
+ const ConstantData('null', ConstantExpressionKind.NULL),
+ const ConstantData('false', ConstantExpressionKind.BOOL),
+ const ConstantData('true', ConstantExpressionKind.BOOL),
+ const ConstantData('0', ConstantExpressionKind.INT),
+ const ConstantData('0.0', ConstantExpressionKind.DOUBLE),
+ const ConstantData('"foo"', ConstantExpressionKind.STRING),
+ const ConstantData('1 + 2', ConstantExpressionKind.BINARY),
+ const ConstantData('-(1)', ConstantExpressionKind.UNARY, text: '-1'),
+ const ConstantData('identical(0, 1)', ConstantExpressionKind.IDENTICAL),
+ const ConstantData('"a" "b"', ConstantExpressionKind.CONCATENATE,
+ text: '"ab"'),
+ const ConstantData('identical', ConstantExpressionKind.FUNCTION),
+ const ConstantData('true ? 0 : 1', ConstantExpressionKind.CONDITIONAL),
+ const ConstantData('proxy', ConstantExpressionKind.VARIABLE),
+ const ConstantData('Object', ConstantExpressionKind.TYPE),
+ const ConstantData('#name', ConstantExpressionKind.SYMBOL),
+ const ConstantData('const [0, 1]', ConstantExpressionKind.LIST),
+ const ConstantData('const <int>[0, 1]', ConstantExpressionKind.LIST),
+ const ConstantData('const {0: 1, 2: 3}', ConstantExpressionKind.MAP),
+ const ConstantData('const <int, int>{0: 1, 2: 3}',
+ ConstantExpressionKind.MAP),
+ const ConstantData(
+ 'const bool.fromEnvironment("foo", defaultValue: false)',
+ ConstantExpressionKind.BOOL_FROM_ENVIRONMENT),
+ const ConstantData(
+ 'const int.fromEnvironment("foo", defaultValue: 42)',
+ ConstantExpressionKind.INT_FROM_ENVIRONMENT),
+ const ConstantData(
+ 'const String.fromEnvironment("foo", defaultValue: "bar")',
+ ConstantExpressionKind.STRING_FROM_ENVIRONMENT),
+ ]),
+ const TestData('''
+class A {
+ const A();
+}
+class B {
+ final field1;
+ const B(this.field1);
+}
+class C extends B {
+ final field2;
+ const C({field1: 42, this.field2: false}) : super(field1);
+ const C.named([field = false]) : this(field1: field, field2: field);
+}
+''', const [
+ const ConstantData('const Object()',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'Object', fields: const {}),
+ const ConstantData('const A()',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'A', fields: const {}),
+ const ConstantData('const B(0)',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'B',
+ fields: const {'field(B#field1)': '0'}),
+ const ConstantData('const B(const A())',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'B',
+ fields: const {'field(B#field1)': 'const A()'}),
+ const ConstantData('const C()',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'C',
+ fields: const {
+ 'field(B#field1)': '42',
+ 'field(C#field2)': 'false',
+ }),
+ const ConstantData('const C(field1: 87)',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'C',
+ fields: const {
+ 'field(B#field1)': '87',
+ 'field(C#field2)': 'false',
+ }),
+ const ConstantData('const C(field2: true)',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'C',
+ fields: const {
+ 'field(B#field1)': '42',
+ 'field(C#field2)': 'true',
+ }),
+ const ConstantData('const C.named()',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'C',
+ fields: const {
+ 'field(B#field1)': 'false',
+ 'field(C#field2)': 'false',
+ }),
+ const ConstantData('const C.named(87)',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'C',
+ fields: const {
+ 'field(B#field1)': '87',
+ 'field(C#field2)': '87',
+ }),
+ ]),
+ const TestData('''
+class A<T> implements B {
+ final field1;
+ const A({this.field1:42});
+}
+class B<S> implements C {
+ const factory B({field1}) = A<B<S>>;
+ // TODO(johnniwinther): Enable this when the constructor evaluator doesn't
+ // crash:
+ /*const factory B.named() = A<S>;*/
+}
+class C<U> {
+ const factory C({field1}) = A<B<double>>;
+}
+''', const [
+ const ConstantData('const A()', ConstantExpressionKind.CONSTRUCTED,
+ type: 'A<dynamic>',
+ fields: const {'field(A#field1)': '42'}),
+ const ConstantData('const A<int>(field1: 87)',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'A<int>',
+ fields: const {'field(A#field1)': '87'}),
+ const ConstantData('const B()', ConstantExpressionKind.CONSTRUCTED,
+ type: 'A<B<dynamic>>',
+ fields: const {
+ 'field(A#field1)': '42',
+ }),
+ const ConstantData('const B<int>()', ConstantExpressionKind.CONSTRUCTED,
+ type: 'A<B<int>>',
+ fields: const {
+ 'field(A#field1)': '42',
+ }),
+ const ConstantData('const B<int>(field1: 87)',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'A<B<int>>',
+ fields: const {
+ 'field(A#field1)': '87',
+ }),
+ const ConstantData('const C<int>(field1: 87)',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'A<B<double>>',
+ fields: const {
+ 'field(A#field1)': '87',
+ }),
+ // TODO(johnniwinther): Enable this when the constructor evaluator doesn't
+ // crash:
+ /*const ConstantData('const B<int>.named()',
+ ConstantExpressionKind.CONSTRUCTED,
+ type: 'A<int>',
+ fields: const {
+ 'field(A#field1)': '42',
+ }),*/
+ ]),
+];
+
+main() {
+ asyncTest(() => Future.forEach(DATA, testData));
+}
+
+Future testData(TestData data) {
+ StringBuffer sb = new StringBuffer();
+ sb.write('${data.declarations}\n');
+ Map constants = {};
+ data.constants.forEach((ConstantData constantData) {
+ String name = 'c${constants.length}';
+ sb.write('const $name = ${constantData.code};\n');
+ constants[name] = constantData;
+ });
+ sb.write('main() {}\n');
+ String source = sb.toString();
+ Compiler compiler = compilerFor(
+ {'main.dart': source}, options: ['--analyze-all']);
+ return compiler.runCompiler(Uri.parse('memory:main.dart')).then((_) {
+ var library = compiler.mainApp;
+ constants.forEach((String name, ConstantData data) {
+ FieldElement field = library.localLookup(name);
+ var constant = field.constant;
+ Expect.equals(data.kind, constant.kind,
+ "Unexpected kind '${constant.kind}' for contant "
+ "`${constant.getText()}`, expected '${data.kind}'.");
+ Expect.equals(data.text, constant.getText(),
+ "Unexpected text '${constant.getText()}' for contant, "
+ "expected '${data.text}'.");
+ if (data.type != null) {
+ String instanceType = constant.computeInstanceType().toString();
+ Expect.equals(data.type, instanceType,
+ "Unexpected type '$instanceType' for contant "
+ "`${constant.getText()}`, expected '${data.type}'.");
+ }
+ if (data.fields != null) {
+ Map instanceFields = constant.computeInstanceFields();
+ Expect.equals(data.fields.length, instanceFields.length,
+ "Unexpected field count ${instanceFields.length} for contant "
+ "`${constant.getText()}`, expected '${data.fields.length}'.");
+ instanceFields.forEach((field, expression) {
+ String name = '$field';
+ String expression = instanceFields[field].getText();
+ String expected = data.fields[name];
+ Expect.equals(expected, expression,
+ "Unexpected field expression ${expression} for field '$name' in "
+ "contant `${constant.getText()}`, expected '${expected}'.");
+ });
+ }
+ });
+ });
+}
diff --git a/tests/compiler/dart2js/deferred_inline_restrictions_test.dart b/tests/compiler/dart2js/deferred_inline_restrictions_test.dart
new file mode 100644
index 0000000..2bedda3
--- /dev/null
+++ b/tests/compiler/dart2js/deferred_inline_restrictions_test.dart
@@ -0,0 +1,137 @@
+// Copyright (c) 2014, 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.
+
+// Test that we do not accidentially leak code from deferred libraries but do
+// allow inlining of empty functions and from main.
+
+import 'package:expect/expect.dart';
+import "package:async_helper/async_helper.dart";
+import 'memory_source_file_helper.dart';
+import "dart:async";
+
+import 'package:compiler/src/dart2jslib.dart'
+ as dart2js;
+
+class MemoryOutputSink extends EventSink<String> {
+ StringBuffer mem = new StringBuffer();
+ void add(String event) {
+ mem.write(event);
+ }
+ void addError(String event, [StackTrace stackTrace]) {
+ Expect.isTrue(false);
+ }
+ void close() {}
+}
+
+void main() {
+ Uri script = currentDirectory.resolveUri(Platform.script);
+ Uri libraryRoot = script.resolve('../../../sdk/');
+ Uri packageRoot = script.resolve('./packages/');
+
+ var provider = new MemorySourceFileProvider(MEMORY_SOURCE_FILES);
+ var handler = new FormattingDiagnosticHandler(provider);
+
+ Map<String, MemoryOutputSink> outputs = new Map<String, MemoryOutputSink>();
+
+ MemoryOutputSink outputSaver(name, extension) {
+ if (name == '') {
+ name = 'main';
+ }
+ return outputs.putIfAbsent("$name.$extension", () {
+ return new MemoryOutputSink();
+ });
+ }
+
+ Compiler compiler = new Compiler(provider.readStringFromUri,
+ outputSaver,
+ handler.diagnosticHandler,
+ libraryRoot,
+ packageRoot,
+ [],
+ {});
+ asyncTest(() => compiler.run(Uri.parse('memory:main.dart')).then((_) {
+ lookupLibrary(name) {
+ return compiler.libraryLoader.lookupLibrary(Uri.parse(name));
+ }
+
+ var outputUnitForElement = compiler.deferredLoadTask.outputUnitForElement;
+
+ var lib1 = lookupLibrary("memory:lib1.dart");
+ var inlineMeAway = lib1.find("inlineMeAway");
+ var ou_lib1 = outputUnitForElement(inlineMeAway);
+
+ var lib3 = lookupLibrary("memory:lib3.dart");
+ var sameContextInline = lib3.find("sameContextInline");
+ var ou_lib3 = outputUnitForElement(sameContextInline);
+
+ // Test that we actually got differnt output units.
+ Expect.notEquals(ou_lib1.name, ou_lib3.name);
+
+ String mainOutput = outputs["main.js"].mem.toString();
+ String lib1Output = outputs["out_${ou_lib1.name}.part.js"].mem.toString();
+ String lib3Output = outputs["out_${ou_lib3.name}.part.js"].mem.toString();
+
+ RegExp re1 = new RegExp(r"inlined as empty");
+ RegExp re2 = new RegExp(r"inlined from main");
+ RegExp re3 = new RegExp(r"inlined from lib1");
+ RegExp re4 = new RegExp(r"inline same context");
+
+ // Test that inlineMeAway was inlined and its argument thus dropped.
+ Expect.isFalse(re1.hasMatch(mainOutput));
+
+ // Test that inlineFromMain was inlined and thus the string moved to lib1.
+ Expect.isFalse(re2.hasMatch(mainOutput));
+ Expect.isTrue(re2.hasMatch(lib1Output));
+
+ // Test that inlineFromLib1 was not inlined into main.
+ Expect.isFalse(re3.hasMatch(mainOutput));
+ Expect.isTrue(re3.hasMatch(lib1Output));
+
+ // Test that inlineSameContext was inlined into lib1.
+ Expect.isFalse(re4.hasMatch(lib3Output));
+ Expect.isTrue(re4.hasMatch(lib1Output));
+ }));
+}
+
+// Make sure that empty functions are inlined and that functions from
+// main also are inlined (assuming normal heuristics).
+const Map MEMORY_SOURCE_FILES = const {"main.dart": """
+import "dart:async";
+
+import 'lib1.dart' deferred as lib1;
+import 'lib2.dart' deferred as lib2;
+
+inlineFromMain(x) => "inlined from main" + x;
+
+void main() {
+ lib1.loadLibrary().then((_) {
+ lib2.loadLibrary().then((_) {
+ lib1.test();
+ lib2.test();
+ print(lib1.inlineMeAway("inlined as empty"));
+ print(lib1.inlineFromLib1("should stay"));
+ });
+ });
+}
+""", "lib1.dart": """
+import "main.dart" as main;
+import "lib3.dart" as lib3;
+
+inlineMeAway(x) {}
+
+inlineFromLib1(x) => "inlined from lib1" + x;
+
+test() {
+ print(main.inlineFromMain("should be inlined"));
+ print(lib3.sameContextInline("should be inlined"));
+}
+""", "lib2.dart": """
+import "lib3.dart" as lib3;
+
+test() {
+ print(lib3.sameContextInline("should be inlined"));
+}
+""", "lib3.dart": """
+sameContextInline(x) => "inline same context" + x;
+"""};
diff --git a/tests/compiler/dart2js/malformed_uri_test.dart b/tests/compiler/dart2js/malformed_uri_test.dart
new file mode 100644
index 0000000..d51e2dd
--- /dev/null
+++ b/tests/compiler/dart2js/malformed_uri_test.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2015, 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.
+
+// Test that the compiler can handle missing files used in imports, exports,
+// part tags or as the main source file.
+
+library dart2js.test.malformed_uri;
+
+import 'package:expect/expect.dart';
+import "package:async_helper/async_helper.dart";
+import 'memory_compiler.dart';
+
+const MEMORY_SOURCE_FILES = const {
+ 'main.dart': '''
+import '../../Udyn[mic ils/expect.dart';
+
+main () { print("Hi"); }
+''',
+};
+
+testMalformedUri() {
+ var collector = new DiagnosticCollector();
+ var compiler = compilerFor(MEMORY_SOURCE_FILES, diagnosticHandler: collector);
+ asyncTest(() => compiler.run(Uri.parse('memory:main.dart')).then((_) {
+ Expect.equals(1, collector.errors.length);
+ }));
+}
+
+void main() {
+ testMalformedUri();
+}
\ No newline at end of file
diff --git a/tests/compiler/dart2js/mock_compiler.dart b/tests/compiler/dart2js/mock_compiler.dart
index 978f924..3eb6a81 100644
--- a/tests/compiler/dart2js/mock_compiler.dart
+++ b/tests/compiler/dart2js/mock_compiler.dart
@@ -392,7 +392,7 @@
class MockElement extends FunctionElementX {
MockElement(Element enclosingElement)
: super('', ElementKind.FUNCTION, Modifiers.EMPTY,
- enclosingElement, false);
+ enclosingElement);
get node => null;
diff --git a/tests/compiler/dart2js/mock_libraries.dart b/tests/compiler/dart2js/mock_libraries.dart
index 54d4490..296e18b 100644
--- a/tests/compiler/dart2js/mock_libraries.dart
+++ b/tests/compiler/dart2js/mock_libraries.dart
@@ -294,6 +294,8 @@
}''',
'JSMutableArray':
'class JSMutableArray extends JSArray implements JSMutableIndexable {}',
+ 'JSUnmodifiableArray':
+ 'class JSUnmodifiableArray extends JSArray {}',
'JSMutableIndexable':
'abstract class JSMutableIndexable extends JSIndexable {}',
'JSPositiveInt': 'class JSPositiveInt extends JSInt {}',
diff --git a/tests/compiler/dart2js/semantic_visitor_test.dart b/tests/compiler/dart2js/semantic_visitor_test.dart
index c227fa8..3d93724 100644
--- a/tests/compiler/dart2js/semantic_visitor_test.dart
+++ b/tests/compiler/dart2js/semantic_visitor_test.dart
@@ -1250,6 +1250,42 @@
const Test.clazz(
'''
class B {
+ operator []=(a, b) {}
+ }
+ class C extends B {
+ m() => ++super[42];
+ }
+ ''',
+ const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_INDEX_PREFIX,
+ index: '42',
+ operator: '++')),
+ const Test.clazz(
+ '''
+ class B {
+ }
+ class C extends B {
+ m() => ++super[42];
+ }
+ ''',
+ const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_INDEX_PREFIX,
+ index: '42',
+ operator: '++')),
+ const Test.clazz(
+ '''
+ class B {
+ operator [](_) => null;
+ }
+ class C extends B {
+ m() => ++super[42];
+ }
+ ''',
+ const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_INDEX_PREFIX,
+ getter: 'function(B#[])',
+ index: '42',
+ operator: '++')),
+ const Test.clazz(
+ '''
+ class B {
operator [](_) => null;
operator []=(a, b) {}
}
@@ -1262,6 +1298,42 @@
setter: 'function(B#[]=)',
index: '42',
operator: '--')),
+ const Test.clazz(
+ '''
+ class B {
+ operator []=(a, b) {}
+ }
+ class C extends B {
+ m() => super[42]--;
+ }
+ ''',
+ const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_INDEX_POSTFIX,
+ index: '42',
+ operator: '--')),
+ const Test.clazz(
+ '''
+ class B {
+ }
+ class C extends B {
+ m() => super[42]--;
+ }
+ ''',
+ const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_INDEX_POSTFIX,
+ index: '42',
+ operator: '--')),
+ const Test.clazz(
+ '''
+ class B {
+ operator [](_) => null;
+ }
+ class C extends B {
+ m() => super[42]--;
+ }
+ ''',
+ const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_INDEX_POSTFIX,
+ getter: 'function(B#[])',
+ index: '42',
+ operator: '--')),
],
'Equals': const [
// Equals
@@ -1377,6 +1449,16 @@
''',
const Visit(VisitKind.VISIT_SUPER_INDEX_SET,
element: 'function(B#[]=)', index: '1', rhs: '2')),
+ const Test.clazz(
+ '''
+ class B {
+ }
+ class C extends B {
+ m() => super[1] = 2;
+ }
+ ''',
+ const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_INDEX_SET,
+ index: '1', rhs: '2')),
],
'Compound assignment': const [
// Compound assignment
@@ -1705,8 +1787,7 @@
''',
const Visit(VisitKind.VISIT_COMPOUND_INDEX_SET,
receiver: '0', index: '1', operator: '+=', rhs: '42')),
- // TODO(johnniwinther): Enable this when the getter element is stored.
- /*const Test.clazz(
+ const Test.clazz(
'''
class B {
operator [](_) {}
@@ -1718,7 +1799,40 @@
''',
const Visit(VisitKind.VISIT_SUPER_COMPOUND_INDEX_SET,
getter: 'function(B#[])', setter: 'function(B#[]=)',
- index: '1', operator: '+=', rhs: '42')),*/
+ index: '1', operator: '+=', rhs: '42')),
+ const Test.clazz(
+ '''
+ class B {
+ operator []=(a, b) {}
+ }
+ class C extends B {
+ m() => super[1] += 42;
+ }
+ ''',
+ const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_COMPOUND_INDEX_SET,
+ index: '1', operator: '+=', rhs: '42')),
+ const Test.clazz(
+ '''
+ class B {
+ }
+ class C extends B {
+ m() => super[1] += 42;
+ }
+ ''',
+ const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_COMPOUND_INDEX_SET,
+ index: '1', operator: '+=', rhs: '42')),
+ const Test.clazz(
+ '''
+ class B {
+ operator [](_) {}
+ }
+ class C extends B {
+ m() => super[1] += 42;
+ }
+ ''',
+ const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_COMPOUND_INDEX_SET,
+ getter: 'function(B#[])',
+ index: '1', operator: '+=', rhs: '42')),
],
'Prefix expression': const [
// Prefix expression
@@ -2268,16 +2382,14 @@
m() => new Class.unresolved(true, 42);
''',
const Visit(
- VisitKind.ERROR_UNRESOLVED_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_UNRESOLVED_CONSTRUCTOR_INVOKE,
arguments: '(true,42)')),
const Test(
'''
m() => new Unresolved(true, 42);
''',
const Visit(
- // TODO(johnniwinther): Update this to
- // `VisitKind.ERROR_UNRESOLVED_CLASS_CONSTRUCTOR_INVOKE`.
- VisitKind.ERROR_UNRESOLVED_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_UNRESOLVED_CLASS_CONSTRUCTOR_INVOKE,
arguments: '(true,42)')),
const Test(
'''
@@ -2285,7 +2397,7 @@
m() => new AbstractClass();
''',
const Visit(
- VisitKind.ERROR_ABSTRACT_CLASS_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_ABSTRACT_CLASS_CONSTRUCTOR_INVOKE,
element: 'generative_constructor(AbstractClass#)',
type: 'AbstractClass',
arguments: '()',
@@ -2298,11 +2410,11 @@
m() => new Class(true, 42);
''',
const Visit(
- VisitKind.ERROR_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
element: 'function(Class#)',
arguments: '(true,42)',
type: 'Class',
- selector: 'Selector(call, , arity=2)')),
+ selector: 'CallStructure(arity=2)')),
const Test(
'''
class Class {
@@ -2311,11 +2423,11 @@
m() => new Class(true, 42);
''',
const Visit(
- VisitKind.ERROR_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
element: 'function(Class#)',
arguments: '(true,42)',
type: 'Class',
- selector: 'Selector(call, , arity=2)')),
+ selector: 'CallStructure(arity=2)')),
const Test(
'''
class Class {
@@ -2325,11 +2437,11 @@
m() => new Class(true, 42);
''',
const Visit(
- VisitKind.ERROR_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
element: 'function(Class#)',
arguments: '(true,42)',
type: 'Class',
- selector: 'Selector(call, , arity=2)')),
+ selector: 'CallStructure(arity=2)')),
const Test(
'''
abstract class AbstractClass {
@@ -2341,11 +2453,11 @@
m() => new Class(true, 42);
''',
const Visit(
- VisitKind.ERROR_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
element: 'function(Class#)',
arguments: '(true,42)',
type: 'Class',
- selector: 'Selector(call, , arity=2)')),
+ selector: 'CallStructure(arity=2)')),
],
};
@@ -2381,7 +2493,8 @@
index: 0),
const Visit(VisitKind.VISIT_OPTIONAL_PARAMETER_DECL,
element: 'parameter(m#b)',
- index: 1),
+ index: 1,
+ constant: 'null'),
]),
const Test(
'''
@@ -2430,7 +2543,8 @@
element: 'parameter(m#a)',
index: 0),
const Visit(VisitKind.VISIT_NAMED_PARAMETER_DECL,
- element: 'parameter(m#b)'),
+ element: 'parameter(m#b)',
+ constant: 'null'),
]),
const Test(
'''
@@ -5184,44 +5298,97 @@
}
@override
- errorUnresolvedSuperCompoundIndexSet(
+ visitUnresolvedSuperGetterCompoundIndexSet(
Send node,
- ErroneousElement element,
+ Element element,
Node index,
AssignmentOperator operator,
Node rhs,
arg) {
- // TODO: implement errorUnresolvedSuperCompoundIndexSet
+ visits.add(new Visit(
+ VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_COMPOUND_INDEX_SET,
+ index: index, operator: operator, rhs: rhs));
+ apply(index, arg);
+ apply(rhs, arg);
}
@override
- errorUnresolvedSuperIndexSet(
+ visitUnresolvedSuperSetterCompoundIndexSet(
+ Send node,
+ MethodElement getter,
+ Element element,
+ Node index,
+ AssignmentOperator operator,
+ Node rhs,
+ arg) {
+ visits.add(new Visit(
+ VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_COMPOUND_INDEX_SET,
+ getter: getter, index: index, operator: operator, rhs: rhs));
+ apply(index, arg);
+ apply(rhs, arg);
+ }
+
+ @override
+ visitUnresolvedSuperIndexSet(
Send node,
ErroneousElement element,
Node index,
Node rhs,
arg) {
- // TODO: implement errorUnresolvedSuperIndexSet
+ visits.add(new Visit(VisitKind.VISIT_UNRESOLVED_SUPER_INDEX_SET,
+ index: index, rhs: rhs));
+ apply(index, arg);
+ apply(rhs, arg);
}
@override
- errorUnresolvedSuperIndexPostfix(
+ visitUnresolvedSuperGetterIndexPostfix(
Send node,
- Element function,
+ Element element,
Node index,
IncDecOperator operator,
arg) {
- // TODO: implement errorUnresolvedSuperIndexPostfix
+ visits.add(new Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_INDEX_POSTFIX,
+ index: index, operator: operator));
+ apply(index, arg);
}
@override
- errorUnresolvedSuperIndexPrefix(
+ visitUnresolvedSuperSetterIndexPostfix(
Send node,
- Element function,
+ MethodElement getter,
+ Element element,
Node index,
IncDecOperator operator,
arg) {
- // TODO: implement errorUnresolvedSuperIndexPrefix
+ visits.add(new Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_INDEX_POSTFIX,
+ getter: getter, index: index, operator: operator));
+ apply(index, arg);
+ }
+
+ @override
+ visitUnresolvedSuperGetterIndexPrefix(
+ Send node,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ arg) {
+ visits.add(new Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_INDEX_PREFIX,
+ index: index, operator: operator));
+ apply(index, arg);
+ }
+
+ @override
+ visitUnresolvedSuperSetterIndexPrefix(
+ Send node,
+ MethodElement getter,
+ Element element,
+ Node index,
+ IncDecOperator operator,
+ arg) {
+ visits.add(new Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_INDEX_PREFIX,
+ getter: getter, index: index, operator: operator));
+ apply(index, arg);
}
@override
@@ -5279,31 +5446,31 @@
}
@override
- errorUnresolvedClassConstructorInvoke(
- NewExpression node,
- Element constructor,
- MalformedType type,
- NodeList arguments,
- Selector selector,
- arg) {
- // TODO(johnniwinther): Test [type] and [selector].
- visits.add(new Visit(
- VisitKind.ERROR_UNRESOLVED_CLASS_CONSTRUCTOR_INVOKE,
- arguments: arguments));
- apply(arguments, arg);
- }
-
- @override
- errorUnresolvedConstructorInvoke(
+ visitUnresolvedClassConstructorInvoke(
NewExpression node,
Element constructor,
DartType type,
NodeList arguments,
Selector selector,
arg) {
- // TODO(johnniwinther): Test [type] and [selector].
+ // TODO(johnniwinther): Test [type] when it is not `dynamic`.
visits.add(new Visit(
- VisitKind.ERROR_UNRESOLVED_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_UNRESOLVED_CLASS_CONSTRUCTOR_INVOKE,
+ arguments: arguments));
+ apply(arguments, arg);
+ }
+
+ @override
+ visitUnresolvedConstructorInvoke(
+ NewExpression node,
+ Element constructor,
+ DartType type,
+ NodeList arguments,
+ Selector selector,
+ arg) {
+ // TODO(johnniwinther): Test [type] when it is not `dynamic`.
+ visits.add(new Visit(
+ VisitKind.VISIT_UNRESOLVED_CONSTRUCTOR_INVOKE,
arguments: arguments));
apply(arguments, arg);
}
@@ -5390,7 +5557,7 @@
}
@override
- errorAbstractClassConstructorInvoke(
+ visitAbstractClassConstructorInvoke(
NewExpression node,
ConstructorElement constructor,
InterfaceType type,
@@ -5398,7 +5565,7 @@
CallStructure callStructure,
arg) {
visits.add(new Visit(
- VisitKind.ERROR_ABSTRACT_CLASS_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_ABSTRACT_CLASS_CONSTRUCTOR_INVOKE,
element: constructor,
type: type,
arguments: arguments,
@@ -5407,19 +5574,19 @@
}
@override
- errorUnresolvedRedirectingFactoryConstructorInvoke(
+ visitUnresolvedRedirectingFactoryConstructorInvoke(
NewExpression node,
ConstructorElement constructor,
InterfaceType type,
NodeList arguments,
- Selector selector,
+ CallStructure callStructure,
arg) {
visits.add(new Visit(
- VisitKind.ERROR_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
element: constructor,
type: type,
arguments: arguments,
- selector: selector));
+ selector: callStructure));
apply(arguments, arg);
}
}
@@ -5902,7 +6069,7 @@
}
@override
- errorUnresolvedClassConstructorInvoke(
+ visitUnresolvedClassConstructorInvoke(
NewExpression node,
Element constructor,
MalformedType type,
@@ -5911,13 +6078,13 @@
arg) {
// TODO(johnniwinther): Test [type] and [selector].
visits.add(new Visit(
- VisitKind.ERROR_UNRESOLVED_CLASS_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_UNRESOLVED_CLASS_CONSTRUCTOR_INVOKE,
arguments: arguments));
apply(arguments, arg);
}
@override
- errorUnresolvedConstructorInvoke(
+ visitUnresolvedConstructorInvoke(
NewExpression node,
Element constructor,
DartType type,
@@ -5926,7 +6093,7 @@
arg) {
// TODO(johnniwinther): Test [type] and [selector].
visits.add(new Visit(
- VisitKind.ERROR_UNRESOLVED_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_UNRESOLVED_CONSTRUCTOR_INVOKE,
arguments: arguments));
apply(arguments, arg);
}
@@ -6013,7 +6180,7 @@
}
@override
- errorAbstractClassConstructorInvoke(
+ visitAbstractClassConstructorInvoke(
NewExpression node,
ConstructorElement constructor,
InterfaceType type,
@@ -6021,7 +6188,7 @@
CallStructure callStructure,
arg) {
visits.add(new Visit(
- VisitKind.ERROR_ABSTRACT_CLASS_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_ABSTRACT_CLASS_CONSTRUCTOR_INVOKE,
element: constructor,
type: type,
arguments: arguments,
@@ -6030,19 +6197,19 @@
}
@override
- errorUnresolvedRedirectingFactoryConstructorInvoke(
+ visitUnresolvedRedirectingFactoryConstructorInvoke(
NewExpression node,
ConstructorElement constructor,
InterfaceType type,
NodeList arguments,
- Selector selector,
+ CallStructure callStructure,
arg) {
visits.add(new Visit(
- VisitKind.ERROR_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
+ VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
element: constructor,
type: type,
arguments: arguments,
- selector: selector));
+ selector: callStructure));
apply(arguments, arg);
}
}
@@ -6176,7 +6343,11 @@
VISIT_SUPER_EQUALS,
VISIT_SUPER_NOT_EQUALS,
VISIT_SUPER_INDEX_PREFIX,
+ VISIT_UNRESOLVED_SUPER_GETTER_INDEX_PREFIX,
+ VISIT_UNRESOLVED_SUPER_SETTER_INDEX_PREFIX,
VISIT_SUPER_INDEX_POSTFIX,
+ VISIT_UNRESOLVED_SUPER_GETTER_INDEX_POSTFIX,
+ VISIT_UNRESOLVED_SUPER_SETTER_INDEX_POSTFIX,
VISIT_UNARY,
VISIT_SUPER_UNARY,
@@ -6220,7 +6391,10 @@
VISIT_INDEX_SET,
VISIT_COMPOUND_INDEX_SET,
VISIT_SUPER_INDEX_SET,
+ VISIT_UNRESOLVED_SUPER_INDEX_SET,
VISIT_SUPER_COMPOUND_INDEX_SET,
+ VISIT_UNRESOLVED_SUPER_GETTER_COMPOUND_INDEX_SET,
+ VISIT_UNRESOLVED_SUPER_SETTER_COMPOUND_INDEX_SET,
VISIT_ASSERT,
VISIT_LOGICAL_AND,
@@ -6239,10 +6413,10 @@
VISIT_THIS_CONSTRUCTOR_INVOKE,
VISIT_FIELD_INITIALIZER,
- ERROR_UNRESOLVED_CLASS_CONSTRUCTOR_INVOKE,
- ERROR_UNRESOLVED_CONSTRUCTOR_INVOKE,
- ERROR_ABSTRACT_CLASS_CONSTRUCTOR_INVOKE,
- ERROR_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
+ VISIT_UNRESOLVED_CLASS_CONSTRUCTOR_INVOKE,
+ VISIT_UNRESOLVED_CONSTRUCTOR_INVOKE,
+ VISIT_ABSTRACT_CLASS_CONSTRUCTOR_INVOKE,
+ VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
VISIT_INSTANCE_GETTER_DECL,
VISIT_INSTANCE_SETTER_DECL,
diff --git a/tests/compiler/dart2js/type_combination_test.dart b/tests/compiler/dart2js/type_combination_test.dart
index 6914aba..6063513 100644
--- a/tests/compiler/dart2js/type_combination_test.dart
+++ b/tests/compiler/dart2js/type_combination_test.dart
@@ -34,12 +34,14 @@
TypeMask jsMutableArray;
TypeMask jsFixedArray;
TypeMask jsExtendableArray;
+TypeMask jsUnmodifiableArray;
TypeMask jsString;
TypeMask jsStringOrNull;
TypeMask jsArrayOrNull;
TypeMask jsMutableArrayOrNull;
TypeMask jsFixedArrayOrNull;
TypeMask jsExtendableArrayOrNull;
+TypeMask jsUnmodifiableArrayOrNull;
TypeMask jsIndexableOrNull;
TypeMask jsInterceptorOrNull;
@@ -113,6 +115,7 @@
rule(emptyType, jsReadableArray, jsReadableArray);
rule(emptyType, jsMutableArray, jsMutableArray);
rule(emptyType, jsExtendableArray, jsExtendableArray);
+ rule(emptyType, jsUnmodifiableArray, jsUnmodifiableArray);
rule(emptyType, nonPrimitive1, nonPrimitive1);
rule(emptyType, nonPrimitive2, nonPrimitive2);
rule(emptyType, potentialArray, potentialArray);
@@ -135,6 +138,7 @@
rule(dynamicType, jsReadableArray, dynamicType);
rule(dynamicType, jsMutableArray, dynamicType);
rule(dynamicType, jsExtendableArray, dynamicType);
+ rule(dynamicType, jsUnmodifiableArray, dynamicType);
rule(dynamicType, nonPrimitive1, dynamicType);
rule(dynamicType, nonPrimitive2, dynamicType);
rule(dynamicType, potentialArray, dynamicType);
@@ -156,6 +160,7 @@
rule(jsBoolean, jsReadableArray, jsInterceptor);
rule(jsBoolean, jsMutableArray, jsInterceptor);
rule(jsBoolean, jsExtendableArray, jsInterceptor);
+ rule(jsBoolean, jsUnmodifiableArray, jsInterceptor);
rule(jsBoolean, nonPrimitive1, objectType);
rule(jsBoolean, nonPrimitive2, objectType);
rule(jsBoolean, potentialArray, dynamicType);
@@ -176,6 +181,7 @@
rule(jsNumber, jsReadableArray, jsInterceptor);
rule(jsNumber, jsMutableArray, jsInterceptor);
rule(jsNumber, jsExtendableArray, jsInterceptor);
+ rule(jsNumber, jsUnmodifiableArray, jsInterceptor);
rule(jsNumber, nonPrimitive1, objectType);
rule(jsNumber, nonPrimitive2, objectType);
rule(jsNumber, potentialArray, dynamicType);
@@ -195,6 +201,7 @@
rule(jsInteger, jsReadableArray, jsInterceptor);
rule(jsInteger, jsMutableArray, jsInterceptor);
rule(jsInteger, jsExtendableArray, jsInterceptor);
+ rule(jsInteger, jsUnmodifiableArray, jsInterceptor);
rule(jsInteger, nonPrimitive1, objectType);
rule(jsInteger, nonPrimitive2, objectType);
rule(jsInteger, potentialArray, dynamicType);
@@ -213,6 +220,7 @@
rule(jsDouble, jsReadableArray, jsInterceptor);
rule(jsDouble, jsMutableArray, jsInterceptor);
rule(jsDouble, jsExtendableArray, jsInterceptor);
+ rule(jsDouble, jsUnmodifiableArray, jsInterceptor);
rule(jsDouble, nonPrimitive1, objectType);
rule(jsDouble, nonPrimitive2, objectType);
rule(jsDouble, potentialArray, dynamicType);
@@ -230,6 +238,7 @@
rule(jsIndexable, jsReadableArray, jsIndexable);
rule(jsIndexable, jsMutableArray, jsIndexable);
rule(jsIndexable, jsExtendableArray, jsIndexable);
+ rule(jsIndexable, jsUnmodifiableArray, jsIndexable);
rule(jsIndexable, nonPrimitive1, objectType);
rule(jsIndexable, nonPrimitive2, objectType);
rule(jsIndexable, potentialArray, dynamicType);
@@ -246,6 +255,7 @@
rule(jsString, jsReadableArray, jsIndexable);
rule(jsString, jsMutableArray, jsIndexable);
rule(jsString, jsExtendableArray, jsIndexable);
+ rule(jsString, jsUnmodifiableArray, jsIndexable);
rule(jsString, nonPrimitive1, objectType);
rule(jsString, nonPrimitive2, objectType);
rule(jsString, potentialArray, dynamicType);
@@ -261,6 +271,7 @@
rule(jsReadableArray, jsReadableArray, jsReadableArray);
rule(jsReadableArray, jsMutableArray, jsReadableArray);
rule(jsReadableArray, jsExtendableArray, jsReadableArray);
+ rule(jsReadableArray, jsUnmodifiableArray, jsReadableArray);
rule(jsReadableArray, nonPrimitive1, objectType);
rule(jsReadableArray, nonPrimitive2, objectType);
rule(jsReadableArray, potentialArray, potentialArray);
@@ -275,6 +286,7 @@
rule(jsMutableArray, jsMutableArray, jsMutableArray);
rule(jsMutableArray, jsExtendableArray, jsMutableArray);
+ rule(jsMutableArray, jsUnmodifiableArray, jsReadableArray);
rule(jsMutableArray, nonPrimitive1, objectType);
rule(jsMutableArray, nonPrimitive2, objectType);
rule(jsMutableArray, potentialArray, potentialArray);
@@ -288,6 +300,7 @@
rule(jsMutableArray, jsFixedArray, jsMutableArray);
rule(jsExtendableArray, jsExtendableArray, jsExtendableArray);
+ rule(jsExtendableArray, jsUnmodifiableArray, jsReadableArray);
rule(jsExtendableArray, nonPrimitive1, objectType);
rule(jsExtendableArray, nonPrimitive2, objectType);
rule(jsExtendableArray, potentialArray, potentialArray);
@@ -300,6 +313,19 @@
rule(jsExtendableArray, nullType, jsExtendableArrayOrNull);
rule(jsExtendableArray, jsFixedArray, jsMutableArray);
+ rule(jsUnmodifiableArray, jsUnmodifiableArray, jsUnmodifiableArray);
+ rule(jsUnmodifiableArray, nonPrimitive1, objectType);
+ rule(jsUnmodifiableArray, nonPrimitive2, objectType);
+ rule(jsUnmodifiableArray, potentialArray, potentialArray);
+ rule(jsUnmodifiableArray, potentialString, dynamicType);
+ rule(jsUnmodifiableArray, jsBooleanOrNull, jsInterceptorOrNull);
+ rule(jsUnmodifiableArray, jsNumberOrNull, jsInterceptorOrNull);
+ rule(jsUnmodifiableArray, jsIntegerOrNull, jsInterceptorOrNull);
+ rule(jsUnmodifiableArray, jsDoubleOrNull, jsInterceptorOrNull);
+ rule(jsUnmodifiableArray, jsStringOrNull, jsIndexableOrNull);
+ rule(jsUnmodifiableArray, nullType, jsUnmodifiableArrayOrNull);
+ rule(jsUnmodifiableArray, jsFixedArray, jsReadableArray);
+
rule(nonPrimitive1, nonPrimitive1, nonPrimitive1);
rule(nonPrimitive1, nonPrimitive2, objectType);
rule(nonPrimitive1, potentialArray, dynamicType);
@@ -400,6 +426,7 @@
rule(emptyType, jsReadableArray, emptyType);
rule(emptyType, jsMutableArray, emptyType);
rule(emptyType, jsExtendableArray, emptyType);
+ rule(emptyType, jsUnmodifiableArray, emptyType);
rule(emptyType, nonPrimitive1, emptyType);
rule(emptyType, nonPrimitive2, emptyType);
rule(emptyType, potentialArray, emptyType);
@@ -422,6 +449,7 @@
rule(dynamicType, jsReadableArray, jsReadableArray);
rule(dynamicType, jsMutableArray, jsMutableArray);
rule(dynamicType, jsExtendableArray, jsExtendableArray);
+ rule(dynamicType, jsUnmodifiableArray, jsUnmodifiableArray);
rule(dynamicType, nonPrimitive1, nonPrimitive1);
rule(dynamicType, nonPrimitive2, nonPrimitive2);
rule(dynamicType, potentialArray, potentialArray);
@@ -443,6 +471,7 @@
rule(jsBoolean, jsReadableArray, emptyType);
rule(jsBoolean, jsMutableArray, emptyType);
rule(jsBoolean, jsExtendableArray, emptyType);
+ rule(jsBoolean, jsUnmodifiableArray, emptyType);
rule(jsBoolean, nonPrimitive1, emptyType);
rule(jsBoolean, nonPrimitive2, emptyType);
rule(jsBoolean, potentialArray, emptyType);
@@ -463,6 +492,7 @@
rule(jsNumber, jsReadableArray, emptyType);
rule(jsNumber, jsMutableArray, emptyType);
rule(jsNumber, jsExtendableArray, emptyType);
+ rule(jsNumber, jsUnmodifiableArray, emptyType);
rule(jsNumber, nonPrimitive1, emptyType);
rule(jsNumber, nonPrimitive2, emptyType);
rule(jsNumber, potentialArray, emptyType);
@@ -482,6 +512,7 @@
rule(jsInteger, jsReadableArray, emptyType);
rule(jsInteger, jsMutableArray, emptyType);
rule(jsInteger, jsExtendableArray, emptyType);
+ rule(jsInteger, jsUnmodifiableArray, emptyType);
rule(jsInteger, nonPrimitive1, emptyType);
rule(jsInteger, nonPrimitive2, emptyType);
rule(jsInteger, potentialArray, emptyType);
@@ -500,6 +531,7 @@
rule(jsDouble, jsReadableArray, emptyType);
rule(jsDouble, jsMutableArray, emptyType);
rule(jsDouble, jsExtendableArray, emptyType);
+ rule(jsDouble, jsUnmodifiableArray, emptyType);
rule(jsDouble, nonPrimitive1, emptyType);
rule(jsDouble, nonPrimitive2, emptyType);
rule(jsDouble, potentialArray, emptyType);
@@ -517,6 +549,7 @@
rule(jsIndexable, jsReadableArray, jsReadableArray);
rule(jsIndexable, jsMutableArray, jsMutableArray);
rule(jsIndexable, jsExtendableArray, jsExtendableArray);
+ rule(jsIndexable, jsUnmodifiableArray, jsUnmodifiableArray);
rule(jsIndexable, nonPrimitive1, emptyType);
rule(jsIndexable, nonPrimitive2, emptyType);
rule(jsIndexable, potentialArray, new TypeMask.nonNullSubtype(
@@ -535,6 +568,7 @@
rule(jsString, jsReadableArray, emptyType);
rule(jsString, jsMutableArray, emptyType);
rule(jsString, jsExtendableArray, emptyType);
+ rule(jsString, jsUnmodifiableArray, emptyType);
rule(jsString, nonPrimitive1, emptyType);
rule(jsString, nonPrimitive2, emptyType);
rule(jsString, potentialArray, emptyType);
@@ -550,6 +584,7 @@
rule(jsReadableArray, jsReadableArray, jsReadableArray);
rule(jsReadableArray, jsMutableArray, jsMutableArray);
rule(jsReadableArray, jsExtendableArray, jsExtendableArray);
+ rule(jsReadableArray, jsUnmodifiableArray, jsUnmodifiableArray);
rule(jsReadableArray, nonPrimitive1, emptyType);
rule(jsReadableArray, nonPrimitive2, emptyType);
rule(jsReadableArray, potentialArray, jsReadableArray);
@@ -564,6 +599,7 @@
rule(jsMutableArray, jsMutableArray, jsMutableArray);
rule(jsMutableArray, jsExtendableArray, jsExtendableArray);
+ rule(jsMutableArray, jsUnmodifiableArray, emptyType);
rule(jsMutableArray, nonPrimitive1, emptyType);
rule(jsMutableArray, nonPrimitive2, emptyType);
rule(jsMutableArray, potentialArray, jsMutableArray);
@@ -577,6 +613,7 @@
rule(jsMutableArray, jsFixedArray, jsFixedArray);
rule(jsExtendableArray, jsExtendableArray, jsExtendableArray);
+ rule(jsExtendableArray, jsUnmodifiableArray, emptyType);
rule(jsExtendableArray, nonPrimitive1, emptyType);
rule(jsExtendableArray, nonPrimitive2, emptyType);
rule(jsExtendableArray, potentialArray, jsExtendableArray);
@@ -589,6 +626,19 @@
rule(jsExtendableArray, nullType, emptyType);
rule(jsExtendableArray, jsFixedArray, emptyType);
+ rule(jsUnmodifiableArray, jsUnmodifiableArray, jsUnmodifiableArray);
+ rule(jsUnmodifiableArray, nonPrimitive1, emptyType);
+ rule(jsUnmodifiableArray, nonPrimitive2, emptyType);
+ rule(jsUnmodifiableArray, potentialArray, jsUnmodifiableArray);
+ rule(jsUnmodifiableArray, potentialString, emptyType);
+ rule(jsUnmodifiableArray, jsBooleanOrNull, emptyType);
+ rule(jsUnmodifiableArray, jsNumberOrNull, emptyType);
+ rule(jsUnmodifiableArray, jsIntegerOrNull, emptyType);
+ rule(jsUnmodifiableArray, jsDoubleOrNull, emptyType);
+ rule(jsUnmodifiableArray, jsStringOrNull, emptyType);
+ rule(jsUnmodifiableArray, nullType, emptyType);
+ rule(jsUnmodifiableArray, jsFixedArray, emptyType);
+
rule(nonPrimitive1, nonPrimitive1, nonPrimitive1);
rule(nonPrimitive1, nonPrimitive2, emptyType);
rule(nonPrimitive1, potentialArray, emptyType);
@@ -717,6 +767,10 @@
world);
jsExtendableArray = new TypeMask.nonNullExact(
backend.jsExtendableArrayClass, world);
+ jsUnmodifiableArrayOrNull =
+ new TypeMask.exact(backend.jsUnmodifiableArrayClass, world);
+ jsUnmodifiableArray =
+ new TypeMask.nonNullExact(backend.jsUnmodifiableArrayClass, world);
jsIndexableOrNull = new TypeMask.subtype(backend.jsIndexableClass, world);
jsIndexable = new TypeMask.nonNullSubtype(backend.jsIndexableClass, world);
jsInterceptorOrNull = new TypeMask.subclass(backend.jsInterceptorClass,
diff --git a/tests/compiler/dart2js_extra/23404_test.dart b/tests/compiler/dart2js_extra/23404_test.dart
new file mode 100644
index 0000000..113d78a
--- /dev/null
+++ b/tests/compiler/dart2js_extra/23404_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2015, 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.
+
+// Regression test for http://dartbug.com/23404/
+import 'package:expect/expect.dart';
+
+// Dart2js crashed when the global metadata had escaped characters. That
+// happens, for example, when tearing off a function that uses a default
+// argument containing escape characters.
+foo([a='\u00a0']) => a;
+bar() => '';
+
+@NoInline
+@AssumeDynamic
+confuse(x) => x;
+
+main() {
+ Expect.equals('\u00a0', confuse(foo)());
+ Expect.equals('', confuse(bar)());
+}
diff --git a/tests/compiler/dart2js_extra/dart2js_extra.status b/tests/compiler/dart2js_extra/dart2js_extra.status
index 22ae813..f0f9287 100644
--- a/tests/compiler/dart2js_extra/dart2js_extra.status
+++ b/tests/compiler/dart2js_extra/dart2js_extra.status
@@ -61,195 +61,85 @@
deferred_fail_and_retry_worker_test: SkipByDesign # Uses eval to simulate failed loading.
[ $compiler == dart2js && $cps_ir ]
-10216a_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-10216b_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+10216a_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+10216b_test: Crash # Instance of 'TypeOperator': type casts not implemented.
11673_test: Crash # (use): handleStaticFunctionGet: function(use)
12320_test: Crash # (run): handleStaticFunctionGet: function(run)
16407_test: Crash # unsupported element kind: foo:field
-16967_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-17094_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-17645_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-17856_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-18383_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-19191_test: Crash # cannot compile methods that need interceptor calling convention.
+17094_test: RuntimeError # Please triage this failure.
+17645_test: Crash # unsupported element kind: log:field
+17856_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
21166_test: Crash # unsupported element kind: a:field
-21579_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-21666_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+21666_test: Crash # Instance of 'TypeOperator': type check unimplemented for fInt.
22487_test: Crash # (divIsInt): handleStaticFunctionGet: function(divIsInt)
22868_test: Crash # cannot handle async/sync*/async* functions
22895_test: Crash # cannot handle async/sync*/async* functions
22917_test: Crash # (test): handleStaticFunctionGet: function(test)
-23056_test: Crash # cannot compile methods that need interceptor calling convention.
-23264_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+23264_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+23404_test: Crash # (foo): handleStaticFunctionGet: function(foo)
+LayoutTests_fast_mediastream_getusermedia_t01_test/01: Crash # Please triage this failure.
+LayoutTests_fast_mediastream_getusermedia_t01_test/none: Crash # (gotStream1): handleStaticFunctionGet: function(gotStream1)
async_stacktrace_test/asyncStar: Crash # (runTests): handleStaticFunctionGet: function(runTests)
async_stacktrace_test/none: Crash # (runTests): handleStaticFunctionGet: function(runTests)
bailout8_test: Crash # (foo): handleStaticFunctionGet: function(foo)
-bailout_aborting_if_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bailout_on_break_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bailout_on_continue_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bailout_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bound_closure_interceptor_methods_test: Crash # cannot compile methods that need interceptor calling convention.
+bound_closure_interceptor_methods_test: Crash # unsupported element kind: getter2:field
bound_closure_interceptor_type_test: Crash # unsupported element kind: checkers:field
-break_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-checked_accessor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure7_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_capture2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_capture3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_capture4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+checked_accessor_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
closure_capture5_test: Crash # (i=0): For-loop variable captured in loop header
-closure_capture_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_type_reflection2_test: Crash # cannot compile methods that need interceptor calling convention.
-closure_type_reflection_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
code_motion_exception_test: Crash # (call2a): handleStaticFunctionGet: function(call2a)
-compile_time_constant4_test/01: Crash # cannot compile methods that need interceptor calling convention.
-compile_time_constant4_test/02: Crash # cannot compile methods that need interceptor calling convention.
-compile_time_constant4_test/03: Crash # cannot compile methods that need interceptor calling convention.
-compile_time_constant4_test/04: Crash # cannot compile methods that need interceptor calling convention.
-compile_time_constant4_test/05: Crash # cannot compile methods that need interceptor calling convention.
-compile_time_constant4_test/06: Crash # cannot compile methods that need interceptor calling convention.
-compile_time_constant4_test/none: Crash # cannot compile methods that need interceptor calling convention.
-compound_operator_index_test: Crash # cannot compile methods that need interceptor calling convention.
-conditional_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-conflict_index_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constant_fold_number_dart2_j_s_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constant_javascript_semantics2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constant_javascript_semantics3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constant_javascript_semantics_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constant_javascript_semantics_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constant_javascript_semantics_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constant_javascript_semantics_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constant_javascript_semantics_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+constant_javascript_semantics2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+constant_javascript_semantics3_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
deferred/deferred_class_test: Crash # (isError): handleStaticFunctionGet: function(isError)
deferred/deferred_constant2_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
deferred/deferred_constant3_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
deferred/deferred_constant4_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
deferred/deferred_function_test: Crash # (isError): handleStaticFunctionGet: function(isError)
deferred/deferred_mirrors1_test: Crash # (lazy.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
-deferred/deferred_mirrors2_test: Crash # cannot compile methods that need interceptor calling convention.
deferred/deferred_overlapping_test: Crash # (lib1.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
deferred_fail_and_retry_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
deferred_fail_and_retry_worker_test: Crash # (test): handleStaticFunctionGet: function(test)
-do_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_in_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fields_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_hashcode_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-for_in_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-for_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generics_factories_test: Crash # cannot compile methods that need interceptor calling convention.
-generics_is_check1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getter_element_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getters_setters_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-hash_code_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-if_in_loop_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-if_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-index_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inference_nsm_mirrors_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inferrer_is_int_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-interface_type_optimization_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-invoke_dynamic_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_check_instanceof_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_operator_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-LayoutTests_fast_mediastream_getusermedia_t01_test/01: Crash # (gotStream1): Error expression `gotStream1` unhandled.
-LayoutTests_fast_mediastream_getusermedia_t01_test/none: Crash # (gotStream1): handleStaticFunctionGet: function(gotStream1)
-list_factory_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-literal_string_juxtaposition_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-logical_and_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-logical_or_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-loop_if_phi_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-many_fields_test: Crash # cannot compile methods that need interceptor calling convention.
-math_lib_prefix_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-math_lib_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-member_namespace_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-minus_zero2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-minus_zero_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+do_test: Timeout # Please triage this failure.
+for_test: Timeout # Please triage this failure.
+generics_factories_test: Crash # Please triage this failure.
+generics_is_check1_test: Crash # Instance of 'TypeOperator': type check unimplemented for Hest<int>.
+hash_code_test: Crash # unsupported element kind: hash:field
+inference_nsm_mirrors_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+inferrer_is_int_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+interface_type_optimization_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+is_check_instanceof_test: Crash # Instance of 'TypeOperator': type check unimplemented for T.
mirror_enqueuer_regression_test: Crash # unsupported element kind: foo:field
-mirror_invalid_field_access2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirror_invalid_field_access3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirror_invalid_field_access4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirror_invalid_field_access_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirror_invalid_invoke2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirror_invalid_invoke3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirror_invalid_invoke_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirror_printer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors_declarations_filtering_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors_used_closure_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors_used_metatargets_test: Crash # (try {reflect(z).invoke(#foo,[] );}on UnsupportedError catch (e){caught=true;}): "on T" catch block
-mirrors_used_native_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+mirror_invalid_field_access2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirror_invalid_field_access3_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirror_invalid_field_access4_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirror_invalid_field_access_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirror_invalid_invoke2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirror_invalid_invoke3_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirror_invalid_invoke_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirror_printer_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+mirror_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors_declarations_filtering_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors_used_closure_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors_used_native_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
mirrors_used_warning2_test: Crash # (runTests): handleStaticFunctionGet: function(runTests)
mirrors_used_warning_test/minif: Crash # (runTests): handleStaticFunctionGet: function(runTests)
mirrors_used_warning_test/none: Crash # (runTests): handleStaticFunctionGet: function(runTests)
-mirror_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirror_type_inference_field2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirror_type_inference_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirror_type_inference_function_test: Crash # cannot compile methods that need interceptor calling convention.
-named_parameter_for_static_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-nan_negate_test: Crash # cannot compile methods that need interceptor calling convention.
-no_such_method_mirrors_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-no_such_method_test: Crash # cannot compile methods that need interceptor calling convention.
-not_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-null_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-operator2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-operator3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-operator_equals_test: Crash # cannot compile methods that need interceptor calling convention.
-operator_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optional_parameter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-panda_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-phi_elimination_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-phi_gvn_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-phi_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-private_symbol_literal_test/01: Pass # Please triage this failure.
-private_symbol_literal_test/02: Pass # Please triage this failure.
-private_symbol_literal_test/03: Pass # Please triage this failure.
-private_symbol_literal_test/04: Pass # Please triage this failure.
-private_symbol_literal_test/05: Pass # Please triage this failure.
-private_symbol_literal_test/06: Pass # Please triage this failure.
-reflect_native_types_test: Crash # cannot compile methods that need interceptor calling convention.
-regress/4492_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress/4515_1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress/4515_2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress/4515_3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress/4639_test: Crash # cannot compile methods that need interceptor calling convention.
-regress/4740_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regression_2913_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-return_setter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-runtime_type_int_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+no_such_method_mirrors_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+reflect_native_types_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regress/4492_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regress/4515_1_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regress/4515_2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regress/4740_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
runtime_type_test: Crash # Please triage this failure.
-simple_string_constant_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_field2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_method2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_var_no_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_var_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_escape_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_interpolation_dynamic_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_interpolation_opt1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_interpolation_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_call_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_constructor1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_constructor2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-switch_test/01: Crash # (badswitches(42)): Error expression `badswitches(42)` unhandled.
-switch_test/02: Crash # (badswitches(42)): Error expression `badswitches(42)` unhandled.
+super_constructor1_test: RuntimeError # Please triage this failure.
+switch_test/01: Crash # Unhandled node
+switch_test/02: Crash # Unhandled node
switch_test/none: Crash # (switch (val){}): Unhandled node
-this_phi_elimination_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-this_redirecting_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-this_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+this_phi_elimination_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
timer_negative_test: Crash # (test): handleStaticFunctionGet: function(test)
timer_test: Crash # (test): handleStaticFunctionGet: function(test)
-to_string_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_argument_factory_crash_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_argument_factory_nocrash_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_constant_switch_test/01: Pass # Please triage this failure.
+type_argument_factory_crash_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<int>.
+type_argument_factory_nocrash_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<int>.
type_constant_switch_test/none: Crash # (switch (v){}): Unhandled node
-type_error_message_test: Crash # cannot compile methods that need interceptor calling convention.
-typevariable_factory_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typevariable_substitution_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-while_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+typevariable_factory_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<T>.
+typevariable_substitution_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<T>.
+while_test: Timeout # Please triage this failure.
diff --git a/tests/compiler/dart2js_native/dart2js_native.status b/tests/compiler/dart2js_native/dart2js_native.status
index 9eef5ac..307088e 100644
--- a/tests/compiler/dart2js_native/dart2js_native.status
+++ b/tests/compiler/dart2js_native/dart2js_native.status
@@ -28,114 +28,111 @@
compute_this_script_test: Skip # Issue 17458
[ $compiler == dart2js && $cps_ir ]
-abstract_class_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+abstract_class_test: Crash # unsupported element kind: foo:function
bound_closure_super_test: Crash # (makeCC): handleStaticFunctionGet: function(makeCC)
bound_closure_test: Crash # (makeCC): handleStaticFunctionGet: function(makeCC)
-browser_compat_1_prepatched_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-browser_compat_1_unpatched_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-browser_compat_2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+browser_compat_1_prepatched_test: Crash # unsupported element kind: getTagCallCount:function
+browser_compat_1_unpatched_test: Crash # unsupported element kind: getTagCallCount:function
+browser_compat_2_test: Crash # unsupported element kind: getTagCallCount:function
catch_javascript_null_stack_trace_test: Crash # (JS('','(function () {throw null;})()')): handleStaticFunctionInvoke: foreign: function(JS)
core_type_check_native_test: Crash # (checkTest): handleStaticFunctionGet: function(checkTest)
-downcast_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+downcast_test: Crash # Instance of 'TypeOperator': type casts not implemented.
event_loop_test: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
-fake_thing_2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fake_thing_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+fake_thing_2_test: Crash # unsupported element kind: make3:function
+fake_thing_test: Crash # unsupported element kind: make2:function
field_type2_test: Crash # unsupported element kind: makeNode:function
-field_type_test: Crash # cannot compile methods that need interceptor calling convention.
-fixup_get_tag_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+field_type_test: Crash # unsupported element kind: makeNode:function
+fixup_get_tag_test: Crash # unsupported element kind: token:function
foreign_test: Crash # (JS('bool','isNaN(#)',isNaN)): handleStaticFunctionInvoke: foreign: function(JS)
-hash_code_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inference_of_helper_methods_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+hash_code_test: Crash # unsupported element kind: makeA:function
+inference_of_helper_methods_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
internal_library_test: Crash # (startRootIsolate): handleStaticFunctionGet: function(startRootIsolate)
-is_check_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue9182_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+issue9182_test: Crash # unsupported element kind: makeA:function
js_const_test: Crash # (JS('String',r'#.replace(#, #)',s1,re,fToUpper)): handleStaticFunctionInvoke: foreign: function(JS)
-jsobject_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirror_intercepted_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_call_arity1_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_call_arity2_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_call_arity3_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_checked_arguments1_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_checked_fields_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_class_avoids_hidden_name_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_class_fields_2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_class_fields_3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_class_fields_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_class_inheritance1_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_class_inheritance2_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_class_inheritance3_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_class_inheritance4_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_class_is_check1_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_class_is_check3_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_class_with_dart_methods_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+jsobject_test: Crash # unsupported element kind: makeQ:function
+mirror_intercepted_field_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_call_arity1_frog_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_call_arity2_frog_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_call_arity3_frog_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_checked_arguments1_frog_test: Crash # unsupported element kind: cmp:function
+native_checked_fields_frog_test: Crash # unsupported element kind: makeB:function
+native_class_avoids_hidden_name_frog_test: Crash # unsupported element kind: makeB:function
+native_class_fields_2_test: Crash # unsupported element kind: makeA:function
+native_class_fields_3_test: Crash # unsupported element kind: makeA:function
+native_class_fields_test: Crash # unsupported element kind: makeA:function
+native_class_inheritance1_frog_test: Crash # unsupported element kind: makeB2:function
+native_class_inheritance2_frog_test: Crash # unsupported element kind: foo:function
+native_class_inheritance3_frog_test: Crash # unsupported element kind: foo:function
+native_class_inheritance4_frog_test: Crash # unsupported element kind: makeB:function
+native_class_is_check1_frog_test: Crash # unsupported element kind: makeA:function
+native_class_is_check3_frog_test: Crash # unsupported element kind: makeB:function
+native_class_with_dart_methods_frog_test: Crash # unsupported element kind: makeA:function
native_closure_identity_frog_test: Crash # (staticMethod): handleStaticFunctionGet: function(staticMethod)
-native_constructor_name_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_equals_frog_test: Crash # cannot compile methods that need interceptor calling convention.
-native_exception2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_exception_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_exceptions1_frog_test: Crash # "on T" catch block
-native_field_invocation2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_field_invocation3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_field_invocation4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_field_invocation5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_field_invocation6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_field_invocation_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_field_name_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+native_constructor_name_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_equals_frog_test: Crash # unsupported element kind: makeA:function
+native_exception2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_exception_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_exceptions1_frog_test: Crash # unsupported element kind: op:function
+native_field_invocation2_test: Crash # unsupported element kind: nativeId:function
+native_field_invocation3_test: Crash # unsupported element kind: makeCC:function
+native_field_invocation4_test: Crash # unsupported element kind: nativeId:function
+native_field_invocation5_test: Crash # unsupported element kind: nativeFirst:function
+native_field_invocation6_test: Crash # unsupported element kind: nativeFirst:function
+native_field_invocation_test: Crash # unsupported element kind: nativeId:function
+native_field_name_test: Crash # unsupported element kind: makeA:function
native_field_optimization_test: Crash # (test1): handleStaticFunctionGet: function(test1)
-native_field_rename_1_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_field_rename_2_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_library_same_name_used_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_method_inlining_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_method_rename1_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_method_rename2_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_method_rename3_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_method_with_keyword_name_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_mirror_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_missing_method1_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_missing_method2_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_mixin_field_test: Crash # cannot compile methods that need interceptor calling convention.
-native_mixin_multiple2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+native_field_rename_1_frog_test: Crash # unsupported element kind: native_key_method:function
+native_field_rename_2_frog_test: Crash # unsupported element kind: native_key_method:function
+native_library_same_name_used_frog_test: Crash # (JS('creates:Impl; returns:I;','makeI()')): handleStaticFunctionInvoke: foreign: function(JS)
+native_method_inlining_test: Crash # unsupported element kind: makeA:function
+native_method_rename1_frog_test: Crash # unsupported element kind: baz:function
+native_method_rename2_frog_test: Crash # unsupported element kind: foo:function
+native_method_rename3_frog_test: Crash # unsupported element kind: foo:function
+native_method_with_keyword_name_test: Crash # unsupported element kind: makeA:function
+native_mirror_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_missing_method1_frog_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_missing_method2_frog_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_mixin_field_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_mixin_multiple2_test: Crash # unsupported element kind: makeB:function
native_mixin_multiple3_test: Crash # (callFoo): handleStaticFunctionGet: function(callFoo)
-native_mixin_multiple_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_mixin_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+native_mixin_multiple_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_mixin_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
native_mixin_with_plain_test: Crash # (makeA): handleStaticFunctionGet: function(makeA)
-native_named_constructors2_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_named_constructors3_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_no_such_method_exception2_frog_test: Crash # (try {a.foo();}on NoSuchMethodError catch (e){exception=e;}): "on T" catch block
-native_no_such_method_exception3_frog_test: Crash # (try {a.foo();}on NoSuchMethodError catch (e){exception=e;}): "on T" catch block
-native_no_such_method_exception4_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_no_such_method_exception5_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_no_such_method_exception_frog_test: Crash # (try {a.foo();}on NoSuchMethodError catch (e){exception=e;}): "on T" catch block
-native_novel_html_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_null_closure_frog_test: Crash # "on T" catch block
-native_null_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_property_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_to_string_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_use_native_name_in_table_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_window1_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_window2_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_wrapping_function3_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_wrapping_function_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-oddly_named_fields_test: Crash # cannot compile methods that need interceptor calling convention.
-only_pass_on_d8_test: Crash # cannot compile methods that need interceptor calling convention.
-only_pass_on_jsshell_test: Crash # cannot compile methods that need interceptor calling convention.
+native_named_constructors2_frog_test: Crash # unsupported element kind: foo:function
+native_named_constructors3_frog_test: Crash # unsupported element kind: foo:function
+native_no_such_method_exception2_frog_test: Crash # unsupported element kind: makeB:function
+native_no_such_method_exception3_frog_test: Crash # unsupported element kind: makeA:function
+native_no_such_method_exception4_frog_test: Crash # unsupported element kind: makeA:function
+native_no_such_method_exception5_frog_test: Crash # unsupported element kind: makeA:function
+native_no_such_method_exception_frog_test: Crash # unsupported element kind: makeA:function
+native_novel_html_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_null_closure_frog_test: Crash # unsupported element kind: invoke:function
+native_null_frog_test: Crash # unsupported element kind: returnZero:function
+native_property_frog_test: Crash # (JS('int','#._z',this)): handleStaticFunctionInvoke: foreign: function(JS)
+native_to_string_frog_test: Crash # unsupported element kind: makeA:function
+native_use_native_name_in_table_frog_test: Crash # unsupported element kind: makeB:function
+native_window1_frog_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_window2_frog_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+native_wrapping_function3_frog_test: Crash # unsupported element kind: foo2:function
+native_wrapping_function_frog_test: Crash # unsupported element kind: foo2:function
+oddly_named_fields_test: Crash # unsupported element kind: makeNativeClassWithOddNames:function
optimization_hints_test: Crash # (JS('','String("in main function")')): handleStaticFunctionInvoke: foreign: function(JS)
rti_only_native_test: Crash # (main): handleStaticFunctionGet: function(main)
runtimetype_test: Crash # (JS('A','#',makeA())): handleStaticFunctionInvoke: foreign: function(JS)
static_methods_test: Crash # (main): handleStaticFunctionGet: function(main)
-subclassing_1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-subclassing_2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-subclassing_3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-subclassing_4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+subclassing_1_test: Crash # unsupported element kind: makeC:function
+subclassing_2_test: Crash # unsupported element kind: makeB:function
+subclassing_3_test: Crash # unsupported element kind: makeB:function
+subclassing_4_test: Crash # unsupported element kind: makeB:function
subclassing_5_test: Crash # (testIsB): handleStaticFunctionGet: function(testIsB)
-subclassing_constructor_1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-subclassing_constructor_2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+subclassing_constructor_1_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+subclassing_constructor_2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
subclassing_super_call_test: Crash # (JS('','#(#)',constructor,b1)): handleStaticFunctionInvoke: foreign: function(JS)
subclassing_super_field_1_test: Crash # (JS('','#(#)',constructor,b)): handleStaticFunctionInvoke: foreign: function(JS)
subclassing_super_field_2_test: Crash # (JS('','#(#)',constructor,b)): handleStaticFunctionInvoke: foreign: function(JS)
subclassing_type_test: Crash # (isA): handleStaticFunctionGet: function(isA)
-super_call_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+super_call_test: Crash # unsupported element kind: makeD:function
super_property_test: Crash # (testThing): handleStaticFunctionGet: function(testThing)
type_error_decode_test: Crash # (isNullError): handleStaticFunctionGet: function(isNullError)
undefined_bailout_test: Crash # (JS('','void 0')): handleStaticFunctionInvoke: foreign: function(JS)
-uninstantiated_type_parameter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+uninstantiated_type_parameter_test: Crash # Instance of 'TypeOperator': type check unimplemented for C<int>.
diff --git a/tests/corelib/corelib.status b/tests/corelib/corelib.status
index e685618..ee631b0 100644
--- a/tests/corelib/corelib.status
+++ b/tests/corelib/corelib.status
@@ -2,34 +2,16 @@
# 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.
-[ $compiler == dart2dart]
-bool_from_environment2_test: Skip
-bool_from_environment_default_value_test: Skip
-bool_from_environment_test: Skip
-from_environment_const_type_test: Skip
-from_environment_const_type_undefined_test: Skip
-int_from_environment2_test: Skip
-int_from_environment3_test: Skip
-int_from_environment_default_value_test: Skip
-int_from_environment_test: Skip
-string_from_environment2_test: Skip
-string_from_environment3_test: Skip
-string_from_environment_default_value: Skip
-string_from_environment_test: Skip
-
[ $compiler == none && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
bool_from_environment2_test: Skip
-bool_from_environment_default_value_test: Skip
bool_from_environment_test: Skip
from_environment_const_type_test: Skip
from_environment_const_type_undefined_test: Skip
int_from_environment2_test: Skip
int_from_environment3_test: Skip
-int_from_environment_default_value_test: Skip
int_from_environment_test: Skip
string_from_environment2_test: Skip
string_from_environment3_test: Skip
-string_from_environment_default_value: Skip
string_from_environment_test: Skip
[ $compiler == none ]
@@ -39,7 +21,7 @@
symbol_test/01: Fail, Pass # bug 11669
# #void should be a valid symbol.
-[ $compiler == none || $compiler == dart2js || $compiler == dart2dart ]
+[ $compiler == none || $compiler == dart2js ]
symbol_reserved_word_test/02: CompileTimeError # bug 20191
symbol_reserved_word_test/05: CompileTimeError # bug 20191
@@ -57,7 +39,7 @@
# With the exception of 'void', const Symbol() should not accept reserved
# words.
-[ $compiler == none || $compiler == dart2js || $compiler == dart2dart]
+[ $compiler == none || $compiler == dart2js ]
symbol_reserved_word_test/04: MissingCompileTimeError # bug 11669, 19972
symbol_reserved_word_test/07: MissingCompileTimeError # bug 11669, 19972
symbol_reserved_word_test/10: MissingCompileTimeError # bug 11669, 19972
@@ -68,7 +50,7 @@
symbol_reserved_word_test/10: Fail # bug 11669, 19972 / dartium/drt cannot detect CompileTimeErrors
# With the exception of 'void', new Symbol() should not accept reserved words.
-[ $compiler == none || $compiler == dart2dart ]
+[ $compiler == none ]
symbol_reserved_word_test/06: RuntimeError # bug 11669
symbol_reserved_word_test/09: RuntimeError # bug 11669
symbol_reserved_word_test/12: RuntimeError # bug 11669
@@ -77,7 +59,7 @@
symbol_test/02: MissingCompileTimeError # bug 11669
symbol_test/03: MissingCompileTimeError # bug 11669
-[ $compiler == none || $compiler == dart2dart ]
+[ $compiler == none ]
symbol_test/none: Fail # bug 11669
symbol_operator_test/03: Fail # bug 11669
string_case_test/01: Fail # Bug 18061
@@ -155,13 +137,6 @@
string_case_test/02: Fail, OK # Bug in dartium version of V8.
string_case_test/03: Fail, OK # Bug in dartium version of V8.
-[ $compiler == dart2dart ]
-compare_to2_test: Fail # inherited from VM
-unicode_test: Fail # inherited from VM
-
-[ $compiler == dart2dart && $minified ]
-error_stack_trace1_test: Fail # Fails in minified mode, test depends on method names.
-
[ $compiler == dartanalyzer ]
from_environment_const_type_test: Skip # The -D option that defines a constant
# for the Dart vm is not accepted by the deprecated java dartanalyzer.
@@ -235,363 +210,156 @@
big_integer_parsed_mul_div_vm_test: Pass, Slow
[ $compiler == dart2js && $cps_ir ]
-apply2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-apply3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-apply4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-apply_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bit_twiddling_bigint_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bit_twiddling_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bool_from_environment_default_value_test: Crash # (throw new ExpectException(message)): Unhandled node
-bool_from_environment_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bool_hashcode_test: Crash # (throw new ExpectException(message)): Unhandled node
-collection_from_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-collection_removes_test: Crash # (throw new ExpectException(message)): Unhandled node
-collection_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-collection_to_string_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compare_to2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compare_to_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_list_literal_test: Crash # (try {list.add(4);}on UnsupportedError catch (e){exception=e;}): "on T" catch block
-const_list_remove_range_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_list_set_range_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-core_runtime_types_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-date_time2_test: Crash # (throw new ExpectException(message)): Unhandled node
-date_time3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-date_time4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-date_time5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-date_time6_test: Crash # (throw new ExpectException(message)): Unhandled node
-date_time7_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-date_time8_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-date_time9_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-date_time_parse_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-date_time_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_ceil2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_ceil_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_ceil_to_double_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_compare_test: Crash # (throw new ExpectException(message)): Unhandled node
-double_floor2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_floor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_floor_to_double_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_parse_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_parse_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_round2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_round3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_round4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_round_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_round_to_double2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_round_to_double3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_round_to_double_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_truncate2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_truncate_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_truncate_to_double_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-duration2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-duration_big_num_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-duration_double_multiplication_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-duration_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-error_stack_trace1_test: Crash # (throw new ExpectException(message)): Unhandled node
-error_stack_trace2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-error_stack_trace_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-errors_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-exception_implementation_test: Crash # "on T" catch block
-expando_test: Crash # Please triage this failure.
-expression_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-for_in_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-format_exception_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/15: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/16: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/15: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/16: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-from_environment_const_type_undefined_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-growable_list_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-hashcode_boxed_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-hashcode_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-hash_map2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-hash_map_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-hash_set_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-hash_set_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-hash_set_type_check_test: Crash # (throw new ExpectException(message)): Unhandled node
-has_next_iterator_test: Crash # (throw new ExpectException(message)): Unhandled node
-indexed_list_access_test: Crash # (throw new ExpectException(message)): Unhandled node
-int_ceil_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-int_ceil_to_double_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-integer_to_radix_string_test: Crash # "on T" catch block
-integer_to_string_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-integer_to_string_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-int_floor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-int_floor_to_double_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-int_from_environment2_test: Crash # (throw new ExpectException(message)): Unhandled node
-int_from_environment_default_value_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-int_from_environment_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+apply2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+apply_test: Crash # (test0): handleStaticFunctionGet: function(test0)
+bool_from_environment_test: RuntimeError # Please triage this failure.
+collection_removes_test: RuntimeError # Please triage this failure.
+collection_to_string_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+compare_to2_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+const_list_remove_range_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+const_list_set_range_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+core_runtime_types_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+date_time9_test: Crash # Instance of 'TypeOperator': type check unimplemented for Comparable.
+date_time_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+double_ceil2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+double_ceil_test: RuntimeError # Please triage this failure.
+double_floor2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+double_floor_test: RuntimeError # Please triage this failure.
+double_parse_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+double_parse_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+double_round2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+double_round4_test: RuntimeError # Please triage this failure.
+double_round_test: RuntimeError # Please triage this failure.
+double_truncate2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+double_truncate_test: RuntimeError # Please triage this failure.
+duration2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+duration_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+error_stack_trace1_test: Pass # Please triage this failure.
+error_stack_trace2_test: Crash # unsupported element kind: cyclicStatic:field
+error_stack_trace_test: Crash # (argument): handleStaticFunctionGet: function(argument)
+expando_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+growable_list_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+has_next_iterator_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+hash_map2_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map<int, String>.
+hash_set_test/01: Crash # (testIdentitySet): handleStaticFunctionGet: function(testIdentitySet)
+hash_set_test/none: Crash # (testIdentitySet): handleStaticFunctionGet: function(testIdentitySet)
+hash_set_type_check_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+hashcode_test: Crash # (bar): handleStaticFunctionGet: function(bar)
+indexed_list_access_test: Crash # (getIt): handleStaticFunctionGet: function(getIt)
+int_from_environment_test: RuntimeError # Please triage this failure.
int_parse_radix_test/01: Crash # Please triage this failure.
int_parse_radix_test/02: Crash # Please triage this failure.
int_parse_radix_test/none: Crash # Please triage this failure.
-int_round_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-int_round_to_double_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-int_to_int_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-int_truncate_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-int_truncate_to_double_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_operator_basic_types_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_contains2_test: Crash # (throw new ExpectException(message)): Unhandled node
-iterable_contains_test: Crash # (throw new ExpectException(message)): Unhandled node
-iterable_element_at_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_expand_test: Crash # (throw new ExpectException(message)): Unhandled node
-iterable_first_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_first_where_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_fold_test: Crash # cannot compile methods that need interceptor calling convention.
-iterable_generate_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_join_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_last_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_last_where_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_length_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_mapping_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_reduce_test: Crash # cannot compile methods that need interceptor calling convention.
-iterable_return_type_test/01: Crash # Please triage this failure.
-iterable_return_type_test/02: Crash # Please triage this failure.
-iterable_return_type_test/none: Crash # Please triage this failure.
-iterable_single_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_single_where_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_skip_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_skip_while_test: Crash # (throw new ExpectException(message)): Unhandled node
-iterable_take_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_take_while_test: Crash # (throw new ExpectException(message)): Unhandled node
-iterable_test: Crash # (throw new ExpectException(message)): Unhandled node
-iterable_to_list_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_to_set_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-iterable_tostring_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-json_map_test: Crash # (throw new ExpectException(message)): Unhandled node
-linked_hash_map_from_iterables_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-linked_hash_map_from_iterable_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-linked_hash_map_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_as_map_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_contains_argument_order_test: Crash # cannot compile methods that need interceptor calling convention.
-list_filled_type_argument_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_fill_range_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_first_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_fixed_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_for_each_test: Crash # (throw new ExpectException(message)): Unhandled node
-list_get_range_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_growable_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_index_of2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_index_of_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_insert_all_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_insert_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_iterators_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_last_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_literal_is_growable_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_literal_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_map_test: Crash # (throw new ExpectException(message)): Unhandled node
-list_removeat_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_remove_range_test: Crash # (throw new ExpectException(message)): Unhandled node
-list_replace_range_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_reversed_test: Crash # (throw new ExpectException(message)): Unhandled node
-list_set_all_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_set_range_test: Crash # (throw new ExpectException(message)): Unhandled node
-list_sort_test: Crash # (throw new ExpectException(message)): Unhandled node
-list_sublist_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_to_string2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_to_string_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+is_operator_basic_types_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+iterable_element_at_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+iterable_expand_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+iterable_first_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+iterable_first_where_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+iterable_fold_test: Crash # (id): handleStaticFunctionGet: function(id)
+iterable_generate_test: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable<int>.
+iterable_last_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+iterable_last_where_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+iterable_mapping_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+iterable_reduce_test: Crash # (id): handleStaticFunctionGet: function(id)
+iterable_return_type_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for Map<int, int>.
+iterable_return_type_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for Map<int, int>.
+iterable_return_type_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for Map<int, int>.
+iterable_single_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+iterable_single_where_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+iterable_skip_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+iterable_take_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+iterable_to_list_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<int>.
+iterable_to_set_test: Crash # Instance of 'TypeOperator': type check unimplemented for Set<int>.
+json_map_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+linked_hash_map_from_iterable_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map<int, String>.
+linked_hash_map_from_iterables_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map<int, String>.
+list_as_map_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+list_fill_range_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_filled_type_argument_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<int>.
+list_first_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_fixed_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_for_each_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_get_range_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_growable_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_insert_all_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_insert_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_iterators_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_last_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_map_test: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable.
+list_remove_range_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_removeat_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_replace_range_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_reversed_test: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable.
+list_set_all_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_set_range_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_sort_test: Crash # (Comparable.compare): handleStaticFunctionGet: function(Comparable#compare)
+list_sublist_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_to_string2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_to_string_test: RuntimeError # Please triage this failure.
list_unmodifiable_test: Crash # (createConstList): handleStaticFunctionGet: function(createConstList)
-main_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-map_contains_key_test: Crash # (throw new ExpectException(message)): Unhandled node
-map_contains_value_test: Crash # (throw new ExpectException(message)): Unhandled node
-map_from_iterables_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-map_from_iterable_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-map_from_test: Crash # Please triage this failure.
-map_index_test: Crash # (throw new ExpectException(message)): Unhandled node
-map_keys2_test: Crash # Please triage this failure.
-map_keys_test: Crash # Please triage this failure.
-map_remove_test: Crash # (throw new ExpectException(message)): Unhandled node
-maps_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-map_test: Crash # Please triage this failure.
-map_to_string_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-map_values2_test: Crash # Please triage this failure.
-map_values3_test: Crash # Please triage this failure.
-map_values4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-map_values_test: Crash # Please triage this failure.
-nan_infinity_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-nan_infinity_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-null_nosuchmethod_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-null_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-num_clamp_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-num_parse_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-num_parse_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-num_sign_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-print_test/01: Crash # cannot compile methods that need interceptor calling convention.
-print_test/none: Crash # cannot compile methods that need interceptor calling convention.
-queue_first_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-queue_iterator_test: Crash # (throw new ExpectException(message)): Unhandled node
-queue_last_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-queue_single_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-queue_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-range_error_test: Crash # (throw new ExpectException(message)): Unhandled node
-reg_exp1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reg_exp4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reg_exp5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reg_exp_all_matches_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/alternative-length-miscalculation_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/alternatives_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/assertion_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/backreferences_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/bol_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/bol-with-multiline_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/capture-3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/captures_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/capture_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/character-match-out-of-order_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/char-insensitive_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/compile-crash_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/compile_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/constructor_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/dotstar_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/early-acid3-86_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/ecma-regex-examples_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/extended-characters-match_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/extended-characters-more_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/find-first-asserted_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reg_exp_first_match_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/global_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reg_exp_groups_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reg_exp_group_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reg_exp_has_match_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/indexof_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/invalid-range-in-class_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/issue_19193_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/lastindex_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/look-ahead_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/lookahead_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/loop-capture_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/malformed-escapes_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/many-brackets_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/multiline_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/negative-special-characters_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/no-extensions_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/non-bmp_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/non-capturing-backtracking_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/non-capturing-groups_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/non-character_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/non-greedy-parentheses_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/norepeat_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/overflow_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/parentheses_test: Crash # (throw new ExpectException(message)): Unhandled node
-reg_exp_pattern_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/pcre-test-4_test: Crash # (throw new ExpectException(message)): Unhandled node
+map_from_iterable_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map<String, String>.
+map_from_iterables_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map<int, String>.
+map_from_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+map_keys2_test: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable<String>.
+map_keys_test: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable.
+map_test: Crash # (Comparable.compare): handleStaticFunctionGet: function(Comparable#compare)
+map_to_string_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+map_values2_test: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable<int>.
+map_values3_test: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable<String>.
+map_values4_test: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable<String>.
+map_values_test: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable.
+null_nosuchmethod_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+null_test: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+num_clamp_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+num_parse_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+num_parse_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+num_sign_test: Crash # unsupported element kind: numbers:field
+queue_first_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+queue_last_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+queue_single_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+queue_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regexp/compile-crash_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regexp/compile_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regexp/early-acid3-86_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regexp/invalid-range-in-class_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regexp/multiline_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regexp/no-extensions_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
regexp/pcre_test: Crash # Please triage this failure.
-regexp/quantified-assertions_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/range-bound-ffff_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/range-out-of-order_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/ranges-and-escaped-hyphens_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/regexp_kde_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/regexp_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/regress-6-9-regexp_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/regress-regexp-construct-result_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/repeat-match-waldemar_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/results-cache_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/stack-overflow2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/stack-overflow_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/standalones_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reg_exp_start_end_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reg_exp_string_match_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/toString_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/UC16_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/unicodeCaseInsensitive_test: Crash # (throw new ExpectException(message)): Unhandled node
-regexp/unicode-handling_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regexp/zero-length-alternatives_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress_11099_test: Crash # (throw 'Wrong result!'): Unhandled node
-regress_r21715_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-safe_to_string_test: Crash # (throw new ExpectException(message)): Unhandled node
-set_containsAll_test: Crash # (throw new ExpectException(message)): Unhandled node
-set_contains_test: Crash # (throw new ExpectException(message)): Unhandled node
-set_intersection_test: Crash # (throw new ExpectException(message)): Unhandled node
-set_iterator_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-set_removeAll_test: Crash # (throw new ExpectException(message)): Unhandled node
-set_remove_test: Crash # (throw new ExpectException(message)): Unhandled node
-set_test: Crash # (throw new ExpectException(message)): Unhandled node
-set_to_string_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-shuffle_test: Crash # (throw new ExpectException(message)): Unhandled node
-sort_test: Crash # (throw new ExpectException(message)): Unhandled node
-splay_tree_from_iterables_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-splay_tree_from_iterable_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-splay_tree_test: Crash # (throw new ExpectException(message)): Unhandled node
-stacktrace_fromstring_test: Crash # (throw 0): Unhandled node
-stopwatch2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-stopwatch_test: Crash # (throw new ExpectException(message)): Unhandled node
-string_base_vm_test: Crash # (try {s.substring(5,12);}on RangeError catch (ex){exception_caught=true;}): "on T" catch block
-string_buffer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_case_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_case_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_case_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_case_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_codeunits_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_fromcharcodes_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_fromcharcode_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_from_environment2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_from_environment_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_from_list_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_operations_with_null_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_pattern_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_replace_all_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_replace_dollar_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_replace_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_runes_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_source_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_split_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-strings_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_substring_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_to_lower_case_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_trim2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_trimlr_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-string_trimlr_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-string_trim_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-symbol_operator_test/03: Crash # (throw "Didn't throw: ${name}"): Unhandled node
-symbol_operator_test/none: Crash # (throw "Not equal #${name}, \$${name}: ${constSymbol}, ${mirrorSymbol}"): Unhandled node
+regexp/range-out-of-order_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regexp/regexp_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+set_test: Crash # (identical): handleStaticFunctionGet: origin function(identical)
+set_to_string_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+shuffle_test: RuntimeError # Please triage this failure.
+splay_tree_from_iterable_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map<int, String>.
+splay_tree_from_iterables_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map<int, String>.
+splay_tree_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+string_buffer_test: Crash # (Expect.isTrue): handleStaticFunctionGet: function(Expect#isTrue)
+string_codeunits_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+string_from_environment2_test: RuntimeError # Please triage this failure.
+string_from_environment_test: RuntimeError # Please triage this failure.
+string_fromcharcode_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+string_fromcharcodes_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+string_operations_with_null_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+string_pattern_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+string_replace_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+string_runes_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+string_source_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+string_substring_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+string_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+symbol_operator_test/03: Crash # unsupported element kind: $:field
+symbol_operator_test/none: Crash # unsupported element kind: $:field
symbol_reserved_word_test/03: Pass # Please triage this failure.
-symbol_reserved_word_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-symbol_reserved_word_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-symbol_reserved_word_test/12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-symbol_test/none: Crash # "on T" catch block
-toInt_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-unicode2_test: Crash # (throw new ExpectException(message)): Unhandled node
-unicode_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-uri_base_test: Crash # "on T" catch block
-uri_file_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-uri_http_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-uri_ipv4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-uri_ipv6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-uri_normalize_path_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-uri_normalize_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-uri_parse_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-uri_path_test: Crash # (throw new ExpectException(message)): Unhandled node
-uri_query_test: Crash # (throw new ExpectException(message)): Unhandled node
-uri_scheme_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-uri_test: Crash # (throw new ExpectException(message)): Unhandled node
+symbol_reserved_word_test/06: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+symbol_reserved_word_test/09: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+symbol_reserved_word_test/12: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+symbol_test/none: Crash # Please triage this failure.
+uri_file_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+uri_ipv4_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+uri_ipv6_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+uri_normalize_path_test: RuntimeError # Please triage this failure.
+uri_path_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+uri_query_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+uri_scheme_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+uri_test: Crash # Please triage this failure.
diff --git a/tests/corelib/growable_list_test.dart b/tests/corelib/growable_list_test.dart
index 98b4e1f..0e26138 100644
--- a/tests/corelib/growable_list_test.dart
+++ b/tests/corelib/growable_list_test.dart
@@ -5,11 +5,11 @@
// Sanity check on the growing behavior of a growable list.
import "package:expect/expect.dart";
-import "dart:collection" show IterableBase;
+import "dart:collection" show EfficientLengthIterable;
// Iterable generating numbers in range [0..count).
// May perform callback at some point underways.
-class TestIterableBase extends IterableBase<int> {
+class TestIterableBase extends Iterable<int> {
final int length;
final int count;
// call [callback] if generating callbackIndex.
@@ -26,9 +26,8 @@
int get length => throw "SHOULD NOT BE CALLED";
}
-// Implement Set for private EfficientLength interface.
class EfficientTestIterable extends TestIterableBase
- implements Set<int> {
+ implements EfficientLengthIterable<int> {
EfficientTestIterable(length, count, [callbackIndex = -1, callback])
: super(length, count, callbackIndex, callback);
// Avoid warnings because we don't actually implement Set.
@@ -57,7 +56,7 @@
void main() {
- // Without EfficientLength interface
+ // Without EfficientLengthIterable interface
{
// Change length of list after 20 additions.
var l = [];
@@ -80,7 +79,7 @@
}, (e) => e is ConcurrentModificationError);
}
- // With EfficientLength interface (uses length).
+ // With EfficientLengthIterable interface (uses length).
{
// Change length of list after 20 additions.
var l = [];
diff --git a/tests/corelib/splay_tree_test.dart b/tests/corelib/splay_tree_test.dart
index 80a1742..c6de497 100644
--- a/tests/corelib/splay_tree_test.dart
+++ b/tests/corelib/splay_tree_test.dart
@@ -53,6 +53,7 @@
testSetFrom();
regressRemoveWhere();
regressRemoveWhere2();
+ regressFromCompare();
}
void regressRemoveWhere() {
@@ -93,3 +94,45 @@
set2 = new SplayTreeSet<int>.from(set1.where((x) => x is int));
Expect.equals(3, set2.length);
}
+
+
+
+void regressFromCompare() {
+ // Regression test for http://dartbug.com/23387.
+ // The compare and isValidKey arguments to SplayTreeMap.from were ignored.
+
+ int compare(a, b) {
+ if (a is IncomparableKey && b is IncomparableKey) {
+ return b.id - a.id;
+ }
+ throw "isValidKey failure";
+ }
+ bool isValidKey(o) => o is IncomparableKey;
+ IncomparableKey key(int n) => new IncomparableKey(n);
+
+ var entries = {key(0): 0, key(1): 1, key(2): 2, key(0): 0};
+ Expect.equals(4, entries.length);
+ var map = new SplayTreeMap<IncomparableKey, int>.from(
+ entries, compare, isValidKey);
+ Expect.equals(3, map.length);
+ for (int i = 0; i < 3; i++) {
+ Expect.isTrue(map.containsKey(key(i)));
+ Expect.equals(i, map[key(i)]);
+ }
+ Expect.isFalse(map.containsKey(key(5)));
+ Expect.isFalse(map.containsKey(1));
+ Expect.isFalse(map.containsKey("string"));
+ Expect.equals(null, map[key(5)]);
+ Expect.equals(null, map[1]);
+ Expect.equals(null, map["string"]);
+ Expect.throws(() { map[1] = 42; });
+ Expect.throws(() { map["string"] = 42; });
+ map[key(5)] = 42;
+ Expect.equals(4, map.length);
+ Expect.equals(42, map[key(5)]);
+}
+
+class IncomparableKey {
+ final int id;
+ IncomparableKey(this.id);
+}
diff --git a/tests/html/html.status b/tests/html/html.status
index 701d1cb..f45a2ae 100644
--- a/tests/html/html.status
+++ b/tests/html/html.status
@@ -417,51 +417,51 @@
window_nosuchmethod_test: StaticWarning
[ $compiler == dart2js && $cps_ir ]
-async_spawnuri_test: Crash # cannot compile methods that need interceptor calling convention.
-async_test: Crash # cannot compile methods that need interceptor calling convention.
+async_spawnuri_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+async_test: Crash # (cancellingIsolate): handleStaticFunctionGet: function(cancellingIsolate)
audiobuffersourcenode_test: Crash # try/finally
audiocontext_test: Crash # try/finally
-audioelement_test: Crash # cannot compile methods that need interceptor calling convention.
-b_element_test: Crash # cannot compile methods that need interceptor calling convention.
-blob_constructor_test: Crash # cannot compile methods that need interceptor calling convention.
+audioelement_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+b_element_test: Crash # unsupported element kind: _defaultEnvironment:field
+blob_constructor_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
cache_test: Crash # try/finally
-callbacks_test: Crash # cannot compile methods that need interceptor calling convention.
+callbacks_test: Crash # unsupported element kind: _defaultEnvironment:field
canvas_pixel_array_type_alias_test: Crash # try/finally
-canvas_test: Crash # cannot compile methods that need interceptor calling convention.
+canvas_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
canvasrenderingcontext2d_test: Crash # try/finally
-cdata_test: Crash # cannot compile methods that need interceptor calling convention.
-client_rect_test: Crash # cannot compile methods that need interceptor calling convention.
-cross_domain_iframe_test: Crash # cannot compile methods that need interceptor calling convention.
+cdata_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+client_rect_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+cross_domain_iframe_test: Crash # Instance of 'TypeOperator': type casts not implemented.
crypto_test: Crash # try/finally
-css_rule_list_test: Crash # cannot compile methods that need interceptor calling convention.
+css_rule_list_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
css_test: Crash # try/finally
-cssstyledeclaration_test: Crash # cannot compile methods that need interceptor calling convention.
+cssstyledeclaration_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
custom/attribute_changed_callback_test: Crash # try/finally
-custom/constructor_calls_created_synchronously_test: Crash # cannot compile methods that need interceptor calling convention.
-custom/created_callback_test: Crash # cannot compile methods that need interceptor calling convention.
-custom/document_register_basic_test: Crash # cannot compile methods that need interceptor calling convention.
+custom/constructor_calls_created_synchronously_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+custom/created_callback_test: Crash # (NestedElement.test): handleStaticFunctionGet: function(NestedElement#test)
+custom/document_register_basic_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
custom/document_register_type_extensions_test: Crash # try/finally
-custom/element_upgrade_test: Crash # cannot compile methods that need interceptor calling convention.
+custom/element_upgrade_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
custom/entered_left_view_test: Crash # try/finally
-custom/js_custom_test: Crash # cannot compile methods that need interceptor calling convention.
-custom/mirrors_test: Crash # cannot compile methods that need interceptor calling convention.
+custom/js_custom_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+custom/mirrors_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
custom/regress_194523002_test: Crash # unsupported element kind: _defaultEnvironment:field
custom_element_method_clash_test: Crash # try/finally
custom_element_name_clash_test: Crash # try/finally
custom_elements_23127_test: Crash # try/finally
custom_elements_test: Crash # try/finally
-custom_tags_test: Crash # cannot compile methods that need interceptor calling convention.
-dart_object_local_storage_test: Crash # cannot compile methods that need interceptor calling convention.
-datalistelement_test: Crash # cannot compile methods that need interceptor calling convention.
+custom_tags_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+dart_object_local_storage_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+datalistelement_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
document_test: Crash # try/finally
-documentfragment_test: Crash # cannot compile methods that need interceptor calling convention.
-dom_constructors_test: Crash # cannot compile methods that need interceptor calling convention.
-domparser_test: Crash # cannot compile methods that need interceptor calling convention.
+documentfragment_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+dom_constructors_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+domparser_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
element_add_test: Crash # try/finally
element_animate_test: Crash # try/finally
-element_classes_svg_test: Crash # cannot compile methods that need interceptor calling convention.
-element_classes_test: Crash # cannot compile methods that need interceptor calling convention.
-element_constructor_1_test: Crash # cannot compile methods that need interceptor calling convention.
+element_classes_svg_test: Crash # (elementsTearDown): handleStaticFunctionGet: function(elementsTearDown)
+element_classes_test: Crash # (listElementTearDown): handleStaticFunctionGet: function(listElementTearDown)
+element_constructor_1_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
element_dimensions_test: Crash # try/finally
element_offset_test: Crash # try/finally
element_test: Crash # try/finally
@@ -472,91 +472,91 @@
element_types_constructors5_test: Crash # try/finally
element_types_constructors6_test: Crash # try/finally
element_types_test: Crash # try/finally
-event_customevent_test: Crash # cannot compile methods that need interceptor calling convention.
-events_test: Crash # cannot compile methods that need interceptor calling convention.
-exceptions_test: Crash # cannot compile methods that need interceptor calling convention.
+event_customevent_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+events_test: Crash # unsupported element kind: _defaultEnvironment:field
+exceptions_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
fileapi_test: Crash # try/finally
-filereader_test: Crash # cannot compile methods that need interceptor calling convention.
-fontface_loaded_test: Crash # cannot compile methods that need interceptor calling convention.
-fontface_test: Crash # cannot compile methods that need interceptor calling convention.
+filereader_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+fontface_loaded_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+fontface_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
form_data_test: Crash # try/finally
-form_element_test: Crash # cannot compile methods that need interceptor calling convention.
-geolocation_test: Crash # cannot compile methods that need interceptor calling convention.
-hidden_dom_1_test: Crash # cannot compile methods that need interceptor calling convention.
-hidden_dom_2_test: Crash # cannot compile methods that need interceptor calling convention.
+form_element_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+geolocation_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+hidden_dom_1_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+hidden_dom_2_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
history_test: Crash # try/finally
-htmlcollection_test: Crash # cannot compile methods that need interceptor calling convention.
-htmlelement_test: Crash # cannot compile methods that need interceptor calling convention.
-htmloptionscollection_test: Crash # cannot compile methods that need interceptor calling convention.
+htmlcollection_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+htmlelement_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+htmloptionscollection_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
indexeddb_1_test: Crash # try/finally
-indexeddb_2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-indexeddb_3_test: Crash # cannot compile methods that need interceptor calling convention.
-indexeddb_4_test: Crash # cannot compile methods that need interceptor calling convention.
-indexeddb_5_test: Crash # cannot compile methods that need interceptor calling convention.
+indexeddb_2_test: Crash # Please triage this failure.
+indexeddb_3_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+indexeddb_4_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+indexeddb_5_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
input_element_test: Crash # try/finally
-instance_of_test: Crash # cannot compile methods that need interceptor calling convention.
-isolates_test: Crash # cannot compile methods that need interceptor calling convention.
-js_interop_1_test: Crash # cannot compile methods that need interceptor calling convention.
+instance_of_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+isolates_test: Crash # (isolateEntry): handleStaticFunctionGet: function(isolateEntry)
+js_interop_1_test: Crash # Instance of 'TypeOperator': type casts not implemented.
js_test: Crash # try/finally
-keyboard_event_test: Crash # cannot compile methods that need interceptor calling convention.
-localstorage_test: Crash # cannot compile methods that need interceptor calling convention.
-location_test: Crash # cannot compile methods that need interceptor calling convention.
+keyboard_event_test: Crash # unsupported element kind: _defaultEnvironment:field
+localstorage_test: Crash # (try {fn();}finally {window.localStorage.clear();}): try/finally
+location_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
media_stream_test: Crash # try/finally
mediasource_test: Crash # try/finally
-messageevent_test: Crash # cannot compile methods that need interceptor calling convention.
-mouse_event_test: Crash # cannot compile methods that need interceptor calling convention.
+messageevent_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+mouse_event_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
mutationobserver_test: Crash # try/finally
-native_gc_test: Crash # cannot compile methods that need interceptor calling convention.
-navigator_test: Crash # cannot compile methods that need interceptor calling convention.
+native_gc_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+navigator_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
node_test: Crash # try/finally
node_validator_important_if_you_suppress_make_the_bug_critical_test: Crash # try/finally
-non_instantiated_is_test: Crash # cannot compile methods that need interceptor calling convention.
+non_instantiated_is_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
notification_test: Crash # try/finally
performance_api_test: Crash # try/finally
postmessage_structured_test: Crash # try/finally
-query_test: Crash # cannot compile methods that need interceptor calling convention.
-queryall_test: Crash # cannot compile methods that need interceptor calling convention.
+query_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+queryall_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
range_test: Crash # try/finally
-request_animation_frame_test: Crash # cannot compile methods that need interceptor calling convention.
+request_animation_frame_test: Crash # Instance of 'TypeOperator': type casts not implemented.
rtc_test: Crash # try/finally
-selectelement_test: Crash # cannot compile methods that need interceptor calling convention.
-serialized_script_value_test: Crash # cannot compile methods that need interceptor calling convention.
+selectelement_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+serialized_script_value_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
shadow_dom_test: Crash # try/finally
-shadowroot_test: Crash # cannot compile methods that need interceptor calling convention.
+shadowroot_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
speechrecognition_test: Crash # try/finally
-storage_quota_test/missingenumcheck: Crash # cannot compile methods that need interceptor calling convention.
-storage_quota_test/none: Crash # cannot compile methods that need interceptor calling convention.
-storage_test: Crash # cannot compile methods that need interceptor calling convention.
-streams_test: Crash # cannot compile methods that need interceptor calling convention.
+storage_quota_test/missingenumcheck: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+storage_quota_test/none: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+storage_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+streams_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
svg_test: Crash # try/finally
svgelement_test: Crash # try/finally
-table_test: Crash # cannot compile methods that need interceptor calling convention.
+table_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
touchevent_test: Crash # try/finally
-track_element_constructor_test: Crash # cannot compile methods that need interceptor calling convention.
-transferables_test: Crash # cannot compile methods that need interceptor calling convention.
+track_element_constructor_test: Crash # unsupported element kind: _defaultEnvironment:field
+transferables_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
transition_event_test: Crash # try/finally
typed_arrays_1_test: Crash # try/finally
-typed_arrays_2_test: Crash # cannot compile methods that need interceptor calling convention.
-typed_arrays_3_test: Crash # cannot compile methods that need interceptor calling convention.
-typed_arrays_4_test: Crash # cannot compile methods that need interceptor calling convention.
-typed_arrays_5_test: Crash # cannot compile methods that need interceptor calling convention.
-typed_arrays_arraybuffer_test: Crash # cannot compile methods that need interceptor calling convention.
-typed_arrays_dataview_test: Crash # cannot compile methods that need interceptor calling convention.
-typed_arrays_range_checks_test: Crash # cannot compile methods that need interceptor calling convention.
-typed_arrays_simd_test: Crash # cannot compile methods that need interceptor calling convention.
-typing_test: Crash # cannot compile methods that need interceptor calling convention.
-unknownelement_test: Crash # cannot compile methods that need interceptor calling convention.
-uri_test: Crash # cannot compile methods that need interceptor calling convention.
+typed_arrays_2_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+typed_arrays_3_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+typed_arrays_4_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+typed_arrays_5_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+typed_arrays_arraybuffer_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+typed_arrays_dataview_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+typed_arrays_range_checks_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+typed_arrays_simd_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+typing_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+unknownelement_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+uri_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
url_test: Crash # try/finally
webgl_1_test: Crash # try/finally
websocket_test: Crash # try/finally
websql_test: Crash # try/finally
-wheelevent_test: Crash # cannot compile methods that need interceptor calling convention.
-window_eq_test: Crash # cannot compile methods that need interceptor calling convention.
-window_mangling_test: Crash # cannot compile methods that need interceptor calling convention.
-window_nosuchmethod_test: Crash # cannot compile methods that need interceptor calling convention.
-window_test: Crash # cannot compile methods that need interceptor calling convention.
-worker_api_test: Crash # cannot compile methods that need interceptor calling convention.
+wheelevent_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+window_eq_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+window_mangling_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+window_nosuchmethod_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+window_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+worker_api_test: Crash # (worker): handleStaticFunctionGet: function(worker)
worker_test: Crash # try/finally
xhr_cross_origin_test: Crash # try/finally
xhr_test: Crash # try/finally
diff --git a/tests/corelib/bool_from_environment_default_value_test.dart b/tests/isolate/bool_from_environment_default_value_test.dart
similarity index 100%
rename from tests/corelib/bool_from_environment_default_value_test.dart
rename to tests/isolate/bool_from_environment_default_value_test.dart
diff --git a/tests/isolate/deferred_in_isolate2_lib.dart b/tests/isolate/deferred_in_isolate2_lib.dart
new file mode 100644
index 0000000..e3fea39
--- /dev/null
+++ b/tests/isolate/deferred_in_isolate2_lib.dart
@@ -0,0 +1,8 @@
+// Copyright (c) 2015, 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.
+
+// Used by deferred_in_isolate2_test.
+library deferred_in_isolate2_lib;
+
+String f() => "hi";
diff --git a/tests/isolate/deferred_in_isolate2_test.dart b/tests/isolate/deferred_in_isolate2_test.dart
new file mode 100644
index 0000000..fa016a4
--- /dev/null
+++ b/tests/isolate/deferred_in_isolate2_test.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2015, 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.
+
+library deferred_in_isolate2_test;
+
+import 'dart:isolate';
+import 'dart:async';
+import 'package:unittest/unittest.dart';
+
+import 'deferred_in_isolate2_lib.dart' deferred as lib;
+
+loadDeferred(port) {
+ lib.loadLibrary().then((_) {
+ port.send(lib.f());
+ });
+}
+
+main() {
+ test("Deferred loading in isolate", () {
+ ReceivePort port = new ReceivePort();
+ port.first.then(expectAsync((msg) {
+ expect(msg, equals("hi"));
+ }));
+ Isolate.spawn(loadDeferred, port.sendPort);
+ });
+}
diff --git a/tests/language/deferred_in_isolate_app.dart b/tests/isolate/deferred_in_isolate_app.dart
similarity index 100%
rename from tests/language/deferred_in_isolate_app.dart
rename to tests/isolate/deferred_in_isolate_app.dart
diff --git a/tests/language/deferred_in_isolate_lib.dart b/tests/isolate/deferred_in_isolate_lib.dart
similarity index 100%
rename from tests/language/deferred_in_isolate_lib.dart
rename to tests/isolate/deferred_in_isolate_lib.dart
diff --git a/tests/language/deferred_in_isolate_test.dart b/tests/isolate/deferred_in_isolate_test.dart
similarity index 100%
rename from tests/language/deferred_in_isolate_test.dart
rename to tests/isolate/deferred_in_isolate_test.dart
diff --git a/tests/language/enum_const_test.dart b/tests/isolate/enum_const_test.dart
similarity index 100%
rename from tests/language/enum_const_test.dart
rename to tests/isolate/enum_const_test.dart
diff --git a/tests/corelib/int_from_environment_default_value_test.dart b/tests/isolate/int_from_environment_default_value_test.dart
similarity index 100%
rename from tests/corelib/int_from_environment_default_value_test.dart
rename to tests/isolate/int_from_environment_default_value_test.dart
diff --git a/tests/isolate/isolate.status b/tests/isolate/isolate.status
index 02e3fa6..b0356bb 100644
--- a/tests/isolate/isolate.status
+++ b/tests/isolate/isolate.status
@@ -9,7 +9,7 @@
[ $runtime == vm && $arch == mips && $mode == debug ]
mandel_isolate_test: Skip # Uses 600 MB Ram on our 1 GB test device.
-[ $compiler == none || $compiler == dart2dart ]
+[ $compiler == none ]
compile_time_error_test/01: Skip # Issue 12587
ping_test: Skip # Resolve test issues
ping_pause_test: Skip # Resolve test issues
@@ -31,7 +31,8 @@
browser/*: SkipByDesign # Browser specific tests
[ $compiler == dart2js && $runtime == jsshell ]
-pause_test: Fail # non-zero timer not supported.
+pause_test: Fail, OK # non-zero timer not supported.
+timer_isolate_test: Fail, OK # Needs Timer to run.
[ $compiler == dart2js && $runtime == safari ]
cross_isolate_message_test: Skip # Issue 12627
@@ -50,6 +51,7 @@
message3_test/constMap: RuntimeError # Issue 21817
message3_test/constInstance: RuntimeError # Issue 21817
browser/issue_12474_test: CompileTimeError # Issue 22529
+enum_const_test/02: RuntimeError # Issue 21817
[ $compiler == dart2js && $jscl ]
spawn_uri_test: SkipByDesign # Loading another file is not supported in JS shell
@@ -59,17 +61,6 @@
mandel_isolate_test: Pass, Timeout # TODO(kasperl): Please triage.
-[ $compiler == dart2dart ]
-illegal_msg_mirror_test: RuntimeError # Issue 16548
-spawn_uri_multi_test/none: RuntimeError # Issue 16549
-spawn_uri_nested_vm_test: RuntimeError # Issue 16549
-spawn_uri_test: RuntimeError # Issue 16549
-spawn_uri_vm_test: RuntimeError # Issue 16549
-spawn_uri_exported_main_test: RuntimeError # Issue 16549
-issue_21398_parent_isolate_test: RuntimeError # Issue 16549
-issue_21398_parent_isolate1_test: RuntimeError # Issue 16549
-issue_21398_parent_isolate2_test: Skip # Not implemented yet
-
[ $compiler == dart2js && ( $runtime == ff || $runtime == safari || $runtime == drt || $runtime == chrome || $runtime == chromeOnAndroid) ]
isolate_stress_test: Pass, Slow # Issue 10697
@@ -82,7 +73,7 @@
[ $jscl ]
spawn_uri_multi_test/none: RuntimeError # Issue 13544
-[ ($compiler == none || $compiler == dart2dart) && ($runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
+[ $compiler == none && ($runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
pause_test: Fail # Not implemented yet
[ $compiler == none && $runtime == ContentShellOnAndroid ]
@@ -92,6 +83,7 @@
spawn_uri_nested_vm_test: Skip # Issue 14479: This test is timing out.
[ $compiler == none && ( $runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
+typed_message_test: Crash, Fail # Issue 13921, 14400
message_enum_test: Fail, OK # Issue 13921 Dom isolates don't support spawnFunction
compile_time_error_test/none: Fail, OK # Issue 13921 Dom isolates don't support spawnFunction
isolate_import_test/none: Fail, OK # Issue 13921 Dom isolates don't support spawnFunction
@@ -114,6 +106,11 @@
handle_error_test: Fail, OK # 13921 Dom isolates don't support spawnFunction
handle_error2_test: Fail, OK # 13921 Dom isolates don't support spawnFunction
handle_error3_test: Fail, OK # 13921 Dom isolates don't support spawnFunction
+timer_isolate_test: Fail, Pass # Issue 15487. Issue 13921: Dom isolates don't support spawnFunction
+deferred_in_isolate2_test: Fail, OK # Issue 16209, 13921 Dom isolates don't support spawnFunction
+bool_from_environment_default_value_test: Skip
+int_from_environment_default_value_test: Skip
+string_from_environment_default_value_test: Skip
[ $compiler == dartanalyzer || $compiler == dart2analyzer ]
browser/typed_data_message_test: StaticWarning
@@ -123,58 +120,62 @@
package_root_test: SkipByDesign # Uses dart:io.
[ $compiler == dart2js && $cps_ir ]
-capability_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-compile_time_error_test/01: Crash # handleStaticFunctionGet: function(entry)
-compile_time_error_test/none: Crash # handleStaticFunctionGet: function(entry)
-count_test: Crash # cannot compile methods that need interceptor calling convention.
-cross_isolate_message_test: Crash # cannot compile methods that need interceptor calling convention.
-function_send_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-handle_error2_test: Crash # Unhandled node
-handle_error3_test: Crash # Unhandled node
-handle_error_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-illegal_msg_function_test: Crash # cannot compile methods that need interceptor calling convention.
-illegal_msg_mirror_test: Crash # cannot compile methods that need interceptor calling convention.
-isolate_complex_messages_test: Crash # cannot compile methods that need interceptor calling convention.
-isolate_current_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-isolate_import_test/01: Crash # (Isolate): Error expression `Isolate` unhandled.
-isolate_import_test/none: Crash # handleStaticFunctionGet: function(entry)
-isolate_stress_test: Crash # handleStaticFunctionGet: function(worker)
-issue_22778_test: Crash # (throw new ExpectException(message)): Unhandled node
-kill2_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-kill_self_test: Crash # handleStaticFunctionGet: function(isomain1)
-kill_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-mandel_isolate_test: Crash # cannot compile methods that need interceptor calling convention.
-message2_test: Crash # cannot compile methods that need interceptor calling convention.
-message3_test/byteBuffer: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-message3_test/constInstance: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-message3_test/constList: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-message3_test/constList_identical: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-message3_test/constMap: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-message3_test/fun: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-message3_test/int32x4: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-message3_test/none: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-message_enum_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-message_test: Crash # cannot compile methods that need interceptor calling convention.
-mint_maker_test: Crash # cannot compile methods that need interceptor calling convention.
-nested_spawn2_test: Crash # cannot compile methods that need interceptor calling convention.
-nested_spawn_test: Crash # cannot compile methods that need interceptor calling convention.
-object_leak_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-ondone_test: Crash # handleStaticFunctionGet: function(isomain)
-pause_test: Crash # handleStaticFunctionGet: function(isomain1)
-ping_pause_test: Crash # (throw new ExpectException(message)): Unhandled node
-ping_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-port_test: Crash # (throw new ExpectException(message)): Unhandled node
-raw_port_test: Crash # cannot compile methods that need interceptor calling convention.
-request_reply_test: Crash # cannot compile methods that need interceptor calling convention.
-simple_message_test/01: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-simple_message_test/none: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-spawn_function_custom_class_test: Crash # cannot compile methods that need interceptor calling convention.
-spawn_function_test: Crash # cannot compile methods that need interceptor calling convention.
-spawn_uri_missing_from_isolate_test: Crash # handleStaticFunctionGet: function(isolate)
-spawn_uri_missing_test: Crash # handleStaticFunctionGet: function(doTest)
-spawn_uri_multi_test/01: Crash # cannot compile methods that need interceptor calling convention.
-spawn_uri_multi_test/none: Crash # cannot compile methods that need interceptor calling convention.
-stacktrace_message_test: Crash # cannot compile methods that need interceptor calling convention.
-start_paused_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-static_function_test: Crash # cannot compile methods that need interceptor calling convention.
-unresolved_ports_test: Crash # cannot compile methods that need interceptor calling convention.
+bool_from_environment_default_value_test: Crash # (test): handleStaticFunctionGet: function(test)
+compile_time_error_test/01: Crash # (entry): handleStaticFunctionGet: function(entry)
+compile_time_error_test/none: Crash # (entry): handleStaticFunctionGet: function(entry)
+count_test: Crash # (main): handleStaticFunctionGet: function(main)
+cross_isolate_message_test: Crash # (main): handleStaticFunctionGet: function(main)
+function_send_test: Crash # (toplevel): handleStaticFunctionGet: function(toplevel)
+handle_error2_test: Crash # (isomain1): handleStaticFunctionGet: function(isomain1)
+handle_error3_test: Crash # (isomain1): handleStaticFunctionGet: function(isomain1)
+handle_error_test: Crash # (isomain1): handleStaticFunctionGet: function(isomain1)
+illegal_msg_function_test: Crash # (main): handleStaticFunctionGet: function(main)
+illegal_msg_mirror_test: Crash # (main): handleStaticFunctionGet: function(main)
+int_from_environment_default_value_test: Crash # (test): handleStaticFunctionGet: function(test)
+isolate_complex_messages_test: Crash # (main): handleStaticFunctionGet: function(main)
+isolate_current_test: Crash # (i2l): handleStaticFunctionGet: function(i2l)
+isolate_import_test/01: Crash # (entry): handleStaticFunctionGet: function(entry)
+isolate_import_test/none: Crash # (entry): handleStaticFunctionGet: function(entry)
+isolate_stress_test: Crash # (worker): handleStaticFunctionGet: function(worker)
+issue_22778_test: Crash # (func): handleStaticFunctionGet: function(func)
+kill2_test: Crash # (isomain1): handleStaticFunctionGet: function(isomain1)
+kill_self_test: Crash # (isomain1): handleStaticFunctionGet: function(isomain1)
+kill_test: Crash # (isomain1): handleStaticFunctionGet: function(isomain1)
+mandel_isolate_test: Crash # (main): handleStaticFunctionGet: function(main)
+message2_test: Crash # (main): handleStaticFunctionGet: function(main)
+message3_test/byteBuffer: Crash # (echoMain): handleStaticFunctionGet: function(echoMain)
+message3_test/constInstance: Crash # (echoMain): handleStaticFunctionGet: function(echoMain)
+message3_test/constList: Crash # (echoMain): handleStaticFunctionGet: function(echoMain)
+message3_test/constList_identical: Crash # (echoMain): handleStaticFunctionGet: function(echoMain)
+message3_test/constMap: Crash # (echoMain): handleStaticFunctionGet: function(echoMain)
+message3_test/fun: Crash # (echoMain): handleStaticFunctionGet: function(echoMain)
+message3_test/int32x4: Crash # (echoMain): handleStaticFunctionGet: function(echoMain)
+message3_test/none: Crash # (echoMain): handleStaticFunctionGet: function(echoMain)
+message_enum_test: Crash # (sendIt): handleStaticFunctionGet: function(sendIt)
+message_test: Crash # (main): handleStaticFunctionGet: function(main)
+mint_maker_test: Crash # (main): handleStaticFunctionGet: function(main)
+nested_spawn2_test: Crash # (main): handleStaticFunctionGet: function(main)
+nested_spawn_test: Crash # (main): handleStaticFunctionGet: function(main)
+object_leak_test: Crash # (fun): handleStaticFunctionGet: function(fun)
+ondone_test: Crash # (isomain): handleStaticFunctionGet: function(isomain)
+pause_test: Crash # (isomain1): handleStaticFunctionGet: function(isomain1)
+ping_pause_test: Crash # (isomain1): handleStaticFunctionGet: function(isomain1)
+ping_test: Crash # (isomain1): handleStaticFunctionGet: function(isomain1)
+raw_port_test: Crash # (main): handleStaticFunctionGet: function(main)
+request_reply_test: Crash # (main): handleStaticFunctionGet: function(main)
+simple_message_test/01: Crash # (entry): handleStaticFunctionGet: function(entry)
+simple_message_test/none: Crash # (entry): handleStaticFunctionGet: function(entry)
+spawn_function_custom_class_test: Crash # (main): handleStaticFunctionGet: function(main)
+spawn_function_test: Crash # (main): handleStaticFunctionGet: function(main)
+spawn_uri_missing_from_isolate_test: Crash # (isolate): handleStaticFunctionGet: function(isolate)
+spawn_uri_missing_test: Crash # (doTest): handleStaticFunctionGet: function(doTest)
+spawn_uri_multi_test/01: Crash # unsupported element kind: _defaultEnvironment:field
+spawn_uri_multi_test/none: Crash # unsupported element kind: _defaultEnvironment:field
+stacktrace_message_test: Crash # (main): handleStaticFunctionGet: function(main)
+start_paused_test: Crash # (notyet): handleStaticFunctionGet: function(notyet)
+static_function_test: Crash # (main): handleStaticFunctionGet: function(main)
+string_from_environment_default_value_test: Crash # (test): handleStaticFunctionGet: function(test)
+timer_isolate_test: Crash # cannot compile methods that need interceptor calling convention.
+typed_message_test: Crash # (logMessages): handleStaticFunctionGet: function(logMessages)
+unresolved_ports_test: Crash # (main): handleStaticFunctionGet: function(main)
+
diff --git a/tests/corelib/string_from_environment_default_value.dart b/tests/isolate/string_from_environment_default_value_test.dart
similarity index 100%
rename from tests/corelib/string_from_environment_default_value.dart
rename to tests/isolate/string_from_environment_default_value_test.dart
diff --git a/tests/lib/async/timer_isolate_test.dart b/tests/isolate/timer_isolate_test.dart
similarity index 100%
rename from tests/lib/async/timer_isolate_test.dart
rename to tests/isolate/timer_isolate_test.dart
diff --git a/tests/language/typed_message_test.dart b/tests/isolate/typed_message_test.dart
similarity index 100%
rename from tests/language/typed_message_test.dart
rename to tests/isolate/typed_message_test.dart
diff --git a/tests/language/deferred_call_empty_before_load_lib.dart b/tests/language/deferred_call_empty_before_load_lib.dart
new file mode 100644
index 0000000..32dd376
--- /dev/null
+++ b/tests/language/deferred_call_empty_before_load_lib.dart
@@ -0,0 +1,5 @@
+// Copyright (c) 2015, 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.
+
+thefun() {}
diff --git a/tests/language/deferred_call_empty_before_load_test.dart b/tests/language/deferred_call_empty_before_load_test.dart
new file mode 100644
index 0000000..c241c6a9
--- /dev/null
+++ b/tests/language/deferred_call_empty_before_load_test.dart
@@ -0,0 +1,13 @@
+// Copyright (c) 2015, 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.
+
+// Test that calling a function, even though it itself has no effect, will
+// trigger an error if the corresponding deferred library has not been loaded.
+
+import "package:expect/expect.dart";
+import "deferred_call_empty_before_load_lib.dart" deferred as lib1;
+
+main() {
+ Expect.throws(() => lib1.thefun());
+}
diff --git a/tests/language/deferred_inheritance_constraints_test.dart b/tests/language/deferred_inheritance_constraints_test.dart
index 8fb023c..ff009e6 100644
--- a/tests/language/deferred_inheritance_constraints_test.dart
+++ b/tests/language/deferred_inheritance_constraints_test.dart
@@ -22,7 +22,7 @@
class D {
D() ;
factory D.factory() =
- lib. /// redirecting_constructor: static type warning, runtime error
+ lib. /// redirecting_constructor: static type warning
Foo2;
}
@@ -30,5 +30,7 @@
new A();
new B();
new C();
- new D.factory();
+ Expect.throws(() { /// redirecting_constructor: continued
+ new D.factory();
+ }); /// redirecting_constructor: continued
}
\ No newline at end of file
diff --git a/tests/language/deferred_redirecting_factory_lib1.dart b/tests/language/deferred_redirecting_factory_lib1.dart
new file mode 100644
index 0000000..e9100fb
--- /dev/null
+++ b/tests/language/deferred_redirecting_factory_lib1.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2015, 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.
+
+library lib1;
+
+import "deferred_redirecting_factory_lib2.dart" deferred as lib2;
+import "deferred_redirecting_factory_test.dart" as main;
+
+loadLib2() {
+ return lib2.loadLibrary();
+}
+
+class C extends main.C {
+ String get foo => "lib1";
+ C();
+ factory C.a() = lib2.C;
+}
\ No newline at end of file
diff --git a/tests/language/deferred_redirecting_factory_lib2.dart b/tests/language/deferred_redirecting_factory_lib2.dart
new file mode 100644
index 0000000..62cbf14
--- /dev/null
+++ b/tests/language/deferred_redirecting_factory_lib2.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2015, 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.
+
+library lib2;
+
+import "deferred_redirecting_factory_lib1.dart" as lib1;
+
+class C extends lib1.C {
+ String get foo => "lib2";
+}
\ No newline at end of file
diff --git a/tests/language/deferred_redirecting_factory_test.dart b/tests/language/deferred_redirecting_factory_test.dart
new file mode 100644
index 0000000..e5f4e5d
--- /dev/null
+++ b/tests/language/deferred_redirecting_factory_test.dart
@@ -0,0 +1,51 @@
+// Copyright (c) 2015, 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.
+library main;
+
+import "deferred_redirecting_factory_lib1.dart" deferred as lib1;
+import "package:expect/expect.dart";
+import "package:async_helper/async_helper.dart";
+
+class C {
+ String get foo => "main";
+ C();
+ factory C.a() = lib1.C;
+ factory C.b() = lib1.C.a;
+}
+
+test1() async {
+ Expect.throws(() {
+ new C.a();
+ });
+ Expect.throws(() {
+ new C.b();
+ });
+}
+
+test2() async {
+ await lib1.loadLibrary();
+ Expect.equals("lib1", new C.a().foo);
+ Expect.throws(() {
+ new C.b();
+ });
+}
+
+test3() async {
+ await lib1.loadLibrary();
+ await lib1.loadLib2();
+ Expect.equals("lib1", new C.a().foo);
+ Expect.equals("lib2", new C.b().foo);
+}
+
+
+test() async {
+ await test1();
+ await test2();
+ await test3();
+}
+
+void main() {
+ asyncStart();
+ test().then((_) => asyncEnd());
+}
\ No newline at end of file
diff --git a/tests/language/language.status b/tests/language/language.status
index 1b36eea..bc11d57 100644
--- a/tests/language/language.status
+++ b/tests/language/language.status
@@ -28,27 +28,8 @@
conditional_property_access_test: Fail
conditional_method_invocation_test: Fail
-[ $compiler == dart2dart ]
-deferred_load_library_wrong_args_test/none: Fail # Issue 17523
-deferred_load_inval_code_test: Fail # Issue 17523
-deferred_not_loaded_check_test: Fail # Issue 17523
-deferred_constraints_type_annotation_test/*: Fail, Pass # Issue 17523
-deferred_constraints_constants_test/*: Fail, Pass # Issue 17523
-deferred_shadow_load_library_test: Fail # Issue 17523
-deferred_closurize_load_library_test: Fail # Issue 17523
-deferred_inlined_test: Fail # Issue 17523
-deferred_optimized_test: Fail # Issue 17523
-regress_22443_test: Fail # Issue 17523
-enum_mirror_test: Skip # Issue 11511.
-getter_setter_in_lib_test: Fail # Issue 23288
-
-override_inheritance_mixed_test/08: Fail # Issue 18124
-override_inheritance_mixed_test/09: Fail # Issue 18124
-
-[ $compiler == dart2dart ]
-multiline_strings_test: Fail # Issue (pending)
-
-[ $compiler == none || $compiler == dart2dart ]
+deferred_redirecting_factory_test: Fail # Issue 23408
+[ $compiler == none ]
# Non-contractive types are not supported in the vm.
cyclic_type_test/02: Fail, OK
cyclic_type_test/04: Fail, OK
@@ -90,7 +71,6 @@
[ $compiler == none && ( $runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
issue13474_test: Pass, Fail # Issue 14651.
-typed_message_test: Crash, Fail # Issue 13921, 14400
vm/optimized_guarded_field_isolates_test: Fail # Issue 13921.
main_test/01: Fail # Issue 20028
main_test/02: Fail # Issue 20028
diff --git a/tests/language/language_dart2js.status b/tests/language/language_dart2js.status
index be1c3a2..0e736bf 100644
--- a/tests/language/language_dart2js.status
+++ b/tests/language/language_dart2js.status
@@ -18,7 +18,7 @@
await_for_test: Skip # Jsshell does not provide periodic timers, Issue 7728
async_star_test: RuntimeError # Jsshell does not provide non-zero timers, Issue 7728
-[ $compiler == dart2js || $compiler == dart2dart ]
+[ $compiler == dart2js ]
symbol_literal_test/*: Fail # Issue 21825
constructor_duplicate_final_test/01: Fail # Issue 13363
constructor_duplicate_final_test/02: Fail # Issue 13363
@@ -93,7 +93,7 @@
malbounded_type_test2_test: Fail # Issue 14121
default_factory2_test/01: Fail # Issue 14121
-[ ($compiler == dart2js || $compiler == dart2dart) && $checked ]
+[ $compiler == dart2js && $checked ]
compile_time_constant_checked5_test/06: Fail # Issue 23182
compile_time_constant_checked5_test/07: Fail # Issue 23182
compile_time_constant_checked5_test/10: Fail # Issue 23182
@@ -120,7 +120,6 @@
positional_parameters_type_test/01: MissingRuntimeError, OK
positional_parameters_type_test/02: MissingRuntimeError, OK
issue13474_test: RuntimeError, OK
-generic_field_mixin3_test: Crash # Issue 18651
[ $compiler == dart2js && $unchecked && $minified ]
f_bounded_quantification5_test: Fail, OK # Issue 12605
@@ -175,8 +174,6 @@
const_switch_test/02: RuntimeError # Issue 17960
const_switch_test/04: RuntimeError # Issue 17960
-enum_const_test/02: RuntimeError # Issue 21817
-
const_dynamic_type_literal_test/02: CompileTimeError # Issue 23009
const_dynamic_type_literal_test/03: CompileTimeError # Issue 23009
@@ -217,84 +214,6 @@
[ $compiler == dart2js && $runtime == chromeOnAndroid ]
override_field_test/02: Pass, Slow # TODO(kasperl): Please triage.
-[ $compiler == dart2dart && $builder_tag == new_backend ]
-regress_13494_test: Pass # Issue 22370, passes for the wrong reason
-
-[ $compiler == dart2dart && $minified == true ]
-type_variable_conflict2_test/01: RuntimeError # Issue 16180
-
-[ $compiler == dart2dart ]
-sync_generator2_test/07: MissingCompileTimeError # Issue 22324
-sync_generator2_test/08: MissingCompileTimeError # Issue 22324
-sync_generator2_test/10: MissingCompileTimeError # Issue 22324
-
-regress_13494_test: Fail # Issue 22370
-
-enum_duplicate_test/01: CompileTimeError # Issue 22169
-
-built_in_identifier_prefix_test: Fail # Issue 6972
-constructor_initializer_test/none: Fail # Issue 12633
-
-# Mixins fail on the VM.
-mixin_with_two_implicit_constructors_test: Fail # Issue 11889
-
-# Calling unresolved class constructor:
-call_nonexistent_constructor_test/01: Fail # Issue 13082
-call_nonexistent_constructor_test/02: Fail # Issue 13082
-private_access_test/05: Fail # Issue 13082
-private_access_test/06: Fail # Issue 13082
-
-bad_override_test/01: Fail # Issue 11496
-bad_override_test/02: Fail # Issue 11496
-
-constructor_named_arguments_test/01: Fail # Issue 5519
-not_enough_positional_arguments_test/01: Fail # Issue 12839
-not_enough_positional_arguments_test/02: Fail # Issue 12839
-not_enough_positional_arguments_test/05: Fail # Issue 12839
-
-metadata_test: Fail # Issue 12762
-const_evaluation_test/01: Fail # Issue 12762
-built_in_identifier_test/01: Fail # Issue 13022
-method_override4_test: Fail # Issue 12810
-method_override5_test: Fail # Issue 12810
-scope_variable_test/01: Fail # Issue 13016
-factory_redirection_test/01: Fail # Issue 12753
-
-# DartVM problem.
-constructor5_test: Fail
-constructor6_test: Fail
-closure_in_initializer_test: Fail
-
-new_expression_type_args_test/00: Fail # Wrongly reports compile-time error.
-new_expression_type_args_test/01: Fail # Wrongly reports compile-time error.
-
-deferred*: skip # Issue 17523
-cha_deopt1_test: skip # Issue 17523
-cha_deopt2_test: skip # Issue 17523
-cha_deopt3_test: skip # Issue 17523
-issue_1751477_test: skip # Issue 17523
-
-external_test/21: MissingCompileTimeError # Issue 12888
-external_test/24: MissingCompileTimeError # Issue 12888
-
-function_propagation_test: RuntimeError # Issue 21673
-function_subtype_call0_test: RuntimeError # Issue 21673
-function_subtype_call1_test: RuntimeError # Issue 21673
-function_subtype_call2_test: RuntimeError # Issue 21673
-
-instance_creation_in_function_annotation_test: Fail # Issue 23363
-
-[ $compiler == dart2dart && $minified ]
-cyclic_type_test/0*: Fail # Issue 12605.
-cyclic_type2_test: Fail # Issue 12605.
-super_getter_setter_test: Fail # Issue 11065.
-f_bounded_quantification4_test: Fail # Issue 12605.
-f_bounded_quantification5_test: Fail # Issue 12605.
-type_variable_typedef_test: Fail # Issue 11467
-
-invocation_mirror_test: Fail, OK # Issue 12706 (hardcoded names).
-super_call4_test: Fail, OK # hardcoded names.
-
[ $minified ]
stack_trace_test: Fail, OK # Stack trace not preserved in minified code.
regress_21795_test: RuntimeError # Issue 12605
@@ -309,58 +228,35 @@
[ $compiler == dart2js && $cps_ir ]
aborting_switch_case_test: Crash # (switch (42){case 42:foo();foo();break;}): Unhandled node
-abstract_exact_selector_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-abstract_exact_selector_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-abstract_getter_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-abstract_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-abstract_object_method_test: Crash # (throw new ExpectException(message)): Unhandled node
-abstract_runtime_error_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-abstract_runtime_error_test/02: Crash # (throw new ExpectException(message)): Unhandled node
-abstract_runtime_error_test/03: Crash # (throw new ExpectException(message)): Unhandled node
-abstract_runtime_error_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-abstract_syntax_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-abstract_syntax_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-abstract_syntax_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-ackermann_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-adjacent_const_string_literals_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-adjacent_string_literals_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-allocate_large_object_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-allocate_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-allocation_sinking_inlining_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-and_operation_on_non_integer_operand_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-application_negative_test: Crash # (Expect): Error expression `Expect` unhandled.
-argument_definition_test/01: Crash # (test(1,b:2,c:3)): Error expression `test(1,b:2,c:3)` unhandled.
-argument_definition_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-arithmetic2_test: Crash # (throw new ExpectException(message)): Unhandled node
-arithmetic_canonicalization_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-arithmetic_smi_overflow_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-arithmetic_test: Crash # (throw new ExpectException(message)): Unhandled node
-assertion_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-assign_op_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-assign_top_method_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-assign_to_type_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-assign_to_type_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-assign_to_type_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-assign_to_type_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async_and_or_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_await_catch_regression_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+abstract_exact_selector_test/01: Crash # unsupported element kind: a:field
+abstract_exact_selector_test/none: Crash # unsupported element kind: a:field
+abstract_getter_test/01: Crash # (noMethod): handleStaticFunctionGet: function(noMethod)
+abstract_object_method_test: Crash # unsupported element kind: a:field
+abstract_runtime_error_test/01: Crash # (interface): handleStaticFunctionGet: function(interface)
+abstract_runtime_error_test/02: Crash # (abstractClass): handleStaticFunctionGet: function(abstractClass)
+arithmetic2_test: Crash # (A.foo): handleStaticFunctionGet: function(A#foo)
+arithmetic_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+assign_to_type_test/01: Crash # (noMethod): handleStaticFunctionGet: function(noMethod)
+assign_to_type_test/02: Crash # (noMethod): handleStaticFunctionGet: function(noMethod)
+assign_to_type_test/03: Crash # (noMethod): handleStaticFunctionGet: function(noMethod)
+assign_to_type_test/04: Crash # (noMethod): handleStaticFunctionGet: function(noMethod)
+assign_top_method_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+async_and_or_test: Crash # (test()async{await test1();await test2();}): cannot handle async/sync*/async* functions
+async_await_catch_regression_test: Crash # cannot handle async/sync*/async* functions
async_await_syntax_test/a01a: Crash # (a01a()async=>null;): cannot handle async/sync*/async* functions
async_await_syntax_test/a02a: Crash # (a02a()async{}): cannot handle async/sync*/async* functions
async_await_syntax_test/a03a: Crash # (a03a()async*{}): cannot handle async/sync*/async* functions
async_await_syntax_test/a03b: Crash # (a03b()async*{}): cannot handle async/sync*/async* functions
async_await_syntax_test/a04a: Crash # (a04a()sync*{}): cannot handle async/sync*/async* functions
-async_await_syntax_test/a04b: Crash # (a04b()): Error expression `a04b()` unhandled.
async_await_syntax_test/a04c: Crash # (a04c()sync*{}): cannot handle async/sync*/async* functions
async_await_syntax_test/a05a: Crash # (a05a()async{await 0;}): cannot handle async/sync*/async* functions
async_await_syntax_test/a05b: Crash # (a05b()async{await (a){};await (0);}): cannot handle async/sync*/async* functions
async_await_syntax_test/a06a: Crash # (a06a()async{await for(var o in st){}}): cannot handle async/sync*/async* functions
async_await_syntax_test/a07a: Crash # (a07a()sync*{yield 0;}): cannot handle async/sync*/async* functions
-async_await_syntax_test/a07b: Crash # (a07b()): Error expression `a07b()` unhandled.
async_await_syntax_test/a08a: Crash # (a08a()sync*{yield* [] ;}): cannot handle async/sync*/async* functions
-async_await_syntax_test/a08b: Crash # (a08b()): Error expression `a08b()` unhandled.
async_await_syntax_test/a09a: Crash # (a09a()async*{yield 0;}): cannot handle async/sync*/async* functions
async_await_syntax_test/a10a: Crash # (a10a()async*{yield* [] ;}): cannot handle async/sync*/async* functions
-async_await_syntax_test/a11a: Crash # (sync): Error expression `sync` unhandled.
+async_await_syntax_test/a11a: Crash # Please triage this failure.
async_await_syntax_test/a11b: Crash # (get sync sync*{}): cannot handle async/sync*/async* functions
async_await_syntax_test/a11c: Crash # (get async async{}): cannot handle async/sync*/async* functions
async_await_syntax_test/a11d: Crash # (get async async*{}): cannot handle async/sync*/async* functions
@@ -403,39 +299,34 @@
async_await_test/02: Crash # (f()async{return id(42);}): cannot handle async/sync*/async* functions
async_await_test/03: Crash # (f()async{return id(42);}): cannot handle async/sync*/async* functions
async_await_test/none: Crash # (f()async{return id(42);}): cannot handle async/sync*/async* functions
-async_break_in_finally_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_continue_label_test/await_in_body: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_continue_label_test/await_in_condition: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_continue_label_test/await_in_init: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_continue_label_test/await_in_update: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_continue_label_test/none: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_control_structures_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+async_break_in_finally_test: Crash # cannot handle async/sync*/async* functions
+async_continue_label_test/await_in_body: Crash # cannot handle async/sync*/async* functions
+async_continue_label_test/await_in_condition: Crash # cannot handle async/sync*/async* functions
+async_continue_label_test/await_in_init: Crash # cannot handle async/sync*/async* functions
+async_continue_label_test/await_in_update: Crash # cannot handle async/sync*/async* functions
+async_continue_label_test/none: Crash # cannot handle async/sync*/async* functions
+async_control_structures_test: Crash # Instance of 'TypeOperator': type check unimplemented for Future.
async_finally_rethrow_test: Crash # cannot handle async/sync*/async* functions
-async_or_generator_return_type_stacktrace_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async_or_generator_return_type_stacktrace_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async_or_generator_return_type_stacktrace_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async_or_generator_return_type_stacktrace_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async_regression_23058_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+async_or_generator_return_type_stacktrace_test/01: Crash # (void badReturnTypeAsync()async{}): cannot handle async/sync*/async* functions
+async_or_generator_return_type_stacktrace_test/02: Crash # (void badReturnTypeAsyncStar()async*{}): cannot handle async/sync*/async* functions
+async_or_generator_return_type_stacktrace_test/03: Crash # (void badReturnTypeSyncStar()sync*{}): cannot handle async/sync*/async* functions
+async_regression_23058_test: Crash # (foo()async{return x.foo==2?42:x.foo;}): cannot handle async/sync*/async* functions
async_rethrow_test: Crash # cannot handle async/sync*/async* functions
-async_return_types_test/nestedFuture: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_return_types_test/none: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_return_types_test/tooManyTypeParameters: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_return_types_test/wrongReturnType: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_return_types_test/wrongTypeParameter: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_star_cancel_and_throw_in_finally_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-asyncstar_concat_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_star_regression_23116_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+async_return_types_test/nestedFuture: Crash # (test): handleStaticFunctionGet: function(test)
+async_return_types_test/none: Crash # (test): handleStaticFunctionGet: function(test)
+async_return_types_test/tooManyTypeParameters: Crash # (test): handleStaticFunctionGet: function(test)
+async_return_types_test/wrongReturnType: Crash # (test): handleStaticFunctionGet: function(test)
+async_return_types_test/wrongTypeParameter: Crash # (test): handleStaticFunctionGet: function(test)
+async_star_cancel_and_throw_in_finally_test: Crash # cannot handle async/sync*/async* functions
+async_star_regression_23116_test: Crash # cannot handle async/sync*/async* functions
async_star_test/01: Crash # (f()async*{}): cannot handle async/sync*/async* functions
async_star_test/02: Crash # (f()async*{}): cannot handle async/sync*/async* functions
async_star_test/03: Crash # (f()async*{}): cannot handle async/sync*/async* functions
async_star_test/04: Crash # (f()async*{}): cannot handle async/sync*/async* functions
async_star_test/05: Crash # (f()async*{}): cannot handle async/sync*/async* functions
async_star_test/none: Crash # (f()async*{}): cannot handle async/sync*/async* functions
-asyncstar_throw_in_catch_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-asyncstar_yieldstar_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-asyncstar_yield_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_switch_test/none: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_switch_test/withDefault: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+async_switch_test/none: Crash # cannot handle async/sync*/async* functions
+async_switch_test/withDefault: Crash # cannot handle async/sync*/async* functions
async_test/constructor2: Crash # (bar(int p1,p2)async{var z=8;return p2+z+foo;}): cannot handle async/sync*/async* functions
async_test/constructor3: Crash # (bar(int p1,p2)async{var z=8;return p2+z+foo;}): cannot handle async/sync*/async* functions
async_test/constructor4: Crash # (bar(int p1,p2)async{var z=8;return p2+z+foo;}): cannot handle async/sync*/async* functions
@@ -445,592 +336,284 @@
async_test/type-mismatch2: Crash # (bar(int p1,p2)async{var z=8;return p2+z+foo;}): cannot handle async/sync*/async* functions
async_test/type-mismatch3: Crash # (bar(int p1,p2)async{var z=8;return p2+z+foo;}): cannot handle async/sync*/async* functions
async_test/type-mismatch4: Crash # (bar(int p1,p2)async{var z=8;return p2+z+foo;}): cannot handle async/sync*/async* functions
-async_this_bound_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_throw_in_catch_test/forceAwait: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async_throw_in_catch_test/none: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-await_backwards_compatibility_test/await1: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-await_backwards_compatibility_test/await2: Crash # (test1()): Error expression `test1()` unhandled.
-await_backwards_compatibility_test/await3: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-await_backwards_compatibility_test/await4: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-await_backwards_compatibility_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-await_exceptions_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-await_for_cancel_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-await_for_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-await_for_use_local_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-await_future_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+async_this_bound_test: Crash # (test()async{await testA();await testB();}): cannot handle async/sync*/async* functions
+async_throw_in_catch_test/forceAwait: Crash # (test): handleStaticFunctionGet: function(test)
+async_throw_in_catch_test/none: Crash # (test): handleStaticFunctionGet: function(test)
+asyncstar_concat_test: Crash # cannot handle async/sync*/async* functions
+asyncstar_throw_in_catch_test: Crash # (test): handleStaticFunctionGet: function(test)
+asyncstar_yield_test: Crash # cannot handle async/sync*/async* functions
+asyncstar_yieldstar_test: Crash # cannot handle async/sync*/async* functions
+await_backwards_compatibility_test/await1: Crash # (test1()async{var x=await 9;Expect.equals(9,x);}): cannot handle async/sync*/async* functions
+await_backwards_compatibility_test/await2: Crash # (test0()async{var x=await 7;Expect.equals(7,x);}): cannot handle async/sync*/async* functions
+await_backwards_compatibility_test/await3: Crash # (test1()async{var x=await 9;Expect.equals(9,x);}): cannot handle async/sync*/async* functions
+await_backwards_compatibility_test/await4: Crash # (test1()async{var x=await 9;Expect.equals(9,x);}): cannot handle async/sync*/async* functions
+await_backwards_compatibility_test/none: Crash # (test1()async{var x=await 9;Expect.equals(9,x);}): cannot handle async/sync*/async* functions
+await_exceptions_test: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+await_for_cancel_test: Crash # (test()async{await test1();await test2();}): cannot handle async/sync*/async* functions
+await_for_test: Crash # unsupported element kind: t4:field
+await_for_use_local_test: Crash # cannot handle async/sync*/async* functions
+await_future_test: Crash # cannot handle async/sync*/async* functions
await_nonfuture_test: Crash # (foo()async{Expect.equals(X,10);return await 5;}): cannot handle async/sync*/async* functions
-await_not_started_immediately_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-await_postfix_expr_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+await_not_started_immediately_test: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+await_postfix_expr_test: Crash # cannot handle async/sync*/async* functions
await_regression_test: Crash # cannot handle async/sync*/async* functions
await_test: Crash # cannot handle async/sync*/async* functions
-bad_constructor_test/06: Crash # (new A()): Error expression `new A()` unhandled.
-bad_named_constructor_negative_test: Crash # Error expression `BadNamedConstructorNegativeTest.testMain()` unhandled.
-bad_named_parameters2_test/01: Crash # (try {caught=false;np.foo(b:25);}on NoSuchMethodError catch (e){caught=true;}): "on T" catch block
-bad_named_parameters2_test/none: Crash # (try {caught=false;}on NoSuchMethodError catch (e){caught=true;}): "on T" catch block
-bad_named_parameters_test/01: Crash # "on T" catch block
-bad_named_parameters_test/02: Crash # (try {caught=false;}on NoSuchMethodError catch (e){caught=true;}): "on T" catch block
-bad_named_parameters_test/03: Crash # (try {caught=false;}on NoSuchMethodError catch (e){caught=true;}): "on T" catch block
-bad_named_parameters_test/04: Crash # (try {caught=false;}on NoSuchMethodError catch (e){caught=true;}): "on T" catch block
-bad_named_parameters_test/05: Crash # (try {caught=false;}on NoSuchMethodError catch (e){caught=true;}): "on T" catch block
-bad_named_parameters_test/none: Crash # (try {caught=false;}on NoSuchMethodError catch (e){caught=true;}): "on T" catch block
-bailout2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bailout3_test: Crash # (throw 0): Unhandled node
-bailout4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bailout5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bailout6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bailout7_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bailout_container_type_test: Crash # (throw 'Test failed'): Unhandled node
-bailout_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bind_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bit_operations_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-bit_operations_test/02: Crash # (throw new ExpectException(message)): Unhandled node
-bit_operations_test/03: Crash # (throw new ExpectException(message)): Unhandled node
-bit_operations_test/04: Crash # (throw new ExpectException(message)): Unhandled node
-bit_operations_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-bit_shift_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bool_check_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bool_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bound_closure_equality_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-bound_closure_primitives_test: Crash # (throw new ExpectException(message)): Unhandled node
-branch_canonicalization_test: Crash # (throw new ExpectException(message)): Unhandled node
-branches_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-break_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-built_in_identifier_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_argument_inference_test: Crash # (throw new ExpectException(message)): Unhandled node
-call_closurization_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_constructor_on_unresolvable_class_test/01: Crash # (new A()): Error expression `new A()` unhandled.
-call_constructor_on_unresolvable_class_test/02: Crash # (new A.foo()): Error expression `new A.foo()` unhandled.
-call_constructor_on_unresolvable_class_test/03: Crash # (new lib.A()): Error expression `new lib.A()` unhandled.
-call_constructor_on_unresolvable_class_test/04: Crash # (new A()): Error expression `new A()` unhandled.
-call_constructor_on_unresolvable_class_test/05: Crash # (new A.foo()): Error expression `new A.foo()` unhandled.
-call_constructor_on_unresolvable_class_test/06: Crash # (new lib.A()): Error expression `new lib.A()` unhandled.
-call_constructor_on_unresolvable_class_test/07: Crash # (new A()): Error expression `new A()` unhandled.
-call_nonexistent_constructor_test/01: Crash # "on T" catch block
-call_nonexistent_constructor_test/02: Crash # (try {}on NoSuchMethodError catch (e){i=-1;}on String catch (e){i=1;}): "on T" catch block
-call_nonexistent_constructor_test/none: Crash # (try {}on NoSuchMethodError catch (e){i=-1;}on String catch (e){i=1;}): "on T" catch block
-call_nonexistent_static_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_nonexistent_static_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_nonexistent_static_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_nonexistent_static_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_nonexistent_static_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_nonexistent_static_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_nonexistent_static_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_nonexistent_static_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_nonexistent_static_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_nonexistent_static_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_nonexistent_static_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_operator_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_property_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_this_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_through_getter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_through_null_getter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_type_literal_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-call_with_no_such_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-canonical_const2_test: Crash # (throw new ExpectException(message)): Unhandled node
-canonical_const3_test: Crash # (throw new ExpectException(message)): Unhandled node
-canonical_const_test: Crash # Please triage this failure.
-cascade_2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cascade2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cascade_in_expression_function_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cascade_in_initializer_list_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cascade_precedence_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cascade_test/none: Crash # cannot compile methods that need interceptor calling convention.
-cast2_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast2_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/15: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cast_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-catch_liveness_test: Crash # Please triage this failure.
-cha_deopt1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cha_deopt2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cha_deopt3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-char_escape_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-checked_null_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-checked_setter2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-checked_setter3_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-checked_setter3_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-checked_setter3_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-checked_setter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_codegen_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_cycle_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_cycle_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_cycle_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_cycle_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_cycle_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/15: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/16: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/17: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/18: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/19: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/20: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/21: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/22: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/23: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/24: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/25: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_literal_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-class_override_test/00: Crash # (try {instance.foo();}on NoSuchMethodError catch (error){}finally {}): "on T" catch block
-class_override_test/none: Crash # (try {instance.foo();}finally {}): not exactly one catch block
-class_syntax2_test: Crash # (throw new ExpectException(message)): Unhandled node
-class_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure7_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure8_test: Crash # cannot compile methods that need interceptor calling convention.
-closure_break1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_break2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_break_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_in_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_in_field_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_in_initializer2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_in_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_internals_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_parameter_types_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_self_reference_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_shared_state_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_side_effect_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closures_initializer2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closures_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closures_with_complex_params_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_type_test/01: Crash # "on T" catch block
-closure_type_test/none: Crash # "on T" catch block
-closure_type_variables_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_type_variable_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_variable_shadow_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_with_super_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-closure_with_super_send_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-code_after_try_is_executed_test/01: Crash # (try {throw 'foo';}on String catch (ex){exception=ex;}): "on T" catch block
-code_after_try_is_executed_test/none: Crash # (try {throw 'foo';}on String catch (ex){exception=ex;}): "on T" catch block
-comparison_test: Crash # (throw new ExpectException(message)): Unhandled node
-compile_time_constant10_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-compile_time_constant10_test/02: Crash # (throw new ExpectException(message)): Unhandled node
-compile_time_constant10_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-compile_time_constant11_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant6_test: Crash # (throw new ExpectException(message)): Unhandled node
-compile_time_constant7_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant8_test: Crash # (throw new ExpectException(message)): Unhandled node
-compile_time_constant9_test: Crash # (throw new ExpectException(message)): Unhandled node
-compile_time_constant_a_test: Crash # Please triage this failure.
-compile_time_constant_b_test: Crash # Please triage this failure.
-compile_time_constant_d_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant_e_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant_f_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant_g_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant_h_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant_i_test: Crash # (throw new ExpectException(message)): Unhandled node
-compile_time_constant_j_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant_k_test/01: Crash # Please triage this failure.
-compile_time_constant_k_test/02: Crash # Please triage this failure.
-compile_time_constant_k_test/03: Crash # Please triage this failure.
-compile_time_constant_k_test/none: Crash # Please triage this failure.
-compile_time_constant_l_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant_m_test: Crash # (throw new ExpectException(message)): Unhandled node
-compile_time_constant_n_test: Crash # (throw new ExpectException(message)): Unhandled node
-compile_time_constant_o_test/01: Crash # Please triage this failure.
-compile_time_constant_o_test/02: Crash # Please triage this failure.
-compile_time_constant_o_test/none: Crash # Please triage this failure.
-compile_time_constant_p_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant_p_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-compile_time_constant_test/01: Crash # unable to build cps definition of generative_constructor(Bad#)
-compound_assignment_operator_test: Crash # (throw new ExpectException(message)): Unhandled node
-cond_expr_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-condition_bailout_test: Crash # (throw new ExpectException(message)): Unhandled node
-constant_fold_equals_test: Crash # (throw new ExpectException(message)): Unhandled node
-constant_propagation_phis_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constant_string_interpolation_test: Crash # (throw new ExpectException(message)): Unhandled node
-const_conditional_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-const_conditional_test/02: Crash # (throw new ExpectException(message)): Unhandled node
-const_conditional_test/03: Crash # (throw new ExpectException(message)): Unhandled node
-const_conditional_test/04: Crash # (throw new ExpectException(message)): Unhandled node
-const_conditional_test/05: Crash # (throw new ExpectException(message)): Unhandled node
-const_conditional_test/06: Crash # (throw new ExpectException(message)): Unhandled node
-const_conditional_test/07: Crash # (throw new ExpectException(message)): Unhandled node
-const_conditional_test/08: Crash # (throw new ExpectException(message)): Unhandled node
-const_conditional_test/09: Crash # (throw new ExpectException(message)): Unhandled node
-const_conditional_test/10: Crash # (throw new ExpectException(message)): Unhandled node
-const_conditional_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-const_constructor_nonconst_field_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_constructor_nonconst_field_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_constructor_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_counter_negative_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_dynamic_type_literal_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-const_escape_frog_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_evaluation_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_evaluation_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_factory_redirection_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_global_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_init_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_list_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_locals_test: Crash # (throw new ExpectException(message)): Unhandled node
-const_local_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_map2_test/none: Crash # Please triage this failure.
-const_map3_test/none: Crash # Please triage this failure.
-const_map4_test: Crash # Please triage this failure.
-const_map_test: Crash # Please triage this failure.
-const_named_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+bailout4_test: Crash # unsupported element kind: a:field
+bailout5_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+bailout6_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+bailout7_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+bailout_container_type_test: Crash # unsupported element kind: a:field
+bailout_test: Crash # unsupported element kind: reachedAfoo:field
+bool_check_test: Crash # (ifNull): handleStaticFunctionGet: function(ifNull)
+call_closurization_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+call_nonexistent_static_test/01: Crash # (alwaysThrows): handleStaticFunctionGet: function(alwaysThrows)
+call_nonexistent_static_test/02: Crash # (alwaysThrows): handleStaticFunctionGet: function(alwaysThrows)
+call_nonexistent_static_test/03: Crash # (alwaysThrows): handleStaticFunctionGet: function(alwaysThrows)
+call_nonexistent_static_test/04: Crash # (alwaysThrows): handleStaticFunctionGet: function(alwaysThrows)
+call_nonexistent_static_test/05: Crash # (alwaysThrows): handleStaticFunctionGet: function(alwaysThrows)
+call_nonexistent_static_test/06: Crash # (alwaysThrows): handleStaticFunctionGet: function(alwaysThrows)
+call_nonexistent_static_test/07: Crash # (alwaysThrows): handleStaticFunctionGet: function(alwaysThrows)
+call_nonexistent_static_test/08: Crash # (alwaysThrows): handleStaticFunctionGet: function(alwaysThrows)
+call_nonexistent_static_test/09: Crash # (alwaysThrows): handleStaticFunctionGet: function(alwaysThrows)
+call_nonexistent_static_test/10: Crash # (alwaysThrows): handleStaticFunctionGet: function(alwaysThrows)
+call_nonexistent_static_test/none: Crash # (alwaysThrows): handleStaticFunctionGet: function(alwaysThrows)
+call_property_test: Crash # Instance of 'TypeOperator': type check unimplemented for F.
+call_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+call_through_null_getter_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+call_type_literal_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+cascade2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+cast2_test/01: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast2_test/none: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/01: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/02: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/03: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/04: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/05: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/07: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/08: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/10: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/12: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/13: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/14: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/15: Crash # Instance of 'TypeOperator': type casts not implemented.
+cast_test/none: Crash # Instance of 'TypeOperator': type casts not implemented.
+cha_deopt1_test: Crash # (d.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+cha_deopt2_test: Crash # (d.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+cha_deopt3_test: Crash # (d.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+checked_null_test/01: Crash # (bar): handleStaticFunctionGet: function(bar)
+checked_setter2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+checked_setter3_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+checked_setter3_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+checked_setter3_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+checked_setter_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/04: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/05: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/06: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/07: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/08: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/09: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/10: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/11: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/12: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/13: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/14: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/15: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/16: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/17: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/18: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/19: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/20: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/21: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/22: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/23: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/24: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_literal_test/25: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+class_override_test/00: Crash # (try {instance.foo();}on NoSuchMethodError catch (error){}finally {}): try/finally
+class_override_test/none: Crash # (try {instance.foo();}finally {}): try/finally
+closure3_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+closure_in_constructor_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+closure_internals_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+closure_self_reference_test: Crash # (try {return inner(value-1);}finally {counter++ ;}): try/finally
+closure_shared_state_test: Crash # (setupPlain): handleStaticFunctionGet: function(setupPlain)
+closure_side_effect_test: Crash # unsupported element kind: c:field
+closure_type_test/01: Crash # (root): handleStaticFunctionGet: function(root)
+closure_type_test/none: Crash # (root): handleStaticFunctionGet: function(root)
+closure_type_variables_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<int>.
+closures_initializer2_test: Crash # Please triage this failure.
+closures_initializer_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<int>.
+compile_time_constant10_test/01: Crash # (Expect.isTrue): handleStaticFunctionGet: function(Expect#isTrue)
+compile_time_constant10_test/02: Crash # (Expect.isTrue): handleStaticFunctionGet: function(Expect#isTrue)
+compile_time_constant10_test/none: Crash # (Expect.isTrue): handleStaticFunctionGet: function(Expect#isTrue)
+compile_time_constant_a_test: Crash # (isUnsupportedError): handleStaticFunctionGet: function(isUnsupportedError)
+compile_time_constant_b_test: Crash # (isUnsupportedError): handleStaticFunctionGet: function(isUnsupportedError)
+const_evaluation_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+const_evaluation_test/none: RuntimeError # Please triage this failure.
const_nested_test: Crash # Please triage this failure.
-const_objects_are_immutable_test/01: Crash # Please triage this failure.
-const_objects_are_immutable_test/none: Crash # Please triage this failure.
+const_objects_are_immutable_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+const_objects_are_immutable_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+const_switch2_test/none: Crash # (switch (a){case 1:print("OK");}): Unhandled node
+const_switch_test/01: Crash # Unhandled node
+const_switch_test/02: Crash # Unhandled node
+const_switch_test/03: Crash # Unhandled node
+const_switch_test/04: Crash # Unhandled node
+constant_propagation_phis_test: RuntimeError # Please triage this failure.
constructor10_test/01: Crash # Please triage this failure.
constructor10_test/02: Crash # Please triage this failure.
-constructor11_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor12_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+constructor11_test: Crash # Please triage this failure.
+constructor12_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<int>.
constructor3_negative_test: Crash # Please triage this failure.
-constructor3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor7_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor8_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_body_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+constructor5_test: Crash # Please triage this failure.
constructor_call_wrong_argument_count_negative_test: Crash # Please triage this failure.
-constructor_default_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_initializer_test/01: Crash # (new A(3)): Error expression `new A(3)` unhandled.
-constructor_initializer_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_name_clash_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_named_arguments_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_named_arguments_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_name_test/01: Crash # (new Foo.Foo()): Error expression `new Foo.Foo()` unhandled.
-constructor_name_test/02: Crash # (new Foo()): Error expression `new Foo()` unhandled.
-constructor_name_test/03: Crash # (new Foo()): Error expression `new Foo()` unhandled.
-constructor_redirect_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_redirect_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_return_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_return_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_return_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_return_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_return_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_return_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constructor_with_mixin_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_string_test: Crash # (throw new ExpectException(message)): Unhandled node
-const_switch2_test/none: Crash # (switch (a){case 1:print("OK");}): Unhandled node
-const_switch_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_switch_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_switch_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_switch_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_syntax_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_syntax_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_syntax_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_syntax_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_syntax_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_syntax_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_syntax_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_syntax_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_syntax_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-const_types_test/23: Crash # (new Superclass()): Error expression `new Superclass()` unhandled.
-const_types_test/24: Crash # (new Superclass()): Error expression `new Superclass()` unhandled.
-const_types_test/25: Crash # (new Superclass()): Error expression `new Superclass()` unhandled.
-const_types_test/26: Crash # (new Superclass()): Error expression `new Superclass()` unhandled.
-const_types_test/27: Crash # (new Superclass()): Error expression `new Superclass()` unhandled.
-const_types_test/28: Crash # (new Superclass()): Error expression `new Superclass()` unhandled.
-const_types_test/29: Crash # (new Superclass()): Error expression `new Superclass()` unhandled.
-const_types_test/30: Crash # (new Superclass()): Error expression `new Superclass()` unhandled.
-const_types_test/41: Crash # (new Superclass()): Error expression `new Superclass()` unhandled.
-context2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-context_args_with_defaults_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-context_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+constructor_initializer_test/01: Crash # Please triage this failure.
+constructor_with_mixin_test: Crash # Please triage this failure.
continue_test: Crash # (switch (0){case 0:i=22;continue;default:i=25;break;}): Unhandled node
-core_type_check_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-crash_12118_test: Crash # (throw 'Test failed'): Unhandled node
-crash_6725_test/01: Crash # (throw 'f.key != 42 (${f.key})'): Unhandled node
-create_unresolved_type_test/01: Crash # (new F<int>()): Error expression `new F<int>()` unhandled.
-critical_edge2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-critical_edge_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-ct_const3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-ct_const4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-ct_const_test: Crash # "on T" catch block
+core_type_check_test: Crash # Instance of 'TypeOperator': type check unimplemented for Comparable.
+crash_12118_test: Crash # Please triage this failure.
+crash_6725_test/01: Crash # Please triage this failure.
custom_await_stack_trace_test: Crash # cannot handle async/sync*/async* functions
-cyclic_import_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cyclic_type2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cyclic_type_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cyclic_type_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cyclic_type_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cyclic_type_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-cyclic_type_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-dangling_else_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-default_class_implicit_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-default_factory_library_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-default_factory_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-default_factory_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-default_implementation_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-default_init_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-deferred_closurize_load_library_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constant_list_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_constants_test/constructor1: Crash # (const lib.Const()): Error expression `const lib.Const()` unhandled.
-deferred_constraints_constants_test/constructor2: Crash # Error expression `const lib.Const.namedConstructor()` unhandled.
-deferred_constraints_constants_test/default_argument1: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_constants_test/default_argument2: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_constants_test/metadata1: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_constants_test/metadata2: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_constants_test/metadata3: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_constants_test/none: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_constants_test/reference1: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_constants_test/reference2: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_constants_test/reference_after_load: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/as_operation: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/catch_check: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/is_check: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/new_before_load: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/new: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/new: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/new_generic1: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/new_generic1: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/new_generic2: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/new_generic2: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/new_generic3: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/new_generic3: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/none: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/none: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/static_method: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/static_method: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/type_annotation1: Crash # handleStaticGetterInvoke: foreign: function(loadLibrary)
-deferred_constraints_type_annotation_test/type_annotation_generic1: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/type_annotation_generic1: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/type_annotation_generic2: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/type_annotation_generic2: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/type_annotation_generic3: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/type_annotation_generic3: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/type_annotation_generic4: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/type_annotation_generic4: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/type_annotation_non_deferred: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/type_annotation_non_deferred: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/type_annotation_null: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/type_annotation_null: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_constraints_type_annotation_test/type_annotation_top_level: CompileTimeError # Please triage this failure.
-deferred_constraints_type_annotation_test/type_annotation_top_level: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_function_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-deferred_global_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_inheritance_constraints_test/mixin: Crash # (new C()): Error expression `new C()` unhandled.
-deferred_inlined_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-deferred_load_constants_test/01: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_load_constants_test/02: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_load_constants_test/03: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_load_constants_test/04: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_load_constants_test/05: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_load_constants_test/none: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_load_inval_code_test: Crash # handleStaticGetterInvoke: foreign: function(loadLibrary)
-deferred_load_library_wrong_args_test/01: Crash # handleStaticGetterInvoke: foreign: function(loadLibrary)
-deferred_load_library_wrong_args_test/none: Crash # handleStaticGetterInvoke: foreign: function(loadLibrary)
-deferred_mixin_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_no_such_method_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_not_loaded_check_test: Crash # (throw new ExpectException(message)): Unhandled node
-deferred_only_constant_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-deferred_optimized_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-deferred_regression_22995_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-deferred_shadow_load_library_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-deferred_shared_and_unshared_classes_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deferred_static_seperate_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-deoptimized_function_on_stack_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-deopt_inlined_function_lazy_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-deopt_inlined_function_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-deopt_lazy_finalization_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-deopt_no_feedback_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-deopt_smi_op_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-div_by_zero_test: Crash # (throw new ExpectException(message)): Unhandled node
-div_with_power_of_two2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-div_with_power_of_two_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_int_addition_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_int_to_string_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_modulo_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_nan_comparison_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_to_string_as_exponential2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_to_string_as_exponential3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_to_string_as_exponential_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_to_string_as_fixed2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_to_string_as_fixed_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_to_string_as_precision2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_to_string_as_precision3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_to_string_as_precision_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_to_string_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-do_while2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-do_while3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-do_while4_test: Crash # (throw new ExpectException(message)): Unhandled node
-do_while_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-duplicate_implements_test/03: Crash # (new Z()): Error expression `new Z()` unhandled.
-duplicate_implements_test/04: Crash # (new Z()): Error expression `new Z()` unhandled.
-duplicate_interface_negative_test: Crash # (Expect): Error expression `Expect` unhandled.
-duplicate_interface_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-dynamic_call_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-dynamic_field_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-dynamic_field_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-dynamic_prefix_core_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-dynamic_prefix_core_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-dynamic_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-dynamic_type_literal_test: Crash # (throw new ExpectException(message)): Unhandled node
-emit_const_fields_test: Crash # Please triage this failure.
-empty_block_case_test: Crash # "on T" catch block
-enum_const_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-enum_const_test/02: Crash # (throw new ExpectException(message)): Unhandled node
-enum_duplicate_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-enum_duplicate_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-enum_duplicate_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-enum_index_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-enum_mirror_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-enum_private_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-enum_private_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-enum_private_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-enum_syntax_test/09: Crash # handleStaticFunctionGet: function(topLevelFunction)
-enum_syntax_test/10: Crash # (C.bla): Error expression `C.bla` unhandled.
-enum_test: Crash # Unhandled node
-equality_test: Crash # (throw new ExpectException(message)): Unhandled node
-error_stacktrace_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-evaluation_redirecting_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-example_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-exception_identity_test: Crash # (throw exception): Unhandled node
-exception_test: Crash # (try {throw "Hello";}on String catch (s){print(s);i+= 10;}): "on T" catch block
-execute_finally10_test: Crash # (throw 'Expected exception'): Unhandled node
-execute_finally11_test: Crash # (throw 'Expected exception'): Unhandled node
-execute_finally12_test: Crash # (throw new ExpectException(message)): Unhandled node
-execute_finally1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-execute_finally2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-execute_finally3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-execute_finally4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-execute_finally5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-execute_finally6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-execute_finally7_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-execute_finally8_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-execute_finally9_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-exhaustive_for_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-expect_test: Crash # (try {Expect.fail("fail now");}on Exception catch (msg){print(msg);return;}): "on T" catch block
-extends_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-extend_type_parameter2_negative_test: Crash # (new A()): Error expression `new A()` unhandled.
-external_test/16: Crash # (new Foo()): Error expression `new Foo()` unhandled.
-factory3_test: Crash # (throw "0 is not a T"): Unhandled node
-factory_arrow_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_implementation_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_implementation_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection2_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection2_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection3_cyclic_test/01: Crash # (new A.foo()): Error expression `new A.foo()` unhandled.
-factory_redirection_test/01: Crash # (new A<List>.test01()): Error expression `new A<List>.test01()` unhandled.
-factory_redirection_test/02: Crash # (new A<List>.test02()): Error expression `new A<List>.test02()` unhandled.
-factory_redirection_test/03: Crash # (new A<List>.test03()): Error expression `new A<List>.test03()` unhandled.
-factory_redirection_test/04: Crash # (new C.test04()): Error expression `new C.test04()` unhandled.
-factory_redirection_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection_test/11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection_test/12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection_test/13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection_test/14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_redirection_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_return_type_checked_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_type_parameter2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-factory_type_parameter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fannkuch_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fast_method_extraction_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fauxverride_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-f_bounded_equality_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-f_bounded_quantification4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-f_bounded_quantification5_test: Crash # "on T" catch block
-f_bounded_quantification_test/01: Crash # "on T" catch block
-f_bounded_quantification_test/02: Crash # (try {}on TypeError catch (error){got_type_error=true;}): "on T" catch block
-f_bounded_quantification_test/none: Crash # (try {}on TypeError catch (error){got_type_error=true;}): "on T" catch block
-fibo_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field3a_negative_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field3_negative_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_increment_bailout_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_inference_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_initialization_order_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_optimization2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_optimization3_test: Crash # (throw new ExpectException(message)): Unhandled node
-field_optimization_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_override2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_override3_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_override4_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_override4_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_override4_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_override4_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_override_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_override_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_override_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_parameter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-final_field_initialization_order_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-final_for_in_variable_test/01: Crash # (i=4): Error expression `i=4` unhandled.
-final_is_not_const_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-final_is_not_const_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-finally_test: Crash # (try {i=12;}finally {Expect.equals(12,i);executedFinally=true;}): not exactly one catch block
-final_param_test/01: Crash # (x=2): Error expression `x=2` unhandled.
-final_syntax_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-final_syntax_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-final_syntax_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-final_syntax_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-final_syntax_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-final_syntax_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-final_used_in_try_test: Crash # (rethrow;): Unhandled node
-final_variable_assignment_test/01: Crash # (x=0): Error expression `x=0` unhandled.
-final_variable_assignment_test/02: Crash # (x+= 1): Error expression `x+= 1` unhandled.
-final_variable_assignment_test/03: Crash # ( ++x): Error expression ` ++x` unhandled.
-final_variable_assignment_test/04: Crash # (x++ ): Error expression `x++ ` unhandled.
-first_class_types_constants_test: Crash # (throw new ExpectException(message)): Unhandled node
-first_class_types_libraries_test: Crash # (throw new ExpectException(message)): Unhandled node
-first_class_types_literals_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_literals_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_literals_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_literals_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_literals_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_literals_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_literals_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_literals_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_literals_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_literals_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_literals_test/11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_literals_test/12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_literals_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-first_class_types_test: Crash # (throw new ExpectException(message)): Unhandled node
-fixed_length_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fixed_type_variable2_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fixed_type_variable2_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fixed_type_variable2_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fixed_type_variable2_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fixed_type_variable2_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fixed_type_variable2_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fixed_type_variable_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fixed_type_variable_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fixed_type_variable_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fixed_type_variable_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fixed_type_variable_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-fixed_type_variable_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+cyclic_type2_test: Crash # Instance of 'TypeOperator': type check unimplemented for Derived1<Derived1, Derived2>.
+cyclic_type_test/00: RuntimeError # Please triage this failure.
+cyclic_type_test/01: RuntimeError # Please triage this failure.
+cyclic_type_test/02: RuntimeError # Please triage this failure.
+cyclic_type_test/03: RuntimeError # Please triage this failure.
+cyclic_type_test/04: RuntimeError # Please triage this failure.
+deferred_call_empty_before_load_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+deferred_closurize_load_library_test: RuntimeError # Please triage this failure.
+deferred_constant_list_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_constants_test/constructor1: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_constants_test/constructor2: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_constants_test/default_argument1: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_constants_test/default_argument2: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_constants_test/metadata1: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_constants_test/metadata2: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_constants_test/metadata3: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_constants_test/none: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_constants_test/reference1: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_constants_test/reference2: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_constants_test/reference_after_load: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/as_operation: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/catch_check: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/is_check: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/new: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/new_before_load: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/new_generic1: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/new_generic2: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/new_generic3: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/none: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/static_method: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/type_annotation1: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/type_annotation_generic1: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/type_annotation_generic2: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/type_annotation_generic3: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/type_annotation_generic4: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/type_annotation_non_deferred: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/type_annotation_null: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_constraints_type_annotation_test/type_annotation_top_level: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_function_type_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_global_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_inheritance_constraints_test/redirecting_constructor: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+deferred_inlined_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_load_constants_test/01: Crash # (foo.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_load_constants_test/02: Crash # (foo.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_load_constants_test/03: Crash # (foo.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_load_constants_test/04: Crash # (foo.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_load_constants_test/05: Crash # (foo.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_load_constants_test/none: Crash # (foo.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_load_inval_code_test: Crash # (d.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_load_library_wrong_args_test/01: Crash # (lib.loadLibrary(10)): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_load_library_wrong_args_test/none: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_mixin_test: Crash # (lib1.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_no_such_method_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_not_loaded_check_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+deferred_only_constant_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_optimized_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_redirecting_factory_test: Crash # cannot handle async/sync*/async* functions
+deferred_regression_22995_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_shadow_load_library_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deferred_shared_and_unshared_classes_test: Crash # (asyncSuccess): handleStaticFunctionGet: function(asyncSuccess)
+deferred_static_seperate_test: Crash # (lib1.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+deopt_inlined_function_lazy_test: Crash # (try {return x+12342353257893275483274832;}finally {}): try/finally
+deopt_inlined_function_test: Crash # unsupported element kind: obj:field
+div_with_power_of_two2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+div_with_power_of_two_test: Crash # unsupported element kind: expectedResults:field
+double_to_string_as_exponential2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+double_to_string_as_fixed2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+double_to_string_as_precision2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+dynamic_prefix_core_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+dynamic_test: Crash # Instance of 'TypeOperator': type check unimplemented for Iface<dynamic, num>.
+empty_block_case_test: Crash # (switch (1){case 1:{}case 2:Expect.equals(true,false);}): Unhandled node
+enum_mirror_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+enum_private_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+enum_syntax_test/09: Crash # (topLevelFunction): handleStaticFunctionGet: function(topLevelFunction)
+enum_test: Crash # (test1): handleStaticFunctionGet: function(test1)
+equality_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+error_stacktrace_test: RuntimeError # Please triage this failure.
+evaluation_redirecting_constructor_test: RuntimeError # Please triage this failure.
+execute_finally10_test: Crash # try/finally
+execute_finally11_test: Crash # try/finally
+execute_finally12_test: Crash # (try {try {}finally {a=8;break;}}finally {return a==8;}): try/finally
+execute_finally1_test: Crash # (try {int j;j=func();i=1;return i;}finally {i=i+800;}): try/finally
+execute_finally2_test: Crash # try/finally
+execute_finally3_test: Crash # try/finally
+execute_finally4_test: Crash # (try {int j;j=func();i=1;}finally {i=i+10;}): try/finally
+execute_finally5_test: Crash # try/finally
+execute_finally6_test: Crash # try/finally
+execute_finally7_test: Crash # try/finally
+execute_finally8_test: Crash # (try {sum+= 1;return 'hi';}finally {sum+= 1;throw 'ball';sum+= 1;}): try/finally
+execute_finally9_test: Crash # try/finally
+f_bounded_equality_test: RuntimeError # Please triage this failure.
+factory3_test: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+factory_redirection3_cyclic_test/01: Crash # Please triage this failure.
+factory_redirection_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/04: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/05: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/06: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/07: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/08: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/09: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/10: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/11: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/12: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/13: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/14: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_redirection_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+factory_return_type_checked_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+factory_type_parameter2_test: Crash # Please triage this failure.
+factory_type_parameter_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<List>.
+fast_method_extraction_test: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+field_inference_test: Crash # unsupported element kind: array:field
+final_is_not_const_test/none: RuntimeError # Please triage this failure.
+final_syntax_test/03: Crash # unsupported element kind: P3:field
+final_syntax_test/04: Crash # unsupported element kind: P3:field
+final_syntax_test/08: Crash # unsupported element kind: A3:field
+final_syntax_test/09: Crash # unsupported element kind: P3:field
+final_syntax_test/10: Crash # unsupported element kind: B3:field
+final_syntax_test/none: Crash # unsupported element kind: P3:field
+finally_test: Crash # (try {i=12;}finally {Expect.equals(12,i);executedFinally=true;}): try/finally
+first_class_types_literals_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+first_class_types_literals_test/04: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+first_class_types_literals_test/05: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+first_class_types_literals_test/06: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+first_class_types_literals_test/07: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+first_class_types_literals_test/08: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+first_class_types_literals_test/09: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+first_class_types_literals_test/10: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+first_class_types_literals_test/11: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+first_class_types_literals_test/12: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+fixed_type_variable2_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+fixed_type_variable2_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+fixed_type_variable2_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+fixed_type_variable2_test/04: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+fixed_type_variable2_test/05: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+fixed_type_variable2_test/06: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+fixed_type_variable_test/02: RuntimeError # Please triage this failure.
+fixed_type_variable_test/04: RuntimeError # Please triage this failure.
+fixed_type_variable_test/06: RuntimeError # Please triage this failure.
flatten_test/01: Crash # (test()async{int x=await new Derived<int>();}): cannot handle async/sync*/async* functions
flatten_test/02: Crash # (test()async{Future<int> f()async=>new Derived<int>();}): cannot handle async/sync*/async* functions
flatten_test/03: Crash # cannot handle async/sync*/async* functions
@@ -1045,1135 +628,537 @@
flatten_test/12: Crash # cannot handle async/sync*/async* functions
flatten_test/none: Crash # (test()async{}): cannot handle async/sync*/async* functions
for2_test: Crash # Please triage this failure.
-for_in2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-for_inlining_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-for_in_side_effects_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-for_in_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-for_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+for_in2_test: Crash # unsupported element kind: set:field
+for_in_side_effects_test: Crash # unsupported element kind: array:field
for_variable_capture_test: Crash # (i=0): For-loop variable captured in loop header
-forwarding_factory_constructor_default_values_test: Crash # (throw "FAILED"): Unhandled node
forwarding_factory_constructor_default_values_test: RuntimeError # Please triage this failure.
-for_without_condition_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-full_stacktrace1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-full_stacktrace2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-full_stacktrace3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_argument_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_getter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_literals2_test: Crash # (throw new ExpectException(message)): Unhandled node
-function_literals_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_malformed_result_type_test: Crash # (try {f();}on TypeError catch (error){got_type_error=true;}): "on T" catch block
-function_propagation_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_bound_closure0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_bound_closure1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_bound_closure2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_bound_closure3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_bound_closure4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_bound_closure5a_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_bound_closure5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_bound_closure6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_bound_closure7_test: Crash # (throw new ExpectException(message)): Unhandled node
-function_subtype_call0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_call1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_call2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_cast0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_cast1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_cast2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_cast3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_checked0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_closure0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_closure1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_factory0_test: Crash # (throw new ExpectException(message)): Unhandled node
-function_subtype_factory1_test: Crash # (throw new ExpectException(message)): Unhandled node
-function_subtype_inline0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_inline1_test: Crash # (throw new ExpectException(message)): Unhandled node
-function_subtype_inline2_test: Crash # "on T" catch block
-function_subtype_local0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_local1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_local2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_local3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_local4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_local5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_named1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_named2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_not0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_not1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_not2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_not3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_optional1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_optional2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_setter0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_simple0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_simple1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_simple2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_top_level0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_top_level1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_typearg0_test: Crash # (throw new ExpectException(message)): Unhandled node
-function_subtype_typearg1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_typearg2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_typearg3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_subtype_typearg4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/05: Crash # (testNestedFunctions()): Error expression `testNestedFunctions()` unhandled.
-function_syntax_test/06: Crash # (testNestedFunctions()): Error expression `testNestedFunctions()` unhandled.
-function_syntax_test/07: Crash # (testNestedFunctions()): Error expression `testNestedFunctions()` unhandled.
-function_syntax_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/11: Crash # (testNestedFunctions()): Error expression `testNestedFunctions()` unhandled.
-function_syntax_test/12: Crash # (testNestedFunctions()): Error expression `testNestedFunctions()` unhandled.
-function_syntax_test/13: Crash # (testNestedFunctions()): Error expression `testNestedFunctions()` unhandled.
-function_syntax_test/14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/15: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/16: Crash # (testNestedFunctions()): Error expression `testNestedFunctions()` unhandled.
-function_syntax_test/17: Crash # (testNestedFunctions()): Error expression `testNestedFunctions()` unhandled.
-function_syntax_test/18: Crash # (testNestedFunctions()): Error expression `testNestedFunctions()` unhandled.
-function_syntax_test/19: Crash # (testNestedFunctions()): Error expression `testNestedFunctions()` unhandled.
-function_syntax_test/20: Crash # (testNestedFunctions()): Error expression `testNestedFunctions()` unhandled.
-function_syntax_test/21: Crash # (testNestedFunctions()): Error expression `testNestedFunctions()` unhandled.
-function_syntax_test/22: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/23: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/24: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/25: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/26: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/27: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/28: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/29: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/30: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/31: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/32: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/33: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/34: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/35: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/36: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/37: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/44: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/45: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/46: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/47: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/48: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/49: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/50: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/51: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/52: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/53: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/54: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/55: Crash # (testFunctionExpressions()): Error expression `testFunctionExpressions()` unhandled.
-function_syntax_test/64: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/65: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/66: Crash # (testPrecedence()): Error expression `testPrecedence()` unhandled.
-function_syntax_test/67: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/68: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/69: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/70: Crash # Error expression `testFunctionIdentifierExpression()` unhandled.
-function_syntax_test/71: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/72: Crash # (testFunctionIdentifierStatement()): Error expression `testFunctionIdentifierStatement()` unhandled.
-function_syntax_test/73: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_syntax_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_type2_test: Crash # (try {new B<String>();}on TypeError catch (e){caughtException=true;}): "on T" catch block
-function_type3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_type_alias2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_type_alias3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_type_alias4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_type_alias6_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+function_propagation_test: Crash # Instance of 'TypeOperator': type check unimplemented for F.
+function_subtype0_test: Crash # (int_): handleStaticFunctionGet: function(int_)
+function_subtype1_test: Crash # Please triage this failure.
+function_subtype2_test: Crash # Instance of 'TypeOperator': type check unimplemented for T1.
+function_subtype_bound_closure0_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+function_subtype_bound_closure1_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo<bool>.
+function_subtype_bound_closure2_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo<T>.
+function_subtype_bound_closure3_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+function_subtype_bound_closure4_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+function_subtype_bound_closure5_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo<T>.
+function_subtype_bound_closure5a_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo<T>.
+function_subtype_bound_closure6_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo<T>.
+function_subtype_bound_closure7_test: Crash # (bar): handleStaticFunctionGet: function(bar)
+function_subtype_call0_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+function_subtype_call1_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+function_subtype_call2_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+function_subtype_cast0_test: Crash # (bar): handleStaticFunctionGet: function(bar)
+function_subtype_cast1_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+function_subtype_cast2_test: Crash # (bar): handleStaticFunctionGet: function(bar)
+function_subtype_cast3_test: Crash # (bar): handleStaticFunctionGet: function(bar)
+function_subtype_checked0_test: Crash # (boz): handleStaticFunctionGet: function(boz)
+function_subtype_closure0_test: Crash # (X.f1): handleStaticFunctionGet: function(X#f1)
+function_subtype_closure1_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+function_subtype_factory0_test: Crash # (method): handleStaticFunctionGet: function(method)
+function_subtype_factory1_test: Crash # (method): handleStaticFunctionGet: function(method)
+function_subtype_inline0_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+function_subtype_inline2_test: Crash # (m4): handleStaticFunctionGet: function(m4)
+function_subtype_local0_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+function_subtype_local1_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo<bool>.
+function_subtype_local2_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo<T>.
+function_subtype_local3_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+function_subtype_local4_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+function_subtype_local5_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo<T>.
+function_subtype_named1_test: Crash # (void___a_int): handleStaticFunctionGet: function(void___a_int)
+function_subtype_named2_test: Crash # Please triage this failure.
+function_subtype_not0_test: Crash # (bar): handleStaticFunctionGet: function(bar)
+function_subtype_not1_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+function_subtype_not2_test: Crash # (bar): handleStaticFunctionGet: function(bar)
+function_subtype_not3_test: Crash # (bar): handleStaticFunctionGet: function(bar)
+function_subtype_optional1_test: Crash # (void___int): handleStaticFunctionGet: function(void___int)
+function_subtype_optional2_test: Crash # Please triage this failure.
+function_subtype_setter0_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+function_subtype_simple0_test: Crash # (args0): handleStaticFunctionGet: function(args0)
+function_subtype_simple1_test: Crash # (args0): handleStaticFunctionGet: function(args0)
+function_subtype_simple2_test: Crash # (args0_1): handleStaticFunctionGet: function(args0_1)
+function_subtype_top_level0_test: Crash # (foo): handleStaticFunctionGet: function(foo)
+function_subtype_top_level1_test: Crash # (foo): handleStaticFunctionGet: function(foo)
+function_subtype_typearg0_test: Crash # Please triage this failure.
+function_subtype_typearg1_test: Crash # Please triage this failure.
+function_subtype_typearg2_test: Crash # Please triage this failure.
+function_subtype_typearg3_test: Crash # Please triage this failure.
+function_subtype_typearg4_test: Crash # Please triage this failure.
+function_type3_test: Crash # Instance of 'TypeOperator': type check unimplemented for F.
+function_type_alias2_test: Crash # (baz): handleStaticFunctionGet: function(baz)
+function_type_alias3_test: Crash # Instance of 'TypeOperator': type check unimplemented for F.
+function_type_alias4_test: Crash # (bar): handleStaticFunctionGet: function(bar)
+function_type_alias6_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for F.
function_type_alias8_test: Crash # unsupported element kind: fromThing:field
-function_type_alias_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_type_call_getter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_type_parameter2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_type_parameter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-function_type_test: Crash # (try {FListInt fli=f();}on TypeError catch (error){got_type_error=true;}): "on T" catch block
-function_type_this_parameter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic2_test: Crash # (throw new ExpectException(message)): Unhandled node
-generic_closure_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic_constructor_mixin2_test: Crash # "on T" catch block
-generic_constructor_mixin3_test: Crash # "on T" catch block
-generic_constructor_mixin_test: Crash # "on T" catch block
-generic_creation_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic_deep_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic_field_mixin2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic_field_mixin6_test/01: Crash # "on T" catch block
-generic_field_mixin_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic_inheritance_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic_instanceof2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic_instanceof3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic_instanceof4_test: Crash # (throw new ExpectException(message)): Unhandled node
-generic_instanceof5_test: Crash # (throw new ExpectException(message)): Unhandled node
-generic_instanceof_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic_is_check_test: Crash # (throw new ExpectException(message)): Unhandled node
-generic_list_checked_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic_native_test: Crash # (throw new ExpectException(message)): Unhandled node
-generic_object_type_test: Crash # (throw new ExpectException(message)): Unhandled node
-generic_parameterized_extends_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generics_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic_syntax_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-generic_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getter_closure_execution_order_test: Crash # (throw "${failures.length~/2} tests failed."): Unhandled node
-getter_no_setter2_test/00: Crash # (throw new ExpectException(message)): Unhandled node
-getter_no_setter2_test/01: Crash # (nextVar++ ): Error expression `nextVar++ ` unhandled.
-getter_no_setter2_test/03: Crash # (throw new ExpectException(message)): Unhandled node
-getter_no_setter_test/00: Crash # (throw new ExpectException(message)): Unhandled node
-getter_no_setter_test/01: Crash # (nextVar=0): Error expression `nextVar=0` unhandled.
-getter_no_setter_test/02: Crash # (throw new ExpectException(message)): Unhandled node
-getter_no_setter_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-getter_override2_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getter_override2_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getter_override2_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getter_override2_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getter_override_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getter_override_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getter_setter_in_lib_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getter_setter_interceptor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getter_setter_order_test: Crash # (throw new ExpectException(message)): Unhandled node
-getters_setters2_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getters_setters2_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getters_setters2_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getters_setters2_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getters_setters_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getters_setters_type2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getters_setters_type3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getters_setters_type_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-getters_setters_type_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-guess_cid_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-gvn_field_access_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-gvn_interceptor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-gvn_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-hash_code_mangling_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-hash_map_null_key_foreach_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-hello_script_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-identical_closure2_test: Crash # (throw new ExpectException(message)): Unhandled node
-identical_closure_test: Crash # (throw new ExpectException(message)): Unhandled node
-identical_const_test/05: Crash # Please triage this failure.
-identical_const_test/06: Crash # Please triage this failure.
-identical_const_test/07: Crash # Please triage this failure.
-identical_const_test/08: Crash # Please triage this failure.
-identical_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-if_and_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-if_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-illegal_invocation_test/01: Crash # (foo()): Error expression `foo()` unhandled.
-implicit_closure1_test: Crash # handleStaticFunctionGet: function(Hello#handler1)
-implicit_closure2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-implicit_closure_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-implicit_scope_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-implicit_super_constructor_call_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-implicit_this_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-implicit_this_test/02: Crash # (new Abstract()): Error expression `new Abstract()` unhandled.
-implicit_this_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-implicit_this_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-implied_interface_test: Crash # "on T" catch block
-import_combinators_negative_test: Crash # (ugly): Error expression `ugly` unhandled.
-import_combinators_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-import_core_prefix_test: Crash # (throw new ExpectException(message)): Unhandled node
-import_self_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-import_self_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-import_show_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-incr_op_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-index_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inference_captured_variable2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inference_captured_variable_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inference_list_or_null_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inference_mixin_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inference_super_constructor_call_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inferrer_closure_test: Crash # (throw 'Test failed'): Unhandled node
-inferrer_constructor2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inferrer_constructor3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inferrer_constructor4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inferrer_constructor5_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inferrer_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inferrer_named_parameter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inferrer_synthesized_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+function_type_alias_test: Crash # Instance of 'TypeOperator': type check unimplemented for Fun.
+function_type_call_getter_test: Crash # Instance of 'TypeOperator': type check unimplemented for F.
+generic2_test: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+generic_closure_test: Crash # Instance of 'TypeOperator': type check unimplemented for F.
+generic_constructor_mixin2_test: Crash # Please triage this failure.
+generic_constructor_mixin3_test: Crash # Please triage this failure.
+generic_constructor_mixin_test: Crash # Please triage this failure.
+generic_creation_test: RuntimeError # Please triage this failure.
+generic_deep_test: Crash # Instance of 'TypeOperator': type check unimplemented for S<Z>.
+generic_field_mixin2_test: Crash # Please triage this failure.
+generic_field_mixin3_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<T>.
+generic_field_mixin_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<int>.
+generic_inheritance_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<Object>.
+generic_instanceof2_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo<int, num>.
+generic_instanceof3_test: Crash # Instance of 'TypeOperator': type check unimplemented for I<String>.
+generic_instanceof4_test: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+generic_instanceof5_test: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+generic_instanceof_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<T>.
+generic_is_check_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<int>.
+generic_list_checked_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+generic_native_test: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+generic_object_type_test: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+generic_parameterized_extends_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<Object>.
+generic_test: Crash # Instance of 'TypeOperator': type check unimplemented for B<AA>.
+implicit_closure1_test: Crash # (handler1): handleStaticFunctionGet: function(Hello#handler1)
+implicit_super_constructor_call_test: Crash # Please triage this failure.
+import_self_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+inference_captured_variable2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+inference_captured_variable_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+inference_list_or_null_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+inference_mixin_field_test: Crash # Please triage this failure.
+inference_super_constructor_call_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+inferrer_closure_test: Crash # unsupported element kind: closure:field
+inferrer_constructor2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+inferrer_constructor3_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+inferrer_constructor4_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+inferrer_constructor5_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+inferrer_constructor_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+inferrer_synthesized_constructor_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
inferrer_synthesized_super_constructor_test: Crash # Please triage this failure.
-inferrer_this_access_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-infinite_switch_label_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-infinity_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inline_argument_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inline_closure_with_constant_arguments_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inlined_conditional_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inlined_throw_test: Crash # (throw new ExpectException(message)): Unhandled node
-inline_effect_context_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inline_getter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inline_in_for_initializer_and_bailout_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inline_super_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inline_super_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inline_test_context_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inline_value_context_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-instance_compound_assignment_operator_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-instance_field_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-instance_incr_deopt_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-instance_inline_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-instanceof2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-instanceof3_test: Crash # "on T" catch block
-instanceof4_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-instanceof4_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-instanceof_optimized_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-instanceof_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-inst_field_initializer1_negative_test: Crash # unable to build cps definition of generative_constructor(A#)
-inst_field_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-int2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-integer_division_by_zero_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-interceptor2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-interceptor3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-interceptor4_test: Crash # (throw new ExpectException(message)): Unhandled node
-interceptor5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-interceptor6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-interceptor7_test: Crash # (throw new ExpectException(message)): Unhandled node
+inferrer_this_access_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+infinite_switch_label_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+inline_super_test: Crash # Please triage this failure.
+inlined_conditional_test: Crash # (main): handleStaticFunctionGet: function(main)
+inlined_throw_test: Crash # (hest): handleStaticFunctionGet: function(hest)
+instance_creation_in_function_annotation_test: Crash # (f): handleStaticFunctionGet: function(f)
+instanceof2_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+instanceof3_test: Crash # Instance of 'TypeOperator': type check unimplemented for UndeclaredType.
+instanceof4_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for List<T>.
+instanceof4_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for List<T>.
+instanceof_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+integer_division_by_zero_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+interceptor6_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+interceptor7_test: Crash # unsupported element kind: array:field
interceptor8_test: Crash # unsupported element kind: a:field
-interceptor9_test: Crash # (throw e): Unhandled node
-interceptor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-interface_constants_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-interface_static_method_negative_test: Crash # (new A()): Error expression `new A()` unhandled.
-interface_static_non_final_fields_negative_test: Crash # Error expression `InterfaceStaticNonFinalFieldsNegativeTest` unhandled.
+interceptor9_test: Crash # (boom): handleStaticFunctionGet: function(boom)
+interceptor_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
internal_library_test/01: Crash # (JS('int','0')): handleStaticFunctionInvoke: foreign: function(JS)
-internal_library_test/02: Crash # (JS('int','0')): Error expression `JS('int','0')` unhandled.
-intrinsified_methods_test: Crash # (throw new ExpectException(message)): Unhandled node
-int_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-invocation_mirror2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-invocation_mirror_invoke_on2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-invocation_mirror_invoke_on_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-invocation_mirror_test: Crash # cannot compile methods that need interceptor calling convention.
-is_function_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_interfaces2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_interfaces_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_malformed_type_test/94: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_malformed_type_test/95: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_malformed_type_test/96: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_malformed_type_test/97: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_malformed_type_test/98: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_malformed_type_test/99: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_nan_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_not_class1_negative_test: Crash # Error expression `IsNotClass1NegativeTest.testMain()` unhandled.
-is_not_class2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_not_class4_negative_test: Crash # Error expression `IsNotClass4NegativeTest.testMain()` unhandled.
-isnot_malformed_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_object_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_operator_clash_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-is_operator_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue10204_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue10321_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue10561_test: Crash # (throw new ExpectException(message)): Unhandled node
-issue10581_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue10721_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue10747_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue10783_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue11724_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+invocation_mirror_invoke_on2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+invocation_mirror_invoke_on_test: RuntimeError # Please triage this failure.
+invocation_mirror_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+is_function_test: Crash # (staticMethod): handleStaticFunctionGet: function(staticMethod)
+is_malformed_type_test/94: Crash # Instance of 'TypeOperator': type casts not implemented.
+is_malformed_type_test/95: Crash # Instance of 'TypeOperator': type check unimplemented for Undefined.
+is_malformed_type_test/96: Crash # Instance of 'TypeOperator': type casts not implemented.
+is_malformed_type_test/97: Crash # Instance of 'TypeOperator': type check unimplemented for Undefined.
+is_malformed_type_test/98: Crash # Instance of 'TypeOperator': type casts not implemented.
+is_malformed_type_test/99: Crash # Instance of 'TypeOperator': type check unimplemented for Undefined.
+is_nan_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+is_not_class2_test: Crash # function(IsNotClass2NegativeTest#testMain)
+is_object_test: RuntimeError # Please triage this failure.
+isnot_malformed_type_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+issue10581_test: Crash # Unhandled node
+issue10721_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+issue10747_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+issue10783_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+issue11724_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
issue11793_test: Crash # unsupported element kind: otherArray:field
issue12023_test: Crash # Unhandled node
-issue12284_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue12336_test: Crash # (throw new ExpectException(message)): Unhandled node
-issue13179_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue13474_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue1363_test: Crash # (try {contents=libCup.getContents();}on TypeError catch (e){hasThrown=true;}): "on T" catch block
-issue13673_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue14014_3_test: Crash # (throw 'Test failed'): Unhandled node
-issue15606_test/01: Crash # (Unresolved): Error expression `Unresolved` unhandled.
-issue_1751477_test: Crash # handleStaticGetterInvoke: foreign: function(loadLibrary)
-issue20476_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue21159_test: Crash # (try {foo();}on StackOverflowError catch (e){exceptionCaught=true;}): "on T" catch block
-issue4515170_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue7513_test: Crash # (throw new ExpectException(message)): Unhandled node
-issue7525_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue9687_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-issue9939_test: Crash # (throw e): Unhandled node
-issue9949_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-js_properties_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-label8_negative_test: Crash # (Label8NegativeTest.errorMethod()): Error expression `Label8NegativeTest.errorMethod()` unhandled.
-label_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-large_class_declaration_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+issue12284_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+issue12336_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+issue13474_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+issue13673_test: Crash # unsupported element kind: topLevel:field
+issue14014_3_test: Crash # Please triage this failure.
+issue20476_test: Crash # (try {try {return 1;}catch (e1){}finally {return 3;}}catch (e2){}finally {return 5;}): try/finally
+issue7525_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+issue9687_test: Crash # unsupported element kind: array:field
+issue9939_test: Crash # unsupported element kind: globalVar:field
+issue9949_test: Crash # Instance of 'TypeOperator': type check unimplemented for Expando.
+issue_1751477_test: Crash # (lib1.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+label_test: Crash # (switch (i){case 111:while(doAgain()){break L;}default:i-- ;}): Unhandled node
+large_class_declaration_test: Crash # Please triage this failure.
large_implicit_getter_test: Crash # unsupported element kind: panels:field
-lazy_map_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-lazy_static2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-lazy_static3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-lazy_static4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-lazy_static5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-lazy_static6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-lazy_static_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-left_shift_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-library1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-library5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-library_ambiguous_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-library_juxtaposition_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-library_negative_test: Crash # (LibraryNegativeTest.testMain(args)): handleStaticFunctionIncompatibleInvoke
-library_prefixes_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-library_private_in_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-library_same_name_used_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-licm2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-licm3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-licm_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_double_index_in_loop2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_double_index_in_loop_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_in_closure_test: Crash # (throw new ExpectException(message)): Unhandled node
-list_is_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_length_tracer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_literal2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_literal3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_literal4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_literal_negative_test: Crash # Error expression `ListLiteralNegativeTest.testMain()` unhandled.
-list_literal_syntax_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_literal_syntax_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_literal_syntax_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_literal_syntax_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_literal_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-list_tracer_in_map_test: Crash # (throw 'Test failed'): Unhandled node
-list_tracer_return_from_tearoff_closure_test: Crash # (throw 'Test failed'): Unhandled node
-liveness_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-load_indexed_constant_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-local_export_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-local_function2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-local_function3_test: Crash # (try {f.xyz(0);}on NoSuchMethodError catch (e){exception_caught=true;}): "on T" catch block
-local_function_non_equal_test: Crash # (throw new ExpectException(message)): Unhandled node
-local_function_test: Crash # (try {f(1,2);}on NoSuchMethodError catch (e){exception_caught=true;}): "on T" catch block
-logical_expression2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-logical_expression3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-logical_expression4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-logical_expression5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-logical_expression_test: Crash # (throw new ExpectException(message)): Unhandled node
-loop_exchange2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-loop_exchange3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-loop_exchange4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-loop_exchange_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-loop_hoist_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-malbounded_type_cast2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-malbounded_type_cast_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-malbounded_type_literal_test: Crash # (throw new ExpectException(message)): Unhandled node
-malbounded_type_test2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-malbounded_type_test_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-malbounded_type_test_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-malbounded_type_test_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-malbounded_type_test_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-malformed2_test/00: Crash # (throw 'Test failed.'): Unhandled node
-malformed_inheritance_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+lazy_map_test: Crash # unsupported element kind: data:field
+lazy_static2_test: Crash # unsupported element kind: x:field
+lazy_static3_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+lazy_static4_test: Crash # unsupported element kind: v:field
+lazy_static5_test: Crash # unsupported element kind: x:field
+lazy_static6_test: Crash # unsupported element kind: x:field
+lazy_static_test: Crash # unsupported element kind: t2:field
+library_ambiguous_test/04: Crash # (main): handleStaticFunctionGet: function(main)
+licm2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+licm3_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_double_index_in_loop2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_double_index_in_loop_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_is_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+list_length_tracer_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_literal3_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+list_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<A>.
+list_tracer_in_map_test: Crash # unsupported element kind: b:field
+list_tracer_return_from_tearoff_closure_test: Crash # (foo): handleStaticFunctionGet: function(foo)
+logical_expression_test: Crash # unsupported element kind: globalList:field
+malbounded_type_cast2_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+malbounded_type_cast_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+malbounded_type_test2_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<T>.
+malbounded_type_test_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for Super<int>.
+malbounded_type_test_test/04: Crash # Instance of 'TypeOperator': type check unimplemented for Super<String>.
+malformed2_test/00: Crash # Instance of 'TypeOperator': type check unimplemented for List<Unresolved>.
+malformed_inheritance_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for A<String>.
malformed_inheritance_test/03: Crash # Please triage this failure.
-malformed_inheritance_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-malformed_inheritance_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+malformed_inheritance_test/04: Crash # Instance of 'TypeOperator': type check unimplemented for A<String>.
+malformed_inheritance_test/06: Crash # Instance of 'TypeOperator': type check unimplemented for A<String>.
malformed_inheritance_test/09: Crash # Please triage this failure.
malformed_inheritance_test/10: Crash # Please triage this failure.
-malformed_test/06: Crash # "on T" catch block
-malformed_test/none: Crash # "on T" catch block
+malformed_test/06: Crash # Please triage this failure.
+malformed_test/none: Crash # Please triage this failure.
malformed_type_test: Crash # unsupported element kind: x:field
-many_calls_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-many_generic_instanceof_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-many_named_arguments_test: Crash # (throw new ExpectException(message)): Unhandled node
-many_overridden_no_such_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-map_literal10_test: Crash # Please triage this failure.
-map_literal2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-map_literal3_test: Crash # Please triage this failure.
-map_literal4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-map_literal5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-map_literal6_test: Crash # Please triage this failure.
-map_literal7_test: Crash # (throw new ExpectException(message)): Unhandled node
-map_literal8_test: Crash # (throw new ExpectException(message)): Unhandled node
-map_literal9_test: Crash # Please triage this failure.
-map_literal_negative_test: Crash # (MapLiteralNegativeTest.testMain()): Error expression `MapLiteralNegativeTest.testMain()` unhandled.
-map_literal_syntax_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-map_literal_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-map_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mega_load_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-megamorphic_no_such_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_binding_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_invocation_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_name_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override3_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override3_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override3_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override3_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override7_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override7_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override8_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override8_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override8_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-method_override_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-methods_as_constants2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-methods_as_constants_test: Crash # Please triage this failure.
-minify_closure_variable_collision_test: Crash # (throw 'Test failed'): Unhandled node
-mint_arithmetic_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mint_compares_test: Crash # (throw new ExpectException(message)): Unhandled node
-mixin_black_listed_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mixin_black_listed_test/02: Crash # (throw new ExpectException(message)): Unhandled node
-mixin_black_listed_test/05: Crash # (throw new ExpectException(message)): Unhandled node
-mixin_black_listed_test/06: Crash # (throw new ExpectException(message)): Unhandled node
-mixin_black_listed_test/07: Crash # (throw new ExpectException(message)): Unhandled node
-mixin_black_listed_test/08: Crash # (new F2()): Error expression `new F2()` unhandled.
-mixin_black_listed_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mixin_bound_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+many_generic_instanceof_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<T>.
+many_overridden_no_such_method_test: RuntimeError # Please triage this failure.
+megamorphic_no_such_method_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+method_binding_test: Crash # (topLevel99): handleStaticFunctionGet: function(topLevel99)
+method_override4_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+method_override5_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+method_override_test: Crash # Instance of 'TypeOperator': type check unimplemented for RemoveFunctionType<String, String>.
+methods_as_constants_test: RuntimeError # Please triage this failure.
+minify_closure_variable_collision_test: Crash # unsupported element kind: array:field
+mint_arithmetic_test: Crash # try/finally
+mint_compares_test: Crash # (lt1): handleStaticFunctionGet: function(lt1)
+mixin_bound_test: Crash # Please triage this failure.
mixin_cyclic_test/01: Crash # Please triage this failure.
-mixin_extends_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_extends_is_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_extends_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_field_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_forwarding_constructor1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_forwarding_constructor2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_forwarding_constructor3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_generic_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_getter_regression_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+mixin_extends_field_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mixin_extends_method_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mixin_field_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mixin_forwarding_constructor1_test: Crash # Please triage this failure.
+mixin_forwarding_constructor3_test: Crash # Please triage this failure.
+mixin_generic_test: Crash # Instance of 'TypeOperator': type check unimplemented for S<Map<int, bool>>.
mixin_illegal_constructor_test/13: MissingRuntimeError # Please triage this failure.
-mixin_illegal_constructor_test/14: Crash # (new C0.named()): Error expression `new C0.named()` unhandled.
mixin_illegal_constructor_test/15: MissingRuntimeError # Please triage this failure.
-mixin_illegal_constructor_test/16: Crash # (new D0.named()): Error expression `new D0.named()` unhandled.
mixin_illegal_cycles_test/02: Crash # Please triage this failure.
mixin_illegal_cycles_test/03: Crash # Please triage this failure.
mixin_illegal_cycles_test/04: Crash # Please triage this failure.
mixin_illegal_cycles_test/06: Crash # Please triage this failure.
-mixin_illegal_static_access_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_super_use_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_super_use_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_super_use_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_super_use_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_super_use_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_super_use_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_super_use_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_super_use_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_super_use_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_super_use_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_super_use_test/11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_super_use_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_illegal_syntax_test/13: Crash # (new T0()): Error expression `new T0()` unhandled.
-mixin_implements_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+mixin_illegal_static_access_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
mixin_invalid_inheritance1_test/01: Crash # Please triage this failure.
mixin_invalid_inheritance1_test/02: Crash # Please triage this failure.
mixin_invalid_inheritance1_test/03: Crash # Please triage this failure.
-mixin_invalid_inheritance2_test/01: Crash # (new C<C>()): Error expression `new C<C>()` unhandled.
-mixin_invalid_inheritance2_test/02: Crash # (new C<C>()): Error expression `new C<C>()` unhandled.
-mixin_invalid_inheritance2_test/03: Crash # (new C<C>()): Error expression `new C<C>()` unhandled.
-mixin_issue10216_2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_issue10216_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_is_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_lib_extends_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_lib_extends_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_mixin2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_mixin3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_mixin4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_mixin5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_mixin6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_mixin7_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_mixin_bound2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_mixin_bound_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_mixin_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_naming_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_only_for_rti_test: Crash # (throw new ExpectException(message)): Unhandled node
-mixin_override_regression_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_prefix_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_regress_11398_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_regress_13688_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_super_constructor2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_super_constructor_default_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_super_constructor_multiple_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_super_constructor_named_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_super_constructor_named_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+mixin_issue10216_2_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+mixin_issue10216_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+mixin_lib_extends_field_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mixin_lib_extends_method_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mixin_method_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mixin_mixin4_test: Crash # Instance of 'TypeOperator': type check unimplemented for I<List<bool>>.
+mixin_mixin5_test: Crash # Instance of 'TypeOperator': type check unimplemented for K<int>.
+mixin_mixin6_test: Crash # Instance of 'TypeOperator': type check unimplemented for K<int>.
+mixin_mixin7_test: Crash # Instance of 'TypeOperator': type check unimplemented for K<int>.
+mixin_mixin_bound2_test: Crash # Instance of 'TypeOperator': type check unimplemented for K<int>.
+mixin_mixin_bound_test: Crash # Instance of 'TypeOperator': type check unimplemented for I<List<bool>>.
+mixin_only_for_rti_test: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+mixin_super_constructor2_test: Crash # Please triage this failure.
+mixin_super_constructor_default_test: Crash # Please triage this failure.
+mixin_super_constructor_multiple_test: Crash # Please triage this failure.
+mixin_super_constructor_named_test/01: Crash # Please triage this failure.
+mixin_super_constructor_named_test/none: Crash # Please triage this failure.
mixin_super_constructor_positionals_test/01: Crash # Please triage this failure.
-mixin_super_constructor_positionals_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_super_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_this_use_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_typedef_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_type_parameter1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_type_parameter2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_type_parameter3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_type_parameter4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_type_parameters_mixin_extends_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_type_parameters_mixin_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_type_parameters_simple_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_type_parameters_super_extends_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_type_parameters_super_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mixin_with_two_implicit_constructors_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-modulo_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mul_recipr_test: Crash # (throw new ExpectException(message)): Unhandled node
-multi_assign_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-multiline_strings_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-multi_pass2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-multi_pass_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+mixin_super_constructor_positionals_test/none: Crash # Please triage this failure.
+mixin_super_constructor_test: Crash # Please triage this failure.
+mixin_type_parameter1_test: Crash # Instance of 'TypeOperator': type check unimplemented for Mixin1<num>.
+mixin_type_parameter2_test: Crash # Instance of 'TypeOperator': type check unimplemented for Mixin1<num>.
+mixin_type_parameter3_test: Crash # Instance of 'TypeOperator': type check unimplemented for Mixin1<num>.
+mixin_type_parameter4_test: Crash # Instance of 'TypeOperator': type check unimplemented for R<bool, int>.
+mixin_type_parameters_mixin_extends_test: Crash # Instance of 'TypeOperator': type check unimplemented for M.
+mixin_type_parameters_mixin_test: Crash # Instance of 'TypeOperator': type check unimplemented for M.
+mixin_type_parameters_super_extends_test: Crash # Instance of 'TypeOperator': type check unimplemented for S.
+mixin_type_parameters_super_test: Crash # Instance of 'TypeOperator': type check unimplemented for S.
+mixin_typedef_constructor_test: Crash # Please triage this failure.
+mixin_with_two_implicit_constructors_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+modulo_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
multiple_field_assignment_constructor_test: Crash # unsupported element kind: a:field
-named_argument_in_const_creation_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_argument_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_constructor_test/01: Crash # (new Class.named<int>()): Error expression `new Class.named<int>()` unhandled.
-named_constructor_test/03: Crash # (new prefix<int>.Class()): Error expression `new prefix<int>.Class()` unhandled.
-named_constructor_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameter_clash_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters2_test: Crash # (try {test(10,25,b:26);}on NoSuchMethodError catch (e){foundError=true;}): "on T" catch block
-named_parameters3_test: Crash # (try {test(10,x:99);}on NoSuchMethodError catch (e){foundError=true;}): "on T" catch block
-named_parameters4_test: Crash # (try {test(10,x:99);}on NoSuchMethodError catch (e){foundError=true;}): "on T" catch block
-named_parameters_aggregated_test/02: Crash # Error expression `NamedParametersAggregatedTests.f_missing_comma(10,25)` unhandled.
-named_parameters_aggregated_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_named_count_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_passing_false_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_passing_falsy_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_passing_null_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_passing_zero_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_with_conversions_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_with_dollars_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-named_parameters_with_object_property_names_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-namer2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-namer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-naming2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-naming3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-naming_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-native_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-nested_comments_test: Crash # (throw new ExpectException(message)): Unhandled node
-nested_if_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+named_parameter_clash_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+named_parameters_aggregated_test/05: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+named_parameters_passing_falsy_test: Crash # (TestClass.staticMethod): handleStaticFunctionGet: function(TestClass#staticMethod)
+named_parameters_with_dollars_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+namer2_test: Crash # Instance of 'TypeOperator': type check unimplemented for A.
+naming_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
nested_switch_label_test: Crash # Unhandled node
-new_expression1_negative_test: Crash # (NewExpression1NegativeTest): Error expression `NewExpression1NegativeTest` unhandled.
-new_expression2_negative_test: Crash # (NewExpression2NegativeTest): Error expression `NewExpression2NegativeTest` unhandled.
-new_expression3_negative_test: Crash # (NewExpression3NegativeTest): Error expression `NewExpression3NegativeTest` unhandled.
-new_prefix_test/01: Crash # (new prefix()): Error expression `new prefix()` unhandled.
-new_statement_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-non_const_constructor_without_body_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-non_const_super_negative_test: Crash # Please triage this failure.
-non_dominating_loop_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-no_such_constructor2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+no_such_constructor2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
no_such_constructor_test/01: MissingRuntimeError # Please triage this failure.
-no_such_method2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-no_such_method3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-no_such_method_dispatcher_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-no_such_method_empty_selector_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-no_such_method_subtype_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-no_such_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+no_such_method_dispatcher_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+no_such_method_empty_selector_test: Crash # unsupported element kind: b:field
+no_such_method_test: RuntimeError # Please triage this failure.
+non_const_super_negative_test: Crash # Please triage this failure.
not_enough_positional_arguments_test/00: MissingRuntimeError # Please triage this failure.
not_enough_positional_arguments_test/03: Crash # Please triage this failure.
-not_enough_positional_arguments_test/06: Crash # (foo(b:1)): handleStaticFunctionIncompatibleInvoke
-not_enough_positional_arguments_test/06: MissingRuntimeError # Please triage this failure.
-not_enough_positional_arguments_test/07: Crash # Please triage this failure.
-null2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-null_access_error_test: Crash # "on T" catch block
-null_inline_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-null_is2_test: Crash # (throw new ExpectException(message)): Unhandled node
-null_is_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-null_method_test: Crash # (throw new ExpectException(message)): Unhandled node
+null2_test: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+null_inline_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+null_is2_test: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+null_is_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
null_no_such_method_test: Crash # unsupported element kind: array:field
-null_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-null_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-null_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-null_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-null_to_string2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-null_to_string_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-number_constant_folding1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-number_identifier_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-number_identifier_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-number_identifier_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-number_identifier_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-number_identity2_test: Crash # (throw new ExpectException(message)): Unhandled node
-number_identity_test: Crash # (throw new ExpectException(message)): Unhandled node
-numbers_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-number_syntax_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-on_catch_malformed_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-operator2_negative_test: Crash # (new Helper(10)): Error expression `new Helper(10)` unhandled.
-operator2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-operator3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-operator4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-operator5_test: Crash # (try {Expect.equals(42,a>=a);}on TypeError catch (e){}): "on T" catch block
-operator6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-operator_equals_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-operator_index_evaluation_order_test: Crash # (throw new ExpectException(message)): Unhandled node
-operator_negate_and_method_negate_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-operator_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optimized_constant_array_string_access_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optimized_hoisting_checked_mode_assert_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optimized_isempty_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optimized_lists_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optimized_setter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optimized_string_charat_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optimized_string_charcodeat_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optimize_redundant_array_load_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optional_named_parameters_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optional_named_parameters_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optional_named_parameters_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optional_named_parameters_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optional_named_parameters_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optional_named_parameters_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optional_named_parameters_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optional_named_parameters_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optional_named_parameters_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-optional_named_parameters_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-ordered_maps_test: Crash # Please triage this failure.
-osr_test: Crash # (throw "No progress made"): Unhandled node
-overridden_no_such_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-override_inheritance_no_such_method_test/03: Crash # cannot compile methods that need interceptor calling convention.
-override_inheritance_no_such_method_test/04: Crash # cannot compile methods that need interceptor calling convention.
-override_inheritance_no_such_method_test/08: Crash # cannot compile methods that need interceptor calling convention.
-override_inheritance_no_such_method_test/11: Crash # cannot compile methods that need interceptor calling convention.
-override_inheritance_no_such_method_test/13: Crash # cannot compile methods that need interceptor calling convention.
-override_method_with_field_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-override_method_with_field_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-param2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-parameter_initializer2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-parameter_initializer4_negative_test: Crash # Please triage this failure.
-parameter_initializer6_negative_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-parameter_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-parameter_name_conflict_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-parameter_types_specialization_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-param_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-parse_closures_in_initializers_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-parser_quirks_test: Crash # handleStaticFunctionGet: function(f)
-parse_types_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-partial_min_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-patch_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+null_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+null_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+null_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+null_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for dynamic.
+number_identifier_test/05: Crash # Instance of 'TypeOperator': type casts not implemented.
+number_identifier_test/08: Crash # Instance of 'TypeOperator': type casts not implemented.
+number_identifier_test/09: Crash # Instance of 'TypeOperator': type casts not implemented.
+number_identifier_test/none: Crash # Instance of 'TypeOperator': type casts not implemented.
+on_catch_malformed_type_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+operator4_test: RuntimeError # Please triage this failure.
+operator_equals_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+optimize_redundant_array_load_test: Crash # unsupported element kind: A:field
+optimized_constant_array_string_access_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+optimized_string_charat_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+optimized_string_charcodeat_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+osr_test: Crash # (create): handleStaticFunctionGet: function(create)
+overridden_no_such_method_test: RuntimeError # Please triage this failure.
+parser_quirks_test: Crash # (f): handleStaticFunctionGet: function(f)
phi_merge_test: Crash # (switch (value){case 42:break;case 43:break;}): Unhandled node
-positive_bit_operations_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-prefix101_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-prefix10_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-prefix11_negative_test: Crash # (new lib12.Library11(1)): Error expression `new lib12.Library11(1)` unhandled.
-prefix11_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-prefix12_negative_test: Crash # (lib12.top_level11): Error expression `lib12.top_level11` unhandled.
-prefix12_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-prefix14_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-prefix15_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-prefix16_test: Crash # (try {myFunc i=0;}on TypeError catch (error){got_type_error=true;}): "on T" catch block
-prefix1_negative_test: Crash # (library1): Error expression `library1` unhandled.
-prefix21_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-prefix24_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-prefix2_negative_test: Crash # (lib2.Library2): Error expression `lib2.Library2` unhandled.
-prefix3_negative_test: Crash # (lib2.foo=1): Error expression `lib2.foo=1` unhandled.
-prefix4_negative_test: Crash # (new lib11.Library11(1)): Error expression `new lib11.Library11(1)` unhandled.
-prefix5_negative_test: Crash # (lib11): Error expression `lib11` unhandled.
-prefix_new_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-prefix_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-private3_test: Crash # Please triage this failure.
-private4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-private_access_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-private_access_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-private_access_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-private_access_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-private_access_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-private_access_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-private_clash_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-private_mixin2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-private_selector_test: Crash # (throw new ExpectException(message)): Unhandled node
-private_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-propagated_argument_type_check_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-propagate_past_constant_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-property_field_override_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-pure_function2_test: Crash # (throw new ExpectException(message)): Unhandled node
-pure_function_test: Crash # (throw new ExpectException(message)): Unhandled node
-range_analysis2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-range_analysis3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-range_analysis_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-raw_string_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-recursive_calls_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-recursive_loop_phis_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-redirecting_factory_default_values_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-redirecting_factory_default_values_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-redirecting_factory_default_values_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-redirecting_factory_incompatible_signature_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-redirecting_factory_long_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reexport_core_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-ref_before_declaration_test/00: Crash # (throw "ball"): Unhandled node
-ref_before_declaration_test/01: Crash # (throw "ball"): Unhandled node
-ref_before_declaration_test/02: Crash # (throw "ball"): Unhandled node
-ref_before_declaration_test/03: Crash # (throw "ball"): Unhandled node
-ref_before_declaration_test/04: Crash # (throw "ball"): Unhandled node
-ref_before_declaration_test/05: Crash # (throw "ball"): Unhandled node
-ref_before_declaration_test/06: Crash # (throw "ball"): Unhandled node
-ref_before_declaration_test/07: Crash # (throw "ball"): Unhandled node
-ref_before_declaration_test/none: Crash # (throw "ball"): Unhandled node
-refine_receiver_null_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reg_exp2_test: Crash # (throw new ExpectException(message)): Unhandled node
-reg_exp3_test: Crash # (try {RegExp exp=new RegExp("[");i=100;}on FormatException catch (e){i=0;}): "on T" catch block
-reg_exp_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress_10996_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress_11010_test: Crash # (throw 'unexpected result'): Unhandled node
-regress_11800_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress_12561_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress_13494_test: Crash # (A.unknown=p(2)): Error expression `A.unknown=p(2)` unhandled.
-regress_14105_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress_17382_test: Crash # (tl(m(0))): Error expression `tl(m(0))` unhandled.
+prefix14_test: Crash # (myClass.func2): handleStaticFunctionGet: function(myClass#func2)
+prefix16_test: Crash # Instance of 'TypeOperator': type check unimplemented for myFunc.
+prefix21_test: Crash # (badFunction): handleStaticFunctionGet: function(badFunction)
+private4_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+private_access_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+private_access_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+private_access_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+private_access_test/04: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+private_access_test/05: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+private_access_test/06: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+private_mixin2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+pure_function2_test: Crash # (foo): handleStaticFunctionGet: function(foo)
+range_analysis2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+range_analysis_test: Crash # (f): handleStaticFunctionGet: function(f)
+redirecting_factory_default_values_test/none: RuntimeError # Please triage this failure.
+redirecting_factory_incompatible_signature_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+redirecting_factory_long_test: Crash # Instance of 'TypeOperator': type check unimplemented for X<int>.
+ref_before_declaration_test/00: Crash # (switch (x){case 0:var x='Does fuzzy logic tickle?';}): Unhandled node
+ref_before_declaration_test/01: Crash # (switch (x){case 0:var x='Does fuzzy logic tickle?';}): Unhandled node
+ref_before_declaration_test/02: Crash # (switch (x){case 0:var x='Does fuzzy logic tickle?';}): Unhandled node
+ref_before_declaration_test/03: Crash # (switch (x){case 0:var x='Does fuzzy logic tickle?';}): Unhandled node
+ref_before_declaration_test/04: Crash # (switch (x){case 0:var x='Does fuzzy logic tickle?';}): Unhandled node
+ref_before_declaration_test/05: Crash # (switch (x){case 0:var x='Does fuzzy logic tickle?';}): Unhandled node
+ref_before_declaration_test/06: Crash # (switch (x){case 0:var x='Does fuzzy logic tickle?';}): Unhandled node
+ref_before_declaration_test/07: Crash # (switch (x){case 0:var x='Does fuzzy logic tickle?';}): Unhandled node
+ref_before_declaration_test/none: Crash # (switch (x){case 0:var x='Does fuzzy logic tickle?';}): Unhandled node
+refine_receiver_null_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+reg_exp_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regress_11010_test: Crash # unsupported element kind: caller:field
+regress_12561_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+regress_14105_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<int>.
regress_18435_test: Crash # Please triage this failure.
-regress_18535_test: Crash # cannot compile methods that need interceptor calling convention.
-regress_19413_test/01: Crash # (foo.f()): Error expression `foo.f()` unhandled.
+regress_18535_test: Crash # Instance of 'TypeOperator': type check unimplemented for V.
regress_21016_test: Crash # unsupported element kind: list:field
-regress_21793_test/01: Crash # (new A()(499)): Error expression `new A()(499)` unhandled.
-regress_21795_test: Crash # (throw "Expected foo in stacktrace!"): Unhandled node
-regress_21998_1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress_21998_2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress_21998_3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress_21998_4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+regress_21795_test: Crash # (try {foo(t);}finally {if(t==0){try {}catch (err,st){}}}): try/finally
regress_22438_test: Crash # cannot handle async/sync*/async* functions
-regress_22443_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+regress_22443_test: Crash # (D.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
regress_22445_test: Crash # cannot handle async/sync*/async* functions
regress_22579_test: Crash # cannot handle async/sync*/async* functions
regress_22700_test: Crash # Please triage this failure.
-regress_22719_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
regress_22728_test: Crash # cannot handle async/sync*/async* functions
-regress_22777_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-regress_22822_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress_22858_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-regress_22936_test/01: Crash # (try {x=foo();}on NoSuchMethodError {}): "on T" catch block
-regress_22936_test/none: Crash # (try {foo();}on NoSuchMethodError {}): "on T" catch block
-regress_23046_test: Crash # Please triage this failure.
-regress_r24720_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reify_typevar_static_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reify_typevar_static_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reify_typevar_static_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reify_typevar_static_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reify_typevar_static_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-reify_typevar_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-resolution_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-resolve_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rethrow_test: Crash # "on T" catch block
-return_in_loop_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-return_this_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-return_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_assign_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_compound_assign_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_conditional_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_for_update_order_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_if_empty_then_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_if_return_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_if_swap_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_implicit_this_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_logical_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_nested_if1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_nested_if2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_nested_if3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_swap_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_variable_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_while_many_exits_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-rewrite_while_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-round_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-runtime_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-savannah_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-scoped_variables_try_catch_test: Crash # Please triage this failure.
-scope_variable_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-scope_variable_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-second_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-setter0_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-setter1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-setter2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-setter_no_getter_call_test/01: Crash # (topLevel(3)): Error expression `topLevel(3)` unhandled.
-setter_no_getter_call_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-setter_no_getter_test/01: Crash # (topLevel++ ): Error expression `topLevel++ ` unhandled.
-setter_override2_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-setter_override2_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-setter_override2_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-setter_override2_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-setter_override2_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-setter_override_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-setter_override_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-setter_override_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-side_effect_throw_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-skip_expression_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-smaller_4_Interface_Types_A11_t01_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-smaller_4_Interface_Types_A11_t02_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-smi_type_test: Crash # (throw new ExpectException(message)): Unhandled node
-stack_overflow_stacktrace_test: Crash # "on T" catch block
-stack_overflow_test: Crash # "on T" catch block
-stacktrace_rethrow_error_test/none: Crash # (throw "Expected: ${expected} actual: ${actual}"): Unhandled node
-stacktrace_rethrow_error_test/withtraceparameter: Crash # (throw "Expected: ${expected} actual: ${actual}"): Unhandled node
-stacktrace_rethrow_nonerror_test: Crash # (throw "Expected: ${expected} actual: ${actual}"): Unhandled node
-stacktrace_test: Crash # "on T" catch block
-stack_trace_test: Crash # (throw new ExpectException(message)): Unhandled node
-state_mangling2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-state_mangling3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-state_mangling4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-state_mangling_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-statement_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_call_wrong_argument_count_negative_test: Crash # (Niesen.goodCall(1,2,3,4)): handleStaticFunctionIncompatibleInvoke
-static_call_wrong_argument_count_negative_test: Fail # Please triage this failure.
-static_closure_identical_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_const_field_test: Crash # Please triage this failure.
-static_field3_test/01: Crash # (Foo.x): Error expression `Foo.x` unhandled.
-static_field3_test/02: Crash # (Foo.m): Error expression `Foo.m` unhandled.
-static_field3_test/03: Crash # (Foo.m=1): Error expression `Foo.m=1` unhandled.
-static_field3_test/04: Crash # (Foo.x=1): Error expression `Foo.x=1` unhandled.
-static_field_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_field_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_field_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_field_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_field_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_final_field2_test/01: Crash # (A.x=2): Error expression `A.x=2` unhandled.
-static_implicit_closure_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_initializer_type_error_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_inline_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-static_postfix_operator_test: Crash # (throw new ExpectException(message)): Unhandled node
-strict_equal_test: Crash # (throw new ExpectException(message)): Unhandled node
-string_charcode_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_escapes_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_interpolate2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_interpolate_null_test: Crash # (try {s="Hello Mr. ${a.name}";}on NoSuchMethodError catch (e){return;}): "on T" catch block
-string_interpolate_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_interpolation1_negative_test: Crash # Error expression `StringInterpolation1NegativeTest.testMain()` unhandled.
-string_interpolation2_negative_test: Crash # Error expression `StringInterpolation2NegativeTest.testMain()` unhandled.
-string_interpolation4_negative_test: Crash # Error expression `StringInterpolation4NegativeTest.testMain()` unhandled.
-string_interpolation5_negative_test: Crash # Error expression `StringInterpolation5NegativeTest.testMain()` unhandled.
-string_interpolation6_negative_test: Crash # Error expression `StringInterpolation6NegativeTest.testMain()` unhandled.
-string_interpolation7_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_interpolation8_test: Crash # (throw new ExpectException(message)): Unhandled node
-string_interpolation_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_interpolation_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_intrinsics_test: Crash # (throw new ExpectException(message)): Unhandled node
-string_join_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_optimizations_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_supertype_checked_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-string_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-substring_test/01: Crash # "on T" catch block
-substring_test/none: Crash # (try {}on TypeError catch (e){}on ArgumentError catch (e){}): "on T" catch block
-super_abstract_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_all_named_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_assign_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_bound_closure_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_bound_closure_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_call3_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_call3_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_call3_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_call4_test: Crash # (throw new ExpectException(message)): Unhandled node
-super_call_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_closure_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_field_2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_field_access_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_first_constructor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_getter_setter_test: Crash # cannot compile methods that need interceptor calling convention.
-super_implicit_closure_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_inferrer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_operator_index2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_operator_index3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_operator_index4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_operator_index5_test: Crash # cannot compile methods that need interceptor calling convention.
-super_operator_index6_test: Crash # cannot compile methods that need interceptor calling convention.
-super_operator_index7_test: Crash # cannot compile methods that need interceptor calling convention.
-super_operator_index8_test: Crash # cannot compile methods that need interceptor calling convention.
-super_operator_index_test/01: Crash # cannot compile methods that need interceptor calling convention.
-super_operator_index_test/02: Crash # cannot compile methods that need interceptor calling convention.
-super_operator_index_test/03: Crash # (super[4]=42): Error expression `super[4]=42` unhandled.
-super_operator_index_test/04: Crash # (super[4]+=5): Error expression `super[4]+=5` unhandled.
-super_operator_index_test/05: Crash # (super[4]=42): Error expression `super[4]=42` unhandled.
-super_operator_index_test/06: Crash # (super[4]+=5): Error expression `super[4]+=5` unhandled.
-super_operator_index_test/07: Crash # (super[2]): Error expression `super[2]` unhandled.
-super_operator_index_test/none: Crash # cannot compile methods that need interceptor calling convention.
-super_operator_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_setter_interceptor_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_setter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-super_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+regress_22777_test: Crash # cannot handle async/sync*/async* functions
+regress_22822_test: Crash # (try {for(int i=0;i<10;i++ ){return ()=>i+b;}}finally {b=10;}): try/finally
+regress_22936_test/01: Crash # Please triage this failure.
+regress_22936_test/none: Crash # Please triage this failure.
+regress_r24720_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<int>.
+reify_typevar_static_test/01: Crash # Please triage this failure.
+return_type_test: Crash # (returnString1): handleStaticFunctionGet: function(returnString1)
+side_effect_throw_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+skip_expression_test: Crash # Instance of 'TypeOperator': type check unimplemented for OneArg.
+smaller_4_Interface_Types_A11_t02_test: Crash # Instance of 'TypeOperator': type check unimplemented for G<C, C, C>.
+smi_type_test: Crash # Instance of 'TypeOperator': type check unimplemented for Comparable<double>.
+stack_trace_test: Crash # try/finally
+statement_test: Crash # try/finally
+static_closure_identical_test: Crash # (main): handleStaticFunctionGet: function(main)
+static_field_test/02: Crash # (m): handleStaticFunctionGet: function(StaticField1aRunNegativeTest#m)
+static_field_test/04: Crash # (m): handleStaticFunctionGet: function(StaticField2aRunNegativeTest#m)
+static_implicit_closure_test: Crash # (First.foo): handleStaticFunctionGet: function(First#foo)
+static_postfix_operator_test: Crash # (try {if(a++ ==0){inIt=true;}}finally {}): try/finally
+string_charcode_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+string_interpolation_test/01: Crash # (m): handleStaticFunctionGet: function(StringInterpolationTest#m)
+string_interpolation_test/none: Crash # (m): handleStaticFunctionGet: function(StringInterpolationTest#m)
+string_optimizations_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+super_all_named_constructor_test: Crash # Please triage this failure.
+super_bound_closure_test/01: RuntimeError # Please triage this failure.
+super_bound_closure_test/none: RuntimeError # Please triage this failure.
+super_call4_test: RuntimeError # Please triage this failure.
+super_getter_setter_test: RuntimeError # Please triage this failure.
+super_implicit_closure_test: RuntimeError # Please triage this failure.
+super_inferrer_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+super_operator_index2_test: RuntimeError # Please triage this failure.
+super_operator_index5_test: Crash # (super[0]=42): visitUnresolvedSuperIndexSet
+super_operator_index5_test: RuntimeError # Please triage this failure.
+super_operator_index6_test: Crash # (super[0]+=1): visitUnresolvedSuperGetterCompoundIndexSet
+super_operator_index6_test: RuntimeError # Please triage this failure.
+super_operator_index7_test: Crash # (super[0]=42): visitUnresolvedSuperIndexSet
+super_operator_index7_test: RuntimeError # Please triage this failure.
+super_operator_index8_test: Crash # (super[f()]=g()): visitUnresolvedSuperIndexSet
+super_operator_index8_test: RuntimeError # Please triage this failure.
+super_operator_index_test/01: Crash # (super[4]+=5): visitUnresolvedSuperGetterCompoundIndexSet
+super_operator_index_test/03: Crash # (super[4]=42): visitUnresolvedSuperIndexSet
+super_operator_index_test/04: Crash # (super[4]+=5): visitUnresolvedSuperSetterCompoundIndexSet
+super_operator_index_test/05: Crash # (super[4]=42): visitUnresolvedSuperIndexSet
+super_operator_index_test/06: Crash # (super[4]+=5): visitUnresolvedSuperGetterCompoundIndexSet
+super_operator_test: Crash # (testRegression6403): handleStaticFunctionGet: function(testRegression6403)
switch6_test: Crash # (switch (a){case 0:{x=0;break;}case 1:x=1;break;}): Unhandled node
switch8_test: Crash # (switch (new List(1)[0]){case const A():throw 'Test failed';}): Unhandled node
-switch_bad_case_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-switch_bad_case_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-switch_bad_case_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+switch_bad_case_test/02: Crash # (switch (n){case 1:return "I";case 4:return "IV";}): Unhandled node
+switch_bad_case_test/none: Crash # (switch (n){case 1:return "I";case 4:return "IV";}): Unhandled node
switch_case_static_const_test: Crash # (switch (p){case S:break;case A.S:break;case 'abc':break;}): Unhandled node
switch_case_test/none: Crash # (switch (new B()){}): Unhandled node
-switch_fallthru_test: Crash # (try {test(1);}on FallThroughError catch (e){fallthroughCaught=true;}): "on T" catch block
+switch_fallthru_test: Crash # (switch (n){case 0:result="zero";break;case 1:result="one";case 9:result="nine";}): Unhandled node
switch_label2_test: Crash # Unhandled node
-switch_label_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+switch_label_test: Crash # Unhandled node
switch_scope_test: Crash # Unhandled node
switch_test: Crash # (switch (input){case true:result=12;break;case false:result=22;}): Unhandled node
-switch_try_catch_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator1_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator1_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/20: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/30: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/40: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/41: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/50: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/51: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/52: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator2_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator3_test/test1: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-sync_generator3_test/test2: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+switch_try_catch_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+sync_generator1_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable.
+sync_generator1_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable.
+sync_generator2_test/01: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/02: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/03: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/04: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/05: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/06: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/07: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/08: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/09: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/10: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/11: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/20: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/30: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/40: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/41: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/50: Crash # (test02()sync*{yield 12321;}): cannot handle async/sync*/async* functions
+sync_generator2_test/51: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/52: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator2_test/none: Crash # (sync()sync*{yield sync;}): cannot handle async/sync*/async* functions
+sync_generator3_test/test1: Crash # cannot handle async/sync*/async* functions
+sync_generator3_test/test2: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+syncstar_yield_test/copyParameters: Crash # cannot handle async/sync*/async* functions
+syncstar_yield_test/none: Crash # cannot handle async/sync*/async* functions
syncstar_yieldstar_test: Crash # cannot handle async/sync*/async* functions
-syncstar_yield_test/copyParameters: Crash # (throw new ExpectException(message)): Unhandled node
-syncstar_yield_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-temp_mangling_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-ternary_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-test_negative_test: Crash # (TestNegativeTest): Error expression `TestNegativeTest` unhandled.
-third_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-throw1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-throw2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-throw3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-throw4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-throw5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-throw6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-throw8_test: Crash # (throw new ExpectException(message)): Unhandled node
-throw_expr_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-throwing_lazy_variable_test: Crash # (throw 'Test failed'): Unhandled node
-throw_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-top_level_func_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-top_level_getter_arrow_syntax_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-top_level_in_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-top_level_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-top_level_multiple_files_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-top_level_non_prefixed_library_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-top_level_prefixed_declaration_test: Crash # (throw new ExpectException(message)): Unhandled node
-top_level_var_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-transitive_private_library_access_test: Crash # (ClassID): Error expression `ClassID` unhandled.
-tree_shake_typed_selector_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-truncdiv_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-truncdiv_uint32_test: Crash # (throw 'Test failed'): Unhandled node
-try_catch2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-try_catch3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-try_catch4_test: Crash # (throw new ExpectException(message)): Unhandled node
-try_catch5_test: Crash # (throw new ExpectException(message)): Unhandled node
-try_catch_on_syntax_test/02: Crash # (test1()): Error expression `test1()` unhandled.
-try_catch_on_syntax_test/03: Crash # (test1()): Error expression `test1()` unhandled.
-try_catch_on_syntax_test/04: Crash # (test1()): Error expression `test1()` unhandled.
-try_catch_on_syntax_test/05: Crash # (test1()): Error expression `test1()` unhandled.
-try_catch_on_syntax_test/06: Crash # (test1()): Error expression `test1()` unhandled.
-try_catch_on_syntax_test/07: Crash # (throw "catch this!"): Unhandled node
-try_catch_on_syntax_test/10: Crash # (throw "catch this!"): Unhandled node
-try_catch_on_syntax_test/11: Crash # (throw "catch this!"): Unhandled node
-try_catch_on_syntax_test/none: Crash # (throw "catch this!"): Unhandled node
-try_catch_optimized1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-try_catch_optimized2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-try_catch_optimized3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-try_catch_optimized4_test: Crash # (try {String res=m.maythrow(i);failed=true;}on MyError catch (e){}): "on T" catch block
-try_catch_osr_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-try_catch_syntax_test/02: Crash # (testMissingTry()): Error expression `testMissingTry()` unhandled.
-try_catch_syntax_test/03: Crash # (testMissingTry()): Error expression `testMissingTry()` unhandled.
-try_catch_syntax_test/04: Crash # (testMissingTry()): Error expression `testMissingTry()` unhandled.
-try_catch_syntax_test/06: Crash # (testIllegalFinally()): Error expression `testIllegalFinally()` unhandled.
-try_catch_syntax_test/08: Crash # (try {}on MammaMia catch (e){}): "on T" catch block
-try_catch_test/01: Crash # "on T" catch block
-try_catch_test/none: Crash # (throw "up"): Unhandled node
-type_argument_in_super_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_argument_substitution_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_check_const_function_typedef2_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_check_const_function_typedef2_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_check_const_function_typedef_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_checks_in_factory_method_test: Crash # "on T" catch block
-type_check_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_conversion_ssa_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typedef_is_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_equality_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_message_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-typed_selector_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_error_test: Crash # "on T" catch block
-type_guard_conversion_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_intersection_test: Crash # (throw new ExpectException(message)): Unhandled node
-type_literal_prefix_call_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_parameter_literal_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_parameter_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_parameter_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_parameter_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_parameter_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_parameter_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_parameter_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_parameter_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/15: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/16: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_closure_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/14: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_functions_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/08: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/10: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/11: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/12: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/13: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_promotion_more_specific_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_propagation2_test: Crash # cannot compile methods that need interceptor calling convention.
-type_propagation3_test: Crash # (throw 'Test failed'): Unhandled node
-type_propagation_assert_assignable_test: Crash # (throw new ExpectException(message)): Unhandled node
-type_propagation_in_for_update_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_propagation_phi_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_propagation_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_bounds2_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_bounds2_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_bounds2_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_bounds2_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_bounds2_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_bounds2_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_bounds2_test/06: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_bounds2_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_bounds3_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_bounds4_test/01: Crash # "on T" catch block
-type_variable_bounds4_test/none: Crash # "on T" catch block
-type_variable_closure2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_closure_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_conflict2_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_conflict2_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_conflict2_test/04: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_conflict2_test/05: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_conflict2_test/07: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_conflict2_test/09: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_field_initializer_closure_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_field_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_function_type_test: Crash # (throw new ExpectException(message)): Unhandled node
-type_variable_identifier_expression_test: Crash # (try {var buf=new B<A>().doFunc();print(buf);}on NoSuchMethodError catch (e){}): "on T" catch block
-type_variable_initializer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_nested_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-type_variable_scope2_test: Crash # "on T" catch block
+temp_mangling_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+throw1_test: Crash # try/finally
+throw2_test: Crash # try/finally
+throw3_test: Crash # try/finally
+throw4_test: Crash # try/finally
+throw5_test: Crash # try/finally
+throw6_test: Crash # try/finally
+throw8_test: Crash # try/finally
+throw_expr_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+throw_test: Crash # try/finally
+throwing_lazy_variable_test: Crash # unsupported element kind: a:field
+top_level_in_initializer_test: Crash # unable to build cps definition of generative_constructor(Foo#second)
+truncdiv_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+truncdiv_uint32_test: Crash # unsupported element kind: a:field
+try_catch3_test: Crash # try/finally
+try_catch4_test: Crash # try/finally
+try_catch5_test: Crash # (try {try {a=8;return;}finally {b=8==a;entered=true;continue;}}finally {continue;}): try/finally
+try_catch_on_syntax_test/07: Crash # Instance of 'TypeOperator': type check unimplemented for UndefinedClass.
+try_catch_optimized1_test: RuntimeError # Please triage this failure.
+try_catch_optimized2_test: Crash # (try {bar();}finally {}): try/finally
+try_catch_optimized3_test: RuntimeError # Please triage this failure.
+try_catch_optimized4_test: Crash # unsupported element kind: a:field
+try_catch_osr_test: Crash # (try {if(x==null)throw 42;return 99;}finally {}): try/finally
+try_catch_syntax_test/08: Crash # Instance of 'TypeOperator': type check unimplemented for MammaMia.
+try_catch_test/01: Crash # Please triage this failure.
+try_catch_test/none: Crash # Please triage this failure.
+type_argument_in_super_type_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+type_argument_substitution_test: Crash # Instance of 'TypeOperator': type check unimplemented for X<A<String>>.
+type_check_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+type_conversion_ssa_test: Crash # unsupported element kind: array:field
+type_error_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+type_guard_conversion_test: Crash # Instance of 'TypeOperator': type check unimplemented for Comparable.
+type_literal_prefix_call_test/00: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+type_parameter_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for Set.
+type_parameter_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for Set.
+type_parameter_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for Set.
+type_parameter_test/04: Crash # Instance of 'TypeOperator': type check unimplemented for Set.
+type_parameter_test/05: Crash # Instance of 'TypeOperator': type check unimplemented for Set.
+type_parameter_test/06: Crash # Instance of 'TypeOperator': type check unimplemented for Set.
+type_parameter_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for Set.
+type_promotion_closure_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/04: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/05: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/06: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/07: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/08: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/09: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/10: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/11: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/12: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/13: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/14: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/15: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/16: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_closure_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for List<B>.
+type_promotion_functions_test/01: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/02: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/03: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/04: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/05: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/06: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/07: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/08: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/09: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/10: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/11: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/12: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/13: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/14: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_functions_test/none: Crash # (func): handleStaticFunctionGet: function(func)
+type_promotion_more_specific_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/04: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/05: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/06: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/07: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/08: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/09: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/10: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/11: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/12: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/13: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_promotion_more_specific_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for E.
+type_propagation_in_for_update_test: Crash # (foo1): handleStaticFunctionGet: function(foo1)
+type_variable_bounds2_test/00: Crash # Instance of 'TypeOperator': type check unimplemented for I.
+type_variable_bounds2_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for I.
+type_variable_bounds2_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for I.
+type_variable_bounds2_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for I.
+type_variable_bounds2_test/04: Crash # Instance of 'TypeOperator': type check unimplemented for J.
+type_variable_bounds2_test/05: Crash # Instance of 'TypeOperator': type check unimplemented for K.
+type_variable_bounds2_test/06: Crash # Instance of 'TypeOperator': type check unimplemented for I.
+type_variable_bounds2_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for I.
+type_variable_bounds3_test/00: Crash # Instance of 'TypeOperator': type check unimplemented for A<X>.
+type_variable_closure2_test: Crash # Instance of 'TypeOperator': type check unimplemented for A<int>.
+type_variable_closure_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+type_variable_conflict2_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+type_variable_conflict2_test/04: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+type_variable_conflict2_test/05: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+type_variable_conflict2_test/07: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+type_variable_conflict2_test/09: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+type_variable_field_initializer_closure_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<int>.
+type_variable_field_initializer_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<int>.
+type_variable_function_type_test: Crash # Instance of 'TypeOperator': type check unimplemented for Func<S>.
+type_variable_initializer_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map<int, int>.
+type_variable_nested_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<int>.
+type_variable_scope2_test: Crash # Instance of 'TypeOperator': type check unimplemented for Foo.
+type_variable_typedef_test: Crash # (foo): handleStaticFunctionGet: function(foo)
+typed_equality_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+typedef_is_test: Crash # Instance of 'TypeOperator': type check unimplemented for Func1.
typevariable_substitution2_test/01: Crash # Please triage this failure.
-typevariable_substitution2_test/02: Crash # "on T" catch block
+typevariable_substitution2_test/02: Crash # Please triage this failure.
typevariable_substitution2_test/none: Crash # Please triage this failure.
-type_variable_typedef_test: Crash # (throw new ExpectException(message)): Unhandled node
-unary2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-unary_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-unicode_bom_middle_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-unicode_hash_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-unnamed_closure_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-unqual_name_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-unresolved_default_constructor_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-unresolved_in_factory_negative_test: Crash # (foo()): Error expression `foo()` unhandled.
+unresolved_default_constructor_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
unresolved_top_level_method_negative_test: Crash # unsupported element kind: a:field
unresolved_top_level_var_negative_test: Crash # unsupported element kind: a:field
-value_range2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-value_range3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-value_range_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-variable_declaration_metadata_test/06: Crash # (new C()): Error expression `new C()` unhandled.
-variable_declaration_metadata_test/08: Crash # (new C()): Error expression `new C()` unhandled.
-var_init_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-void_type_test: Crash # (try {var x=func();}on TypeError catch (error){got_type_error=true;}): "on T" catch block
-while_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+value_range2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+value_range3_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+value_range_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+void_type_test: Crash # (f): handleStaticFunctionGet: function(f)
diff --git a/tests/lib/async/deferred/deferred_in_isolate_lib.dart b/tests/lib/async/deferred/deferred_in_isolate_lib.dart
deleted file mode 100644
index 64b38db..0000000
--- a/tests/lib/async/deferred/deferred_in_isolate_lib.dart
+++ /dev/null
@@ -1 +0,0 @@
-String f() => "hi";
diff --git a/tests/lib/async/deferred/deferred_in_isolate_test.dart b/tests/lib/async/deferred/deferred_in_isolate_test.dart
deleted file mode 100644
index 08cd0da..0000000
--- a/tests/lib/async/deferred/deferred_in_isolate_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-import 'dart:isolate';
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-import 'deferred_in_isolate_lib.dart' deferred as lib;
-
-loadDeferred(port) {
- lib.loadLibrary().then((_) {
- port.send(lib.f());
- });
-}
-
-main() {
- test("Deferred loading in isolate", () {
- ReceivePort port = new ReceivePort();
- port.first.then(expectAsync((msg) {
- expect(msg, equals("hi"));
- }));
- Isolate.spawn(loadDeferred, port.sendPort);
- });
-}
diff --git a/tests/lib/async/deferred/deferred_library.dart b/tests/lib/async/deferred/deferred_library.dart
deleted file mode 100644
index 186a11a..0000000
--- a/tests/lib/async/deferred/deferred_library.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2013, 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.
-
-library deferred_api_library;
-
-foo(x) {
- print('foo($x)');
- return 42;
-}
diff --git a/tests/lib/async/future_constructor_test.dart b/tests/lib/async/future_constructor_test.dart
index 64d946c..55193d9 100644
--- a/tests/lib/async/future_constructor_test.dart
+++ b/tests/lib/async/future_constructor_test.dart
@@ -6,7 +6,6 @@
import "package:expect/expect.dart";
import 'dart:async';
-import 'dart:isolate';
main() {
compare(func) {
diff --git a/tests/lib/async/stream_controller_async_test.dart b/tests/lib/async/stream_controller_async_test.dart
index 8d61ef9..3fed8a8 100644
--- a/tests/lib/async/stream_controller_async_test.dart
+++ b/tests/lib/async/stream_controller_async_test.dart
@@ -6,7 +6,6 @@
library stream_controller_async_test;
import 'dart:async';
-import 'dart:isolate';
import "package:expect/expect.dart";
import 'package:unittest/unittest.dart';
import 'event_helper.dart';
diff --git a/tests/lib/async/stream_first_where_test.dart b/tests/lib/async/stream_first_where_test.dart
index 2137a7a..6a35d26 100644
--- a/tests/lib/async/stream_first_where_test.dart
+++ b/tests/lib/async/stream_first_where_test.dart
@@ -6,7 +6,6 @@
import "package:expect/expect.dart";
import 'dart:async';
-import 'dart:isolate';
import 'package:unittest/unittest.dart';
import 'event_helper.dart';
import 'stream_state_helper.dart';
diff --git a/tests/lib/async/stream_last_where_test.dart b/tests/lib/async/stream_last_where_test.dart
index 790ae62..f001502 100644
--- a/tests/lib/async/stream_last_where_test.dart
+++ b/tests/lib/async/stream_last_where_test.dart
@@ -6,7 +6,6 @@
import "package:expect/expect.dart";
import 'dart:async';
-import 'dart:isolate';
import 'package:unittest/unittest.dart';
import 'event_helper.dart';
import 'stream_state_helper.dart';
diff --git a/tests/lib/async/stream_single_test.dart b/tests/lib/async/stream_single_test.dart
index 8b3174e..172580b 100644
--- a/tests/lib/async/stream_single_test.dart
+++ b/tests/lib/async/stream_single_test.dart
@@ -7,7 +7,6 @@
import "package:expect/expect.dart";
import 'dart:async';
-import 'dart:isolate';
import 'package:unittest/unittest.dart';
import 'event_helper.dart';
diff --git a/tests/lib/async/stream_single_to_multi_subscriber_test.dart b/tests/lib/async/stream_single_to_multi_subscriber_test.dart
index 766f1bd..2063881 100644
--- a/tests/lib/async/stream_single_to_multi_subscriber_test.dart
+++ b/tests/lib/async/stream_single_to_multi_subscriber_test.dart
@@ -7,7 +7,6 @@
import "package:expect/expect.dart";
import 'dart:async';
-import 'dart:isolate';
import 'package:unittest/unittest.dart';
import 'event_helper.dart';
diff --git a/tests/lib/async/timer_cancel_test.dart b/tests/lib/async/timer_cancel_test.dart
index 4d17fc4..d539cb7 100644
--- a/tests/lib/async/timer_cancel_test.dart
+++ b/tests/lib/async/timer_cancel_test.dart
@@ -5,7 +5,6 @@
library timer_cancel_test;
import 'dart:async';
-import 'dart:isolate';
import 'package:unittest/unittest.dart';
main() {
diff --git a/tests/lib/convert/json_pretty_test.dart b/tests/lib/convert/json_pretty_test.dart
index 0679ff4..a0c3bc6 100644
--- a/tests/lib/convert/json_pretty_test.dart
+++ b/tests/lib/convert/json_pretty_test.dart
@@ -6,12 +6,12 @@
import 'dart:convert';
-import 'package:matcher/matcher.dart';
+import "package:expect/expect.dart";
void _testIndentWithNullChar() {
var encoder = const JsonEncoder.withIndent('\x00');
var encoded = encoder.convert([[],[[]]]);
- expect(encoded, "[\n\x00[],\n\x00[\n\x00\x00[]\n\x00]\n]");
+ Expect.equals("[\n\x00[],\n\x00[\n\x00\x00[]\n\x00]\n]", encoded);
}
void main() {
@@ -91,7 +91,7 @@
var encoder = const JsonEncoder.withIndent(' ');
var prettyOutput = encoder.convert(object);
- expect(prettyOutput, expected);
+ Expect.equals(expected, prettyOutput);
encoder = const JsonEncoder.withIndent('');
@@ -101,14 +101,14 @@
.map((line) => line.trimLeft())
.join('\n');
- expect(flatOutput, flatExpected);
+ Expect.equals(flatExpected, flatOutput);
var compactOutput = JSON.encode(object);
encoder = const JsonEncoder.withIndent(null);
- expect(encoder.convert(object), compactOutput);
+ Expect.equals(compactOutput, encoder.convert(object));
var prettyDecoded = JSON.decode(prettyOutput);
- expect(JSON.encode(prettyDecoded), compactOutput);
+ Expect.equals(compactOutput, JSON.encode(prettyDecoded));
}
diff --git a/tests/lib/developer/inspect_test.dart b/tests/lib/developer/inspect_test.dart
new file mode 100644
index 0000000..9f06215
--- /dev/null
+++ b/tests/lib/developer/inspect_test.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2015, 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:developer';
+import 'package:expect/expect.dart';
+
+class Point {
+ int x, y;
+ Point(this.x, this.y);
+}
+
+void main() {
+ var p_in = new Point(3, 4);
+ var p_out = inspect(p_in);
+ Expect.isTrue(identical(p_in, p_out));
+}
diff --git a/tests/lib/lib.status b/tests/lib/lib.status
index 750a87f..32c9bd9 100644
--- a/tests/lib/lib.status
+++ b/tests/lib/lib.status
@@ -138,7 +138,6 @@
async/timer_cancel_test: RuntimeError,OK # Needs Timer to run.
async/timer_cancel1_test: RuntimeError,OK # Needs Timer to run.
async/timer_cancel2_test: RuntimeError,OK # Needs Timer to run.
-async/timer_isolate_test: Fail, OK # Needs Timer to run.
async/timer_repeat_test: RuntimeError,OK # Needs Timer to run.
async/timer_test: RuntimeError,OK # Needs Timer to run.
async/stream_controller_async_test: RuntimeError # Timer interface not supported; Issue 7728.
@@ -193,13 +192,6 @@
[ $runtime == vm ]
js/*: Skip
-[ $compiler == dart2dart ]
-mirrors/*: Skip # Issue 11511
-async/schedule_microtask6_test: Fail # Issue 10957 - may be related to issue 10910
-
-[ $compiler == dart2dart && $minified ]
-convert/json_lib_test: Fail # Issue 10961
-
[ $compiler == dart2js && $minified ]
mirrors/mirrors_used_get_name_test: RuntimeError
mirrors/mirrors_used_get_name2_test: RuntimeError
@@ -251,7 +243,6 @@
async/timer_test: Fail, Pass # Issue 15487
async/multiple_timer_test: Fail, Pass # Issue 15487
async/stream_periodic3_test: Fail, Pass # Issue 15487
-async/timer_isolate_test: Fail, Pass # Issue 15487. Issue 13921: spawnFunction is not allowed on Dartium's DOM thread.
async/timer_isActive_test: Fail, Pass # Issue 22352
mirrors/immutable_collections_test: SkipSlow # Dartium debug uses -O0, so this will just timeout and waste bot cycles.
mirrors/mirrors_reader_test: SkipSlow # Dartium debug uses -O0, so this will just timeout and waste bot cycles.
@@ -276,14 +267,6 @@
[ $compiler == dart2js && $runtime == safarimobilesim ]
mirrors/mirrors_reader_test: SkipSlow # Times out. Issue 20806.
-[ $compiler == dart2dart ]
-# Deferred loading is not supported by dart2dart.
-async/deferred/deferred_in_isolate_test: Skip # Issue 17523
-
-[ $compiler == none && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
-# Dart vm does not support spawn from a dom-enabled isolate.
-async/deferred/deferred_in_isolate_test: RuntimeError # Issue 16209
-
[ $compiler == dart2js && $runtime == jsshell ]
async/schedule_microtask_test: Fail # Preamble file does not correctly implement scheduleImmediate.
@@ -342,515 +325,367 @@
convert/streamed_conversion_json_utf8_decode_test: Skip # Timeout.
[ $compiler == dart2js && $cps_ir ]
-async/catch_errors11_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors12_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors13_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors14_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors15_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors16_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors17_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors18_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors19_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors20_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors21_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors22_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors23_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors24_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors25_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors26_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors27_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors28_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors2_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors3_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors4_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors5_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors6_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors7_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors8_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/catch_errors_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/deferred/deferred_in_isolate_test: Crash # cannot compile methods that need interceptor calling convention.
-async/first_regression_test: Crash # cannot compile methods that need interceptor calling convention.
-async/future_constructor_test: Crash # (throw new ExpectException(message)): Unhandled node
-async/future_delayed_error_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/future_microtask_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/futures_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/future_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/future_timeout_test: Crash # cannot compile methods that need interceptor calling convention.
-async/future_value_chain2_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/future_value_chain3_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/future_value_chain4_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/future_value_chain_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/intercept_print1_test: Crash # (throw new ExpectException(message)): Unhandled node
-async/intercept_schedule_microtask1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async/intercept_schedule_microtask2_test: Crash # (throw new ExpectException(message)): Unhandled node
-async/intercept_schedule_microtask3_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/intercept_schedule_microtask4_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/intercept_schedule_microtask5_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/intercept_schedule_microtask6_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/multiple_timer_test: Crash # cannot compile methods that need interceptor calling convention.
-async/print_test/01: Crash # cannot compile methods that need interceptor calling convention.
-async/print_test/none: Crash # cannot compile methods that need interceptor calling convention.
-async/run_zoned1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async/run_zoned4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async/run_zoned5_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/run_zoned6_test/01: Crash # (rethrow;): Unhandled node
-async/run_zoned6_test/none: Crash # (rethrow;): Unhandled node
-async/run_zoned7_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/run_zoned8_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/run_zoned9_test/01: Crash # (rethrow;): Unhandled node
-async/run_zoned9_test/none: Crash # (rethrow;): Unhandled node
-async/schedule_microtask2_test: Crash # cannot compile methods that need interceptor calling convention.
-async/schedule_microtask3_test: Crash # cannot compile methods that need interceptor calling convention.
-async/schedule_microtask5_test: Crash # cannot compile methods that need interceptor calling convention.
-async/schedule_microtask_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/slow_consumer2_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/slow_consumer3_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/slow_consumer_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stack_trace01_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stack_trace02_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stack_trace03_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stack_trace04_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stack_trace05_test: Crash # (throw "should never be reached"): Unhandled node
-async/stack_trace06_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stack_trace07_test: Crash # (throw "bad things happen"): Unhandled node
-async/stack_trace08_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stack_trace09_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stack_trace10_test: Crash # (throw "should never be reached"): Unhandled node
-async/stack_trace11_test: Crash # (throw "Unreachable"): Unhandled node
-async/stack_trace12_test: Crash # (throw "Unreachable"): Unhandled node
-async/stack_trace13_test: Crash # (throw "Unreachable"): Unhandled node
-async/stack_trace14_test: Crash # (throw "Unreachable"): Unhandled node
-async/stack_trace15_test: Crash # (throw "Unreachable"): Unhandled node
-async/stack_trace16_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stack_trace17_test: Crash # (throw "Unreachable"): Unhandled node
-async/stack_trace18_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stack_trace19_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stack_trace20_test: Crash # (throw "should never be reached"): Unhandled node
-async/stack_trace21_test: Crash # Unhandled node
-async/stack_trace22_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stack_trace23_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async/stack_trace24_test: Crash # (throw "should never be reached"): Unhandled node
-async/stack_trace25_test: Crash # (throw "unreachable"): Unhandled node
-async/stream_controller_async_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_controller_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stream_event_transformed_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stream_first_where_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_from_iterable_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_iterator_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_join_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_last_where_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_listen_zone_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stream_periodic2_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_periodic3_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_periodic4_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_periodic5_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_periodic_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_single_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_single_to_multi_subscriber_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_state_nonzero_timer_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_state_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_subscription_as_future_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_subscription_cancel_test: Crash # cannot compile methods that need interceptor calling convention.
+async/catch_errors2_test: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+async/catch_errors3_test: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+async/catch_errors_test: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+async/deferred/deferred_in_isolate_test: Crash # (loadDeferred): handleStaticFunctionGet: function(loadDeferred)
+async/first_regression_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/future_timeout_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/future_value_chain4_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+async/intercept_print1_test: Crash # unsupported element kind: events:field
+async/intercept_schedule_microtask2_test: Crash # (body): handleStaticFunctionGet: function(body)
+async/intercept_schedule_microtask3_test: Crash # (body): handleStaticFunctionGet: function(body)
+async/intercept_schedule_microtask4_test: Crash # (body): handleStaticFunctionGet: function(body)
+async/intercept_schedule_microtask5_test: Crash # (handler): handleStaticFunctionGet: function(handler)
+async/intercept_schedule_microtask6_test: Crash # (body): handleStaticFunctionGet: function(body)
+async/multiple_timer_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/print_test/01: Crash # (interceptedPrint): handleStaticFunctionGet: function(interceptedPrint)
+async/print_test/none: Crash # (interceptedPrint): handleStaticFunctionGet: function(interceptedPrint)
+async/schedule_microtask2_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/schedule_microtask3_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/schedule_microtask5_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/schedule_microtask_test: Crash # Please triage this failure.
+async/stack_trace09_test: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+async/stream_controller_async_test: Crash # unsupported element kind: _defaultEnvironment:field
+async/stream_controller_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+async/stream_event_transformed_test: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+async/stream_first_where_test: Crash # unsupported element kind: _defaultEnvironment:field
+async/stream_from_iterable_test: Crash # unsupported element kind: _defaultEnvironment:field
+async/stream_iterator_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/stream_join_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/stream_last_where_test: Crash # unsupported element kind: _defaultEnvironment:field
+async/stream_listen_zone_test: Crash # Unhandled node
+async/stream_periodic2_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/stream_periodic3_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/stream_periodic4_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+async/stream_periodic5_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/stream_periodic_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/stream_single_test: Crash # unsupported element kind: _defaultEnvironment:field
+async/stream_single_to_multi_subscriber_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/stream_state_nonzero_timer_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/stream_state_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/stream_subscription_as_future_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/stream_subscription_cancel_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
async/stream_timeout_test: Crash # Please triage this failure.
-async/stream_transformation_broadcast_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_transformer_from_handlers_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/stream_transformer_test: Crash # (throw new ExpectException(message)): Unhandled node
-async/stream_transform_test: Crash # cannot compile methods that need interceptor calling convention.
-async/stream_zones_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/timer_cancel1_test: Crash # cannot compile methods that need interceptor calling convention.
-async/timer_cancel2_test: Crash # cannot compile methods that need interceptor calling convention.
-async/timer_cancel_test: Crash # cannot compile methods that need interceptor calling convention.
-async/timer_isActive_test: Crash # cannot compile methods that need interceptor calling convention.
-async/timer_isolate_test: Crash # cannot compile methods that need interceptor calling convention.
-async/timer_not_available_test: Crash # (try {new Timer(ms*5,(){});}on UnsupportedError catch (e){failed=true;}): "on T" catch block
+async/stream_transform_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/stream_transformation_broadcast_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/stream_transformer_from_handlers_test: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+async/stream_transformer_test: Crash # (_defaultData): handleStaticFunctionGet: function(_defaultData)
+async/timer_cancel1_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/timer_cancel2_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/timer_cancel_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/timer_isActive_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+async/timer_isolate_test: Crash # (createTimer): handleStaticFunctionGet: function(createTimer)
async/timer_regress22626_test: Crash # unsupported element kind: rng:field
-async/timer_repeat_test: Crash # cannot compile methods that need interceptor calling convention.
-async/timer_test: Crash # cannot compile methods that need interceptor calling convention.
-async/zone_bind_callback_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async/zone_bind_callback_unary_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async/zone_bind_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/zone_create_periodic_timer_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/zone_create_timer2_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/zone_create_timer_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/zone_debug_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/zone_empty_description2_test: Crash # (throw new ExpectException(message)): Unhandled node
-async/zone_empty_description_test: Crash # (throw new ExpectException(message)): Unhandled node
-async/zone_error_callback_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/zone_fork_test: Crash # (throw new ExpectException(message)): Unhandled node
-async/zone_future_schedule_microtask_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/zone_register_callback_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async/zone_register_callback_unary_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-async/zone_root_bind_test: Crash # (throw new ExpectException(message)): Unhandled node
-async/zone_run_guarded_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/zone_run_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/zone_run_unary_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-async/zone_value_test: Crash # (throw new ExpectException(message)): Unhandled node
-collection/hash_map_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-collection/hash_set_test: Crash # (throw new ExpectException(message)): Unhandled node
-collection/linked_list_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/ascii_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/chunked_conversion1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/chunked_conversion2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/chunked_conversion_json_decode1_test: Crash # (throw new ExpectException(message)): Unhandled node
-convert/chunked_conversion_json_encode1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/chunked_conversion_utf82_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/chunked_conversion_utf83_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/chunked_conversion_utf84_test: Crash # (throw new ExpectException(message)): Unhandled node
-convert/chunked_conversion_utf85_test: Crash # (throw new ExpectException(message)): Unhandled node
-convert/chunked_conversion_utf86_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/chunked_conversion_utf87_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/chunked_conversion_utf88_test: Crash # (throw new ExpectException(message)): Unhandled node
-convert/chunked_conversion_utf89_test: Crash # (throw new ExpectException(message)): Unhandled node
-convert/chunked_conversion_utf8_test: Crash # (throw new ExpectException(message)): Unhandled node
-convert/codec1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/codec2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/encoding_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-convert/html_escape_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/json_chunk_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/json_lib_test: Crash # cannot compile methods that need interceptor calling convention.
-convert/json_pretty_test: Crash # Please triage this failure.
-convert/json_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/json_toEncodable_reviver_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/json_utf8_chunk_test: Crash # "on T" catch block
-convert/json_util_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/latin1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/line_splitter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/streamed_conversion_json_decode1_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-convert/streamed_conversion_json_encode1_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-convert/streamed_conversion_json_utf8_decode_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-convert/streamed_conversion_json_utf8_encode_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-convert/streamed_conversion_utf8_decode_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-convert/streamed_conversion_utf8_encode_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-convert/utf82_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/utf83_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/utf84_test: Crash # (throw new ExpectException(message)): Unhandled node
-convert/utf85_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-convert/utf8_encode_test: Crash # (throw new ExpectException(message)): Unhandled node
-convert/utf8_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-js/datetime_roundtrip_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-js/null_test: Crash # cannot compile methods that need interceptor calling convention.
-math/coin_test: Crash # (throw new ExpectException(message)): Unhandled node
-math/double_pow_test: Crash # (throw new ExpectException(message)): Unhandled node
-math/low_test: Crash # (throw new ExpectException(message)): Unhandled node
-math/math2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-math/math_parse_double_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-math/math_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-math/min_max_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-math/pi_test: Crash # (throw new ExpectException(message)): Unhandled node
-math/point_test: Crash # cannot compile methods that need interceptor calling convention.
-math/random_big_test: Crash # (throw new ExpectException(message)): Unhandled node
-math/random_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+async/timer_repeat_test: Crash # (timeoutHandler): handleStaticFunctionGet: function(timeoutHandler)
+async/timer_test: Crash # (timeoutHandler): handleStaticFunctionGet: function(timeoutHandler)
+async/zone_debug_test: Crash # unsupported element kind: events:field
+async/zone_error_callback_test: Crash # unsupported element kind: replaceZoneSpec:field
+collection/linked_list_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+convert/ascii_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+convert/chunked_conversion2_test: RuntimeError # Please triage this failure.
+convert/chunked_conversion_json_decode1_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+convert/chunked_conversion_json_encode1_test: Crash # unsupported element kind: TESTS:field
+convert/chunked_conversion_utf82_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+convert/chunked_conversion_utf84_test: Crash # unsupported element kind: UNICODE_TESTS:field
+convert/chunked_conversion_utf85_test: Crash # unsupported element kind: UNICODE_TESTS:field
+convert/chunked_conversion_utf86_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+convert/chunked_conversion_utf87_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+convert/chunked_conversion_utf8_test: Crash # unsupported element kind: UNICODE_TESTS:field
+convert/codec2_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+convert/encoding_test: Crash # unsupported element kind: UNICODE_TESTS:field
+convert/json_chunk_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+convert/json_lib_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+convert/json_test: Crash # (badFormat): handleStaticFunctionGet: function(badFormat)
+convert/json_toEncodable_reviver_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+convert/json_utf8_chunk_test: Crash # unsupported element kind: UNICODE_TESTS:field
+convert/json_util_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+convert/latin1_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+convert/line_splitter_test: Crash # Please triage this failure.
+convert/streamed_conversion_json_decode1_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+convert/streamed_conversion_json_encode1_test: Crash # unsupported element kind: TESTS:field
+convert/streamed_conversion_json_utf8_decode_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+convert/streamed_conversion_json_utf8_encode_test: Crash # unsupported element kind: JSON_UTF8:field
+convert/streamed_conversion_utf8_decode_test: Crash # unsupported element kind: UNICODE_TESTS:field
+convert/streamed_conversion_utf8_encode_test: Crash # unsupported element kind: UNICODE_TESTS:field
+convert/utf82_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+convert/utf8_encode_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+convert/utf8_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+js/null_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+math/double_pow_test: Crash # unsupported element kind: samples:field
+math/math_parse_double_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+math/min_max_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+math/point_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+math/random_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
math/rectangle_test: Crash # Please triage this failure.
-mirrors/abstract_class_test/00: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/abstract_class_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/abstract_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/accessor_cache_overflow_test: Crash # cannot compile methods that need interceptor calling convention.
-mirrors/basic_types_in_dart_core_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/circular_factory_redirection_test/01: Crash # (new A.circular()): Error expression `new A.circular()` unhandled.
-mirrors/circular_factory_redirection_test/02: Crash # (new A.circular2()): Error expression `new A.circular2()` unhandled.
-mirrors/circular_factory_redirection_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/class_declarations_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/class_declarations_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/class_mirror_location_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/class_mirror_type_variables_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/closures_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/closurization_equivalence_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/constructor_kinds_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/constructor_kinds_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/constructor_private_name_test: Crash # cannot compile methods that need interceptor calling convention.
-mirrors/constructors_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/dart2js_mirrors_test: Crash # (throw new StateError('FAILED: ${name}.\n${e}\n${trace}')): Unhandled node
-mirrors/declarations_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/deferred_mirrors_metadata_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-mirrors/deferred_mirrors_metatarget_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-mirrors/deferred_mirrors_update_test: Crash # handleStaticGetterInvoke: foreign: function(loadLibrary)
-mirrors/deferred_type_test: Crash # handleStaticFunctionGet: function(bad)
-mirrors/delegate_call_through_getter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/delegate_function_invocation_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/delegate_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/enum_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/equality_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/fake_function_with_call_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/fake_function_without_call_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/field_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/function_type_mirror_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/generic_bounded_by_type_parameter_test/01: Crash # (try {}on TypeError catch (e){Expect.isTrue(inCheckedMode());}): "on T" catch block
-mirrors/generic_bounded_by_type_parameter_test/02: Crash # "on T" catch block
-mirrors/generic_bounded_by_type_parameter_test/none: Crash # (try {}on TypeError catch (e){Expect.isTrue(inCheckedMode());}): "on T" catch block
-mirrors/generic_bounded_test/01: Crash # (try {}on TypeError catch (e){Expect.isTrue(inCheckedMode());}): "on T" catch block
-mirrors/generic_bounded_test/02: Crash # "on T" catch block
-mirrors/generic_bounded_test/none: Crash # (try {}on TypeError catch (e){Expect.isTrue(inCheckedMode());}): "on T" catch block
-mirrors/generic_class_declaration_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/generic_f_bounded_mixin_application_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/generic_f_bounded_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/generic_f_bounded_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/generic_function_typedef_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/generic_interface_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/generic_interface_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/generic_list_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/generic_local_function_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/generic_mixin_applications_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/generic_mixin_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/generics_double_substitution_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/generics_double_substitution_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/generics_dynamic_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/generics_special_types_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/generics_substitution_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/generics_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/generics_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/generic_superclass_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/generic_superclass_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/generic_type_mirror_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/get_field_cache_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/get_field_static_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/get_field_static_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/get_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/get_symbol_name_no_such_method_test: Crash # (throw 'Expected: "${expected}", but got "${actual}"'): Unhandled node
-mirrors/globalized_closures2_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/globalized_closures2_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/globalized_closures_test/00: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/globalized_closures_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/hierarchy_invariants_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/hot_get_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/hot_set_field_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/immutable_collections_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/inference_and_no_such_method_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/inherited_metadata_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/inherit_field_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/initializing_formals_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/initializing_formals_test/03: Crash # cannot compile methods that need interceptor calling convention.
-mirrors/initializing_formals_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/instance_members_easier_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/instance_members_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/instance_members_unimplemented_interface_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/instance_members_with_override_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/instantiate_abstract_class_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/intercepted_cache_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/intercepted_class_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/intercepted_object_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/intercepted_superclass_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invocation_cache_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invocation_fuzz_test/emptyarray: Crash # unsupported element kind: queue:field
-mirrors/invocation_fuzz_test/false: Crash # unsupported element kind: queue:field
-mirrors/invocation_fuzz_test/none: Crash # unsupported element kind: queue:field
-mirrors/invocation_fuzz_test/smi: Crash # unsupported element kind: queue:field
-mirrors/invocation_fuzz_test/string: Crash # unsupported element kind: queue:field
-mirrors/invoke_call_on_closure_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_call_through_getter_previously_accessed_test/named: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_call_through_getter_previously_accessed_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_call_through_getter_test/named: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_call_through_getter_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_call_through_implicit_getter_previously_accessed_test/named: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_call_through_implicit_getter_previously_accessed_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_call_through_implicit_getter_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_closurization2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_closurization_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_import_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_named_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_named_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_natives_malicious_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_private_test: Crash # cannot compile methods that need interceptor calling convention.
-mirrors/invoke_private_wrong_library_test: Crash # Unhandled node
-mirrors/invoke_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/invoke_throws_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/is_odd_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/lazy_static_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/libraries_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/library_declarations_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/library_declarations_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/library_enumeration_deferred_loading_test: Crash # handleStaticGetterInvoke: foreign: function(loadLibrary)
-mirrors/library_exports_hidden_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/library_exports_shown_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/library_import_deferred_loading_test: Crash # handleStaticGetterInvoke: foreign: function(loadLibrary)
-mirrors/library_imports_bad_metadata_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/library_imports_bad_metadata_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/library_imports_deferred_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/library_imports_hidden_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/library_imports_metadata_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/library_imports_prefixed_show_hide_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/library_imports_prefixed_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/library_imports_shown_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/library_uri_package_test: Crash # cannot compile methods that need interceptor calling convention.
-mirrors/list_constructor_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/list_constructor_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/load_library_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/local_function_is_static_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/local_isolate_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/metadata_allowed_values_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/02: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/03: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/04: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/05: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/06: Crash # (I): Error expression `I` unhandled.
-mirrors/metadata_allowed_values_test/07: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/08: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/09: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/10: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/11: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/13: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/14: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/15: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/16: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/23: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/24: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/25: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/26: Crash # (JJ): Error expression `JJ` unhandled.
-mirrors/metadata_allowed_values_test/27: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_allowed_values_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_constructed_constant_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_constructor_arguments_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_constructor_arguments_test/02: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_constructor_arguments_test/03: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_constructor_arguments_test/04: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_constructor_arguments_test/05: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_constructor_arguments_test/06: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_constructor_arguments_test/07: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_constructor_arguments_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_nested_constructor_call_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_nested_constructor_call_test/02: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_nested_constructor_call_test/03: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_nested_constructor_call_test/04: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_nested_constructor_call_test/05: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_nested_constructor_call_test/06: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_nested_constructor_call_test/07: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_nested_constructor_call_test/08: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_nested_constructor_call_test/09: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/metadata_nested_constructor_call_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/method_mirror_location_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/method_mirror_name_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/method_mirror_properties_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/method_mirror_returntype_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/method_mirror_source_line_ending_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/method_mirror_source_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+mirrors/abstract_class_test/00: Crash # (baz): handleStaticFunctionGet: function(baz)
+mirrors/abstract_class_test/none: Crash # (baz): handleStaticFunctionGet: function(baz)
+mirrors/abstract_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/accessor_cache_overflow_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/basic_types_in_dart_core_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/circular_factory_redirection_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/circular_factory_redirection_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/circular_factory_redirection_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/class_declarations_test/01: Crash # (stringify): handleStaticFunctionGet: function(stringify)
+mirrors/class_declarations_test/none: Crash # (stringify): handleStaticFunctionGet: function(stringify)
+mirrors/class_mirror_location_test: Crash # (main): handleStaticFunctionGet: function(main)
+mirrors/class_mirror_type_variables_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/closures_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/closurization_equivalence_test: Crash # (topLevelMethod): handleStaticFunctionGet: function(topLevelMethod)
+mirrors/constructor_kinds_test/01: Crash # (=Class.factoryConstructor;): Unhandled node
+mirrors/constructor_kinds_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/constructor_private_name_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/constructors_test: Crash # (compareSymbols): handleStaticFunctionGet: function(compareSymbols)
+mirrors/dart2js_mirrors_test: Crash # Instance of 'TypeOperator': type check unimplemented for Class.
+mirrors/declarations_type_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map<Symbol, DeclarationMirror>.
+mirrors/deferred_mirrors_metadata_test: Crash # (lib1.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+mirrors/deferred_mirrors_metatarget_test: Crash # (lib.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+mirrors/deferred_mirrors_update_test: Crash # (l.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+mirrors/deferred_type_test: Crash # (bad): handleStaticFunctionGet: function(bad)
+mirrors/delegate_call_through_getter_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/delegate_function_invocation_test: Crash # (topLevelFunction): handleStaticFunctionGet: function(topLevelFunction)
+mirrors/delegate_test: RuntimeError # Please triage this failure.
+mirrors/enum_test: Crash # (stringify): handleStaticFunctionGet: function(stringify)
+mirrors/equality_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+mirrors/fake_function_with_call_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/fake_function_without_call_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/field_type_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/function_type_mirror_test: Crash # (bar): handleStaticFunctionGet: function(bar)
+mirrors/generic_bounded_by_type_parameter_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_bounded_by_type_parameter_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_bounded_by_type_parameter_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_bounded_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_bounded_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_bounded_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_class_declaration_test: Crash # (stringify): handleStaticFunctionGet: function(stringify)
+mirrors/generic_f_bounded_mixin_application_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_f_bounded_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_f_bounded_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_function_typedef_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+mirrors/generic_interface_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_interface_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_list_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_local_function_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_mixin_applications_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_mixin_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_superclass_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_superclass_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generic_type_mirror_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generics_double_substitution_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generics_double_substitution_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generics_dynamic_test: Crash # Please triage this failure.
+mirrors/generics_special_types_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/generics_substitution_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+mirrors/generics_test/01: Crash # Please triage this failure.
+mirrors/generics_test/none: Crash # Please triage this failure.
+mirrors/globalized_closures2_test/00: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/globalized_closures2_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/globalized_closures_test/00: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/globalized_closures_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/hierarchy_invariants_test: Crash # (checkLibrary): handleStaticFunctionGet: function(checkLibrary)
+mirrors/hot_get_field_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/hot_set_field_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/immutable_collections_test: Crash # (checkLibrary): handleStaticFunctionGet: function(checkLibrary)
+mirrors/inference_and_no_such_method_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/inherit_field_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/inherited_metadata_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+mirrors/initializing_formals_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/initializing_formals_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/initializing_formals_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/instance_members_easier_test: Crash # (=Superclass.inheritedNormalFactory;): Unhandled node
+mirrors/instance_members_test: Crash # (=Superclass.inheritedNormalFactory;): Unhandled node
+mirrors/instance_members_unimplemented_interface_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/instance_members_with_override_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/instantiate_abstract_class_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/intercepted_cache_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/intercepted_class_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/intercepted_object_test: Crash # Instance of 'TypeOperator': type check unimplemented for List.
+mirrors/intercepted_superclass_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invocation_fuzz_test/emptyarray: Crash # (checkLibrary): handleStaticFunctionGet: function(checkLibrary)
+mirrors/invocation_fuzz_test/false: Crash # (checkLibrary): handleStaticFunctionGet: function(checkLibrary)
+mirrors/invocation_fuzz_test/none: Crash # (checkLibrary): handleStaticFunctionGet: function(checkLibrary)
+mirrors/invocation_fuzz_test/smi: Crash # (checkLibrary): handleStaticFunctionGet: function(checkLibrary)
+mirrors/invocation_fuzz_test/string: Crash # (checkLibrary): handleStaticFunctionGet: function(checkLibrary)
+mirrors/invoke_call_on_closure_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_call_through_getter_previously_accessed_test/named: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_call_through_getter_previously_accessed_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_call_through_getter_test/named: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_call_through_getter_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_call_through_implicit_getter_previously_accessed_test/named: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_call_through_implicit_getter_previously_accessed_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_call_through_implicit_getter_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_closurization2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_closurization_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_import_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_named_test/01: Crash # (a): handleStaticFunctionGet: function(a)
+mirrors/invoke_named_test/none: Crash # (a): handleStaticFunctionGet: function(a)
+mirrors/invoke_natives_malicious_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_private_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/invoke_private_wrong_library_test: Crash # (asyncSuccess): handleStaticFunctionGet: function(asyncSuccess)
+mirrors/invoke_test: Crash # (isNoSuchMethodError): handleStaticFunctionGet: function(isNoSuchMethodError)
+mirrors/invoke_throws_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/is_odd_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/lazy_static_test: Crash # unsupported element kind: hello:field
+mirrors/libraries_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/library_declarations_test/01: Crash # (stringify): handleStaticFunctionGet: function(stringify)
+mirrors/library_declarations_test/none: Crash # (stringify): handleStaticFunctionGet: function(stringify)
+mirrors/library_enumeration_deferred_loading_test: Crash # (other.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+mirrors/library_exports_hidden_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/library_exports_shown_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/library_import_deferred_loading_test: Crash # (other.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+mirrors/library_imports_bad_metadata_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/library_imports_bad_metadata_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/library_imports_deferred_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/library_imports_hidden_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/library_imports_metadata_test: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/library_imports_prefixed_show_hide_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/library_imports_prefixed_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/library_imports_shown_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/library_uri_package_test: Crash # (_defaultErrorFormatter): handleStaticFunctionGet: function(_defaultErrorFormatter)
+mirrors/list_constructor_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/list_constructor_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/load_library_test: Crash # (asyncSuccess): handleStaticFunctionGet: function(asyncSuccess)
+mirrors/local_function_is_static_test: Crash # (topLevel): handleStaticFunctionGet: function(topLevel)
+mirrors/local_isolate_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/metadata_allowed_values_test/01: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/02: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/03: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/04: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/05: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/06: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/07: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/08: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/09: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/10: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/11: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/13: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/14: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/15: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/16: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/23: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/24: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/25: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/26: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/27: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_allowed_values_test/none: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_constructed_constant_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/metadata_constructor_arguments_test/01: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_constructor_arguments_test/02: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_constructor_arguments_test/03: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_constructor_arguments_test/04: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_constructor_arguments_test/05: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_constructor_arguments_test/06: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_constructor_arguments_test/07: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_constructor_arguments_test/none: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_nested_constructor_call_test/01: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_nested_constructor_call_test/02: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_nested_constructor_call_test/03: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_nested_constructor_call_test/04: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_nested_constructor_call_test/05: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_nested_constructor_call_test/06: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_nested_constructor_call_test/07: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_nested_constructor_call_test/08: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_nested_constructor_call_test/09: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/metadata_nested_constructor_call_test/none: Crash # (reflect): handleStaticFunctionGet: origin function(reflect)
+mirrors/method_mirror_location_test: Crash # (topLevelInMainFile): handleStaticFunctionGet: function(topLevelInMainFile)
+mirrors/method_mirror_name_test: Crash # (doNothing42): handleStaticFunctionGet: function(doNothing42)
+mirrors/method_mirror_properties_test: Crash # (doNothing42): handleStaticFunctionGet: function(doNothing42)
+mirrors/method_mirror_returntype_test: Crash # (intFunc): handleStaticFunctionGet: function(intFunc)
+mirrors/method_mirror_source_line_ending_test: Crash # (oneLineLF): handleStaticFunctionGet: function(oneLineLF)
+mirrors/method_mirror_source_test: Crash # Instance of 'TypeOperator': type casts not implemented.
mirrors/mirror_in_static_init_test/01: Crash # unsupported element kind: staticField:field
mirrors/mirror_in_static_init_test/none: Crash # unsupported element kind: staticField:field
-mirrors/mirrors_nsm_test/dart2js: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/mirrors_nsm_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/mirrors_reader_test: Crash # (throw 'Unexpected errors occurred reading mirrors.'): Unhandled node
-mirrors/mirrors_resolve_fields_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/mirrors_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/mirrors_used_get_name2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/mirrors_used_get_name_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/mirrors_used_inheritance_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/mirrors_used_typedef_declaration_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/mirrors_used_typedef_declaration_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/mixin_application_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/mixin_members_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/mixin_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/model_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/native_class_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/new_instance_optional_arguments_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/new_instance_with_type_arguments_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/no_metadata_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/null2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/null_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/operator_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/optional_parameters_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/parameter_annotation_mirror_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/parameter_is_const_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/parameter_is_const_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/parameter_metadata_test: Crash # (throw 'Null metadata on ${mirror}'): Unhandled node
-mirrors/parameter_of_mixin_app_constructor_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/parameter_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/parameter_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/private_symbol_mangling_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/private_symbol_test: Crash # cannot compile methods that need interceptor calling convention.
-mirrors/private_types_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/proxy_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/raw_type_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/raw_type_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/redirecting_factory_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/redirecting_factory_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/redirecting_factory_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflect_class_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflect_class_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflect_class_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflected_type_classes_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflected_type_classes_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflected_type_classes_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflected_type_classes_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflected_type_function_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflected_type_special_types_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflected_type_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflected_type_test/02: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflected_type_test/03: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflected_type_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflected_type_typedefs_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflected_type_typevars_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflectively_instantiate_uninstantiated_class_test: Crash # "on T" catch block
-mirrors/reflect_model_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/reflect_two_classes_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/regress_14304_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/regress_19731_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/relation_assignable_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/relation_subclass_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/relation_subtype_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/removed_api_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/repeated_private_anon_mixin_app_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/return_type_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/runtime_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/set_field_with_final_inheritance_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/set_field_with_final_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/spawn_function_root_library_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/static_members_easier_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/static_members_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/static_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/superclass2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/superclass_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/symbol_validation_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/symbol_validation_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/synthetic_accessor_properties_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/top_level_accessors_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/to_string_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/type_argument_is_type_variable_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/typearguments_mirror_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/typedef_deferred_library_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-mirrors/typedef_in_signature_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/typedef_library_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/typedef_metadata_test: Crash # (throw 'Null metadata on ${mirror}'): Unhandled node
-mirrors/typedef_reflected_type_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/typedef_reflected_type_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/typedef_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/type_mirror_for_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/type_variable_is_static_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/type_variable_owner_test/01: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/type_variable_owner_test/none: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/unmangled_type_test: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/unnamed_library_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-mirrors/variable_is_const_test/01: Crash # (throw new ExpectException(message)): Unhandled node
-mirrors/variable_is_const_test/none: Crash # (throw new ExpectException(message)): Unhandled node
-profiler/metrics_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-profiler/user_tags_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/byte_data_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/constructor_checks_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/endianness_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/float32x4_clamp_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/float32x4_cross_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/float32x4_list_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/float32x4_shuffle_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/float32x4_sign_mask_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/float32x4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/float32x4_transpose_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/float32x4_two_arg_shuffle_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/float32x4_unbox_phi_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/float32x4_unbox_regress_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/float64x2_functional_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/int32x4_arithmetic_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/int32x4_bigint_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/int32x4_list_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/int32x4_shuffle_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/int32x4_sign_mask_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/int32x4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/int64_list_load_store_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/setRange_1_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/setRange_2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/setRange_3_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/setRange_4_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/setRange_5_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/simd_store_to_load_forward_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/typed_data_hierarchy_int64_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/typed_data_hierarchy_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/typed_data_list_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/typed_data_load2_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/typed_data_sublist_type_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-typed_data/typed_list_iterable_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+mirrors/mirrors_nsm_test/dart2js: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/mirrors_nsm_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/mirrors_reader_test: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable.
+mirrors/mirrors_resolve_fields_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/mirrors_test: Crash # Instance of 'TypeOperator': type check unimplemented for Class.
+mirrors/mirrors_used_inheritance_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/mixin_application_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/mixin_members_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/mixin_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/model_test: Crash # (isNoSuchMethodError): handleStaticFunctionGet: function(isNoSuchMethodError)
+mirrors/native_class_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/new_instance_with_type_arguments_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/no_metadata_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/null2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/null_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/operator_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/parameter_is_const_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/parameter_is_const_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/parameter_of_mixin_app_constructor_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/parameter_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/parameter_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/private_symbol_mangling_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/private_symbol_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/private_types_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+mirrors/proxy_type_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/raw_type_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/raw_type_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/redirecting_factory_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for Class<String, int>.
+mirrors/redirecting_factory_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for Class<String, int>.
+mirrors/redirecting_factory_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for Class<String, int>.
+mirrors/reflect_class_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflect_class_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflect_class_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflect_model_test: Crash # (isNoSuchMethodError): handleStaticFunctionGet: function(isNoSuchMethodError)
+mirrors/reflected_type_classes_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflected_type_classes_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflected_type_classes_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflected_type_classes_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflected_type_function_type_test: Crash # (somePredicate): handleStaticFunctionGet: function(somePredicate)
+mirrors/reflected_type_special_types_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflected_type_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflected_type_test/02: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflected_type_test/03: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflected_type_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflected_type_typedefs_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/reflected_type_typevars_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/regress_14304_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/regress_19731_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/relation_assignable_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+mirrors/relation_subclass_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+mirrors/relation_subtype_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+mirrors/removed_api_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/repeated_private_anon_mixin_app_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/return_type_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/set_field_with_final_inheritance_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/set_field_with_final_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/spawn_function_root_library_test: Crash # (child): handleStaticFunctionGet: function(child)
+mirrors/static_members_easier_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/static_members_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/static_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/superclass2_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/superclass_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/symbol_validation_test/01: Crash # (validSymbol): handleStaticFunctionGet: function(validSymbol)
+mirrors/symbol_validation_test/none: Crash # (validSymbol): handleStaticFunctionGet: function(validSymbol)
+mirrors/synthetic_accessor_properties_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/to_string_test: Crash # (main): handleStaticFunctionGet: function(main)
+mirrors/top_level_accessors_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/type_argument_is_type_variable_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/type_mirror_for_type_test: Crash # Instance of 'TypeOperator': type check unimplemented for C<Type>.
+mirrors/type_variable_is_static_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/type_variable_owner_test/01: Crash # Instance of 'TypeOperator': type casts not implemented.
+mirrors/type_variable_owner_test/none: Crash # Instance of 'TypeOperator': type casts not implemented.
+mirrors/typearguments_mirror_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/typedef_deferred_library_test: Crash # (def.loadLibrary()): handleStaticGetterInvoke: foreign: function(loadLibrary)
+mirrors/typedef_reflected_type_test/01: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/typedef_reflected_type_test/none: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+mirrors/unnamed_library_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+mirrors/variable_is_const_test/01: Crash # Instance of 'TypeOperator': type casts not implemented.
+mirrors/variable_is_const_test/none: Crash # Instance of 'TypeOperator': type casts not implemented.
+profiler/metrics_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+profiler/user_tags_test: Crash # (testExhaust): handleStaticFunctionGet: function(testExhaust)
+typed_data/constructor_checks_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+typed_data/float32x4_list_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<Float32x4>.
+typed_data/float32x4_shuffle_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+typed_data/float32x4_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+typed_data/int32x4_list_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<Int32x4>.
+typed_data/int32x4_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+typed_data/setRange_1_test: Crash # (makeInt16List): handleStaticFunctionGet: function(makeInt16List)
+typed_data/setRange_2_test: Crash # (makeInt16List): handleStaticFunctionGet: function(makeInt16List)
+typed_data/typed_data_hierarchy_int64_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<int>.
+typed_data/typed_data_hierarchy_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<double>.
+typed_data/typed_data_list_test: Crash # Instance of 'TypeOperator': type check unimplemented for Map.
+typed_data/typed_data_sublist_type_test: Crash # Instance of 'TypeOperator': type check unimplemented for T.
+typed_data/typed_list_iterable_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
diff --git a/tests/lib/mirrors/invocation_fuzz_test.dart b/tests/lib/mirrors/invocation_fuzz_test.dart
index 4afd372..7a43d3cbb 100644
--- a/tests/lib/mirrors/invocation_fuzz_test.dart
+++ b/tests/lib/mirrors/invocation_fuzz_test.dart
@@ -26,6 +26,9 @@
// Don't kill random other processes.
'dart.io.Process.killPid',
+ // Don't break into the debugger.
+ 'dart.developer.debugger',
+
// Don't run blocking io calls.
new RegExp(r".*Sync$"),
diff --git a/tests/standalone/io/http_100_continue.dart b/tests/standalone/io/http_100_continue.dart
new file mode 100644
index 0000000..96411ec
--- /dev/null
+++ b/tests/standalone/io/http_100_continue.dart
@@ -0,0 +1,73 @@
+// Copyright (c) 2015, 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:async";
+import 'dart:convert';
+import "dart:io";
+
+import "package:expect/expect.dart";
+
+void test(responseBytes, bodyLength) async {
+ fullRequest(bytes) {
+ var len = bytes.length;
+ return len > 4 &&
+ bytes[len - 4] == 13 &&
+ bytes[len - 3] == 10 &&
+ bytes[len - 2] == 13 &&
+ bytes[len - 1] == 10;
+ }
+
+ handleSocket(socket) async {
+ var bytes = [];
+ await for (var data in socket) {
+ bytes.addAll(data);
+ if (fullRequest(bytes)) {
+ socket.add(responseBytes);
+ socket.close();
+ }
+ }
+ }
+
+ var server = await ServerSocket.bind('127.0.0.1', 0);
+ server.listen(handleSocket);
+
+ var client = new HttpClient();
+ var request =
+ await client.getUrl(Uri.parse('http://127.0.0.1:${server.port}/'));
+ var response = await request.close();
+ Expect.equals(response.statusCode, 200);
+ Expect.equals(bodyLength,
+ (await response.fold([], (p, e) => p..addAll(e))).length);
+ server.close();
+}
+
+main() {
+ var r1 = '''
+HTTP/1.1 100 Continue\r
+\r
+HTTP/1.1 200 OK\r
+\r
+''';
+
+ var r2 = '''
+HTTP/1.1 100 Continue\r
+My-Header-1: hello\r
+My-Header-2: world\r
+\r
+HTTP/1.1 200 OK\r
+\r
+''';
+
+ var r3 = '''
+HTTP/1.1 100 Continue\r
+\r
+HTTP/1.1 200 OK\r
+Content-Length: 2\r
+\r
+AB''';
+
+ test(ASCII.encode(r1), 0);
+ test(ASCII.encode(r2), 0);
+ test(ASCII.encode(r3), 2);
+}
diff --git a/tests/standalone/io/web_socket_pipe_test.dart b/tests/standalone/io/web_socket_pipe_test.dart
index b487b74..5439e8a 100644
--- a/tests/standalone/io/web_socket_pipe_test.dart
+++ b/tests/standalone/io/web_socket_pipe_test.dart
@@ -40,7 +40,6 @@
}
}
- next();
client.listen(
(data) {
count++;
@@ -52,6 +51,8 @@
next();
},
onDone: () => print("Client received close"));
+
+ next();
});
});
}
diff --git a/tests/standalone/io/web_socket_test.dart b/tests/standalone/io/web_socket_test.dart
index 97059042..f3213e6 100644
--- a/tests/standalone/io/web_socket_test.dart
+++ b/tests/standalone/io/web_socket_test.dart
@@ -173,6 +173,36 @@
}
+ void testCloseNoListen() {
+ createServer().then((server) {
+ server.transform(new WebSocketTransformer()).listen((webSocket) {
+ server.close();
+ webSocket.close();
+ });
+
+ createClient(server.port).then((webSocket) {
+ webSocket.close();
+ });
+ });
+ }
+
+
+ void testListenAfterClose() {
+ createServer().then((server) {
+ server.transform(new WebSocketTransformer()).listen((webSocket) {
+ server.close();
+ webSocket.close();
+ Expect.throws(() => webSocket.drain());
+ });
+
+ createClient(server.port).then((webSocket) {
+ webSocket.close();
+ Expect.throws(() => webSocket.drain());
+ });
+ });
+ }
+
+
void testDoubleCloseClient() {
createServer().then((server) {
server.transform(new WebSocketTransformer()).listen((webSocket) {
@@ -208,10 +238,10 @@
server.listen((request) {
WebSocketTransformer.upgrade(request)
.then((webSocket) {
- webSocket.close();
webSocket.listen(
(_) { Expect.fail("Unexpected message"); },
onDone: server.close);
+ webSocket.close();
});
});
@@ -239,10 +269,10 @@
});
createClient(server.port).then((webSocket) {
- webSocket.close();
webSocket.listen(
(_) { Expect.fail("Unexpected message"); },
onDone: webSocket.close);
+ webSocket.close();
});
});
}
@@ -512,6 +542,8 @@
testMessageLength(127);
testMessageLength(65535);
testMessageLength(65536);
+ testCloseNoListen();
+ testListenAfterClose();
testDoubleCloseClient();
testDoubleCloseServer();
testImmediateCloseServer();
diff --git a/tests/standalone/standalone.status b/tests/standalone/standalone.status
index b2e91a8..5518c1d 100644
--- a/tests/standalone/standalone.status
+++ b/tests/standalone/standalone.status
@@ -107,10 +107,6 @@
[ $compiler == dart2js && $browser ]
*: Skip
-[ $compiler == dart2dart ]
-# Skip until we stabilize language tests.
-*: Skip
-
[ $arch == simarm || $arch == simarmv5te || $arch == simmips]
out_of_memory_test: Skip # passes on Mac, crashes on Linux
oom_error_stacktrace_test: Skip # Fails on Linux
@@ -169,217 +165,107 @@
io/http_client_stays_alive_test: Skip # Timeout.
[ $compiler == dart2js && $cps_ir ]
-array_bounds_check_generalization_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-assert_test: Crash # "on T" catch block
-byte_array_view_optimized_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-constant_left_shift_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-coverage_test: Crash # unsupported element kind: context:field
-deoptimization_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_temp_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-double_to_int_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-int_list_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/addlatexhash_test: Crash # (try {test(tempDir.path);}finally {tempDir.delete(recursive:true);}): not exactly one catch block
-io/async_catch_errors_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/code_collection_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/create_recursive_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/dart_std_io_pipe_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/delete_symlink_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+array_bounds_check_generalization_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+constant_left_shift_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+coverage_test: Crash # (onCoverageOutput): handleStaticFunctionGet: function(onCoverageOutput)
+io/addlatexhash_test: Crash # (testSameHash): handleStaticFunctionGet: function(testSameHash)
+io/async_catch_errors_test: Crash # unsupported element kind: events:field
+io/create_recursive_test: Crash # unsupported element kind: context:field
io/dependency_graph_test: Crash # unsupported element kind: UnableToRun:field
-io/directory_chdir_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/directory_create_race_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/directory_error_test: Crash # Unhandled node
-io/directory_fuzz_test: Crash # Please triage this failure.
-io/directory_invalid_arguments_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/directory_list_nonexistent_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+io/directory_chdir_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/directory_error_test: Crash # (testCreateInNonExistent): handleStaticFunctionGet: function(testCreateInNonExistent)
+io/directory_fuzz_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/directory_invalid_arguments_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/directory_list_nonexistent_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
io/directory_list_pause_test: Crash # Please triage this failure.
-io/directory_non_ascii_sync_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/directory_non_ascii_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/directory_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/directory_uri_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/echo_server_stream_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/file_absolute_path_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/file_constructor_test: Crash # "on T" catch block
-io/file_copy_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/file_error_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/file_fuzz_test: Crash # Please triage this failure.
-io/file_input_stream_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/file_invalid_arguments_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/file_lock_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/file_non_ascii_sync_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/file_non_ascii_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/file_output_stream_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/file_read_encoded_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/file_read_special_device_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/file_stat_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/file_stream_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/file_system_async_links_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/file_system_delete_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/file_system_exists_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/file_system_links_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/file_system_uri_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+io/directory_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/directory_uri_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/echo_server_stream_test: Crash # (startEchoServer): handleStaticFunctionGet: function(startEchoServer)
+io/file_copy_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/file_error_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/file_invalid_arguments_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/file_lock_test: Crash # unsupported element kind: context:field
+io/file_read_encoded_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/file_stat_test: Crash # unsupported element kind: context:field
+io/file_system_delete_test: Crash # (Expect.isFalse): handleStaticFunctionGet: function(Expect#isFalse)
+io/file_system_exists_test: Crash # (Expect.isTrue): handleStaticFunctionGet: function(Expect#isTrue)
+io/file_system_links_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
io/file_system_watcher_test: Crash # unsupported element kind: context:field
-io/file_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+io/file_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
io/file_typed_data_test: Crash # Please triage this failure.
-io/file_uri_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/file_windows_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/file_write_as_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/http_10_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/http_advanced_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_auth_digest_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_auth_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_basic_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+io/file_uri_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/http_advanced_test: Crash # (startIsolatedHttpServer): handleStaticFunctionGet: function(startIsolatedHttpServer)
+io/http_basic_test: Crash # (startTestServer): handleStaticFunctionGet: function(startTestServer)
io/http_bind_test: Crash # cannot handle async/sync*/async* functions
-io/http_client_connect_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/http_client_exception_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_client_request_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_close_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_compression_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_connection_header_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/http_connection_info_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_content_length_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_cookie_date_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_cookie_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/http_cross_process_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/http_date_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_detach_socket_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/http_head_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/http_headers_state_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_headers_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/http_ipv6_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_keep_alive_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_no_reason_phrase_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_outgoing_size_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_parser_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/http_proxy_configuration_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+io/http_client_exception_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/http_content_length_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/http_cookie_date_test: Crash # Please triage this failure.
+io/http_date_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/http_detach_socket_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/http_headers_state_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/http_headers_test: Crash # Instance of 'TypeOperator': type check unimplemented for Iterable.
+io/http_parser_test: Crash # Unhandled node
io/http_proxy_test: Crash # Please triage this failure.
-io/http_read_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_redirect_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/http_request_pipeling_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_requested_uri_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/http_response_deadline_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_server_early_client_close_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_server_response_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/http_server_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/http_session_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/https_bad_certificate_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/https_client_certificate_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/https_client_exception_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/https_server_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/https_unauthorized_test: Crash # (throw e): Unhandled node
-io/internet_address_invalid_arguments_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/internet_address_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/io_sink_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+io/http_read_test: Crash # (startIsolatedHttpServer): handleStaticFunctionGet: function(startIsolatedHttpServer)
+io/http_server_early_client_close_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<int>.
+io/http_server_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/https_bad_certificate_test: Crash # cannot handle async/sync*/async* functions
+io/https_server_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/internet_address_invalid_arguments_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/internet_address_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
io/issue_22636_test: Crash # cannot handle async/sync*/async* functions
io/issue_22637_test: Crash # cannot handle async/sync*/async* functions
-io/link_async_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/link_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/link_uri_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/network_interface_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/observatory_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/parent_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/pipe_server_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/platform_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/print_sync_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_check_arguments_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_detached_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_environment_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_exit_negative_test: Crash # (a): Error expression `a` unhandled.
-io/process_exit_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_invalid_arguments_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/process_kill_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/process_non_ascii_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/process_path_environment_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_path_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_pid_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/process_run_output_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/process_run_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_segfault_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_set_exit_code_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_start_exception_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_stderr_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_stdin_transform_unsubscribe_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_stdout_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_sync_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/process_working_directory_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/raw_datagram_read_all_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+io/link_async_test: Crash # (testCreateLoopingLink): handleStaticFunctionGet: function(testCreateLoopingLink)
+io/link_test: Crash # unsupported element kind: context:field
+io/link_uri_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/observatory_test: Crash # (asyncSuccess): handleStaticFunctionGet: function(asyncSuccess)
+io/parent_test: Crash # (testObjects): handleStaticFunctionGet: function(testObjects)
+io/pipe_server_test: Crash # (startPipeServer): handleStaticFunctionGet: function(startPipeServer)
+io/platform_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/process_invalid_arguments_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/process_run_test: Crash # Instance of 'TypeOperator': type check unimplemented for List<int>.
io/raw_datagram_socket_test: Crash # Unhandled node
-io/raw_secure_server_closing_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/raw_secure_server_socket_argument_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/raw_secure_server_socket_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+io/raw_secure_server_closing_test: Crash # Please triage this failure.
+io/raw_secure_server_socket_argument_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/raw_secure_server_socket_test: Crash # Please triage this failure.
io/raw_secure_socket_pause_test: Crash # Unhandled node
io/raw_secure_socket_test: Crash # Unhandled node
-io/raw_server_socket_cancel_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/raw_socket_cross_process_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/raw_socket_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+io/raw_server_socket_cancel_test: Crash # Unhandled node
+io/raw_socket_cross_process_test: Crash # Unhandled node
+io/raw_socket_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
io/raw_socket_typed_data_test: Crash # Please triage this failure.
-io/raw_socket_write_destroy_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/read_into_const_list_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/regress_10026_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
io/regress_21160_test: Crash # Unhandled node
-io/regress_21987_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/regress_7679_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/regress_8828_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/regress_9194_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/resolve_symbolic_links_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/secure_bad_certificate_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/secure_builtin_roots_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/secure_client_raw_server_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/secure_client_server_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/secure_multiple_client_server_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/secure_server_client_certificate_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/secure_server_client_no_certificate_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/secure_server_closing_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/secure_server_socket_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/secure_session_resume_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/secure_socket_alpn_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/secure_socket_argument_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/secure_socket_bad_data_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/secure_socket_renegotiate_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/secure_socket_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/secure_unauthorized_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/signals_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+io/resolve_symbolic_links_test: Crash # (asyncSuccess): handleStaticFunctionGet: function(asyncSuccess)
+io/secure_client_raw_server_test: Crash # (testClient): handleStaticFunctionGet: function(testClient)
+io/secure_client_server_test: Crash # (testClient): handleStaticFunctionGet: function(testClient)
+io/secure_multiple_client_server_test: Crash # (testClient): handleStaticFunctionGet: function(testClient)
+io/secure_server_closing_test: Crash # Please triage this failure.
+io/secure_server_socket_test: Crash # Please triage this failure.
+io/secure_socket_alpn_test: Crash # Instance of 'TypeOperator': type casts not implemented.
+io/secure_socket_argument_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/secure_socket_bad_data_test: Crash # (runClient): handleStaticFunctionGet: function(runClient)
io/skipping_dart2js_compilations_test: Crash # unsupported element kind: currentWorkingDirectory:field
-io/sleep_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/snapshot_fail_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/socket_bind_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/socket_close_test: Crash # Unhandled node
-io/socket_cross_process_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/socket_exception_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/socket_info_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/socket_invalid_arguments_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/socket_ipv6_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/socket_many_connections_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/socket_port_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/socket_source_address_test: Crash # cannot handle async/sync*/async* functions
-io/socket_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/socket_upgrade_to_secure_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/status_file_parser_test: Crash # (throw new Exception('Cannot find test status file ${path}')): Unhandled node
-io/stdio_nonblocking_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/stdout_bad_argument_test: Crash # handleStaticFunctionGet: function(print)
-io/stdout_close_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/stdout_stderr_non_blocking_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/stdout_stderr_terminal_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/stdout_stderr_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/stream_pipe_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/test_extension_fail_test: Crash # (throw new StateError("bad exit code")): Unhandled node
-io/test_extension_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+io/sleep_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/socket_bind_test: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+io/socket_close_test: Crash # (asyncEnd): handleStaticFunctionGet: function(asyncEnd)
+io/socket_exception_test: Crash # Please triage this failure.
+io/socket_many_connections_test: Crash # (startTestServer): handleStaticFunctionGet: function(startTestServer)
+io/socket_source_address_test: Crash # (RawSocket.connect): handleStaticFunctionGet: origin function(RawSocket#connect)
+io/socket_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/socket_upgrade_to_secure_test: Crash # Please triage this failure.
+io/status_file_parser_test: Crash # unsupported element kind: IssueNumberPattern:field
+io/stdout_bad_argument_test: Crash # (print): handleStaticFunctionGet: function(print)
+io/stdout_stderr_terminal_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/test_extension_fail_test: Crash # unsupported element kind: context:field
+io/test_extension_test: Crash # unsupported element kind: context:field
io/test_runner_test: Crash # Unhandled node
-io/uri_platform_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/web_socket_error_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/web_socket_ping_test: Crash # (throw new StateError('Hash update method called after digest was retrieved')): Unhandled node
-io/web_socket_pipe_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/web_socket_protocol_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/web_socket_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/web_socket_typed_data_test: Crash # (throw new ExpectException(message)): Unhandled node
-io/windows_environment_test: Crash # (throw "Exit code not 0"): Unhandled node
-io/windows_file_system_async_links_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-io/windows_file_system_links_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-io/zlib_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-medium_integer_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-oom_error_stacktrace_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
-out_of_memory_test: Crash # "on T" catch block
-priority_queue_stress_test: Crash # cannot compile methods that need interceptor calling convention.
-slowpath_safepoints_test: Crash # handleStaticFunctionGet: function(noop)
-status_expression_test: Crash # (throw new ExpectException(message)): Unhandled node
-typed_array_test: Crash # Instance of 'TypeOperator': unimplemented in CodeGenerator
+io/uri_platform_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/web_socket_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/windows_environment_test: Crash # unsupported element kind: context:field
+io/windows_file_system_links_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+io/zlib_test: Crash # Instance of 'TypeOperator': type check unimplemented for _Nullary.
+priority_queue_stress_test: RuntimeError # Please triage this failure.
+slowpath_safepoints_test: Crash # (noop): handleStaticFunctionGet: function(noop)
+status_expression_test: Crash # unsupported element kind: regexp:field
+typed_array_test: Crash # (float64_sender): handleStaticFunctionGet: function(float64_sender)
verified_mem_test: Crash # unsupported element kind: a:field
diff --git a/tests/utils/utils.status b/tests/utils/utils.status
index 25aefd7..ba281b8 100644
--- a/tests/utils/utils.status
+++ b/tests/utils/utils.status
@@ -28,11 +28,7 @@
recursive_import_test: Pass, RuntimeError # Issue 17662
source_mirrors_test: Pass, RuntimeError # Issue 17662
-[ $compiler == dart2dart && $builder_tag != new_backend ]
-source_mirrors_test: Slow, Pass
-dummy_compiler_test: Slow, Pass
-
[ $compiler == dart2js && $cps_ir ]
-dummy_compiler_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-recursive_import_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
-source_mirrors_test: Crash # (throw _buildException('asyncEnd() was called before asyncStart().')): Unhandled node
+dummy_compiler_test: Crash # (provider): handleStaticFunctionGet: function(provider)
+recursive_import_test: Crash # (asyncSuccess): handleStaticFunctionGet: function(asyncSuccess)
+source_mirrors_test: Crash # (provider): handleStaticFunctionGet: function(provider)
diff --git a/tools/FAKE_COMMITS b/tools/FAKE_COMMITS
index 9645a59..ef8c59f 100644
--- a/tools/FAKE_COMMITS
+++ b/tools/FAKE_COMMITS
@@ -10,3 +10,4 @@
CIT outage
Testing update steps
Testing bots after GOLO <> gcs failures
+Trigger bots after github outage
diff --git a/tools/VERSION b/tools/VERSION
index 7a0a147..72681a8 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 1
MINOR 11
PATCH 0
-PRERELEASE 0
-PRERELEASE_PATCH 1
+PRERELEASE 1
+PRERELEASE_PATCH 0
diff --git a/tools/bots/bot.py b/tools/bots/bot.py
index 550cb47..0015f47 100644
--- a/tools/bots/bot.py
+++ b/tools/bots/bot.py
@@ -25,7 +25,7 @@
"""
Encapsulation of build information.
- - compiler: None, 'dart2dart' or 'dart2js'
+ - compiler: None or 'dart2js'
- runtime: 'd8', 'ie', 'ff', 'safari', 'chrome', 'opera', or None.
- mode: 'debug' or 'release'.
- system: 'linux', 'mac', or 'win7'.
diff --git a/tools/bots/dart_sdk.py b/tools/bots/dart_sdk.py
new file mode 100644
index 0000000..b2a3b06
--- /dev/null
+++ b/tools/bots/dart_sdk.py
@@ -0,0 +1,177 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2015, 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 os.path
+import shutil
+import sys
+
+import bot
+import bot_utils
+
+utils = bot_utils.GetUtils()
+
+BUILD_OS = utils.GuessOS()
+
+(bot_name, _) = bot.GetBotName()
+CHANNEL = bot_utils.GetChannelFromName(bot_name)
+
+def BuildSDK():
+ with bot.BuildStep('Build SDK'):
+ Run([sys.executable, './tools/build.py', '--mode=release',
+ '--arch=ia32,x64', 'create_sdk'])
+
+def BuildAPIDocs():
+ with bot.BuildStep('Build API docs'):
+ Run([sys.executable, './tools/build.py', '--mode=release',
+ '--arch=ia32', 'api_docs'])
+ Run([sys.executable, './tools/build.py', '--mode=release',
+ '--arch=ia32', 'dartdocgen'])
+
+def CreateUploadSDKZips():
+ with bot.BuildStep('Create and upload sdk zips'):
+ sdk32_path = os.path.join(bot_utils.DART_DIR,
+ utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'),
+ 'dart-sdk')
+ sdk64_path = os.path.join(bot_utils.DART_DIR,
+ utils.GetBuildRoot(BUILD_OS, 'release', 'x64'),
+ 'dart-sdk')
+
+ sdk32_zip = os.path.join(bot_utils.DART_DIR,
+ utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'),
+ 'dartsdk-%s-32.zip' % BUILD_OS)
+ sdk64_zip = os.path.join(bot_utils.DART_DIR,
+ utils.GetBuildRoot(BUILD_OS, 'release', 'x64'),
+ 'dartsdk-%s-64.zip' % BUILD_OS)
+ FileDelete(sdk32_zip)
+ FileDelete(sdk64_zip)
+ CreateZip(sdk32_path, sdk32_zip)
+ CreateZip(sdk64_path, sdk64_zip)
+ DartArchiveUploadSDKs(BUILD_OS, sdk32_zip, sdk64_zip)
+
+def DartArchiveUploadSDKs(system, sdk32_zip, sdk64_zip):
+ namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW)
+ revision = utils.GetSVNRevision()
+ for revision in [revision, 'latest']:
+ path32 = namer.sdk_zipfilepath(revision, system, 'ia32', 'release')
+ path64 = namer.sdk_zipfilepath(revision, system, 'x64', 'release')
+ DartArchiveFile(sdk32_zip, path32, checksum_files=True)
+ DartArchiveFile(sdk64_zip, path64, checksum_files=True)
+
+def CreateUploadSDK():
+ BuildSDK()
+ CreateUploadSDKZips()
+
+def CreateUploadAPIDocs():
+ api_path = os.path.join(bot_utils.DART_DIR,
+ utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'),
+ 'api_docs')
+ api_zip = os.path.join(bot_utils.DART_DIR,
+ utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'),
+ 'dart-api-docs.zip')
+ shutil.rmtree(api_path, ignore_errors=True)
+ FileDelete(api_zip)
+ BuildAPIDocs()
+ UploadApiDocs(api_path)
+ CreateZip(api_path, api_zip)
+ DartArchiveUploadAPIDocs(api_zip)
+
+def DartArchiveUploadAPIDocs(api_zip):
+ namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW)
+ revision = utils.GetSVNRevision()
+ for revision in [revision, 'latest']:
+ destination = (namer.apidocs_directory(revision) + '/' +
+ namer.apidocs_zipfilename())
+ DartArchiveFile(api_zip, destination, checksum_files=False)
+
+def UploadApiDocs(dir_name):
+ apidocs_namer = bot_utils.GCSNamerApiDocs(CHANNEL)
+ revision = utils.GetSVNRevision()
+ apidocs_destination_gcsdir = apidocs_namer.docs_dirpath(revision)
+ apidocs_destination_latestfile = apidocs_namer.docs_latestpath(revision)
+
+ # Return early if the documents have already been uploaded.
+ # (This can happen if a build was forced, or a commit had no changes in the
+ # dart repository (e.g. DEPS file update).)
+ if GsutilExists(apidocs_destination_gcsdir):
+ print ("Not uploading api docs, since %s is already present."
+ % apidocs_destination_gcsdir)
+ return
+
+ # Upload everything inside the built apidocs directory.
+ gsutil = bot_utils.GSUtil()
+ gsutil.upload(dir_name, apidocs_destination_gcsdir, recursive=True,
+ public=True)
+
+ # Update latest.txt to contain the newest revision.
+ with utils.TempDir('latest_file') as temp_dir:
+ latest_file = os.path.join(temp_dir, 'latest.txt')
+ with open(latest_file, 'w') as f:
+ f.write('%s' % revision)
+ DartArchiveFile(latest_file, apidocs_destination_latestfile)
+
+def GsutilExists(gsu_path):
+ # This is a little hackish, but it is basically a one off doing very
+ # specialized check that we don't use elsewhere.
+ gsutilTool = os.path.join(bot_utils.DART_DIR,
+ 'third_party', 'gsutil', 'gsutil')
+ (_, stderr, returncode) = bot_utils.run(
+ [gsutilTool, 'ls', gsu_path],
+ throw_on_error=False)
+ # If the returncode is nonzero and we can find a specific error message,
+ # we know there are no objects with a prefix of [gsu_path].
+ missing = (returncode and 'CommandException: No such object' in stderr)
+ # Either the returncode has to be zero or the object must be missing,
+ # otherwise throw an exception.
+ if not missing and returncode:
+ raise Exception("Failed to determine whether %s exists" % gsu_path)
+ return not missing
+
+
+def CreateZip(directory, target_file):
+ if 'win' in BUILD_OS:
+ CreateZipWindows(directory, target_file)
+ else:
+ CreateZipPosix(directory, target_file)
+
+def CreateZipPosix(directory, target_file):
+ with utils.ChangedWorkingDirectory(os.path.dirname(directory)):
+ command = ['zip', '-yrq9', target_file, os.path.basename(directory)]
+ Run(command)
+
+def CreateZipWindows(directory, target_file):
+ with utils.ChangedWorkingDirectory(os.path.dirname(directory)):
+ zip_win = os.path.join(bot_utils.DART_DIR, 'third_party', '7zip', '7za')
+ command = [zip_win, 'a', '-tzip', target_file, os.path.basename(directory)]
+ Run(command)
+
+def FileDelete(f):
+ if os.path.exists(f):
+ os.remove(f)
+
+def DartArchiveFile(local_path, remote_path, checksum_files=False):
+ gsutil = bot_utils.GSUtil()
+ gsutil.upload(local_path, remote_path, public=True)
+ if checksum_files:
+ # 'local_path' may have a different filename than 'remote_path'. So we need
+ # to make sure the *.md5sum file contains the correct name.
+ assert '/' in remote_path and not remote_path.endswith('/')
+
+ mangled_filename = remote_path[remote_path.rfind('/') + 1:]
+ local_md5sum = bot_utils.CreateMD5ChecksumFile(local_path,
+ mangled_filename)
+ gsutil.upload(local_md5sum, remote_path + '.md5sum', public=True)
+ local_sha256 = bot_utils.CreateSha256ChecksumFile(local_path,
+ mangled_filename)
+ gsutil.upload(local_sha256, remote_path + '.sha256sum', public=True)
+
+def Run(command):
+ print "Running %s" % ' '.join(command)
+ return bot.RunProcess(command)
+
+if __name__ == '__main__':
+ CreateUploadSDK()
+ if BUILD_OS == 'linux':
+ CreateUploadAPIDocs()
diff --git a/tools/bots/functional_testing.py b/tools/bots/functional_testing.py
deleted file mode 100644
index 9b06ba5..0000000
--- a/tools/bots/functional_testing.py
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/python
-
-# Copyright (c) 2014, 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.
-
-"""
-Buildbot steps for functional testing master and slaves
-"""
-
-import os
-import os.path
-import re
-import shutil
-import subprocess
-import sys
-
-import bot
-import bot_utils
-
-utils = bot_utils.GetUtils()
-
-FT_BUILDER = r'ft-slave-(linux|mac)'
-FT_MASTER = r'ft-master'
-
-HOST_OS = utils.GuessOS()
-
-def IsWindows():
- return HOST_OS == 'win32'
-
-def SrcConfig(name, is_buildbot):
- """Returns info for the current buildbot based on the name of the builder.
-
- - mode: always "release"
- - system: always "linux" or "mac"
- """
- pattern = re.match(FT_BUILDER, name)
- master_pattern = re.match(FT_MASTER, name)
- if not pattern and not master_pattern:
- return None
- if master_pattern:
- tag = 'master'
- system = 'linux'
- else:
- tag = 'slave'
- system = pattern.group(1)
- return bot.BuildInfo('none', 'none', 'release', system,
- builder_tag=tag)
-
-def Run(args):
- print "Running: %s" % ' '.join(args)
- sys.stdout.flush()
- bot.RunProcess(args)
-
-def FTSlave(config):
-
- # Run SWTBot tests
- if len(sys.argv) > 0:
- scriptdir = os.path.dirname(sys.argv[0])
- builddir = os.path.join(scriptdir, '..', '..', 'editor', 'build')
- testScript = os.path.join(builddir, 'testswteditor.py')
- cmd = [sys.executable, testScript]
- try:
- subprocess.call(cmd, shell=IsWindows())
- except:
- pass
-
- # Prepare to run EggPlant tests
- with bot.BuildStep('Fetching editor'):
- revision = int(os.environ['BUILDBOT_GOT_REVISION'])
- bot_name, _ = bot.GetBotName()
- print bot_name
- channel = bot_utils.GetChannelFromName(bot_name)
- namer = bot_utils.GCSNamer(channel=channel)
- system = config.system
- if system == 'mac':
- system = 'macos'
- editor_path = namer.editor_zipfilepath(revision, system, 'x64')
- gsutils = bot_utils.GSUtil()
- editor_location='/home/chrome-bot/Desktop'
- if system == 'macos':
- editor_location='/Users/chrome-bot/Desktop'
- local_path = os.path.join(editor_location, 'editor.zip')
- if os.path.exists(local_path):
- os.remove(local_path)
- local_extracted = os.path.join(editor_location, 'dart')
- shutil.rmtree(local_extracted, ignore_errors=True)
- gsutils.execute(['cp', editor_path, local_path])
- Run(['unzip', local_path, '-d', editor_location])
-
-def FTMaster(config):
- run = int(os.environ['BUILDBOT_ANNOTATED_STEPS_RUN'])
- with bot.BuildStep('Master run %s' % run):
- if run == 1:
- print 'Not doing anything on master before the triggers'
- return
- else:
- builddir = os.path.join(bot_utils.DART_DIR,
- utils.GetBuildDir(HOST_OS),
- 'functional_testing')
- shutil.rmtree(builddir, ignore_errors=True)
- os.makedirs(builddir)
- script_locations = os.path.join(bot_utils.DART_DIR, 'editor', 'ft')
- Run(['/home/chrome-bot/func-test/bot-run', builddir, script_locations])
- #TODO Copy builddir to shared storage somewhere.
-
-def FTSteps(config):
- if config.builder_tag == 'master':
- FTMaster(config)
- else:
- FTSlave(config)
-
-if __name__ == '__main__':
- bot.RunBot(SrcConfig, FTSteps, build_step=None)
diff --git a/tools/compiler_scripts/dart_analyzer.sh b/tools/compiler_scripts/dart_analyzer.sh
deleted file mode 100644
index c07f5bc..0000000
--- a/tools/compiler_scripts/dart_analyzer.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/bash --posix
-# Copyright (c) 2012, 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.
-
-set -e
-
-# Setting SCRIPT_DIR this way is ugly, but is needed to handle the case where
-# dart-sdk/bin has been symlinked to. On MacOS, readlink doesn't work
-# with this case.
-SCRIPT_DIR="$(cd "${0%/*}" ; pwd -P)"
-DART_ANALYZER_HOME="$(cd "${SCRIPT_DIR%/*}" ; pwd -P)"
-
-FOUND_BATCH=0
-FOUND_SDK=0
-for ARG in "$@"
-do
- case $ARG in
- -batch|--batch)
- FOUND_BATCH=1
- ;;
- --dart-sdk)
- FOUND_SDK=1
- ;;
- *)
- ;;
- esac
-done
-
-DART_SDK=""
-if [ $FOUND_SDK = 0 ] ; then
- if [ -f $DART_ANALYZER_HOME/lib/core/core.dart ] ; then
- DART_SDK="--dart-sdk $DART_ANALYZER_HOME"
- else
- DART_SDK_HOME=$(dirname $DART_ANALYZER_HOME)/dart-sdk
- if [ -d $DART_SDK_HOME ] ; then
- DART_SDK="--dart-sdk $DART_SDK_HOME"
- else
- DART_SDK_HOME=$(dirname $DART_SDK_HOME)/dart-sdk
- if [ -d $DART_SDK_HOME ] ; then
- DART_SDK="--dart-sdk $DART_SDK_HOME"
- else
- echo "Couldn't find Dart SDK. Specify with --dart-sdk cmdline argument"
- fi
- fi
- fi
-fi
-
-if [ -f $DART_SDK_HOME/util/analyzer/dart_analyzer.jar ] ; then
- DART_ANALYZER_LIBS=$DART_SDK_HOME/util/analyzer
-elif [ -f $DART_ANALYZER_HOME/util/analyzer/dart_analyzer.jar ] ; then
- DART_ANALYZER_LIBS=$DART_ANALYZER_HOME/util/analyzer
-else
- echo "Configuration problem. Couldn't find dart_analyzer.jar."
- exit 1
-fi
-
-if [ -x /usr/libexec/java_home ]; then
- export JAVA_HOME=$(/usr/libexec/java_home -v '1.6+')
-fi
-
-EXTRA_JVMARGS="-Xss2M "
-OS=`uname | tr "[A-Z]" "[a-z]"`
-if [ "$OS" == "darwin" ] ; then
- # Bump up the heap on Mac VMs, some of which default to 128M or less.
- # Users can specify DART_JVMARGS in the environment to override this
- # setting.
- EXTRA_JVMARGS+=" -Xmx256M -client "
-else
- # On other architectures
- # -batch invocations will do better with a server vm
- # invocations for analyzing a single file do better with a client vm
- if [ $FOUND_BATCH = 0 ] ; then
- EXTRA_JVMARGS+=" -client "
- fi
-fi
-
-exec java $EXTRA_JVMARGS $DART_JVMARGS -ea -classpath "@CLASSPATH@" \
- com.google.dart.compiler.DartCompiler ${DART_SDK} $@
diff --git a/tools/compiler_scripts/generate_my_projects.py b/tools/compiler_scripts/generate_my_projects.py
deleted file mode 100644
index cc41bf3..0000000
--- a/tools/compiler_scripts/generate_my_projects.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2012, 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 os
-import sys
-
-
-def Main():
- def normjoin(*args):
- return os.path.normpath(os.path.join(*args))
-
- dart_dir = normjoin(__file__, '..', '..', '..')
- compiler_scripts = normjoin(dart_dir, 'tools', 'compiler_scripts')
- editor = normjoin(dart_dir, 'editor')
-
- locations = {
- 'compiler_scripts': compiler_scripts,
- 'editor': editor,
- }
-
- generate_source_list_calls = [
- # The paths are relative to dart/editor/
- {
- "name" : "plugin_engine_java",
- "output" : "%(editor)s/plugin_engine_sources" % locations,
- "path" : "tools/plugins/com.google.dart.engine",
- },
- {
- "name" : "plugin_command_analyze_java",
- "output" : "%(editor)s/plugin_command_analyze_sources" % locations,
- "path" : "tools/plugins/com.google.dart.command.analyze",
- },
- ]
-
- for call_options in generate_source_list_calls:
- command = (("python %(compiler_scripts)s/generate_source_list.py "
- % locations) +
- ("%(name)s %(output)s %(path)s" % call_options))
- exit_code = os.system(command)
- if exit_code:
- return exit_code
-
- if '--no-gyp' in sys.argv:
- print '--no-gyp is deprecated.'
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(Main())
diff --git a/tools/compiler_scripts/generate_source_list.py b/tools/compiler_scripts/generate_source_list.py
deleted file mode 100644
index 2966d40..0000000
--- a/tools/compiler_scripts/generate_source_list.py
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2011, 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.
-
-from __future__ import with_statement
-import StringIO
-import os
-import sys
-
-class GenerateError(Exception):
-
- def __init__(self, value):
- self.value = value
-
- def __str__(self):
- return repr(self.value)
-
-
-class Generator:
-
- def __init__(self, base_directory, name, output, path, *excludes):
- self.base_directory = base_directory
- self.name = name
- self.output = output
- self.path = path
- self.excludes = set()
- for x in excludes:
- self.excludes.add(x)
- self.sources = []
- self.resources = []
-
- def _list_files(self):
- start_directory = os.path.join(self.base_directory, self.path)
- for fullpath, dirs, filenames in os.walk(start_directory):
- path = fullpath[len(start_directory) + 1:]
- remove_me = [d for d in dirs if d.startswith('.') or
- d == 'CVS' or
- (d in self.excludes)]
- for d in remove_me:
- dirs.remove(d)
- for filename in filenames:
- if (filename.endswith('.java')):
- self.sources.append(os.path.join(path, filename))
- elif (filename.endswith('~')):
- pass
- elif (filename.endswith('.pyc')):
- pass
- else:
- self.resources.append(os.path.join(path, filename))
- self.sources.sort()
- self.resources.sort()
-
- def _print_gypi_files(self, out, name, files):
- out.write(" '%s': [\n" % name)
- for filename in files:
- out.write(''' r'%s/%s',%s''' % (self.path, filename,'\n'))
- out.write(" ],\n")
-
- def _print_txt_files(self, out, files):
- for filename in files:
- out.write('%s\n' % os.path.join(self.path, filename))
-
- def _print_ant_files(self, out, name, files):
- out.write(" <filelist id='%s' dir='%s'>\n" % (name, self.path))
- for filename in files:
- out.write(" <file name='%s'/>\n" % filename)
- out.write(" </filelist>\n")
- out.write(" <pathconvert pathsep=',' property='%s' refid='%s'>\n"
- % (name, name))
- out.write(" <map from='${basedir}/%s/' to=''/>\n" % self.path)
- out.write(" </pathconvert>\n")
-
- def _make_output(self, file_name):
- if os.path.exists(file_name):
- return StringIO.StringIO()
- else:
- return file(file_name, 'w')
-
- def _close(self, file_name, output):
- if not isinstance(output, StringIO.StringIO):
- output.close()
- return
- new_text = output.getvalue()
- output.close()
- with open(file_name, 'r') as f:
- old_text = f.read()
- if old_text == new_text:
- return
- sys.stderr.write('Updating %s\n' % file_name)
- with open(file_name, 'w') as f:
- f.write(new_text)
-
- def generate(self):
- self._list_files()
-
- file_name = self.output + '.gypi'
- gypi = self._make_output(file_name)
- gypi.write("{\n 'variables': {\n")
- self._print_gypi_files(gypi, self.name + '_sources', self.sources)
- self._print_gypi_files(gypi, self.name + '_resources', self.resources)
- gypi.write(" },\n}\n")
- self._close(file_name, gypi)
-
- file_name = self.output + '.xml'
- ant = self._make_output(file_name)
- ant.write("<project>\n")
- self._print_ant_files(ant, self.name + '_sources', self.sources)
- self._print_ant_files(ant, self.name + '_resources', self.resources)
- ant.write("</project>\n")
- self._close(file_name, ant)
-
- file_name = self.output + '.txt'
- txt = self._make_output(file_name)
- self._print_txt_files(txt, self.sources)
- self._close(file_name, txt)
-
-
-def Main(script_name = None, name = None, output = None, path = None,
- *rest):
- if not path:
- raise GenerateError("usage: %s NAME OUTPUT PATH EXCLUDE_DIR_NAME ..."
- % script_name)
- base_directory = os.path.dirname(output)
- Generator(base_directory, name, output, path, *rest).generate()
-
-
-if __name__ == '__main__':
- sys.exit(Main(*sys.argv))
diff --git a/tools/create_editor.py b/tools/create_editor.py
deleted file mode 100644
index 74fa133..0000000
--- a/tools/create_editor.py
+++ /dev/null
@@ -1,223 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (c) 2013, 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.
-#
-# A script which will be invoked from gyp to create a build of the editor.
-#
-# Usage: ./tools/create_editor.py
-# [--mode <mode>] [--arch <arch>] [--out <output>] [--build <build>]
-#
-# DO NOT CALL THIS SCRIPT DIRECTLY, instead invoke:
-# ./tools/build.py -mrelease editor
-
-import glob
-import optparse
-import os
-import shutil
-import subprocess
-import sys
-import utils
-import zipfile
-
-from os.path import join
-
-OUTPUT = None
-BUILD = None
-
-OS_CONFIG = {
- 'win32': 'win32, win32',
- 'linux': 'linux, gtk',
- 'macos': 'macosx, cocoa'
-}
-
-ARCH_CONFIG = {
- 'ia32': 'x86',
- 'x64': 'x86_64'
-}
-
-def AntPath():
- parent = join('third_party', 'apache_ant', '1.8.4', 'bin')
- if utils.IsWindows():
- return join(parent, 'ant.bat')
- else:
- return join(parent, 'ant')
-
-
-def ProcessEditorArchive(arch, archive, outDir):
- tempDir = join(GetEditorTemp(), 'editor.out')
- try:
- os.makedirs(tempDir)
- except OSError:
- # Directory already exists.
- pass
-
- if utils.IsWindows():
- f = zipfile.ZipFile(archive)
- f.extractall(tempDir)
- f.close()
- else:
- subprocess.call(['unzip', '-q', archive, '-d', tempDir])
-
- if arch == 'x64':
- if utils.GuessOS() == 'macos':
- inifile = join(tempDir, 'dart', 'DartEditor.app', 'Contents', 'MacOS',
- 'DartEditor.ini')
- else:
- inifile = join(tempDir, 'dart', 'DartEditor.ini')
- Modify64BitDartEditorIni(inifile)
-
- for src in glob.glob(join(tempDir, 'dart', '*')):
- shutil.move(src, outDir)
-
- shutil.rmtree(tempDir)
- os.unlink(archive)
-
-
-def Modify64BitDartEditorIni(iniFilePath):
- f = open(iniFilePath, 'r')
- lines = f.readlines()
- f.close()
- lines[lines.index('-Xms40m\n')] = '-Xms256m\n'
- lines[lines.index('-Xmx1024m\n')] = '-Xmx2000m\n'
- # Add -d64 to give better error messages to user in 64 bit mode.
- lines[lines.index('-vmargs\n')] = '-vmargs\n-d64\n'
- f = open(iniFilePath, 'w')
- f.writelines(lines)
- f.close()
-
-
-def GetEditorTemp():
- return join(BUILD, 'editor.build.temp')
-
-
-def GetDownloadCache():
- return GetEclipseBuildRoot()
-
-
-def GetEclipseBuildRoot():
- return join(BUILD, 'editor.build.cache')
-
-
-def GetSdkPath():
- return join(os.path.dirname(OUTPUT), 'dart-sdk')
-
-
-def GetOutputParent():
- return os.path.dirname(os.path.dirname(OUTPUT))
-
-
-def BuildOptions():
- options = optparse.OptionParser(usage='usage: %prog [options] <output>')
- options.add_option("-m", "--mode", metavar='[debug,release]')
- options.add_option("-a", "--arch", metavar='[ia32,x64]')
- options.add_option("-o", "--out")
- options.add_option("-b", "--build")
- return options
-
-
-def Main():
- global OUTPUT
- global BUILD
-
- parser = BuildOptions()
- (options, args) = parser.parse_args()
-
- if args:
- parser.print_help()
- return 1
-
- osName = utils.GuessOS()
- mode = 'debug'
- arch = utils.GuessArchitecture()
-
- if not options.build:
- print >> sys.stderr, 'Error: no --build option specified'
- exit(1)
- else:
- BUILD = options.build
-
- if not options.out:
- print >> sys.stderr, 'Error: no --out option specified'
- exit(1)
- else:
- # TODO(devoncarew): Currently we scrape the output path to determine the
- # mode and arch. This is fragile and should moved into one location
- # (utils.py?) or made more explicit.
- OUTPUT = options.out
- mode = ('release', 'debug')['Debug' in OUTPUT]
- arch = ('ia32', 'x64')['X64' in OUTPUT]
-
- # Use explicit mode and arch information.
- if options.mode:
- mode = options.mode
- if options.arch:
- arch = options.arch
-
- OUTPUT = os.path.abspath(OUTPUT)
- BUILD = os.path.abspath(BUILD)
-
- print "\nBuilding the editor"
- print " config : %s, %s, %s" % (osName, arch, mode)
- print " output : %s" % OUTPUT
-
- # Clean the editor output directory.
- print '\ncleaning %s' % OUTPUT
- shutil.rmtree(OUTPUT, True)
-
- # These are the valid eclipse build configurations that we can produce.
- # We synthesize these up from the OS_CONFIG and ARCH_CONFIG information.
- # macosx, cocoa, x86 & macosx, cocoa, x86_64
- # win32, win32, x86 & win32, win32, x86_64
- # linux, gtk, x86 & linux, gtk, x86_64
-
- buildConfig = OS_CONFIG[osName] + ', ' + ARCH_CONFIG[arch]
-
- print "\ninvoking build_rcp.xml with buildConfig = [%s]\n" % buildConfig
-
- sys.stdout.flush()
- sys.stderr.flush()
-
- buildScript = join('editor', 'tools', 'features',
- 'com.google.dart.tools.deploy.feature_releng',
- 'build_rcp.xml')
- build_cmd = [AntPath(),
- '-lib',
- join('third_party', 'bzip2', 'bzip2.jar'),
- '-Dbuild.out=' + OUTPUT,
- '-Dbuild.configs=' + buildConfig,
- '-Dbuild.root=' + GetEclipseBuildRoot(),
- '-Dbuild.downloads=' + GetDownloadCache(),
- '-Dbuild.source=' + os.path.abspath('editor'),
- '-Dbuild.dart.sdk=' + GetSdkPath(),
- '-Dbuild.no.properties=true',
- '-Dbuild.channel=' + utils.GetChannel(),
- '-Dbuild.revision=' + utils.GetSVNRevision(),
- '-Dbuild.version.qualifier=' + utils.GetEclipseVersionQualifier(),
- '-Ddart.version.full=' + utils.GetVersion(),
- '-buildfile',
- buildScript]
- print build_cmd
- buildRcpStatus = subprocess.call(build_cmd, shell=utils.IsWindows())
-
- if buildRcpStatus != 0:
- sys.exit(buildRcpStatus)
-
- # build_rcp.xml will put the built editor archive in the OUTPUT directory
- # (dart-editor-macosx.cocoa.x86.zip). It contains the editor application in a
- # dart/ subdirectory. We unzip the contents of the archive into OUTPUT. It
- # will use the ../dart-sdk directory as its SDK.
- archives = glob.glob(join(OUTPUT, 'd*.zip'))
-
- if archives:
- ProcessEditorArchive(arch, archives[0], OUTPUT)
-
- if os.path.exists(GetEditorTemp()):
- shutil.rmtree(GetEditorTemp())
-
- print('\nEditor build successful')
-
-
-if __name__ == '__main__':
- sys.exit(Main())
diff --git a/tools/create_sdk.py b/tools/create_sdk.py
index 1424c4d..c9dec1b 100755
--- a/tools/create_sdk.py
+++ b/tools/create_sdk.py
@@ -205,12 +205,12 @@
for library in [join('_blink', 'dartium'),
join('_chrome', 'dart2js'), join('_chrome', 'dartium'),
join('_internal', 'compiler'),
- 'async', 'collection', 'convert', 'core',
+ 'async', 'collection', 'convert', 'core', 'developer',
'internal', 'io', 'isolate',
join('html', 'dart2js'), join('html', 'dartium'),
join('html', 'html_common'),
join('indexed_db', 'dart2js'), join('indexed_db', 'dartium'),
- 'js', 'math', 'mirrors', 'typed_data', 'profiler',
+ 'js', 'math', 'mirrors', 'profiler', 'typed_data',
join('svg', 'dart2js'), join('svg', 'dartium'),
join('web_audio', 'dart2js'), join('web_audio', 'dartium'),
join('web_gl', 'dart2js'), join('web_gl', 'dartium'),
diff --git a/tools/create_windows_installer.py b/tools/create_windows_installer.py
deleted file mode 100644
index 64fe994..0000000
--- a/tools/create_windows_installer.py
+++ /dev/null
@@ -1,391 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (c) 2011, 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.
-
-# A script to generate a windows installer for the editor bundle.
-# As input the script takes a zip file, a version and the location
-# to store the resulting msi file in.
-#
-# Usage: ./tools/create_windows_installer.py --version <version>
-# --zip_file_location <zip_file> --msi_location <output>
-# [--wix_bin <wix_bin_location>]
-# [--print_wxs]
-#
-# This script assumes that wix is either in path or passed in as --wix_bin.
-# You can get wix from http://wixtoolset.org/.
-
-import optparse
-import os
-import subprocess
-import sys
-import utils
-import zipfile
-
-# This should _never_ change, please don't change this value.
-UPGRADE_CODE = '7bacdc33-2e76-4f36-a206-ea58220c0b44'
-
-# The content of the xml
-xml_content = []
-
-# The components we want to add to our feature.
-feature_components = []
-
-# Indentation level, each level is indented 2 spaces
-current_indentation = 0
-
-def GetOptions():
- options = optparse.OptionParser(usage='usage: %prog [options]')
- options.add_option("--zip_file_location",
- help='Where the zip file including the editor is located.')
- options.add_option("--input_directory",
- help='Directory where all the files needed is located.')
- options.add_option("--msi_location",
- help='Where to store the resulting msi.')
- options.add_option("--version",
- help='The version specified as Major.Minor.Build.Patch.')
- options.add_option("--wix_bin",
- help='The location of the wix binary files.')
- options.add_option("--print_wxs", action="store_true", dest="print_wxs",
- default=False,
- help="Prints the generated wxs to stdout.")
- (options, args) = options.parse_args()
- if len(args) > 0:
- raise Exception("This script takes no arguments, only options")
- ValidateOptions(options)
- return options
-
-def ValidateOptions(options):
- if not options.version:
- raise Exception('You must supply a version')
- if options.zip_file_location and options.input_directory:
- raise Exception('Please pass either zip_file_location or input_directory')
- if not options.zip_file_location and not options.input_directory:
- raise Exception('Please pass either zip_file_location or input_directory')
- if (options.zip_file_location and
- not os.path.isfile(options.zip_file_location)):
- raise Exception('Passed in zip file not found')
- if (options.input_directory and
- not os.path.isdir(options.input_directory)):
- raise Exception('Passed in directory not found')
-
-def GetInputDirectory(options, temp_dir):
- if options.zip_file_location:
- ExtractZipFile(options.zip_file_location, temp_dir)
- return os.path.join(temp_dir, 'dart')
- return options.input_directory
-
-# We combine the build and patch into a single entry since
-# the windows installer does _not_ consider a change in Patch
-# to require a new install.
-# In addition to that, the limits on the size are:
-# Major: 256
-# Minor: 256
-# Patch: 65536
-# To circumvent this we create the version like this:
-# Major.Minor.X
-# from "major.minor.patch-prerelease.prerelease_patch"
-# where X is "patch<<10 + prerelease<<5 + prerelease_patch"
-# Example version 1.2.4-dev.2.3 will go to 1.2.4163
-def GetMicrosoftProductVersion(version):
- version_parts = version.split('.')
- if len(version_parts) is not 5:
- raise Exception(
- "Version string (%s) does not follow specification" % version)
- (major, minor, patch, prerelease, prerelease_patch) = map(int, version_parts)
-
- if major > 255 or minor > 255:
- raise Exception('Major/Minor can not be above 256')
- if patch > 63:
- raise Exception('Patch can not be above 63')
- if prerelease > 31:
- raise Exception('Prerelease can not be above 31')
- if prerelease_patch > 31:
- raise Exception('PrereleasePatch can not be above 31')
-
- combined = (patch << 10) + (prerelease << 5) + prerelease_patch
- return '%s.%s.%s' % (major, minor, combined)
-
-# Append using the current indentation level
-def Append(data, new_line=True):
- str = ((' ' * current_indentation) +
- data +
- ('\n' if new_line else ''))
- xml_content.append(str)
-
-# Append without any indentation at the current position
-def AppendRaw(data, new_line=True):
- xml_content.append(data + ('\n' if new_line else ''))
-
-def AppendComment(comment):
- Append('<!--%s-->' % comment)
-
-def AppendBlankLine():
- Append('')
-
-def GetContent():
- return ''.join(xml_content)
-
-def XmlHeader():
- Append('<?xml version="1.0" encoding="UTF-8"?>')
-
-def TagIndent(str, indentation_string):
- return ' ' * len(indentation_string) + str
-
-def IncreaseIndentation():
- global current_indentation
- current_indentation += 1
-
-def DecreaseIndentation():
- global current_indentation
- current_indentation -= 1
-
-class WixAndProduct(object):
- def __init__(self, version):
- self.version = version
- self.product_name = 'Dart Editor'
- self.manufacturer = 'Google Inc.'
- self.upgrade_code = UPGRADE_CODE
-
- def __enter__(self):
- self.start_wix()
- self.start_product()
-
- def __exit__(self, *_):
- self.close_product()
- self.close_wix()
-
- def get_product_id(self):
- # This needs to change on every install to guarantee that
- # we get a full uninstall + reinstall
- # We let wix choose. If we need to do patch releases later on
- # we need to retain the value over several installs.
- return '*'
-
- def start_product(self):
- product = '<Product '
- Append(product, new_line=False)
- AppendRaw('Id="%s"' % self.get_product_id())
- Append(TagIndent('Version="%s"' % self.version, product))
- Append(TagIndent('Name="%s"' % self.product_name, product))
- Append(TagIndent('UpgradeCode="%s"' % self.upgrade_code,
- product))
- Append(TagIndent('Language="1033"', product))
- Append(TagIndent('Manufacturer="%s"' % self.manufacturer,
- product),
- new_line=False)
- AppendRaw('>')
- IncreaseIndentation()
-
- def close_product(self):
- DecreaseIndentation()
- Append('</Product>')
-
- def start_wix(self):
- Append('<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">')
- IncreaseIndentation()
-
- def close_wix(self):
- DecreaseIndentation()
- Append('</Wix>')
-
-class Directory(object):
- def __init__(self, id, name=None):
- self.id = id
- self.name = name
-
- def __enter__(self):
- directory = '<Directory '
- Append(directory, new_line=False)
- AppendRaw('Id="%s"' % self.id, new_line=self.name is not None)
- if self.name:
- Append(TagIndent('Name="%s"' % self.name, directory), new_line=False)
- AppendRaw('>')
- IncreaseIndentation()
-
- def __exit__(self, *_):
- DecreaseIndentation()
- Append('</Directory>')
-
-class Component(object):
- def __init__(self, id):
- self.id = 'CMP_%s' % id
-
- def __enter__(self):
- component = '<Component '
- Append(component, new_line=False)
- AppendRaw('Id="%s"' % self.id)
- Append(TagIndent('Guid="*">', component))
- IncreaseIndentation()
-
- def __exit__(self, *_):
- DecreaseIndentation()
- Append('</Component>')
- feature_components.append(self.id)
-
-class Feature(object):
- def __enter__(self):
- feature = '<Feature '
- Append(feature, new_line=False)
- AppendRaw('Id="MainFeature"')
- Append(TagIndent('Title="Dart Editor"', feature))
- # Install by default
- Append(TagIndent('Level="1">', feature))
- IncreaseIndentation()
-
- def __exit__(self, *_):
- DecreaseIndentation()
- Append('</Feature>')
-
-def Package():
- package = '<Package '
- Append(package, new_line=False)
- AppendRaw('InstallerVersion="301"')
- Append(TagIndent('Compressed="yes" />', package))
-
-def MediaTemplate():
- Append('<MediaTemplate EmbedCab="yes" />')
-
-def File(name, id):
- file = '<File '
- Append(file, new_line=False)
- AppendRaw('Id="FILE_%s"' % id)
- Append(TagIndent('Source="%s"' % name, file))
- Append(TagIndent('KeyPath="yes" />', file))
-
-def Shortcut(id, name, ref):
- shortcut = '<Shortcut '
- Append(shortcut, new_line=False)
- AppendRaw('Id="%s"' % id)
- Append(TagIndent('Name="%s"' % name, shortcut))
- Append(TagIndent('Target="%s" />' % ref, shortcut))
-
-def RemoveFolder(id):
- remove = '<RemoveFolder '
- Append(remove, new_line=False)
- AppendRaw('Id="%s"' % id)
- Append(TagIndent('On="uninstall" />', remove))
-
-def RegistryEntry(location):
- registry = '<RegistryValue '
- Append(registry, new_line=False)
- AppendRaw('Root="HKCU"')
- Append(TagIndent('Key="Software\\Microsoft\\%s"' % location, registry))
- Append(TagIndent('Name="installed"', registry))
- Append(TagIndent('Type="integer"', registry))
- Append(TagIndent('Value="1"', registry))
- Append(TagIndent('KeyPath="yes" />', registry))
-
-
-def MajorUpgrade():
- upgrade = '<MajorUpgrade '
- Append(upgrade, new_line=False)
- down_message = 'You already have a never version installed.'
- AppendRaw('DowngradeErrorMessage="%s" />' % down_message)
-
-
-# This is a very simplistic id generation.
-# Unfortunately there is no easy way to generate good names,
-# since there is a 72 character limit, and we have way longer
-# paths. We don't really have an issue with files and ids across
-# releases since we do full installs.
-counter = 0
-def FileToId(name):
- global counter
- counter += 1
- return '%s' % counter
-
-def ListFiles(path):
- for entry in os.listdir(path):
- full_path = os.path.join(path, entry)
- id = FileToId(full_path)
- if os.path.isdir(full_path):
- with Directory('DIR_%s' % id, entry):
- ListFiles(full_path)
- elif os.path.isfile(full_path):
- # We assume 1 file per component, a File is always a KeyPath.
- # A KeyPath on a file makes sure that we can always repair and
- # remove that file in a consistent manner. A component
- # can only have one child with a KeyPath.
- with Component(id):
- File(full_path, id)
-
-def ComponentRefs():
- for component in feature_components:
- Append('<ComponentRef Id="%s" />' % component)
-
-def ExtractZipFile(zip, temp_dir):
- print 'Extracting files'
- f = zipfile.ZipFile(zip)
- f.extractall(temp_dir)
- f.close()
-
-def GenerateInstaller(wxs_content, options, temp_dir):
- wxs_file = os.path.join(temp_dir, 'installer.wxs')
- wixobj_file = os.path.join(temp_dir, 'installer.wixobj')
- print 'Saving wxs output to: %s' % wxs_file
- with open(wxs_file, 'w') as f:
- f.write(wxs_content)
-
- candle_bin = 'candle.exe'
- light_bin = 'light.exe'
- if options.wix_bin:
- candle_bin = os.path.join(options.wix_bin, 'candle.exe')
- light_bin = os.path.join(options.wix_bin, 'light.exe')
- print 'Calling candle on %s' % wxs_file
- subprocess.check_call('%s %s -o %s' % (candle_bin, wxs_file,
- wixobj_file))
- print 'Calling light on %s' % wixobj_file
- subprocess.check_call('%s %s -o %s' % (light_bin, wixobj_file,
- options.msi_location))
- print 'Created msi file to %s' % options.msi_location
-
-
-def Main(argv):
- if sys.platform != 'win32':
- raise Exception("This script can only be run on windows")
- options = GetOptions()
- version = GetMicrosoftProductVersion(options.version)
- with utils.TempDir('installer') as temp_dir:
- input_location = GetInputDirectory(options, temp_dir)
- print "Generating wix XML"
- XmlHeader()
- with WixAndProduct(version):
- AppendBlankLine()
- Package()
- MediaTemplate()
- AppendComment('We always do a major upgrade, at least for now')
- MajorUpgrade()
-
- AppendComment('Directory structure')
- with Directory('TARGETDIR', 'SourceDir'):
- with Directory('ProgramFilesFolder'):
- with Directory('RootInstallDir', 'Dart Editor'):
- AppendComment("Add all files and directories")
- print 'Installing files and directories in xml'
- ListFiles(input_location)
- AppendBlankLine()
- AppendComment("Create shortcuts")
- with Directory('ProgramMenuFolder'):
- with Directory('ShortcutFolder', 'Dart Editor'):
- with Component('shortcut'):
- # When generating a shortcut we need an entry with
- # a KeyPath (RegistryEntry) below - to be able to remove
- # the shortcut again. The RemoveFolder tag is needed
- # to clean up everything
- Shortcut('editor_shortcut', 'Dart Editor',
- '[RootInstallDir]DartEditor.exe')
- RemoveFolder('RemoveShortcuts')
- RegistryEntry('DartEditor')
- with Feature():
- # We have only one feature, and it consists of all the
- # files=components we have listed above"
- ComponentRefs()
- xml = GetContent()
- if options.print_wxs:
- print xml
- GenerateInstaller(xml, options, temp_dir)
-
-if __name__ == '__main__':
- sys.exit(Main(sys.argv))
diff --git a/tools/dart2js/angular2_testing_deps/CURRENT_ANGULAR_DEPS b/tools/dart2js/angular2_testing_deps/CURRENT_ANGULAR_DEPS
index 561545a..5cdd92f 100644
--- a/tools/dart2js/angular2_testing_deps/CURRENT_ANGULAR_DEPS
+++ b/tools/dart2js/angular2_testing_deps/CURRENT_ANGULAR_DEPS
@@ -1 +1 @@
-dd3e6271c259d1fb3e150a4a43bf2f3dac1413e8
+e30ad2ec2c7cf75c3bfc8823a305c967a1a507a4
diff --git a/tools/dom/docs/docs.status b/tools/dom/docs/docs.status
index 7cd95de..c40bfc0 100644
--- a/tools/dom/docs/docs.status
+++ b/tools/dom/docs/docs.status
@@ -3,5 +3,5 @@
# BSD-style license that can be found in the LICENSE file.
# docs.dart is a tool that only runs on the VM
-[ $compiler == dart2js || $compiler == dart2dart || $runtime == drt || $runtime == dartium ]
+[ $compiler == dart2js || $runtime == drt || $runtime == dartium ]
*: Skip
diff --git a/tools/gyp/configurations_android.gypi b/tools/gyp/configurations_android.gypi
index c60d776..80ff1c6 100644
--- a/tools/gyp/configurations_android.gypi
+++ b/tools/gyp/configurations_android.gypi
@@ -57,7 +57,7 @@
'-fno-omit-frame-pointer',
],
'defines': [
- 'PROFILE_NATIVE_CODE'
+ 'NATIVE_CODE_HAS_FRAME_POINTERS'
],
}],
],
@@ -82,7 +82,7 @@
'-fno-omit-frame-pointer',
],
'defines': [
- 'PROFILE_NATIVE_CODE'
+ 'NATIVE_CODE_HAS_FRAME_POINTERS'
],
}],
],
diff --git a/tools/gyp/configurations_make.gypi b/tools/gyp/configurations_make.gypi
index 1556f16..15eee37 100644
--- a/tools/gyp/configurations_make.gypi
+++ b/tools/gyp/configurations_make.gypi
@@ -200,7 +200,7 @@
'-fno-omit-frame-pointer',
],
'defines': [
- 'PROFILE_NATIVE_CODE'
+ 'NATIVE_CODE_HAS_FRAME_POINTERS'
],
}],
],
@@ -217,7 +217,7 @@
'-fno-omit-frame-pointer',
],
'defines': [
- 'PROFILE_NATIVE_CODE'
+ 'NATIVE_CODE_HAS_FRAME_POINTERS'
],
}],
],
diff --git a/tools/gyp/configurations_msvs.gypi b/tools/gyp/configurations_msvs.gypi
index 46604eb..3c859ce 100644
--- a/tools/gyp/configurations_msvs.gypi
+++ b/tools/gyp/configurations_msvs.gypi
@@ -63,7 +63,7 @@
},
},
'defines': [
- 'PROFILE_NATIVE_CODE'
+ 'NATIVE_CODE_HAS_FRAME_POINTERS'
],
}],
],
@@ -107,7 +107,7 @@
},
},
'defines': [
- 'PROFILE_NATIVE_CODE'
+ 'NATIVE_CODE_HAS_FRAME_POINTERS'
],
}],
],
diff --git a/tools/gyp/configurations_xcode.gypi b/tools/gyp/configurations_xcode.gypi
index 6bd0452..3f22df5 100644
--- a/tools/gyp/configurations_xcode.gypi
+++ b/tools/gyp/configurations_xcode.gypi
@@ -63,7 +63,7 @@
],
},
'defines': [
- 'PROFILE_NATIVE_CODE',
+ 'NATIVE_CODE_HAS_FRAME_POINTERS',
],
}],
],
diff --git a/tools/mac_build_editor_bundle.sh b/tools/mac_build_editor_bundle.sh
deleted file mode 100755
index 14b8054..0000000
--- a/tools/mac_build_editor_bundle.sh
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-# for details. All rights reserved. Use of this source code is governed by
-# BSD-style license that can be found in the LICENSE file.
-
-# Fail if a command failed
-set -e
-
-if [ $# -ne 5 ]; then
- echo "Usage $0 <app-folder> <editor-build-directory> <dart-sdk> " \
- "<Chromium.app> <icon.icns>"
- exit 1
-fi
-
-OUTPUT_APP_FOLDER=$1
-INPUT_EDITOR_BUILD_DIRECTORY=$2
-INPUT_DART_SDK_DIRECTORY=$3
-INPUT_CHROMIUM_APP_DIRECTORY=$4
-INPUT_ICON_PATH=$5
-
-# Input validations
-if [ "${OUTPUT_APP_FOLDER##*.}" != "app" ]; then
- echo "Application folder has to end in '.app' " \
- "(but was $APP_FOLDER_NAME)."
- exit 1
-fi
-if [ "${INPUT_ICON_PATH##*.}" != "icns" ]; then
- echo "Application icon has to end in '.icns'."
- exit 1
-fi
-
-function ensure_exists {
- if [ ! -e "$1" ]; then
- echo "Directory or file does not exist: $1."
- exit 1
- fi
-}
-ensure_exists "$INPUT_EDITOR_BUILD_DIRECTORY"
-ensure_exists "$INPUT_DART_SDK_DIRECTORY"
-
-# Remove old directory if present
-if [ -e "$OUTPUT_APP_FOLDER" ]; then
- rm -r "$OUTPUT_APP_FOLDER"
-fi
-
-# Make directory structure and copy necessary files
-mkdir -p "$OUTPUT_APP_FOLDER/Contents/MacOS"
-LAUNCHER_SUBPATH="DartEditor.app/Contents/MacOS/DartEditor"
-cp "$INPUT_EDITOR_BUILD_DIRECTORY/$LAUNCHER_SUBPATH" \
- "$OUTPUT_APP_FOLDER/Contents/MacOS/"
-cp "$INPUT_EDITOR_BUILD_DIRECTORY/$LAUNCHER_SUBPATH.ini" \
- "$OUTPUT_APP_FOLDER/Contents/MacOS/"
-mkdir -p "$OUTPUT_APP_FOLDER/Contents/Resources"
-cp "$INPUT_ICON_PATH" "$OUTPUT_APP_FOLDER/Contents/Resources/dart.icns"
-cp -R "$INPUT_DART_SDK_DIRECTORY" \
- "$OUTPUT_APP_FOLDER/Contents/Resources/dart-sdk"
-cp -R "$INPUT_CHROMIUM_APP_DIRECTORY" \
- "$OUTPUT_APP_FOLDER/Contents/Resources/Chromium.app"
-for dirname in $(echo configuration plugins features samples); do
- cp -R "$INPUT_EDITOR_BUILD_DIRECTORY/$dirname" \
- "$OUTPUT_APP_FOLDER/Contents/Resources/"
-done
-
-EQUINOX_LAUNCHER_JARFILE=$(cd "$OUTPUT_APP_FOLDER"; \
- ls Contents/Resources/plugins/org.eclipse.equinox.launcher_*.jar);
-
-EQUINOX_LAUNCHER_LIBRARY=$(cd "$OUTPUT_APP_FOLDER"; ls \
- Contents/Resources/plugins/org.eclipse.equinox.launcher.cocoa.*/eclipse_*.so);
-
-cat > "$OUTPUT_APP_FOLDER/Contents/Info.plist" << EOF
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
- "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
- <dict>
- <key>NSHighResolutionCapable</key>
- <true/>
- <key>CFBundleExecutable</key>
- <string>DartEditor</string>
- <key>CFBundleGetInfoString</key>
- <string>Eclipse 3.7 for Mac OS X, Copyright IBM Corp. and others 2002,
- 2011. All rights reserved.</string>
- <key>CFBundleIconFile</key>
- <string>dart.icns</string>
- <key>CFBundleIdentifier</key>
- <string>org.eclipse.eclipse</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>DartEditor</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>3.7</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>3.7</string>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleLocalizations</key>
- <array>
- <string>en</string>
- <key>WorkingDirectory</key>
- <string>\$APP_PACKAGE/Contents/Resources</string>
- </array>
- <key>Eclipse</key>
- <array>
- <string>-startup</string>
- <string>\$APP_PACKAGE/$EQUINOX_LAUNCHER_JARFILE</string>
- <string>--launcher.library</string>
- <string>\$APP_PACKAGE/$EQUINOX_LAUNCHER_LIBRARY</string>
- <string>-keyring</string><string>~/.eclipse_keyring</string>
- <string>-showlocation</string>
- <key>WorkingDirectory</key>
- <string>\$APP_PACKAGE/Contents/Resources</string>
- </array>
- </dict>
-</plist>
-EOF
-
diff --git a/tools/mac_build_editor_dmg.sh b/tools/mac_build_editor_dmg.sh
deleted file mode 100755
index 15b70e1..0000000
--- a/tools/mac_build_editor_dmg.sh
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-# for details. All rights reserved. Use of this source code is governed by
-# BSD-style license that can be found in the LICENSE file.
-
-# This is partly based on
-# https://bitbucket.org/rmacnak/nsvm/src/
-# b2de52432a2baff9c4ada099430fb16a771d34ef/vm/onebuild/installer-Darwin.gmk
-
-# Fail if a command failed
-set -e
-set -o errexit
-set -o nounset
-
-if [ $# -ne 4 ]; then
- echo "Usage $0 <output.dmg> <raw-editor-bundle> <folder-icon> <volume-name>"
- exit 1
-fi
-
-OUTPUT_DMG_FILE=$1
-INPUT_FOLDER_PATH=$2
-FOLDER_ICON=$3
-INPUT_VOLUME_NAME=$4
-
-FOLDER_NAME="Dart"
-VOLUME_MOUNTPOINT="/Volumes/$INPUT_VOLUME_NAME"
-SPARSEIMAGE="$OUTPUT_DMG_FILE.sparseimage"
-
-# Input validations
-if [ ! -d "$INPUT_FOLDER_PATH" ]; then
- echo "Editor bundle folder does not exist ($INPUT_FOLDER_PATH)"
- exit 1
-fi
-
-# If an old image is still mounted, umount it
-if [ -e "$VOLUME_MOUNTPOINT" ]; then
- hdiutil eject "$VOLUME_MOUNTPOINT"
-fi
-
-# Remove old output files
-if [ -f "$SPARSEIMAGE" ]; then
- rm "$SPARSEIMAGE"
-fi
-if [ -f "$OUTPUT_DMG_FILE" ]; then
- rm "$OUTPUT_DMG_FILE"
-fi
-
-# This function will set (or replace) the icon of a folder.
-# Finder displays a default folder icon. Since the installer
-# will consist of a folder and a link to "/Applications", we want
-# the folder to have a nice icon.
-# In order to make Finder display a custom icon, we need to
-# - Have a "FOLDER/Icon\r" file which contains the icon resource
-# (i.e. the metadata of this file will contain an icon)
-# - Have the 'custom icon' attribute set on "FOLDER"
-# Additionally we mark the "FOLDER/Icon\r" file as invisible, so it
-# is not shown in Finder (although it's visible on the commandline).
-replace_folder_icon() {
- FOLDER="$1"
- ICON="$2"
- TEMP_ICON_RESOURCE='/tmp/icns.rsrc'
- ICON_RESOURCE="$FOLDER"/$'Icon\r'
-
- # Add finder icon to the image file
- sips -i "$ICON" > /dev/null
-
- # Extract the finder icon resource
- DeRez -only icns "$ICON" > "$TEMP_ICON_RESOURCE"
-
- # Create the icon resource
- rm -f "$ICON_RESOURCE"
- Rez -append "$TEMP_ICON_RESOURCE" -o "$ICON_RESOURCE"
- rm "$TEMP_ICON_RESOURCE"
-
- # Set the 'custom icon' attribute on $FOLDER
- SetFile -a C "$FOLDER"
-
- # Make the $ICON_RESOURCE invisible for finder
- SetFile -a V "$ICON_RESOURCE"
-}
-
-
-# Create a new image and attach it
-hdiutil create -size 400m -type SPARSE -volname "$INPUT_VOLUME_NAME" -fs \
- 'Journaled HFS+' "$SPARSEIMAGE"
-hdiutil attach "$SPARSEIMAGE"
-
-# Add link to /Applications (so the user can drag-and-drop into it)
-ln -s /Applications "$VOLUME_MOUNTPOINT/"
-# Copy our application
-ditto "$INPUT_FOLDER_PATH" "$VOLUME_MOUNTPOINT/$FOLDER_NAME"
-# Set custom icon on this folder
-replace_folder_icon "$VOLUME_MOUNTPOINT/$FOLDER_NAME" "$FOLDER_ICON"
-# Make sure that the dmg gets opened when mounting the image
-bless --folder "$VOLUME_MOUNTPOINT" --openfolder "$VOLUME_MOUNTPOINT"
-
-# Use an applescript to setup the layout of the folder.
-osascript << EOF
-tell application "Finder"
- tell disk "$INPUT_VOLUME_NAME"
- open
- tell container window
- set current view to icon view
- set toolbar visible to false
- set statusbar visible to false
- set position to {100, 100}
- set bounds to {100, 100, 512, 256}
- end tell
- tell icon view options of container window
- set arrangement to not arranged
- set icon size to 128
- end tell
- set position of item "$FOLDER_NAME" to {64, 64}
- set position of item "Applications" to {320, 64}
- eject
- end tell
-end tell
-EOF
-
-# Wait until the script above has umounted the image
-while [ -e "$VOLUME_MOUNTPOINT" ]; do
- echo "Waiting for Finder to eject $VOLUME_MOUNTPOINT"
- sleep 2
-done
-
-# Compress the sparse image
-hdiutil convert "$SPARSEIMAGE" -format UDBZ -o "$OUTPUT_DMG_FILE"
-
-# Remove sparse image
-rm "$SPARSEIMAGE"
-
diff --git a/tools/promote.py b/tools/promote.py
new file mode 100644
index 0000000..5d3a3c4
--- /dev/null
+++ b/tools/promote.py
@@ -0,0 +1,183 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2012, 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.
+
+# Dart Editor promote tools.
+
+import imp
+import optparse
+import os
+import subprocess
+import sys
+import time
+import urllib
+import bots.bot_utils as bot_utils
+
+from os.path import join
+
+DART_PATH = os.path.abspath(os.path.join(__file__, '..', '..'))
+DRY_RUN = False
+
+def BuildOptions():
+ usage = """usage: %prog promote [options]
+ where:
+ promote - Will promote builds from raw/signed locations to release
+ locations.
+
+ Example: Promote revision r29962 on dev channel:
+ python editor/build/promote.py promote --channel=dev --revision=29962
+ """
+
+ result = optparse.OptionParser(usage=usage)
+
+ group = optparse.OptionGroup(
+ result, 'Promote', 'options used to promote code')
+ group.add_option(
+ '--revision', help='The svn revision to promote', action='store')
+ group.add_option(
+ '--channel', type='string', help='Channel to promote.', default=None)
+ group.add_option("--dry", help='Dry run', default=False, action="store_true")
+ result.add_option_group(group)
+
+ return result
+
+
+def main():
+ parser = BuildOptions()
+ (options, args) = parser.parse_args()
+
+ def die(msg):
+ print msg
+ parser.print_help()
+ sys.exit(1)
+
+ if not args:
+ die('At least one command must be specified')
+
+ if args[0] == 'promote':
+ command = 'promote'
+ if options.revision is None:
+ die('You must specify a --revision to specify which revision to promote')
+
+ # Make sure revision is a valid integer
+ try:
+ _ = int(options.revision)
+ except:
+ die('You must supply a valid integer argument to --revision to promote')
+
+ # Make sure options.channel is a valid
+ if not options.channel:
+ die('Specify --channel=be/dev/stable')
+ if options.channel not in bot_utils.Channel.ALL_CHANNELS:
+ die('You must supply a valid channel to --channel to promote')
+ else:
+ die('Invalid command specified: {0}. See help below'.format(args[0]))
+
+ if options.dry:
+ global DRY_RUN
+ DRY_RUN = True
+ if command == 'promote':
+ _PromoteDartArchiveBuild(options.channel, options.revision)
+
+
+def UpdateDocs():
+ try:
+ print 'Updating docs'
+ url = "http://api.dartlang.org/docs/releases/latest/?force_reload=true"
+ f = urllib.urlopen(url)
+ f.read()
+ print 'Successfully updated api docs'
+ except Exception as e:
+ print 'Could not update api docs, please manually update them'
+ print 'Failed with: %s' % e
+
+
+def _PromoteDartArchiveBuild(channel, revision):
+ # These namer objects will be used to create GCS object URIs. For the
+ # structure we use, please see tools/bots/bot_utils.py:GCSNamer
+ raw_namer = bot_utils.GCSNamer(channel, bot_utils.ReleaseType.RAW)
+ signed_namer = bot_utils.GCSNamer(channel, bot_utils.ReleaseType.SIGNED)
+ release_namer = bot_utils.GCSNamer(channel, bot_utils.ReleaseType.RELEASE)
+
+ def promote(to_revision):
+ def safety_check_on_gs_path(gs_path, revision, channel):
+ if not ((revision == 'latest' or int(revision) > 0)
+ and len(channel) > 0
+ and ('%s' % revision) in gs_path
+ and channel in gs_path):
+ raise Exception(
+ "InternalError: Sanity check failed on GS URI: %s" % gs_path)
+
+ # Google cloud storage has read-after-write, read-after-update,
+ # and read-after-delete consistency, but not list after delete consistency.
+ # Because gsutil uses list to figure out if it should do the unix styly
+ # copy to or copy into, this means that if the directory is reported as
+ # still being there (after it has been deleted) gsutil will copy
+ # into the directory instead of to the directory.
+ def wait_for_delete_to_be_consistent_with_list(gs_path):
+ while True:
+ if DRY_RUN:
+ break
+ (_, _, exit_code) = Gsutil(['ls', gs_path], throw_on_error=False)
+ # gsutil will exit 1 if the "directory" does not exist
+ if exit_code != 0:
+ break
+ time.sleep(1)
+
+ def remove_gs_directory(gs_path):
+ safety_check_on_gs_path(gs_path, to_revision, channel)
+ Gsutil(['-m', 'rm', '-R', '-f', gs_path])
+ wait_for_delete_to_be_consistent_with_list(gs_path)
+
+ # Copy sdk directory.
+ from_loc = raw_namer.sdk_directory(revision)
+ to_loc = release_namer.sdk_directory(to_revision)
+ remove_gs_directory(to_loc)
+ Gsutil(['-m', 'cp', '-a', 'public-read', '-R', from_loc, to_loc])
+
+ # Copy eclipse update directory.
+ from_loc = raw_namer.editor_eclipse_update_directory(revision)
+ to_loc = release_namer.editor_eclipse_update_directory(to_revision)
+ remove_gs_directory(to_loc)
+ Gsutil(['-m', 'cp', '-a', 'public-read', '-R', from_loc, to_loc])
+
+ # Copy api-docs zipfile.
+ from_loc = raw_namer.apidocs_zipfilepath(revision)
+ to_loc = release_namer.apidocs_zipfilepath(to_revision)
+ Gsutil(['-m', 'cp', '-a', 'public-read', from_loc, to_loc])
+
+ # Copy dartium directory.
+ from_loc = raw_namer.dartium_directory(revision)
+ to_loc = release_namer.dartium_directory(to_revision)
+ remove_gs_directory(to_loc)
+ Gsutil(['-m', 'cp', '-a', 'public-read', '-R', from_loc, to_loc])
+
+ # Copy wheezy linux deb and src packages.
+ from_loc = raw_namer.linux_packages_directory(revision, 'debian_wheezy')
+ to_loc = release_namer.linux_packages_directory(to_revision,
+ 'debian_wheezy')
+ remove_gs_directory(to_loc)
+ Gsutil(['-m', 'cp', '-a', 'public-read', '-R', from_loc, to_loc])
+
+ # Copy VERSION file.
+ from_loc = raw_namer.version_filepath(revision)
+ to_loc = release_namer.version_filepath(to_revision)
+ Gsutil(['cp', '-a', 'public-read', from_loc, to_loc])
+
+
+ promote(revision)
+ promote('latest')
+
+def Gsutil(cmd, throw_on_error=True):
+ gsutilTool = join(DART_PATH, 'third_party', 'gsutil', 'gsutil')
+ command = [sys.executable, gsutilTool] + cmd
+ if DRY_RUN:
+ print "DRY runnning: %s" % command
+ return
+ return bot_utils.run(command, throw_on_error=throw_on_error)
+
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/tools/status_clean.dart b/tools/status_clean.dart
index fb97590..f406258 100644
--- a/tools/status_clean.dart
+++ b/tools/status_clean.dart
@@ -41,7 +41,6 @@
"tests/benchmark_smoke/benchmark_smoke.status"],
["co19", "tests/co19/src", "tests/co19/co19-analyzer2.status"],
["co19", "tests/co19/src", "tests/co19/co19-analyzer.status"],
- ["co19", "tests/co19/src", "tests/co19/co19-dart2dart.status"],
["co19", "tests/co19/src", "tests/co19/co19-dart2js.status"],
["co19", "tests/co19/src", "tests/co19/co19-co19.status"],
["co19", "tests/co19/src", "tests/co19/co19-dartium.status"],
diff --git a/tools/testing/dart/co19_test.dart b/tools/testing/dart/co19_test.dart
index ad05dca..7c7b27e 100644
--- a/tools/testing/dart/co19_test.dart
+++ b/tools/testing/dart/co19_test.dart
@@ -30,8 +30,6 @@
const <String>['-mrelease,debug', '-rvm', '-cnone', '--checked'],
const <String>['-mrelease', '-rnone', '-cdartanalyzer'],
const <String>['-mrelease', '-rnone', '-cdart2analyzer'],
- const <String>['-mrelease', '-rvm', '-cdart2dart', '--use-sdk'],
- const <String>['-mrelease', '-rvm', '-cdart2dart', '--use-sdk', '--minified'],
const <String>['-mrelease', '-rd8', '-cdart2js', '--use-sdk'],
const <String>['-mrelease', '-rd8,jsshell', '-cdart2js', '--use-sdk',
'--minified'],
diff --git a/tools/testing/dart/co19_test_config.dart b/tools/testing/dart/co19_test_config.dart
index e8d6492..813038d 100644
--- a/tools/testing/dart/co19_test_config.dart
+++ b/tools/testing/dart/co19_test_config.dart
@@ -18,7 +18,6 @@
"tests/co19/co19-analyzer.status",
"tests/co19/co19-analyzer2.status",
"tests/co19/co19-runtime.status",
- "tests/co19/co19-dart2dart.status",
"tests/co19/co19-dart2js.status",
"tests/co19/co19-dartium.status"]);
diff --git a/tools/testing/dart/compiler_configuration.dart b/tools/testing/dart/compiler_configuration.dart
index 3681bae..e2b0d18 100644
--- a/tools/testing/dart/compiler_configuration.dart
+++ b/tools/testing/dart/compiler_configuration.dart
@@ -77,10 +77,6 @@
isHostChecked: isHostChecked, useCps: useCps, useSdk: useSdk,
isCsp: isCsp, extraDart2jsOptions:
TestUtils.getExtraOptions(configuration, 'dart2js_options'));
- case 'dart2dart':
- return new Dart2dartCompilerConfiguration(
- isDebug: isDebug, isChecked: isChecked,
- isHostChecked: isHostChecked, useSdk: useSdk);
case 'none':
return new NoneCompilerConfiguration(
isDebug: isDebug, isChecked: isChecked,
@@ -166,8 +162,7 @@
}
}
-/// Common configuration for dart2js-based tools, such as, dart2js and
-/// dart2dart.
+/// Common configuration for dart2js-based tools, such as, dart2js
class Dart2xCompilerConfiguration extends CompilerConfiguration {
final String moniker;
static Map<String, List<Uri>> _bootstrapDependenciesCache =
@@ -290,54 +285,6 @@
}
}
-/// Configuration for dart2dart compiler.
-class Dart2dartCompilerConfiguration extends Dart2xCompilerConfiguration {
- Dart2dartCompilerConfiguration({
- bool isDebug,
- bool isChecked,
- bool isHostChecked,
- bool useSdk})
- : super(
- 'dart2dart',
- isDebug: isDebug, isChecked: isChecked,
- isHostChecked: isHostChecked, useSdk: useSdk);
-
- CommandArtifact computeCompilationArtifact(
- String buildDir,
- String tempDir,
- CommandBuilder commandBuilder,
- List arguments,
- Map<String, String> environmentOverrides) {
- String outputFileName = '$tempDir/out.dart';
- arguments = new List.from(arguments)..add('--output-type=dart');
- return new CommandArtifact(
- <Command>[
- this.computeCompilationCommand(
- outputFileName,
- buildDir,
- CommandBuilder.instance,
- arguments,
- environmentOverrides)],
- outputFileName,
- 'application/dart');
- }
-
- List<String> computeRuntimeArguments(
- RuntimeConfiguration runtimeConfiguration,
- String buildDir,
- TestInformation info,
- List<String> vmOptions,
- List<String> sharedOptions,
- List<String> originalArguments,
- CommandArtifact artifact) {
- // TODO(antonm): support checked.
- return <String>[]
- ..addAll(vmOptions)
- ..add('--ignore-unrecognized-flags')
- ..add(artifact.filename);
- }
-}
-
/// Common configuration for analyzer-based tools, such as, dartanalyzer.
class AnalyzerCompilerConfiguration extends CompilerConfiguration {
final String moniker;
diff --git a/tools/testing/dart/status_reporter.dart b/tools/testing/dart/status_reporter.dart
index 7536e13..0e744d0 100644
--- a/tools/testing/dart/status_reporter.dart
+++ b/tools/testing/dart/status_reporter.dart
@@ -19,12 +19,6 @@
'compiler' : 'none'
},
{
- 'runtimes' : ['vm'],
- 'modes' : ['release'],
- 'archs' : ['ia32', 'x64'],
- 'compiler' : 'dart2dart'
- },
- {
'runtimes' : ['d8', 'jsshell', 'chrome', 'ff'],
'modes' : ['release'],
'archs' : ['ia32'],
diff --git a/tools/testing/dart/test_options.dart b/tools/testing/dart/test_options.dart
index 9bd9aaa..a33224a 100644
--- a/tools/testing/dart/test_options.dart
+++ b/tools/testing/dart/test_options.dart
@@ -60,9 +60,6 @@
none: Do not compile the Dart code (run native Dart code on the VM).
(only valid with the following runtimes: vm, drt)
- dart2dart: Compile Dart code to Dart code
- (only valid with the following runtimes: vm, drt)
-
dart2js: Compile dart code to JavaScript by running dart2js.
(only valid with the following runtimes: d8, drt, chrome,
safari, ie9, ie10, ie11, firefox, opera, chromeOnAndroid,
@@ -72,7 +69,7 @@
dart2analyzer: Perform static analysis on Dart code by running the analyzer on Dart.
(only valid with the following runtimes: none)''',
['-c', '--compiler'],
- ['none', 'dart2dart', 'dart2js', 'dartanalyzer', 'dart2analyzer'],
+ ['none', 'dart2js', 'dartanalyzer', 'dart2analyzer'],
'none'),
// TODO(antonm): fix the option drt.
new _TestOptionSpecification(
@@ -651,7 +648,6 @@
validRuntimes = const ['none'];
break;
case 'none':
- case 'dart2dart':
validRuntimes = const ['vm', 'drt', 'dartium',
'ContentShellOnAndroid', 'DartiumOnAndroid'];
break;
diff --git a/tools/testing/dart/test_runner.dart b/tools/testing/dart/test_runner.dart
index 2fb96b4..97ad17a 100644
--- a/tools/testing/dart/test_runner.dart
+++ b/tools/testing/dart/test_runner.dart
@@ -1564,7 +1564,7 @@
if (hasCrashed) return Expectation.CRASH;
if (hasTimedOut) return Expectation.TIMEOUT;
- // Handle dart2js/dart2dart specific crash detection
+ // Handle dart2js specific crash detection
if (exitCode == DART2JS_EXITCODE_CRASH ||
exitCode == VmCommandOutputImpl.DART_VM_EXITCODE_COMPILE_TIME_ERROR ||
exitCode == VmCommandOutputImpl.DART_VM_EXITCODE_UNCAUGHT_EXCEPTION) {
diff --git a/tools/testing/dart/test_suite.dart b/tools/testing/dart/test_suite.dart
index 07a56d1..e6c6778 100644
--- a/tools/testing/dart/test_suite.dart
+++ b/tools/testing/dart/test_suite.dart
@@ -1328,7 +1328,7 @@
contentShellOptions.add('--no-timeout');
contentShellOptions.add('--dump-render-tree');
- if (compiler == 'none' || compiler == 'dart2dart') {
+ if (compiler == 'none') {
dartFlags.add('--ignore-unrecognized-flags');
if (configuration["checked"]) {
dartFlags.add('--enable_asserts');
@@ -1455,7 +1455,7 @@
/** Helper to create a compilation command for a single input file. */
Command _compileCommand(String inputFile, String outputFile,
String compiler, String dir, optionsFromFile) {
- assert (['dart2js', 'dart2dart'].contains(compiler));
+ assert(compiler == 'dart2js');
List<String> args;
if (compilerPath.endsWith('.dart')) {
// Run the compiler script via the Dart VM.
@@ -1495,7 +1495,6 @@
String get scriptType {
switch (configuration['compiler']) {
case 'none':
- case 'dart2dart':
return 'application/dart';
case 'dart2js':
case 'dartanalyzer':
@@ -1592,7 +1591,7 @@
*
* // VMOptions=--flag1 --flag2
*
- * - Flags can be passed to dart2js, dart2dart or vm by adding a comment
+ * - Flags can be passed to dart2js or vm by adding a comment
* to the test file:
*
* // SharedOptions=--flag1 --flag2
@@ -1744,18 +1743,14 @@
}
List<List<String>> getVmOptions(Map optionsFromFile) {
- var COMPILERS = const ['none', 'dart2dart'];
+ var COMPILERS = const ['none'];
var RUNTIMES = const ['none', 'vm', 'drt', 'dartium',
'ContentShellOnAndroid', 'DartiumOnAndroid'];
var needsVmOptions = COMPILERS.contains(configuration['compiler']) &&
RUNTIMES.contains(configuration['runtime']);
if (!needsVmOptions) return [[]];
final vmOptions = optionsFromFile['vmOptions'];
- if (configuration['compiler'] != 'dart2dart') return vmOptions;
- // Temporary workaround for race in test suite: tests with different
- // vm options are still compiled into the same output file which
- // may lead to reads from empty files.
- return [vmOptions[0]];
+ return vmOptions;
}
/**
@@ -2203,7 +2198,7 @@
args.add("--enable_type_checks");
}
String compiler = configuration["compiler"];
- if (compiler == "dart2js" || compiler == "dart2dart") {
+ if (compiler == "dart2js") {
args = [];
if (configuration["checked"]) {
args.add('--enable-checked-mode');
@@ -2214,7 +2209,7 @@
args.add("--categories=all");
}
}
- if ((compiler == "dart2js" || compiler == "dart2dart") &&
+ if ((compiler == "dart2js") &&
configuration["minified"]) {
args.add("--minify");
}