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

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

Issue 1182053010: Revert "Split TypedSelector into Selector and TypeMask." (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 'dart:async'; 5 import 'dart:async';
6 import "package:expect/expect.dart"; 6 import "package:expect/expect.dart";
7 import "package:async_helper/async_helper.dart"; 7 import "package:async_helper/async_helper.dart";
8 import "package:compiler/src/dart2jslib.dart"; 8 import "package:compiler/src/dart2jslib.dart";
9 import "package:compiler/src/elements/elements.dart"; 9 import "package:compiler/src/elements/elements.dart";
10 import "package:compiler/src/tree/tree.dart"; 10 import "package:compiler/src/tree/tree.dart";
11 import "package:compiler/src/types/types.dart";
12 import "mock_compiler.dart"; 11 import "mock_compiler.dart";
13 import "mock_libraries.dart"; 12 import "mock_libraries.dart";
14 import 'package:compiler/src/elements/modelx.dart'; 13 import 'package:compiler/src/elements/modelx.dart';
15 14
16 Future<Compiler> applyPatch(String script, String patch, 15 Future<Compiler> applyPatch(String script, String patch,
17 {bool analyzeAll: false, 16 {bool analyzeAll: false,
18 bool analyzeOnly: false, 17 bool analyzeOnly: false,
19 bool runCompiler: false, 18 bool runCompiler: false,
20 String main: "", 19 String main: "",
21 String patchVersion}) { 20 String patchVersion}) {
(...skipping 840 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 checkHasBody: true, expectIsRegular: true); 861 checkHasBody: true, expectIsRegular: true);
863 862
864 ensure(compiler, "clear", cls.lookupLocalMember, 863 ensure(compiler, "clear", cls.lookupLocalMember,
865 checkHasBody: true, expectIsPatched: true); 864 checkHasBody: true, expectIsPatched: true);
866 865
867 compiler.phase = Compiler.PHASE_DONE_RESOLVING; 866 compiler.phase = Compiler.PHASE_DONE_RESOLVING;
868 867
869 // Check that a method just in the patch class is a target for a 868 // Check that a method just in the patch class is a target for a
870 // typed selector. 869 // typed selector.
871 Selector selector = new Selector.call('method', compiler.coreLibrary, 0); 870 Selector selector = new Selector.call('method', compiler.coreLibrary, 0);
872 TypeMask typeMask = new TypeMask.exact(cls, world); 871 TypedSelector typedSelector = new TypedSelector.exact(cls, selector, world);
873 FunctionElement method = cls.implementation.lookupLocalMember('method'); 872 FunctionElement method = cls.implementation.lookupLocalMember('method');
874 method.computeType(compiler); 873 method.computeSignature(compiler);
875 Expect.isTrue(selector.applies(method, world)); 874 Expect.isTrue(selector.applies(method, world));
876 Expect.isTrue(typeMask.canHit(method, selector, world)); 875 Expect.isTrue(typedSelector.applies(method, world));
877 876
878 // Check that the declaration method in the declaration class is a target 877 // Check that the declaration method in the declaration class is a target
879 // for a typed selector. 878 // for a typed selector.
880 selector = new Selector.call('clear', compiler.coreLibrary, 0); 879 selector = new Selector.call('clear', compiler.coreLibrary, 0);
881 typeMask = new TypeMask.exact(cls, world); 880 typedSelector = new TypedSelector.exact(cls, selector, world);
882 method = cls.lookupLocalMember('clear'); 881 method = cls.lookupLocalMember('clear');
883 method.computeType(compiler); 882 method.computeSignature(compiler);
884 Expect.isTrue(selector.applies(method, world)); 883 Expect.isTrue(selector.applies(method, world));
885 Expect.isTrue(typeMask.canHit(method, selector, world)); 884 Expect.isTrue(typedSelector.applies(method, world));
886 885
887 // Check that the declaration method in the declaration class is a target 886 // Check that the declaration method in the declaration class is a target
888 // for a typed selector on a subclass. 887 // for a typed selector on a subclass.
889 cls = ensure(compiler, "B", compiler.coreLibrary.find); 888 cls = ensure(compiler, "B", compiler.coreLibrary.find);
890 cls.ensureResolved(compiler); 889 cls.ensureResolved(compiler);
891 typeMask = new TypeMask.exact(cls, world); 890 typedSelector = new TypedSelector.exact(cls, selector, world);
892 Expect.isTrue(selector.applies(method, world)); 891 Expect.isTrue(selector.applies(method, world));
893 Expect.isTrue(typeMask.canHit(method, selector, world)); 892 Expect.isTrue(typedSelector.applies(method, world));
894 })); 893 }));
895 } 894 }
896 895
897 void testAnalyzeAllInjectedMembers() { 896 void testAnalyzeAllInjectedMembers() {
898 void expect(String patchText, [expectedWarnings]) { 897 void expect(String patchText, [expectedWarnings]) {
899 if (expectedWarnings == null) expectedWarnings = []; 898 if (expectedWarnings == null) expectedWarnings = [];
900 if (expectedWarnings is! List) { 899 if (expectedWarnings is! List) {
901 expectedWarnings = <MessageKind>[expectedWarnings]; 900 expectedWarnings = <MessageKind>[expectedWarnings];
902 } 901 }
903 902
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 B.patchTarget() : super(); 946 B.patchTarget() : super();
948 factory B.reflectBack() = B.originTarget; 947 factory B.reflectBack() = B.originTarget;
949 } 948 }
950 """; 949 """;
951 950
952 asyncTest(() => applyPatch(origin, patch, analyzeAll: true, 951 asyncTest(() => applyPatch(origin, patch, analyzeAll: true,
953 analyzeOnly: true, runCompiler: true).then((compiler) { 952 analyzeOnly: true, runCompiler: true).then((compiler) {
954 ClassElement clsA = compiler.coreLibrary.find("A"); 953 ClassElement clsA = compiler.coreLibrary.find("A");
955 ClassElement clsB = compiler.coreLibrary.find("B"); 954 ClassElement clsB = compiler.coreLibrary.find("B");
956 955
957 ConstructorElement forward = clsA.lookupConstructor("forward"); 956 Selector forwardCall = new Selector.callConstructor("forward",
957 compiler.coreLibrary);
958 ConstructorElement forward = clsA.lookupConstructor(forwardCall);
958 ConstructorElement target = forward.effectiveTarget; 959 ConstructorElement target = forward.effectiveTarget;
959 Expect.isTrue(target.isPatch); 960 Expect.isTrue(target.isPatch);
960 Expect.equals("patchTarget", target.name); 961 Expect.equals("patchTarget", target.name);
961 962
962 ConstructorElement forwardTwo = clsA.lookupConstructor("forwardTwo"); 963 Selector forwardTwoCall = new Selector.callConstructor("forwardTwo",
964 compiler.coreLibrary);
965 ConstructorElement forwardTwo = clsA.lookupConstructor(forwardTwoCall);
963 target = forwardTwo.effectiveTarget; 966 target = forwardTwo.effectiveTarget;
964 Expect.isFalse(forwardTwo.isErroneous); 967 Expect.isFalse(forwardTwo.isErroneous);
965 Expect.isFalse(target.isPatch); 968 Expect.isFalse(target.isPatch);
966 Expect.equals("originTarget", target.name); 969 Expect.equals("originTarget", target.name);
967 })); 970 }));
968 } 971 }
969 972
970 void testTypecheckPatchedMembers() { 973 void testTypecheckPatchedMembers() {
971 String originText = "external void method();"; 974 String originText = "external void method();";
972 String patchText = """ 975 String patchText = """
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 testPatchNoSetter(); 1018 testPatchNoSetter();
1016 testPatchNonFunction(); 1019 testPatchNonFunction();
1017 1020
1018 testPatchAndSelector(); 1021 testPatchAndSelector();
1019 1022
1020 testEffectiveTarget(); /// bug: ok 1023 testEffectiveTarget(); /// bug: ok
1021 1024
1022 testAnalyzeAllInjectedMembers(); 1025 testAnalyzeAllInjectedMembers();
1023 testTypecheckPatchedMembers(); 1026 testTypecheckPatchedMembers();
1024 } 1027 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/gvn_dynamic_field_get_test.dart ('k') | tests/language/language_dart2js.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698