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

Unified Diff: sdk/lib/_internal/compiler/implementation/js_backend/backend.dart

Issue 304153014: Remove element from DynamicType. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix infinite loop. Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
index 717366b078af31b859d1cf1051cb0de61358ebac..db1363161dda6ab367267afc5f744148d287bfda 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
@@ -675,7 +675,7 @@ class JavaScriptBackend extends Backend {
registerInstantiatedConstantType(interceptor.dispatchedType, registry);
} else if (constant.isType) {
TypeConstant typeConstant = constant;
- registerTypeLiteral(typeConstant.representedType.element,
+ registerTypeLiteral(typeConstant.representedType,
compiler.enqueuer.codegen, registry);
}
}
@@ -683,17 +683,18 @@ class JavaScriptBackend extends Backend {
void registerInstantiatedConstantType(DartType type, Registry registry) {
Enqueuer enqueuer = compiler.enqueuer.codegen;
DartType instantiatedType =
- type.kind == TypeKind.FUNCTION ? compiler.functionClass.rawType : type;
- enqueuer.registerInstantiatedType(instantiatedType, registry);
- if (type is InterfaceType && !type.treatAsRaw &&
- classNeedsRti(type.element)) {
- enqueuer.registerStaticUse(getSetRuntimeTypeInfo());
- }
- if (type.element == typeImplementation) {
- // If we use a type literal in a constant, the compile time
- // constant emitter will generate a call to the createRuntimeType
- // helper so we register a use of that.
- enqueuer.registerStaticUse(getCreateRuntimeType());
+ type.isFunctionType ? compiler.functionClass.rawType : type;
+ if (type is InterfaceType) {
+ enqueuer.registerInstantiatedType(instantiatedType, registry);
+ if (!type.treatAsRaw && classNeedsRti(type.element)) {
+ enqueuer.registerStaticUse(getSetRuntimeTypeInfo());
+ }
+ if (type.element == typeImplementation) {
+ // If we use a type literal in a constant, the compile time
+ // constant emitter will generate a call to the createRuntimeType
+ // helper so we register a use of that.
+ enqueuer.registerStaticUse(getCreateRuntimeType());
+ }
}
}
@@ -892,7 +893,7 @@ class JavaScriptBackend extends Backend {
enqueueInResolution(getCyclicThrowHelper(), registry);
}
- void registerTypeLiteral(Element element,
+ void registerTypeLiteral(DartType type,
Enqueuer enqueuer,
Registry registry) {
enqueuer.registerInstantiatedClass(typeImplementation, registry);
@@ -900,10 +901,10 @@ class JavaScriptBackend extends Backend {
// TODO(ahe): Might want to register [element] as an instantiated class
// when reflection is used. However, as long as we disable tree-shaking
// eagerly it doesn't matter.
- if (element.isTypedef) {
- typedefTypeLiterals.add(element);
+ if (type.isTypedef) {
+ typedefTypeLiterals.add(type.element);
}
- customElementsAnalysis.registerTypeLiteral(element, enqueuer);
+ customElementsAnalysis.registerTypeLiteral(type, enqueuer);
}
void registerStackTraceInCatch(Registry registry) {
@@ -982,8 +983,8 @@ class JavaScriptBackend extends Backend {
}
}
}
- bool isTypeVariable = type.kind == TypeKind.TYPE_VARIABLE;
- if (type.kind == TypeKind.MALFORMED_TYPE) {
+ bool isTypeVariable = type.isTypeVariable;
+ if (type.isMalformed) {
enqueueInResolution(getThrowTypeError(), registry);
}
if (!type.treatAsRaw || type.containsTypeVariables) {
@@ -1307,7 +1308,7 @@ class JavaScriptBackend extends Backend {
{bool typeCast,
bool nativeCheckOnly}) {
assert(type.kind != TypeKind.TYPEDEF);
- if (type.kind == TypeKind.MALFORMED_TYPE) {
+ if (type.isMalformed) {
// The same error is thrown for type test and type cast of a malformed
// type so we only need one check method.
return 'checkMalformedType';
@@ -1390,15 +1391,15 @@ class JavaScriptBackend extends Backend {
: 'listSuperTypeCheck';
}
} else {
- if (type.kind == TypeKind.INTERFACE && !type.treatAsRaw) {
+ if (type.isInterfaceType && !type.treatAsRaw) {
return typeCast
? 'subtypeCast'
: 'assertSubtype';
- } else if (type.kind == TypeKind.TYPE_VARIABLE) {
+ } else if (type.isTypeVariable) {
return typeCast
? 'subtypeOfRuntimeTypeCast'
: 'assertSubtypeOfRuntimeType';
- } else if (type.kind == TypeKind.FUNCTION) {
+ } else if (type.isFunctionType) {
return null;
} else {
if (nativeCheck) {

Powered by Google App Engine
This is Rietveld 408576698