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

Side by Side Diff: pkg/compiler/lib/src/native/behavior.dart

Issue 1484273002: Require jsInteropObject type to be resolved before we use it in native behaviors (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years 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
« no previous file with comments | « no previous file | tests/html/js_dart_to_string_test.dart » ('j') | 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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 part of native; 5 part of native;
6 6
7 /// This class is a temporary work-around until we get a more powerful DartType. 7 /// This class is a temporary work-around until we get a more powerful DartType.
8 class SpecialType { 8 class SpecialType {
9 final String name; 9 final String name;
10 const SpecialType._(this.name); 10 const SpecialType._(this.name);
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 } 811 }
812 812
813 if (!compiler.trustJSInteropTypeAnnotations || 813 if (!compiler.trustJSInteropTypeAnnotations ||
814 type.isDynamic || type.isObject) { 814 type.isDynamic || type.isObject) {
815 // By saying that only JS-interop types can be created, we prevent 815 // By saying that only JS-interop types can be created, we prevent
816 // pulling in every other native type (e.g. all of dart:html) when a 816 // pulling in every other native type (e.g. all of dart:html) when a
817 // JS interop API returns dynamic or when we don't trust the type 817 // JS interop API returns dynamic or when we don't trust the type
818 // annotations. This means that to some degree we still use the return 818 // annotations. This means that to some degree we still use the return
819 // type to decide whether to include native types, even if we don't 819 // type to decide whether to include native types, even if we don't
820 // trust the type annotation. 820 // trust the type annotation.
821 typesInstantiated.add( 821 ClassElement cls = backend.helpers.jsJavaScriptObjectClass;
822 backend.helpers.jsJavaScriptObjectClass.thisType); 822 cls.ensureResolved(resolution);
823 typesInstantiated.add(cls.thisType);
823 } else { 824 } else {
824 // Otherwise, when the declared type is a Dart type, we do not 825 // Otherwise, when the declared type is a Dart type, we do not
825 // register an allocation because we assume it cannot be instantiated 826 // register an allocation because we assume it cannot be instantiated
826 // from within the JS-interop code. It must have escaped from another 827 // from within the JS-interop code. It must have escaped from another
827 // API. 828 // API.
828 } 829 }
829 } 830 }
830 } 831 }
831 } 832 }
832 833
(...skipping 28 matching lines...) Expand all
861 MessageKind.GENERIC, 862 MessageKind.GENERIC,
862 {'text': "Type '$typeString' not found."}); 863 {'text': "Type '$typeString' not found."});
863 return const DynamicType(); 864 return const DynamicType();
864 } 865 }
865 866
866 static _errorNode(locationNodeOrElement, Parsing parsing) { 867 static _errorNode(locationNodeOrElement, Parsing parsing) {
867 if (locationNodeOrElement is Node) return locationNodeOrElement; 868 if (locationNodeOrElement is Node) return locationNodeOrElement;
868 return locationNodeOrElement.parseNode(parsing); 869 return locationNodeOrElement.parseNode(parsing);
869 } 870 }
870 } 871 }
OLDNEW
« no previous file with comments | « no previous file | tests/html/js_dart_to_string_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698