Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Unified Diff: tests/compiler/dart2js/analyze_all_test.dart

Issue 1525423002: Handle malformed elements in onElementResolved. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/js_backend/backend.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/compiler/dart2js/analyze_all_test.dart
diff --git a/tests/compiler/dart2js/analyze_all_test.dart b/tests/compiler/dart2js/analyze_all_test.dart
index 2bb4808ee60e3ba4f0ae3c25474233fc8a0cdc43..7039f93229a8362da40809e642d9db7e99e945fa 100644
--- a/tests/compiler/dart2js/analyze_all_test.dart
+++ b/tests/compiler/dart2js/analyze_all_test.dart
@@ -2,9 +2,12 @@
// 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 "package:expect/expect.dart";
-import "compiler_helper.dart";
-import "package:async_helper/async_helper.dart";
+import 'dart:async';
+import 'package:async_helper/async_helper.dart';
+import 'package:compiler/src/commandline_options.dart';
+import 'package:compiler/src/diagnostics/messages.dart';
+import 'package:expect/expect.dart';
+import 'memory_compiler.dart';
const String SOURCE = """
class Foo {
@@ -27,32 +30,85 @@ main() {
}
""";
+Future<DiagnosticCollector> run(
+ String source,
+ {bool analyzeAll,
+ bool expectSuccess}) async {
+ DiagnosticCollector collector = new DiagnosticCollector();
+
+ List<String> options = [];
+ if (analyzeAll) {
+ options.add(Flags.analyzeAll);
+ } else {
+ options.add(Flags.analyzeOnly);
+ }
+ CompilationResult result = await runCompiler(
+ memorySourceFiles: {'main.dart': source},
+ diagnosticHandler: collector,
+ options: options);
+ Expect.equals(expectSuccess, result.isSuccess);
+ return collector;
+}
+
+test1() async {
+ DiagnosticCollector collector =
+ await run(SOURCE, analyzeAll: false, expectSuccess: true);
+ Expect.isTrue(collector.warnings.isEmpty,
+ 'Unexpected warnings: ${collector.warnings}');
+ Expect.isTrue(collector.errors.isEmpty,
+ 'Unexpected errors: ${collector.errors}');
+}
+
+test2() async {
+ DiagnosticCollector collector =
+ await run(SOURCE, analyzeAll: true, expectSuccess: false);
+
+ Expect.isTrue(collector.warnings.isEmpty,
+ 'unexpected warnings: ${collector.warnings}');
+ Expect.equals(2, collector.errors.length,
+ 'expected exactly two errors, but got ${collector.errors}');
+
+ CollectedMessage first = collector.errors.first;
+ Expect.equals(MessageKind.CONSTRUCTOR_IS_NOT_CONST, first.message.kind);
+ Expect.equals("Foo", SOURCE.substring(first.begin, first.end));
+
+ CollectedMessage second = collector.errors.elementAt(1);
+ Expect.equals(MessageKind.CONSTRUCTOR_IS_NOT_CONST, second.message.kind);
+ Expect.equals("Foo", SOURCE.substring(second.begin, second.end));
+}
+
+// This is a regression test, testing that we can handle annotations on
+// malformed elements. Depending on the order of analysis, annotations on such
+// elements might not be resolved which caused a crash when trying to detect
+// a `@NoInline()` annotation.
+test3() async {
+ String source = '''
+import 'package:expect/expect.dart';
+
+class A {
+ @NoInline
+ m() {
+ => print(0);
+ }
+}
+
+@NoInline()
+main() => new A().m();
+''';
+
+ DiagnosticCollector collector =
+ await run(source, analyzeAll: true, expectSuccess: false);
+
+ Expect.isTrue(collector.warnings.isEmpty,
+ 'unexpected warnings: ${collector.warnings}');
+ Expect.equals(1, collector.errors.length,
+ 'expected exactly one error, but got ${collector.errors}');
+}
+
main() {
- Uri uri = Uri.parse('test:code');
- var compiler1 = compilerFor(SOURCE, uri, analyzeAll: false);
- asyncTest(() => compiler1.run(uri).then((compilationSucceded) {
- DiagnosticCollector collector = compiler1.diagnosticCollector;
- Expect.isTrue(compilationSucceded);
- print(collector.warnings);
- Expect.isTrue(collector.warnings.isEmpty, 'unexpected warnings');
- Expect.isTrue(collector.errors.isEmpty, 'unexpected errors');
- }));
-
- var compiler2 = compilerFor(SOURCE, uri, analyzeAll: true);
- asyncTest(() => compiler2.run(uri).then((compilationSucceded) {
- DiagnosticCollector collector = compiler2.diagnosticCollector;
- Expect.isFalse(compilationSucceded);
- Expect.isTrue(collector.warnings.isEmpty,
- 'unexpected warnings: ${collector.warnings}');
- Expect.equals(2, collector.errors.length,
- 'expected exactly two errors, but got ${collector.errors}');
-
- CollectedMessage first = collector.errors.first;
- Expect.equals(MessageKind.CONSTRUCTOR_IS_NOT_CONST, first.message.kind);
- Expect.equals("Foo", SOURCE.substring(first.begin, first.end));
-
- CollectedMessage second = collector.errors.elementAt(1);
- Expect.equals(MessageKind.CONSTRUCTOR_IS_NOT_CONST, second.message.kind);
- Expect.equals("Foo", SOURCE.substring(second.begin, second.end));
- }));
+ asyncTest(() async {
+ await test1();
+ await test2();
+ await test3();
+ });
}
« no previous file with comments | « pkg/compiler/lib/src/js_backend/backend.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698