Create template quick fix now works for unresolved include and extends (PY-1210).
authorDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Tue, 29 Mar 2011 17:17:57 +0000 (21:17 +0400)
committerDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Tue, 29 Mar 2011 17:32:03 +0000 (21:32 +0400)
platform/lang-api/src/com/intellij/psi/PsiReferenceWrapper.java

index 7864dd41b4045c0df08ca8ada3a80c90cbb2dfee..be65dc32fb4f9d8e4fa5fece0764e3c8aff74b0c 100644 (file)
@@ -1,15 +1,13 @@
 package com.intellij.psi;
 
 import com.intellij.openapi.util.TextRange;
-import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiReference;
 import com.intellij.util.IncorrectOperationException;
 import org.jetbrains.annotations.NotNull;
 
 /**
  * @author traff
  */
-public class PsiReferenceWrapper implements PsiReference{
+public class PsiReferenceWrapper implements PsiReference {
   private final PsiReference myOriginalPsiReference;
 
   public PsiReferenceWrapper(PsiReference originalPsiReference) {
@@ -62,4 +60,18 @@ public class PsiReferenceWrapper implements PsiReference{
   public boolean isSoft() {
     return myOriginalPsiReference.isSoft();
   }
+
+  public <T extends PsiReference> boolean isInstance(Class<T> clazz) {
+    if (myOriginalPsiReference instanceof PsiReferenceWrapper) {
+      return ((PsiReferenceWrapper)myOriginalPsiReference).isInstance(clazz);
+    }
+    return clazz.isInstance(myOriginalPsiReference);
+  }
+
+  public <T extends PsiReference> T cast(Class<T> clazz) {
+    if (myOriginalPsiReference instanceof PsiReferenceWrapper) {
+      return ((PsiReferenceWrapper)myOriginalPsiReference).cast(clazz);
+    }
+    return clazz.cast(myOriginalPsiReference);
+  }
 }