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(
|
AnalyzerWithCompilerReport.reportSpecialErrors(
|
||||||
diagnosticsCollector.diagnostics.any { it.factory == FirErrors.INCOMPATIBLE_CLASS },
|
diagnosticsCollector.diagnostics.any { it.factory == FirErrors.INCOMPATIBLE_CLASS },
|
||||||
diagnosticsCollector.diagnostics.any { it.factory == FirErrors.PRE_RELEASE_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
|
hasUnstableClasses = false, // TODO (KT-61598): report IR_WITH_UNSTABLE_ABI_COMPILED_CLASS
|
||||||
hasFirUnstableClasses = false, // TODO (KT-61598): report FIR_COMPILED_CLASS and IR_WITH_UNSTABLE_ABI_COMPILED_CLASS
|
|
||||||
messageCollector,
|
messageCollector,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
-10
@@ -185,7 +185,6 @@ class AnalyzerWithCompilerReport(
|
|||||||
diagnostics.any { it.factory == Errors.INCOMPATIBLE_CLASS },
|
diagnostics.any { it.factory == Errors.INCOMPATIBLE_CLASS },
|
||||||
diagnostics.any { it.factory == Errors.PRE_RELEASE_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.IR_WITH_UNSTABLE_ABI_COMPILED_CLASS },
|
||||||
diagnostics.any { it.factory == Errors.FIR_COMPILED_CLASS },
|
|
||||||
messageCollector,
|
messageCollector,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -195,7 +194,6 @@ class AnalyzerWithCompilerReport(
|
|||||||
hasIncompatibleClasses: Boolean,
|
hasIncompatibleClasses: Boolean,
|
||||||
hasPrereleaseClasses: Boolean,
|
hasPrereleaseClasses: Boolean,
|
||||||
hasUnstableClasses: Boolean,
|
hasUnstableClasses: Boolean,
|
||||||
hasFirUnstableClasses: Boolean,
|
|
||||||
messageCollector: MessageCollector,
|
messageCollector: MessageCollector,
|
||||||
) {
|
) {
|
||||||
if (hasIncompatibleClasses) {
|
if (hasIncompatibleClasses) {
|
||||||
@@ -222,14 +220,6 @@ class AnalyzerWithCompilerReport(
|
|||||||
"Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors"
|
"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 {
|
fun reportSyntaxErrors(file: PsiElement, reporter: DiagnosticMessageReporter): SyntaxErrorReport {
|
||||||
|
|||||||
+1
-2
@@ -44,7 +44,6 @@ class FirJvmBackendExtension(
|
|||||||
companion object {
|
companion object {
|
||||||
fun generateMetadataExtraFlags(abiStability: JvmAbiStability?): Int =
|
fun generateMetadataExtraFlags(abiStability: JvmAbiStability?): Int =
|
||||||
JvmAnnotationNames.METADATA_JVM_IR_FLAG or
|
JvmAnnotationNames.METADATA_JVM_IR_FLAG or
|
||||||
JvmAnnotationNames.METADATA_FIR_FLAG or
|
(if (abiStability != JvmAbiStability.UNSTABLE) JvmAnnotationNames.METADATA_JVM_IR_STABLE_ABI_FLAG else 0)
|
||||||
(if (abiStability == JvmAbiStability.STABLE) JvmAnnotationNames.METADATA_JVM_IR_STABLE_ABI_FLAG else 0)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -136,7 +136,6 @@ class JvmClassFileBasedSymbolProvider(
|
|||||||
private val KotlinJvmBinaryClass.abiStability: DeserializedContainerAbiStability
|
private val KotlinJvmBinaryClass.abiStability: DeserializedContainerAbiStability
|
||||||
get() = when {
|
get() = when {
|
||||||
session.languageVersionSettings.getFlag(AnalysisFlags.allowUnstableDependencies) -> DeserializedContainerAbiStability.STABLE
|
session.languageVersionSettings.getFlag(AnalysisFlags.allowUnstableDependencies) -> DeserializedContainerAbiStability.STABLE
|
||||||
classHeader.isUnstableFirBinary -> DeserializedContainerAbiStability.FIR_UNSTABLE
|
|
||||||
classHeader.isUnstableJvmIrBinary -> DeserializedContainerAbiStability.IR_UNSTABLE
|
classHeader.isUnstableJvmIrBinary -> DeserializedContainerAbiStability.IR_UNSTABLE
|
||||||
else -> DeserializedContainerAbiStability.STABLE
|
else -> DeserializedContainerAbiStability.STABLE
|
||||||
}
|
}
|
||||||
|
|||||||
-3
@@ -59,9 +59,6 @@ object MissingDependencyClassChecker : CallChecker {
|
|||||||
if (source.isPreReleaseInvisible) {
|
if (source.isPreReleaseInvisible) {
|
||||||
return PRE_RELEASE_CLASS.on(reportOn, source.presentableString)
|
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) {
|
if (source.abiStability == DeserializedContainerAbiStability.IR_UNSTABLE) {
|
||||||
return IR_WITH_UNSTABLE_ABI_COMPILED_CLASS.on(reportOn, source.presentableString)
|
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
|
OK
|
||||||
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
|
|
||||||
|
|||||||
+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
|
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 the new Kotlin compiler frontend and cannot be loaded by the old compiler
|
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 }
|
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 }
|
get { Box("OK").value }
|
||||||
^
|
^
|
||||||
COMPILATION_ERROR
|
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
|
OK
|
||||||
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
|
|
||||||
|
|||||||
-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
|
OK
|
||||||
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
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ public final class JvmAnnotationNames {
|
|||||||
public static final int METADATA_STRICT_VERSION_SEMANTICS_FLAG = 1 << 3;
|
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_FLAG = 1 << 4;
|
||||||
public static final int METADATA_JVM_IR_STABLE_ABI_FLAG = 1 << 5;
|
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_FIR_FLAG = 1 << 6;
|
||||||
public static final int METADATA_PUBLIC_ABI_FLAG = 1 << 7;
|
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.
|
// Either the container is stable, or this compiler is configured to ignore ABI stability of dependencies.
|
||||||
STABLE,
|
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:
|
// The container is unstable because either:
|
||||||
// 1) it is compiled with JVM IR prior to 1.4.30, or
|
// 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,
|
// 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.
|
// and this compiler is _not_ configured to ignore that.
|
||||||
IR_UNSTABLE,
|
IR_UNSTABLE,
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -112,7 +112,6 @@ class DeserializedDescriptorResolver {
|
|||||||
private val KotlinJvmBinaryClass.abiStability: DeserializedContainerAbiStability
|
private val KotlinJvmBinaryClass.abiStability: DeserializedContainerAbiStability
|
||||||
get() = when {
|
get() = when {
|
||||||
components.configuration.allowUnstableDependencies -> DeserializedContainerAbiStability.STABLE
|
components.configuration.allowUnstableDependencies -> DeserializedContainerAbiStability.STABLE
|
||||||
classHeader.isUnstableFirBinary -> DeserializedContainerAbiStability.FIR_UNSTABLE
|
|
||||||
classHeader.isUnstableJvmIrBinary -> DeserializedContainerAbiStability.IR_UNSTABLE
|
classHeader.isUnstableJvmIrBinary -> DeserializedContainerAbiStability.IR_UNSTABLE
|
||||||
else -> DeserializedContainerAbiStability.STABLE
|
else -> DeserializedContainerAbiStability.STABLE
|
||||||
}
|
}
|
||||||
|
|||||||
-3
@@ -62,9 +62,6 @@ class KotlinClassHeader(
|
|||||||
val isUnstableJvmIrBinary: Boolean
|
val isUnstableJvmIrBinary: Boolean
|
||||||
get() = extraInt.has(METADATA_JVM_IR_FLAG) && !extraInt.has(METADATA_JVM_IR_STABLE_ABI_FLAG)
|
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
|
val isPreRelease: Boolean
|
||||||
get() = extraInt.has(METADATA_PRE_RELEASE_FLAG)
|
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.
|
* * 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),
|
* * 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.
|
* 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
|
* * 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.
|
* metadata version 1.6.0.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -965,7 +965,7 @@ internal class Kapt4StubGenerator {
|
|||||||
data1 = lightClass.files.map {
|
data1 = lightClass.files.map {
|
||||||
JvmFileClassUtil.manglePartName(qualifiedName.replace('.', '/'), it.name)
|
JvmFileClassUtil.manglePartName(qualifiedName.replace('.', '/'), it.name)
|
||||||
}.toTypedArray(),
|
}.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> =
|
private fun elementMapping(lightClass: PsiClass): Multimap<KtElement, PsiElement> =
|
||||||
|
|||||||
Reference in New Issue
Block a user