From 9ed8dec9fbd40aa479da51b6813421a4d49290b0 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Thu, 28 Apr 2016 16:07:28 +0200 Subject: [PATCH] Make a marker interface to allow ScriptDependenciesClassFilter to be used in the resolving --- .../resolve/jvm/KotlinJavaPsiFacade.java | 3 ++- .../resolve/jvm/KotlinSafeClassFinder.kt | 19 +++++++++++++++++++ .../KotlinScriptDependenciesClassFinder.kt | 3 ++- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/KotlinSafeClassFinder.kt diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java index 517fb1ea84b..b999fb4e21f 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java @@ -172,7 +172,8 @@ public class KotlinJavaPsiFacade { getProject().getExtensions(PsiElementFinder.EP_NAME), new Function1() { @Override public Boolean invoke(PsiElementFinder finder) { - return !(finder instanceof NonClasspathClassFinder || finder instanceof KotlinFinderMarker || finder instanceof PsiElementFinderImpl); + return (finder instanceof KotlinSafeClassFinder) || + !(finder instanceof NonClasspathClassFinder || finder instanceof KotlinFinderMarker || finder instanceof PsiElementFinderImpl); } }); diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/KotlinSafeClassFinder.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/KotlinSafeClassFinder.kt new file mode 100644 index 00000000000..dc308c87bb1 --- /dev/null +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/KotlinSafeClassFinder.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.resolve.jvm + +interface KotlinSafeClassFinder diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/script/KotlinScriptDependenciesClassFinder.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/script/KotlinScriptDependenciesClassFinder.kt index 873668fae04..4c0b101099d 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/script/KotlinScriptDependenciesClassFinder.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/script/KotlinScriptDependenciesClassFinder.kt @@ -27,11 +27,12 @@ import com.intellij.psi.search.GlobalSearchScope import com.intellij.util.containers.ConcurrentFactoryMap import org.jetbrains.kotlin.idea.caches.resolve.CustomizedScriptModuleSearchScope import org.jetbrains.kotlin.load.java.JavaClassFinderImpl +import org.jetbrains.kotlin.resolve.jvm.KotlinSafeClassFinder @Suppress("unused") // project extension class KotlinScriptDependenciesClassFinder(project: Project, private val kotlinScriptConfigurationManager: KotlinScriptConfigurationManager -) : NonClasspathClassFinder(project) { +) : NonClasspathClassFinder(project), KotlinSafeClassFinder { private val myCaches = object : ConcurrentFactoryMap() { override fun create(file: VirtualFile): PackageDirectoryCache? {