From 7e560e4d82335ef2bdcf600491ff42c5a3bcc45e Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 12 Nov 2018 12:04:14 +0100 Subject: [PATCH] don't even try to instantiate UAST for leaf elements where it surely won't exist or be needed --- .../codeInspection/AnnotatedElementInspectionBase.java | 3 ++- uast/uast-common/src/org/jetbrains/uast/UastContext.kt | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/jvm/jvm-analysis-impl/src/com/intellij/codeInspection/AnnotatedElementInspectionBase.java b/jvm/jvm-analysis-impl/src/com/intellij/codeInspection/AnnotatedElementInspectionBase.java index dd61047f14cc..2413a83fc949 100644 --- a/jvm/jvm-analysis-impl/src/com/intellij/codeInspection/AnnotatedElementInspectionBase.java +++ b/jvm/jvm-analysis-impl/src/com/intellij/codeInspection/AnnotatedElementInspectionBase.java @@ -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 } diff --git a/uast/uast-common/src/org/jetbrains/uast/UastContext.kt b/uast/uast-common/src/org/jetbrains/uast/UastContext.kt index 545a52b27e8c..869609b216e1 100644 --- a/uast/uast-common/src/org/jetbrains/uast/UastContext.kt +++ b/uast/uast-common/src/org/jetbrains/uast/UastContext.kt @@ -61,6 +61,10 @@ class UastContext(val project: Project) : UastLanguagePlugin { } override fun convertElementWithParent(element: PsiElement, requiredType: Class?): 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