Version 2.0.0-dev.27.0
Merge commit '0bda5c90154f9acf7c3ff1cd17110cbbc27df5f2' into dev
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 2056f5c..f1d3c51 100644
--- a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
@@ -1475,12 +1475,6 @@
return;
}
- // We can inline the list of our children only into another list.
- var widgetParentNode = widgetCreation.parent;
- if (widgetParentNode is! ListLiteral) {
- return;
- }
-
// Prepare the list of our children.
List<Expression> childrenExpressions;
{
@@ -1494,6 +1488,12 @@
}
}
+ // We can inline the list of our children only into another list.
+ var widgetParentNode = widgetCreation.parent;
+ if (childrenExpressions.length > 1 && widgetParentNode is! ListLiteral) {
+ return;
+ }
+
DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
var firstChild = childrenExpressions.first;
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 9bd531c..46227d3 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -16,6 +16,7 @@
import 'package:analysis_server/src/services/correction/util.dart';
import 'package:analysis_server/src/services/search/hierarchy.dart';
import 'package:analysis_server/src/utilities/flutter.dart' as flutter;
+import 'package:analyzer/context/context_root.dart';
import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/standard_resolution_map.dart';
@@ -3216,30 +3217,24 @@
* Return `true` if the [source] can be imported into [unitLibraryFile].
*/
bool _isSourceVisibleToLibrary(Source source) {
- if (!source.uri.isScheme('file')) {
+ String path = source.fullName;
+
+ ContextRoot contextRoot = driver.contextRoot;
+ if (contextRoot == null) {
return true;
}
- // Prepare the root of our package.
- Folder packageRoot;
- for (Folder folder = unitLibraryFolder;
- folder != null;
- folder = folder.parent) {
- if (folder.getChildAssumingFile('pubspec.yaml').exists ||
- folder.getChildAssumingFile('BUILD').exists) {
- packageRoot = folder;
- break;
- }
- }
-
- // This should be rare / never situation.
- if (packageRoot == null) {
- return true;
+ // We don't want to use private libraries of other packages.
+ if (source.uri.isScheme('package') && _isLibSrcPath(path)) {
+ return resourceProvider.pathContext.isWithin(contextRoot.root, path);
}
// We cannot use relative URIs to reference files outside of our package.
- return resourceProvider.pathContext
- .isWithin(packageRoot.path, source.fullName);
+ if (source.uri.isScheme('file')) {
+ return resourceProvider.pathContext.isWithin(contextRoot.root, path);
+ }
+
+ return true;
}
/**
diff --git a/pkg/analysis_server/test/abstract_context.dart b/pkg/analysis_server/test/abstract_context.dart
index 069e2b0..3ec06b6 100644
--- a/pkg/analysis_server/test/abstract_context.dart
+++ b/pkg/analysis_server/test/abstract_context.dart
@@ -4,6 +4,7 @@
import 'dart:async';
+import 'package:analyzer/context/context_root.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/visitor.dart';
@@ -114,7 +115,7 @@
resourceProvider,
new MemoryByteStore(),
_fileContentOverlay,
- null,
+ new ContextRoot(resourceProvider.convertPath('/project'), []),
sourceFactory,
new AnalysisOptionsImpl()..strongMode = true);
scheduler.start();
diff --git a/pkg/analysis_server/test/edit/fixes_test.dart b/pkg/analysis_server/test/edit/fixes_test.dart
index 684506f..92c67e2 100644
--- a/pkg/analysis_server/test/edit/fixes_test.dart
+++ b/pkg/analysis_server/test/edit/fixes_test.dart
@@ -110,22 +110,25 @@
}
test_suggestImportFromDifferentAnalysisRoot() async {
- // Set up two projects.
- newFolder("/project1");
- newFolder("/project2");
+ newFolder('/aaa');
+ newFile('/aaa/.packages', content: '''
+aaa:${resourceProvider.convertPath('/aaa/lib')}
+bbb:${resourceProvider.convertPath('/bbb/lib')}
+''');
+ // Ensure that the target is analyzed as an implicit source.
+ newFile('/aaa/lib/foo.dart', content: 'import "package:bbb/target.dart";');
+
+ newFolder('/bbb');
+ newFile('/bbb/lib/target.dart', content: 'class Foo() {}');
+
handleSuccessfulRequest(
- new AnalysisSetAnalysisRootsParams(["/project1", "/project2"], [])
- .toRequest('0'),
+ new AnalysisSetAnalysisRootsParams(['/aaa', '/bbb'], []).toRequest('0'),
handler: analysisHandler);
- // Set up files.
- testFile = resourceProvider.convertPath('/project1/main.dart');
- testCode = 'main() { print(new Foo()); }';
+ // Configure the test file.
+ testFile = resourceProvider.convertPath('/aaa/main.dart');
+ testCode = 'main() { new Foo(); }';
_addOverlay(testFile, testCode);
- // Add another file in the same project that imports the target file.
- // This ensures it will be analyzed as an implicit Source.
- _addOverlay('/project1/another.dart', 'import "../project2/target.dart";');
- _addOverlay('/project2/target.dart', 'class Foo() {}');
await waitForTasksFinished();
@@ -134,7 +137,7 @@
.fixes
.map((f) => f.message)
.toList();
- expect(fixes, contains("Import library '../project2/target.dart'"));
+ expect(fixes, contains("Import library 'package:bbb/target.dart'"));
}
void _addOverlay(String name, String contents) {
diff --git a/pkg/analysis_server/test/services/correction/assist_test.dart b/pkg/analysis_server/test/services/correction/assist_test.dart
index 35ff0a3..5518646 100644
--- a/pkg/analysis_server/test/services/correction/assist_test.dart
+++ b/pkg/analysis_server/test/services/correction/assist_test.dart
@@ -85,19 +85,6 @@
await assertNoAssist(kind);
}
- Position expectedPosition(String search) {
- int offset = resultCode.indexOf(search);
- return new Position(testFile, offset);
- }
-
- List<Position> expectedPositions(List<String> patterns) {
- List<Position> positions = <Position>[];
- patterns.forEach((String search) {
- positions.add(expectedPosition(search));
- });
- return positions;
- }
-
List<LinkedEditSuggestion> expectedSuggestions(
LinkedEditSuggestionKind kind, List<String> values) {
return values.map((value) {
@@ -2874,7 +2861,7 @@
''');
}
- test_flutterRemoveWidget_BAD_childrenIntoChild() async {
+ test_flutterRemoveWidget_BAD_childrenMultipleIntoChild() async {
addFlutterPackage();
await resolveTestUnit('''
import 'package:flutter/material.dart';
@@ -2995,6 +2982,52 @@
''');
}
+ test_flutterRemoveWidget_OK_childrenOneIntoChild() async {
+ addFlutterPackage();
+ await resolveTestUnit('''
+import 'package:flutter/material.dart';
+main() {
+ new Center(
+ child: /*caret*/new Column(
+ children: [
+ new Text('foo'),
+ ],
+ ),
+ );
+}
+''');
+ _setCaretLocation();
+ await assertHasAssist(DartAssistKind.FLUTTER_REMOVE_WIDGET, '''
+import 'package:flutter/material.dart';
+main() {
+ new Center(
+ child: /*caret*/new Text('foo'),
+ );
+}
+''');
+ }
+
+ test_flutterRemoveWidget_OK_childrenOneIntoReturn() async {
+ addFlutterPackage();
+ await resolveTestUnit('''
+import 'package:flutter/material.dart';
+main() {
+ return /*caret*/new Column(
+ children: [
+ new Text('foo'),
+ ],
+ );
+}
+''');
+ _setCaretLocation();
+ await assertHasAssist(DartAssistKind.FLUTTER_REMOVE_WIDGET, '''
+import 'package:flutter/material.dart';
+main() {
+ return /*caret*/new Text('foo');
+}
+''');
+ }
+
test_flutterRemoveWidget_OK_intoChildren() async {
addFlutterPackage();
await resolveTestUnit('''
diff --git a/pkg/analysis_server/test/services/correction/fix_test.dart b/pkg/analysis_server/test/services/correction/fix_test.dart
index 4402f49..e3d6398 100644
--- a/pkg/analysis_server/test/services/correction/fix_test.dart
+++ b/pkg/analysis_server/test/services/correction/fix_test.dart
@@ -105,19 +105,6 @@
}
}
- Position expectedPosition(String search) {
- int offset = resultCode.indexOf(search);
- return new Position(testFile, offset);
- }
-
- List<Position> expectedPositions(List<String> patterns) {
- List<Position> positions = <Position>[];
- patterns.forEach((String search) {
- positions.add(expectedPosition(search));
- });
- return positions;
- }
-
List<LinkedEditSuggestion> expectedSuggestions(
LinkedEditSuggestionKind kind, List<String> values) {
return values.map((value) {
@@ -3562,35 +3549,26 @@
''');
}
- test_importLibraryPackage_preferPublicOverPrivate() async {
- _configureMyPkg(
- {'src/a.dart': 'class Test {}', 'b.dart': "export 'src/a.dart';"});
+ test_importLibraryProject_BAD_inLibSrc_differentContextRoot() async {
+ addPackageSource('bbb', 'b1.dart', r'''
+import 'src/b2.dart';
+''');
+ addPackageSource('bbb', 'src/b2.dart', 'class Test {}');
await resolveTestUnit('''
+import 'package:bbb/b1.dart';
main() {
- Test test = null;
+ Test t;
}
''');
- await assertHasFix(DartFixKind.IMPORT_LIBRARY_PROJECT2, '''
-import 'package:my_pkg/b.dart';
-
-main() {
- Test test = null;
-}
-''');
- await assertHasFix(DartFixKind.IMPORT_LIBRARY_PROJECT3, '''
-import 'package:my_pkg/src/a.dart';
-
-main() {
- Test test = null;
-}
-''');
+ errorFilter = (AnalysisError error) {
+ return error.errorCode == StaticWarningCode.UNDEFINED_CLASS;
+ };
+ await assertNoFix(DartFixKind.IMPORT_LIBRARY_PROJECT3);
}
test_importLibraryProject_BAD_notInLib_BUILD() async {
- testFile = '/aaa/bin/test.dart';
- newFile('/aaa/BUILD');
- newFile('/bbb/BUILD');
- addSource('/bbb/test/lib.dart', 'class Test {}');
+ testFile = '/project/lib/test.dart';
+ addSource('/other/test/lib.dart', 'class Test {}');
await resolveTestUnit('''
main() {
Test t;
@@ -3600,10 +3578,8 @@
}
test_importLibraryProject_BAD_notInLib_pubspec() async {
- testFile = '/aaa/bin/test.dart';
- newFile('/aaa/pubspec.yaml', content: 'name: aaa');
- newFile('/bbb/pubspec.yaml', content: 'name: bbb');
- addSource('/bbb/test/lib.dart', 'class Test {}');
+ testFile = '/project/lib/test.dart';
+ addSource('/other/test/lib.dart', 'class Test {}');
await resolveTestUnit('''
main() {
Test t;
@@ -3612,8 +3588,30 @@
await assertNoFix(DartFixKind.IMPORT_LIBRARY_PROJECT1);
}
+ test_importLibraryProject_OK_inLibSrc_thisContextRoot() async {
+ testFile = '/project/lib/test.dart';
+ packageMap['project'] = [newFolder('/project/lib')];
+ addSource('/project/lib/src/lib.dart', 'class Test {}');
+ await resolveTestUnit('''
+main() {
+ Test t;
+}
+''');
+ errorFilter = (AnalysisError error) {
+ return error.errorCode == StaticWarningCode.UNDEFINED_CLASS;
+ };
+ await assertHasFix(DartFixKind.IMPORT_LIBRARY_PROJECT3, '''
+import 'package:project/src/lib.dart';
+
+main() {
+ Test t;
+}
+''');
+ }
+
test_importLibraryProject_withClass_annotation() async {
- addSource('/lib.dart', '''
+ testFile = '/project/lib/test.dart';
+ addSource('/project/lib/lib.dart', '''
library lib;
class Test {
const Test(int p);
@@ -3634,7 +3632,8 @@
}
test_importLibraryProject_withClass_constInstanceCreation() async {
- addSource('/lib.dart', '''
+ testFile = '/project/lib/test.dart';
+ addSource('/project/lib/lib.dart', '''
class Test {
const Test();
}
@@ -3742,7 +3741,8 @@
}
test_importLibraryProject_withFunction() async {
- addSource('/lib.dart', '''
+ testFile = '/project/lib/test.dart';
+ addSource('/project/lib/lib.dart', '''
library lib;
myFunction() {}
''');
@@ -3761,7 +3761,8 @@
}
test_importLibraryProject_withFunction_unresolvedMethod() async {
- addSource('/lib.dart', '''
+ testFile = '/project/lib/test.dart';
+ addSource('/project/lib/lib.dart', '''
library lib;
myFunction() {}
''');
@@ -3804,7 +3805,8 @@
}
test_importLibraryProject_withTopLevelVariable() async {
- addSource('/lib.dart', '''
+ testFile = '/project/lib/test.dart';
+ addSource('/project/lib/lib.dart', '''
library lib;
int MY_VAR = 42;
''');
diff --git a/pkg/analyzer/lib/file_system/physical_file_system.dart b/pkg/analyzer/lib/file_system/physical_file_system.dart
index 2314617..1812123 100644
--- a/pkg/analyzer/lib/file_system/physical_file_system.dart
+++ b/pkg/analyzer/lib/file_system/physical_file_system.dart
@@ -40,27 +40,6 @@
}
/**
- * Return a (semi-)canonicalized version of [path] for the purpose of analysis.
- *
- * Using the built-in path's [canonicalize] results in fully lowercase paths on
- * Windows displayed to the user so this method uses [normalize] and then just
- * uppercases the drive letter on Windows to resolve the most common issues.
- */
-String _canonicalize(String path) {
- path = normalize(path);
- // Ideally we'd call path's [canonicalize] here to ensure that on
- // case-insensitive file systems that different casing paths resolved to the
- // same thing; however these paths are used both as both as part of the
- // identity and also to display to users in error messages so for now we only
- // canonicalize the drive letter to resolve the most common issues.
- // https://github.com/dart-lang/sdk/issues/32095
- if (io.Platform.isWindows && isAbsolute(path)) {
- path = path.substring(0, 1).toUpperCase() + path.substring(1);
- }
- return path;
-}
-
-/**
* The name of the directory containing plugin specific subfolders used to
* store data across sessions.
*/
@@ -111,13 +90,13 @@
@override
File getFile(String path) {
- path = _canonicalize(path);
+ path = normalize(path);
return new _PhysicalFile(new io.File(path));
}
@override
Folder getFolder(String path) {
- path = _canonicalize(path);
+ path = normalize(path);
return new _PhysicalFolder(new io.Directory(path));
}
@@ -276,7 +255,7 @@
@override
String canonicalizePath(String relPath) {
- return _canonicalize(join(path, relPath));
+ return normalize(join(path, relPath));
}
@override
diff --git a/pkg/dev_compiler/web/source_map_stack_trace.dart b/pkg/dev_compiler/web/source_map_stack_trace.dart
index a23bf85..d5c019a 100644
--- a/pkg/dev_compiler/web/source_map_stack_trace.dart
+++ b/pkg/dev_compiler/web/source_map_stack_trace.dart
@@ -44,8 +44,8 @@
for (var root in roots) {
if (root != null && p.url.isWithin(root, sourceUrl)) {
var relative = p.url.relative(sourceUrl, from: root);
- if (relative.startsWith('dart:')) {
- sourceUrl = relative;
+ if (relative.contains('dart:')) {
+ sourceUrl = relative.substring(relative.indexOf('dart:'));
break;
}
var packageRoot = '$root/packages';
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index f5ad752..269228d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -7,18 +7,6 @@
// ignore: UNDEFINED_HIDDEN_NAME
import 'dart:core' hide MapEntry;
-import 'package:kernel/ast.dart' hide InvalidExpression, InvalidInitializer;
-
-import 'package:kernel/type_algebra.dart' show instantiateToBounds;
-
-import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
-
-import 'package:kernel/clone.dart' show CloneVisitor;
-
-import 'package:kernel/core_types.dart' show CoreTypes;
-
-import 'package:kernel/transformations/flags.dart' show TransformerFlag;
-
import '../fasta_codes.dart' as fasta;
import '../fasta_codes.dart'
@@ -85,13 +73,21 @@
import 'utils.dart' show offsetForToken;
+import 'forest.dart' show Forest;
+
+import 'fangorn.dart' show Fangorn;
+
import '../names.dart';
import 'fasta_accessors.dart';
+import 'kernel_api.dart';
+
+import 'kernel_ast_api.dart';
+
import 'kernel_builder.dart';
-import 'kernel_shadow_ast.dart';
+final Forest<Expression, Statement> _forest = new Fangorn();
class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
@override
@@ -110,6 +106,7 @@
final Scope enclosingScope;
final bool enableNative;
+
final bool stringExpectedAfterNative;
/// Whether to ignore an unresolved reference to `main` within the body of
@@ -209,6 +206,9 @@
typePromoter = _typeInferrer.typePromoter,
super(scope);
+ @override
+ Forest<Expression, Statement> get forest => _forest;
+
bool get hasParserError => recoverableErrors.isNotEmpty;
bool get inConstructor {
@@ -1463,7 +1463,7 @@
if (value == null) {
push(new LargeIntAccessor(this, token));
} else {
- push(new ShadowIntLiteral(value)..fileOffset = offsetForToken(token));
+ push(forest.literalInt(value, offsetForToken(token)));
}
}
@@ -2231,8 +2231,7 @@
int value =
int.parse("-" + receiver.token.lexeme, onError: (_) => null);
if (value != null) {
- push(new ShadowIntLiteral(value)
- ..fileOffset = offsetForToken(token));
+ push(forest.literalInt(value, offsetForToken(token)));
return;
}
}
@@ -3434,13 +3433,17 @@
Expression buildFallThroughError(int charOffset) {
addProblem(fasta.messageSwitchCaseFallThrough, charOffset);
+ // TODO(ahe): The following doesn't make sense for the Analyzer. It should
+ // be moved to [Forest] or conditional on `forest is Fangorn`.
+
+ // TODO(ahe): Compute a LocatedMessage above instead?
Location location = messages.getLocationFromUri(uri, charOffset);
return new Throw(buildStaticInvocation(
library.loader.coreTypes.fallThroughErrorUrlAndLineConstructor,
new Arguments(<Expression>[
new StringLiteral("${location?.file ?? uri}"),
- new IntLiteral(location?.line ?? 0)
+ forest.literalInt(location?.line ?? 0, charOffset),
]),
charOffset: charOffset));
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/fangorn.dart b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
new file mode 100644
index 0000000..f102ac7
--- /dev/null
+++ b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2018, 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 fasta.fangorn;
+
+import 'kernel_shadow_ast.dart';
+
+import 'forest.dart' show Forest;
+
+/// A shadow tree factory.
+class Fangorn extends Forest<ShadowExpression, ShadowStatement> {
+ @override
+ ShadowExpression literalInt(int value, int offset) {
+ return new ShadowIntLiteral(value)..fileOffset = offset;
+ }
+}
diff --git a/pkg/front_end/lib/src/fasta/kernel/fasta_accessors.dart b/pkg/front_end/lib/src/fasta/kernel/fasta_accessors.dart
index a838287..27d8092 100644
--- a/pkg/front_end/lib/src/fasta/kernel/fasta_accessors.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/fasta_accessors.dart
@@ -4,8 +4,6 @@
library fasta.fasta_accessors;
-import 'package:kernel/ast.dart' hide InvalidExpression, InvalidInitializer;
-
import '../../scanner/token.dart' show Token;
import '../fasta_codes.dart'
@@ -27,6 +25,8 @@
import '../type_inference/type_promotion.dart' show TypePromoter;
+import 'forest.dart' show Forest;
+
import 'frontend_accessors.dart' as kernel
show
IndexAccessor,
@@ -45,6 +45,8 @@
import 'frontend_accessors.dart' show Accessor;
+import 'kernel_ast_api.dart';
+
import 'kernel_builder.dart'
show
Builder,
@@ -60,18 +62,6 @@
TypeDeclarationBuilder,
KernelTypeBuilder;
-import 'kernel_shadow_ast.dart'
- show
- ShadowArguments,
- ShadowComplexAssignment,
- ShadowIllegalAssignment,
- ShadowIndexAssign,
- ShadowPropertyAssign,
- ShadowStaticAssignment,
- ShadowThisExpression,
- ShadowTypeLiteral,
- ShadowVariableAssignment;
-
import 'utils.dart' show offsetForToken;
import 'type_algorithms.dart' show calculateBoundsForDeclaration;
@@ -87,6 +77,8 @@
bool get constantExpressionRequired;
+ Forest<Expression, Statement> get forest;
+
Constructor lookupConstructor(Name name, {bool isSuper});
Expression toValue(node);
@@ -325,7 +317,10 @@
{int offset: TreeNode.noOffset,
bool voidContext: false,
Procedure interfaceTarget}) {
- return buildError(new ShadowArguments(<Expression>[new IntLiteral(1)]),
+ // TODO(ahe): For the Analyzer, we probably need to build a prefix
+ // increment node that wraps an error.
+ return buildError(
+ new ShadowArguments(<Expression>[helper.forest.literalInt(1, offset)]),
isGetter: true);
}
@@ -334,7 +329,10 @@
{int offset: TreeNode.noOffset,
bool voidContext: false,
Procedure interfaceTarget}) {
- return buildError(new ShadowArguments(<Expression>[new IntLiteral(1)]),
+ // TODO(ahe): For the Analyzer, we probably need to build a post increment
+ // node that wraps an error.
+ return buildError(
+ new ShadowArguments(<Expression>[helper.forest.literalInt(1, offset)]),
isGetter: true);
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/forest.dart b/pkg/front_end/lib/src/fasta/kernel/forest.dart
new file mode 100644
index 0000000..283d8cc
--- /dev/null
+++ b/pkg/front_end/lib/src/fasta/kernel/forest.dart
@@ -0,0 +1,10 @@
+// Copyright (c) 2018, 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 fasta.forest;
+
+/// A tree factory.
+abstract class Forest<Expression, Statement> {
+ Expression literalInt(int value, int offset);
+}
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_api.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_api.dart
new file mode 100644
index 0000000..7d5877f
--- /dev/null
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_api.dart
@@ -0,0 +1,16 @@
+// Copyright (c) 2018, 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.
+
+/// This library exports all API from Kernel that can be used throughout fasta.
+library fasta.kernel_api;
+
+export 'package:kernel/type_algebra.dart' show instantiateToBounds;
+
+export 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
+
+export 'package:kernel/clone.dart' show CloneVisitor;
+
+export 'package:kernel/core_types.dart' show CoreTypes;
+
+export 'package:kernel/transformations/flags.dart' show TransformerFlag;
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
new file mode 100644
index 0000000..472ab0b
--- /dev/null
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
@@ -0,0 +1,131 @@
+// Copyright (c) 2018, 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.
+
+/// This library exports all API from Kernel's ast.dart that can be used
+/// throughout fasta.
+library fasta.kernel_ast_api;
+
+export 'package:kernel/ast.dart'
+ show
+ Arguments,
+ AssertStatement,
+ AsyncMarker,
+ Block,
+ BreakStatement,
+ Catch,
+ CheckLibraryIsLoaded,
+ Class,
+ ConditionalExpression,
+ Constructor,
+ ConstructorInvocation,
+ ContinueSwitchStatement,
+ DartType,
+ DynamicType,
+ EmptyStatement,
+ Expression,
+ ExpressionStatement,
+ Field,
+ FunctionDeclaration,
+ FunctionNode,
+ FunctionType,
+ Initializer,
+ InvalidType,
+ LabeledStatement,
+ Let,
+ Library,
+ Location,
+ MapEntry,
+ Member,
+ MethodInvocation,
+ Name,
+ NamedExpression,
+ NamedType,
+ NullLiteral,
+ Procedure,
+ ProcedureKind,
+ Rethrow,
+ ReturnStatement,
+ Statement,
+ StaticGet,
+ StringConcatenation,
+ StringLiteral,
+ SuperInitializer,
+ SwitchCase,
+ ThisExpression,
+ Throw,
+ TreeNode,
+ TypeParameter,
+ TypeParameterType,
+ VariableDeclaration,
+ VariableGet,
+ VoidType,
+ setParents;
+
+export 'kernel_shadow_ast.dart'
+ show
+ ShadowArguments,
+ ShadowAsExpression,
+ ShadowAssertInitializer,
+ ShadowAssertStatement,
+ ShadowAwaitExpression,
+ ShadowBlock,
+ ShadowBoolLiteral,
+ ShadowBreakStatement,
+ ShadowCascadeExpression,
+ ShadowComplexAssignment,
+ ShadowConditionalExpression,
+ ShadowConstructorInvocation,
+ ShadowContinueSwitchStatement,
+ ShadowDeferredCheck,
+ ShadowDoStatement,
+ ShadowDoubleLiteral,
+ ShadowExpressionStatement,
+ ShadowFactoryConstructorInvocation,
+ ShadowFieldInitializer,
+ ShadowForInStatement,
+ ShadowForStatement,
+ ShadowFunctionDeclaration,
+ ShadowFunctionExpression,
+ ShadowIfNullExpression,
+ ShadowIfStatement,
+ ShadowIllegalAssignment,
+ ShadowIndexAssign,
+ ShadowInvalidInitializer,
+ ShadowIsExpression,
+ ShadowIsNotExpression,
+ ShadowLabeledStatement,
+ ShadowListLiteral,
+ ShadowLogicalExpression,
+ ShadowLoopAssignmentStatement,
+ ShadowMapLiteral,
+ ShadowMethodInvocation,
+ ShadowNamedFunctionExpression,
+ ShadowNot,
+ ShadowNullAwareMethodInvocation,
+ ShadowNullLiteral,
+ ShadowPropertyAssign,
+ ShadowRedirectingInitializer,
+ ShadowRethrow,
+ ShadowReturnStatement,
+ ShadowStaticAssignment,
+ ShadowStaticGet,
+ ShadowStaticInvocation,
+ ShadowStringConcatenation,
+ ShadowStringLiteral,
+ ShadowSuperInitializer,
+ ShadowSuperMethodInvocation,
+ ShadowSuperPropertyGet,
+ ShadowSwitchStatement,
+ ShadowSymbolLiteral,
+ ShadowSyntheticExpression,
+ ShadowThisExpression,
+ ShadowThrow,
+ ShadowTryCatch,
+ ShadowTryFinally,
+ ShadowTypeLiteral,
+ ShadowVariableAssignment,
+ ShadowVariableDeclaration,
+ ShadowVariableGet,
+ ShadowWhileStatement,
+ ShadowYieldStatement;
diff --git a/pkg/front_end/lib/src/fasta/loader.dart b/pkg/front_end/lib/src/fasta/loader.dart
index 8c40e68..6bba731 100644
--- a/pkg/front_end/lib/src/fasta/loader.dart
+++ b/pkg/front_end/lib/src/fasta/loader.dart
@@ -85,6 +85,12 @@
LibraryBuilder read(Uri uri, int charOffset,
{Uri fileUri, LibraryBuilder accessor, LibraryBuilder origin}) {
LibraryBuilder builder = builders.putIfAbsent(uri, () {
+ if (fileUri != null &&
+ (fileUri.scheme == "dart" ||
+ fileUri.scheme == "package" ||
+ fileUri.scheme == "dart-ext")) {
+ fileUri = null;
+ }
if (fileUri == null) {
switch (uri.scheme) {
case "package":
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index ab381f5..cc8fd0a 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -276,9 +276,7 @@
Uri resolvedUri;
Uri newFileUri;
resolvedUri = resolve(this.uri, uri, charOffset, isPart: true);
- if (this.uri.scheme != "package") {
- newFileUri = resolve(fileUri, uri, charOffset);
- }
+ newFileUri = resolve(fileUri, uri, charOffset);
parts.add(loader.read(resolvedUri, charOffset,
fileUri: newFileUri, accessor: this));
}
diff --git a/pkg/front_end/lib/src/fasta/uri_translator_impl.dart b/pkg/front_end/lib/src/fasta/uri_translator_impl.dart
index 78d9e26..9d31710 100644
--- a/pkg/front_end/lib/src/fasta/uri_translator_impl.dart
+++ b/pkg/front_end/lib/src/fasta/uri_translator_impl.dart
@@ -47,15 +47,7 @@
/// if there is no corresponding Dart library registered.
Uri _translateDartUri(Uri uri) {
if (!uri.isScheme('dart')) return null;
- String path = uri.path;
-
- int index = path.indexOf('/');
- if (index == -1) return dartLibraries.libraryInfoFor(path)?.uri;
-
- String libraryName = path.substring(0, index);
- String relativePath = path.substring(index + 1);
- Uri libraryFileUri = dartLibraries.libraryInfoFor(libraryName).uri;
- return libraryFileUri?.resolve(relativePath);
+ return dartLibraries.libraryInfoFor(uri.path)?.uri;
}
/// Return the file URI that corresponds to the given `package` URI, or
diff --git a/pkg/front_end/test/fasta/uri_translator_test.dart b/pkg/front_end/test/fasta/uri_translator_test.dart
index cb04561..455d771 100644
--- a/pkg/front_end/test/fasta/uri_translator_test.dart
+++ b/pkg/front_end/test/fasta/uri_translator_test.dart
@@ -40,8 +40,7 @@
void test_translate_dart() {
expect(translator.translate(Uri.parse('dart:core')),
Uri.parse('org-dartlang-test:///sdk/core/core.dart'));
- expect(translator.translate(Uri.parse('dart:core/string.dart')),
- Uri.parse('org-dartlang-test:///sdk/core/string.dart'));
+ expect(translator.translate(Uri.parse('dart:core/string.dart')), null);
expect(translator.translate(Uri.parse('dart:math')),
Uri.parse('org-dartlang-test:///sdk/math/math.dart'));
diff --git a/pkg/front_end/tool/_fasta/command_line.dart b/pkg/front_end/tool/_fasta/command_line.dart
index a25d6be..f3404a3 100644
--- a/pkg/front_end/tool/_fasta/command_line.dart
+++ b/pkg/front_end/tool/_fasta/command_line.dart
@@ -56,22 +56,29 @@
///
/// An /argument/ is something that isn't an option, for example, a file name.
///
- /// The specification is a map of options to one of the type literals `Uri`,
- /// `int`, `bool`, or `String`, or a comma (`","`) that represents option
- /// values of type [Uri], [int], [bool], [String], or a comma-separated list
- /// of [String], respectively.
+ /// The specification is a map of options to one of the following values:
+ /// * the type literal `Uri`, representing an option value of type [Uri],
+ /// * the type literal `int`, representing an option value of type [int],
+ /// * the bool literal `false`, representing a boolean option that is turned
+ /// off by default,
+ /// * the bool literal `true, representing a boolean option that is turned on
+ /// by default,
+ /// * or the string literal `","`, representing a comma-separated list of
+ /// values.
///
/// If [arguments] contains `"--"`, anything before is parsed as options, and
/// arguments; anything following is treated as arguments (even if starting
/// with, for example, a `-`).
///
- /// Anything that looks like an option is assumed to be a `bool` option set
- /// to true, unless it's mentioned in [specification] in which case the
- /// option requires a value, either on the form `--option value` or
- /// `--option=value`.
+ /// If an option isn't found in [specification], an error is thrown.
///
- /// This method performs only a limited amount of validation, but if an error
- /// occurs, it will print [usage] along with a specific error message.
+ /// Boolean options do not require an option value, but an optional value can
+ /// be provided using the forms `--option=value` where `value` can be `true`
+ /// or `yes` to turn on the option, or `false` or `no` to turn it off. If no
+ /// option value is specified, a boolean option is turned on.
+ ///
+ /// All other options require an option value, either on the form `--option
+ /// value` or `--option=value`.
static ParsedArguments parse(
List<String> arguments, Map<String, dynamic> specification) {
specification ??= const <String, dynamic>{};
@@ -85,109 +92,134 @@
}
while (iterator.moveNext()) {
String argument = iterator.current;
- if (argument.startsWith("-")) {
- var valueSpecification = specification[argument];
+ if (argument.startsWith("-") || argument == "/?" || argument == "/h") {
+ index = argument.indexOf("=");
String value;
- if (valueSpecification != null) {
+ if (index != -1) {
+ value = argument.substring(index + 1);
+ argument = argument.substring(0, index);
+ }
+ var valueSpecification = specification[argument];
+ if (valueSpecification == null) {
+ throw new CommandLineProblem.deprecated(
+ "Unknown option '$argument'.");
+ }
+ String canonicalArgument = argument;
+ if (valueSpecification is String && valueSpecification != ",") {
+ canonicalArgument = valueSpecification;
+ valueSpecification = specification[valueSpecification];
+ }
+ if (valueSpecification == true || valueSpecification == false) {
+ valueSpecification = bool;
+ }
+ if (valueSpecification is! String && valueSpecification is! Type) {
+ throw new CommandLineProblem.deprecated("Unrecognized type of value "
+ "specification: ${valueSpecification.runtimeType}.");
+ }
+ final bool requiresValue = valueSpecification != bool;
+ if (requiresValue && value == null) {
if (!iterator.moveNext()) {
throw new CommandLineProblem(
templateFastaCLIArgumentRequired.withArguments(argument));
}
value = iterator.current;
- } else {
- index = argument.indexOf("=");
- if (index != -1) {
- value = argument.substring(index + 1);
- argument = argument.substring(0, index);
- valueSpecification = specification[argument];
- }
}
- if (valueSpecification == null) {
- if (value != null) {
- throw new CommandLineProblem.deprecated(
- "Option '$argument' doesn't take a value: '$value'.");
- }
- result.options[argument] = true;
- } else {
- if (valueSpecification is! String && valueSpecification is! Type) {
- return throw new CommandLineProblem.deprecated(
- "Unrecognized type of value "
- "specification: ${valueSpecification.runtimeType}.");
- }
- switch ("$valueSpecification") {
- case ",":
- result.options
- .putIfAbsent(argument, () => <String>[])
- .addAll(value.split(","));
- break;
+ switch ("$valueSpecification") {
+ case ",":
+ result.options
+ .putIfAbsent(argument, () => <String>[])
+ .addAll(value.split(","));
+ break;
- case "int":
- case "bool":
- case "String":
- case "Uri":
- if (result.options.containsKey(argument)) {
- return throw new CommandLineProblem.deprecated(
- "Multiple values for '$argument': "
- "'${result.options[argument]}' and '$value'.");
- }
- var parsedValue;
- if (valueSpecification == int) {
- parsedValue = int.parse(value, onError: (_) {
- return throw new CommandLineProblem.deprecated(
- "Value for '$argument', '$value', isn't an int.");
- });
- } else if (valueSpecification == bool) {
- if (value == "true" || value == "yes") {
- parsedValue = true;
- } else if (value == "false" || value == "no") {
- parsedValue = false;
- } else {
- return throw new CommandLineProblem.deprecated(
- "Value for '$argument' is '$value', "
- "but expected one of: 'true', 'false', 'yes', or 'no'.");
- }
- } else if (valueSpecification == Uri) {
- parsedValue = Uri.base.resolveUri(new Uri.file(value));
- } else if (valueSpecification == String) {
- parsedValue = value;
- } else if (valueSpecification is String) {
- return throw new CommandLineProblem.deprecated(
- "Unrecognized value specification: "
- "'$valueSpecification', try using a type literal instead.");
- } else {
- // All possible cases should have been handled above.
- return unhandled("${valueSpecification.runtimeType}",
- "CommandLine.parse", -1, null);
- }
- result.options[argument] = parsedValue;
- break;
-
- default:
+ case "int":
+ case "bool":
+ case "String":
+ case "Uri":
+ if (result.options.containsKey(canonicalArgument)) {
return throw new CommandLineProblem.deprecated(
- "Unrecognized value specification: '$valueSpecification'.");
- }
+ "Multiple values for '$argument': "
+ "'${result.options[canonicalArgument]}' and '$value'.");
+ }
+ var parsedValue;
+ if (valueSpecification == int) {
+ parsedValue = int.parse(value, onError: (_) {
+ return throw new CommandLineProblem.deprecated(
+ "Value for '$argument', '$value', isn't an int.");
+ });
+ } else if (valueSpecification == bool) {
+ if (value == null || value == "true" || value == "yes") {
+ parsedValue = true;
+ } else if (value == "false" || value == "no") {
+ parsedValue = false;
+ } else {
+ return throw new CommandLineProblem.deprecated(
+ "Value for '$argument' is '$value', "
+ "but expected one of: 'true', 'false', 'yes', or 'no'.");
+ }
+ } else if (valueSpecification == Uri) {
+ parsedValue = Uri.base.resolveUri(new Uri.file(value));
+ } else if (valueSpecification == String) {
+ parsedValue = value;
+ } else if (valueSpecification is String) {
+ return throw new CommandLineProblem.deprecated(
+ "Unrecognized value specification: "
+ "'$valueSpecification', try using a type literal instead.");
+ } else {
+ // All possible cases should have been handled above.
+ return unhandled("${valueSpecification.runtimeType}",
+ "CommandLine.parse", -1, null);
+ }
+ result.options[canonicalArgument] = parsedValue;
+ break;
+
+ default:
+ return throw new CommandLineProblem.deprecated(
+ "Unrecognized value specification: '$valueSpecification'.");
}
- } else if (argument == "/?" || argument == "/h") {
- result.options[argument] = true;
} else {
result.arguments.add(argument);
}
}
+ specification.forEach((String key, value) {
+ if (value == bool) {
+ result.options[key] ??= false;
+ } else if (value is bool) {
+ result.options[key] ??= value;
+ }
+ });
result.arguments.addAll(nonOptions);
return result;
}
}
+// Before adding new options here, you must:
+// * Document the option.
+// * Get an explicit approval from the front-end team.
const Map<String, dynamic> optionSpecification = const <String, dynamic>{
"--compile-sdk": Uri,
+ "--dump-ir": false,
+ "--exclude-source": false,
"--fatal": ",",
+ "--help": false,
+ "--legacy": "--legacy-mode",
+ "--legacy-mode": true,
+ "--libraries-json": Uri,
"--output": Uri,
- "-o": Uri,
"--packages": Uri,
"--platform": Uri,
- "--libraries-json": Uri,
+ "--sdk": Uri,
+ "--strong": "--strong-mode",
+ "--strong-mode": false,
+ "--sync-async": false,
"--target": String,
- "-t": String,
+ "--verbose": false,
+ "--verify": false,
+ "-h": "--help",
+ "-o": "--output",
+ "-t": "--target",
+ "-v": "--verbose",
+ "/?": "--help",
+ "/h": "--help",
};
ProcessedOptions analyzeCommandLine(
@@ -199,38 +231,24 @@
final List<String> arguments = parsedArguments.arguments;
- final bool help = options.containsKey("--help") ||
- options.containsKey("-h") ||
- options.containsKey("/h") ||
- options.containsKey("/?");
+ final bool help = options["--help"];
if (help) {
print(computeUsage(programName, verbose).message);
exit(0);
}
- if (options.containsKey("-o") && options.containsKey("--output")) {
- return throw new CommandLineProblem.deprecated(
- "Can't specify both '-o' and '--output'.");
- }
-
- if (options.containsKey("-t") && options.containsKey("--target")) {
- return throw new CommandLineProblem.deprecated(
- "Can't specify both '-t' and '--target'.");
- }
-
if (options.containsKey("--compile-sdk") &&
options.containsKey("--platform")) {
return throw new CommandLineProblem.deprecated(
"Can't specify both '--compile-sdk' and '--platform'.");
}
- final bool strongMode =
- options.containsKey("--strong-mode") || options.containsKey("--strong");
+ final bool strongMode = options["--strong-mode"] || !options["--legacy-mode"];
- final bool syncAsync = options.containsKey("--sync-async");
+ final bool syncAsync = options["--sync-async"];
- final String targetName = options["-t"] ?? options["--target"] ?? "vm";
+ final String targetName = options["--target"] ?? "vm";
final TargetFlags flags =
new TargetFlags(strongMode: strongMode, syncAsync: syncAsync);
@@ -242,11 +260,11 @@
"Valid targets are:\n ${targets.keys.join("\n ")}");
}
- final bool verify = options.containsKey("--verify");
+ final bool verify = options["--verify"];
- final bool dumpIr = options.containsKey("--dump-ir");
+ final bool dumpIr = options["--dump-ir"];
- final bool excludeSource = options.containsKey("--exclude-source");
+ final bool excludeSource = options["--exclude-source"];
final Uri packages = options["--packages"];
@@ -270,10 +288,6 @@
return throw new CommandLineProblem.deprecated(
"Cannot specify '--compile-sdk' option to compile_platform.");
}
- if (options.containsKey("-o")) {
- return throw new CommandLineProblem.deprecated(
- "Cannot specify '-o' option to compile_platform.");
- }
if (options.containsKey("--output")) {
return throw new CommandLineProblem.deprecated(
"Cannot specify '--output' option to compile_platform.");
@@ -343,14 +357,19 @@
List<String> arguments,
bool areRestArgumentsInputs,
dynamic f(CompilerContext context, List<String> restArguments)) {
+ bool verbose = false;
+ for (String argument in arguments) {
+ if (argument == "--") break;
+ if (argument == "-v" || argument == "--verbose") {
+ verbose = true;
+ break;
+ }
+ }
ParsedArguments parsedArguments;
ProcessedOptions options;
- bool verbose = true;
CommandLineProblem problem;
try {
parsedArguments = ParsedArguments.parse(arguments, optionSpecification);
- verbose = parsedArguments.options.containsKey("-v") ||
- parsedArguments.options.containsKey("--verbose");
options = analyzeCommandLine(
programName, parsedArguments, areRestArgumentsInputs, verbose);
} on CommandLineProblem catch (e) {
diff --git a/pkg/front_end/tool/_fasta/entry_points.dart b/pkg/front_end/tool/_fasta/entry_points.dart
index aa54f46..2555edb 100644
--- a/pkg/front_end/tool/_fasta/entry_points.dart
+++ b/pkg/front_end/tool/_fasta/entry_points.dart
@@ -209,9 +209,6 @@
DillTarget dillTarget = createDillTarget(uriTranslator);
KernelTarget kernelTarget =
createKernelTarget(dillTarget, uriTranslator, c.options.strongMode);
- if (c.options.strongMode) {
- print("Note: strong mode support is preliminary and may not work.");
- }
Uri platform = c.options.sdkSummary;
if (platform != null) {
_appendDillForUri(dillTarget, platform);
diff --git a/pkg/kernel/lib/binary/ast_to_binary.dart b/pkg/kernel/lib/binary/ast_to_binary.dart
index 8ed77d7..1cb3111 100644
--- a/pkg/kernel/lib/binary/ast_to_binary.dart
+++ b/pkg/kernel/lib/binary/ast_to_binary.dart
@@ -1840,13 +1840,8 @@
// the bytes buffer is too large to fit in our own buffer, just emit both.
if (length + bytes.length < SIZE &&
(bytes.length < SMALL || length < SMALL)) {
- if (length == 0) {
- _sink.add(bytes);
- flushedLength += bytes.length;
- } else {
- _buffer.setRange(length, length + bytes.length, bytes);
- length += bytes.length;
- }
+ _buffer.setRange(length, length + bytes.length, bytes);
+ length += bytes.length;
} else if (bytes.length < SMALL) {
// Flush as much as we can in the current buffer.
_buffer.setRange(length, SIZE, bytes);
@@ -1860,12 +1855,9 @@
length = remainder;
flushedLength += SIZE;
} else {
- _sink.add(_buffer.sublist(0, length));
+ flush();
_sink.add(bytes);
- _buffer = new Uint8List(SIZE);
- flushedLength += length;
flushedLength += bytes.length;
- length = 0;
}
}
diff --git a/runtime/bin/platform.h b/runtime/bin/platform.h
index 7361772..d174902 100644
--- a/runtime/bin/platform.h
+++ b/runtime/bin/platform.h
@@ -91,9 +91,6 @@
static DART_NORETURN void Exit(int exit_code);
private:
- static void SaveConsoleConfiguration();
- static void RestoreConsoleConfiguration();
-
// The path to the executable.
static const char* executable_name_;
// The path to the resolved executable.
diff --git a/runtime/bin/platform_android.cc b/runtime/bin/platform_android.cc
index 9f29cb5..7e3f880 100644
--- a/runtime/bin/platform_android.cc
+++ b/runtime/bin/platform_android.cc
@@ -7,16 +7,13 @@
#include "bin/platform.h"
-#include <errno.h> // NOLINT
#include <signal.h> // NOLINT
#include <string.h> // NOLINT
#include <sys/utsname.h> // NOLINT
-#include <termios.h> // NOLINT
#include <unistd.h> // NOLINT
#include "bin/fdutils.h"
#include "bin/file.h"
-#include "platform/signal_blocker.h"
namespace dart {
namespace bin {
@@ -31,53 +28,6 @@
abort();
}
-class PlatformPosix {
- public:
- static void SaveConsoleConfiguration() {
- SaveConsoleConfigurationHelper(STDOUT_FILENO, &stdout_initial_c_lflag_);
- SaveConsoleConfigurationHelper(STDERR_FILENO, &stderr_initial_c_lflag_);
- SaveConsoleConfigurationHelper(STDIN_FILENO, &stdin_initial_c_lflag_);
- }
-
- static void RestoreConsoleConfiguration() {
- RestoreConsoleConfigurationHelper(STDOUT_FILENO, stdout_initial_c_lflag_);
- RestoreConsoleConfigurationHelper(STDERR_FILENO, stderr_initial_c_lflag_);
- RestoreConsoleConfigurationHelper(STDIN_FILENO, stdin_initial_c_lflag_);
- stdout_initial_c_lflag_ = -1;
- stderr_initial_c_lflag_ = -1;
- stdin_initial_c_lflag_ = -1;
- }
-
- private:
- static tcflag_t stdout_initial_c_lflag_;
- static tcflag_t stderr_initial_c_lflag_;
- static tcflag_t stdin_initial_c_lflag_;
-
- static void SaveConsoleConfigurationHelper(intptr_t fd, tcflag_t* flag) {
- ASSERT(flag != NULL);
- struct termios term;
- int status = NO_RETRY_EXPECTED(tcgetattr(fd, &term));
- if (status != 0) {
- return;
- }
- *flag = term.c_lflag;
- }
-
- static void RestoreConsoleConfigurationHelper(intptr_t fd, tcflag_t flag) {
- struct termios term;
- int status = NO_RETRY_EXPECTED(tcgetattr(fd, &term));
- if (status != 0) {
- return;
- }
- term.c_lflag = flag;
- NO_RETRY_EXPECTED(tcsetattr(fd, TCSANOW, &term));
- }
-};
-
-tcflag_t PlatformPosix::stdout_initial_c_lflag_ = 0;
-tcflag_t PlatformPosix::stderr_initial_c_lflag_ = 0;
-tcflag_t PlatformPosix::stdin_initial_c_lflag_ = 0;
-
bool Platform::Initialize() {
// Turn off the signal handler for SIGPIPE as it causes the process
// to terminate on writing to a closed pipe. Without the signal
@@ -112,7 +62,7 @@
perror("sigaction() failed.");
return false;
}
- SaveConsoleConfiguration();
+
return true;
}
@@ -192,18 +142,9 @@
}
void Platform::Exit(int exit_code) {
- RestoreConsoleConfiguration();
exit(exit_code);
}
-void Platform::SaveConsoleConfiguration() {
- PlatformPosix::SaveConsoleConfiguration();
-}
-
-void Platform::RestoreConsoleConfiguration() {
- PlatformPosix::RestoreConsoleConfiguration();
-}
-
} // namespace bin
} // namespace dart
diff --git a/runtime/bin/platform_fuchsia.cc b/runtime/bin/platform_fuchsia.cc
index 24936b7..cda405e 100644
--- a/runtime/bin/platform_fuchsia.cc
+++ b/runtime/bin/platform_fuchsia.cc
@@ -150,14 +150,6 @@
exit(exit_code);
}
-void Platform::SaveConsoleConfiguration() {
- UNIMPLEMENTED();
-}
-
-void Platform::RestoreConsoleConfiguration() {
- UNIMPLEMENTED();
-}
-
} // namespace bin
} // namespace dart
diff --git a/runtime/bin/platform_linux.cc b/runtime/bin/platform_linux.cc
index b087151..e681f03 100644
--- a/runtime/bin/platform_linux.cc
+++ b/runtime/bin/platform_linux.cc
@@ -7,16 +7,13 @@
#include "bin/platform.h"
-#include <errno.h> // NOLINT
#include <signal.h> // NOLINT
#include <string.h> // NOLINT
#include <sys/utsname.h> // NOLINT
-#include <termios.h> // NOLINT
#include <unistd.h> // NOLINT
#include "bin/fdutils.h"
#include "bin/file.h"
-#include "platform/signal_blocker.h"
namespace dart {
namespace bin {
@@ -31,53 +28,6 @@
abort();
}
-class PlatformPosix {
- public:
- static void SaveConsoleConfiguration() {
- SaveConsoleConfigurationHelper(STDOUT_FILENO, &stdout_initial_c_lflag_);
- SaveConsoleConfigurationHelper(STDERR_FILENO, &stderr_initial_c_lflag_);
- SaveConsoleConfigurationHelper(STDIN_FILENO, &stdin_initial_c_lflag_);
- }
-
- static void RestoreConsoleConfiguration() {
- RestoreConsoleConfigurationHelper(STDOUT_FILENO, stdout_initial_c_lflag_);
- RestoreConsoleConfigurationHelper(STDERR_FILENO, stderr_initial_c_lflag_);
- RestoreConsoleConfigurationHelper(STDIN_FILENO, stdin_initial_c_lflag_);
- stdout_initial_c_lflag_ = -1;
- stderr_initial_c_lflag_ = -1;
- stdin_initial_c_lflag_ = -1;
- }
-
- private:
- static tcflag_t stdout_initial_c_lflag_;
- static tcflag_t stderr_initial_c_lflag_;
- static tcflag_t stdin_initial_c_lflag_;
-
- static void SaveConsoleConfigurationHelper(intptr_t fd, tcflag_t* flag) {
- ASSERT(flag != NULL);
- struct termios term;
- int status = NO_RETRY_EXPECTED(tcgetattr(fd, &term));
- if (status != 0) {
- return;
- }
- *flag = term.c_lflag;
- }
-
- static void RestoreConsoleConfigurationHelper(intptr_t fd, tcflag_t flag) {
- struct termios term;
- int status = NO_RETRY_EXPECTED(tcgetattr(fd, &term));
- if (status != 0) {
- return;
- }
- term.c_lflag = flag;
- NO_RETRY_EXPECTED(tcsetattr(fd, TCSANOW, &term));
- }
-};
-
-tcflag_t PlatformPosix::stdout_initial_c_lflag_ = 0;
-tcflag_t PlatformPosix::stderr_initial_c_lflag_ = 0;
-tcflag_t PlatformPosix::stdin_initial_c_lflag_ = 0;
-
bool Platform::Initialize() {
// Turn off the signal handler for SIGPIPE as it causes the process
// to terminate on writing to a closed pipe. Without the signal
@@ -112,7 +62,6 @@
perror("sigaction() failed.");
return false;
}
- SaveConsoleConfiguration();
return true;
}
@@ -192,18 +141,9 @@
}
void Platform::Exit(int exit_code) {
- RestoreConsoleConfiguration();
exit(exit_code);
}
-void Platform::SaveConsoleConfiguration() {
- PlatformPosix::SaveConsoleConfiguration();
-}
-
-void Platform::RestoreConsoleConfiguration() {
- PlatformPosix::RestoreConsoleConfiguration();
-}
-
} // namespace bin
} // namespace dart
diff --git a/runtime/bin/platform_macos.cc b/runtime/bin/platform_macos.cc
index 3f72398..e563788 100644
--- a/runtime/bin/platform_macos.cc
+++ b/runtime/bin/platform_macos.cc
@@ -12,19 +12,16 @@
#if !HOST_OS_IOS
#include <crt_externs.h> // NOLINT
#endif // !HOST_OS_IOS
-#include <errno.h> // NOLINT
#include <mach-o/dyld.h>
#include <signal.h> // NOLINT
#include <string.h> // NOLINT
#include <sys/sysctl.h> // NOLINT
#include <sys/types.h> // NOLINT
#include <sys/utsname.h> // NOLINT
-#include <termios.h> // NOLINT
#include <unistd.h> // NOLINT
#include "bin/fdutils.h"
#include "bin/file.h"
-#include "platform/signal_blocker.h"
namespace dart {
namespace bin {
@@ -39,53 +36,6 @@
abort();
}
-class PlatformPosix {
- public:
- static void SaveConsoleConfiguration() {
- SaveConsoleConfigurationHelper(STDOUT_FILENO, &stdout_initial_c_lflag_);
- SaveConsoleConfigurationHelper(STDERR_FILENO, &stderr_initial_c_lflag_);
- SaveConsoleConfigurationHelper(STDIN_FILENO, &stdin_initial_c_lflag_);
- }
-
- static void RestoreConsoleConfiguration() {
- RestoreConsoleConfigurationHelper(STDOUT_FILENO, stdout_initial_c_lflag_);
- RestoreConsoleConfigurationHelper(STDERR_FILENO, stderr_initial_c_lflag_);
- RestoreConsoleConfigurationHelper(STDIN_FILENO, stdin_initial_c_lflag_);
- stdout_initial_c_lflag_ = -1;
- stderr_initial_c_lflag_ = -1;
- stdin_initial_c_lflag_ = -1;
- }
-
- private:
- static tcflag_t stdout_initial_c_lflag_;
- static tcflag_t stderr_initial_c_lflag_;
- static tcflag_t stdin_initial_c_lflag_;
-
- static void SaveConsoleConfigurationHelper(intptr_t fd, tcflag_t* flag) {
- ASSERT(flag != NULL);
- struct termios term;
- int status = NO_RETRY_EXPECTED(tcgetattr(fd, &term));
- if (status != 0) {
- return;
- }
- *flag = term.c_lflag;
- }
-
- static void RestoreConsoleConfigurationHelper(intptr_t fd, tcflag_t flag) {
- struct termios term;
- int status = NO_RETRY_EXPECTED(tcgetattr(fd, &term));
- if (status != 0) {
- return;
- }
- term.c_lflag = flag;
- NO_RETRY_EXPECTED(tcsetattr(fd, TCSANOW, &term));
- }
-};
-
-tcflag_t PlatformPosix::stdout_initial_c_lflag_ = 0;
-tcflag_t PlatformPosix::stderr_initial_c_lflag_ = 0;
-tcflag_t PlatformPosix::stdin_initial_c_lflag_ = 0;
-
bool Platform::Initialize() {
// Turn off the signal handler for SIGPIPE as it causes the process
// to terminate on writing to a closed pipe. Without the signal
@@ -119,7 +69,6 @@
perror("sigaction() failed.");
return false;
}
- SaveConsoleConfiguration();
return true;
}
@@ -280,18 +229,9 @@
}
void Platform::Exit(int exit_code) {
- RestoreConsoleConfiguration();
exit(exit_code);
}
-void Platform::SaveConsoleConfiguration() {
- PlatformPosix::SaveConsoleConfiguration();
-}
-
-void Platform::RestoreConsoleConfiguration() {
- PlatformPosix::RestoreConsoleConfiguration();
-}
-
} // namespace bin
} // namespace dart
diff --git a/runtime/bin/platform_win.cc b/runtime/bin/platform_win.cc
index 8b61246..333d57c 100644
--- a/runtime/bin/platform_win.cc
+++ b/runtime/bin/platform_win.cc
@@ -47,9 +47,6 @@
platform_win_mutex_ = new Mutex();
saved_output_cp_ = -1;
saved_input_cp_ = -1;
- saved_stdout_mode_ = -1;
- saved_stderr_mode_ = -1;
- saved_stdin_mode_ = -1;
// Set up a no-op handler so that CRT functions return an error instead of
// hitting an assertion failure.
// See: https://msdn.microsoft.com/en-us/library/a9yf33zb.aspx
@@ -86,9 +83,6 @@
// Set both the input and output code pages to UTF8.
ASSERT(saved_output_cp_ == -1);
ASSERT(saved_input_cp_ == -1);
- ASSERT(saved_stdout_mode_ == -1);
- ASSERT(saved_stderr_mode_ == -1);
- ASSERT(saved_stdin_mode_ == -1);
const int output_cp = GetConsoleOutputCP();
const int input_cp = GetConsoleCP();
if (output_cp != CP_UTF8) {
@@ -101,11 +95,12 @@
}
// Try to set the bits for ANSI support, but swallow any failures.
- saved_stdout_mode_ =
- ModifyMode(STD_OUTPUT_HANDLE, ENABLE_VIRTUAL_TERMINAL_PROCESSING);
- saved_stderr_mode_ = ModifyMode(STD_ERROR_HANDLE, 0);
- saved_stdin_mode_ = ModifyMode(STD_INPUT_HANDLE, 0);
-
+ HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
+ DWORD out_mode;
+ if ((out != INVALID_HANDLE_VALUE) && GetConsoleMode(out, &out_mode)) {
+ const DWORD request = out_mode | ENABLE_VIRTUAL_TERMINAL_PROCESSING;
+ SetConsoleMode(out, request);
+ }
// TODO(28984): Due to issue #29104, we cannot set
// ENABLE_VIRTUAL_TERMINAL_INPUT here, as it causes ENABLE_PROCESSED_INPUT
// to be ignored.
@@ -138,54 +133,43 @@
static Mutex* platform_win_mutex_;
static int saved_output_cp_;
static int saved_input_cp_;
- static DWORD saved_stdout_mode_;
- static DWORD saved_stderr_mode_;
- static DWORD saved_stdin_mode_;
-
- static DWORD ModifyMode(DWORD handle, DWORD flags) {
- HANDLE h = GetStdHandle(handle);
- DWORD mode;
- DWORD old_mode = 0;
-
- if ((h != INVALID_HANDLE_VALUE) && GetConsoleMode(h, &mode)) {
- old_mode = mode;
- if (flags != 0) {
- const DWORD request = mode | flags;
- SetConsoleMode(h, request);
- }
- }
- return old_mode;
- }
-
- static void CleanupDevices(const char* device,
- DWORD handle,
- DWORD orig_flags) {
- const intptr_t kWideBufLen = 64;
- wchar_t widebuf[kWideBufLen];
- int result =
- MultiByteToWideChar(CP_UTF8, 0, device, -1, widebuf, kWideBufLen);
- ASSERT(result != 0);
- HANDLE h = CreateFileW(widebuf, GENERIC_READ | GENERIC_WRITE,
- FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
- if (h != INVALID_HANDLE_VALUE) {
- SetStdHandle(STD_OUTPUT_HANDLE, h);
- if (orig_flags != -1) {
- SetConsoleMode(h, orig_flags);
- }
- }
- }
static void RestoreConsoleLocked() {
- // STD_OUTPUT_HANDLE, STD_ERROR_HANDLE, and STD_INPUT_HANDLE may have been
- // closed or redirected. Therefore, we explicitly open the CONOUT$, CONERR$
- // and CONIN$ devices, so that we can be sure that we are really restoring
- // the console to its original state.
- CleanupDevices("CONOUT$", STD_OUTPUT_HANDLE, saved_stdout_mode_);
- saved_stdout_mode_ = -1;
- CleanupDevices("CONERR$", STD_ERROR_HANDLE, saved_stderr_mode_);
- saved_stderr_mode_ = -1;
- CleanupDevices("CONIN$", STD_INPUT_HANDLE, saved_stdin_mode_);
- saved_stdin_mode_ = -1;
+ // STD_OUTPUT_HANDLE and STD_INPUT_HANDLE may have been closed or
+ // redirected. Therefore, we explicitly open the CONOUT$ and CONIN$
+ // devices, so that we can be sure that we are really unsetting
+ // ENABLE_VIRTUAL_TERMINAL_PROCESSING and ENABLE_VIRTUAL_TERMINAL_INPUT
+ // respectively.
+ const intptr_t kWideBufLen = 64;
+ const char* conout = "CONOUT$";
+ wchar_t widebuf[kWideBufLen];
+ int result =
+ MultiByteToWideChar(CP_UTF8, 0, conout, -1, widebuf, kWideBufLen);
+ ASSERT(result != 0);
+ HANDLE out = CreateFileW(widebuf, GENERIC_READ | GENERIC_WRITE,
+ FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
+ if (out != INVALID_HANDLE_VALUE) {
+ SetStdHandle(STD_OUTPUT_HANDLE, out);
+ }
+ DWORD out_mode;
+ if ((out != INVALID_HANDLE_VALUE) && GetConsoleMode(out, &out_mode)) {
+ DWORD request = out_mode & ~ENABLE_VIRTUAL_TERMINAL_INPUT;
+ SetConsoleMode(out, request);
+ }
+
+ const char* conin = "CONIN$";
+ result = MultiByteToWideChar(CP_UTF8, 0, conin, -1, widebuf, kWideBufLen);
+ ASSERT(result != 0);
+ HANDLE in = CreateFileW(widebuf, GENERIC_READ | GENERIC_WRITE,
+ FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
+ if (in != INVALID_HANDLE_VALUE) {
+ SetStdHandle(STD_INPUT_HANDLE, in);
+ }
+ DWORD in_mode;
+ if ((in != INVALID_HANDLE_VALUE) && GetConsoleMode(in, &in_mode)) {
+ DWORD request = in_mode & ~ENABLE_VIRTUAL_TERMINAL_INPUT;
+ SetConsoleMode(in, request);
+ }
if (saved_output_cp_ != -1) {
SetConsoleOutputCP(saved_output_cp_);
@@ -212,15 +196,11 @@
int PlatformWin::saved_output_cp_ = -1;
int PlatformWin::saved_input_cp_ = -1;
-DWORD PlatformWin::saved_stdout_mode_ = -1;
-DWORD PlatformWin::saved_stderr_mode_ = -1;
-DWORD PlatformWin::saved_stdin_mode_ = -1;
-
Mutex* PlatformWin::platform_win_mutex_ = NULL;
bool Platform::Initialize() {
PlatformWin::InitOnce();
- SaveConsoleConfiguration();
+ PlatformWin::SaveAndConfigureConsole();
return true;
}
@@ -405,20 +385,12 @@
// TODO(zra): Remove once VM shuts down cleanly.
::dart::private_flag_windows_run_tls_destructors = false;
// Restore the console's output code page
- RestoreConsoleConfiguration();
+ PlatformWin::RestoreConsole();
// On Windows we use ExitProcess so that threads can't clobber the exit_code.
// See: https://code.google.com/p/nativeclient/issues/detail?id=2870
::ExitProcess(exit_code);
}
-void Platform::SaveConsoleConfiguration() {
- PlatformWin::SaveAndConfigureConsole();
-}
-
-void Platform::RestoreConsoleConfiguration() {
- PlatformWin::RestoreConsole();
-}
-
} // namespace bin
} // namespace dart
diff --git a/runtime/include/dart_api.h b/runtime/include/dart_api.h
index 08fad5f..a8f9e4d 100644
--- a/runtime/include/dart_api.h
+++ b/runtime/include/dart_api.h
@@ -1038,8 +1038,7 @@
*
* \returns true if the snapshot is a Dart2 snapshot, false otherwise.
*/
-DART_EXPORT bool Dart_IsDart2Snapshot(uint8_t* snapshot_buffer,
- intptr_t snapshot_size);
+DART_EXPORT bool Dart_IsDart2Snapshot(const uint8_t* snapshot_buffer);
/**
* Schedules an interrupt for the specified isolate.
diff --git a/runtime/tests/vm/vm.status b/runtime/tests/vm/vm.status
index ee0eaf1..8f854da 100644
--- a/runtime/tests/vm/vm.status
+++ b/runtime/tests/vm/vm.status
@@ -217,19 +217,10 @@
cc/Debugger_Rewind_Optimized: SkipSlow
cc/Debugger_SetBreakpointInPartOfLibrary: Crash
cc/FunctionSourceFingerprint: Fail
-cc/IsolateReload_BadClass: Fail
-cc/IsolateReload_ChangeInstanceFormat1: Skip
-cc/IsolateReload_ChangeInstanceFormat3: Skip
-cc/IsolateReload_ChangeInstanceFormat7: Skip
-cc/IsolateReload_ChangeInstanceFormat8: Skip
-cc/IsolateReload_ClassFieldAdded: Skip # Crash, Timeout
-cc/IsolateReload_ClassFieldAdded2: Skip # Crash, Timeout
cc/IsolateReload_DanglingGetter_Library: Fail
cc/IsolateReload_DanglingSetter_Class: Fail
cc/IsolateReload_DanglingSetter_Instance: Fail
cc/IsolateReload_DanglingSetter_Library: Fail
-cc/IsolateReload_DirectSubclasses_Failure: Fail
-cc/IsolateReload_DirectSubclasses_Success: Skip
cc/IsolateReload_EnumDelete: Fail
cc/IsolateReload_EnumReorderIdentical: Fail
cc/IsolateReload_EnumToNotEnum: Skip
@@ -253,7 +244,6 @@
cc/IsolateReload_RunNewFieldInitializersWithConsts: Skip
cc/IsolateReload_ShapeChangeRetainsHash: Skip
cc/IsolateReload_SmiFastPathStubs: Fail
-cc/IsolateReload_TopLevelParseError: Fail
cc/IsolateReload_TypedefToNotTypedef: Fail
cc/Parser_AllocateVariables_CaptureLoopVar: Fail
cc/Parser_AllocateVariables_CapturedVar: Fail
diff --git a/runtime/vm/compiler/aot/aot_call_specializer.cc b/runtime/vm/compiler/aot/aot_call_specializer.cc
index d0cbb8a..474f6a8 100644
--- a/runtime/vm/compiler/aot/aot_call_specializer.cc
+++ b/runtime/vm/compiler/aot/aot_call_specializer.cc
@@ -320,19 +320,19 @@
Value* AotCallSpecializer::PrepareReceiverOfDevirtualizedCall(Value* input,
intptr_t cid) {
ASSERT(I->strong() && FLAG_use_strong_mode_types);
- ASSERT(cid == kDoubleCid);
+ ASSERT((cid == kDoubleCid) ||
+ (FLAG_limit_ints_to_64_bits && (cid == kMintCid)));
// Can't assert !input->Type()->is_nullable() here as PushArgument receives
// value prior to a CheckNull in case of devirtualized call.
input = input->CopyWithType(Z);
- // Make sure type of the input is double.
- // It is necessary as VM has limited knowledge of generic types
- // and may not accurately infer type of the receiver if it is a
- // generic type.
- // TODO(dartbug.com/30480): improve type inference for generic types
- if (!input->Type()->IsNullableDouble()) {
+ // Correct type of input if necessary.
+ // This correction is needed as VM may not be able to infer receiver type.
+ if ((cid == kIntegerCid) && !input->Type()->IsNullableInt()) {
+ input->SetReachingType(new (Z) CompileType(CompileType::Int()));
+ } else if ((cid == kDoubleCid) && !input->Type()->IsNullableDouble()) {
input->SetReachingType(new (Z) CompileType(CompileType::Double()));
}
@@ -488,63 +488,186 @@
}
bool AotCallSpecializer::TryOptimizeStaticCallUsingStaticTypes(
- StaticCallInstr* call) {
+ StaticCallInstr* instr) {
ASSERT(I->strong() && FLAG_use_strong_mode_types);
Definition* replacement = NULL;
- if (FlowGraphCompiler::SupportsUnboxedDoubles()) {
- const Class& owner = Class::Handle(Z, call->function().Owner());
- // Recognize double operators here as devirtualization can convert
- // instance calls of double operators into static calls.
- if (owner.id() == kDoubleCid) {
- const String& name = String::Handle(Z, call->function().name());
- Token::Kind op_kind = MethodTokenRecognizer::RecognizeTokenKind(name);
- // TODO(dartbug.com/30480): Handle more double operations.
- if ((op_kind == Token::kADD) || (op_kind == Token::kSUB) ||
- (op_kind == Token::kMUL) || (op_kind == Token::kDIV)) {
- ASSERT(call->FirstArgIndex() == 0);
- Value* left_value = call->PushArgumentAt(0)->value();
- Value* right_value = call->PushArgumentAt(1)->value();
- if (right_value->Type()->IsNullableDouble() ||
- IsSupportedIntOperandForStaticDoubleOp(right_value->Type())) {
- left_value =
- PrepareReceiverOfDevirtualizedCall(left_value, kDoubleCid);
- right_value = PrepareStaticOpInput(right_value, kDoubleCid, call);
- replacement = new (Z) BinaryDoubleOpInstr(
- op_kind, left_value, right_value, Thread::kNoDeoptId,
- call->token_pos(), Instruction::kNotSpeculative);
- }
- } else if ((op_kind == Token::kLT) || (op_kind == Token::kLTE) ||
- (op_kind == Token::kGT) || (op_kind == Token::kGTE)) {
- ASSERT(call->FirstArgIndex() == 0);
- Value* left_value = call->PushArgumentAt(0)->value();
- Value* right_value = call->PushArgumentAt(1)->value();
- if (right_value->Type()->IsNullableDouble() ||
- IsSupportedIntOperandForStaticDoubleOp(right_value->Type())) {
- left_value =
- PrepareReceiverOfDevirtualizedCall(left_value, kDoubleCid);
- right_value = PrepareStaticOpInput(right_value, kDoubleCid, call);
- replacement = new (Z) RelationalOpInstr(
- call->token_pos(), op_kind, left_value, right_value, kDoubleCid,
+ const Class& owner = Class::Handle(Z, instr->function().Owner());
+ if ((owner.id() != kIntegerCid) && (owner.id() != kDoubleCid)) {
+ return false;
+ }
+
+ const intptr_t receiver_index = instr->FirstArgIndex();
+ const String& name = String::Handle(Z, instr->function().name());
+ const Token::Kind op_kind = MethodTokenRecognizer::RecognizeTokenKind(name);
+
+ // Recognize double and int operators here as devirtualization can convert
+ // instance calls of these operators into static calls.
+
+ if (owner.id() == kIntegerCid) {
+ if (!FLAG_limit_ints_to_64_bits ||
+ !FlowGraphCompiler::SupportsUnboxedInt64()) {
+ return false;
+ }
+
+ switch (op_kind) {
+ case Token::kEQ:
+ case Token::kNE: {
+ Value* left_value = instr->PushArgumentAt(receiver_index)->value();
+ Value* right_value = instr->PushArgumentAt(receiver_index + 1)->value();
+ CompileType* right_type = right_value->Type();
+ // TODO(dartbug.com/32166): Support EQ, NE for nullable ints.
+ // (requires null-aware comparison instruction).
+ if (right_type->IsNullableInt() && !right_type->is_nullable()) {
+ left_value = PrepareReceiverOfDevirtualizedCall(left_value, kMintCid);
+ right_value = PrepareStaticOpInput(right_value, kMintCid, instr);
+ replacement = new (Z) EqualityCompareInstr(
+ instr->token_pos(), op_kind, left_value, right_value, kMintCid,
Thread::kNoDeoptId, Instruction::kNotSpeculative);
}
- } else if (op_kind == Token::kNEGATE) {
- ASSERT(call->FirstArgIndex() == 0);
- Value* left_value = call->PushArgumentAt(0)->value();
+ break;
+ }
+ case Token::kLT:
+ case Token::kLTE:
+ case Token::kGT:
+ case Token::kGTE: {
+ Value* left_value = instr->PushArgumentAt(receiver_index)->value();
+ Value* right_value = instr->PushArgumentAt(receiver_index + 1)->value();
+ CompileType* left_type = left_value->Type();
+ CompileType* right_type = right_value->Type();
+ if (right_type->IsNullableInt()) {
+ left_value = PrepareReceiverOfDevirtualizedCall(left_value, kMintCid);
+ right_value = PrepareStaticOpInput(right_value, kMintCid, instr);
+ replacement = new (Z) RelationalOpInstr(
+ instr->token_pos(), op_kind, left_value, right_value, kMintCid,
+ Thread::kNoDeoptId, Instruction::kNotSpeculative);
+ } else if (FlowGraphCompiler::SupportsUnboxedDoubles() &&
+ right_type->IsNullableDouble() &&
+ IsSupportedIntOperandForStaticDoubleOp(left_type)) {
+ left_value = PrepareStaticOpInput(left_value, kDoubleCid, instr);
+ right_value = PrepareStaticOpInput(right_value, kDoubleCid, instr);
+ replacement = new (Z) RelationalOpInstr(
+ instr->token_pos(), op_kind, left_value, right_value, kDoubleCid,
+ Thread::kNoDeoptId, Instruction::kNotSpeculative);
+ }
+ break;
+ }
+ // TODO(dartbug.com/30480): Enable 64-bit integer shifts (SHL, SHR).
+ case Token::kBIT_OR:
+ case Token::kBIT_XOR:
+ case Token::kBIT_AND:
+ case Token::kADD:
+ case Token::kSUB:
+ case Token::kMUL:
+ case Token::kDIV: {
+ if ((op_kind == Token::kDIV) &&
+ !FlowGraphCompiler::SupportsHardwareDivision()) {
+ return false;
+ }
+ Value* left_value = instr->PushArgumentAt(receiver_index)->value();
+ Value* right_value = instr->PushArgumentAt(receiver_index + 1)->value();
+ CompileType* left_type = left_value->Type();
+ CompileType* right_type = right_value->Type();
+ if (right_type->IsNullableInt() && (op_kind != Token::kDIV)) {
+ left_value = PrepareReceiverOfDevirtualizedCall(left_value, kMintCid);
+ right_value = PrepareStaticOpInput(right_value, kMintCid, instr);
+ replacement = new (Z) BinaryInt64OpInstr(
+ op_kind, left_value, right_value, Thread::kNoDeoptId,
+ Instruction::kNotSpeculative);
+ } else if (FlowGraphCompiler::SupportsUnboxedDoubles() &&
+ right_type->IsNullableDouble() &&
+ IsSupportedIntOperandForStaticDoubleOp(left_type)) {
+ if ((op_kind == Token::kADD) || (op_kind == Token::kSUB) ||
+ (op_kind == Token::kMUL) || (op_kind == Token::kDIV)) {
+ ASSERT(left_type->IsNullableDouble() ||
+ right_type->IsNullableDouble() || (op_kind == Token::kDIV));
+ left_value = PrepareStaticOpInput(left_value, kDoubleCid, instr);
+ right_value = PrepareStaticOpInput(right_value, kDoubleCid, instr);
+ replacement = new (Z) BinaryDoubleOpInstr(
+ op_kind, left_value, right_value, Thread::kNoDeoptId,
+ instr->token_pos(), Instruction::kNotSpeculative);
+ }
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+ } else if ((owner.id() == kDoubleCid) &&
+ FlowGraphCompiler::SupportsUnboxedDoubles()) {
+ // TODO(dartbug.com/30480): Handle more double operations.
+ switch (op_kind) {
+ case Token::kEQ:
+ case Token::kNE: {
+ Value* left_value = instr->PushArgumentAt(receiver_index)->value();
+ Value* right_value = instr->PushArgumentAt(receiver_index + 1)->value();
+ CompileType* right_type = right_value->Type();
+ // TODO(dartbug.com/32166): Support EQ, NE for nullable doubles.
+ // (requires null-aware comparison instruction).
+ if (right_type->IsNullableDouble() && !right_type->is_nullable()) {
+ left_value =
+ PrepareReceiverOfDevirtualizedCall(left_value, kDoubleCid);
+ right_value = PrepareStaticOpInput(right_value, kDoubleCid, instr);
+ replacement = new (Z) EqualityCompareInstr(
+ instr->token_pos(), op_kind, left_value, right_value, kDoubleCid,
+ Thread::kNoDeoptId, Instruction::kNotSpeculative);
+ }
+ break;
+ }
+ case Token::kLT:
+ case Token::kLTE:
+ case Token::kGT:
+ case Token::kGTE: {
+ Value* left_value = instr->PushArgumentAt(receiver_index)->value();
+ Value* right_value = instr->PushArgumentAt(receiver_index + 1)->value();
+ if (right_value->Type()->IsNullableDouble() ||
+ IsSupportedIntOperandForStaticDoubleOp(right_value->Type())) {
+ left_value =
+ PrepareReceiverOfDevirtualizedCall(left_value, kDoubleCid);
+ right_value = PrepareStaticOpInput(right_value, kDoubleCid, instr);
+ replacement = new (Z) RelationalOpInstr(
+ instr->token_pos(), op_kind, left_value, right_value, kDoubleCid,
+ Thread::kNoDeoptId, Instruction::kNotSpeculative);
+ }
+ break;
+ }
+ case Token::kADD:
+ case Token::kSUB:
+ case Token::kMUL:
+ case Token::kDIV: {
+ Value* left_value = instr->PushArgumentAt(receiver_index)->value();
+ Value* right_value = instr->PushArgumentAt(receiver_index + 1)->value();
+ if (right_value->Type()->IsNullableDouble() ||
+ IsSupportedIntOperandForStaticDoubleOp(right_value->Type())) {
+ left_value =
+ PrepareReceiverOfDevirtualizedCall(left_value, kDoubleCid);
+ right_value = PrepareStaticOpInput(right_value, kDoubleCid, instr);
+ replacement = new (Z) BinaryDoubleOpInstr(
+ op_kind, left_value, right_value, Thread::kNoDeoptId,
+ instr->token_pos(), Instruction::kNotSpeculative);
+ }
+ break;
+ }
+ case Token::kNEGATE: {
+ Value* left_value = instr->PushArgumentAt(receiver_index)->value();
left_value = PrepareReceiverOfDevirtualizedCall(left_value, kDoubleCid);
replacement = new (Z)
- UnaryDoubleOpInstr(Token::kNEGATE, left_value, call->deopt_id(),
+ UnaryDoubleOpInstr(Token::kNEGATE, left_value, instr->deopt_id(),
Instruction::kNotSpeculative);
+ break;
}
+ default:
+ break;
}
}
- if (replacement != NULL) {
+ if ((replacement != NULL) && !replacement->ComputeCanDeoptimize()) {
if (FLAG_trace_strong_mode_types) {
THR_Print("[Strong mode] Optimization: replacing %s with %s\n",
- call->ToCString(), replacement->ToCString());
+ instr->ToCString(), replacement->ToCString());
}
- ReplaceCall(call, replacement);
+ ReplaceCall(instr, replacement);
return true;
}
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index eb100c3..daa2a9c 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -1030,7 +1030,8 @@
FieldHelper field_helper(builder_);
field_helper.ReadUntilIncluding(FieldHelper::kFlags);
- if (!field_helper.IsGenericCovariantImpl()) {
+ if (!field_helper.IsCovariant() &&
+ !field_helper.IsGenericCovariantImpl()) {
result_->setter_value->set_type_check_mode(
LocalVariable::kTypeCheckedByCaller);
}
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
index 330dfe7..04c2b31 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
@@ -174,6 +174,7 @@
kFinal = 1 << 0,
kConst = 1 << 1,
kStatic = 1 << 2,
+ kIsCovariant = 1 << 5,
kIsGenericCovariantImpl = 1 << 6,
kIsGenericCovariantInterface = 1 << 7
};
@@ -198,6 +199,7 @@
bool IsConst() { return (flags_ & kConst) != 0; }
bool IsFinal() { return (flags_ & kFinal) != 0; }
bool IsStatic() { return (flags_ & kStatic) != 0; }
+ bool IsCovariant() const { return (flags_ & kIsCovariant) != 0; }
bool IsGenericCovariantImpl() {
return (flags_ & kIsGenericCovariantImpl) != 0;
}
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 1877043..5b607f4 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -1551,8 +1551,15 @@
return Api::Success();
}
-DART_EXPORT bool Dart_IsDart2Snapshot(uint8_t* snapshot_buffer,
- intptr_t snapshot_size) {
+DART_EXPORT bool Dart_IsDart2Snapshot(const uint8_t* snapshot_buffer) {
+ if (snapshot_buffer == NULL) {
+ return false;
+ }
+ const Snapshot* snapshot = Snapshot::SetupFromBuffer(snapshot_buffer);
+ if (snapshot == NULL) {
+ return false;
+ }
+ const intptr_t snapshot_size = snapshot->length();
const char* expected_version = Version::SnapshotString();
ASSERT(expected_version != NULL);
const intptr_t version_len = strlen(expected_version);
@@ -1560,13 +1567,12 @@
return false;
}
- const char* version = reinterpret_cast<const char*>(snapshot_buffer);
+ const char* version = reinterpret_cast<const char*>(snapshot->content());
ASSERT(version != NULL);
if (strncmp(version, expected_version, version_len)) {
return false;
}
- const char* features =
- reinterpret_cast<const char*>(snapshot_buffer) + version_len;
+ const char* features = version + version_len;
ASSERT(features != NULL);
intptr_t pending_len = snapshot_size - version_len;
intptr_t buffer_len = OS::StrNLen(features, pending_len);
diff --git a/runtime/vm/isolate_reload_test.cc b/runtime/vm/isolate_reload_test.cc
index 25496a4..35ff7b2 100644
--- a/runtime/vm/isolate_reload_test.cc
+++ b/runtime/vm/isolate_reload_test.cc
@@ -304,7 +304,11 @@
"}\n";
Dart_Handle result = TestCase::ReloadTestScript(kReloadScript);
- EXPECT_ERROR(result, "unexpected token");
+ if (TestCase::UsingDartFrontend()) {
+ EXPECT_ERROR(result, "Expected ';' before this");
+ } else {
+ EXPECT_ERROR(result, "unexpected token");
+ }
EXPECT_EQ(4, SimpleInvoke(lib, "main"));
}
@@ -1168,7 +1172,13 @@
"}\n";
lib = TestCase::ReloadTestScript(kReloadScript);
- EXPECT_ERROR(lib, "unexpected token");
+ if (TestCase::UsingDartFrontend()) {
+ EXPECT_ERROR(lib,
+ "Variables must be declared using the keywords"
+ " 'const', 'final', 'var' or a type name.");
+ } else {
+ EXPECT_ERROR(lib, "unexpected token");
+ }
}
TEST_CASE(IsolateReload_PendingUnqualifiedCall_StaticToInstance) {
@@ -2419,7 +2429,11 @@
"}\n";
lib = TestCase::ReloadTestScript(kReloadScript);
- EXPECT_ERROR(lib, "unexpected token");
+ if (TestCase::UsingDartFrontend()) {
+ EXPECT_ERROR(lib, "Expected ';' before this");
+ } else {
+ EXPECT_ERROR(lib, "unexpected token");
+ }
// If we don't clean up the subclasses, we would find BIterator in
// the list of subclasses, which would be bad. Make sure that
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index 56ed9e6..f3362e4 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -668,6 +668,19 @@
}
}
+void KernelLoader::CheckForInitializer(const Field& field) {
+ if (builder_.PeekTag() == kSomething) {
+ SimpleExpressionConverter converter(&H, &builder_);
+ const bool has_simple_initializer =
+ converter.IsSimple(builder_.ReaderOffset() + 1);
+ if (!has_simple_initializer || !converter.SimpleValue().IsNull()) {
+ field.set_has_initializer(true);
+ return;
+ }
+ }
+ field.set_has_initializer(false);
+}
+
void KernelLoader::LoadLibrary(intptr_t index) {
if (!program_->is_single_program()) {
FATAL(
@@ -802,10 +815,10 @@
field.set_kernel_offset(field_offset);
const AbstractType& type = T.BuildType(); // read type.
field.SetFieldType(type);
+ CheckForInitializer(field);
field_helper.SetJustRead(FieldHelper::kType);
field_helper.ReadUntilExcluding(FieldHelper::kInitializer);
intptr_t field_initializer_offset = builder_.ReaderOffset();
- field.set_has_initializer(builder_.PeekTag() == kSomething);
field_helper.ReadUntilExcluding(FieldHelper::kEnd);
{
// GenerateFieldAccessors reads (some of) the initializer.
@@ -1057,9 +1070,9 @@
field_helper.IsConst(), is_reflectable, script_class, type,
field_helper.position_, field_helper.end_position_));
field.set_kernel_offset(field_offset);
+ CheckForInitializer(field);
field_helper.ReadUntilExcluding(FieldHelper::kInitializer);
intptr_t field_initializer_offset = builder_.ReaderOffset();
- field.set_has_initializer(builder_.PeekTag() == kSomething);
field_helper.ReadUntilExcluding(FieldHelper::kEnd);
{
// GenerateFieldAccessors reads (some of) the initializer.
diff --git a/runtime/vm/kernel_loader.h b/runtime/vm/kernel_loader.h
index 126405b..8a5f60f 100644
--- a/runtime/vm/kernel_loader.h
+++ b/runtime/vm/kernel_loader.h
@@ -190,6 +190,8 @@
void LoadPreliminaryClass(ClassHelper* class_helper,
intptr_t type_parameter_count);
+ void CheckForInitializer(const Field& field);
+
Class& LoadClass(const Library& library,
const Class& toplevel_class,
intptr_t class_end);
diff --git a/runtime/vm/snapshot_test.cc b/runtime/vm/snapshot_test.cc
index 00ae83a..30b5dff 100644
--- a/runtime/vm/snapshot_test.cc
+++ b/runtime/vm/snapshot_test.cc
@@ -1813,8 +1813,9 @@
Dart_ExitScope();
}
FLAG_load_deferred_eagerly = saved_load_deferred_eagerly_mode;
- bool is_kernel = Dart_IsDart2Snapshot(full_snapshot, isolate_snapshot_size);
+ bool is_kernel = Dart_IsDart2Snapshot(full_snapshot);
EXPECT_EQ(FLAG_strong, is_kernel);
+ free(full_snapshot);
}
#endif // !PRODUCT
diff --git a/runtime/vm/unit_test.cc b/runtime/vm/unit_test.cc
index 574e44f..85447d38 100644
--- a/runtime/vm/unit_test.cc
+++ b/runtime/vm/unit_test.cc
@@ -170,6 +170,10 @@
static ThreadLocalKey kernel_reload_key = kUnsetThreadLocalKey;
#endif
+bool TestCase::UsingDartFrontend() {
+ return FLAG_use_dart_frontend;
+}
+
char* TestCase::CompileTestScriptWithDFE(const char* url,
const char* source,
void** kernel_pgm,
diff --git a/runtime/vm/unit_test.h b/runtime/vm/unit_test.h
index 1f7fc8f..970de8f 100644
--- a/runtime/vm/unit_test.h
+++ b/runtime/vm/unit_test.h
@@ -306,6 +306,8 @@
TestCase(RunEntry* run, const char* name) : TestCaseBase(name), run_(run) {}
+ static bool UsingDartFrontend();
+
static char* CompileTestScriptWithDFE(const char* url,
const char* source,
void** kernel_pgm,
diff --git a/tests/corelib/corelib.status b/tests/corelib/corelib.status
index a4398a5..edd0cde 100644
--- a/tests/corelib/corelib.status
+++ b/tests/corelib/corelib.status
@@ -3,52 +3,7 @@
# BSD-style license that can be found in the LICENSE file.
[ $compiler == dart2analyzer ]
-big_integer_arith_vm_test/add: CompileTimeError # int64
-big_integer_arith_vm_test/div: CompileTimeError # int64
-big_integer_arith_vm_test/gcd: CompileTimeError # int64
-big_integer_arith_vm_test/mod: CompileTimeError # int64
-big_integer_arith_vm_test/modInv: CompileTimeError # int64
-big_integer_arith_vm_test/modPow: CompileTimeError # int64
-big_integer_arith_vm_test/mul: CompileTimeError # int64
-big_integer_arith_vm_test/negate: CompileTimeError # int64
-big_integer_arith_vm_test/none: CompileTimeError # int64
-big_integer_arith_vm_test/overflow: CompileTimeError # int64
-big_integer_arith_vm_test/shift: CompileTimeError # int64
-big_integer_arith_vm_test/sub: CompileTimeError # int64
-big_integer_arith_vm_test/trunDiv: CompileTimeError # int64
-bit_twiddling_bigint_test: CompileTimeError # int64
-bit_twiddling_test: CompileTimeError # int64
-double_ceil_test: CompileTimeError # int64
-double_floor_test: CompileTimeError # int64
-double_round_test: CompileTimeError # int64
-double_truncate_test: CompileTimeError # int64
-duration2_test: StaticWarning, OK # Test generates error on purpose.
-error_stack_trace_test: StaticWarning, OK # Test generates errors on purpose.
-hash_set_type_check_test: StaticWarning, OK # Tests failing type tests.
-int_ceil_test: CompileTimeError # int64
-int_ceil_to_double_test: CompileTimeError # int64
-int_floor_test: CompileTimeError # int64
-int_floor_to_double_test: CompileTimeError # int64
-int_from_environment_test: CompileTimeError # int64
-int_modulo_arith_test/bignum: CompileTimeError # int64
-int_modulo_arith_test/modPow: CompileTimeError # int64
-int_modulo_arith_test/none: CompileTimeError # int64
-int_parse_radix_bad_handler_test: Fail
-int_parse_radix_test/02: CompileTimeError # int64
-int_round_test: CompileTimeError # int64
-int_round_to_double_test: CompileTimeError # int64
-int_to_int_test: CompileTimeError # int64
-int_truncate_test: CompileTimeError # int64
-int_truncate_to_double_test: CompileTimeError # int64
-integer_to_radix_string_test: CompileTimeError # int64
-integer_to_string_test/01: CompileTimeError # int64
-iterable_element_at_test: StaticWarning, OK # Test generates errors on purpose.
-num_clamp_test: StaticWarning, OK # Test generates errors on purpose.
-num_parse_test/01: CompileTimeError # int64
-num_parse_test/none: CompileTimeError # int64
-num_sign_test: CompileTimeError # int64
-regress_r21715_test: CompileTimeError # int64
-string_test: StaticWarning, OK # Test generates error on purpose.
+*: Skip
[ $compiler == dart2js ]
regexp/pcre_test: Pass, Slow # Issue 21593
@@ -126,22 +81,6 @@
[ $arch == x64 && $system == windows ]
stopwatch_test: Skip # Flaky test due to expected performance behaviour.
-# Analyzer's implementation of fromEnvironment assumes that undefined
-# environment variables have an unspecified value (rather than being
-# null) because it is expected that the user will supply a value when
-# the code is run. This means that it produces slightly different
-# error messages than the VM and Dart2js.
-[ $compiler == dart2analyzer && $checked ]
-from_environment_const_type_undefined_test/09: CompileTimeError
-from_environment_const_type_undefined_test/11: CompileTimeError
-from_environment_const_type_undefined_test/12: CompileTimeError
-from_environment_const_type_undefined_test/13: CompileTimeError
-from_environment_const_type_undefined_test/14: CompileTimeError
-from_environment_const_type_undefined_test/16: CompileTimeError
-
-[ $compiler == dart2analyzer && $strong ]
-*: Skip # Issue 28649
-
[ $compiler != dart2analyzer && $runtime != dart_precompiled && $runtime != vm ]
data_resource_test: RuntimeError # Issue 23825 (not implemented yet).
file_resource_test: Skip, OK # VM specific test, uses dart:io.
diff --git a/tests/language/language_analyzer2.status b/tests/language/language_analyzer2.status
index 814eee9..0dd8e28 100644
--- a/tests/language/language_analyzer2.status
+++ b/tests/language/language_analyzer2.status
@@ -3,425 +3,4 @@
# BSD-style license that can be found in the LICENSE file.
[ $compiler == dart2analyzer ]
-abstract_beats_arguments_test: StaticWarning
-accessor_conflict_export2_test: StaticWarning # Issue 25624
-accessor_conflict_export_test: StaticWarning # Issue 25624
-accessor_conflict_import2_test: StaticWarning # Issue 25624
-accessor_conflict_import_prefixed2_test: StaticWarning # Issue 25624
-accessor_conflict_import_prefixed_test: StaticWarning # Issue 25624
-accessor_conflict_import_test: StaticWarning # Issue 25624
-application_negative_test: CompileTimeError # Issue 14528, The following tests are currently assumed to be failing because the test is wrong.
-assert_message_test: StaticWarning
-assertion_initializer_test: StaticWarning
-assertion_test: StaticWarning
-bad_initializer1_negative_test: CompileTimeError # Issue 14529, The following tests are currently assumed to be failing because the test is wrong.
-bad_initializer2_negative_test: Fail # Issue 14880
-bad_named_constructor_negative_test: CompileTimeError # Issue 18693, The following tests are currently assumed to be failing because the test is wrong.
-black_listed_test/none: Fail # Issue 14228
-body_less_constructor_wrong_arg_negative_test: CompileTimeError # Issue 18695, The following tests are currently assumed to be failing because the test is wrong.
-cascade_test/none: Fail # Issue 11577
-closure_call_wrong_argument_count_negative_test: Skip # Runtime negative test. No static errors or warnings.
-conflicting_type_variable_and_setter_test: CompileTimeError # Issue 25525
-const_counter_negative_test: CompileTimeError
-const_error_multiply_initialized_test/02: MissingCompileTimeError # Issue 29657
-const_error_multiply_initialized_test/04: MissingCompileTimeError # Issue 29657
-const_for_in_variable_test/01: MissingCompileTimeError # Issue 25161
-const_optional_args_negative_test: CompileTimeError
-constructor3_negative_test: Fail # Issue 11585
-constructor_call_wrong_argument_count_negative_test: Fail # Issue 11585
-constructor_duplicate_final_test/03: MissingCompileTimeError
-constructor_redirect1_negative_test: CompileTimeError
-constructor_redirect2_negative_test: CompileTimeError
-constructor_setter_negative_test: CompileTimeError
-deep_nesting1_negative_test: CompileTimeError # Issue 25558
-deep_nesting2_negative_test: CompileTimeError # Issue 25558
-default_factory2_test/none: Fail # Issue 13956
-duplicate_export_negative_test: CompileTimeError
-duplicate_interface_negative_test: CompileTimeError
-empty_block_case_test: StaticWarning # Issue 18701, The following tests are currently assumed to be failing because the test is wrong.
-enum_syntax_test/05: Fail # Issue 21649
-enum_syntax_test/06: Fail # Issue 21649
-error_stacktrace_test: StaticWarning # Issue 18702, The following tests are currently assumed to be failing because the test is wrong.
-export_ambiguous_main_negative_test: CompileTimeError
-extend_type_parameter2_negative_test: CompileTimeError
-extend_type_parameter_negative_test: CompileTimeError
-external_test/21: Fail
-external_test/24: Fail
-external_test/25: Fail
-f_bounded_quantification4_test: StaticWarning
-f_bounded_quantification5_test: StaticWarning
-factory1_test/00: StaticWarning # Issue 18726 # Issues to be fixed now that type parameters have been fixed (issues 14221, 15553)
-factory1_test/01: StaticWarning # Issue 18726 # Issues to be fixed now that type parameters have been fixed (issues 14221, 15553)
-factory1_test/none: StaticWarning # Issue 18726 # Issues to be fixed now that type parameters have been fixed (issues 14221, 15553)
-factory2_negative_test: CompileTimeError
-factory2_test: StaticWarning # Issue 18727
-factory3_negative_test: CompileTimeError
-factory3_test: StaticWarning # Issue 18727
-factory4_test: StaticWarning # Issue 18727
-factory5_test/none: Fail # Issue 11578
-factory_implementation_test/00: StaticWarning
-factory_implementation_test/none: Fail # Issue 11578
-factory_negative_test: CompileTimeError
-factory_redirection_test/01: StaticWarning # Issue 11578
-factory_redirection_test/02: StaticWarning # Issue 18230
-factory_redirection_test/03: StaticWarning # Issue 11578
-factory_redirection_test/05: StaticWarning # Issue 11578
-factory_redirection_test/06: StaticWarning # Issue 11578
-factory_redirection_test/08: StaticWarning # Issue 18230
-factory_redirection_test/09: StaticWarning # Issue 18230
-factory_redirection_test/10: StaticWarning # Issue 18230
-factory_redirection_test/11: StaticWarning # Issue 18230
-factory_redirection_test/12: StaticWarning # Issue 18230
-factory_redirection_test/13: StaticWarning # Issue 18230
-factory_redirection_test/14: StaticWarning # Issue 18230
-factory_redirection_test/none: StaticWarning # Issue 18230
-factory_return_type_checked_test: StaticWarning # Issue 18728
-field1_negative_test: CompileTimeError
-field2_negative_test: CompileTimeError
-field3_negative_test: CompileTimeError
-field3a_negative_test: Fail # Issue 11124
-field4_negative_test: CompileTimeError
-field5_negative_test: CompileTimeError
-field6_negative_test: CompileTimeError
-field6a_negative_test: CompileTimeError
-field_method4_negative_test: Fail # Issue 11590
-final_attempt_reinitialization_test/01: MissingCompileTimeError # Issue 29657
-final_attempt_reinitialization_test/02: MissingCompileTimeError # Issue 29657
-final_syntax_test/01: Fail # Issue 11124
-final_syntax_test/02: Fail # Issue 11124
-final_syntax_test/03: Fail # Issue 11124
-final_syntax_test/04: Fail # Issue 11124
-for_in3_test: StaticWarning, OK # Test should have warning by design.
-for_in_side_effects_test: StaticWarning, OK # Test uses custom class that does not implement Iterable in for-in.
-function_malformed_result_type_test: StaticWarning
-function_subtype_bound_closure7_test: StaticWarning
-function_subtype_checked0_test: StaticWarning
-function_subtype_closure0_test: StaticWarning
-function_subtype_closure1_test: StaticWarning
-function_subtype_factory1_test: StaticWarning
-function_subtype_inline1_test: StaticWarning
-function_type2_test: StaticWarning
-function_type_parameter2_negative_test: CompileTimeError
-function_type_parameter_negative_test: CompileTimeError
-generalized_void_syntax_test: Skip # TODO, Issue #30177.
-generic_closure_test: StaticWarning
-generic_list_checked_test: StaticWarning
-generic_local_functions_test: CompileTimeError # Issue 28515
-generic_methods_generic_function_parameter_test: CompileTimeError # Issue 28515
-generic_methods_type_expression_test: Skip # This tests now unsupported Dart 1.0 behavior (is check warnings)
-generic_test: StaticWarning
-generics_test: StaticWarning
-get_set_syntax_test/none: Fail # Issue 11575
-getter_declaration_negative_test: CompileTimeError
-getter_no_setter2_test/01: StaticWarning
-getter_no_setter_test/01: StaticWarning
-getter_no_setter_test/none: Fail # Issue 11579
-getter_setter_in_lib_test: Fail # Issue 23286
-if_null_evaluation_order_test/01: StaticWarning # invalid use of void for dart 2, see also #32100
-implicit_this_test/02: StaticWarning
-implicit_this_test/none: Fail # Issue 11575
-implied_interface_test: StaticWarning
-import_combinators_negative_test: Fail # Issue 11594
-import_combinators_test: StaticWarning
-import_core_prefix_test: StaticWarning
-inferrer_this_access_test: StaticWarning
-initializing_formal_type_test: StaticWarning # Issue 26658 # Experimental feature: Use initializing formals in initializers and constructor body.
-inlined_throw_test: StaticWarning
-inst_field_initializer1_negative_test: CompileTimeError
-instance_call_wrong_argument_count_negative_test: Fail # Issue 11585
-instance_method2_negative_test: CompileTimeError
-instance_method_negative_test: CompileTimeError
-instanceof3_test: StaticWarning
-instantiate_type_variable_test/01: StaticWarning
-interceptor6_test: StaticWarning
-interface2_negative_test: CompileTimeError
-interface_inherit_field_test: StaticWarning
-interface_injection1_negative_test: CompileTimeError
-interface_injection2_negative_test: CompileTimeError
-interface_static_method_negative_test: CompileTimeError
-interface_static_non_final_fields_negative_test: Fail # Issue 11594
-interface_test/none: Fail # Issue 11575
-invocation_mirror_test: StaticWarning
-is_not_class1_negative_test: CompileTimeError
-is_not_class2_test: StaticWarning
-is_not_class4_negative_test: CompileTimeError
-isnot_malformed_type_test: StaticWarning
-issue11724_test: Fail # Issue 12381
-issue13474_test: StaticWarning, OK # Issue 13474
-issue1363_test: StaticWarning
-issue1578_negative_test: CompileTimeError
-label2_negative_test: CompileTimeError
-label3_negative_test: CompileTimeError
-label5_negative_test: CompileTimeError
-label6_negative_test: CompileTimeError
-label8_negative_test: CompileTimeError
-label_test: StaticWarning
-library_ambiguous_test/00: StaticWarning
-library_ambiguous_test/01: StaticWarning
-library_ambiguous_test/02: StaticWarning
-library_ambiguous_test/03: StaticWarning
-library_negative_test: CompileTimeError
-list_literal2_negative_test: CompileTimeError
-list_literal4_test: StaticWarning
-list_literal_negative_test: CompileTimeError
-list_test: StaticWarning
-local_function2_test: StaticWarning
-main_not_a_function_test/01: Fail # Issue 20030
-main_test/03: Fail # Issue 20030
-malbounded_redirecting_factory2_test/none: Fail # Issue 11578
-malbounded_redirecting_factory_test/none: Fail # Issue 11578
-malbounded_type_cast2_test: StaticWarning
-malbounded_type_cast_test: StaticWarning
-malbounded_type_literal_test: StaticWarning
-malbounded_type_test2_test: StaticWarning
-malformed_test/05: Fail # Issue 14079
-malformed_test/06: Fail # Issue 14079
-malformed_test/none: Fail # Issue 14079
-malformed_type_test: StaticWarning
-map_literal2_negative_test: CompileTimeError
-map_literal3_test: StaticWarning
-map_literal4_test: StaticWarning
-map_literal6_test: StaticWarning
-map_literal8_test: StaticWarning
-map_literal_negative_test: CompileTimeError
-method_override4_test: StaticWarning
-method_override5_test: StaticWarning
-method_override6_test: StaticWarning
-method_override7_test/03: Fail # Issue 11497
-method_override_test: StaticWarning
-mixin_illegal_static_access_test: StaticWarning
-mixin_invalid_bound2_test/none: StaticWarning # legitimate StaticWarning, cannot be annotated
-mixin_invalid_bound_test/none: StaticWarning # legitimate StaticWarning, cannot be annotated
-mixin_super_bound_test: StaticWarning # legitimate StaticWarning, cannot be annotated
-mixin_supertype_subclass2_test/02: MissingStaticWarning # Issue 25614
-mixin_supertype_subclass2_test/05: MissingStaticWarning # Issue 25614
-mixin_supertype_subclass3_test/02: MissingStaticWarning # Issue 25614
-mixin_supertype_subclass3_test/05: MissingStaticWarning # Issue 25614
-mixin_supertype_subclass4_test/01: MissingStaticWarning # Issue 25614
-mixin_supertype_subclass4_test/02: MissingStaticWarning # Issue 25614
-mixin_supertype_subclass4_test/03: MissingStaticWarning # Issue 25614
-mixin_supertype_subclass4_test/04: MissingStaticWarning # Issue 25614
-mixin_supertype_subclass4_test/05: MissingStaticWarning # Issue 25614
-mixin_supertype_subclass_test/02: MissingStaticWarning # Issue 25614
-mixin_supertype_subclass_test/05: MissingStaticWarning # Issue 25614
-mixin_type_parameters_mixin_extends_test: StaticWarning
-mixin_type_parameters_mixin_test: StaticWarning
-mixin_type_parameters_super_extends_test: StaticWarning
-mixin_type_parameters_super_test: StaticWarning
-mixin_with_two_implicit_constructors_test: StaticWarning
-multiline_newline_test/01: CompileTimeError # Issue 23888
-multiline_newline_test/01r: CompileTimeError # Issue 23888
-multiline_newline_test/02: CompileTimeError # Issue 23888
-multiline_newline_test/02r: CompileTimeError # Issue 23888
-multiline_newline_test/03: CompileTimeError # Issue 23888
-multiline_newline_test/03r: CompileTimeError # Issue 23888
-multiline_newline_test/04: MissingCompileTimeError # Issue 23888
-multiline_newline_test/04r: MissingCompileTimeError # Issue 23888
-multiline_newline_test/05: MissingCompileTimeError # Issue 23888
-multiline_newline_test/05r: MissingCompileTimeError # Issue 23888
-multiline_newline_test/06: MissingCompileTimeError # Issue 23888
-multiline_newline_test/06r: MissingCompileTimeError # Issue 23888
-named_constructor_test/01: StaticWarning
-named_constructor_test/03: StaticWarning
-named_parameters2_test: StaticWarning
-named_parameters3_test: StaticWarning
-named_parameters4_test: StaticWarning
-named_parameters_test/01: StaticWarning
-named_parameters_test/02: StaticWarning
-named_parameters_test/03: StaticWarning
-named_parameters_test/04: StaticWarning
-named_parameters_test/05: StaticWarning
-named_parameters_test/06: StaticWarning
-named_parameters_test/07: StaticWarning
-named_parameters_test/08: StaticWarning
-named_parameters_test/09: StaticWarning
-named_parameters_test/10: StaticWarning
-named_parameters_type_test/01: StaticWarning
-new_expression1_negative_test: CompileTimeError
-new_expression2_negative_test: CompileTimeError
-new_expression3_negative_test: CompileTimeError
-no_main_test/01: Fail # Issue 20030
-no_such_constructor2_test: StaticWarning
-no_such_method2_test: StaticWarning
-no_such_method_dispatcher_test: StaticWarning
-non_const_super_negative_test: CompileTimeError
-non_parameterized_factory2_test: StaticWarning
-non_parameterized_factory_test: StaticWarning
-not_enough_positional_arguments_test/00: StaticWarning
-not_enough_positional_arguments_test/01: CompileTimeError
-not_enough_positional_arguments_test/02: StaticWarning
-not_enough_positional_arguments_test/03: StaticWarning
-not_enough_positional_arguments_test/05: StaticWarning
-not_enough_positional_arguments_test/06: StaticWarning
-not_enough_positional_arguments_test/07: StaticWarning
-number_identifier_test/08: StaticWarning
-number_identifier_test/09: StaticWarning
-on_catch_malformed_type_test: StaticWarning
-operator1_negative_test: CompileTimeError
-operator2_negative_test: CompileTimeError
-operator_equals_test: StaticWarning
-optional_named_parameters_test/01: StaticWarning
-optional_named_parameters_test/02: StaticWarning
-optional_named_parameters_test/03: StaticWarning
-optional_named_parameters_test/04: StaticWarning
-optional_named_parameters_test/05: StaticWarning
-optional_named_parameters_test/06: StaticWarning
-optional_named_parameters_test/07: StaticWarning
-optional_named_parameters_test/08: StaticWarning
-optional_named_parameters_test/09: StaticWarning
-override_field_method1_negative_test: CompileTimeError
-override_field_method2_negative_test: CompileTimeError
-override_field_method4_negative_test: CompileTimeError
-override_field_method5_negative_test: CompileTimeError
-override_field_test/03: Fail # Issue 29703
-parameter_initializer1_negative_test: CompileTimeError
-parameter_initializer2_negative_test: CompileTimeError
-parameter_initializer3_negative_test: CompileTimeError
-parameter_initializer4_negative_test: CompileTimeError
-parameter_initializer6_negative_test: CompileTimeError
-parser_quirks_test: StaticWarning
-part2_test: StaticWarning
-part_refers_to_core_library_test/01: MissingCompileTimeError # Issue 29709
-positional_parameters_type_test/01: StaticWarning
-prefix11_negative_test: Fail # Issue 11964
-prefix12_negative_test: Fail # Issue 11962
-prefix13_negative_test: CompileTimeError
-prefix15_negative_test: CompileTimeError
-prefix15_test: StaticWarning
-prefix16_test: StaticWarning
-prefix18_negative_test: CompileTimeError
-prefix1_negative_test: Fail # Issue 11962
-prefix22_test: StaticWarning
-prefix23_test: StaticWarning
-prefix2_negative_test: Fail # Issue 11962
-prefix3_negative_test: Fail # Issue 12191
-prefix4_negative_test: Fail # Issue 11962
-prefix5_negative_test: Fail # Issue 11962
-prefix7_negative_test: CompileTimeError
-prefix8_negative_test: Fail # Issue 11964
-private_member1_negative_test: Fail # Issue 14021
-private_member2_negative_test: Fail # Issue 14021
-private_member3_negative_test: Fail # Issue 14021
-property_field_override_test: StaticWarning
-proxy3_test/03: StaticWarning # Issue 15467
-proxy3_test/04: StaticWarning # Issue 15467
-proxy_test/05: StaticWarning # Issue 15467
-proxy_test/06: StaticWarning # Issue 15467
-redirecting_factory_default_values_test/none: StaticWarning # Issue 14471
-redirecting_factory_incompatible_signature_test: StaticWarning
-redirecting_factory_infinite_steps_test/01: Fail # Issue 13916
-redirecting_factory_long_test: StaticWarning
-regress_12561_test: StaticWarning # This test is expected to have warnings because of noSuchMethod overriding.
-regress_13494_test: StaticWarning
-regress_17382_test: Skip # don't care about the static warning.
-regress_22438_test: Fail # Issue 14079
-regress_23408_test: Skip # don't care about the static warning.
-regress_25246_test: Skip
-regress_26668_test: Fail # Issue 26678
-regress_27572_test: StaticWarning # Warning about undefined method expected.
-regress_27617_test/1: MissingCompileTimeError
-regress_29025_test: StaticWarning # Issue 29081
-regress_29349_test: CompileTimeError # Issue 29744
-regress_29405_test: StaticWarning # Issue 29421
-reify_typevar_static_test/00: MissingCompileTimeError # Issue 21565
-return_type_test: StaticWarning
-script1_negative_test: CompileTimeError
-script2_negative_test: CompileTimeError
-setter4_test: StaticWarning # Issue 14736
-setter_declaration2_negative_test: CompileTimeError
-setter_declaration_negative_test: CompileTimeError
-setter_no_getter_call_test/01: StaticWarning
-source_self_negative_test: CompileTimeError
-static_call_wrong_argument_count_negative_test: Fail # Issue 12156
-static_field_test/01: Fail # Issue 12541
-static_field_test/02: Fail # Issue 12541
-static_field_test/03: Fail # Issue 12541
-static_field_test/04: Fail # Issue 12541
-static_initializer_type_error_test: StaticWarning
-string_escape4_negative_test: CompileTimeError
-string_interpolate1_negative_test: CompileTimeError
-string_interpolate2_negative_test: CompileTimeError
-string_interpolate_test: StaticWarning
-string_interpolation1_negative_test: CompileTimeError
-string_interpolation2_negative_test: CompileTimeError
-string_interpolation3_negative_test: CompileTimeError
-string_interpolation4_negative_test: CompileTimeError
-string_interpolation5_negative_test: CompileTimeError
-string_interpolation6_negative_test: CompileTimeError
-string_test: StaticWarning
-string_unicode1_negative_test: CompileTimeError
-string_unicode2_negative_test: CompileTimeError
-string_unicode3_negative_test: CompileTimeError
-string_unicode4_negative_test: CompileTimeError
-super_assign_test: StaticWarning
-super_call4_test: StaticWarning
-super_getter_setter_test: StaticWarning
-super_operator_index5_test: StaticWarning
-super_operator_index6_test: StaticWarning
-super_operator_index7_test: StaticWarning
-super_operator_index8_test: StaticWarning
-super_operator_test: StaticWarning
-super_setter_test: StaticWarning
-switch1_negative_test: CompileTimeError
-switch3_negative_test: CompileTimeError
-switch4_negative_test: CompileTimeError
-switch5_negative_test: CompileTimeError
-switch7_negative_test: CompileTimeError
-switch_fallthru_test: StaticWarning
-syntax_test/none: Fail # Issue 11575
-test_negative_test: CompileTimeError
-transitive_private_library_access_test: StaticWarning # This test is expected to generate a warning, since it's intentionally referring to a variable that's not in scope.
-try_catch4_test: StaticWarning # Note: test is in error but analyzer doesn't notice due to bug #24502 top_level_non_prefixed_library_test: StaticWarning
-try_catch5_test: StaticWarning # Note: test is in error but analyzer doesn't notice due to bug #24502 top_level_non_prefixed_library_test: StaticWarning
-type_argument_in_super_type_test: StaticWarning
-type_parameter_test/none: Fail # Issue 12160
-type_variable_bounds_test/none: Fail # Issue 11578
-type_variable_conflict2_test/02: MissingCompileTimeError
-type_variable_conflict2_test/06: MissingCompileTimeError
-type_variable_conflict2_test/08: MissingCompileTimeError
-type_variable_conflict2_test/10: MissingCompileTimeError
-type_variable_identifier_expression_test: StaticWarning
-type_variable_scope2_test: StaticWarning
-type_variable_scope_test/none: Fail # Issue 11578
-type_variable_static_context_negative_test: Fail # Issue 12161
-typed_selector2_test: StaticWarning
-unary_plus_negative_test: CompileTimeError
-unbound_getter_test: StaticWarning
-unhandled_exception_negative_test: CompileTimeError
-unresolved_in_factory_negative_test: Fail # Issue 12163
-unresolved_top_level_method_negative_test: StaticWarning
-unresolved_top_level_var_negative_test: Fail # Issue 12163
-vm/canonicalization_preserves_deopt_test: StaticWarning
-vm/debug_break_enabled_vm_test: Skip
-vm/debug_break_vm_test/*: Skip
-vm/reflect_core_vm_test: CompileTimeError # This test uses "const Symbol('_setAt')"
-vm/type_cast_vm_test: StaticWarning
-vm/type_vm_test: StaticWarning
-void_type_test: StaticWarning
-
-[ $compiler == dart2analyzer && $runtime == none ]
-arithmetic_test: CompileTimeError # int64
-bit_operations_test/01: CompileTimeError # int64
-bit_operations_test/02: CompileTimeError # int64
-bit_operations_test/03: CompileTimeError # int64
-bit_operations_test/04: CompileTimeError # int64
-bit_operations_test/none: CompileTimeError # int64
-deopt_inlined_function_lazy_test: CompileTimeError # int64
-guess_cid_test: CompileTimeError # int64
-identical_closure2_test: CompileTimeError # int64
-int2_test: CompileTimeError # int64
-mint_compares_test: CompileTimeError # int64
-number_identity_test: CompileTimeError # int64
-vm/regress_14903_test: CompileTimeError # int64
-
-[ $compiler == dart2analyzer && $runtime == none && $checked ]
-assertion_initializer_const_error2_test/cc10: Pass # Issue #31321
-assertion_initializer_const_error2_test/cc11: Pass # Issue #31321
-assertion_initializer_const_error2_test/none: Pass
-
-[ $compiler == dart2analyzer && $runtime == none && !$checked ]
-assertion_initializer_const_function_error_test/01: MissingCompileTimeError
-
-[ $compiler == dart2analyzer && $strong ]
-*: Skip # Issue 28649
-
+*: Skip
diff --git a/tests/language/language_dart2js.status b/tests/language/language_dart2js.status
index 0b99ca7..5ced098 100644
--- a/tests/language/language_dart2js.status
+++ b/tests/language/language_dart2js.status
@@ -1332,7 +1332,6 @@
redirecting_constructor_initializer_test: RuntimeError
redirecting_factory_default_values_test/01: MissingCompileTimeError
redirecting_factory_default_values_test/02: MissingCompileTimeError
-redirecting_factory_long_test: RuntimeError
redirecting_factory_reflection_test: CompileTimeError
regress_13462_0_test: CompileTimeError
regress_13462_1_test: CompileTimeError
diff --git a/tests/language_2/assertion_initializer_const_error2_test.dart b/tests/language_2/assertion_initializer_const_error2_test.dart
index cf7788d..e406b4a 100644
--- a/tests/language_2/assertion_initializer_const_error2_test.dart
+++ b/tests/language_2/assertion_initializer_const_error2_test.dart
@@ -1,60 +1,83 @@
-// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
+// Copyright (c) 2018, 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 test program testing assert statements.
+// VMOptions=--assert_initializer
+//
+// Test of asserts in initializer lists.
import "package:expect/expect.dart";
class C {
final int x;
// Const constructors.
- const C.cc01(this.x, y)
- : assert(x < y) //# cc01: compile-time error
- ;
- const C.cc02(x, y) : x = x
- , assert(x < y) //# cc02: compile-time error
- ;
- const C.cc03(x, y) :
- assert(x < y), //# cc03: compile-time error
- x = x;
- const C.cc05(this.x, y) :
- assert(x < y), //# cc05: compile-time error
- super();
- const C.cc06(x, y) : x = x
- , assert(x < y) //# cc06: compile-time error
- , super()
- ;
- const C.cc07(x, y) :
- assert(x < y), //# cc07: compile-time error
- x = x, super();
- const C.cc08(x, y) :
- assert(x < y), //# cc08: compile-time error
- x = x
- , assert(y > x) //# cc08: continued
- , super()
- ;
- const C.cc09(this.x, y)
- : assert(x < y, "$x < $y") //# cc09: compile-time error
- ;
- const C.cc10(this.x, y)
- : assert(x < y,) //# cc10: compile-time error
- ;
- const C.cc11(this.x, y)
- : assert(x < y, "$x < $y",) //# cc11: compile-time error
- ;
+ const C.cc01(this.x, y) : assert(x < y);
+ const C.cc02(x, y)
+ : x = x,
+ assert(x < y);
+ const C.cc03(x, y)
+ : assert(x < y),
+ x = x;
+ const C.cc04(this.x, y)
+ : assert(x < y),
+ super();
+ const C.cc05(x, y)
+ : x = x,
+ assert(x < y),
+ super();
+ const C.cc06(x, y)
+ : assert(x < y),
+ x = x,
+ super();
+ const C.cc07(x, y)
+ : assert(x < y),
+ x = x,
+ assert(y > x),
+ super();
+ const C.cc08(this.x, y) : assert(x < y, "$x < $y");
+ const C.cc09(this.x, y) : assert(x < y,);
+ const C.cc10(this.x, y) : assert(x < y, "$x < $y",);
}
main() {
- // Failing assertions in const invociations are compile-time errors.
- const C.cc01(2, 1); //# cc01: continued
- const C.cc02(2, 1); //# cc02: continued
- const C.cc03(2, 1); //# cc03: continued
- const C.cc05(2, 1); //# cc05: continued
- const C.cc06(2, 1); //# cc06: continued
- const C.cc07(2, 1); //# cc07: continued
- const C.cc08(2, 1); //# cc08: continued
- const C.cc09(2, 1); //# cc09: continued
- const C.cc10(2, 1); //# cc10: continued
- const C.cc11(2, 1); //# cc11: continued
+ const x = 3;
+ {
+ const x = 1; //# cc01: compile-time error
+ const C.cc01(2, x);
+ }
+ {
+ const x = 1; //# cc02: compile-time error
+ const C.cc02(2, x);
+ }
+ {
+ const x = 1; //# cc03: compile-time error
+ const C.cc03(2, x);
+ }
+ {
+ const x = 1; //# cc04: compile-time error
+ const C.cc04(2, x);
+ }
+ {
+ const x = 1; //# cc05: compile-time error
+ const C.cc05(2, x);
+ }
+ {
+ const x = 1; //# cc06: compile-time error
+ const C.cc06(2, x);
+ }
+ {
+ const x = 1; //# cc07: compile-time error
+ const C.cc07(2, x);
+ }
+ {
+ const x = 1; //# cc08: compile-time error
+ const C.cc08(2, x);
+ }
+ {
+ const x = 1; //# cc09: compile-time error
+ const C.cc09(2, x);
+ }
+ {
+ const x = 1; //# cc10: compile-time error
+ const C.cc10(2, x);
+ }
}
diff --git a/tests/language_2/implicit_creation/implicit_new_constructor_generic_named_test.dart b/tests/language_2/implicit_creation/implicit_new_constructor_generic_named_test.dart
index a05d29c..11d9aa1 100644
--- a/tests/language_2/implicit_creation/implicit_new_constructor_generic_named_test.dart
+++ b/tests/language_2/implicit_creation/implicit_new_constructor_generic_named_test.dart
@@ -4,8 +4,6 @@
import "package:expect/expect.dart";
-import "implicit_new_constructor_generic_named_test.dart" as prefix;
-
// Test that an omitted `new` is allowed for a generic constructor invocation.
class C<T> {
diff --git a/tests/language_2/implicit_creation/implicit_new_constructor_generic_test.dart b/tests/language_2/implicit_creation/implicit_new_constructor_generic_test.dart
index 8994682..aca30e2 100644
--- a/tests/language_2/implicit_creation/implicit_new_constructor_generic_test.dart
+++ b/tests/language_2/implicit_creation/implicit_new_constructor_generic_test.dart
@@ -4,8 +4,6 @@
import "package:expect/expect.dart";
-import "implicit_new_constructor_generic_test.dart" as prefix;
-
// Test that an omitted `new` is allowed for a generic constructor invocation.
class C<T> {
diff --git a/tests/language_2/implicit_creation/implicit_new_or_const_composite_test.dart b/tests/language_2/implicit_creation/implicit_new_or_const_composite_test.dart
index 31813f2..cd42c0f 100644
--- a/tests/language_2/implicit_creation/implicit_new_or_const_composite_test.dart
+++ b/tests/language_2/implicit_creation/implicit_new_or_const_composite_test.dart
@@ -35,7 +35,7 @@
Expect.identical(cd1, cd2);
Expect.identical(cd1, cd3);
- Expect.allDistinct([cd1, cd3, cd4]);
+ Expect.allDistinct([cd1, cd3, cd4, cd5]);
}
{
diff --git a/tests/language_2/implicit_creation/implicit_new_or_const_generic_test.dart b/tests/language_2/implicit_creation/implicit_new_or_const_generic_test.dart
index 1a4de2d..1f58aa5 100644
--- a/tests/language_2/implicit_creation/implicit_new_or_const_generic_test.dart
+++ b/tests/language_2/implicit_creation/implicit_new_or_const_generic_test.dart
@@ -82,7 +82,7 @@
}
// Test instance creation with type parameters.
- new G<int>().testWithT();
+ new G<int>().testWithInt();
}
class D<T> {
@@ -97,7 +97,7 @@
class G<T> {
// Tests creation of D<T> where T is a type variable.
- void testWithT() {
+ void testWithInt() {
// Cannot create constants referencing T or x.
var instances = [
new D<T>(null),
@@ -113,7 +113,7 @@
prefix.D<T>.named(null),
];
- const dx = const D<T>(null);
+ const dx = const D<int>(null);
Expect.allDistinct([dx]..addAll(instances));
for (var i = 0; i < instances.length; i++) {
var d = instances[i];
diff --git a/tests/language_2/import_nonexisting_dart_uri_test.dart b/tests/language_2/import_nonexisting_dart_uri_test.dart
new file mode 100644
index 0000000..1a4fd42
--- /dev/null
+++ b/tests/language_2/import_nonexisting_dart_uri_test.dart
@@ -0,0 +1,7 @@
+// Copyright (c) 2018, 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:nonexisting/nonexisting.dart"; //# 01: compile-time error
+
+main() {}
diff --git a/tests/language_2/initializer_super_last_test.dart b/tests/language_2/initializer_super_last_test.dart
new file mode 100644
index 0000000..73f18d0d
--- /dev/null
+++ b/tests/language_2/initializer_super_last_test.dart
@@ -0,0 +1,167 @@
+// Copyright (c) 201, 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=--assert_initializer
+//
+// Dart test program testing assert statements.
+
+import "package:expect/expect.dart";
+
+class S {
+ const S();
+ const S.named();
+}
+
+class C extends S {
+ final int x;
+ C.cc01(int x)
+ : x = x,
+ super();
+ C.cc02(int x)
+ : x = x,
+ super.named();
+ C.cc03(this.x) : super();
+ C.cc04(this.x) : super.named();
+ C.cc05(int x)
+ : x = x,
+ assert(x == x),
+ super();
+ C.cc06(int x)
+ : x = x,
+ assert(x == x),
+ super.named();
+ C.cc07(this.x)
+ : assert(x == x),
+ super();
+ C.cc08(this.x)
+ : assert(x == x),
+ super.named();
+ C.cc09(int x)
+ : //
+ super(), //# cc09: compile-time error
+ x = x;
+ C.cc10(int x)
+ : //
+ super.named(), //# cc10: compile-time error
+ x = x;
+ C.cc11(this.x)
+ : //
+ super(), //# cc11: compile-time error
+ assert(x == x);
+ C.cc12(this.x)
+ : //
+ super.named(), //# cc12: compile-time error
+ assert(x == x);
+ C.cc13(int x)
+ : //
+ super(), //# cc13: compile-time error
+ x = x,
+ assert(x == x);
+ C.cc14(int x)
+ : //
+ super.named(), //# cc14: compile-time error
+ x = x,
+ assert(x == x);
+ C.cc15(int x)
+ : x = x,
+ super(), //# cc15: compile-time error
+ assert(x == x);
+ C.cc16(int x)
+ : x = x,
+ super.named(), //# cc16: compile-time error
+ assert(x == x);
+
+ const C.cc17(int x)
+ : x = x,
+ super();
+ const C.cc18(int x)
+ : x = x,
+ super.named();
+ const C.cc19(this.x) : super();
+ const C.cc20(this.x) : super.named();
+ const C.cc21(int x)
+ : x = x,
+ assert(x == x),
+ super();
+ const C.cc22(int x)
+ : x = x,
+ assert(x == x),
+ super.named();
+ const C.cc23(this.x)
+ : assert(x == x),
+ super();
+ const C.cc24(this.x)
+ : assert(x == x),
+ super.named();
+ const C.cc25(int x)
+ : //
+ super(), //# cc25: compile-time error
+ x = x;
+ const C.cc26(int x)
+ : //
+ super.named(), //# cc26: compile-time error
+ x = x;
+ const C.cc27(this.x)
+ : //
+ super(), //# cc27: compile-time error
+ assert(x == x);
+ const C.cc28(this.x)
+ : //
+ super.named(), //# cc28: compile-time error
+ assert(x == x);
+ const C.cc29(int x)
+ : //
+ super(), //# cc29: compile-time error
+ x = x,
+ assert(x == x);
+ const C.cc30(int x)
+ : //
+ super.named(), //# cc30: compile-time error
+ x = x,
+ assert(x == x);
+ const C.cc31(int x)
+ : x = x,
+ super(), //# cc31: compile-time error
+ assert(x == x);
+ const C.cc32(int x)
+ : x = x,
+ super.named(), //# cc32: compile-time error
+ assert(x == x);
+}
+
+main() {
+ // Ensure that erroneous constructors are actually needed.
+ new C.cc01(42);
+ new C.cc02(42);
+ new C.cc03(42);
+ new C.cc04(42);
+ new C.cc05(42);
+ new C.cc06(42);
+ new C.cc07(42);
+ new C.cc08(42);
+ new C.cc09(42);
+ new C.cc10(42);
+ new C.cc11(42);
+ new C.cc12(42);
+ new C.cc13(42);
+ new C.cc14(42);
+ new C.cc15(42);
+ new C.cc16(42);
+
+ const C.cc17(42);
+ const C.cc18(42);
+ const C.cc19(42);
+ const C.cc20(42);
+ const C.cc21(42);
+ const C.cc22(42);
+ const C.cc23(42);
+ const C.cc24(42);
+ const C.cc25(42);
+ const C.cc26(42);
+ const C.cc27(42);
+ const C.cc28(42);
+ const C.cc29(42);
+ const C.cc30(42);
+ const C.cc31(42);
+ const C.cc32(42);
+}
diff --git a/tests/language_2/language_2.status b/tests/language_2/language_2.status
index 3e36e64..06cff1c 100644
--- a/tests/language_2/language_2.status
+++ b/tests/language_2/language_2.status
@@ -22,6 +22,28 @@
stacktrace_demangle_ctors_test: SkipByDesign # Names are not scrubbed.
type_checks_in_factory_method_test: SkipByDesign # Requires checked mode.
+[ $fasta ]
+initializer_super_last_test/cc04: MissingCompileTimeError
+initializer_super_last_test/cc09: MissingCompileTimeError
+initializer_super_last_test/cc10: MissingCompileTimeError
+initializer_super_last_test/cc11: MissingCompileTimeError
+initializer_super_last_test/cc12: MissingCompileTimeError
+initializer_super_last_test/cc13: MissingCompileTimeError
+initializer_super_last_test/cc14: MissingCompileTimeError
+initializer_super_last_test/cc15: MissingCompileTimeError
+initializer_super_last_test/cc16: MissingCompileTimeError
+initializer_super_last_test/cc25: MissingCompileTimeError
+initializer_super_last_test/cc26: MissingCompileTimeError
+initializer_super_last_test/cc27: MissingCompileTimeError
+initializer_super_last_test/cc28: MissingCompileTimeError
+initializer_super_last_test/cc29: MissingCompileTimeError
+initializer_super_last_test/cc30: MissingCompileTimeError
+initializer_super_last_test/cc31: MissingCompileTimeError
+initializer_super_last_test/cc32: MissingCompileTimeError
+
+[ $compiler == dart2js && !$strong ]
+initializer_super_last_test: Crash, CompileTimeError # Issue 31321
+
[ $compiler != dart2js && $compiler != dartdevc && !$fasta && $strong ]
type_promotion_functions_test: CompileTimeError # Issue 30895: This test requires a complete rewrite for 2.0.
@@ -40,6 +62,40 @@
implicit_creation/implicit_new_prefix_constructor_generic_test: Fail # No support for implicit creation.
implicit_creation/implicit_new_prefix_constructor_test: Fail # No support for implicit creation.
+[ $compiler != dart2js && !$strong ]
+initializer_super_last_test/cc01: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc02: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc03: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc04: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc05: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc06: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc07: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc08: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc09: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc10: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc11: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc12: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc13: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc14: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc15: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc16: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc17: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc18: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc19: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc20: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc21: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc22: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc23: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc24: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc25: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc26: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc27: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc28: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc29: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc30: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc31: MissingCompileTimeError # Was valid in Dart 1.
+initializer_super_last_test/cc32: MissingCompileTimeError # Was valid in Dart 1.
+
[ $compiler != dartdevc && !$checked ]
function_type/*: Skip # Needs checked mode.
diff --git a/tests/language_2/language_2_analyzer.status b/tests/language_2/language_2_analyzer.status
index a1008b0..325899a 100644
--- a/tests/language_2/language_2_analyzer.status
+++ b/tests/language_2/language_2_analyzer.status
@@ -654,6 +654,7 @@
assertion_initializer_const_error2_test/cc01: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc02: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc03: MissingCompileTimeError # Not reporting failed assert() at compile time.
+assertion_initializer_const_error2_test/cc04: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc05: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc06: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc07: MissingCompileTimeError # Not reporting failed assert() at compile time.
diff --git a/tests/language_2/language_2_dart2js.status b/tests/language_2/language_2_dart2js.status
index 572064c..e525517 100644
--- a/tests/language_2/language_2_dart2js.status
+++ b/tests/language_2/language_2_dart2js.status
@@ -1396,6 +1396,7 @@
argument_assignability_function_typed_test/03: RuntimeError
argument_assignability_function_typed_test/04: RuntimeError
argument_assignability_function_typed_test/05: RuntimeError
+assertion_initializer_const_error2_test/none: CompileTimeError
assertion_initializer_test: CompileTimeError
assertion_test: RuntimeError
async_await_foreign_test: Crash # Assertion failure: Runtime type information not available for type_variable_local(bindCallback.R) in (local(_RootZone.bindCallback#)) for j:closure_call(_RootZone_bindCallback_closure.call).
@@ -1517,9 +1518,7 @@
const_switch_test/02: RuntimeError
const_switch_test/04: RuntimeError
const_types_test/34: MissingCompileTimeError
-const_types_test/35: MissingCompileTimeError
const_types_test/39: MissingCompileTimeError
-const_types_test/40: MissingCompileTimeError
constants_test/05: MissingCompileTimeError
constructor12_test: RuntimeError
constructor_named_arguments_test/none: RuntimeError
@@ -1963,7 +1962,6 @@
redirecting_factory_default_values_test/02: MissingCompileTimeError
redirecting_factory_default_values_test/03: MissingCompileTimeError
redirecting_factory_infinite_steps_test/01: MissingCompileTimeError
-redirecting_factory_long_test: RuntimeError
redirecting_factory_malbounded_test/01: MissingCompileTimeError
redirecting_factory_reflection_test: CompileTimeError
regress_13462_0_test: CompileTimeError
@@ -2164,6 +2162,7 @@
argument_assignability_function_typed_test/03: RuntimeError
argument_assignability_function_typed_test/04: RuntimeError
argument_assignability_function_typed_test/05: RuntimeError
+assertion_initializer_const_error2_test/none: CompileTimeError
assertion_initializer_test: CompileTimeError
assertion_test: RuntimeError
async_await_foreign_test: Crash # Assertion failure: Runtime type information not available for type_variable_local(bindCallback.R) in (local(_RootZone.bindCallback#)) for j:closure_call(_RootZone_bindCallback_closure.call).
@@ -2726,7 +2725,6 @@
redirecting_factory_default_values_test/02: MissingCompileTimeError
redirecting_factory_default_values_test/03: MissingCompileTimeError
redirecting_factory_infinite_steps_test/01: MissingCompileTimeError
-redirecting_factory_long_test: RuntimeError
redirecting_factory_malbounded_test/01: MissingCompileTimeError
redirecting_factory_reflection_test: CompileTimeError
regress_13462_0_test: CompileTimeError
diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status
index fa770e2..c86380f 100644
--- a/tests/language_2/language_2_dartdevc.status
+++ b/tests/language_2/language_2_dartdevc.status
@@ -64,6 +64,7 @@
generic_local_functions_test: CompileTimeError
generic_methods_generic_function_parameter_test: CompileTimeError
generic_methods_generic_function_result_test/none: CompileTimeError # Issue #30208
+generic_methods_overriding_test/03: MissingCompileTimeError # Issue 29920
generic_no_such_method_dispatcher_simple_test: Skip # This test is just for kernel.
generic_no_such_method_dispatcher_test: CompileTimeError
getter_setter_in_lib_test: CompileTimeError
@@ -337,6 +338,8 @@
compile_time_constant_static5_test/16: CompileTimeError # Issue 31537
compile_time_constant_static5_test/21: CompileTimeError # Issue 31537
compile_time_constant_static5_test/23: CompileTimeError # Issue 31537
+conditional_import_string_test: CompileTimeError # Test is broken
+conditional_import_test: CompileTimeError # Test is broken
config_import_test: CompileTimeError
const_constructor2_test/20: MissingCompileTimeError
const_constructor2_test/22: MissingCompileTimeError
@@ -399,6 +402,8 @@
field_override_test/00: MissingCompileTimeError
field_override_test/01: MissingCompileTimeError
function_propagation_test: RuntimeError
+function_subtype_cast0_test: RuntimeError # CastError: Casting value of type '(int) => void' to type '(dynamic) => void' which is incompatible
+function_subtype_closure0_test: RuntimeError # Expect.throws(TypeError) fails: Did not throw
function_type_call_getter2_test/00: MissingCompileTimeError
function_type_call_getter2_test/01: MissingCompileTimeError
function_type_call_getter2_test/02: MissingCompileTimeError
@@ -421,12 +426,15 @@
identical_const_test/02: MissingCompileTimeError
identical_const_test/03: MissingCompileTimeError
identical_const_test/04: MissingCompileTimeError
+implicit_creation/implicit_new_or_const_composite_test: RuntimeError
+implicit_creation/implicit_new_or_const_test: RuntimeError
implicit_this_test/01: MissingCompileTimeError
implicit_this_test/04: MissingCompileTimeError
initializing_formal_type_annotation_test/01: MissingCompileTimeError
initializing_formal_type_annotation_test/02: MissingCompileTimeError
instance_call_wrong_argument_count_negative_test: Fail
instantiate_tearoff_of_call_test: CompileTimeError
+instantiate_type_variable_test/01: CompileTimeError
invocation_mirror_test: CompileTimeError # Issue 31402 Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Invocation'.
issue18628_2_test/01: MissingCompileTimeError
issue31596_override_test/07: MissingCompileTimeError
@@ -438,6 +446,9 @@
issue31596_super_test/05: RuntimeError
issue_25671a_test/01: CompileTimeError # Warning: The method 'A::noSuchMethod' has fewer positional arguments than those of overridden method 'Object::noSuchMethod'.
issue_25671b_test/01: CompileTimeError # Warning: The method 'A::noSuchMethod' has fewer positional arguments than those of overridden method 'Object::noSuchMethod'.
+library_env_test/has_io_support: RuntimeError # Unsupported operation: bool.fromEnvironment can only be used as a const constructor
+library_env_test/has_mirror_support: RuntimeError # Unsupported operation: bool.fromEnvironment can only be used as a const constructor
+library_env_test/has_no_html_support: RuntimeError # Unsupported operation: bool.fromEnvironment can only be used as a const constructor
local_function_test/01: MissingCompileTimeError
local_function_test/02: MissingCompileTimeError
malbounded_instantiation_test/01: MissingCompileTimeError
@@ -548,6 +559,8 @@
mixin_type_parameters_errors_test/03: MissingCompileTimeError
mixin_type_parameters_errors_test/04: MissingCompileTimeError
mixin_type_parameters_errors_test/05: MissingCompileTimeError
+mock_writable_final_field_test: RuntimeError # Expect.listEquals(list length, expected: <1>, actual: <0>) fails: Next element <123>
+mock_writable_final_private_field_test: RuntimeError
multiline_newline_test/06: MissingCompileTimeError
multiline_newline_test/06r: MissingCompileTimeError
named_constructor_test/01: MissingCompileTimeError
@@ -605,14 +618,19 @@
redirecting_factory_default_values_test/03: MissingCompileTimeError
redirecting_factory_infinite_steps_test/01: MissingCompileTimeError
redirecting_factory_malbounded_test/01: MissingCompileTimeError
+redirecting_factory_reflection_test: RuntimeError # UnimplementedError: node <InvalidExpression> `invalid-expression`
regress_23089_test: Crash # Crashes in KernelClassBuilder.buildTypeArguments
regress_23408_test: CompileTimeError # Issue 31533
+regress_24283_test: RuntimeError # Expect.equals(expected: <-1>, actual: <4294967295>) fails.
regress_29025_test: CompileTimeError
regress_29405_test: CompileTimeError # Issue 31402 Error: A value of type '#lib2::Foo' can't be assigned to a variable of type '(#lib2::Foo) → void'.
regress_29784_test/01: MissingCompileTimeError
regress_29784_test/02: MissingCompileTimeError
regress_30339_test: CompileTimeError
+regress_30339_test: RuntimeError # Uncaught Expect.isTrue(false) fails.
+runtime_type_function_test: RuntimeError # Expect.fail('Type print string does not match expectation
setter4_test: MissingCompileTimeError
+setter_no_getter_call_test/01: CompileTimeError
setter_no_getter_test/01: CompileTimeError
setter_override_test/00: MissingCompileTimeError
setter_override_test/01: MissingCompileTimeError
@@ -638,6 +656,7 @@
switch_case_test/00: MissingCompileTimeError
switch_case_test/01: MissingCompileTimeError
switch_case_test/02: MissingCompileTimeError
+syncstar_yield_test/copyParameters: RuntimeError # Expect.equals(expected: <2>, actual: <3>) fails.
syntax_test/28: MissingCompileTimeError
syntax_test/29: MissingCompileTimeError
syntax_test/30: MissingCompileTimeError
@@ -645,6 +664,7 @@
syntax_test/32: MissingCompileTimeError
syntax_test/33: MissingCompileTimeError
try_catch_test/01: MissingCompileTimeError
+type_literal_test: RuntimeError # Expect.equals(expected: <Func>, actual: <(bool) => int>) fails.
type_promotion_functions_test/02: CompileTimeError # Issue 31537
type_promotion_functions_test/03: CompileTimeError # Issue 31537
type_promotion_functions_test/04: CompileTimeError # Issue 31537
@@ -673,6 +693,10 @@
void_type_usage_test/conditional_return_to_void: MissingCompileTimeError, Crash
wrong_number_type_arguments_test/01: MissingCompileTimeError
+[ $compiler == dartdevc && $runtime == none ]
+instantiate_type_variable_test/01: CompileTimeError
+setter_no_getter_call_test/01: CompileTimeError
+
[ $compiler == dartdevc && $runtime != none ]
assertion_test: RuntimeError # Issue 30326; Expect.equals(expected: <1>, actual: <0>) fails.
async_star_test/01: RuntimeError
@@ -690,7 +714,6 @@
expect_test: RuntimeError # Issue 29920
f_bounded_quantification3_test: RuntimeError # Issue 29920
forwarding_stub_tearoff_generic_test: RuntimeError
-generic_methods_overriding_test/03: MissingCompileTimeError # Issue 29920
getter_closure_execution_order_test: RuntimeError # Issue 29920
implicit_downcast_during_compound_assignment_test: RuntimeError
implicit_downcast_during_indexed_compound_assignment_test: RuntimeError
@@ -720,25 +743,6 @@
super_operator_index8_test: RuntimeError
truncdiv_test: RuntimeError # Issue 29920
-[ $compiler == dartdevk && $runtime != none ]
-conditional_import_string_test: CompileTimeError # Test is broken
-conditional_import_test: CompileTimeError # Test is broken
-function_subtype_cast0_test: RuntimeError # CastError: Casting value of type '(int) => void' to type '(dynamic) => void' which is incompatible
-function_subtype_closure0_test: RuntimeError # Expect.throws(TypeError) fails: Did not throw
-implicit_creation/implicit_new_or_const_composite_test: RuntimeError
-implicit_creation/implicit_new_or_const_test: RuntimeError
-library_env_test/has_io_support: RuntimeError # Unsupported operation: bool.fromEnvironment can only be used as a const constructor
-library_env_test/has_mirror_support: RuntimeError # Unsupported operation: bool.fromEnvironment can only be used as a const constructor
-library_env_test/has_no_html_support: RuntimeError # Unsupported operation: bool.fromEnvironment can only be used as a const constructor
-mock_writable_final_field_test: RuntimeError # Expect.listEquals(list length, expected: <1>, actual: <0>) fails: Next element <123>
-mock_writable_final_private_field_test: RuntimeError
-redirecting_factory_reflection_test: RuntimeError # UnimplementedError: node <InvalidExpression> `invalid-expression`
-regress_24283_test: RuntimeError # Expect.equals(expected: <-1>, actual: <4294967295>) fails.
-regress_30339_test: RuntimeError # Uncaught Expect.isTrue(false) fails.
-runtime_type_function_test: RuntimeError # Expect.fail('Type print string does not match expectation
-syncstar_yield_test/copyParameters: RuntimeError # Expect.equals(expected: <2>, actual: <3>) fails.
-type_literal_test: RuntimeError # Expect.equals(expected: <Func>, actual: <(bool) => int>) fails.
-
[ $compiler == dartdevk && $checked ]
assertion_initializer_const_error2_test/*: MissingCompileTimeError
assertion_initializer_const_error2_test/none: Pass
@@ -751,27 +755,26 @@
# for all runtimes including $runtime == none. They are organized by: shared
# expectations for dartdevc and dartdevk, then expectations for dartdevc, and
# then expectations for dartdevk.
-[ $runtime == none && ($compiler == dartdevc || $compiler == dartdevk) ]
-closure_call_wrong_argument_count_negative_test: Fail
-unhandled_exception_negative_test: Fail
-
-# Runtime tests for dartdevc and dartdevk. These contain expectations for tests
-# that fail at run time, so they should not include $runtime == none which
-# cannot fail at run time. They are organized by: shared expectations for
-# dartdevc and dartdevk, then expectations for dartdevc, and then expectations
-# for dartdevk.
-[ $runtime != none && ($compiler == dartdevc || $compiler == dartdevk) ]
+[ $compiler == dartdevc || $compiler == dartdevk ]
+abstract_override_adds_optional_args_concrete_subclass_test: MissingCompileTimeError # Issue #30568
+abstract_override_adds_optional_args_concrete_test: MissingCompileTimeError # Issue #30568
+abstract_override_adds_optional_args_supercall_test: MissingCompileTimeError # Issue #30568
async_star_cancel_while_paused_test: RuntimeError # Issue 29920; Uncaught Expect.listEquals(list length, expected: <4>, actual: <3>) fails: Next element <*3>
async_star_pause_test: RuntimeError # Uncaught Expect.listEquals(at index 2, expected: <0+>, actual: <0!>) fails
async_star_test/02: RuntimeError
asyncstar_throw_in_catch_test: Skip # Times out. Issue 29920
bit_operations_test: RuntimeError # No bigints on web.; Expect.equals(expected: <-25>, actual: <4294967271>) fails.
+bit_operations_test/01: MissingCompileTimeError
+bit_operations_test/02: MissingCompileTimeError
branch_canonicalization_test: RuntimeError # Issue 29920; Expect.equals(expected: <0>, actual: <1>) fails.
+built_in_identifier_prefix_test: CompileTimeError
call_closurization_test: RuntimeError # Issue 29920; TypeError: Cannot read property '0' of undefined
call_test: RuntimeError # Expect.throws(NoSuchMethodError) fails: Did not throw
canonical_const2_test: RuntimeError # Ints and doubles are unified.; Expect.isFalse(true) fails.
+closure_call_wrong_argument_count_negative_test: Fail
compile_time_constant_d_test: RuntimeError # Issue 30876; Expect.isTrue(false) fails.
compile_time_constant_e_test: RuntimeError # Issue 30876; Expect.identical(expected: <A 3 499 99 100>, actual: <A 3 499 99 100>) fails.
+config_import_corelib_test: CompileTimeError
config_import_test: RuntimeError # Expect.equals(expected: <b>, actual: <a>) fails.
const_list_test: RuntimeError # Expect.equals(expected: <false>, actual: <true>) fails.
const_map4_test: RuntimeError # Expect.equals(expected: <true>, actual: <false>) fails.
@@ -797,6 +800,7 @@
exception_test: RuntimeError # DDC doesn't implement NullThrownError?; Expect.isTrue(false) fails.
expect_test: RuntimeError # Issue 29920; Expect.identical did not fail
f_bounded_quantification3_test: RuntimeError # Issue 29920; Uncaught Error: type arguments should not be null: (F1, F2) => {
+field3_test/01: MissingCompileTimeError
field_increment_bailout_test: RuntimeError # Issue 29920; UnimplementedError: JsInstanceMirror.delegate unimplemented
field_initialization_order_test/none: RuntimeError # Expect.equals(expected: <b.a.ai.bi.>, actual: <b.bi.a.ai.>) fails.
flatten_test/05: MissingRuntimeError # Issue 29920
@@ -806,13 +810,19 @@
for_variable_capture_test: RuntimeError # Issue 29920; Expect.equals(expected: <1>, actual: <0>) fails.
function_subtype_inline2_test: RuntimeError # Expect.fail('Missing type error: 'new C.c1(m2)'.')
function_type_alias6_test/none: RuntimeError # Expect.isTrue(false) fails.
+generic_function_type_as_type_argument_test/01: MissingCompileTimeError # Issue 29920
+generic_function_type_as_type_argument_test/02: MissingCompileTimeError # Issue 29920
generic_instanceof2_test: RuntimeError # Issue 29920; ReferenceError: FooOfK$String is not defined
generic_is_check_test: RuntimeError # Issue 29920; Expect.isTrue(false) fails.
+generic_methods_overriding_test/01: MissingCompileTimeError # Issue 29920
+generic_tearoff_test: CompileTimeError
identical_closure2_test: RuntimeError # Issue 29920; Expect.isFalse(true) fails.
infinite_switch_label_test: RuntimeError # Issue 29920; NoSuchMethodError: method not found: '<Unexpected Null Value>'
infinity_test: RuntimeError # Issue 29920; Expect.isFalse(true) fails.
instance_creation_in_function_annotation_test: RuntimeError # Issue 29920; UnimplementedError: JsClosureMirror.function unimplemented
+int64_literal_test/*: Skip # This is testing Dart 2.0 int64 semantics.
integer_division_by_zero_test: RuntimeError # Issue 29920; Expect.throws: Unexpected 'Unsupported operation: Infinity'
+internal_library_test/02: Crash
invocation_mirror2_test: RuntimeError # UnimplementedError: JsInstanceMirror.delegate unimplemented
invocation_mirror_empty_arguments_test: RuntimeError # Expect.throws(UnsupportedError) fails: Did not throw
invocation_mirror_invoke_on2_test: RuntimeError # UnimplementedError: JsInstanceMirror.delegate unimplemented
@@ -832,8 +842,13 @@
local_function3_test/none: RuntimeError # Expect.equals(expected: <true>, actual: <false>) fails.
local_function_test/none: RuntimeError # Expect.equals(expected: <true>, actual: <false>) fails.
many_overridden_no_such_method_test: RuntimeError # UnimplementedError: JsInstanceMirror.delegate unimplemented; UnimplementedError: JsInstanceMirror.delegate unimplemented
+method_override7_test/03: MissingCompileTimeError # Issue 30514
mint_arithmetic_test: RuntimeError # Issue 29920; Expect.equals(expected: <4294967297>, actual: <1>) fails.
modulo_test: RuntimeError # Ints and doubles are unified.; Expect.throws fails: Did not throw
+multiline_newline_test/04: MissingCompileTimeError
+multiline_newline_test/04r: MissingCompileTimeError
+multiline_newline_test/05: MissingCompileTimeError
+multiline_newline_test/05r: MissingCompileTimeError
named_parameter_clash_test: RuntimeError # Issue 29920; Expect.throws(NoSuchMethodError) fails: Did not throw
named_parameters_default_eq_test/none: RuntimeError # Expect.isTrue(false) fails.
nan_identical_test: RuntimeError # Issue 29920; Unsupported operation: Uint64 accessor not supported by dart2js.
@@ -844,41 +859,6 @@
number_identity2_test: RuntimeError # Issue 29920; Expect.isTrue(false) fails.
numbers_test: RuntimeError # Issue 29920; Expect.equals(expected: <false>, actual: <true>) fails.
overridden_no_such_method_test: RuntimeError # UnimplementedError: JsInstanceMirror.delegate unimplemented; UnimplementedError: JsInstanceMirror.delegate unimplemented
-private3_test: RuntimeError # Type 'PrivateSymbol' is not a subtype of type 'Symbol' in strong mode
-regress_16640_test: RuntimeError # Issue 29920; Uncaught Error: type arguments should not be null: E => {
-regress_22443_test: RuntimeError # Uncaught Expect.isTrue(false) fails.
-stack_overflow_stacktrace_test: RuntimeError # Issue 29920; RangeError: Maximum call stack size exceeded
-stack_overflow_test: RuntimeError # Issue 29920; RangeError: Maximum call stack size exceeded
-stacktrace_demangle_ctors_test: RuntimeError # Issue 31089; Expect.isTrue(false) fails.
-stacktrace_test: RuntimeError # Issue 29920; Expect.isTrue(false) fails.
-string_interpolation_and_buffer_test: RuntimeError # NoSuchMethodError: method not found: '<Unexpected Null Value>'
-string_literals_test: RuntimeError # Expect.equals(expected: <\x00\x0A\x0D\x7F\xFF\u{FFFF}\u{D800}\u{DC00}\u{DBFF}\u{DFFF}>, actual: <\x00\x0A\x0D\x7F\xFF\u{FFFF}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}>) fails.
-super_test: RuntimeError # Expect.equals(expected: <0>, actual: <2>) fails.
-switch_label2_test: RuntimeError # Issue 29920; UnimplementedError: node <ShadowContinueSwitchStatement> see https://github.com/dart-lang/sdk/issues/29352 `continue #L1;
-switch_label_test: RuntimeError # Issue 29920; UnimplementedError: node <ShadowContinueSwitchStatement> see https://github.com/dart-lang/sdk/issues/29352 `continue #L1;
-switch_try_catch_test: RuntimeError # Issue 29920; Expect.throws: Unexpected 'UnimplementedError: node <ShadowContinueSwitchStatement> see https://github.com/dart-lang/sdk/issues/29352 `continue #L1;
-truncdiv_test: RuntimeError # Issue 29920; Expect.throws fails: Did not throw
-
-[ $compiler == dartdevc || $compiler == dartdevk ]
-abstract_override_adds_optional_args_concrete_subclass_test: MissingCompileTimeError # Issue #30568
-abstract_override_adds_optional_args_concrete_test: MissingCompileTimeError # Issue #30568
-abstract_override_adds_optional_args_supercall_test: MissingCompileTimeError # Issue #30568
-bit_operations_test/01: MissingCompileTimeError
-bit_operations_test/02: MissingCompileTimeError
-built_in_identifier_prefix_test: CompileTimeError
-config_import_corelib_test: CompileTimeError
-field3_test/01: MissingCompileTimeError
-generic_function_type_as_type_argument_test/01: MissingCompileTimeError # Issue 29920
-generic_function_type_as_type_argument_test/02: MissingCompileTimeError # Issue 29920
-generic_methods_overriding_test/01: MissingCompileTimeError # Issue 29920
-generic_tearoff_test: CompileTimeError
-int64_literal_test/*: Skip # This is testing Dart 2.0 int64 semantics.
-internal_library_test/02: Crash
-method_override7_test/03: MissingCompileTimeError # Issue 30514
-multiline_newline_test/04: MissingCompileTimeError
-multiline_newline_test/04r: MissingCompileTimeError
-multiline_newline_test/05: MissingCompileTimeError
-multiline_newline_test/05r: MissingCompileTimeError
override_field_test/03: MissingCompileTimeError
override_inheritance_abstract_test/02: MissingCompileTimeError
override_inheritance_abstract_test/03: MissingCompileTimeError
@@ -901,10 +881,20 @@
override_inheritance_abstract_test/26: MissingCompileTimeError
override_inheritance_no_such_method_test/13: MissingCompileTimeError
parser_quirks_test: CompileTimeError
+private3_test: RuntimeError # Type 'PrivateSymbol' is not a subtype of type 'Symbol' in strong mode
+regress_16640_test: RuntimeError # Issue 29920; Uncaught Error: type arguments should not be null: E => {
+regress_22443_test: RuntimeError # Uncaught Expect.isTrue(false) fails.
regress_27617_test/1: MissingCompileTimeError
+stack_overflow_stacktrace_test: RuntimeError # Issue 29920; RangeError: Maximum call stack size exceeded
+stack_overflow_test: RuntimeError # Issue 29920; RangeError: Maximum call stack size exceeded
+stacktrace_demangle_ctors_test: RuntimeError # Issue 31089; Expect.isTrue(false) fails.
+stacktrace_test: RuntimeError # Issue 29920; Expect.isTrue(false) fails.
+string_interpolation_and_buffer_test: RuntimeError # NoSuchMethodError: method not found: '<Unexpected Null Value>'
+string_literals_test: RuntimeError # Expect.equals(expected: <\x00\x0A\x0D\x7F\xFF\u{FFFF}\u{D800}\u{DC00}\u{DBFF}\u{DFFF}>, actual: <\x00\x0A\x0D\x7F\xFF\u{FFFF}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}\u{FFFD}>) fails.
+super_test: RuntimeError # Expect.equals(expected: <0>, actual: <2>) fails.
+switch_label2_test: RuntimeError # Issue 29920; UnimplementedError: node <ShadowContinueSwitchStatement> see https://github.com/dart-lang/sdk/issues/29352 `continue #L1;
+switch_label_test: RuntimeError # Issue 29920; UnimplementedError: node <ShadowContinueSwitchStatement> see https://github.com/dart-lang/sdk/issues/29352 `continue #L1;
+switch_try_catch_test: RuntimeError # Issue 29920; Expect.throws: Unexpected 'UnimplementedError: node <ShadowContinueSwitchStatement> see https://github.com/dart-lang/sdk/issues/29352 `continue #L1;
+truncdiv_test: RuntimeError # Issue 29920; Expect.throws fails: Did not throw
vm/*: SkipByDesign # VM only tests.; VM only tests.
-[ $compiler == dartdevk || $compiler == dartdevc && $runtime == none ]
-instantiate_type_variable_test/01: CompileTimeError
-setter_no_getter_call_test/01: CompileTimeError
-
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index 84243f6..ab0002a 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -122,7 +122,6 @@
implicit_creation/implicit_const_context_prefix_constructor_named_test: CompileTimeError
implicit_creation/implicit_const_context_prefix_constructor_test: CompileTimeError
implicit_creation/implicit_new_constructor_generic_named_test: CompileTimeError
-implicit_creation/implicit_new_constructor_generic_test: CompileTimeError
implicit_creation/implicit_new_or_const_generic_test: CompileTimeError
implicit_creation/implicit_new_prefix_constructor_generic_named_test: CompileTimeError
implicit_this_test/01: MissingCompileTimeError
@@ -839,6 +838,7 @@
assertion_initializer_const_error2_test/cc01: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc02: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc03: MissingCompileTimeError # Not reporting failed assert() at compile time.
+assertion_initializer_const_error2_test/cc04: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc05: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc06: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc07: MissingCompileTimeError # Not reporting failed assert() at compile time.
@@ -1314,7 +1314,6 @@
compile_time_constant_k_test/03: MissingCompileTimeError
compile_time_constant_static2_test/04: MissingCompileTimeError
compile_time_constant_static3_test/04: MissingCompileTimeError
-generic_function_bounds_test: CompileTimeError
initializing_formal_type_annotation_test/01: MissingCompileTimeError
initializing_formal_type_annotation_test/02: MissingCompileTimeError
issue18628_2_test/01: MissingCompileTimeError
@@ -2081,7 +2080,6 @@
type_variable_static_context_test: MissingCompileTimeError
typed_selector2_test: MissingCompileTimeError
unbound_getter_test: MissingCompileTimeError
-unhandled_exception_negative_test: Fail
unresolved_default_constructor_test/01: MissingCompileTimeError
unresolved_in_factory_test: MissingCompileTimeError
unresolved_top_level_method_test: MissingCompileTimeError
diff --git a/tests/language_2/language_2_spec_parser.status b/tests/language_2/language_2_spec_parser.status
index 55eb1d2..9976a28 100644
--- a/tests/language_2/language_2_spec_parser.status
+++ b/tests/language_2/language_2_spec_parser.status
@@ -90,8 +90,6 @@
switch1_negative_test: Fail # Negative, `default` clause not last.
test_negative_test: Fail # Negative, uses non-terminated string literal.
unary_plus_negative_test: Fail # Negative, uses non-existing unary plus.
-unhandled_exception_negative_test: Fail # Negative, defaults required parameter.
-unhandled_exception_negative_test: Skip # Negative, not syntax.
vm/debug_break_enabled_vm_test/01: Fail # Uses debug break.
vm/debug_break_enabled_vm_test/none: Fail # Uses debug break.
void_type_function_types_test: Skip # Not yet supported.
diff --git a/tests/language_2/language_2_vm.status b/tests/language_2/language_2_vm.status
index 219b1d4..9d8d97d 100644
--- a/tests/language_2/language_2_vm.status
+++ b/tests/language_2/language_2_vm.status
@@ -7,6 +7,7 @@
assertion_initializer_const_error2_test/cc01: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc02: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc03: MissingCompileTimeError # Not reporting failed assert() at compile time.
+assertion_initializer_const_error2_test/cc04: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc05: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc06: MissingCompileTimeError # Not reporting failed assert() at compile time.
assertion_initializer_const_error2_test/cc07: MissingCompileTimeError # Not reporting failed assert() at compile time.
diff --git a/tests/language_2/unhandled_exception_negative_test.dart b/tests/language_2/unhandled_exception_negative_test.dart
deleted file mode 100644
index 914505a..0000000
--- a/tests/language_2/unhandled_exception_negative_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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.
-// Dart test program for testing unhandled exceptions.
-
-class MyException {
- const MyException(String message) : message_ = message;
- String getMessage() { return message_; }
- final String message_;
-}
-
-class Helper {
- static int f1(int i) {
- int j;
- j = i + 200;
- j = j + 300;
- throw new MyException("Unhandled Exception");
- return i;
- }
-}
-
-class UnhandledExceptionNegativeTest {
- static testMain() {
- Helper.f1(1);
- }
-}
-
-main() {
- UnhandledExceptionNegativeTest.testMain();
-}
diff --git a/tests/lib/analyzer/analyze_library.status b/tests/lib/analyzer/analyze_library.status
index b3b42a8..0dd8e28 100644
--- a/tests/lib/analyzer/analyze_library.status
+++ b/tests/lib/analyzer/analyze_library.status
@@ -3,35 +3,4 @@
# BSD-style license that can be found in the LICENSE file.
[ $compiler == dart2analyzer ]
-lib/_blink/dartium/_blink_dartium: Skip # TODO: Remove Dartium
-lib/_chrome/dart2js/chrome_dart2js: CompileTimeError # Issue 16522
-lib/html/dart2js/html_dart2js: CompileTimeError # Issue 16522
-lib/html/dartium/html_dartium: Skip # TODO: Remove Dartium
-lib/html/html_common/html_common: StaticWarning # Issue 21647
-lib/html/html_common/html_common_dart2js: CompileTimeError # Issue 16522
-lib/indexed_db/dart2js/indexed_db_dart2js: CompileTimeError # Issue 16522
-lib/indexed_db/dartium/indexed_db_dartium: Skip # TODO: Remove Dartium
-lib/js/dart2js/js_dart2js: CompileTimeError # Issue 16522
-lib/js/dartium/js_dartium: Skip # TODO: Remove Dartium
-lib/js_util/dartium/js_util_dartium: Skip # TODO: Remove Dartium
-lib/svg/dart2js/svg_dart2js: CompileTimeError # Issue 16522
-lib/svg/dartium/svg_dartium: Skip # TODO: Remove Dartium
-lib/typed_data/dart2js/native_typed_data_dart2js: CompileTimeError # Issue 16522
-lib/typed_data/dart2js/typed_data_dart2js: CompileTimeError # Issue 16522
-lib/web_audio/dart2js/web_audio_dart2js: CompileTimeError # Issue 16522
-lib/web_audio/dartium/web_audio_dartium: Skip # TODO: Remove Dartium
-lib/web_gl/dart2js/web_gl_dart2js: CompileTimeError # Issue 16522
-lib/web_gl/dartium/web_gl_dartium: Skip # TODO: Remove Dartium
-lib/web_sql/dart2js/web_sql_dart2js: CompileTimeError # Issue 16522
-lib/web_sql/dartium/web_sql_dartium: Skip # TODO: Remove Dartium
-
-[ $compiler == dart2analyzer && $strong ]
-*: Skip # Issue 28649
-
-[ $compiler == dart2analyzer && $use_sdk ]
-lib/*: Skip # Issue 28620
-lib/analysis_server: Skip # Issue 28620
-lib/analyzer: Skip # Issue 28620
-lib/dev_compiler: Skip # Issue 28620
-lib/front_end: Skip # Issue 28620
-
+*: Skip
diff --git a/tests/lib/lib.status b/tests/lib/lib.status
index 689a0ba..9a42a66 100644
--- a/tests/lib/lib.status
+++ b/tests/lib/lib.status
@@ -12,22 +12,7 @@
mirrors/*: Skip # Issue 27929: Triage
[ $compiler == dart2analyzer ]
-async/stream_event_transformed_test: StaticWarning
-convert/base64_test/01: CompileTimeError # int64
-convert/utf82_test: CompileTimeError # int64
-math/double_pow_test: CompileTimeError # int64
-mirrors/generic_f_bounded_mixin_application_test: StaticWarning # Test Issue
-mirrors/immutable_collections_test: StaticWarning, OK # Expect failure for any type of Iterable.
-mirrors/inference_and_no_such_method_test: StaticWarning, OK # Expect to trigger noSuchMethod.
-mirrors/mirrors_nsm_mismatch_test: StaticWarning, OK # Expect to trigger noSuchMethod.
-mirrors/mirrors_nsm_test: StaticWarning, OK # Expect to trigger noSuchMethod.
-mirrors/redirecting_factory_test/01: StaticWarning # test issue X, The return type 'Class<T2, T1>' of the redirected constructor is not assignable to 'Class<T1, T2>'
-mirrors/redirecting_factory_test/none: StaticWarning # test issue X, The return type 'Class<T2, T1>' of the redirected constructor is not assignable to 'Class<T1, T2>
-mirrors/removed_api_test: StaticWarning, OK # Deliberately refers to undeclared members.
-mirrors/repeated_private_anon_mixin_app_test: StaticWarning, OK # Intentional library name conflict.
-profiler/metrics_num_test: Fail # Issue 20309
-profiler/metrics_test: Fail # Issue 20309
-typed_data/int32x4_bigint_test: CompileTimeError # int64
+*: Skip
[ $compiler != dart2analyzer ]
async/stream_controller_async_test: StaticWarning
@@ -233,12 +218,6 @@
typed_data/setRange_3_test: Fail # Safari doesn't fully implement spec for TypedArray.set
typed_data/setRange_4_test: Fail # Safari doesn't fully implement spec for TypedArray.set
-[ $compiler == dart2analyzer && $checked ]
-mirrors/regress_16321_test/01: MissingCompileTimeError # Issue 16391
-
-[ $compiler == dart2analyzer && $strong ]
-*: Skip # Issue 28649
-
[ $compiler == dart2js && $mode == debug ]
mirrors/native_class_test: Pass, Slow
diff --git a/tests/lib_2/lib_2.status b/tests/lib_2/lib_2.status
index 8dafc68..4191543 100644
--- a/tests/lib_2/lib_2.status
+++ b/tests/lib_2/lib_2.status
@@ -75,6 +75,7 @@
html/xhr_test/json: Fail # IE10 returns string, not JSON object
[ $runtime == safari ]
+async/periodic_timer3_test: Pass, RuntimeError # Flaky. Issue 32094
convert/json_test: Fail # https://bugs.webkit.org/show_bug.cgi?id=134920
html/audiobuffersourcenode_test/functional: RuntimeError
html/canvasrenderingcontext2d_test/drawImage_video_element: Fail # Safari does not support drawImage w/ video element
diff --git a/tests/standalone/standalone.status b/tests/standalone/standalone.status
index f32ce9e..3f6fc2e 100644
--- a/tests/standalone/standalone.status
+++ b/tests/standalone/standalone.status
@@ -10,11 +10,7 @@
io/raw_datagram_socket_test: SkipByDesign
[ $compiler == dart2analyzer ]
-io/directory_invalid_arguments_test: StaticWarning
-io/file_constructor_test: Fail # Issue 11518
-io/process_invalid_arguments_test: StaticWarning
-io/raw_secure_server_socket_argument_test: StaticWarning
-io/stdout_bad_argument_test: StaticWarning
+*: Skip
# Overriding these flags are not supported in product mode.
[ $mode == product ]
@@ -30,9 +26,6 @@
[ $builder_tag == swarming && $system == macos ]
io/*: Skip # Issue 30618
-[ $compiler == dart2analyzer && $strong ]
-*: Skip # Issue 28649
-
[ $compiler == dartk && $strong ]
*: SkipByDesign
diff --git a/tools/VERSION b/tools/VERSION
index 6752539..17fcce9 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 0
PATCH 0
-PRERELEASE 26
+PRERELEASE 27
PRERELEASE_PATCH 0
diff --git a/tools/infra/config/cq.cfg b/tools/infra/config/cq.cfg
index 6976275..728288d 100644
--- a/tools/infra/config/cq.cfg
+++ b/tools/infra/config/cq.cfg
@@ -29,7 +29,10 @@
builders { name: "dart2js-linux-chrome-try"}
builders { name: "ddc-linux-release-chrome-try"}
builders { name: "vm-linux-product-x64-try"}
- builders { name: "dart-sdk-windows-try"}
+ builders {
+ name: "dart-sdk-windows-try"
+ experiment_percentage: 100
+ }
builders { name: "vm-kernel-mac-release-x64-try"}
builders { name: "benchmark-linux-try"}
}
diff --git a/tools/testing/dart/configuration.dart b/tools/testing/dart/configuration.dart
index 1a1c66d..0791d9d 100644
--- a/tools/testing/dart/configuration.dart
+++ b/tools/testing/dart/configuration.dart
@@ -646,6 +646,7 @@
case Compiler.dartkp:
return Runtime.dartPrecompiled;
case Compiler.specParser:
+ case Compiler.fasta:
return Runtime.none;
case Compiler.none:
return Runtime.vm;
@@ -654,6 +655,20 @@
throw "unreachable";
}
+ Mode get defaultMode {
+ switch (this) {
+ case Compiler.dart2analyzer:
+ case Compiler.dart2js:
+ case Compiler.dartdevc:
+ case Compiler.dartdevk:
+ case Compiler.fasta:
+ return Mode.release;
+
+ default:
+ return Mode.debug;
+ }
+ }
+
String toString() => "Compiler($name)";
}
diff --git a/tools/testing/dart/options.dart b/tools/testing/dart/options.dart
index 451d8d7..03fe413 100644
--- a/tools/testing/dart/options.dart
+++ b/tools/testing/dart/options.dart
@@ -86,9 +86,7 @@
class OptionsParser {
static final List<_Option> _options = [
new _Option('mode', 'Mode in which to run the tests.',
- abbr: 'm',
- values: ['all']..addAll(Mode.names),
- defaultsTo: Mode.debug.name),
+ abbr: 'm', values: ['all']..addAll(Mode.names)),
new _Option(
'compiler',
'''How the Dart code should be compiled or statically processed.
@@ -613,7 +611,7 @@
// Expand compilers.
for (var compiler in compilers) {
// Expand modes.
- var modes = data["mode"] as String;
+ String modes = data["mode"] ?? compiler.defaultMode.name;
if (modes == "all") modes = "debug,release,product";
for (var modeName in modes.split(",")) {
var mode = Mode.find(modeName);