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

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

Issue 10918260: Issue 5044. Keep FieldElement as Element for field access (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 664f2bef5cb8c79adcd375d6355ca18057b11d3f..3e7b71e225290dc1ab0b09eb3d44010278e0639e 100644
--- a/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
+++ b/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
@@ -23,6 +23,7 @@ import com.google.dart.compiler.ErrorCode;
import com.google.dart.compiler.ErrorSeverity;
import com.google.dart.compiler.PackageLibraryManager;
import com.google.dart.compiler.Source;
+import com.google.dart.compiler.ast.ASTNodes;
import com.google.dart.compiler.ast.ASTVisitor;
import com.google.dart.compiler.ast.DartArrayAccess;
import com.google.dart.compiler.ast.DartArrayLiteral;
@@ -1813,19 +1814,17 @@ public class TypeAnalyzer implements DartCompilationPhase {
type = typeAsMemberOf(element, currentClass);
// try to resolve as getter/setter
FieldElement fieldElement = (FieldElement) element;
- if (Elements.inGetterContext(node)) {
+ DartNode properyAccess = ASTNodes.getPropertyAccessNode(node);
+ if (ASTNodes.inGetterContext(properyAccess)) {
MethodElement getter = fieldElement.getGetter();
if (getter != null) {
- node.setElement(getter);
type = ((FunctionType) typeAsMemberOf(getter, currentClass)).getReturnType();
node.setType(type);
}
- } else if (Elements.inSetterContext(node)) {
+ } else if (ASTNodes.inSetterContext(properyAccess)) {
MethodElement setter = fieldElement.getSetter();
if (setter != null) {
if (setter.getParameters().size() > 0) {
- node.setElement(setter);
- node.getParent().setElement(setter);
type = setter.getParameters().get(0).getType();
node.setType(type);
}
@@ -2308,8 +2307,8 @@ public class TypeAnalyzer implements DartCompilationPhase {
Modifiers fieldModifiers = fieldElement.getModifiers();
MethodElement getter = fieldElement.getGetter();
MethodElement setter = fieldElement.getSetter();
- boolean inSetterContext = Elements.inSetterContext(node);
- boolean inGetterContext = Elements.inGetterContext(node);
+ boolean inSetterContext = ASTNodes.inSetterContext(node);
+ boolean inGetterContext = ASTNodes.inGetterContext(node);
ClassElement enclosingClass = null;
if (fieldElement.getEnclosingElement() instanceof ClassElement) {
enclosingClass = (ClassElement) fieldElement.getEnclosingElement();
@@ -2330,8 +2329,6 @@ public class TypeAnalyzer implements DartCompilationPhase {
return typeError(node.getName(), TypeErrorCode.FIELD_HAS_NO_SETTER, node.getName());
}
}
- node.setElement(setter);
- node.getParent().setElement(setter);
}
// Check for using field without getter in other operation that assignment.
if (inGetterContext) {
@@ -2341,7 +2338,6 @@ public class TypeAnalyzer implements DartCompilationPhase {
return typeError(node.getName(), TypeErrorCode.FIELD_HAS_NO_GETTER, node.getName());
}
}
- node.setElement(getter);
}
}

Powered by Google App Engine
This is Rietveld 408576698