Support for generic (parametrized) types in source indexer. development
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 08 Oct 2013 09:28:45 +0100
branchdevelopment
changeset 2810 7072f7fb65f6
parent 2807 46f6ef83cce6
child 2811 8542f6311dcc
Support for generic (parametrized) types in source indexer.
tools/java/src/stx/libjava/tools/text/Highlighter.java
--- a/tools/java/src/stx/libjava/tools/text/Highlighter.java	Mon Oct 07 19:16:50 2013 +0100
+++ b/tools/java/src/stx/libjava/tools/text/Highlighter.java	Tue Oct 08 09:28:45 2013 +0100
@@ -16,6 +16,8 @@
 import org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
 import org.eclipse.jdt.internal.compiler.ast.MessageSend;
 import org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
+import org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference;
+import org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference;
 import org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference;
 import org.eclipse.jdt.internal.compiler.ast.QualifiedTypeReference;
 import org.eclipse.jdt.internal.compiler.ast.SingleNameReference;
@@ -205,8 +207,9 @@
             if (type.token == TypeBinding.LONG.simpleName) return;
             marker.mark(Marker.MARK_CLASS, type.sourceStart, type.sourceEnd);
             indexer.addTypeReference(type, type.sourceStart, type.sourceEnd);
-
         }
+        
+        
         public void endVisit(
                 SingleTypeReference type,
                 ClassScope scope) {
@@ -221,7 +224,21 @@
             if (type.token == TypeBinding.LONG.simpleName) return;
             marker.mark(Marker.MARK_CLASS, type.sourceStart, type.sourceEnd);
             indexer.addTypeReference(type, type.sourceStart, type.sourceEnd);
+        }
+        
+        public void endVisit(
+                ParameterizedSingleTypeReference type,
+                BlockScope scope) {
+            marker.mark(Marker.MARK_CLASS, type.sourceStart, type.sourceStart + type.token.length - 1);
+            indexer.addTypeReference(type, type.sourceStart, type.sourceStart + type.token.length - 1);            
+        }
 
+        public void endVisit(
+                ParameterizedSingleTypeReference type,
+                ClassScope scope) {
+            marker.mark(Marker.MARK_CLASS, type.sourceStart, type.sourceStart + type.token.length - 1);
+            indexer.addTypeReference(type, type.sourceStart, type.sourceStart + type.token.length - 1);
+            
         }
         
         public void endVisit(ArrayTypeReference type, BlockScope scope) {
@@ -322,6 +339,24 @@
             indexer.addTypeReference(type, type.sourceStart, type.sourceEnd);                
         }
         
+        public void endVisit(
+                ParameterizedQualifiedTypeReference type,
+                BlockScope scope) {
+            int start = type.sourceEnd;
+            int stop = (int)(type.sourcePositions[type.sourcePositions.length - 1] & 0x0000FFFFFFFF);
+            marker.mark(Marker.MARK_CLASS, start, stop);
+            indexer.addTypeReference(type, start, stop);            
+        }
+
+        public void endVisit(
+                ParameterizedQualifiedTypeReference type,
+                ClassScope scope) {
+            int start = type.sourceEnd;
+            int stop = (int)(type.sourcePositions[type.sourcePositions.length - 1] & 0x0000FFFFFFFF);
+            marker.mark(Marker.MARK_CLASS, start, stop);
+            indexer.addTypeReference(type, start, stop);            
+        }
+        
         public boolean visit(
                 ConstructorDeclaration constructorDeclaration,
                 ClassScope scope) {