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

Unified Diff: editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java

Issue 25509003: It is statically OK to call methods on bottom type. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 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: editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java
diff --git a/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java b/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java
index a3ceacd4182cb80410800a6102570b89464de7c5..89b4fbcbb86d345a1705e0e4c4d87512417e4829 100644
--- a/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java
+++ b/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java
@@ -894,7 +894,8 @@ public class ElementResolver extends SimpleASTVisitor<Void> {
staticElement = resolveInvokedElement(methodName);
propagatedElement = null;
} else {
- staticElement = resolveInvokedElement(target, getStaticType(target), methodName);
+ Type staticType = getStaticType(target);
+ staticElement = resolveInvokedElement(target, staticType, methodName);
propagatedElement = resolveInvokedElement(target, getPropagatedType(target), methodName);
}
staticElement = convertSetterToGetter(staticElement);
@@ -1432,7 +1433,7 @@ public class ElementResolver extends SimpleASTVisitor<Void> {
}
if (targetType == null) {
return CompileTimeErrorCode.UNDEFINED_FUNCTION;
- } else if (!targetType.isDynamic()) {
+ } else if (!targetType.isDynamic() && !targetType.isBottom()) {
// Proxy-conditional warning, based on state of targetType.getElement()
return StaticTypeWarningCode.UNDEFINED_METHOD;
}
@@ -1655,7 +1656,7 @@ public class ElementResolver extends SimpleASTVisitor<Void> {
*/
private Type getStaticType(Expression expression) {
if (expression instanceof NullLiteral) {
- return resolver.getTypeProvider().getObjectType();
+ return resolver.getTypeProvider().getBottomType();
}
Type staticType = resolveTypeParameter(expression.getStaticType());
if (staticType instanceof FunctionType) {
@@ -2691,7 +2692,7 @@ public class ElementResolver extends SimpleASTVisitor<Void> {
* @return {@code true} if we should report an error
*/
private boolean shouldReportMissingMember(Type type, ExecutableElement member) {
- if (member != null || type == null || type.isDynamic()) {
+ if (member != null || type == null || type.isDynamic() || type.isBottom()) {
return false;
}
return true;

Powered by Google App Engine
This is Rietveld 408576698