[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:
Dmitrii Gridin
2023-03-22 17:34:07 +00:00
committed by Space Team
parent 8528519d96
commit 9a4a3d1f49
413 changed files with 55387 additions and 45 deletions
@@ -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)
}
}
}
@@ -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,
@@ -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))
}
}
@@ -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()
}
@@ -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)
}
}
@@ -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")
}
}
@@ -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")
@@ -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")
@@ -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");
@@ -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
}
@@ -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()
}
}
}
@@ -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)
}
}
@@ -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
}
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
import kotlin.reflect.KClass
enum class SomeEnum {
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// ISSUE: KT-55493
// WITH_STDLIB
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// ISSUE: KT-55493
// WITH_STDLIB
@@ -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,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,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>)
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
import kotlin.reflect.KClass
@Repeatable
@@ -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 {}<!>
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
annotation class Ann(val a: Array<String>)
val foo = ""
@@ -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
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DUMP_CFG
// ISSUE: KT-37091
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
package org.jetbrains.kotlin.codegen.range.inExpression
interface ExpressionCodegen
@@ -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,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
@@ -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,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,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DUMP_CFG
interface A {
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DUMP_CFG
interface A {
fun foo()
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DUMP_CFG
class A {
val s: String = ""
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DUMP_CFG
open class Base
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DUMP_CFG
interface A {
fun foo()
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DUMP_CFG
fun test_0(x: Any) {
if (x is String) {
@@ -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,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,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// ISSUE: KT-39080
// !DUMP_CFG
@@ -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,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DUMP_CFG
class A {
fun foo() {}
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DUMP_CFG
// ----------------- Stable -----------------
@@ -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,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,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DUMP_CFG
open class A(open val x: Any)
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DUMP_CFG
class A {
fun foo() {}
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
fun <T, R> use(x: (T) -> R): (T) -> R = x
fun foo() = use(::bar)
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DUMP_CFG
import kotlin.properties.ReadWriteProperty
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
class C(val map: MutableMap<String, Any>) {
var foo by map
}
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// ISSUE: KT-39005
// !DUMP_CFG
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// MODULE: lib
// FILE: A.kt
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
val items: List<String>
field = mutableListOf()
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
val list: List<String>
field = mutableListOf<String>()
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
class A {
val it: Number
field = 4
@@ -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
View File
@@ -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,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !LANGUAGE: -ClassTypeParameterAnnotations
@Target(AnnotationTarget.TYPE_PARAMETER)
annotation class A1
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !LANGUAGE: -ClassTypeParameterAnnotations
@Target(AnnotationTarget.TYPE_PARAMETER)
annotation class A1
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !LANGUAGE: +ClassTypeParameterAnnotations
annotation class A1
annotation class A2(val some: Int = 12)
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !LANGUAGE: +ClassTypeParameterAnnotations
annotation class A1
annotation class A2(val some: Int = 12)
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions -ClassTypeParameterAnnotations
annotation class A1
@@ -1,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions -ClassTypeParameterAnnotations
annotation class A1
@@ -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,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,3 +1,4 @@
// IGNORE_REVERSED_RESOLVE
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
annotation class Ann
@@ -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,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