From fa45122c6bdf79a406ed2c9d52b20665dd21e36f Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Wed, 14 Aug 2019 15:48:40 +0900 Subject: [PATCH] Minor: Fix warnings in KtCodeFragment --- .../jetbrains/kotlin/psi/KtCodeFragment.kt | 52 ++++++++++--------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtCodeFragment.kt b/compiler/psi/src/org/jetbrains/kotlin/psi/KtCodeFragment.kt index 2d673de34d9..6f8c19c9302 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/KtCodeFragment.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtCodeFragment.kt @@ -20,6 +20,7 @@ import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.project.Project import com.intellij.openapi.util.Key import com.intellij.psi.* +import com.intellij.psi.JavaCodeFragment.VisibilityChecker import com.intellij.psi.impl.PsiManagerEx import com.intellij.psi.impl.source.tree.FileElement import com.intellij.psi.search.GlobalSearchScope @@ -32,22 +33,18 @@ import org.jetbrains.kotlin.types.KotlinType import java.util.* abstract class KtCodeFragment( - private val _project: Project, + private val myProject: Project, name: String, text: CharSequence, - imports: String?, // Should be separated by JetCodeFragment.IMPORT_SEPARATOR + imports: String?, // Should be separated by KtCodeFragment.IMPORT_SEPARATOR elementType: IElementType, private val context: PsiElement? ) : KtFile( - (PsiManager.getInstance(_project) as PsiManagerEx).fileManager.createFileViewProvider( - LightVirtualFile( - name, - KotlinFileType.INSTANCE, - text - ), true - ), false + run { + val psiManager = PsiManager.getInstance(myProject) as PsiManagerEx + psiManager.fileManager.createFileViewProvider(LightVirtualFile(name, KotlinFileType.INSTANCE, text), true) + }, false ), KtCodeFragmentBase { - private var viewProvider = super.getViewProvider() as SingleRootFileViewProvider private var imports = LinkedHashSet() @@ -56,6 +53,7 @@ abstract class KtCodeFragment( } init { + @Suppress("LeakingThis") getViewProvider().forceCachedPsi(this) init(TokenType.CODE_FRAGMENT, elementType) if (context != null) { @@ -63,7 +61,7 @@ abstract class KtCodeFragment( } } - override final fun init(elementType: IElementType, contentElementType: IElementType?) { + final override fun init(elementType: IElementType, contentElementType: IElementType?) { super.init(elementType, contentElementType) } @@ -99,14 +97,19 @@ abstract class KtCodeFragment( override fun getResolveScope() = context?.resolveScope ?: super.getResolveScope() override fun clone(): KtCodeFragment { - val clone = cloneImpl(calcTreeElement().clone() as FileElement) as KtCodeFragment - clone.isPhysical = false - clone.myOriginalFile = this - clone.imports = imports - clone.viewProvider = - SingleRootFileViewProvider(PsiManager.getInstance(_project), LightVirtualFile(name, KotlinFileType.INSTANCE, text), false) - clone.viewProvider.forceCachedPsi(clone) - return clone + val elementClone = calcTreeElement().clone() as FileElement + + return (cloneImpl(elementClone) as KtCodeFragment).apply { + isPhysical = false + myOriginalFile = this@KtCodeFragment + imports = this@KtCodeFragment.imports + viewProvider = SingleRootFileViewProvider( + PsiManager.getInstance(myProject), + LightVirtualFile(name, KotlinFileType.INSTANCE, text), + false + ) + viewProvider.forceCachedPsi(this) + } } final override fun getViewProvider() = viewProvider @@ -149,7 +152,7 @@ abstract class KtCodeFragment( } fun importsAsImportList(): KtImportList? { - if (!imports.isEmpty() && context != null) { + if (imports.isNotEmpty() && context != null) { return KtPsiFactory(this).createAnalyzableFile("imports_for_codeFragment.kt", imports.joinToString("\n"), context).importList } return null @@ -158,9 +161,9 @@ abstract class KtCodeFragment( override val importDirectives: List get() = importsAsImportList()?.imports ?: emptyList() - override fun setVisibilityChecker(checker: JavaCodeFragment.VisibilityChecker?) {} + override fun setVisibilityChecker(checker: VisibilityChecker?) {} - override fun getVisibilityChecker() = JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE + override fun getVisibilityChecker(): VisibilityChecker = VisibilityChecker.EVERYTHING_VISIBLE override fun setExceptionHandler(checker: JavaCodeFragment.ExceptionHandler?) { exceptionHandler = checker @@ -182,8 +185,7 @@ abstract class KtCodeFragment( } private fun initImports(imports: String?) { - if (imports != null && !imports.isEmpty()) { - + if (imports != null && imports.isNotEmpty()) { val importsWithPrefix = imports.split(IMPORT_SEPARATOR).map { it.takeIf { it.startsWith("import ") } ?: "import ${it.trim()}" } importsWithPrefix.forEach { addImport(it) @@ -192,7 +194,7 @@ abstract class KtCodeFragment( } companion object { - val IMPORT_SEPARATOR: String = "," + const val IMPORT_SEPARATOR: String = "," val RUNTIME_TYPE_EVALUATOR: Key> = Key.create("RUNTIME_TYPE_EVALUATOR") val FAKE_CONTEXT_FOR_JAVA_FILE: Key> = Key.create("FAKE_CONTEXT_FOR_JAVA_FILE")