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

Unified Diff: compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java

Issue 10907079: Generate different ErrorCodes for inferred and explicit type problems (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 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: compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
diff --git a/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java b/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
index 58e8158eefbf26139e8ac0fb922b8b75a68101dd..253d2da29b15d17065d6ae958666db41504e5cda 100644
--- a/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
+++ b/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
@@ -630,8 +630,10 @@ public class TypeAnalyzer implements DartCompilationPhase {
Member member = itype.lookupMember(methodName);
if (member == null && problemTarget != null) {
if (typeChecksForInferredTypes || !receiver.isInferred()) {
- typeError(problemTarget, TypeErrorCode.INTERFACE_HAS_NO_METHOD_NAMED, receiver,
- methodName);
+ ErrorCode code = receiver.isInferred()
+ ? TypeErrorCode.INTERFACE_HAS_NO_METHOD_NAMED_INFERRED
+ : TypeErrorCode.INTERFACE_HAS_NO_METHOD_NAMED;
+ typeError(problemTarget, code, receiver, methodName);
}
return null;
}
@@ -944,7 +946,10 @@ public class TypeAnalyzer implements DartCompilationPhase {
}
// do check and report error
if (!types.isAssignable(t, s)) {
- typeError(node, TypeErrorCode.TYPE_NOT_ASSIGNMENT_COMPATIBLE, s, t);
+ TypeErrorCode errorCode = t.isInferred() || s.isInferred()
+ ? TypeErrorCode.TYPE_NOT_ASSIGNMENT_COMPATIBLE_INFERRED
+ : TypeErrorCode.TYPE_NOT_ASSIGNMENT_COMPATIBLE;
+ typeError(node, errorCode, s, t);
return false;
}
// OK
@@ -1015,7 +1020,9 @@ public class TypeAnalyzer implements DartCompilationPhase {
}
default:
if (typeChecksForInferredTypes || !receiver.isInferred()) {
- typeError(diagnosticNode, TypeErrorCode.NOT_A_METHOD_IN, name, receiver);
+ TypeErrorCode errorCode = receiver.isInferred()
+ ? TypeErrorCode.NOT_A_METHOD_IN_INFERRED : TypeErrorCode.NOT_A_METHOD_IN;
+ typeError(diagnosticNode, errorCode, name, receiver);
}
return dynamicType;
}
@@ -2237,7 +2244,9 @@ public class TypeAnalyzer implements DartCompilationPhase {
InterfaceType.Member member = cls.lookupMember(name);
if (member == null) {
if (typeChecksForInferredTypes || !receiver.isInferred()) {
- typeError(node.getName(), TypeErrorCode.NOT_A_MEMBER_OF, name, cls);
+ TypeErrorCode errorCode = receiver.isInferred() ? TypeErrorCode.NOT_A_MEMBER_OF_INFERRED
+ : TypeErrorCode.NOT_A_MEMBER_OF;
+ typeError(node.getName(), errorCode, name, cls);
}
return dynamicType;
}

Powered by Google App Engine
This is Rietveld 408576698