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

Unified Diff: pkg/compiler/lib/src/typechecker.dart

Issue 1397053002: Introduce DartType.unaliased to avoid use of Resolution in the backend. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. 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/ssa/ssa.dart ('k') | pkg/compiler/lib/src/universe/universe.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/typechecker.dart
diff --git a/pkg/compiler/lib/src/typechecker.dart b/pkg/compiler/lib/src/typechecker.dart
index fe017effa61383c5b570091cac3de6260f1d02fd..53eb6bad375370f54724a34eee0638af38c4cfe5 100644
--- a/pkg/compiler/lib/src/typechecker.dart
+++ b/pkg/compiler/lib/src/typechecker.dart
@@ -59,7 +59,6 @@ import 'tree/tree.dart';
import 'util/util.dart' show
Link,
LinkBuilder;
-import '../compiler_new.dart' as api;
class TypeCheckerTask extends CompilerTask {
TypeCheckerTask(Compiler compiler) : super(compiler);
@@ -775,12 +774,12 @@ class TypeCheckerVisitor extends Visitor<DartType> {
}
DartType unaliasedBound =
- Types.computeUnaliasedBound(compiler, receiverType);
+ Types.computeUnaliasedBound(resolution, receiverType);
if (unaliasedBound.treatAsDynamic) {
return new DynamicAccess();
}
InterfaceType interface =
- Types.computeInterfaceType(compiler, unaliasedBound);
+ Types.computeInterfaceType(resolution, unaliasedBound);
ElementAccess access = getAccess(memberName, unaliasedBound, interface);
if (access != null) {
return access;
@@ -793,10 +792,10 @@ class TypeCheckerVisitor extends Visitor<DartType> {
TypePromotion typePromotion = typePromotions.head;
if (!typePromotion.isValid) {
DartType unaliasedBound =
- Types.computeUnaliasedBound(compiler, typePromotion.type);
+ Types.computeUnaliasedBound(resolution, typePromotion.type);
if (!unaliasedBound.treatAsDynamic) {
InterfaceType interface =
- Types.computeInterfaceType(compiler, unaliasedBound);
+ Types.computeInterfaceType(resolution, unaliasedBound);
if (getAccess(memberName, unaliasedBound, interface) != null) {
reportTypePromotionHint(typePromotion);
}
@@ -891,7 +890,8 @@ class TypeCheckerVisitor extends Visitor<DartType> {
void analyzeArguments(Send send, Element element, DartType type,
[LinkBuilder<DartType> argumentTypes]) {
Link<Node> arguments = send.arguments;
- DartType unaliasedType = type.unalias(resolution);
+ type.computeUnaliased(resolution);
+ DartType unaliasedType = type.unaliased;
if (identical(unaliasedType.kind, TypeKind.FUNCTION)) {
/// Report [warning] including info(s) about the declaration of [element]
@@ -1013,8 +1013,9 @@ class TypeCheckerVisitor extends Visitor<DartType> {
analyzeArguments(node, elementAccess.element, const DynamicType(),
argumentTypes);
}
- type = type.unalias(resolution);
- if (identical(type.kind, TypeKind.FUNCTION)) {
+ type.computeUnaliased(resolution);
+ type = type.unaliased;
+ if (type.isFunctionType) {
FunctionType funType = type;
return funType.returnType;
} else {
@@ -1151,7 +1152,7 @@ class TypeCheckerVisitor extends Visitor<DartType> {
// Compute `B<double, dynamic>` as the subtype of `A<double, int>` using
// the relation between `A<S, int>` and `A<double, int>`.
MoreSpecificSubtypeVisitor visitor =
- new MoreSpecificSubtypeVisitor(compiler);
+ new MoreSpecificSubtypeVisitor(types);
InterfaceType shownTypeGeneric = visitor.computeMoreSpecific(
shownClass, knownInterfaceType);
@@ -1845,7 +1846,7 @@ class TypeCheckerVisitor extends Visitor<DartType> {
isHint: true);
} else {
InterfaceType interfaceType =
- Types.computeInterfaceType(compiler, expressionType);
+ Types.computeInterfaceType(resolution, expressionType);
if (interfaceType != null) {
InterfaceType streamType =
interfaceType.asInstanceOf(compiler.streamClass);
« no previous file with comments | « pkg/compiler/lib/src/ssa/ssa.dart ('k') | pkg/compiler/lib/src/universe/universe.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698