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

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

Issue 709603003: Add compile-time errors for enums. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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
« no previous file with comments | « pkg/compiler/lib/src/warnings.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) 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 802 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 MockCompiler.create((MockCompiler compiler) { 813 MockCompiler.create((MockCompiler compiler) {
814 compiler.parseScript("""enum Enum {} 814 compiler.parseScript("""enum Enum {}
815 main() { Enum e; }"""); 815 main() { Enum e; }""");
816 FunctionElement mainElement = compiler.mainApp.find(MAIN); 816 FunctionElement mainElement = compiler.mainApp.find(MAIN);
817 compiler.resolver.resolve(mainElement); 817 compiler.resolver.resolve(mainElement);
818 Expect.equals(0, compiler.warnings.length, 818 Expect.equals(0, compiler.warnings.length,
819 'Unexpected warnings: ${compiler.warnings}'); 819 'Unexpected warnings: ${compiler.warnings}');
820 Expect.equals(0, compiler.errors.length, 820 Expect.equals(0, compiler.errors.length,
821 'Unexpected errors: ${compiler.errors}'); 821 'Unexpected errors: ${compiler.errors}');
822 }, enableEnums: true), 822 }, enableEnums: true),
823
823 MockCompiler.create((MockCompiler compiler) { 824 MockCompiler.create((MockCompiler compiler) {
824 compiler.parseScript("""enum Enum {} 825 compiler.parseScript("""enum Enum {}
825 main() { Enum e = Enum.A; }"""); 826 main() { Enum e = Enum.A; }""");
826 FunctionElement mainElement = compiler.mainApp.find(MAIN); 827 FunctionElement mainElement = compiler.mainApp.find(MAIN);
827 compiler.resolver.resolve(mainElement); 828 compiler.resolver.resolve(mainElement);
828 Expect.equals(1, compiler.warnings.length, 829 Expect.equals(1, compiler.warnings.length,
829 'Unexpected warnings: ${compiler.warnings}'); 830 'Unexpected warnings: ${compiler.warnings}');
830 Expect.equals(MessageKind.MEMBER_NOT_FOUND, 831 Expect.equals(MessageKind.MEMBER_NOT_FOUND,
831 compiler.warnings[0].message.kind); 832 compiler.warnings[0].message.kind);
832 Expect.equals(0, compiler.errors.length, 833 Expect.equals(0, compiler.errors.length,
833 'Unexpected errors: ${compiler.errors}'); 834 'Unexpected errors: ${compiler.errors}');
834 }, enableEnums: true), 835 }, enableEnums: true),
836
835 MockCompiler.create((MockCompiler compiler) { 837 MockCompiler.create((MockCompiler compiler) {
836 compiler.parseScript("""enum Enum { A } 838 compiler.parseScript("""enum Enum { A }
837 main() { Enum e = Enum.A; }"""); 839 main() { Enum e = Enum.A; }""");
838 FunctionElement mainElement = compiler.mainApp.find(MAIN); 840 FunctionElement mainElement = compiler.mainApp.find(MAIN);
839 compiler.resolver.resolve(mainElement); 841 compiler.resolver.resolve(mainElement);
840 Expect.equals(0, compiler.warnings.length, 842 Expect.equals(0, compiler.warnings.length,
841 'Unexpected warnings: ${compiler.warnings}'); 843 'Unexpected warnings: ${compiler.warnings}');
842 Expect.equals(0, compiler.errors.length, 844 Expect.equals(0, compiler.errors.length,
843 'Unexpected errors: ${compiler.errors}'); 845 'Unexpected errors: ${compiler.errors}');
844 }, enableEnums: true), 846 }, enableEnums: true),
847
845 MockCompiler.create((MockCompiler compiler) { 848 MockCompiler.create((MockCompiler compiler) {
846 compiler.parseScript("""enum Enum { A } 849 compiler.parseScript("""enum Enum { A }
847 main() { Enum e = Enum.B; }"""); 850 main() { Enum e = Enum.B; }""");
848 FunctionElement mainElement = compiler.mainApp.find(MAIN); 851 FunctionElement mainElement = compiler.mainApp.find(MAIN);
849 compiler.resolver.resolve(mainElement); 852 compiler.resolver.resolve(mainElement);
850 Expect.equals(1, compiler.warnings.length, 853 Expect.equals(1, compiler.warnings.length,
851 'Unexpected warnings: ${compiler.warnings}'); 854 'Unexpected warnings: ${compiler.warnings}');
852 Expect.equals(MessageKind.MEMBER_NOT_FOUND, 855 Expect.equals(MessageKind.MEMBER_NOT_FOUND,
853 compiler.warnings[0].message.kind); 856 compiler.warnings[0].message.kind);
854 Expect.equals(0, compiler.errors.length, 857 Expect.equals(0, compiler.errors.length,
855 'Unexpected errors: ${compiler.errors}'); 858 'Unexpected errors: ${compiler.errors}');
856 }, enableEnums: true), 859 }, enableEnums: true),
860
857 MockCompiler.create((MockCompiler compiler) { 861 MockCompiler.create((MockCompiler compiler) {
858 compiler.parseScript("""enum Enum { A } 862 compiler.parseScript("""enum Enum { A }
859 main() { List values = Enum.values; }"""); 863 main() { List values = Enum.values; }""");
860 FunctionElement mainElement = compiler.mainApp.find(MAIN); 864 FunctionElement mainElement = compiler.mainApp.find(MAIN);
861 compiler.resolver.resolve(mainElement); 865 compiler.resolver.resolve(mainElement);
862 Expect.equals(0, compiler.warnings.length, 866 Expect.equals(0, compiler.warnings.length,
863 'Unexpected warnings: ${compiler.warnings}'); 867 'Unexpected warnings: ${compiler.warnings}');
864 Expect.equals(0, compiler.errors.length, 868 Expect.equals(0, compiler.errors.length,
865 'Unexpected errors: ${compiler.errors}'); 869 'Unexpected errors: ${compiler.errors}');
866 }, enableEnums: true), 870 }, enableEnums: true),
871
872 MockCompiler.create((MockCompiler compiler) {
873 compiler.parseScript("""enum Enum {}
874 main() { new Enum(0, ''); }""");
875 FunctionElement mainElement = compiler.mainApp.find(MAIN);
876 compiler.resolver.resolve(mainElement);
877 Expect.equals(0, compiler.warnings.length,
878 'Unexpected warnings: ${compiler.warnings}');
879 Expect.equals(1, compiler.errors.length,
880 'Unexpected errors: ${compiler.errors}');
881 Expect.equals(MessageKind.CANNOT_INSTANTIATE_ENUM,
882 compiler.errors[0].message.kind);
883 }, enableEnums: true),
884
885 MockCompiler.create((MockCompiler compiler) {
886 compiler.parseScript("""enum Enum {}
887 main() { const Enum(0, ''); }""");
888 FunctionElement mainElement = compiler.mainApp.find(MAIN);
889 compiler.resolver.resolve(mainElement);
890 Expect.equals(0, compiler.warnings.length,
891 'Unexpected warnings: ${compiler.warnings}');
892 Expect.equals(1, compiler.errors.length,
893 'Unexpected errors: ${compiler.errors}');
894 Expect.equals(MessageKind.CANNOT_INSTANTIATE_ENUM,
895 compiler.errors[0].message.kind);
896 }, enableEnums: true),
867 ]); 897 ]);
868 } 898 }
869 899
870 Future testInitializers() { 900 Future testInitializers() {
871 return Future.forEach([ 901 return Future.forEach([
872 () { 902 () {
873 String script = 903 String script =
874 """class A { 904 """class A {
875 int foo; int bar; 905 int foo; int bar;
876 A() : this.foo = 1, bar = 2; 906 A() : this.foo = 1, bar = 2;
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
1125 }"""; 1155 }""";
1126 asyncTest(() => compileScript(script2).then((compiler) { 1156 asyncTest(() => compileScript(script2).then((compiler) {
1127 expect(compiler, 1157 expect(compiler,
1128 [MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS], 1158 [MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS],
1129 [MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_CONSTRUCTOR, 1159 [MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_CONSTRUCTOR,
1130 MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_CONSTRUCTOR, 1160 MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_CONSTRUCTOR,
1131 MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_FIELD, 1161 MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_FIELD,
1132 MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_FIELD]); 1162 MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_FIELD]);
1133 })); 1163 }));
1134 } 1164 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/warnings.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698