don't even try to instantiate UAST for leaf elements where it surely won't exist or be needed

This commit is contained in:
peter
2018-11-12 12:04:57 +01:00
parent e76792b50c
commit 7e560e4d82
2 changed files with 6 additions and 1 deletions
@@ -9,6 +9,7 @@ import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.tree.LeafPsiElement;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtilCore;
@@ -57,7 +58,7 @@ public abstract class AnnotatedElementInspectionBase extends LocalInspectionTool
@Override
public void visitElement(PsiElement element) {
super.visitElement(element);
if (element instanceof PsiLanguageInjectionHost) {
if (element instanceof PsiLanguageInjectionHost || element instanceof LeafPsiElement) {
return; // better performance
}
@@ -61,6 +61,10 @@ class UastContext(val project: Project) : UastLanguagePlugin {
}
override fun convertElementWithParent(element: PsiElement, requiredType: Class<out UElement>?): UElement? {
if (element is PsiWhiteSpace) {
return null
}
val cachedElement = element.getUserData(CACHED_UELEMENT_KEY)?.get()
if (cachedElement != null) {
return if (requiredType == null || requiredType.isInstance(cachedElement)) cachedElement else null