LV 2.0: drop reporting FIR_COMPILED_CLASS and relevant stuff
#KT-62056 Fixed Related to KT-59171, KT-61951
This commit is contained in:
committed by
Space Team
parent
d4640cb576
commit
a77b758efa
+1
-2
@@ -29,8 +29,7 @@ object FirDiagnosticsCompilerResultsReporter {
|
||||
AnalyzerWithCompilerReport.reportSpecialErrors(
|
||||
diagnosticsCollector.diagnostics.any { it.factory == FirErrors.INCOMPATIBLE_CLASS },
|
||||
diagnosticsCollector.diagnostics.any { it.factory == FirErrors.PRE_RELEASE_CLASS },
|
||||
hasUnstableClasses = false, // TODO (KT-61598): report FIR_COMPILED_CLASS and IR_WITH_UNSTABLE_ABI_COMPILED_CLASS
|
||||
hasFirUnstableClasses = false, // TODO (KT-61598): report FIR_COMPILED_CLASS and IR_WITH_UNSTABLE_ABI_COMPILED_CLASS
|
||||
hasUnstableClasses = false, // TODO (KT-61598): report IR_WITH_UNSTABLE_ABI_COMPILED_CLASS
|
||||
messageCollector,
|
||||
)
|
||||
}
|
||||
|
||||
-10
@@ -185,7 +185,6 @@ class AnalyzerWithCompilerReport(
|
||||
diagnostics.any { it.factory == Errors.INCOMPATIBLE_CLASS },
|
||||
diagnostics.any { it.factory == Errors.PRE_RELEASE_CLASS },
|
||||
diagnostics.any { it.factory == Errors.IR_WITH_UNSTABLE_ABI_COMPILED_CLASS },
|
||||
diagnostics.any { it.factory == Errors.FIR_COMPILED_CLASS },
|
||||
messageCollector,
|
||||
)
|
||||
}
|
||||
@@ -195,7 +194,6 @@ class AnalyzerWithCompilerReport(
|
||||
hasIncompatibleClasses: Boolean,
|
||||
hasPrereleaseClasses: Boolean,
|
||||
hasUnstableClasses: Boolean,
|
||||
hasFirUnstableClasses: Boolean,
|
||||
messageCollector: MessageCollector,
|
||||
) {
|
||||
if (hasIncompatibleClasses) {
|
||||
@@ -222,14 +220,6 @@ class AnalyzerWithCompilerReport(
|
||||
"Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors"
|
||||
)
|
||||
}
|
||||
|
||||
if (hasFirUnstableClasses) {
|
||||
messageCollector.report(
|
||||
ERROR,
|
||||
"Classes compiled by the new Kotlin compiler frontend were found in dependencies. " +
|
||||
"Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun reportSyntaxErrors(file: PsiElement, reporter: DiagnosticMessageReporter): SyntaxErrorReport {
|
||||
|
||||
+1
-2
@@ -44,7 +44,6 @@ class FirJvmBackendExtension(
|
||||
companion object {
|
||||
fun generateMetadataExtraFlags(abiStability: JvmAbiStability?): Int =
|
||||
JvmAnnotationNames.METADATA_JVM_IR_FLAG or
|
||||
JvmAnnotationNames.METADATA_FIR_FLAG or
|
||||
(if (abiStability == JvmAbiStability.STABLE) JvmAnnotationNames.METADATA_JVM_IR_STABLE_ABI_FLAG else 0)
|
||||
(if (abiStability != JvmAbiStability.UNSTABLE) JvmAnnotationNames.METADATA_JVM_IR_STABLE_ABI_FLAG else 0)
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -136,7 +136,6 @@ class JvmClassFileBasedSymbolProvider(
|
||||
private val KotlinJvmBinaryClass.abiStability: DeserializedContainerAbiStability
|
||||
get() = when {
|
||||
session.languageVersionSettings.getFlag(AnalysisFlags.allowUnstableDependencies) -> DeserializedContainerAbiStability.STABLE
|
||||
classHeader.isUnstableFirBinary -> DeserializedContainerAbiStability.FIR_UNSTABLE
|
||||
classHeader.isUnstableJvmIrBinary -> DeserializedContainerAbiStability.IR_UNSTABLE
|
||||
else -> DeserializedContainerAbiStability.STABLE
|
||||
}
|
||||
|
||||
-3
@@ -59,9 +59,6 @@ object MissingDependencyClassChecker : CallChecker {
|
||||
if (source.isPreReleaseInvisible) {
|
||||
return PRE_RELEASE_CLASS.on(reportOn, source.presentableString)
|
||||
}
|
||||
if (source.abiStability == DeserializedContainerAbiStability.FIR_UNSTABLE) {
|
||||
return FIR_COMPILED_CLASS.on(reportOn, source.presentableString)
|
||||
}
|
||||
if (source.abiStability == DeserializedContainerAbiStability.IR_UNSTABLE) {
|
||||
return IR_WITH_UNSTABLE_ABI_COMPILED_CLASS.on(reportOn, source.presentableString)
|
||||
}
|
||||
|
||||
-1
@@ -1 +0,0 @@
|
||||
OK
|
||||
@@ -1,8 +1 @@
|
||||
error: classes compiled by the new Kotlin compiler frontend were found in dependencies. Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/againstFir/source.kt:4:5: error: class 'lib.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
get { Box("OK").value }
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/againstFir/source.kt:4:11: error: class 'lib.Box' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
get { Box("OK").value }
|
||||
^
|
||||
COMPILATION_ERROR
|
||||
OK
|
||||
|
||||
+3
-3
@@ -1,8 +1,8 @@
|
||||
error: classes compiled by the new Kotlin compiler frontend were found in dependencies. Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/againstFirWithUnstableAbi/source.kt:4:5: error: class 'lib.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
error: classes compiled by an unstable version of the Kotlin compiler were found in dependencies. Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/againstFirWithUnstableAbi/source.kt:4:5: error: class 'lib.AKt' is compiled by an unstable version of the Kotlin compiler and cannot be loaded by this compiler
|
||||
get { Box("OK").value }
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/againstFirWithUnstableAbi/source.kt:4:11: error: class 'lib.Box' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/againstFirWithUnstableAbi/source.kt:4:11: error: class 'lib.Box' is compiled by an unstable version of the Kotlin compiler and cannot be loaded by this compiler
|
||||
get { Box("OK").value }
|
||||
^
|
||||
COMPILATION_ERROR
|
||||
|
||||
-1
@@ -1 +0,0 @@
|
||||
OK
|
||||
+1
-26
@@ -1,26 +1 @@
|
||||
error: classes compiled by the new Kotlin compiler frontend were found in dependencies. Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:6:16: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
fun baz(param: A) {
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:7:23: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
val constructor = A()
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:8:22: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
val methodCall = param.hashCode()
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:9:30: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
val supertype = object : A() {}
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:11:13: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
val x = foo()
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:12:13: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
val y = bar
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:13:5: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
bar = 239
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:14:12: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
val z: TA = ""
|
||||
^
|
||||
COMPILATION_ERROR
|
||||
OK
|
||||
|
||||
-1
@@ -1 +0,0 @@
|
||||
OK
|
||||
+1
-26
@@ -1,26 +1 @@
|
||||
error: classes compiled by the new Kotlin compiler frontend were found in dependencies. Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:6:16: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
fun baz(param: A) {
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:7:23: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
val constructor = A()
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:8:22: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
val methodCall = param.hashCode()
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:9:30: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
val supertype = object : A() {}
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:11:13: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
val x = foo()
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:12:13: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
val y = bar
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:13:5: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
bar = 239
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:14:12: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
||||
val z: TA = ""
|
||||
^
|
||||
COMPILATION_ERROR
|
||||
OK
|
||||
|
||||
@@ -31,6 +31,7 @@ public final class JvmAnnotationNames {
|
||||
public static final int METADATA_STRICT_VERSION_SEMANTICS_FLAG = 1 << 3;
|
||||
public static final int METADATA_JVM_IR_FLAG = 1 << 4;
|
||||
public static final int METADATA_JVM_IR_STABLE_ABI_FLAG = 1 << 5;
|
||||
@SuppressWarnings("unused")
|
||||
public static final int METADATA_FIR_FLAG = 1 << 6;
|
||||
public static final int METADATA_PUBLIC_ABI_FLAG = 1 << 7;
|
||||
|
||||
|
||||
+1
-3
@@ -27,12 +27,10 @@ enum class DeserializedContainerAbiStability {
|
||||
// Either the container is stable, or this compiler is configured to ignore ABI stability of dependencies.
|
||||
STABLE,
|
||||
|
||||
// The container is unstable because it is compiled with FIR, and this compiler is _not_ configured to ignore that.
|
||||
FIR_UNSTABLE,
|
||||
|
||||
// The container is unstable because either:
|
||||
// 1) it is compiled with JVM IR prior to 1.4.30, or
|
||||
// 2) it is compiled with JVM IR >= 1.4.30 with the `-Xabi-stability=unstable` compiler option,
|
||||
// 3) it is compiled with FIR prior to 2.0.0,
|
||||
// and this compiler is _not_ configured to ignore that.
|
||||
IR_UNSTABLE,
|
||||
}
|
||||
|
||||
-1
@@ -112,7 +112,6 @@ class DeserializedDescriptorResolver {
|
||||
private val KotlinJvmBinaryClass.abiStability: DeserializedContainerAbiStability
|
||||
get() = when {
|
||||
components.configuration.allowUnstableDependencies -> DeserializedContainerAbiStability.STABLE
|
||||
classHeader.isUnstableFirBinary -> DeserializedContainerAbiStability.FIR_UNSTABLE
|
||||
classHeader.isUnstableJvmIrBinary -> DeserializedContainerAbiStability.IR_UNSTABLE
|
||||
else -> DeserializedContainerAbiStability.STABLE
|
||||
}
|
||||
|
||||
-3
@@ -62,9 +62,6 @@ class KotlinClassHeader(
|
||||
val isUnstableJvmIrBinary: Boolean
|
||||
get() = extraInt.has(METADATA_JVM_IR_FLAG) && !extraInt.has(METADATA_JVM_IR_STABLE_ABI_FLAG)
|
||||
|
||||
val isUnstableFirBinary: Boolean
|
||||
get() = extraInt.has(METADATA_FIR_FLAG) && !extraInt.has(METADATA_JVM_IR_STABLE_ABI_FLAG)
|
||||
|
||||
val isPreRelease: Boolean
|
||||
get() = extraInt.has(METADATA_PRE_RELEASE_FLAG)
|
||||
|
||||
|
||||
@@ -75,7 +75,8 @@ public annotation class Metadata(
|
||||
* * 4 - this class file is compiled with the new Kotlin compiler backend (JVM IR) introduced in Kotlin 1.4.
|
||||
* * 5 - this class file has stable metadata and ABI. This is used only for class files compiled with JVM IR (see flag #4) or FIR (#6),
|
||||
* and prevents metadata incompatibility diagnostics from being reported where the class is used.
|
||||
* * 6 - this class file is compiled with the new Kotlin compiler frontend (FIR).
|
||||
* * 6 - this class file is compiled with the K2 compiler frontend (FIR). Only valid before metadata version 2.0.0.
|
||||
* Starting from metadata version 2.0.0, this flag is not set anymore, even though FIR is always used.
|
||||
* * 7 - this class is used in the scope of an inline function and implicitly part of the public ABI. Only valid from
|
||||
* metadata version 1.6.0.
|
||||
*/
|
||||
|
||||
@@ -965,7 +965,7 @@ internal class Kapt4StubGenerator {
|
||||
data1 = lightClass.files.map {
|
||||
JvmFileClassUtil.manglePartName(qualifiedName.replace('.', '/'), it.name)
|
||||
}.toTypedArray(),
|
||||
extraInt = METADATA_JVM_IR_FLAG or METADATA_FIR_FLAG or METADATA_JVM_IR_STABLE_ABI_FLAG
|
||||
extraInt = METADATA_JVM_IR_FLAG or METADATA_JVM_IR_STABLE_ABI_FLAG
|
||||
)
|
||||
|
||||
private fun elementMapping(lightClass: PsiClass): Multimap<KtElement, PsiElement> =
|
||||
|
||||
Reference in New Issue
Block a user