diff --git a/ChangeLog.md b/ChangeLog.md index 21ce65ebc06..17bb7d822f0 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -336,6 +336,7 @@ These artifacts include extensions for the types available in the latter JDKs, s - [`KT-14583`](https://youtrack.jetbrains.com/issue/KT-14583) Change Signature: Use new signature when looking for redeclaration conflicts - [`KT-14854`](https://youtrack.jetbrains.com/issue/KT-14854) Extract Interface: Fix NPE on dialog opening +- [`KT-14814`](https://youtrack.jetbrains.com/issue/KT-14814) Rename: Fix renaming of .kts file to .kt and vice versa ## 1.0.5 diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtFile.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtFile.java index 3bd30ab9e6a..6cfdac15b6e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtFile.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtFile.java @@ -21,9 +21,12 @@ import com.intellij.lang.ASTNode; import com.intellij.lang.FileASTNode; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.stubs.StubElement; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.util.FileContentUtilCore; +import com.intellij.util.IncorrectOperationException; import kotlin.collections.ArraysKt; import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; @@ -32,9 +35,11 @@ import org.jetbrains.kotlin.KtNodeTypes; import org.jetbrains.kotlin.idea.KotlinFileType; import org.jetbrains.kotlin.idea.KotlinLanguage; import org.jetbrains.kotlin.name.FqName; +import org.jetbrains.kotlin.parsing.KotlinParserDefinition; import org.jetbrains.kotlin.psi.stubs.KotlinFileStub; import org.jetbrains.kotlin.psi.stubs.elements.KtPlaceHolderStubElementType; import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes; +import org.jetbrains.kotlin.utils.CollectionsKt; import java.util.Arrays; import java.util.Collections; @@ -268,4 +273,14 @@ public class KtFile extends PsiFileBase implements KtDeclarationContainer, KtAnn } }); } + + @Override + public PsiElement setName(@NotNull String name) throws IncorrectOperationException { + PsiElement result = super.setName(name); + boolean willBeScript = name.endsWith(KotlinParserDefinition.STD_SCRIPT_EXT); + if (isScript() != willBeScript) { + FileContentUtilCore.reparseFiles(CollectionsKt.singletonOrEmptyList(getVirtualFile())); + } + return result; + } }