[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.
|
||||
*/
|
||||
|
||||
@@ -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.api.DiagnosticCheckerFilter
|
||||
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.transformers.LLFirLazyTransformer
|
||||
import org.jetbrains.kotlin.analysis.test.framework.AbstractCompilerBasedTest
|
||||
import org.jetbrains.kotlin.analysis.test.framework.base.registerAnalysisApiBaseTestServices
|
||||
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.FrontendKinds
|
||||
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() {
|
||||
final override fun TestConfigurationBuilder.configuration() {
|
||||
@@ -63,7 +65,8 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
||||
open fun TestConfigurationBuilder.configureTest() {}
|
||||
|
||||
inner class LowLevelFirFrontendFacade(
|
||||
testServices: TestServices
|
||||
testServices: TestServices,
|
||||
private val facadeFactory: LLFirAnalyzerFacadeFactory,
|
||||
) : FirFrontendFacade(testServices) {
|
||||
override val additionalServices: List<ServiceRegistrationData>
|
||||
get() = emptyList()
|
||||
@@ -99,7 +102,7 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
||||
DiagnosticCheckerFilter.EXTENDED_AND_COMMON_CHECKERS
|
||||
} else DiagnosticCheckerFilter.ONLY_COMMON_CHECKERS
|
||||
|
||||
val analyzerFacade = LowLevelFirAnalyzerFacade(firResolveSession, allFirFiles.toMap(), diagnosticCheckerFilter)
|
||||
val analyzerFacade = facadeFactory.createFirFacade(firResolveSession, allFirFiles.toMap(), diagnosticCheckerFilter)
|
||||
return FirOutputPartForDependsOnModule(
|
||||
module,
|
||||
firResolveSession.useSiteFirSession,
|
||||
@@ -115,12 +118,7 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
||||
if (ignoreTest(filePath, configuration)) {
|
||||
return
|
||||
}
|
||||
val oldEnableDeepEnsure = LLFirLazyTransformer.needCheckingIfClassMembersAreResolved
|
||||
try {
|
||||
LLFirLazyTransformer.needCheckingIfClassMembersAreResolved = true
|
||||
super.runTest(filePath)
|
||||
} finally {
|
||||
LLFirLazyTransformer.needCheckingIfClassMembersAreResolved = oldEnableDeepEnsure
|
||||
}
|
||||
|
||||
super.runTest(filePath)
|
||||
}
|
||||
}
|
||||
}
|
||||
+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.
|
||||
*/
|
||||
|
||||
@@ -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.diagnostics.KtDiagnostic
|
||||
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.psi
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.test.model.TestFile
|
||||
|
||||
class LowLevelFirAnalyzerFacade(
|
||||
open class LowLevelFirAnalyzerFacade(
|
||||
val firResolveSession: LLFirResolveSession,
|
||||
val allFirFiles: Map<TestFile, FirFile>,
|
||||
private val diagnosticCheckerFilter: DiagnosticCheckerFilter,
|
||||
@@ -25,7 +28,14 @@ class LowLevelFirAnalyzerFacade(
|
||||
override val scopeSession: ScopeSession
|
||||
get() = ScopeSession()
|
||||
|
||||
private var resolved: Boolean = false
|
||||
|
||||
override fun runCheckers(): Map<FirFile, List<KtDiagnostic>> {
|
||||
if (!resolved) {
|
||||
runResolution()
|
||||
resolved = true
|
||||
}
|
||||
|
||||
return allFirFiles.values.associateWith { firFile ->
|
||||
val ktFile = firFile.psi as KtFile
|
||||
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(
|
||||
fir2IrExtensions: Fir2IrExtensions,
|
||||
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.
|
||||
*/
|
||||
|
||||
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.LLFirAnalyzerFacadeFactoryWithoutPreresolve
|
||||
import org.jetbrains.kotlin.test.bind
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
||||
|
||||
abstract class AbstractDiagnosisCompilerTestDataTest : AbstractCompilerBasedTestForFir() {
|
||||
abstract class AbstractDiagnosticCompilerTestDataTest : AbstractCompilerBasedTestForFir() {
|
||||
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.
|
||||
*/
|
||||
|
||||
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.LLFirAnalyzerFacadeFactoryWithoutPreresolve
|
||||
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.runners.baseFirSpecDiagnosticTestConfiguration
|
||||
|
||||
abstract class AbstractLLFirDiagnosisCompilerTestDataSpecTest : AbstractCompilerBasedTestForFir() {
|
||||
abstract class AbstractLLFirDiagnosticCompilerTestDataSpecTest : AbstractCompilerBasedTestForFir() {
|
||||
override fun TestConfigurationBuilder.configureTest() {
|
||||
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade)
|
||||
baseFirSpecDiagnosticTestConfiguration()
|
||||
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve))
|
||||
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 */
|
||||
@SuppressWarnings("all")
|
||||
public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiagnosisCompilerTestDataTest {
|
||||
public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDiagnosticCompilerTestDataTest {
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/tests")
|
||||
@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 */
|
||||
@SuppressWarnings("all")
|
||||
public class DiagnosisCompilerTestFirTestdataTestGenerated extends AbstractDiagnosisCompilerTestDataTest {
|
||||
public class DiagnosticCompilerTestFirTestdataTestGenerated extends AbstractDiagnosticCompilerTestDataTest {
|
||||
@Nested
|
||||
@TestMetadata("compiler/fir/analysis-tests/testData/resolve")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
+1
-1
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("compiler/tests-spec/testData/diagnostics")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class FirIdeSpecTestGenerated extends AbstractLLFirDiagnosisCompilerTestDataSpecTest {
|
||||
public class FirIdeSpecTestGenerated extends AbstractLLFirDiagnosticCompilerTestDataSpecTest {
|
||||
@Test
|
||||
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");
|
||||
|
||||
+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.
|
||||
*/
|
||||
|
||||
@@ -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.test.framework.services.environmentManager
|
||||
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.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.services.PreAnalysisHandler
|
||||
@@ -64,4 +62,24 @@ internal fun TestConfigurationBuilder.useFirSessionConfigurator(configurator: (T
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
// WITH_STDLIB
|
||||
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// ISSUE: KT-55493
|
||||
// WITH_STDLIB
|
||||
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// ISSUE: KT-56863
|
||||
interface I
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
|
||||
annotation class Ann
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface AutoCloseable {
|
||||
fun close()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
class Foo {
|
||||
init {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface B
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
|
||||
interface Out<out E>
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
|
||||
abstract class A(func: () -> String)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
|
||||
import kotlin.contracts.*
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A {
|
||||
fun foo(): A
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
annotation class Ann1(vararg val a: String)
|
||||
annotation class Ann2(val a: IntArray)
|
||||
annotation class Ann3(val a: Array<String>)
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
@Repeatable
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
annotation class A() {
|
||||
<!ANNOTATION_CLASS_MEMBER!><!PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED!>constructor(s: Nothing?)<!> {}<!>
|
||||
<!ANNOTATION_CLASS_MEMBER!>init {}<!>
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
annotation class Ann(val a: Array<String>)
|
||||
|
||||
val foo = ""
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
open class A {
|
||||
open var test: Number = 10
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
open <!REPEATED_MODIFIER!>open<!> class A
|
||||
|
||||
internal <!REPEATED_MODIFIER!>internal<!> object B
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
// ISSUE: KT-37091
|
||||
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
package org.jetbrains.kotlin.codegen.range.inExpression
|
||||
|
||||
interface ExpressionCodegen
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
class NoPrimary {
|
||||
val x: String
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !CHECK_TYPE
|
||||
// UNEXPECTED BEHAVIOUR
|
||||
// ISSUES: KT-37066
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// FILE: MagicConstant.java
|
||||
|
||||
public @interface MagicConstant {
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
class B(p0: String) {
|
||||
val p1 = p0
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
interface FirElement {
|
||||
fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R
|
||||
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// FILE: A.kt
|
||||
open class A {
|
||||
open fun getScope(): String? = null
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A {
|
||||
fun foo(): Boolean
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A {
|
||||
fun foo()
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A {
|
||||
fun foo()
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
|
||||
interface A {
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A {
|
||||
fun foo()
|
||||
|
||||
compiler/fir/analysis-tests/testData/resolve/smartcasts/boundSmartcasts/boundSmartcastsInBranches.kt
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
class A {
|
||||
val s: String = ""
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
|
||||
open class Base
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A {
|
||||
fun foo()
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
fun test_0(x: Any) {
|
||||
if (x is String) {
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A {
|
||||
fun foo()
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A {
|
||||
fun foo()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A {
|
||||
fun foo()
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A {
|
||||
fun foo()
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// ISSUE: KT-39080
|
||||
// !DUMP_CFG
|
||||
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A {
|
||||
fun foo(): Boolean
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface A {
|
||||
fun foo()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
// 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.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
// CONTAINS ERRORS
|
||||
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
class A {
|
||||
fun foo() {}
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
// ----------------- Stable -----------------
|
||||
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
fun String.foo(b: Boolean): String = ""
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
interface I
|
||||
interface S : I {
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// ISSUE: KT-49747
|
||||
// DUMP_CFG
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
fun getNothing(): Nothing = throw Exception()
|
||||
fun getNullableNothing(): Nothing? = null
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
open class A(open val x: Any)
|
||||
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
class A {
|
||||
fun foo() {}
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
fun <T, R> use(x: (T) -> R): (T) -> R = x
|
||||
|
||||
fun foo() = use(::bar)
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DUMP_CFG
|
||||
|
||||
import kotlin.properties.ReadWriteProperty
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
class C(val map: MutableMap<String, Any>) {
|
||||
var foo by map
|
||||
}
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// ISSUE: KT-39005
|
||||
// !DUMP_CFG
|
||||
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// MODULE: lib
|
||||
// FILE: A.kt
|
||||
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
val items: List<String>
|
||||
field = mutableListOf()
|
||||
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
val list: List<String>
|
||||
field = mutableListOf<String>()
|
||||
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
class A {
|
||||
val it: Number
|
||||
field = 4
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
class Some(var foo: Int) {
|
||||
init {
|
||||
if (foo < 0) {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
class TestInitValInLambdaCalledOnce {
|
||||
val x: Int
|
||||
init {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// FIR_IDENTICAL
|
||||
// http://youtrack.jetbrains.net/issue/KT-419
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// FIR_IDENTICAL
|
||||
interface NoC {
|
||||
<!ANONYMOUS_INITIALIZER_IN_INTERFACE!>init<!> {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -UNUSED_ANONYMOUS_PARAMETER
|
||||
// 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) {
|
||||
"".<!UNRESOLVED_REFERENCE!>a<!>()
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
fun foo(a: (String) -> Unit) {
|
||||
"".<!UNRESOLVED_REFERENCE!>a<!>()
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DIAGNOSTICS: +UNUSED_PARAMETER
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DIAGNOSTICS: +UNUSED_PARAMETER
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DIAGNOSTICS: +UNUSED_VALUE, +UNUSED_CHANGED_VALUE, +UNUSED_PARAMETER, +UNUSED_VARIABLE
|
||||
|
||||
package unused_variables
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DIAGNOSTICS: +UNUSED_VALUE, +UNUSED_CHANGED_VALUE, +UNUSED_PARAMETER, +UNUSED_VARIABLE
|
||||
|
||||
package unused_variables
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !LANGUAGE: -ClassTypeParameterAnnotations
|
||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class A1
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !LANGUAGE: -ClassTypeParameterAnnotations
|
||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class A1
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !LANGUAGE: +ClassTypeParameterAnnotations
|
||||
annotation class A1
|
||||
annotation class A2(val some: Int = 12)
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !LANGUAGE: +ClassTypeParameterAnnotations
|
||||
annotation class A1
|
||||
annotation class A2(val some: Int = 12)
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions -ClassTypeParameterAnnotations
|
||||
|
||||
annotation class A1
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions -ClassTypeParameterAnnotations
|
||||
|
||||
annotation class A1
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// Functions can be recursively annotated
|
||||
annotation class ann(val x: Int)
|
||||
@ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>bar()<!>) fun foo() = 1
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// Functions can be recursively annotated
|
||||
annotation class ann(val x: Int)
|
||||
@ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>bar()<!>) fun foo() = 1
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
|
||||
|
||||
annotation class Ann
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
|
||||
|
||||
annotation class Ann
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +NestedClassesInAnnotations
|
||||
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// !LANGUAGE: -NestedClassesInAnnotations
|
||||
|
||||
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