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

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

Issue 1160313006: Revert "Refactoring resolution of local access and unqualified access of statics" (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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 "package:expect/expect.dart"; 5 import "package:expect/expect.dart";
6 import 'dart:async'; 6 import 'dart:async';
7 import "package:async_helper/async_helper.dart"; 7 import "package:async_helper/async_helper.dart";
8 import 'dart:collection'; 8 import 'dart:collection';
9 9
10 import "package:compiler/src/resolution/resolution.dart"; 10 import "package:compiler/src/resolution/resolution.dart";
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 } 330 }
331 331
332 Future testLocalsThree() { 332 Future testLocalsThree() {
333 return MockCompiler.create((MockCompiler compiler) { 333 return MockCompiler.create((MockCompiler compiler) {
334 ResolverVisitor visitor = compiler.resolverVisitor(); 334 ResolverVisitor visitor = compiler.resolverVisitor();
335 Node tree = parseStatement("{ var a = 1; if (true) { a; } }"); 335 Node tree = parseStatement("{ var a = 1; if (true) { a; } }");
336 ResolutionResult element = visitor.visit(tree); 336 ResolutionResult element = visitor.visit(tree);
337 Expect.equals(null, element); 337 Expect.equals(null, element);
338 MethodScope scope = visitor.scope; 338 MethodScope scope = visitor.scope;
339 Expect.equals(0, scope.elements.length); 339 Expect.equals(0, scope.elements.length);
340 Expect.equals(2, map(visitor).length); 340 Expect.equals(3, map(visitor).length);
341 List<Element> elements = map(visitor).values.toList(); 341 List<Element> elements = map(visitor).values.toList();
342 Expect.equals(elements[0], elements[1]); 342 Expect.equals(elements[0], elements[1]);
343 }); 343 });
344 } 344 }
345 345
346 Future testLocalsFour() { 346 Future testLocalsFour() {
347 return MockCompiler.create((MockCompiler compiler) { 347 return MockCompiler.create((MockCompiler compiler) {
348 ResolverVisitor visitor = compiler.resolverVisitor(); 348 ResolverVisitor visitor = compiler.resolverVisitor();
349 Node tree = parseStatement("{ var a = 1; if (true) { var a = 1; } }"); 349 Node tree = parseStatement("{ var a = 1; if (true) { var a = 1; } }");
350 ResolutionResult element = visitor.visit(tree); 350 ResolutionResult element = visitor.visit(tree);
351 Expect.equals(null, element); 351 Expect.equals(null, element);
352 MethodScope scope = visitor.scope; 352 MethodScope scope = visitor.scope;
353 Expect.equals(0, scope.elements.length); 353 Expect.equals(0, scope.elements.length);
354 Expect.equals(2, map(visitor).length); 354 Expect.equals(2, map(visitor).length);
355 List<Element> elements = map(visitor).values.toList(); 355 List<Element> elements = map(visitor).values.toList();
356 Expect.notEquals(elements[0], elements[1]); 356 Expect.notEquals(elements[0], elements[1]);
357 }); 357 });
358 } 358 }
359 359
360 Future testLocalsFive() { 360 Future testLocalsFive() {
361 return MockCompiler.create((MockCompiler compiler) { 361 return MockCompiler.create((MockCompiler compiler) {
362 ResolverVisitor visitor = compiler.resolverVisitor(); 362 ResolverVisitor visitor = compiler.resolverVisitor();
363 If tree = 363 If tree =
364 parseStatement("if (true) { var a = 1; a; } else { var a = 2; a;}"); 364 parseStatement("if (true) { var a = 1; a; } else { var a = 2; a;}");
365 ResolutionResult element = visitor.visit(tree); 365 ResolutionResult element = visitor.visit(tree);
366 Expect.equals(null, element); 366 Expect.equals(null, element);
367 MethodScope scope = visitor.scope; 367 MethodScope scope = visitor.scope;
368 Expect.equals(0, scope.elements.length); 368 Expect.equals(0, scope.elements.length);
369 Expect.equals(4, map(visitor).length); 369 Expect.equals(6, map(visitor).length);
370 370
371 Block thenPart = tree.thenPart; 371 Block thenPart = tree.thenPart;
372 List statements1 = thenPart.statements.nodes.toList(); 372 List statements1 = thenPart.statements.nodes.toList();
373 Node def1 = statements1[0].definitions.nodes.head; 373 Node def1 = statements1[0].definitions.nodes.head;
374 Node id1 = statements1[1].expression; 374 Node id1 = statements1[1].expression;
375 Expect.equals(visitor.registry.mapping[def1], 375 Expect.equals(visitor.registry.mapping[def1],
376 visitor.registry.mapping[id1]); 376 visitor.registry.mapping[id1]);
377 377
378 Block elsePart = tree.elsePart; 378 Block elsePart = tree.elsePart;
379 List statements2 = elsePart.statements.nodes.toList(); 379 List statements2 = elsePart.statements.nodes.toList();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 } 412 }
413 413
414 Future testFor() { 414 Future testFor() {
415 return MockCompiler.create((MockCompiler compiler) { 415 return MockCompiler.create((MockCompiler compiler) {
416 ResolverVisitor visitor = compiler.resolverVisitor(); 416 ResolverVisitor visitor = compiler.resolverVisitor();
417 For tree = parseStatement("for (int i = 0; i < 10; i = i + 1) { i = 5; }"); 417 For tree = parseStatement("for (int i = 0; i < 10; i = i + 1) { i = 5; }");
418 visitor.visit(tree); 418 visitor.visit(tree);
419 419
420 MethodScope scope = visitor.scope; 420 MethodScope scope = visitor.scope;
421 Expect.equals(0, scope.elements.length); 421 Expect.equals(0, scope.elements.length);
422 Expect.equals(7, map(visitor).length); 422 Expect.equals(9, map(visitor).length);
423 423
424 VariableDefinitions initializer = tree.initializer; 424 VariableDefinitions initializer = tree.initializer;
425 Node iNode = initializer.definitions.nodes.head; 425 Node iNode = initializer.definitions.nodes.head;
426 Element iElement = visitor.registry.mapping[iNode]; 426 Element iElement = visitor.registry.mapping[iNode];
427 427
428 // Check that we have the expected nodes. This test relies on the mapping 428 // Check that we have the expected nodes. This test relies on the mapping
429 // field to be a linked hash map (preserving insertion order). 429 // field to be a linked hash map (preserving insertion order).
430 Expect.isTrue(map(visitor) is LinkedHashMap); 430 Expect.isTrue(map(visitor) is LinkedHashMap);
431 List<Node> nodes = map(visitor).keys.toList(); 431 List<Node> nodes = map(visitor).keys.toList();
432 List<Element> elements = map(visitor).values.toList(); 432 List<Element> elements = map(visitor).values.toList();
433 433
434 // for (int i = 0; i < 10; i = i + 1) { i = 5; }; 434 // for (int i = 0; i < 10; i = i + 1) { i = 5; };
435 // ^^^^^ 435 // ^^^^^
436 checkSendSet(iElement, nodes[0], elements[0]); 436 checkSendSet(iElement, nodes[0], elements[0]);
437 437
438 // for (int i = 0; i < 10; i = i + 1) { i = 5; }; 438 // for (int i = 0; i < 10; i = i + 1) { i = 5; };
439 // ^ 439 // ^
440 checkSend(iElement, nodes[1], elements[1]); 440 checkIdentifier(iElement, nodes[1], elements[1]);
441
442 // for (int i = 0; i < 10; i = i + 1) { i = 5; };
443 // ^
444 checkSend(iElement, nodes[2], elements[2]);
441 445
442 // for (int i = 0; i < 10; i = i + 1) { i = 5; }; 446 // for (int i = 0; i < 10; i = i + 1) { i = 5; };
443 // ^ 447 // ^
444 checkIdentifier(iElement, nodes[2], elements[2]); 448 checkIdentifier(iElement, nodes[3], elements[3]);
445 449
446 // for (int i = 0; i < 10; i = i + 1) { i = 5; }; 450 // for (int i = 0; i < 10; i = i + 1) { i = 5; };
447 // ^ 451 // ^
448 checkSend(iElement, nodes[3], elements[3]); 452 checkIdentifier(iElement, nodes[4], elements[4]);
453
454 // for (int i = 0; i < 10; i = i + 1) { i = 5; };
455 // ^
456 checkSend(iElement, nodes[5], elements[5]);
449 457
450 // for (int i = 0; i < 10; i = i + 1) { i = 5; }; 458 // for (int i = 0; i < 10; i = i + 1) { i = 5; };
451 // ^^^^^^^^^ 459 // ^^^^^^^^^
452 checkSendSet(iElement, nodes[4], elements[4]); 460 checkSendSet(iElement, nodes[6], elements[6]);
453 461
454 // for (int i = 0; i < 10; i = i + 1) { i = 5; }; 462 // for (int i = 0; i < 10; i = i + 1) { i = 5; };
455 // ^ 463 // ^
456 checkIdentifier(iElement, nodes[5], elements[5]); 464 checkIdentifier(iElement, nodes[7], elements[7]);
457 465
458 // for (int i = 0; i < 10; i = i + 1) { i = 5; }; 466 // for (int i = 0; i < 10; i = i + 1) { i = 5; };
459 // ^^^^^ 467 // ^^^^^
460 checkSendSet(iElement, nodes[6], elements[6]); 468 checkSendSet(iElement, nodes[8], elements[8]);
461 }); 469 });
462 } 470 }
463 471
464 checkIdentifier(Element expected, Node node, Element actual) { 472 checkIdentifier(Element expected, Node node, Element actual) {
465 Expect.isTrue(node is Identifier, node.toDebugString()); 473 Expect.isTrue(node is Identifier, node.toDebugString());
466 Expect.equals(expected, actual); 474 Expect.equals(expected, actual);
467 } 475 }
468 476
469 checkSend(Element expected, Node node, Element actual) { 477 checkSend(Element expected, Node node, Element actual) {
470 Expect.isTrue(node is Send, node.toDebugString()); 478 Expect.isTrue(node is Send, node.toDebugString());
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 expectedWarnings: [], 920 expectedWarnings: [],
913 expectedErrors: [MessageKind.CANNOT_RESOLVE]); 921 expectedErrors: [MessageKind.CANNOT_RESOLVE]);
914 }, 922 },
915 () { 923 () {
916 String script = 924 String script =
917 """class A { 925 """class A {
918 int foo; 926 int foo;
919 int bar; 927 int bar;
920 A() : this.foo = bar; 928 A() : this.foo = bar;
921 }"""; 929 }""";
922 return resolveConstructor(script, "A a = new A();", "A", "", 2, 930 return resolveConstructor(script, "A a = new A();", "A", "", 3,
923 expectedWarnings: [], 931 expectedWarnings: [],
924 expectedErrors: [MessageKind.NO_INSTANCE_AVAILABLE]); 932 expectedErrors: [MessageKind.NO_INSTANCE_AVAILABLE]);
925 }, 933 },
926 () { 934 () {
927 String script = 935 String script =
928 """class A { 936 """class A {
929 int foo() => 42; 937 int foo() => 42;
930 A() : foo(); 938 A() : foo();
931 }"""; 939 }""";
932 return resolveConstructor(script, "A a = new A();", "A", "", 0, 940 return resolveConstructor(script, "A a = new A();", "A", "", 0,
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
1324 } 1332 }
1325 main() => A.m(); 1333 main() => A.m();
1326 ''', functionName: 'm'); 1334 ''', functionName: 'm');
1327 check(''' 1335 check('''
1328 class A { 1336 class A {
1329 m() => () => await - 3; 1337 m() => () => await - 3;
1330 } 1338 }
1331 main() => new A().m(); 1339 main() => new A().m();
1332 ''', className: 'A'); 1340 ''', className: 'A');
1333 } 1341 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/diagnose_ambiguous_test.dart ('k') | tests/compiler/dart2js/semantic_visitor_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698