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

Unified Diff: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/text/editor/SemanticHighlightings.java

Issue 15495004: Semantic highlighting for deprecated (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 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: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/text/editor/SemanticHighlightings.java
diff --git a/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/text/editor/SemanticHighlightings.java b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/text/editor/SemanticHighlightings.java
index c15c2e61b81c38b37d90f7db4ab503d3b85a8e9e..fdb8676564ed1de54ea9dc2543923d1acb9d0bb2 100644
--- a/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/text/editor/SemanticHighlightings.java
+++ b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/text/editor/SemanticHighlightings.java
@@ -34,6 +34,7 @@ import com.google.dart.engine.ast.MethodDeclaration;
import com.google.dart.engine.ast.PartDirective;
import com.google.dart.engine.ast.PartOfDirective;
import com.google.dart.engine.ast.SimpleIdentifier;
+import com.google.dart.engine.ast.StringLiteral;
import com.google.dart.engine.ast.TryStatement;
import com.google.dart.engine.ast.TypeAlias;
import com.google.dart.engine.ast.TypeName;
@@ -43,6 +44,8 @@ import com.google.dart.engine.ast.VariableDeclarationStatement;
import com.google.dart.engine.element.ClassElement;
import com.google.dart.engine.element.Element;
import com.google.dart.engine.element.ElementKind;
+import com.google.dart.engine.element.ImportElement;
+import com.google.dart.engine.element.LibraryElement;
import com.google.dart.engine.element.MethodElement;
import com.google.dart.engine.element.PropertyAccessorElement;
import com.google.dart.engine.element.PropertyInducingElement;
@@ -360,66 +363,69 @@ public class SemanticHighlightings {
}
}
-// /**
-// * Semantic highlighting deprecated elements.
-// * <p>
-// * TODO(scheglov) https://code.google.com/p/dart/issues/detail?id=10161
-// */
-// private static final class DeprecatedElementHighlighting extends DefaultSemanticHighlighting {
-// @Override
-// public boolean consumes(SemanticToken token) {
-// ASTNode node = token.getNode();
-// if (node instanceof StringLiteral && node.getParent() instanceof ImportDirective) {
-// Element element = node.getElement();
-// return element != null && element.getMetadata() != null
-// && element.getMetadata().isDeprecated();
-// }
-// return false;
-// }
-//
-// @Override
-// public boolean consumesIdentifier(SemanticToken token) {
-// SimpleIdentifier node = token.getNodeIdentifier();
-// Element element = node.getElement();
-// if (element != null) {
-// com.google.dart.engine.element.Annotation[] annotations = element.getMetadata();
-// for (com.google.dart.engine.element.Annotation annotation : annotations) {
-// Element annotationElement = annotation.getElement();
-// if (annotationElement != null) {
-// if (annotationElement.getName().equals("deprecated")) {
-// return true;
-// }
-// }
-// }
-// }
-// return false;
-// }
-//
-// @Override
-// public RGB getDefaultDefaultTextColor() {
-// return new RGB(0, 0, 0);
-// }
-//
-// @Override
-// public String getDisplayName() {
-// return DartEditorMessages.SemanticHighlighting_deprecatedElement;
-// }
-//
-// @Override
-// public String getPreferenceKey() {
-// return DEPRECATED_ELEMENT;
-// }
-//
-// @Override
-// public boolean isEnabledByDefault() {
-// return true;
-// }
-//
-// @Override
-// public boolean isStrikethroughByDefault() {
-// return true;
-// }
-// }
+ /**
+ * Semantic highlighting deprecated elements.
+ */
+ private static final class DeprecatedElementHighlighting extends DefaultSemanticHighlighting {
+ private static boolean isDeprecatedElement(Element element) {
+ if (element != null) {
+ com.google.dart.engine.element.Annotation[] annotations = element.getMetadata();
+ for (com.google.dart.engine.element.Annotation annotation : annotations) {
+ Element annotationElement = annotation.getElement();
+ if (annotationElement != null) {
+ if (annotationElement.getName().equals("deprecated")) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean consumes(SemanticToken token) {
+ ASTNode node = token.getNode();
+ if (node instanceof StringLiteral && node.getParent() instanceof ImportDirective) {
+ ImportDirective importDirective = (ImportDirective) node.getParent();
+ ImportElement importElement = (ImportElement) importDirective.getElement();
+ LibraryElement importedLibrary = importElement.getImportedLibrary();
+ return isDeprecatedElement(importedLibrary);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean consumesIdentifier(SemanticToken token) {
+ SimpleIdentifier node = token.getNodeIdentifier();
+ Element element = node.getElement();
+ return isDeprecatedElement(element);
+ }
+
+ @Override
+ public RGB getDefaultDefaultTextColor() {
+ return new RGB(0, 0, 0);
+ }
+
+ @Override
+ public String getDisplayName() {
+ return DartEditorMessages.SemanticHighlighting_deprecatedElement;
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return DEPRECATED_ELEMENT;
+ }
+
+ @Override
+ public boolean isEnabledByDefault() {
+ return true;
+ }
+
+ @Override
+ public boolean isStrikethroughByDefault() {
+ return true;
+ }
+ }
/**
* Highlights directives - "library", "import", "part of", etc.
@@ -1187,17 +1193,15 @@ public class SemanticHighlightings {
public static SemanticHighlighting[] getSemanticHighlightings() {
if (SEMANTIC_HIGHTLIGHTINGS == null) {
SEMANTIC_HIGHTLIGHTINGS = new SemanticHighlighting[] {
- new DirectiveHighlighting(),
- new BuiltInHighlighting(),
- // TODO(scheglov)
-// new DeprecatedElementHighlighting(),
- new GetterDeclarationHighlighting(), new SetterDeclarationHighlighting(),
- new AnnotationHighlighting(), new StaticFieldHighlighting(), new FieldHighlighting(),
- new DynamicTypeHighlighting(), new ClassHighlighting(), new TypeVariableHighlighting(),
- new NumberHighlighting(), new LocalVariableDeclarationHighlighting(),
- new LocalVariableHighlighting(), new ParameterHighlighting(),
- new StaticMethodDeclarationHighlighting(), new StaticMethodHighlighting(),
- new MethodDeclarationHighlighting(), new MethodHighlighting()};
+ new DirectiveHighlighting(), new BuiltInHighlighting(),
+ new DeprecatedElementHighlighting(), new GetterDeclarationHighlighting(),
+ new SetterDeclarationHighlighting(), new AnnotationHighlighting(),
+ new StaticFieldHighlighting(), new FieldHighlighting(), new DynamicTypeHighlighting(),
+ new ClassHighlighting(), new TypeVariableHighlighting(), new NumberHighlighting(),
+ new LocalVariableDeclarationHighlighting(), new LocalVariableHighlighting(),
+ new ParameterHighlighting(), new StaticMethodDeclarationHighlighting(),
+ new StaticMethodHighlighting(), new MethodDeclarationHighlighting(),
+ new MethodHighlighting()};
}
return SEMANTIC_HIGHTLIGHTINGS;
}
« no previous file with comments | « no previous file | editor/tools/plugins/com.google.dart.tools.ui_test/src/com/google/dart/tools/ui/internal/text/SemanticHighlightingTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698