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

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

Issue 10381080: Support for renaming getters and setters (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: If no getter/setter, keep FieldElement Created 8 years, 7 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 e8e37936220c3cc90e9729ab238cde76b468e6dd..88221918da00a107b288a734bab20058f1eee11b 100644
--- a/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
+++ b/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
@@ -107,6 +107,7 @@ import com.google.dart.compiler.resolver.Element;
import com.google.dart.compiler.resolver.ElementKind;
import com.google.dart.compiler.resolver.Elements;
import com.google.dart.compiler.resolver.FieldElement;
+import com.google.dart.compiler.resolver.LibraryElement;
import com.google.dart.compiler.resolver.MethodElement;
import com.google.dart.compiler.resolver.ResolverErrorCode;
import com.google.dart.compiler.resolver.TypeErrorCode;
@@ -1053,6 +1054,27 @@ public class TypeAnalyzer implements DartCompilationPhase {
break;
case FIELD:
+ type = typeAsMemberOf(element, currentClass);
+ type.getClass(); // quick null check
+ // try to resolve as getter/setter
+ if (element.getModifiers().isAbstractField()
+ && element.getEnclosingElement() instanceof LibraryElement) {
+ FieldElement fieldElement = (FieldElement) element;
+ if (Elements.inGetterContext(node)) {
+ MethodElement getter = fieldElement.getGetter();
+ if (getter != null) {
+ node.setElement(getter);
+ }
+ }
+ if (Elements.inSetterContext(node)) {
+ MethodElement setter = fieldElement.getSetter();
+ if (setter != null) {
+ node.setElement(setter);
+ }
+ }
+ }
+ break;
+
case METHOD:
type = typeAsMemberOf(element, currentClass);
type.getClass(); // quick null check

Powered by Google App Engine
This is Rietveld 408576698