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

Side by Side Diff: tests/compiler/dart2js/jsinterop/world_test.dart

Issue 2852603003: Move JsInteropAnalysis.onQueueClosed to AnnotationProcessor.processJsInteropAnnotation (Closed)
Patch Set: Register anonymous classes correctly + add test Created 3 years, 7 months 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/ssa/builder.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 library jsinterop.world_test; 5 library jsinterop.world_test;
6 6
7 import 'package:expect/expect.dart'; 7 import 'package:expect/expect.dart';
8 import 'package:async_helper/async_helper.dart'; 8 import 'package:async_helper/async_helper.dart';
9 import 'package:compiler/src/common.dart'; 9 import 'package:compiler/src/common.dart';
10 import 'package:compiler/src/elements/elements.dart' 10 import 'package:compiler/src/elements/elements.dart'
(...skipping 16 matching lines...) Expand all
27 List<String> indirectlyInstantiated: const <String>[]}) async { 27 List<String> indirectlyInstantiated: const <String>[]}) async {
28 TypeEnvironment env = await TypeEnvironment.create( 28 TypeEnvironment env = await TypeEnvironment.create(
29 r""" 29 r"""
30 @JS() 30 @JS()
31 class A { 31 class A {
32 get foo; 32 get foo;
33 33
34 external A(var foo); 34 external A(var foo);
35 } 35 }
36 36
37 @JS() 37 @JS('BClass')
38 class B { 38 class B {
39 get foo; 39 get foo;
40 40
41 external B(var foo); 41 external B(var foo);
42 } 42 }
43 43
44 @JS() 44 @JS()
45 @anonymous 45 @anonymous
46 class C { 46 class C {
47 final foo; 47 final foo;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 Expect.equals(Interceptor.superclass, Object_); 109 Expect.equals(Interceptor.superclass, Object_);
110 Expect.equals(JavaScriptObject.superclass, Interceptor); 110 Expect.equals(JavaScriptObject.superclass, Interceptor);
111 111
112 Expect.equals(A.superclass, JavaScriptObject); 112 Expect.equals(A.superclass, JavaScriptObject);
113 Expect.equals(B.superclass, JavaScriptObject); 113 Expect.equals(B.superclass, JavaScriptObject);
114 Expect.equals(C.superclass, JavaScriptObject); 114 Expect.equals(C.superclass, JavaScriptObject);
115 Expect.equals(D.superclass, JavaScriptObject); 115 Expect.equals(D.superclass, JavaScriptObject);
116 Expect.equals(E.superclass, Object_); 116 Expect.equals(E.superclass, Object_);
117 Expect.equals(F.superclass, Object_); 117 Expect.equals(F.superclass, Object_);
118 118
119 Expect.isFalse(backend.nativeData.isJsInteropClass(Object_));
120 Expect.isTrue(backend.nativeData.isJsInteropClass(A));
121 Expect.isTrue(backend.nativeData.isJsInteropClass(B));
122 Expect.isTrue(backend.nativeData.isJsInteropClass(C));
123 Expect.isTrue(backend.nativeData.isJsInteropClass(D));
124 Expect.isFalse(backend.nativeData.isJsInteropClass(E));
125 Expect.isFalse(backend.nativeData.isJsInteropClass(F));
126
127 Expect.isFalse(backend.nativeData.isAnonymousJsInteropClass(Object_));
128 Expect.isFalse(backend.nativeData.isAnonymousJsInteropClass(A));
129 Expect.isFalse(backend.nativeData.isAnonymousJsInteropClass(B));
130 Expect.isTrue(backend.nativeData.isAnonymousJsInteropClass(C));
131 Expect.isTrue(backend.nativeData.isAnonymousJsInteropClass(D));
132 Expect.isFalse(backend.nativeData.isAnonymousJsInteropClass(E));
133 Expect.isFalse(backend.nativeData.isAnonymousJsInteropClass(F));
134
135 Expect.equals('', backend.nativeData.getJsInteropClassName(A));
136 Expect.equals('BClass', backend.nativeData.getJsInteropClassName(B));
137 Expect.equals('', backend.nativeData.getJsInteropClassName(C));
138 Expect.equals('', backend.nativeData.getJsInteropClassName(D));
139
119 for (String name in classEnvironment.keys) { 140 for (String name in classEnvironment.keys) {
120 ClassElement cls = classEnvironment[name]; 141 ClassElement cls = classEnvironment[name];
121 bool isInstantiated = false; 142 bool isInstantiated = false;
122 if (directlyInstantiated.contains(name)) { 143 if (directlyInstantiated.contains(name)) {
123 isInstantiated = true; 144 isInstantiated = true;
124 Expect.isTrue( 145 Expect.isTrue(
125 world.isDirectlyInstantiated(cls), 146 world.isDirectlyInstantiated(cls),
126 "Expected $name to be directly instantiated in `${mainSource}`:" 147 "Expected $name to be directly instantiated in `${mainSource}`:"
127 "\n${world.dump(cls)}"); 148 "\n${world.dump(cls)}");
128 } 149 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 199
179 await test('main() => newE();', directlyInstantiated: ['E']); 200 await test('main() => newE();', directlyInstantiated: ['E']);
180 201
181 await test('main() => newF();', directlyInstantiated: ['F']); 202 await test('main() => newF();', directlyInstantiated: ['F']);
182 203
183 await test('main() => [newD(), newE()];', 204 await test('main() => [newD(), newE()];',
184 directlyInstantiated: ['E'], 205 directlyInstantiated: ['E'],
185 abstractlyInstantiated: ['A', 'B', 'C', 'D'], 206 abstractlyInstantiated: ['A', 'B', 'C', 'D'],
186 indirectlyInstantiated: ['Object', 'Interceptor', 'JavaScriptObject']); 207 indirectlyInstantiated: ['Object', 'Interceptor', 'JavaScriptObject']);
187 } 208 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/ssa/builder.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698