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

Side by Side Diff: tests/compiler/dart2js/generic_method_type_usage_test.dart

Issue 2541473002: Handle 'dynamic' as type argument in generic calls. (Closed)
Patch Set: Created 4 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 unified diff | Download patch
« no previous file with comments | « pkg/compiler/lib/src/parser/parser.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /// Dart test verifying that method type variables are considered to denote 5 /// Dart test verifying that method type variables are considered to denote
6 /// the type `dynamic`. 6 /// the type `dynamic`.
7 /// 7 ///
8 /// NB: This test is intended to succeed with a `dart2js` with the option 8 /// NB: This test is intended to succeed with a `dart2js` with the option
9 /// '--generic-method-syntax', but it should fail with a full implementation 9 /// '--generic-method-syntax', but it should fail with a full implementation
10 /// of generic method support, and it should fail with every other tool than 10 /// of generic method support, and it should fail with every other tool than
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 new C().aMethod<Set>(); 62 new C().aMethod<Set>();
63 } 63 }
64 ''', 64 ''',
65 'cannot_new_function_type_variable.dart': ''' 65 'cannot_new_function_type_variable.dart': '''
66 X aFunction<X>() => new X(42); 66 X aFunction<X>() => new X(42);
67 67
68 main() { 68 main() {
69 aFunction<Set>(); 69 aFunction<Set>();
70 } 70 }
71 ''', 71 ''',
72
73 'dynamic_as_type_argument.dart': '''
74 main() {
75 method<dynamic>();
76 }
77 method<T>() {}
78 ''',
72 }; 79 };
73 80
74 Future runTest(Uri main, {MessageKind warning, MessageKind info}) async { 81 Future runTest(Uri main, {MessageKind warning, MessageKind info}) async {
75 print("----\nentry-point: $main\n"); 82 print("----\nentry-point: $main\n");
76 83
77 DiagnosticCollector diagnostics = new DiagnosticCollector(); 84 DiagnosticCollector diagnostics = new DiagnosticCollector();
78 OutputCollector output = new OutputCollector(); 85 OutputCollector output = new OutputCollector();
79 await runCompiler( 86 await runCompiler(
80 entryPoint: main, 87 entryPoint: main,
81 options: const <String>["--generic-method-syntax"], 88 options: const <String>["--generic-method-syntax"],
82 memorySourceFiles: MEMORY_SOURCE_FILES, 89 memorySourceFiles: MEMORY_SOURCE_FILES,
83 diagnosticHandler: diagnostics, 90 diagnosticHandler: diagnostics,
84 outputProvider: output); 91 outputProvider: output);
85 92
86 Expect.isFalse(output.hasExtraOutput); 93 Expect.isFalse(output.hasExtraOutput);
87 Expect.equals(0, diagnostics.errors.length); 94 Expect.equals(0, diagnostics.errors.length, "Unexpected errors.");
88 Expect.equals(warning != null ? 1 : 0, diagnostics.warnings.length); 95 Expect.equals(warning != null ? 1 : 0, diagnostics.warnings.length);
89 if (warning != null) { 96 if (warning != null) {
90 Expect.equals(warning, diagnostics.warnings.first.message.kind); 97 Expect.equals(warning, diagnostics.warnings.first.message.kind);
91 } 98 }
92 Expect.equals(info != null ? 1 : 0, diagnostics.infos.length); 99 Expect.equals(info != null ? 1 : 0, diagnostics.infos.length);
93 if (info != null) { 100 if (info != null) {
94 Expect.equals(info, diagnostics.infos.first.message.kind); 101 Expect.equals(info, diagnostics.infos.first.message.kind);
95 } 102 }
96 Expect.equals(0, diagnostics.hints.length); 103 Expect.equals(0, diagnostics.hints.length);
97 } 104 }
98 105
99 void main() { 106 void main() {
100 asyncTest(() async { 107 asyncTest(() async {
101 await runTest(Uri.parse('memory:type_variable_is_dynamic.dart')); 108 await runTest(Uri.parse('memory:type_variable_is_dynamic.dart'));
102 109
103 await runTest(Uri.parse('memory:cannot_new_method_type_variable.dart'), 110 await runTest(Uri.parse('memory:cannot_new_method_type_variable.dart'),
104 warning: MessageKind.CANNOT_INSTANTIATE_TYPE_VARIABLE); 111 warning: MessageKind.CANNOT_INSTANTIATE_TYPE_VARIABLE);
105 112
106 await runTest(Uri.parse('memory:cannot_new_function_type_variable.dart'), 113 await runTest(Uri.parse('memory:cannot_new_function_type_variable.dart'),
107 warning: MessageKind.CANNOT_INSTANTIATE_TYPE_VARIABLE); 114 warning: MessageKind.CANNOT_INSTANTIATE_TYPE_VARIABLE);
115
116 await runTest(Uri.parse('memory:dynamic_as_type_argument.dart'));
108 }); 117 });
109 } 118 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/parser/parser.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698