From 4a1552e907705b8872f57c992170005ef848344c Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Tue, 16 May 2023 14:18:16 +0200 Subject: [PATCH] Use nameSequence instead of file extensions to reduce memory allocations #KTIJ-25470 --- .../kotlin/scripting/definitions/definitions.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/definitions.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/definitions.kt index e8a02fd0d6c..37daf9002a6 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/definitions.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/definitions.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.scripting.definitions -import com.intellij.ide.highlighter.JavaClassFileType import com.intellij.ide.highlighter.JavaFileType import com.intellij.injected.editor.VirtualFileWindow import com.intellij.openapi.application.ApplicationManager @@ -69,6 +68,7 @@ fun findScriptDefinition(project: Project, script: SourceCode): ScriptDefinition return scriptDefinitionProvider.findDefinition(script) ?: scriptDefinitionProvider.getDefaultDefinition() } +private const val JAVA_CLASS_FILE_TYPE_DOT_DEFAULT_EXTENSION = ".class" fun VirtualFile.isNonScript(): Boolean = when (this) { is VirtualFileWindow -> { // This file is an embedded Kotlin code snippet. @@ -78,17 +78,17 @@ fun VirtualFile.isNonScript(): Boolean = when (this) { if (isDirectory) { true } else { - val ext = extension - ext == KotlinFileType.EXTENSION || - ext == JavaFileType.DEFAULT_EXTENSION || - ext == JavaClassFileType.INSTANCE.defaultExtension || + val nameSeq = nameSequence + nameSeq.endsWith(KotlinFileType.DOT_DEFAULT_EXTENSION) || + nameSeq.endsWith(JavaFileType.DOT_DEFAULT_EXTENSION) || + nameSeq.endsWith(JAVA_CLASS_FILE_TYPE_DOT_DEFAULT_EXTENSION) || !this.isKotlinFileType() } } } private fun VirtualFile.isKotlinFileType(): Boolean { - if (extension == KotlinParserDefinition.STD_SCRIPT_SUFFIX) return true + if (nameSequence.endsWith(KotlinParserDefinition.STD_SCRIPT_EXT)) return true val typeRegistry = FileTypeRegistry.getInstance() return typeRegistry.getFileTypeByFile(this) == KotlinFileType.INSTANCE ||