Add -X argument to disable generation of @SourceDebugExtension
This will be used in tests in the subsequent commit.
This commit is contained in:
@@ -115,9 +115,9 @@ public abstract class AbstractClassBuilder implements ClassBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void done() {
|
public void done(boolean generateSmapCopyToAnnotation) {
|
||||||
getVisitor().visitSource(sourceName, debugInfo);
|
getVisitor().visitSource(sourceName, debugInfo);
|
||||||
if (debugInfo != null) {
|
if (generateSmapCopyToAnnotation && debugInfo != null) {
|
||||||
AnnotationVisitor v =
|
AnnotationVisitor v =
|
||||||
getVisitor().visitAnnotation(JvmAnnotationNames.SOURCE_DEBUG_EXTENSION_DESC, false).visitArray("value");
|
getVisitor().visitAnnotation(JvmAnnotationNames.SOURCE_DEBUG_EXTENSION_DESC, false).visitArray("value");
|
||||||
for (String part : CodegenUtilKt.splitStringConstant(debugInfo)) {
|
for (String part : CodegenUtilKt.splitStringConstant(debugInfo)) {
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public interface ClassBuilder {
|
|||||||
@NotNull
|
@NotNull
|
||||||
AnnotationVisitor newAnnotation(@NotNull String desc, boolean visible);
|
AnnotationVisitor newAnnotation(@NotNull String desc, boolean visible);
|
||||||
|
|
||||||
void done();
|
void done(boolean generateSmapCopyToAnnotation);
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
ClassVisitor getVisitor();
|
ClassVisitor getVisitor();
|
||||||
|
|||||||
@@ -30,9 +30,9 @@ class ClassBuilderOnDemand(createClassBuilder: () -> ClassBuilder) : DelegatingC
|
|||||||
classBuilder()
|
classBuilder()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun done() {
|
override fun done(generateSmapCopyToAnnotation: Boolean) {
|
||||||
if (isComputed) {
|
if (isComputed) {
|
||||||
classBuilder().done()
|
classBuilder().done(generateSmapCopyToAnnotation)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -49,9 +49,9 @@ abstract class ClassNameCollectionClassBuilderFactory(
|
|||||||
super.defineClass(origin, version, access, name, signature, superName, interfaces)
|
super.defineClass(origin, version, access, name, signature, superName, interfaces)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun done() {
|
override fun done(generateSmapCopyToAnnotation: Boolean) {
|
||||||
handleClashingNames(classInternalName, classCreatedFor)
|
handleClashingNames(classInternalName, classCreatedFor)
|
||||||
super.done()
|
super.done(generateSmapCopyToAnnotation)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,8 +75,8 @@ public abstract class DelegatingClassBuilder implements ClassBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void done() {
|
public void done(boolean generateSmapCopyToAnnotation) {
|
||||||
getDelegate().done();
|
getDelegate().done(generateSmapCopyToAnnotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -47,8 +47,8 @@ import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature;
|
|||||||
import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt;
|
import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt;
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager;
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager;
|
||||||
import org.jetbrains.kotlin.storage.NotNullLazyValue;
|
import org.jetbrains.kotlin.storage.NotNullLazyValue;
|
||||||
import org.jetbrains.kotlin.types.error.ErrorUtils;
|
|
||||||
import org.jetbrains.kotlin.types.KotlinType;
|
import org.jetbrains.kotlin.types.KotlinType;
|
||||||
|
import org.jetbrains.kotlin.types.error.ErrorUtils;
|
||||||
import org.jetbrains.org.objectweb.asm.Label;
|
import org.jetbrains.org.objectweb.asm.Label;
|
||||||
import org.jetbrains.org.objectweb.asm.MethodVisitor;
|
import org.jetbrains.org.objectweb.asm.MethodVisitor;
|
||||||
import org.jetbrains.org.objectweb.asm.Opcodes;
|
import org.jetbrains.org.objectweb.asm.Opcodes;
|
||||||
@@ -191,7 +191,7 @@ public abstract class MemberCodegen<T extends KtPureElement/* TODO: & KtDeclarat
|
|||||||
v.visitSMAP(getOrCreateSourceMapper(), !state.getLanguageVersionSettings().supportsFeature(LanguageFeature.CorrectSourceMappingSyntax));
|
v.visitSMAP(getOrCreateSourceMapper(), !state.getLanguageVersionSettings().supportsFeature(LanguageFeature.CorrectSourceMappingSyntax));
|
||||||
}
|
}
|
||||||
|
|
||||||
v.done();
|
v.done(state.getGenerateSmapCopyToAnnotation());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void genSimpleMember(@NotNull KtDeclaration declaration) {
|
public void genSimpleMember(@NotNull KtDeclaration declaration) {
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.backend.common.CodegenUtil
|
|||||||
import org.jetbrains.kotlin.codegen.context.FieldOwnerContext
|
import org.jetbrains.kotlin.codegen.context.FieldOwnerContext
|
||||||
import org.jetbrains.kotlin.codegen.context.MethodContext
|
import org.jetbrains.kotlin.codegen.context.MethodContext
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||||
import org.jetbrains.kotlin.config.IncrementalCompilation
|
|
||||||
import org.jetbrains.kotlin.config.JvmAnalysisFlags
|
import org.jetbrains.kotlin.config.JvmAnalysisFlags
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
|
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
|
||||||
@@ -345,7 +344,7 @@ class MultifileClassCodegenImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun done() {
|
private fun done() {
|
||||||
classBuilder.done()
|
classBuilder.done(state.generateSmapCopyToAnnotation)
|
||||||
if (classBuilder.isComputed) {
|
if (classBuilder.isComputed) {
|
||||||
state.afterIndependentPart()
|
state.afterIndependentPart()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.codegen;
|
|||||||
import kotlin.text.StringsKt;
|
import kotlin.text.StringsKt;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.backend.common.CodegenUtil;
|
import org.jetbrains.kotlin.backend.common.CodegenUtil;
|
||||||
|
import org.jetbrains.kotlin.backend.common.SamType;
|
||||||
import org.jetbrains.kotlin.codegen.context.ClassContext;
|
import org.jetbrains.kotlin.codegen.context.ClassContext;
|
||||||
import org.jetbrains.kotlin.codegen.context.CodegenContext;
|
import org.jetbrains.kotlin.codegen.context.CodegenContext;
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState;
|
import org.jetbrains.kotlin.codegen.state.GenerationState;
|
||||||
@@ -38,7 +39,6 @@ import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKt;
|
|||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope;
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope;
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager;
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager;
|
||||||
import org.jetbrains.kotlin.types.KotlinType;
|
import org.jetbrains.kotlin.types.KotlinType;
|
||||||
import org.jetbrains.kotlin.backend.common.SamType;
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions;
|
import org.jetbrains.kotlin.util.OperatorNameConventions;
|
||||||
import org.jetbrains.org.objectweb.asm.Label;
|
import org.jetbrains.org.objectweb.asm.Label;
|
||||||
import org.jetbrains.org.objectweb.asm.MethodVisitor;
|
import org.jetbrains.org.objectweb.asm.MethodVisitor;
|
||||||
@@ -166,7 +166,7 @@ public class SamWrapperCodegen {
|
|||||||
generateDelegatesToDefaultImpl(asmType, classDescriptor, samType.getClassDescriptor(), functionCodegen, state);
|
generateDelegatesToDefaultImpl(asmType, classDescriptor, samType.getClassDescriptor(), functionCodegen, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
cv.done();
|
cv.done(state.getGenerateSmapCopyToAnnotation());
|
||||||
|
|
||||||
return asmType;
|
return asmType;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -71,7 +71,7 @@ abstract class SignatureCollectingClassBuilderFactory(
|
|||||||
return super.newMethod(origin, access, name, desc, signature, exceptions)
|
return super.newMethod(origin, access, name, desc, signature, exceptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun done() {
|
override fun done(generateSmapCopyToAnnotation: Boolean) {
|
||||||
for ((signature, elementsAndDescriptors) in signatures.entrySet()) {
|
for ((signature, elementsAndDescriptors) in signatures.entrySet()) {
|
||||||
if (elementsAndDescriptors.size == 1) continue // no clash
|
if (elementsAndDescriptors.size == 1) continue // no clash
|
||||||
handleClashingSignatures(ConflictingJvmDeclarationsData(
|
handleClashingSignatures(ConflictingJvmDeclarationsData(
|
||||||
@@ -82,7 +82,7 @@ abstract class SignatureCollectingClassBuilderFactory(
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
onClassDone(classCreatedFor, classInternalName, signatures)
|
onClassDone(classCreatedFor, classInternalName, signatures)
|
||||||
super.done()
|
super.done(generateSmapCopyToAnnotation)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -656,7 +656,7 @@ private fun generateLambdaForRunSuspend(
|
|||||||
|
|
||||||
writeSyntheticClassMetadata(lambdaBuilder, state, false)
|
writeSyntheticClassMetadata(lambdaBuilder, state, false)
|
||||||
|
|
||||||
lambdaBuilder.done()
|
lambdaBuilder.done(state.generateSmapCopyToAnnotation)
|
||||||
return lambdaBuilder.thisName
|
return lambdaBuilder.thisName
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -729,4 +729,4 @@ fun String.encodedUTF8Size(): Int {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -228,7 +228,7 @@ class AnonymousObjectTransformer(
|
|||||||
if (continuationClassName == transformationInfo.oldClassName) {
|
if (continuationClassName == transformationInfo.oldClassName) {
|
||||||
coroutineTransformer.registerClassBuilder(continuationClassName)
|
coroutineTransformer.registerClassBuilder(continuationClassName)
|
||||||
} else {
|
} else {
|
||||||
classBuilder.done()
|
classBuilder.done(state.generateSmapCopyToAnnotation)
|
||||||
}
|
}
|
||||||
|
|
||||||
return transformationResult
|
return transformationResult
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ class MethodInliner(
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (classBuilder in childInliningContext.continuationBuilders.values) {
|
for (classBuilder in childInliningContext.continuationBuilders.values) {
|
||||||
classBuilder.done()
|
classBuilder.done(inliningContext.state.generateSmapCopyToAnnotation)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
result.addNotChangedClass(oldClassName)
|
result.addNotChangedClass(oldClassName)
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ class WhenMappingTransformer(
|
|||||||
transformedClinit.signature, transformedClinit.exceptions.toTypedArray()
|
transformedClinit.signature, transformedClinit.exceptions.toTypedArray()
|
||||||
)
|
)
|
||||||
transformedClinit.accept(result)
|
transformedClinit.accept(result)
|
||||||
classBuilder.done()
|
classBuilder.done(state.generateSmapCopyToAnnotation)
|
||||||
|
|
||||||
return transformationResult
|
return transformationResult
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ class SamWrapperTransformer(transformationInfo: SamWrapperTransformationInfo, pr
|
|||||||
}
|
}
|
||||||
|
|
||||||
}, ClassReader.SKIP_FRAMES)
|
}, ClassReader.SKIP_FRAMES)
|
||||||
classBuilder.done()
|
classBuilder.done(inliningContext.state.generateSmapCopyToAnnotation)
|
||||||
|
|
||||||
return transformationResult
|
return transformationResult
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -142,7 +142,7 @@ class CoroutineTransformer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun replaceFakesWithReals(node: MethodNode) {
|
fun replaceFakesWithReals(node: MethodNode) {
|
||||||
findFakeContinuationConstructorClassName(node)?.let(::unregisterClassBuilder)?.let(ClassBuilder::done)
|
findFakeContinuationConstructorClassName(node)?.let(::unregisterClassBuilder)?.done(state.generateSmapCopyToAnnotation)
|
||||||
replaceFakeContinuationsWithRealOnes(
|
replaceFakeContinuationsWithRealOnes(
|
||||||
node, if (!inliningContext.isContinuation) getLastParameterIndex(node.desc, node.access) else 0
|
node, if (!inliningContext.isContinuation) getLastParameterIndex(node.desc, node.access) else 0
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -322,6 +322,7 @@ class GenerationState private constructor(
|
|||||||
val unifiedNullChecks: Boolean =
|
val unifiedNullChecks: Boolean =
|
||||||
languageVersionSettings.apiVersion >= ApiVersion.KOTLIN_1_4 &&
|
languageVersionSettings.apiVersion >= ApiVersion.KOTLIN_1_4 &&
|
||||||
!configuration.getBoolean(JVMConfigurationKeys.NO_UNIFIED_NULL_CHECKS)
|
!configuration.getBoolean(JVMConfigurationKeys.NO_UNIFIED_NULL_CHECKS)
|
||||||
|
val generateSmapCopyToAnnotation: Boolean = !configuration.getBoolean(JVMConfigurationKeys.NO_SOURCE_DEBUG_EXTENSION)
|
||||||
val functionsWithInlineClassReturnTypesMangled: Boolean =
|
val functionsWithInlineClassReturnTypesMangled: Boolean =
|
||||||
languageVersionSettings.supportsFeature(LanguageFeature.MangleClassMembersReturningInlineClasses)
|
languageVersionSettings.supportsFeature(LanguageFeature.MangleClassMembersReturningInlineClasses)
|
||||||
val shouldValidateIr = configuration.getBoolean(JVMConfigurationKeys.VALIDATE_IR)
|
val shouldValidateIr = configuration.getBoolean(JVMConfigurationKeys.VALIDATE_IR)
|
||||||
|
|||||||
+3
-3
@@ -95,7 +95,7 @@ class SignatureDumpingBuilderFactory(
|
|||||||
return super.newField(origin, access, name, desc, signature, value)
|
return super.newField(origin, access, name, desc, signature, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun done() {
|
override fun done(generateSmapCopyToAnnotation: Boolean) {
|
||||||
if (firstClassWritten) outputStream.append(",\n") else firstClassWritten = true
|
if (firstClassWritten) outputStream.append(",\n") else firstClassWritten = true
|
||||||
outputStream.append("\t{\n")
|
outputStream.append("\t{\n")
|
||||||
origin.descriptor?.let {
|
origin.descriptor?.let {
|
||||||
@@ -122,7 +122,7 @@ class SignatureDumpingBuilderFactory(
|
|||||||
}}
|
}}
|
||||||
outputStream.append("\n\t\t]\n\t}")
|
outputStream.append("\n\t\t]\n\t}")
|
||||||
|
|
||||||
super.done()
|
super.done(generateSmapCopyToAnnotation)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -148,4 +148,4 @@ private fun jsonEscape(value: String): String = buildString {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ public class MappingClassesForWhenByEnumCodegen {
|
|||||||
boolean publicAbi = mappings.stream().anyMatch(WhenByEnumsMapping::isPublicAbi);
|
boolean publicAbi = mappings.stream().anyMatch(WhenByEnumsMapping::isPublicAbi);
|
||||||
WriteAnnotationUtilKt.writeSyntheticClassMetadata(cb, state, publicAbi);
|
WriteAnnotationUtilKt.writeSyntheticClassMetadata(cb, state, publicAbi);
|
||||||
|
|
||||||
cb.done();
|
cb.done(state.getGenerateSmapCopyToAnnotation());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void generateFields(@NotNull ClassBuilder cb, @NotNull List<WhenByEnumsMapping> mappings) {
|
private static void generateFields(@NotNull ClassBuilder cb, @NotNull List<WhenByEnumsMapping> mappings) {
|
||||||
|
|||||||
+6
@@ -431,6 +431,12 @@ Also sets `-jvm-target` value equal to the selected JDK version"""
|
|||||||
)
|
)
|
||||||
var noUnifiedNullChecks: Boolean by FreezableVar(false)
|
var noUnifiedNullChecks: Boolean by FreezableVar(false)
|
||||||
|
|
||||||
|
@Argument(
|
||||||
|
value = "-Xno-source-debug-extension",
|
||||||
|
description = "Do not generate @kotlin.jvm.internal.SourceDebugExtension annotation on a class with the copy of SMAP"
|
||||||
|
)
|
||||||
|
var noSourceDebugExtension: Boolean by FreezableVar(false)
|
||||||
|
|
||||||
@Argument(
|
@Argument(
|
||||||
value = "-Xprofile",
|
value = "-Xprofile",
|
||||||
valueDescription = "<profilerPath:command:outputDir>",
|
valueDescription = "<profilerPath:command:outputDir>",
|
||||||
|
|||||||
+2
-2
@@ -193,11 +193,11 @@ public class StubClassBuilder extends AbstractClassBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void done() {
|
public void done(boolean generateSmapCopyToAnnotation) {
|
||||||
if (!isPackageClass) {
|
if (!isPackageClass) {
|
||||||
StubElement pop = parentStack.pop();
|
StubElement pop = parentStack.pop();
|
||||||
assert pop == v.getResult() : "parentStack: got " + pop + ", expected " + v.getResult();
|
assert pop == v.getResult() : "parentStack: got " + pop + ", expected " + v.getResult();
|
||||||
}
|
}
|
||||||
super.done();
|
super.done(generateSmapCopyToAnnotation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -307,6 +307,7 @@ fun CompilerConfiguration.configureAdvancedJvmOptions(arguments: K2JVMCompilerAr
|
|||||||
put(JVMConfigurationKeys.NO_KOTLIN_NOTHING_VALUE_EXCEPTION, arguments.noKotlinNothingValueException)
|
put(JVMConfigurationKeys.NO_KOTLIN_NOTHING_VALUE_EXCEPTION, arguments.noKotlinNothingValueException)
|
||||||
put(JVMConfigurationKeys.NO_RESET_JAR_TIMESTAMPS, arguments.noResetJarTimestamps)
|
put(JVMConfigurationKeys.NO_RESET_JAR_TIMESTAMPS, arguments.noResetJarTimestamps)
|
||||||
put(JVMConfigurationKeys.NO_UNIFIED_NULL_CHECKS, arguments.noUnifiedNullChecks)
|
put(JVMConfigurationKeys.NO_UNIFIED_NULL_CHECKS, arguments.noUnifiedNullChecks)
|
||||||
|
put(JVMConfigurationKeys.NO_SOURCE_DEBUG_EXTENSION, arguments.noSourceDebugExtension)
|
||||||
|
|
||||||
put(JVMConfigurationKeys.SERIALIZE_IR, JvmSerializeIrMode.fromString(arguments.serializeIr))
|
put(JVMConfigurationKeys.SERIALIZE_IR, JvmSerializeIrMode.fromString(arguments.serializeIr))
|
||||||
|
|
||||||
|
|||||||
@@ -133,6 +133,9 @@ public class JVMConfigurationKeys {
|
|||||||
public static final CompilerConfigurationKey<Boolean> NO_UNIFIED_NULL_CHECKS =
|
public static final CompilerConfigurationKey<Boolean> NO_UNIFIED_NULL_CHECKS =
|
||||||
CompilerConfigurationKey.create("Use pre-1.4 exception types in null checks instead of java.lang.NPE");
|
CompilerConfigurationKey.create("Use pre-1.4 exception types in null checks instead of java.lang.NPE");
|
||||||
|
|
||||||
|
public static final CompilerConfigurationKey<Boolean> NO_SOURCE_DEBUG_EXTENSION =
|
||||||
|
CompilerConfigurationKey.create("Do not generate @kotlin.jvm.internal.SourceDebugExtension annotation on a class with the copy of SMAP");
|
||||||
|
|
||||||
public static final CompilerConfigurationKey<Boolean> USE_OLD_INLINE_CLASSES_MANGLING_SCHEME =
|
public static final CompilerConfigurationKey<Boolean> USE_OLD_INLINE_CLASSES_MANGLING_SCHEME =
|
||||||
CompilerConfigurationKey.create("Use old, 1.4 version of inline classes mangling scheme");
|
CompilerConfigurationKey.create("Use old, 1.4 version of inline classes mangling scheme");
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -215,7 +215,7 @@ class ClassCodegen private constructor(
|
|||||||
|
|
||||||
generateInnerAndOuterClasses()
|
generateInnerAndOuterClasses()
|
||||||
|
|
||||||
visitor.done()
|
visitor.done(state.generateSmapCopyToAnnotation)
|
||||||
jvmSignatureClashDetector.reportErrors(classOrigin)
|
jvmSignatureClashDetector.reportErrors(classOrigin)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
@@ -101,6 +101,7 @@ where advanced options include:
|
|||||||
-Xno-param-assertions Don't generate not-null assertions on parameters of methods accessible from Java
|
-Xno-param-assertions Don't generate not-null assertions on parameters of methods accessible from Java
|
||||||
-Xno-receiver-assertions Don't generate not-null assertion for extension receiver arguments of platform types
|
-Xno-receiver-assertions Don't generate not-null assertion for extension receiver arguments of platform types
|
||||||
-Xno-reset-jar-timestamps Do not reset jar entry timestamps to a fixed date
|
-Xno-reset-jar-timestamps Do not reset jar entry timestamps to a fixed date
|
||||||
|
-Xno-source-debug-extension Do not generate @kotlin.jvm.internal.SourceDebugExtension annotation on a class with the copy of SMAP
|
||||||
-Xno-unified-null-checks Use pre-1.4 exception types in null checks instead of java.lang.NPE. See KT-22275 for more details
|
-Xno-unified-null-checks Use pre-1.4 exception types in null checks instead of java.lang.NPE. See KT-22275 for more details
|
||||||
-Xnullability-annotations=@<fq.name>:{ignore/strict/warn}
|
-Xnullability-annotations=@<fq.name>:{ignore/strict/warn}
|
||||||
Specify behavior for specific Java nullability annotations (provided with fully qualified package name)
|
Specify behavior for specific Java nullability annotations (provided with fully qualified package name)
|
||||||
|
|||||||
+2
-2
@@ -99,7 +99,7 @@ class ParcelableClinitClassBuilderInterceptorExtension : ClassBuilderInterceptor
|
|||||||
super.defineClass(origin, version, access, name, signature, superName, interfaces)
|
super.defineClass(origin, version, access, name, signature, superName, interfaces)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun done() {
|
override fun done(generateSmapCopyToAnnotation: Boolean) {
|
||||||
if (!isClinitGenerated && currentClass != null && currentClassName != null) {
|
if (!isClinitGenerated && currentClass != null && currentClassName != null) {
|
||||||
val descriptor = bindingContext[BindingContext.CLASS, currentClass]
|
val descriptor = bindingContext[BindingContext.CLASS, currentClass]
|
||||||
if (descriptor != null && declarationOrigin.descriptor == descriptor && descriptor.isParcelize) {
|
if (descriptor != null && declarationOrigin.descriptor == descriptor && descriptor.isParcelize) {
|
||||||
@@ -112,7 +112,7 @@ class ParcelableClinitClassBuilderInterceptorExtension : ClassBuilderInterceptor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
super.done()
|
super.done(generateSmapCopyToAnnotation)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun newMethod(
|
override fun newMethod(
|
||||||
|
|||||||
+10
-14
@@ -7,34 +7,30 @@ package org.jetbrains.kotlin.android.parcel
|
|||||||
|
|
||||||
import kotlinx.android.parcel.TypeParceler
|
import kotlinx.android.parcel.TypeParceler
|
||||||
import org.jetbrains.kotlin.android.parcel.ParcelableResolveExtension.Companion.createMethod
|
import org.jetbrains.kotlin.android.parcel.ParcelableResolveExtension.Companion.createMethod
|
||||||
import org.jetbrains.kotlin.android.parcel.serializers.*
|
|
||||||
import org.jetbrains.kotlin.android.parcel.ParcelableSyntheticComponent.ComponentKind.*
|
import org.jetbrains.kotlin.android.parcel.ParcelableSyntheticComponent.ComponentKind.*
|
||||||
|
import org.jetbrains.kotlin.android.parcel.serializers.*
|
||||||
import org.jetbrains.kotlin.android.parcel.serializers.ParcelableExtensionBase.Companion.FILE_DESCRIPTOR_FQNAME
|
import org.jetbrains.kotlin.android.parcel.serializers.ParcelableExtensionBase.Companion.FILE_DESCRIPTOR_FQNAME
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.codegen.*
|
import org.jetbrains.kotlin.codegen.*
|
||||||
|
import org.jetbrains.kotlin.codegen.FunctionGenerationStrategy.CodegenBased
|
||||||
|
import org.jetbrains.kotlin.codegen.context.ClassContext
|
||||||
import org.jetbrains.kotlin.codegen.extensions.ExpressionCodegenExtension
|
import org.jetbrains.kotlin.codegen.extensions.ExpressionCodegenExtension
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature
|
|
||||||
import org.jetbrains.kotlin.codegen.ExpressionCodegen
|
|
||||||
import org.jetbrains.kotlin.codegen.FunctionGenerationStrategy.CodegenBased
|
|
||||||
import org.jetbrains.kotlin.codegen.ImplementationBodyCodegen
|
|
||||||
import org.jetbrains.kotlin.codegen.OwnerKind
|
|
||||||
import org.jetbrains.kotlin.codegen.context.ClassContext
|
|
||||||
import org.jetbrains.kotlin.codegen.writeSyntheticClassMetadata
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl
|
||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorFactory
|
import org.jetbrains.kotlin.resolve.DescriptorFactory
|
||||||
|
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
import org.jetbrains.kotlin.resolve.inline.InlineUtil
|
import org.jetbrains.kotlin.resolve.inline.InlineUtil
|
||||||
|
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind
|
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind
|
||||||
|
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
@@ -320,7 +316,7 @@ open class ParcelableCodegenExtension : ParcelableExtensionBase, ExpressionCodeg
|
|||||||
writeNewArrayMethod(codegenForCreator, parcelableClass, parcelableCreatorClassType, creatorClass, parcelerObject)
|
writeNewArrayMethod(codegenForCreator, parcelableClass, parcelableCreatorClassType, creatorClass, parcelerObject)
|
||||||
writeCreateFromParcel(codegenForCreator, parcelableClass, parcelableCreatorClassType, creatorClass, parcelClassType, parcelAsmType, parcelerObject, properties)
|
writeCreateFromParcel(codegenForCreator, parcelableClass, parcelableCreatorClassType, creatorClass, parcelClassType, parcelAsmType, parcelerObject, properties)
|
||||||
|
|
||||||
classBuilderForCreator.done()
|
classBuilderForCreator.done(codegen.state.generateSmapCopyToAnnotation)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun writeCreatorConstructor(codegen: ImplementationBodyCodegen, creatorClass: ClassDescriptor, creatorAsmType: Type) {
|
private fun writeCreatorConstructor(codegen: ImplementationBodyCodegen, creatorClass: ClassDescriptor, creatorAsmType: Type) {
|
||||||
@@ -408,4 +404,4 @@ internal fun getTypeParcelers(annotations: Annotations): List<TypeParcelerMappin
|
|||||||
}
|
}
|
||||||
|
|
||||||
return serializers
|
return serializers
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -78,7 +78,7 @@ abstract class AbstractAndroidOnDestroyClassBuilderInterceptorExtension : ClassB
|
|||||||
super.defineClass(origin, version, access, name, signature, superName, interfaces)
|
super.defineClass(origin, version, access, name, signature, superName, interfaces)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun done() {
|
override fun done(generateSmapCopyToAnnotation: Boolean) {
|
||||||
if (hasCache && !hasOnDestroy) {
|
if (hasCache && !hasOnDestroy) {
|
||||||
val mv = newMethod(
|
val mv = newMethod(
|
||||||
JvmDeclarationOrigin.NO_ORIGIN, Opcodes.ACC_PUBLIC or Opcodes.ACC_SYNTHETIC, ON_DESTROY_METHOD_NAME, "()V",
|
JvmDeclarationOrigin.NO_ORIGIN, Opcodes.ACC_PUBLIC or Opcodes.ACC_SYNTHETIC, ON_DESTROY_METHOD_NAME, "()V",
|
||||||
@@ -91,7 +91,7 @@ abstract class AbstractAndroidOnDestroyClassBuilderInterceptorExtension : ClassB
|
|||||||
mv.visitMaxs(1, 1)
|
mv.visitMaxs(1, 1)
|
||||||
mv.visitEnd()
|
mv.visitEnd()
|
||||||
}
|
}
|
||||||
super.done()
|
super.done(generateSmapCopyToAnnotation)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun newMethod(
|
override fun newMethod(
|
||||||
|
|||||||
+2
-2
@@ -172,7 +172,7 @@ class JvmAbiClassBuilderInterceptor : ClassBuilderInterceptorExtension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun done() {
|
override fun done(generateSmapCopyToAnnotation: Boolean) {
|
||||||
// Remove local or anonymous classes unless they are in the scope of an inline function and
|
// Remove local or anonymous classes unless they are in the scope of an inline function and
|
||||||
// strip non-inline methods from all other classes.
|
// strip non-inline methods from all other classes.
|
||||||
when {
|
when {
|
||||||
@@ -185,7 +185,7 @@ class JvmAbiClassBuilderInterceptor : ClassBuilderInterceptorExtension {
|
|||||||
abiClassInfo[internalName] = AbiClassInfo.Stripped(methodInfos)
|
abiClassInfo[internalName] = AbiClassInfo.Stripped(methodInfos)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
super.done()
|
super.done(generateSmapCopyToAnnotation)
|
||||||
}
|
}
|
||||||
|
|
||||||
private val isWhenMappingClass: Boolean
|
private val isWhenMappingClass: Boolean
|
||||||
|
|||||||
+1
-1
@@ -762,7 +762,7 @@ internal fun createSingletonLambda(
|
|||||||
}
|
}
|
||||||
|
|
||||||
writeSyntheticClassMetadata(lambdaClassBuilder, lambdaCodegen.state, false)
|
writeSyntheticClassMetadata(lambdaClassBuilder, lambdaCodegen.state, false)
|
||||||
lambdaClassBuilder.done()
|
lambdaClassBuilder.done(lambdaCodegen.state.generateSmapCopyToAnnotation)
|
||||||
|
|
||||||
return lambdaType
|
return lambdaType
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -81,7 +81,7 @@ class ParcelizeClinitClassBuilderInterceptorExtension : ClassBuilderInterceptorE
|
|||||||
super.defineClass(origin, version, access, name, signature, superName, interfaces)
|
super.defineClass(origin, version, access, name, signature, superName, interfaces)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun done() {
|
override fun done(generateSmapCopyToAnnotation: Boolean) {
|
||||||
if (!isClinitGenerated && currentClass != null && currentClassName != null) {
|
if (!isClinitGenerated && currentClass != null && currentClassName != null) {
|
||||||
val descriptor = bindingContext[BindingContext.CLASS, currentClass]
|
val descriptor = bindingContext[BindingContext.CLASS, currentClass]
|
||||||
if (descriptor != null && declarationOrigin.descriptor == descriptor && descriptor.isParcelize) {
|
if (descriptor != null && declarationOrigin.descriptor == descriptor && descriptor.isParcelize) {
|
||||||
@@ -94,7 +94,7 @@ class ParcelizeClinitClassBuilderInterceptorExtension : ClassBuilderInterceptorE
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
super.done()
|
super.done(generateSmapCopyToAnnotation)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun newMethod(
|
override fun newMethod(
|
||||||
|
|||||||
+1
-1
@@ -340,7 +340,7 @@ open class ParcelizeCodegenExtension : ParcelizeExtensionBase, ExpressionCodegen
|
|||||||
parcelAsmType, parcelerObject, properties
|
parcelAsmType, parcelerObject, properties
|
||||||
)
|
)
|
||||||
|
|
||||||
classBuilderForCreator.done()
|
classBuilderForCreator.done(codegen.state.generateSmapCopyToAnnotation)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun writeCreatorConstructor(codegen: ImplementationBodyCodegen, creatorClass: ClassDescriptor, creatorAsmType: Type) {
|
private fun writeCreatorConstructor(codegen: ImplementationBodyCodegen, creatorClass: ClassDescriptor, creatorAsmType: Type) {
|
||||||
|
|||||||
Reference in New Issue
Block a user