From b79aa686bbba50be98f332f034782f2605836073 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 17 Dec 2015 15:20:59 +0300 Subject: [PATCH] Avoid analyze in suppression check if there are no suppression annotations --- .../kotlin/idea/caches/resolve/KotlinCacheService.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheService.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheService.kt index b95221e1aee..80883965c1b 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheService.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheService.kt @@ -26,6 +26,7 @@ import com.intellij.psi.util.CachedValuesManager import com.intellij.psi.util.PsiModificationTracker import com.intellij.util.containers.SLRUCache import org.jetbrains.kotlin.analyzer.EmptyResolverForProject +import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.container.getService import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.idea.project.AnalyzerFacadeProvider @@ -155,9 +156,17 @@ public class KotlinCacheService(val project: Project) { } } + private val suppressAnnotationShortName = KotlinBuiltIns.FQ_NAMES.suppress.shortName().identifier private val kotlinSuppressCache: CachedValue = CachedValuesManager.getManager(project).createCachedValue({ CachedValueProvider.Result(object : KotlinSuppressCache() { override fun getSuppressionAnnotations(annotated: KtAnnotated): List { + if (annotated.annotationEntries.none { + it.calleeExpression?.text?.endsWith(suppressAnnotationShortName) ?: false }) { + // Avoid running resolve heuristics + // TODO: Check aliases in imports + return emptyList() + } + val context = if (annotated is KtFile) { annotated.fileAnnotationList?.analyze(BodyResolveMode.PARTIAL) ?: return emptyList()