[LL FIR] introduce test with reversed resolve order
^KT-56543 Merge-request: KT-MR-9299 Merged-by: Dmitrii Gridin <dmitry.gridin@jetbrains.com>
This commit is contained in:
committed by
Space Team
parent
8528519d96
commit
9a4a3d1f49
+11
-13
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* 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.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -9,8 +9,8 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilter
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilter
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactory
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.FirLowLevelCompilerBasedTestConfigurator
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.FirLowLevelCompilerBasedTestConfigurator
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirLazyTransformer
|
|
||||||
import org.jetbrains.kotlin.analysis.test.framework.AbstractCompilerBasedTest
|
import org.jetbrains.kotlin.analysis.test.framework.AbstractCompilerBasedTest
|
||||||
import org.jetbrains.kotlin.analysis.test.framework.base.registerAnalysisApiBaseTestServices
|
import org.jetbrains.kotlin.analysis.test.framework.base.registerAnalysisApiBaseTestServices
|
||||||
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtSourceModuleByCompilerConfiguration
|
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtSourceModuleByCompilerConfiguration
|
||||||
@@ -31,7 +31,9 @@ import org.jetbrains.kotlin.test.frontend.fir.FirOutputPartForDependsOnModule
|
|||||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||||
import org.jetbrains.kotlin.test.model.TestModule
|
import org.jetbrains.kotlin.test.model.TestModule
|
||||||
import org.jetbrains.kotlin.test.services.*
|
import org.jetbrains.kotlin.test.services.ServiceRegistrationData
|
||||||
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
|
import org.jetbrains.kotlin.test.services.isKtFile
|
||||||
|
|
||||||
abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
||||||
final override fun TestConfigurationBuilder.configuration() {
|
final override fun TestConfigurationBuilder.configuration() {
|
||||||
@@ -63,7 +65,8 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
|||||||
open fun TestConfigurationBuilder.configureTest() {}
|
open fun TestConfigurationBuilder.configureTest() {}
|
||||||
|
|
||||||
inner class LowLevelFirFrontendFacade(
|
inner class LowLevelFirFrontendFacade(
|
||||||
testServices: TestServices
|
testServices: TestServices,
|
||||||
|
private val facadeFactory: LLFirAnalyzerFacadeFactory,
|
||||||
) : FirFrontendFacade(testServices) {
|
) : FirFrontendFacade(testServices) {
|
||||||
override val additionalServices: List<ServiceRegistrationData>
|
override val additionalServices: List<ServiceRegistrationData>
|
||||||
get() = emptyList()
|
get() = emptyList()
|
||||||
@@ -99,7 +102,7 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
|||||||
DiagnosticCheckerFilter.EXTENDED_AND_COMMON_CHECKERS
|
DiagnosticCheckerFilter.EXTENDED_AND_COMMON_CHECKERS
|
||||||
} else DiagnosticCheckerFilter.ONLY_COMMON_CHECKERS
|
} else DiagnosticCheckerFilter.ONLY_COMMON_CHECKERS
|
||||||
|
|
||||||
val analyzerFacade = LowLevelFirAnalyzerFacade(firResolveSession, allFirFiles.toMap(), diagnosticCheckerFilter)
|
val analyzerFacade = facadeFactory.createFirFacade(firResolveSession, allFirFiles.toMap(), diagnosticCheckerFilter)
|
||||||
return FirOutputPartForDependsOnModule(
|
return FirOutputPartForDependsOnModule(
|
||||||
module,
|
module,
|
||||||
firResolveSession.useSiteFirSession,
|
firResolveSession.useSiteFirSession,
|
||||||
@@ -115,12 +118,7 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
|||||||
if (ignoreTest(filePath, configuration)) {
|
if (ignoreTest(filePath, configuration)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val oldEnableDeepEnsure = LLFirLazyTransformer.needCheckingIfClassMembersAreResolved
|
|
||||||
try {
|
super.runTest(filePath)
|
||||||
LLFirLazyTransformer.needCheckingIfClassMembersAreResolved = true
|
|
||||||
super.runTest(filePath)
|
|
||||||
} finally {
|
|
||||||
LLFirLazyTransformer.needCheckingIfClassMembersAreResolved = oldEnableDeepEnsure
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+15
-4
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* 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.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -10,14 +10,17 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDiagnosticsForFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDiagnosticsForFile
|
||||||
import org.jetbrains.kotlin.diagnostics.KtDiagnostic
|
import org.jetbrains.kotlin.diagnostics.KtDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.AbstractFirAnalyzerFacade
|
import org.jetbrains.kotlin.fir.AbstractFirAnalyzerFacade
|
||||||
import org.jetbrains.kotlin.fir.backend.*
|
import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage
|
||||||
|
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
|
||||||
|
import org.jetbrains.kotlin.fir.backend.Fir2IrResult
|
||||||
|
import org.jetbrains.kotlin.fir.backend.IrBuiltInsOverFir
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.psi
|
import org.jetbrains.kotlin.fir.psi
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.test.model.TestFile
|
import org.jetbrains.kotlin.test.model.TestFile
|
||||||
|
|
||||||
class LowLevelFirAnalyzerFacade(
|
open class LowLevelFirAnalyzerFacade(
|
||||||
val firResolveSession: LLFirResolveSession,
|
val firResolveSession: LLFirResolveSession,
|
||||||
val allFirFiles: Map<TestFile, FirFile>,
|
val allFirFiles: Map<TestFile, FirFile>,
|
||||||
private val diagnosticCheckerFilter: DiagnosticCheckerFilter,
|
private val diagnosticCheckerFilter: DiagnosticCheckerFilter,
|
||||||
@@ -25,7 +28,14 @@ class LowLevelFirAnalyzerFacade(
|
|||||||
override val scopeSession: ScopeSession
|
override val scopeSession: ScopeSession
|
||||||
get() = ScopeSession()
|
get() = ScopeSession()
|
||||||
|
|
||||||
|
private var resolved: Boolean = false
|
||||||
|
|
||||||
override fun runCheckers(): Map<FirFile, List<KtDiagnostic>> {
|
override fun runCheckers(): Map<FirFile, List<KtDiagnostic>> {
|
||||||
|
if (!resolved) {
|
||||||
|
runResolution()
|
||||||
|
resolved = true
|
||||||
|
}
|
||||||
|
|
||||||
return allFirFiles.values.associateWith { firFile ->
|
return allFirFiles.values.associateWith { firFile ->
|
||||||
val ktFile = firFile.psi as KtFile
|
val ktFile = firFile.psi as KtFile
|
||||||
val diagnostics = ktFile.collectDiagnosticsForFile(firResolveSession, diagnosticCheckerFilter)
|
val diagnostics = ktFile.collectDiagnosticsForFile(firResolveSession, diagnosticCheckerFilter)
|
||||||
@@ -34,7 +44,8 @@ class LowLevelFirAnalyzerFacade(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun runResolution(): List<FirFile> = shouldNotBeCalled()
|
override fun runResolution(): List<FirFile> = allFirFiles.values.toList()
|
||||||
|
|
||||||
override fun convertToIr(
|
override fun convertToIr(
|
||||||
fir2IrExtensions: Fir2IrExtensions,
|
fir2IrExtensions: Fir2IrExtensions,
|
||||||
commonMemberStorage: Fir2IrCommonMemberStorage,
|
commonMemberStorage: Fir2IrCommonMemberStorage,
|
||||||
|
|||||||
+5
-3
@@ -1,16 +1,18 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* 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.
|
* 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.diagnostic.compiler.based
|
package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractCompilerBasedTestForFir
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractCompilerBasedTestForFir
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactoryWithoutPreresolve
|
||||||
|
import org.jetbrains.kotlin.test.bind
|
||||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||||
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
||||||
|
|
||||||
abstract class AbstractDiagnosisCompilerTestDataTest : AbstractCompilerBasedTestForFir() {
|
abstract class AbstractDiagnosticCompilerTestDataTest : AbstractCompilerBasedTestForFir() {
|
||||||
override fun TestConfigurationBuilder.configureTest() {
|
override fun TestConfigurationBuilder.configureTest() {
|
||||||
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade)
|
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+10
-4
@@ -1,18 +1,24 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* 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.
|
* 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.diagnostic.compiler.based
|
package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractCompilerBasedTestForFir
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractCompilerBasedTestForFir
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactoryWithoutPreresolve
|
||||||
|
import org.jetbrains.kotlin.test.bind
|
||||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||||
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
||||||
import org.jetbrains.kotlin.test.runners.baseFirSpecDiagnosticTestConfiguration
|
import org.jetbrains.kotlin.test.runners.baseFirSpecDiagnosticTestConfiguration
|
||||||
|
|
||||||
abstract class AbstractLLFirDiagnosisCompilerTestDataSpecTest : AbstractCompilerBasedTestForFir() {
|
abstract class AbstractLLFirDiagnosticCompilerTestDataSpecTest : AbstractCompilerBasedTestForFir() {
|
||||||
override fun TestConfigurationBuilder.configureTest() {
|
override fun TestConfigurationBuilder.configureTest() {
|
||||||
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade)
|
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve))
|
||||||
baseFirSpecDiagnosticTestConfiguration()
|
baseFirSpecDiagnosticTestConfigurationForIde()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun TestConfigurationBuilder.baseFirSpecDiagnosticTestConfigurationForIde() {
|
||||||
|
baseFirSpecDiagnosticTestConfiguration()
|
||||||
|
}
|
||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* 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.diagnostic.compiler.based
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractCompilerBasedTestForFir
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder
|
||||||
|
import org.jetbrains.kotlin.test.bind
|
||||||
|
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||||
|
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
||||||
|
|
||||||
|
abstract class AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataSpecTest : AbstractCompilerBasedTestForFir() {
|
||||||
|
override fun TestConfigurationBuilder.configureTest() {
|
||||||
|
baseFirDiagnosticTestConfiguration(
|
||||||
|
frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder)
|
||||||
|
)
|
||||||
|
baseFirSpecDiagnosticTestConfigurationForIde()
|
||||||
|
useAfterAnalysisCheckers(::FirReversedSuppressor)
|
||||||
|
}
|
||||||
|
}
|
||||||
+54
@@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* 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.diagnostic.compiler.based
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractCompilerBasedTestForFir
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder
|
||||||
|
import org.jetbrains.kotlin.test.bind
|
||||||
|
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||||
|
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
||||||
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
|
import org.jetbrains.kotlin.test.WrappedException
|
||||||
|
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
||||||
|
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
||||||
|
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
|
||||||
|
import org.jetbrains.kotlin.test.services.moduleStructure
|
||||||
|
|
||||||
|
abstract class AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataTest : AbstractCompilerBasedTestForFir() {
|
||||||
|
override fun TestConfigurationBuilder.configureTest() {
|
||||||
|
baseFirDiagnosticTestConfiguration(
|
||||||
|
frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder)
|
||||||
|
)
|
||||||
|
|
||||||
|
useAfterAnalysisCheckers(::FirReversedSuppressor)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class FirReversedSuppressor(testServices: TestServices) : AfterAnalysisChecker(testServices) {
|
||||||
|
override val directiveContainers: List<DirectivesContainer> get() = listOf(Companion)
|
||||||
|
|
||||||
|
override fun suppressIfNeeded(failedAssertions: List<WrappedException>): List<WrappedException> {
|
||||||
|
if (!isDisabled()) {
|
||||||
|
return failedAssertions
|
||||||
|
}
|
||||||
|
|
||||||
|
return if (failedAssertions.isEmpty()) {
|
||||||
|
listOf(
|
||||||
|
AssertionError(
|
||||||
|
"Test contains $IGNORE_REVERSED_RESOLVE directive but no errors was reported. Please remove directive",
|
||||||
|
).wrap()
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
emptyList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isDisabled(): Boolean = IGNORE_REVERSED_RESOLVE in testServices.moduleStructure.allDirectives
|
||||||
|
|
||||||
|
companion object : SimpleDirectivesContainer() {
|
||||||
|
val IGNORE_REVERSED_RESOLVE by directive("Temporary disables reversed resolve checks until the issue is fixed")
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -17,7 +17,7 @@ import java.util.regex.Pattern;
|
|||||||
|
|
||||||
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||||
@SuppressWarnings("all")
|
@SuppressWarnings("all")
|
||||||
public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiagnosisCompilerTestDataTest {
|
public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDiagnosticCompilerTestDataTest {
|
||||||
@Nested
|
@Nested
|
||||||
@TestMetadata("compiler/testData/diagnostics/tests")
|
@TestMetadata("compiler/testData/diagnostics/tests")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
+1
-1
@@ -16,7 +16,7 @@ import java.util.regex.Pattern;
|
|||||||
|
|
||||||
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||||
@SuppressWarnings("all")
|
@SuppressWarnings("all")
|
||||||
public class DiagnosisCompilerTestFirTestdataTestGenerated extends AbstractDiagnosisCompilerTestDataTest {
|
public class DiagnosticCompilerTestFirTestdataTestGenerated extends AbstractDiagnosticCompilerTestDataTest {
|
||||||
@Nested
|
@Nested
|
||||||
@TestMetadata("compiler/fir/analysis-tests/testData/resolve")
|
@TestMetadata("compiler/fir/analysis-tests/testData/resolve")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
+1
-1
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
|
|||||||
@SuppressWarnings("all")
|
@SuppressWarnings("all")
|
||||||
@TestMetadata("compiler/tests-spec/testData/diagnostics")
|
@TestMetadata("compiler/tests-spec/testData/diagnostics")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
public class FirIdeSpecTestGenerated extends AbstractLLFirDiagnosisCompilerTestDataSpecTest {
|
public class FirIdeSpecTestGenerated extends AbstractLLFirDiagnosticCompilerTestDataSpecTest {
|
||||||
@Test
|
@Test
|
||||||
public void testAllFilesPresentInDiagnostics() throws Exception {
|
public void testAllFilesPresentInDiagnostics() throws Exception {
|
||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/tests-spec/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true, "helpers", "linked/annotations", "linked/built-in-types-and-their-semantics", "linked/control--and-data-flow-analysis.control-flow-graph.expressions-1.conditional-expressions", "linked/control--and-data-flow-analysis/performing-analysis-on-the-control-flow-graph", "linked/declarations/classifier-declaration/class-declaration/nested-and-inner-classifiers", "linked/declarations/classifier-declaration/classifier-initialization", "linked/declarations/classifier-declaration/data-class-declaration", "linked/declarations/function-declaration", "linked/declarations/property-declaration/property-initialization", "linked/declarations/type-alias", "linked/expressions/call-and-property-access-expressions", "linked/expressions/function-literals", "linked/inheritance", "linked/overload-resolution/c-level-partition", "linked/overload-resolution/determining-function-applicability-for-a-specific-call/rationale", "linked/overloadable-operators", "linked/statements/assignments/simple-assignments", "linked/type-inference/local-type-inference", "linked/type-inference/smart-casts/smart-cast-types", "linked/type-system/subtyping/subtyping-for-nullable-types", "linked/type-system/type-kinds/type-parameters");
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/tests-spec/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true, "helpers", "linked/annotations", "linked/built-in-types-and-their-semantics", "linked/control--and-data-flow-analysis.control-flow-graph.expressions-1.conditional-expressions", "linked/control--and-data-flow-analysis/performing-analysis-on-the-control-flow-graph", "linked/declarations/classifier-declaration/class-declaration/nested-and-inner-classifiers", "linked/declarations/classifier-declaration/classifier-initialization", "linked/declarations/classifier-declaration/data-class-declaration", "linked/declarations/function-declaration", "linked/declarations/property-declaration/property-initialization", "linked/declarations/type-alias", "linked/expressions/call-and-property-access-expressions", "linked/expressions/function-literals", "linked/inheritance", "linked/overload-resolution/c-level-partition", "linked/overload-resolution/determining-function-applicability-for-a-specific-call/rationale", "linked/overloadable-operators", "linked/statements/assignments/simple-assignments", "linked/type-inference/local-type-inference", "linked/type-inference/smart-casts/smart-cast-types", "linked/type-system/subtyping/subtyping-for-nullable-types", "linked/type-system/type-kinds/type-parameters");
|
||||||
|
|||||||
+40076
File diff suppressed because it is too large
Load Diff
+7007
File diff suppressed because it is too large
Load Diff
+7650
File diff suppressed because it is too large
Load Diff
+20
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* 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.diagnostic.compiler.based.facades
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilter
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.LowLevelFirAnalyzerFacade
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
|
import org.jetbrains.kotlin.test.model.TestFile
|
||||||
|
|
||||||
|
abstract class LLFirAnalyzerFacadeFactory {
|
||||||
|
abstract fun createFirFacade(
|
||||||
|
firResolveSession: LLFirResolveSession,
|
||||||
|
allFirFiles: Map<TestFile, FirFile>,
|
||||||
|
diagnosticCheckerFilter: DiagnosticCheckerFilter
|
||||||
|
): LowLevelFirAnalyzerFacade
|
||||||
|
}
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* 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.diagnostic.compiler.based.facades
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilter
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.LowLevelFirAnalyzerFacade
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
|
import org.jetbrains.kotlin.test.model.TestFile
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.getDeclarationsToResolve
|
||||||
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
|
|
||||||
|
object LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder : LLFirAnalyzerFacadeFactory() {
|
||||||
|
override fun createFirFacade(
|
||||||
|
firResolveSession: LLFirResolveSession,
|
||||||
|
allFirFiles: Map<TestFile, FirFile>,
|
||||||
|
diagnosticCheckerFilter: DiagnosticCheckerFilter
|
||||||
|
): LowLevelFirAnalyzerFacade = object : LowLevelFirAnalyzerFacade(firResolveSession, allFirFiles, diagnosticCheckerFilter) {
|
||||||
|
override fun runResolution(): List<FirFile> {
|
||||||
|
val allDeclarations = allFirFiles.values.getDeclarationsToResolve().reversed()
|
||||||
|
for (declaration in allDeclarations) {
|
||||||
|
declaration.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
|
declaration.checkPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
|
}
|
||||||
|
|
||||||
|
return allFirFiles.values.toList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* 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.diagnostic.compiler.based.facades
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilter
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.LowLevelFirAnalyzerFacade
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
|
import org.jetbrains.kotlin.test.model.TestFile
|
||||||
|
|
||||||
|
object LLFirAnalyzerFacadeFactoryWithoutPreresolve : LLFirAnalyzerFacadeFactory() {
|
||||||
|
override fun createFirFacade(
|
||||||
|
firResolveSession: LLFirResolveSession,
|
||||||
|
allFirFiles: Map<TestFile, FirFile>,
|
||||||
|
diagnosticCheckerFilter: DiagnosticCheckerFilter
|
||||||
|
): LowLevelFirAnalyzerFacade {
|
||||||
|
return LowLevelFirAnalyzerFacade(firResolveSession, allFirFiles, diagnosticCheckerFilter)
|
||||||
|
}
|
||||||
|
}
|
||||||
+25
-7
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* 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.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -12,13 +12,11 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirSourceResolveS
|
|||||||
import org.jetbrains.kotlin.analysis.project.structure.getKtModule
|
import org.jetbrains.kotlin.analysis.project.structure.getKtModule
|
||||||
import org.jetbrains.kotlin.analysis.test.framework.services.environmentManager
|
import org.jetbrains.kotlin.analysis.test.framework.services.environmentManager
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol
|
|
||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||||
import org.jetbrains.kotlin.test.services.PreAnalysisHandler
|
import org.jetbrains.kotlin.test.services.PreAnalysisHandler
|
||||||
@@ -64,4 +62,24 @@ internal fun TestConfigurationBuilder.useFirSessionConfigurator(configurator: (T
|
|||||||
}
|
}
|
||||||
|
|
||||||
usePreAnalysisHandlers(::ConfiguratorPreAnalysisHandler)
|
usePreAnalysisHandlers(::ConfiguratorPreAnalysisHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline fun <reified E : FirElement> FirElement.collectAllElementsOfType(): List<E> {
|
||||||
|
val result = mutableListOf<E>()
|
||||||
|
this.accept(object : FirVisitorVoid() {
|
||||||
|
override fun visitElement(element: FirElement) {
|
||||||
|
if (element is E) result += element
|
||||||
|
element.acceptChildren(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Collection<FirFile>.getDeclarationsToResolve() = flatMap { it.collectAllElementsOfType<FirDeclaration>() }.filterNot { declaration ->
|
||||||
|
declaration is FirFile ||
|
||||||
|
declaration is FirBackingField ||
|
||||||
|
declaration is FirAnonymousFunction ||
|
||||||
|
declaration is FirValueParameter && declaration.containingFunctionSymbol is FirAnonymousFunctionSymbol
|
||||||
|
}
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
enum class SomeEnum {
|
enum class SomeEnum {
|
||||||
|
|||||||
compiler/fir/analysis-tests/testData/resolve/cfa/reassignOfNonLocalProperty_initializedProperties.kt
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// ISSUE: KT-55493
|
// ISSUE: KT-55493
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// ISSUE: KT-55493
|
// ISSUE: KT-55493
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// ISSUE: KT-56863
|
// ISSUE: KT-56863
|
||||||
interface I
|
interface I
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
|
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface AutoCloseable {
|
interface AutoCloseable {
|
||||||
fun close()
|
fun close()
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
class Foo {
|
class Foo {
|
||||||
init {
|
init {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface B
|
interface B
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
|
|
||||||
interface Out<out E>
|
interface Out<out E>
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
|
|
||||||
abstract class A(func: () -> String)
|
abstract class A(func: () -> String)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
|
|
||||||
import kotlin.contracts.*
|
import kotlin.contracts.*
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A
|
interface A
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A {
|
interface A {
|
||||||
fun foo(): A
|
fun foo(): A
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
annotation class Ann1(vararg val a: String)
|
annotation class Ann1(vararg val a: String)
|
||||||
annotation class Ann2(val a: IntArray)
|
annotation class Ann2(val a: IntArray)
|
||||||
annotation class Ann3(val a: Array<String>)
|
annotation class Ann3(val a: Array<String>)
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
@Repeatable
|
@Repeatable
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
annotation class A() {
|
annotation class A() {
|
||||||
<!ANNOTATION_CLASS_MEMBER!><!PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED!>constructor(s: Nothing?)<!> {}<!>
|
<!ANNOTATION_CLASS_MEMBER!><!PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED!>constructor(s: Nothing?)<!> {}<!>
|
||||||
<!ANNOTATION_CLASS_MEMBER!>init {}<!>
|
<!ANNOTATION_CLASS_MEMBER!>init {}<!>
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
annotation class Ann(val a: Array<String>)
|
annotation class Ann(val a: Array<String>)
|
||||||
|
|
||||||
val foo = ""
|
val foo = ""
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
open class A {
|
open class A {
|
||||||
open var test: Number = 10
|
open var test: Number = 10
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
open <!REPEATED_MODIFIER!>open<!> class A
|
open <!REPEATED_MODIFIER!>open<!> class A
|
||||||
|
|
||||||
internal <!REPEATED_MODIFIER!>internal<!> object B
|
internal <!REPEATED_MODIFIER!>internal<!> object B
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
// ISSUE: KT-37091
|
// ISSUE: KT-37091
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
package org.jetbrains.kotlin.codegen.range.inExpression
|
package org.jetbrains.kotlin.codegen.range.inExpression
|
||||||
|
|
||||||
interface ExpressionCodegen
|
interface ExpressionCodegen
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
class NoPrimary {
|
class NoPrimary {
|
||||||
val x: String
|
val x: String
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !CHECK_TYPE
|
// !CHECK_TYPE
|
||||||
// UNEXPECTED BEHAVIOUR
|
// UNEXPECTED BEHAVIOUR
|
||||||
// ISSUES: KT-37066
|
// ISSUES: KT-37066
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// FILE: MagicConstant.java
|
// FILE: MagicConstant.java
|
||||||
|
|
||||||
public @interface MagicConstant {
|
public @interface MagicConstant {
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
class B(p0: String) {
|
class B(p0: String) {
|
||||||
val p1 = p0
|
val p1 = p0
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
interface FirElement {
|
interface FirElement {
|
||||||
fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R
|
fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// FILE: A.kt
|
// FILE: A.kt
|
||||||
open class A {
|
open class A {
|
||||||
open fun getScope(): String? = null
|
open fun getScope(): String? = null
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A {
|
interface A {
|
||||||
fun foo(): Boolean
|
fun foo(): Boolean
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A {
|
interface A {
|
||||||
fun foo()
|
fun foo()
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A {
|
interface A {
|
||||||
fun foo()
|
fun foo()
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
|
|
||||||
interface A {
|
interface A {
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A {
|
interface A {
|
||||||
fun foo()
|
fun foo()
|
||||||
|
|||||||
compiler/fir/analysis-tests/testData/resolve/smartcasts/boundSmartcasts/boundSmartcastsInBranches.kt
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
class A {
|
class A {
|
||||||
val s: String = ""
|
val s: String = ""
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
|
|
||||||
open class Base
|
open class Base
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A {
|
interface A {
|
||||||
fun foo()
|
fun foo()
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
fun test_0(x: Any) {
|
fun test_0(x: Any) {
|
||||||
if (x is String) {
|
if (x is String) {
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A {
|
interface A {
|
||||||
fun foo()
|
fun foo()
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A {
|
interface A {
|
||||||
fun foo()
|
fun foo()
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A {
|
interface A {
|
||||||
fun foo()
|
fun foo()
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A {
|
interface A {
|
||||||
fun foo()
|
fun foo()
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// ISSUE: KT-39080
|
// ISSUE: KT-39080
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A {
|
interface A {
|
||||||
fun foo(): Boolean
|
fun foo(): Boolean
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface A {
|
interface A {
|
||||||
fun foo()
|
fun foo()
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
// There would be ambiguities if some expression was smartcasted to (A & B) and foo() was called.
|
// There would be ambiguities if some expression was smartcasted to (A & B) and foo() was called.
|
||||||
// There was a bug where 2 variables were "bound" together if they are assigned from the same function call or property.
|
// There was a bug where 2 variables were "bound" together if they are assigned from the same function call or property.
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
// CONTAINS ERRORS
|
// CONTAINS ERRORS
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
class A {
|
class A {
|
||||||
fun foo() {}
|
fun foo() {}
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
// ----------------- Stable -----------------
|
// ----------------- Stable -----------------
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
fun String.foo(b: Boolean): String = ""
|
fun String.foo(b: Boolean): String = ""
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
interface I
|
interface I
|
||||||
interface S : I {
|
interface S : I {
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// ISSUE: KT-49747
|
// ISSUE: KT-49747
|
||||||
// DUMP_CFG
|
// DUMP_CFG
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
fun getNothing(): Nothing = throw Exception()
|
fun getNothing(): Nothing = throw Exception()
|
||||||
fun getNullableNothing(): Nothing? = null
|
fun getNullableNothing(): Nothing? = null
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
open class A(open val x: Any)
|
open class A(open val x: Any)
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
class A {
|
class A {
|
||||||
fun foo() {}
|
fun foo() {}
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
fun <T, R> use(x: (T) -> R): (T) -> R = x
|
fun <T, R> use(x: (T) -> R): (T) -> R = x
|
||||||
|
|
||||||
fun foo() = use(::bar)
|
fun foo() = use(::bar)
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
|
|
||||||
import kotlin.properties.ReadWriteProperty
|
import kotlin.properties.ReadWriteProperty
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
class C(val map: MutableMap<String, Any>) {
|
class C(val map: MutableMap<String, Any>) {
|
||||||
var foo by map
|
var foo by map
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// ISSUE: KT-39005
|
// ISSUE: KT-39005
|
||||||
// !DUMP_CFG
|
// !DUMP_CFG
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// MODULE: lib
|
// MODULE: lib
|
||||||
// FILE: A.kt
|
// FILE: A.kt
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
val items: List<String>
|
val items: List<String>
|
||||||
field = mutableListOf()
|
field = mutableListOf()
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
val list: List<String>
|
val list: List<String>
|
||||||
field = mutableListOf<String>()
|
field = mutableListOf<String>()
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
class A {
|
class A {
|
||||||
val it: Number
|
val it: Number
|
||||||
field = 4
|
field = 4
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
class Some(var foo: Int) {
|
class Some(var foo: Int) {
|
||||||
init {
|
init {
|
||||||
if (foo < 0) {
|
if (foo < 0) {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
class TestInitValInLambdaCalledOnce {
|
class TestInitValInLambdaCalledOnce {
|
||||||
val x: Int
|
val x: Int
|
||||||
init {
|
init {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
// http://youtrack.jetbrains.net/issue/KT-419
|
// http://youtrack.jetbrains.net/issue/KT-419
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
interface NoC {
|
interface NoC {
|
||||||
<!ANONYMOUS_INITIALIZER_IN_INTERFACE!>init<!> {
|
<!ANONYMOUS_INITIALIZER_IN_INTERFACE!>init<!> {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNUSED_ANONYMOUS_PARAMETER
|
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNUSED_ANONYMOUS_PARAMETER
|
||||||
// TODO Uncomment all the examples when there will be no problems with light classes
|
// TODO Uncomment all the examples when there will be no problems with light classes
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
fun foo(a: (String) -> Unit) {
|
fun foo(a: (String) -> Unit) {
|
||||||
"".<!UNRESOLVED_REFERENCE!>a<!>()
|
"".<!UNRESOLVED_REFERENCE!>a<!>()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
fun foo(a: (String) -> Unit) {
|
fun foo(a: (String) -> Unit) {
|
||||||
"".<!UNRESOLVED_REFERENCE!>a<!>()
|
"".<!UNRESOLVED_REFERENCE!>a<!>()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DIAGNOSTICS: +UNUSED_PARAMETER
|
// !DIAGNOSTICS: +UNUSED_PARAMETER
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DIAGNOSTICS: +UNUSED_PARAMETER
|
// !DIAGNOSTICS: +UNUSED_PARAMETER
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DIAGNOSTICS: +UNUSED_VALUE, +UNUSED_CHANGED_VALUE, +UNUSED_PARAMETER, +UNUSED_VARIABLE
|
// !DIAGNOSTICS: +UNUSED_VALUE, +UNUSED_CHANGED_VALUE, +UNUSED_PARAMETER, +UNUSED_VARIABLE
|
||||||
|
|
||||||
package unused_variables
|
package unused_variables
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DIAGNOSTICS: +UNUSED_VALUE, +UNUSED_CHANGED_VALUE, +UNUSED_PARAMETER, +UNUSED_VARIABLE
|
// !DIAGNOSTICS: +UNUSED_VALUE, +UNUSED_CHANGED_VALUE, +UNUSED_PARAMETER, +UNUSED_VARIABLE
|
||||||
|
|
||||||
package unused_variables
|
package unused_variables
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !LANGUAGE: -ClassTypeParameterAnnotations
|
// !LANGUAGE: -ClassTypeParameterAnnotations
|
||||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||||
annotation class A1
|
annotation class A1
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !LANGUAGE: -ClassTypeParameterAnnotations
|
// !LANGUAGE: -ClassTypeParameterAnnotations
|
||||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||||
annotation class A1
|
annotation class A1
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !LANGUAGE: +ClassTypeParameterAnnotations
|
// !LANGUAGE: +ClassTypeParameterAnnotations
|
||||||
annotation class A1
|
annotation class A1
|
||||||
annotation class A2(val some: Int = 12)
|
annotation class A2(val some: Int = 12)
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !LANGUAGE: +ClassTypeParameterAnnotations
|
// !LANGUAGE: +ClassTypeParameterAnnotations
|
||||||
annotation class A1
|
annotation class A1
|
||||||
annotation class A2(val some: Int = 12)
|
annotation class A2(val some: Int = 12)
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions -ClassTypeParameterAnnotations
|
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions -ClassTypeParameterAnnotations
|
||||||
|
|
||||||
annotation class A1
|
annotation class A1
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions -ClassTypeParameterAnnotations
|
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions -ClassTypeParameterAnnotations
|
||||||
|
|
||||||
annotation class A1
|
annotation class A1
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// Functions can be recursively annotated
|
// Functions can be recursively annotated
|
||||||
annotation class ann(val x: Int)
|
annotation class ann(val x: Int)
|
||||||
@ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>bar()<!>) fun foo() = 1
|
@ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>bar()<!>) fun foo() = 1
|
||||||
|
|||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// Functions can be recursively annotated
|
// Functions can be recursively annotated
|
||||||
annotation class ann(val x: Int)
|
annotation class ann(val x: Int)
|
||||||
@ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>bar()<!>) fun foo() = 1
|
@ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>bar()<!>) fun foo() = 1
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
|
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
|
||||||
|
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
|
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
|
||||||
|
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
// !LANGUAGE: +NestedClassesInAnnotations
|
// !LANGUAGE: +NestedClassesInAnnotations
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_REVERSED_RESOLVE
|
||||||
// !LANGUAGE: -NestedClassesInAnnotations
|
// !LANGUAGE: -NestedClassesInAnnotations
|
||||||
|
|
||||||
annotation class Annotation2() {
|
annotation class Annotation2() {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user