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

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

Issue 17759007: First pass at asynchronous input loading in dart2js. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Remove withCurrentElementAsync Created 7 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 | Annotate | Revision Log
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:collection'; 7 import 'dart:collection';
7 8
8 import "../../../sdk/lib/_internal/compiler/implementation/resolution/resolution .dart"; 9 import "../../../sdk/lib/_internal/compiler/implementation/resolution/resolution .dart";
9 import "compiler_helper.dart"; 10 import "compiler_helper.dart";
10 import "parser_helper.dart"; 11 import "parser_helper.dart";
11 12
12 import '../../../sdk/lib/_internal/compiler/implementation/dart_types.dart'; 13 import '../../../sdk/lib/_internal/compiler/implementation/dart_types.dart';
13 14
14 Node buildIdentifier(String name) => new Identifier(scan(name)); 15 Node buildIdentifier(String name) => new Identifier(scan(name));
15 16
(...skipping 801 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 818
818 at(Link link, int index) => (index == 0) ? link.head : at(link.tail, index - 1); 819 at(Link link, int index) => (index == 0) ? link.head : at(link.tail, index - 1);
819 820
820 List<String> asSortedStrings(Link link) { 821 List<String> asSortedStrings(Link link) {
821 List<String> result = <String>[]; 822 List<String> result = <String>[];
822 for (; !link.isEmpty; link = link.tail) result.add(link.head.toString()); 823 for (; !link.isEmpty; link = link.tail) result.add(link.head.toString());
823 result.sort((s1, s2) => s1.compareTo(s2)); 824 result.sort((s1, s2) => s1.compareTo(s2));
824 return result; 825 return result;
825 } 826 }
826 827
827 compileScript(String source) { 828 Future compileScript(String source) {
828 Uri uri = new Uri(scheme: 'source'); 829 Uri uri = new Uri(scheme: 'source');
829 MockCompiler compiler = compilerFor(source, uri); 830 MockCompiler compiler = compilerFor(source, uri);
830 compiler.runCompiler(uri); 831 return compiler.runCompiler(uri).then((_) {
831 return compiler; 832 return compiler;
833 });
832 } 834 }
833 835
834 checkMemberResolved(compiler, className, memberName) { 836 checkMemberResolved(compiler, className, memberName) {
835 Element memberElement = findElement(compiler, className) 837 Element memberElement = findElement(compiler, className)
836 .lookupLocalMember(memberName); 838 .lookupLocalMember(memberName);
837 Expect.isNotNull(memberElement); 839 Expect.isNotNull(memberElement);
838 Expect.isNotNull( 840 Expect.isNotNull(
839 compiler.enqueuer.resolution.getCachedElements(memberElement)); 841 compiler.enqueuer.resolution.getCachedElements(memberElement));
840 } 842 }
841 843
842 testToString() { 844 testToString() {
843 final script = r"class C { toString() => 'C'; } main() { '${new C()}'; }"; 845 final script = r"class C { toString() => 'C'; } main() { '${new C()}'; }";
844 final compiler = compileScript(script); 846 compileScript(script).then((compiler) {
845 847 checkMemberResolved(compiler, 'C', buildSourceString('toString'));
846 checkMemberResolved(compiler, 'C', buildSourceString('toString')); 848 });
847 } 849 }
848 850
849 operatorName(op, isUnary) { 851 operatorName(op, isUnary) {
850 return Elements.constructOperatorName(new SourceString(op), isUnary); 852 return Elements.constructOperatorName(new SourceString(op), isUnary);
851 } 853 }
852 854
853 testIndexedOperator() { 855 testIndexedOperator() {
854 final script = r""" 856 final script = r"""
855 class C { 857 class C {
856 operator[](ix) => ix; 858 operator[](ix) => ix;
857 operator[]=(ix, v) {} 859 operator[]=(ix, v) {}
858 } 860 }
859 main() { var c = new C(); c[0]++; }"""; 861 main() { var c = new C(); c[0]++; }""";
860 final compiler = compileScript(script); 862 compileScript(script).then((compiler) {
861 863 checkMemberResolved(compiler, 'C', operatorName('[]', false));
862 checkMemberResolved(compiler, 'C', operatorName('[]', false)); 864 checkMemberResolved(compiler, 'C', operatorName('[]=', false));
863 checkMemberResolved(compiler, 'C', operatorName('[]=', false)); 865 });
864 } 866 }
865 867
866 testIncrementsAndDecrements() { 868 testIncrementsAndDecrements() {
867 final script = r""" 869 final script = r"""
868 class A { operator+(o)=>null; } 870 class A { operator+(o)=>null; }
869 class B { operator+(o)=>null; } 871 class B { operator+(o)=>null; }
870 class C { operator-(o)=>null; } 872 class C { operator-(o)=>null; }
871 class D { operator-(o)=>null; } 873 class D { operator-(o)=>null; }
872 main() { 874 main() {
873 var a = new A(); 875 var a = new A();
874 a++; 876 a++;
875 var b = new B(); 877 var b = new B();
876 ++b; 878 ++b;
877 var c = new C(); 879 var c = new C();
878 c--; 880 c--;
879 var d = new D(); 881 var d = new D();
880 --d; 882 --d;
881 }"""; 883 }""";
882 final compiler = compileScript(script); 884 compileScript(script).then((compiler) {
883 885 checkMemberResolved(compiler, 'A', operatorName('+', false));
884 checkMemberResolved(compiler, 'A', operatorName('+', false)); 886 checkMemberResolved(compiler, 'B', operatorName('+', false));
885 checkMemberResolved(compiler, 'B', operatorName('+', false)); 887 checkMemberResolved(compiler, 'C', operatorName('-', false));
886 checkMemberResolved(compiler, 'C', operatorName('-', false)); 888 checkMemberResolved(compiler, 'D', operatorName('-', false));
887 checkMemberResolved(compiler, 'D', operatorName('-', false)); 889 });
888 } 890 }
889 891
890 testOverrideHashCodeCheck() { 892 testOverrideHashCodeCheck() {
891 final script = r""" 893 final script = r"""
892 class A { 894 class A {
893 operator==(other) => true; 895 operator==(other) => true;
894 } 896 }
895 class B { 897 class B {
896 operator==(other) => true; 898 operator==(other) => true;
897 get hashCode => 0; 899 get hashCode => 0;
898 } 900 }
899 main() { 901 main() {
900 new A() == new B(); 902 new A() == new B();
901 }"""; 903 }""";
902 final compiler = compileScript(script); 904 compileScript(script).then((compiler) {
903 Expect.equals(1, compiler.warnings.length); 905 Expect.equals(1, compiler.warnings.length);
904 Expect.equals(MessageKind.OVERRIDE_EQUALS_NOT_HASH_CODE, 906 Expect.equals(MessageKind.OVERRIDE_EQUALS_NOT_HASH_CODE,
905 compiler.warnings[0].message.kind); 907 compiler.warnings[0].message.kind);
906 Expect.equals(0, compiler.errors.length); 908 Expect.equals(0, compiler.errors.length);
909 });
907 } 910 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698