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

Unified Diff: pkg/compiler/lib/src/resolution/members.dart

Issue 1421003004: Add CoreClasses (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comment. Created 5 years, 2 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
« no previous file with comments | « pkg/compiler/lib/src/resolution/constructors.dart ('k') | pkg/compiler/lib/src/resolution/resolution.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/resolution/members.dart
diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart
index 206576a81948419c7e798db70d2ecb217580a06a..137edcf8569e2aff168ead149df0e559ad36e41b 100644
--- a/pkg/compiler/lib/src/resolution/members.dart
+++ b/pkg/compiler/lib/src/resolution/members.dart
@@ -184,6 +184,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
? ConstantState.CONSTANT : ConstantState.NON_CONSTANT,
super(compiler, registry);
+ CoreClasses get coreClasses => compiler.coreClasses;
+
CoreTypes get coreTypes => compiler.coreTypes;
AsyncMarker get currentAsyncMarker {
@@ -359,7 +361,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
if (Elements.isUnresolved(element) && name == 'dynamic') {
// TODO(johnniwinther): Remove this hack when we can return more complex
// objects than [Element] from this method.
- element = compiler.typeClass;
+ element = coreClasses.typeClass;
// Set the type to be `dynamic` to mark that this is a type literal.
registry.setType(node, const DynamicType());
}
@@ -2110,7 +2112,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
node.isCall ? coreTypes.typeType : type);
AccessSemantics semantics = new ConstantAccess.dynamicTypeLiteral(constant);
return handleConstantTypeLiteralAccess(
- node, const PublicName('dynamic'), compiler.typeClass, type, semantics);
+ node, const PublicName('dynamic'),
+ coreClasses.typeClass, type, semantics);
}
/// Handle update to a type literal of the type 'dynamic'. Like `dynamic++` or
@@ -2121,7 +2124,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
new TypeConstantExpression(const DynamicType());
AccessSemantics semantics = new ConstantAccess.dynamicTypeLiteral(constant);
return handleConstantTypeLiteralUpdate(
- node, const PublicName('dynamic'), compiler.typeClass, type, semantics);
+ node, const PublicName('dynamic'),
+ coreClasses.typeClass, type, semantics);
}
/// Handle access to a type literal of a class. Like `C` or
@@ -3581,8 +3585,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
}
ResolutionResult visitYield(Yield node) {
- compiler.streamClass.ensureResolved(resolution);
- compiler.iterableClass.ensureResolved(resolution);
+ coreClasses.streamClass.ensureResolved(resolution);
+ coreClasses.iterableClass.ensureResolved(resolution);
visit(node.expression);
return const NoneResult();
}
@@ -3706,7 +3710,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
}
ResolutionResult visitAwait(Await node) {
- compiler.futureClass.ensureResolved(resolution);
+ coreClasses.futureClass.ensureResolved(resolution);
visit(node.expression);
return const NoneResult();
}
@@ -3857,7 +3861,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
enclosingElement)) {
reporter.reportHintMessage(
node.newToken, MessageKind.NON_CONST_BLOAT,
- {'name': compiler.symbolClass.name});
+ {'name': coreClasses.symbolClass.name});
}
}
} else if (isMirrorsUsedConstant) {
@@ -3905,9 +3909,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
ObjectConstantValue objectConstant = key;
DartType keyType = objectConstant.type;
ClassElement cls = keyType.element;
- if (cls == compiler.stringClass) continue;
+ if (cls == coreClasses.stringClass) continue;
Element equals = cls.lookupMember('==');
- if (equals.enclosingClass != compiler.objectClass) {
+ if (equals.enclosingClass != coreClasses.objectClass) {
reporter.reportErrorMessage(
spannable,
MessageKind.CONST_MAP_KEY_OVERRIDES_EQUALS,
@@ -4390,12 +4394,12 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
}
DartType typeOfConstant(ConstantValue constant) {
- if (constant.isInt) return compiler.intClass.rawType;
- if (constant.isBool) return compiler.boolClass.rawType;
- if (constant.isDouble) return compiler.doubleClass.rawType;
- if (constant.isString) return compiler.stringClass.rawType;
- if (constant.isNull) return compiler.nullClass.rawType;
- if (constant.isFunction) return compiler.functionClass.rawType;
+ if (constant.isInt) return coreTypes.intType;
+ if (constant.isBool) return coreTypes.boolType;
+ if (constant.isDouble) return coreTypes.doubleType;
+ if (constant.isString) return coreTypes.stringType;
+ if (constant.isNull) return coreTypes.nullType;
+ if (constant.isFunction) return coreTypes.functionType;
assert(constant.isObject);
ObjectConstantValue objectConstant = constant;
return objectConstant.type;
@@ -4404,7 +4408,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
bool overridesEquals(DartType type) {
ClassElement cls = type.element;
Element equals = cls.lookupMember('==');
- return equals.enclosingClass != compiler.objectClass;
+ return equals.enclosingClass != coreClasses.objectClass;
}
void checkCaseExpressions(SwitchStatement node) {
@@ -4429,7 +4433,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
message: 'No constant computed for $node'));
ConstantValue value = compiler.constants.getConstantValue(constant);
- DartType caseType = typeOfConstant(value);
+ DartType caseType = value.getType(coreTypes);//typeOfConstant(value);
if (firstCaseType == null) {
firstCase = caseMatch;
@@ -4437,12 +4441,12 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
// We only report the bad type on the first class element. All others
// get a "type differs" error.
- if (caseType.element == compiler.doubleClass) {
+ if (caseType == coreTypes.doubleType) {
reporter.reportErrorMessage(
node,
MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS,
{'type': "double"});
- } else if (caseType.element == compiler.functionClass) {
+ } else if (caseType == coreTypes.functionType) {
reporter.reportErrorMessage(
node, MessageKind.SWITCH_CASE_FORBIDDEN,
{'type': "Function"});
« no previous file with comments | « pkg/compiler/lib/src/resolution/constructors.dart ('k') | pkg/compiler/lib/src/resolution/resolution.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698