From 4aa79dd3e83427863975db47201a6c1ecbd250e8 Thu, 12 Aug 2010 13:58:03 +0800 From: Jin Mingjian Date: Thu, 12 Aug 2010 13:48:06 +0800 Subject: [PATCH] Some mirror modifications, and add one workaround for cache related bugs, like bug#1000103 diff --git a/org.scala-ide.sdt.core/plugin.xml b/org.scala-ide.sdt.core/plugin.xml index 4858327..d40590e 100644 --- a/org.scala-ide.sdt.core/plugin.xml +++ b/org.scala-ide.sdt.core/plugin.xml @@ -854,4 +854,12 @@ + + + + diff --git a/org.scala-ide.sdt.core/src/scala/tools/eclipse/ui/semantic/highlighting/ImplicitConversionsOrArgsAnnotation.scala b/org.scala-ide.sdt.core/src/scala/tools/eclipse/ui/semantic/highlighting/ImplicitConversionsOrArgsAnnotation.scala index 758b7a0..6ed0cb2 100644 --- a/org.scala-ide.sdt.core/src/scala/tools/eclipse/ui/semantic/highlighting/ImplicitConversionsOrArgsAnnotation.scala +++ b/org.scala-ide.sdt.core/src/scala/tools/eclipse/ui/semantic/highlighting/ImplicitConversionsOrArgsAnnotation.scala @@ -12,8 +12,29 @@ import org.eclipse.swt.custom.StyleRange import org.eclipse.swt.graphics.Color import org.eclipse.jface.text.source.AnnotationPainter; +import org.eclipse.jdt.internal.ui.javaeditor.IJavaAnnotation +import org.eclipse.jdt.core.ICompilationUnit -class ImplicitConversionsOrArgsAnnotation(kind: String, isPersistent: Boolean, text: String) extends Annotation(kind, isPersistent, text) +class ImplicitConversionsOrArgsAnnotation(cu: ICompilationUnit, kind: String, isPersistent: Boolean, text: String) + extends Annotation(kind, isPersistent, text) with IJavaAnnotation { + + // + override def getType(): String = ImplicitConversionsOrArgsAnnotation.KIND + override def isPersistent() = true + override def isMarkedDeleted() = false + override def getText = super.getText() + override def hasOverlay() = false + override def getOverlay() = null + override def getOverlaidIterator() = null + override def addOverlaid(annotation: IJavaAnnotation){} + override def removeOverlaid(annotation: IJavaAnnotation){} + override def isProblem() = false + override def getCompilationUnit() = cu + override def getArguments() = null + override def getId() = 0 //XXX: hacking for jdt's org.eclipse.jdt.internal.ui.text.correction.JavaCorrectionProcessor + override def getMarkerType() = null + +} object ImplicitConversionsOrArgsAnnotation { final val KIND = "scala.tools.eclipse.ui.semantic.highlighting.implicitConversionsOrArgsAnnotation" diff --git a/org.scala-ide.sdt.core/src/scala/tools/eclipse/ui/semantic/highlighting/SemanticHighlightingPresenter.scala b/org.scala-ide.sdt.core/src/scala/tools/eclipse/ui/semantic/highlighting/SemanticHighlightingPresenter.scala index 5be4bcd..7b2eda5 100644 --- a/org.scala-ide.sdt.core/src/scala/tools/eclipse/ui/semantic/highlighting/SemanticHighlightingPresenter.scala +++ b/org.scala-ide.sdt.core/src/scala/tools/eclipse/ui/semantic/highlighting/SemanticHighlightingPresenter.scala @@ -33,7 +33,7 @@ class SemanticHighlightingPresenter(fEditor: CompilationUnitEditor, fSourceViewer: ISourceViewer) extends IDocumentListener { - var currentAnnotations: List[Annotation] = List() + import SemanticHighlightingPresenter._ val annotationAccess = new IAnnotationAccess() { def getType(annotation: Annotation) = annotation.getType(); @@ -92,22 +92,24 @@ object viewsCollector extends compiler.Traverser { override def traverse(t: compiler.Tree): Unit = t match { case v: compiler.ApplyImplicitView => - val ia = new ImplicitConversionsOrArgsAnnotation(ImplicitConversionsOrArgsAnnotation.KIND, + val txt = fSourceViewer.getDocument().get(v.pos.start, v.pos.end - v.pos.start) + val ia = new ImplicitConversionsOrArgsAnnotation(cu,ImplicitConversionsOrArgsAnnotation.KIND, false, - v.fun.toString) + "Implicit conversions found: "+txt+" => "+v.fun.symbol.name+"("+txt+")") val pos = new org.eclipse.jface.text.Position(v.pos.start, v.pos.end - v.pos.start); toAdds.put(ia, pos) toAddAnnotations = ia :: toAddAnnotations - println(v) super.traverse(t) case v: compiler.ApplyToImplicitArgs => - val ia = new ImplicitConversionsOrArgsAnnotation(ImplicitConversionsOrArgsAnnotation.KIND, + val txt = fSourceViewer.getDocument().get(v.pos.start, v.pos.end - v.pos.start) + val sb = new StringBuilder() + for (arg <- v.args) sb.append(arg.symbol.name).append(",") + val ia = new ImplicitConversionsOrArgsAnnotation(cu,ImplicitConversionsOrArgsAnnotation.KIND, false, - v.fun.toString) + "Implicit arguments found: "+txt+" => "+txt+"("+sb.deleteCharAt(sb.length()-1).toString()+")") val pos = new org.eclipse.jface.text.Position(v.pos.start, v.pos.end - v.pos.start); toAdds.put(ia, pos) toAddAnnotations = ia :: toAddAnnotations - println(v) super.traverse(t) case _ => super.traverse(t) @@ -124,5 +126,10 @@ def getPreferenceStore(): IPreferenceStore = { scala.tools.eclipse.ScalaPlugin.plugin.getPreferenceStore() } + +} +object SemanticHighlightingPresenter { + //XXX: workaround for current cache related bugs, like bug#1000103 + var currentAnnotations: List[Annotation] = List() } \ No newline at end of file -- Git Team Provider UI (Incubation) 0.8.4