Refactoring: use KtScript.scriptDefinition instead of KotlinScriptDefinitionProvider.findScriptDefinition if possible

This commit is contained in:
Natalia Selezneva
2018-07-20 16:22:49 +03:00
parent 736361e345
commit f71269009a
9 changed files with 51 additions and 49 deletions
@@ -16,12 +16,15 @@
package org.jetbrains.kotlin.script
import com.intellij.ide.highlighter.JavaClassFileType
import com.intellij.ide.highlighter.JavaFileType
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiFile
import com.intellij.psi.PsiManager
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.psi.KtFile
import java.util.concurrent.locks.ReentrantReadWriteLock
import kotlin.concurrent.read
import kotlin.concurrent.write
@@ -37,18 +40,25 @@ interface ScriptDefinitionProvider {
}
}
fun ScriptDefinitionProvider.findScriptDefinition(file: VirtualFile): KotlinScriptDefinition? =
if (file.isDirectory) null
else findScriptDefinition(file.name)
fun findScriptDefinition(file: VirtualFile, project: Project): KotlinScriptDefinition? {
if (file.isDirectory) return null
if (file.extension == KotlinFileType.EXTENSION || file.extension == JavaClassFileType.INSTANCE.defaultExtension) return null
val psiFile = PsiManager.getInstance(project).findFile(file)
if (psiFile != null) {
if (psiFile !is KtFile || !psiFile.isScript()) {
return null
}
return psiFile.script?.kotlinScriptDefinition?.value
}
fun getScriptDefinition(file: VirtualFile, project: Project): KotlinScriptDefinition? =
if (file.isDirectory) null
else ScriptDefinitionProvider.getInstance(project).findScriptDefinition(file)
return ScriptDefinitionProvider.getInstance(project).findScriptDefinition(file.name)
}
fun getScriptDefinition(psiFile: PsiFile): KotlinScriptDefinition? =
if (psiFile.isDirectory) null
else ScriptDefinitionProvider.getInstance(psiFile.project).findScriptDefinition(psiFile.name)
fun findScriptDefinition(psiFile: PsiFile): KotlinScriptDefinition? {
if (psiFile.isDirectory) return null
return (psiFile as? KtFile)?.script?.kotlinScriptDefinition?.value
}
abstract class LazyScriptDefinitionProvider : ScriptDefinitionProvider {