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

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

Issue 1286993004: Split resolution into several libraries. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 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
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:collection'; 6 import 'dart:collection';
7 7
8 import 'package:async_helper/async_helper.dart'; 8 import 'package:async_helper/async_helper.dart';
9 import 'package:expect/expect.dart'; 9 import 'package:expect/expect.dart';
10 import 'package:compiler/src/constants/expressions.dart'; 10 import 'package:compiler/src/constants/expressions.dart';
11 import 'package:compiler/src/dart_types.dart'; 11 import 'package:compiler/src/dart_types.dart';
12 import 'package:compiler/src/elements/modelx.dart'; 12 import 'package:compiler/src/elements/modelx.dart';
13 import 'package:compiler/src/resolution/resolution.dart'; 13 import 'package:compiler/src/resolution/constructors.dart';
14 import 'package:compiler/src/resolution/members.dart';
15 import 'package:compiler/src/resolution/registry.dart';
16 import 'package:compiler/src/resolution/resolution_result.dart';
17 import 'package:compiler/src/resolution/scope.dart';
18 import 'package:compiler/src/resolution/tree_elements.dart';
14 19
15 import 'compiler_helper.dart'; 20 import 'compiler_helper.dart';
16 import 'link_helper.dart'; 21 import 'link_helper.dart';
17 import 'parser_helper.dart'; 22 import 'parser_helper.dart';
18 23
19 Node buildIdentifier(String name) => new Identifier(scan(name)); 24 Node buildIdentifier(String name) => new Identifier(scan(name));
20 25
21 Node buildInitialization(String name) => 26 Node buildInitialization(String name) =>
22 parseBodyCode('$name = 1', 27 parseBodyCode('$name = 1',
23 (parser, tokens) => parser.parseOptionallyInitializedIdentifier(tokens)); 28 (parser, tokens) => parser.parseOptionallyInitializedIdentifier(tokens));
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 compiler.parseScript(script); 210 compiler.parseScript(script);
206 compiler.resolveStatement("B b;"); 211 compiler.resolveStatement("B b;");
207 212
208 ClassElement classB = compiler.mainApp.find("B"); 213 ClassElement classB = compiler.mainApp.find("B");
209 FunctionElement fooB = classB.lookupLocalMember("foo"); 214 FunctionElement fooB = classB.lookupLocalMember("foo");
210 ClassElement classA = compiler.mainApp.find("A"); 215 ClassElement classA = compiler.mainApp.find("A");
211 FunctionElement fooA = classA.lookupLocalMember("foo"); 216 FunctionElement fooA = classA.lookupLocalMember("foo");
212 217
213 ResolverVisitor visitor = 218 ResolverVisitor visitor =
214 new ResolverVisitor(compiler, fooB, 219 new ResolverVisitor(compiler, fooB,
215 new ResolutionRegistry.internal(compiler, 220 new ResolutionRegistry(compiler,
216 new CollectingTreeElements(fooB))); 221 new CollectingTreeElements(fooB)));
217 FunctionExpression node = (fooB as FunctionElementX).parseNode(compiler); 222 FunctionExpression node = (fooB as FunctionElementX).parseNode(compiler);
218 visitor.visit(node.body); 223 visitor.visit(node.body);
219 Map mapping = map(visitor); 224 Map mapping = map(visitor);
220 225
221 Send superCall = node.body.asReturn().expression; 226 Send superCall = node.body.asReturn().expression;
222 FunctionElement called = mapping[superCall]; 227 FunctionElement called = mapping[superCall];
223 Expect.isNotNull(called); 228 Expect.isNotNull(called);
224 Expect.equals(fooA, called); 229 Expect.equals(fooA, called);
225 }); 230 });
(...skipping 21 matching lines...) Expand all
247 252
248 Future testThis() { 253 Future testThis() {
249 return Future.wait([ 254 return Future.wait([
250 MockCompiler.create((MockCompiler compiler) { 255 MockCompiler.create((MockCompiler compiler) {
251 compiler.parseScript("class Foo { foo() { return this; } }"); 256 compiler.parseScript("class Foo { foo() { return this; } }");
252 compiler.resolveStatement("Foo foo;"); 257 compiler.resolveStatement("Foo foo;");
253 ClassElement fooElement = compiler.mainApp.find("Foo"); 258 ClassElement fooElement = compiler.mainApp.find("Foo");
254 FunctionElement funElement = fooElement.lookupLocalMember("foo"); 259 FunctionElement funElement = fooElement.lookupLocalMember("foo");
255 ResolverVisitor visitor = 260 ResolverVisitor visitor =
256 new ResolverVisitor(compiler, funElement, 261 new ResolverVisitor(compiler, funElement,
257 new ResolutionRegistry.internal(compiler, 262 new ResolutionRegistry(compiler,
258 new CollectingTreeElements(funElement))); 263 new CollectingTreeElements(funElement)));
259 FunctionExpression function = 264 FunctionExpression function =
260 (funElement as FunctionElementX).parseNode(compiler); 265 (funElement as FunctionElementX).parseNode(compiler);
261 visitor.visit(function.body); 266 visitor.visit(function.body);
262 Map mapping = map(visitor); 267 Map mapping = map(visitor);
263 List<Element> values = mapping.values.toList(); 268 List<Element> values = mapping.values.toList();
264 Expect.equals(0, mapping.length); 269 Expect.equals(0, mapping.length);
265 Expect.equals(0, compiler.warnings.length); 270 Expect.equals(0, compiler.warnings.length);
266 }), 271 }),
267 MockCompiler.create((MockCompiler compiler) { 272 MockCompiler.create((MockCompiler compiler) {
268 compiler.resolveStatement("main() { return this; }"); 273 compiler.resolveStatement("main() { return this; }");
269 Expect.equals(0, compiler.warnings.length); 274 Expect.equals(0, compiler.warnings.length);
270 Expect.equals(1, compiler.errors.length); 275 Expect.equals(1, compiler.errors.length);
271 Expect.equals(MessageKind.NO_INSTANCE_AVAILABLE, 276 Expect.equals(MessageKind.NO_INSTANCE_AVAILABLE,
272 compiler.errors[0].message.kind); 277 compiler.errors[0].message.kind);
273 }), 278 }),
274 MockCompiler.create((MockCompiler compiler) { 279 MockCompiler.create((MockCompiler compiler) {
275 compiler.parseScript("class Foo { static foo() { return this; } }"); 280 compiler.parseScript("class Foo { static foo() { return this; } }");
276 compiler.resolveStatement("Foo foo;"); 281 compiler.resolveStatement("Foo foo;");
277 ClassElement fooElement = compiler.mainApp.find("Foo"); 282 ClassElement fooElement = compiler.mainApp.find("Foo");
278 FunctionElement funElement = fooElement.lookupLocalMember("foo"); 283 FunctionElement funElement = fooElement.lookupLocalMember("foo");
279 ResolverVisitor visitor = new ResolverVisitor(compiler, funElement, 284 ResolverVisitor visitor = new ResolverVisitor(compiler, funElement,
280 new ResolutionRegistry.internal(compiler, 285 new ResolutionRegistry(compiler,
281 new CollectingTreeElements(funElement))); 286 new CollectingTreeElements(funElement)));
282 FunctionExpression function = 287 FunctionExpression function =
283 (funElement as FunctionElementX).parseNode(compiler); 288 (funElement as FunctionElementX).parseNode(compiler);
284 visitor.visit(function.body); 289 visitor.visit(function.body);
285 Expect.equals(0, compiler.warnings.length); 290 Expect.equals(0, compiler.warnings.length);
286 Expect.equals(1, compiler.errors.length); 291 Expect.equals(1, compiler.errors.length);
287 Expect.equals(MessageKind.NO_INSTANCE_AVAILABLE, 292 Expect.equals(MessageKind.NO_INSTANCE_AVAILABLE,
288 compiler.errors[0].message.kind); 293 compiler.errors[0].message.kind);
289 }), 294 }),
290 ]); 295 ]);
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 {'typeName': 'bar'}, false), 571 {'typeName': 'bar'}, false),
567 compiler.errors[0].message); 572 compiler.errors[0].message);
568 compiler.clearMessages(); 573 compiler.clearMessages();
569 574
570 // Add the abstract class to the world and make sure everything is setup 575 // Add the abstract class to the world and make sure everything is setup
571 // correctly. 576 // correctly.
572 compiler.parseScript("abstract class Bar {}"); 577 compiler.parseScript("abstract class Bar {}");
573 578
574 ResolverVisitor visitor = 579 ResolverVisitor visitor =
575 new ResolverVisitor(compiler, null, 580 new ResolverVisitor(compiler, null,
576 new ResolutionRegistry.internal(compiler, 581 new ResolutionRegistry(compiler,
577 new CollectingTreeElements(null))); 582 new CollectingTreeElements(null)));
578 compiler.resolveStatement("Foo bar;"); 583 compiler.resolveStatement("Foo bar;");
579 584
580 ClassElement fooElement = compiler.mainApp.find('Foo'); 585 ClassElement fooElement = compiler.mainApp.find('Foo');
581 ClassElement barElement = compiler.mainApp.find('Bar'); 586 ClassElement barElement = compiler.mainApp.find('Bar');
582 587
583 Expect.equals(null, barElement.supertype); 588 Expect.equals(null, barElement.supertype);
584 Expect.isTrue(barElement.interfaces.isEmpty); 589 Expect.isTrue(barElement.interfaces.isEmpty);
585 590
586 Expect.equals(barElement.computeType(compiler), 591 Expect.equals(barElement.computeType(compiler),
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 MockCompiler compiler = new MockCompiler.internal(coreSource: corelib); 688 MockCompiler compiler = new MockCompiler.internal(coreSource: corelib);
684 return compiler.init().then((_) { 689 return compiler.init().then((_) {
685 compiler.parseScript(script); 690 compiler.parseScript(script);
686 compiler.resolveStatement(statement); 691 compiler.resolveStatement(statement);
687 ClassElement classElement = compiler.mainApp.find(className); 692 ClassElement classElement = compiler.mainApp.find(className);
688 Element element; 693 Element element;
689 element = classElement.lookupConstructor(constructor); 694 element = classElement.lookupConstructor(constructor);
690 FunctionExpression tree = (element as FunctionElement).node; 695 FunctionExpression tree = (element as FunctionElement).node;
691 ResolverVisitor visitor = 696 ResolverVisitor visitor =
692 new ResolverVisitor(compiler, element, 697 new ResolverVisitor(compiler, element,
693 new ResolutionRegistry.internal(compiler, 698 new ResolutionRegistry(compiler,
694 new CollectingTreeElements(element))); 699 new CollectingTreeElements(element)));
695 new InitializerResolver(visitor, element, tree).resolveInitializers(); 700 new InitializerResolver(visitor, element, tree).resolveInitializers();
696 visitor.visit(tree.body); 701 visitor.visit(tree.body);
697 Expect.equals(expectedElementCount, map(visitor).length, 702 Expect.equals(expectedElementCount, map(visitor).length,
698 "${map(visitor).values} for '$statement' in context of `$script`"); 703 "${map(visitor).values} for '$statement' in context of `$script`");
699 704
700 compareWarningKinds(script, expectedWarnings, compiler.warnings); 705 compareWarningKinds(script, expectedWarnings, compiler.warnings);
701 compareWarningKinds(script, expectedErrors, compiler.errors); 706 compareWarningKinds(script, expectedErrors, compiler.errors);
702 compareWarningKinds(script, expectedInfos, compiler.infos); 707 compareWarningKinds(script, expectedInfos, compiler.infos);
703 }); 708 });
(...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after
1407 } 1412 }
1408 main() => A.m(); 1413 main() => A.m();
1409 ''', functionName: 'm'); 1414 ''', functionName: 'm');
1410 check(''' 1415 check('''
1411 class A { 1416 class A {
1412 m() => () => await - 3; 1417 m() => () => await - 3;
1413 } 1418 }
1414 main() => new A().m(); 1419 main() => new A().m();
1415 ''', className: 'A'); 1420 ''', className: 'A');
1416 } 1421 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698