diff --git a/analysis/low-level-api-fir/testdata/fileStructure/classMemberPropertyScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/classMemberPropertyScript.kts new file mode 100644 index 00000000000..371c14a328f --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/classMemberPropertyScript.kts @@ -0,0 +1,11 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */class X { + var x: Int + get() = field + set(value) { + field = value + } + + val y = 42 + + var z: Int = 15 +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/classScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/classScript.kts new file mode 100644 index 00000000000..5b489cc40f9 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/classScript.kts @@ -0,0 +1,6 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */class A { + fun x() { + + } + fun y(): Int = 10 +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/constructorsScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/constructorsScript.kts new file mode 100644 index 00000000000..b624d59dfdf --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/constructorsScript.kts @@ -0,0 +1,9 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */class A + + (val a: Int) + +{ + constructor() : this(1) { + + } +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/danglingAnnotationClassLevelScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/danglingAnnotationClassLevelScript.kts new file mode 100644 index 00000000000..2ed4b2b0db2 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/danglingAnnotationClassLevelScript.kts @@ -0,0 +1,16 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */class Foo { + @Suppress("") @MustBeDocumented +} +class Bar { + @Suppress("") @MustBeDocumented +} +class Outer { + class Inner { + @Suppress("") @MustBeDocumented + } + fun foo() { + class Local { + @Suppress("") @MustBeDocumented + } + } +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/declarationsInPropertyInitScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/declarationsInPropertyInitScript.kts new file mode 100644 index 00000000000..c52cbb3770c --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/declarationsInPropertyInitScript.kts @@ -0,0 +1,11 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */class A { + val a = run { + class X() + + val y = 10 + } +} + +inline fun run(block: () -> R): R { + return block() +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/enumClassScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/enumClassScript.kts new file mode 100644 index 00000000000..10465a439f2 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/enumClassScript.kts @@ -0,0 +1,13 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */enum class A { + X, + Y, + Z + + ; + + fun foo(){} + + val x = 10 + + fun bar() = 10 +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/enumClassWithBodyScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/enumClassWithBodyScript.kts new file mode 100644 index 00000000000..8649c30c03b --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/enumClassWithBodyScript.kts @@ -0,0 +1,13 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */enum class A { + X { + fun localInX() = 1 + }, + Y { + override fun foo() {} + }, + Z, + + ; + + open fun foo() {} +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/initBlockScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/initBlockScript.kts new file mode 100644 index 00000000000..59f6da6c7b7 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/initBlockScript.kts @@ -0,0 +1,6 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */class A { + init { + val x = 10 + class B + } +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/localClassScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/localClassScript.kts new file mode 100644 index 00000000000..31166734444 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/localClassScript.kts @@ -0,0 +1,9 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */fun a() { + class X +} + +class Y { + fun b() { + class Z + } +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/localFunScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/localFunScript.kts new file mode 100644 index 00000000000..48164f33cb3 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/localFunScript.kts @@ -0,0 +1,13 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */fun x() { + fun y() { + + } +} + +class A { + fun z() { + fun q() { + + } + } +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/localPropertyScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/localPropertyScript.kts new file mode 100644 index 00000000000..3499d9004c3 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/localPropertyScript.kts @@ -0,0 +1,15 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */fun foo() { + var x: Int +} +class A { + fun q() { + val y = 42 + } +} +class B { + class C { + fun u() { + var z: Int = 15 + } + } +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/memberTypeAliasScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/memberTypeAliasScript.kts new file mode 100644 index 00000000000..1dc4cb18543 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/memberTypeAliasScript.kts @@ -0,0 +1,3 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */class A { + typealias X = Int +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/nestedClassesScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/nestedClassesScript.kts new file mode 100644 index 00000000000..ad63df94f4b --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/nestedClassesScript.kts @@ -0,0 +1,16 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */class A { + class B { + fun x() { + } + + class C { + + } + } + + class E { + + } + + fun y(): Int = 10 +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/propertyAccessorsScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/propertyAccessorsScript.kts new file mode 100644 index 00000000000..dc4006bd7b4 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/propertyAccessorsScript.kts @@ -0,0 +1,13 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */var x: Int = 10 + get() = field + set(value) { + field = value + } + +class X { + var y: Int = 10 + get() = field + set(value) { + field = value + } +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/script.kts b/analysis/low-level-api-fir/testdata/fileStructure/script.kts new file mode 100644 index 00000000000..6c7bfba9b3b --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/script.kts @@ -0,0 +1,26 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */class Builder { + var version: String = "" + + fun execute() { + println(version) + } +} + +fun build(action: Builder.() -> Unit) = Builder().apply(action) + +build { + version = "123" + class A { + fun doo() { + + } + } + + execute() +} + +val builder = build { + version = "321" +} + +builder.execute() diff --git a/analysis/low-level-api-fir/testdata/fileStructure/superClassCallScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/superClassCallScript.kts new file mode 100644 index 00000000000..732d36fc5dc --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/superClassCallScript.kts @@ -0,0 +1,35 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */open class A + (init: A.() -> Unit) +{ + val prop: String = "" +} + +class B() : A() + +object C : A( + { + fun foo() = B.prop.toString() + } +) { + +} + +val f = object : A( + { + fun bar() = B.prop.toString() + } +) { + +} + +class D : A( + { + fun foo() = B.prop.toString() + } +) { + constructor(): super( + { + fun boo() = prop.toString() + } + ) +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/topLevelExpressionBodyFunWithTypeScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/topLevelExpressionBodyFunWithTypeScript.kts new file mode 100644 index 00000000000..bde44e49897 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/topLevelExpressionBodyFunWithTypeScript.kts @@ -0,0 +1 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */fun foo(): Int = 42 diff --git a/analysis/low-level-api-fir/testdata/fileStructure/topLevelExpressionBodyFunWithoutTypeScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/topLevelExpressionBodyFunWithoutTypeScript.kts new file mode 100644 index 00000000000..2ee3934b3db --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/topLevelExpressionBodyFunWithoutTypeScript.kts @@ -0,0 +1 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */fun foo() = 42 diff --git a/analysis/low-level-api-fir/testdata/fileStructure/topLevelFunWithTypeScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/topLevelFunWithTypeScript.kts new file mode 100644 index 00000000000..49155f5aea2 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/topLevelFunWithTypeScript.kts @@ -0,0 +1,4 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */fun foo(): Int { + println("") + return 10 +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/topLevelPropertyScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/topLevelPropertyScript.kts new file mode 100644 index 00000000000..22a80eafe0a --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/topLevelPropertyScript.kts @@ -0,0 +1,9 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */var x: Int + get() = field + set(value) { + field = value + } + +val y = 42 + +var z: Int = 15 diff --git a/analysis/low-level-api-fir/testdata/fileStructure/topLevelUnitFunScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/topLevelUnitFunScript.kts new file mode 100644 index 00000000000..2f8d72e29e9 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/topLevelUnitFunScript.kts @@ -0,0 +1,3 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */fun foo() { + println("") +} diff --git a/analysis/low-level-api-fir/testdata/fileStructure/withoutNameScript.kts b/analysis/low-level-api-fir/testdata/fileStructure/withoutNameScript.kts new file mode 100644 index 00000000000..d65a546539a --- /dev/null +++ b/analysis/low-level-api-fir/testdata/fileStructure/withoutNameScript.kts @@ -0,0 +1,29 @@ +/* NonReanalyzableNonClassDeclarationStructureElement */fun (a: Int = 1): String = "str" + +fun () { + +} + +val : Int = 4 + +var : Int + get() = 4 + set(value) { + + } + +class A { + fun (a: Int = 1): String = "str" + + fun () { + + } + + val : Int = 4 + + var : Boolean + get() = true + set(value) { + + } +} diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/AbstractFileStructureTest.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/AbstractFileStructureTest.kt index 1cee31b742f..daa6926a1a5 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/AbstractFileStructureTest.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/AbstractFileStructureTest.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.isSourceSession import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirResolvableModuleSession import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AbstractLowLevelApiSingleFileTest import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirOutOfContentRootTestConfigurator +import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirScriptTestConfigurator import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirSourceTestConfigurator import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider import org.jetbrains.kotlin.psi.* @@ -66,6 +67,9 @@ abstract class AbstractFileStructureTest : AbstractLowLevelApiSingleFileTest() { is KtClassInitializer -> { elementToComment[ktDeclaration.openBraceNode!!] = comment } + is KtScript -> { + elementToComment[ktFile.importList!!] = comment + } else -> error("Unsupported declaration $ktDeclaration") } } @@ -121,5 +125,9 @@ abstract class AbstractSourceFileStructureTest : AbstractFileStructureTest() { } abstract class AbstractOutOfContentRootFileStructureTest : AbstractFileStructureTest() { - override val configurator = AnalysisApiFirOutOfContentRootTestConfigurator + override val configurator get() = AnalysisApiFirOutOfContentRootTestConfigurator +} + +abstract class AbstractScriptFileStructureTest : AbstractFileStructureTest() { + override val configurator get() = AnalysisApiFirScriptTestConfigurator } \ No newline at end of file diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/OutOfContentRootFileStructureTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/OutOfContentRootFileStructureTestGenerated.java index 227bb122bac..e7fe5e6ab91 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/OutOfContentRootFileStructureTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/OutOfContentRootFileStructureTestGenerated.java @@ -21,7 +21,7 @@ import java.util.regex.Pattern; public class OutOfContentRootFileStructureTestGenerated extends AbstractOutOfContentRootFileStructureTest { @Test public void testAllFilesPresentInFileStructure() throws Exception { - KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testdata/fileStructure"), Pattern.compile("^(.+)\\.kt$"), null, true); + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testdata/fileStructure"), Pattern.compile("^(.+)\\.(kt)$"), null, true); } @Test diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/ScriptFileStructureTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/ScriptFileStructureTestGenerated.java new file mode 100644 index 00000000000..4124f21f79f --- /dev/null +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/ScriptFileStructureTestGenerated.java @@ -0,0 +1,158 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("analysis/low-level-api-fir/testdata/fileStructure") +@TestDataPath("$PROJECT_ROOT") +public class ScriptFileStructureTestGenerated extends AbstractScriptFileStructureTest { + @Test + public void testAllFilesPresentInFileStructure() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testdata/fileStructure"), Pattern.compile("^(.+)\\.(kts)$"), null, true); + } + + @Test + @TestMetadata("classMemberPropertyScript.kts") + public void testClassMemberPropertyScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/classMemberPropertyScript.kts"); + } + + @Test + @TestMetadata("classScript.kts") + public void testClassScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/classScript.kts"); + } + + @Test + @TestMetadata("constructorsScript.kts") + public void testConstructorsScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/constructorsScript.kts"); + } + + @Test + @TestMetadata("danglingAnnotationClassLevelScript.kts") + public void testDanglingAnnotationClassLevelScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/danglingAnnotationClassLevelScript.kts"); + } + + @Test + @TestMetadata("declarationsInPropertyInitScript.kts") + public void testDeclarationsInPropertyInitScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/declarationsInPropertyInitScript.kts"); + } + + @Test + @TestMetadata("enumClassScript.kts") + public void testEnumClassScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/enumClassScript.kts"); + } + + @Test + @TestMetadata("enumClassWithBodyScript.kts") + public void testEnumClassWithBodyScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/enumClassWithBodyScript.kts"); + } + + @Test + @TestMetadata("initBlockScript.kts") + public void testInitBlockScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/initBlockScript.kts"); + } + + @Test + @TestMetadata("localClassScript.kts") + public void testLocalClassScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/localClassScript.kts"); + } + + @Test + @TestMetadata("localFunScript.kts") + public void testLocalFunScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/localFunScript.kts"); + } + + @Test + @TestMetadata("localPropertyScript.kts") + public void testLocalPropertyScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/localPropertyScript.kts"); + } + + @Test + @TestMetadata("memberTypeAliasScript.kts") + public void testMemberTypeAliasScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/memberTypeAliasScript.kts"); + } + + @Test + @TestMetadata("nestedClassesScript.kts") + public void testNestedClassesScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/nestedClassesScript.kts"); + } + + @Test + @TestMetadata("propertyAccessorsScript.kts") + public void testPropertyAccessorsScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/propertyAccessorsScript.kts"); + } + + @Test + @TestMetadata("script.kts") + public void testScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/script.kts"); + } + + @Test + @TestMetadata("superClassCallScript.kts") + public void testSuperClassCallScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/superClassCallScript.kts"); + } + + @Test + @TestMetadata("topLevelExpressionBodyFunWithTypeScript.kts") + public void testTopLevelExpressionBodyFunWithTypeScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/topLevelExpressionBodyFunWithTypeScript.kts"); + } + + @Test + @TestMetadata("topLevelExpressionBodyFunWithoutTypeScript.kts") + public void testTopLevelExpressionBodyFunWithoutTypeScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/topLevelExpressionBodyFunWithoutTypeScript.kts"); + } + + @Test + @TestMetadata("topLevelFunWithTypeScript.kts") + public void testTopLevelFunWithTypeScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/topLevelFunWithTypeScript.kts"); + } + + @Test + @TestMetadata("topLevelPropertyScript.kts") + public void testTopLevelPropertyScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/topLevelPropertyScript.kts"); + } + + @Test + @TestMetadata("topLevelUnitFunScript.kts") + public void testTopLevelUnitFunScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/topLevelUnitFunScript.kts"); + } + + @Test + @TestMetadata("withoutNameScript.kts") + public void testWithoutNameScript() throws Exception { + runTest("analysis/low-level-api-fir/testdata/fileStructure/withoutNameScript.kts"); + } +} diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/SourceFileStructureTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/SourceFileStructureTestGenerated.java index 9f15c023ef2..31f65405e13 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/SourceFileStructureTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/SourceFileStructureTestGenerated.java @@ -21,7 +21,7 @@ import java.util.regex.Pattern; public class SourceFileStructureTestGenerated extends AbstractSourceFileStructureTest { @Test public void testAllFilesPresentInFileStructure() throws Exception { - KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testdata/fileStructure"), Pattern.compile("^(.+)\\.kt$"), null, true); + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testdata/fileStructure"), Pattern.compile("^(.+)\\.(kt)$"), null, true); } @Test diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/firTestUtils.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/firTestUtils.kt index abf9827b586..fb3b248cc80 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/firTestUtils.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/firTestUtils.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionConfigurator import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirNotUnderContentRootResolveSession +import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirScriptResolveSession import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirSourceResolveSession import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider import org.jetbrains.kotlin.analysis.test.framework.services.environmentManager @@ -55,7 +56,7 @@ internal inline fun resolveWithCaches(context: KtElement, action: (LLFirReso internal val LLFirResolveSession.isSourceSession: Boolean get() { return when (this) { - is LLFirSourceResolveSession, is LLFirNotUnderContentRootResolveSession -> true + is LLFirSourceResolveSession, is LLFirNotUnderContentRootResolveSession, is LLFirScriptResolveSession -> true else -> false } } diff --git a/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/firLowLevel.kt b/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/firLowLevel.kt index 51b821d758e..f91c29492e7 100644 --- a/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/firLowLevel.kt +++ b/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/firLowLevel.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataTest import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.AbstractOutOfContentRootFileStructureTest import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.AbstractOutOfContentRootInBlockModificationTest +import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.AbstractScriptFileStructureTest import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.AbstractSourceFileStructureTest import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.AbstractSourceInBlockModificationTest import org.jetbrains.kotlin.analysis.low.level.api.fir.resolve.AbstractErrorResistanceTest @@ -68,11 +69,15 @@ internal fun TestGroupSuite.generateFirLowLevelApiTests() { } testClass { - model("fileStructure") + model("fileStructure", pattern = TestGeneratorUtil.KT) } testClass { - model("fileStructure") + model("fileStructure", pattern = TestGeneratorUtil.KT) + } + + testClass { + model("fileStructure", pattern = TestGeneratorUtil.KTS) } testClass {