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
|
||||
public void done() {
|
||||
public void done(boolean generateSmapCopyToAnnotation) {
|
||||
getVisitor().visitSource(sourceName, debugInfo);
|
||||
if (debugInfo != null) {
|
||||
if (generateSmapCopyToAnnotation && debugInfo != null) {
|
||||
AnnotationVisitor v =
|
||||
getVisitor().visitAnnotation(JvmAnnotationNames.SOURCE_DEBUG_EXTENSION_DESC, false).visitArray("value");
|
||||
for (String part : CodegenUtilKt.splitStringConstant(debugInfo)) {
|
||||
|
||||
@@ -57,7 +57,7 @@ public interface ClassBuilder {
|
||||
@NotNull
|
||||
AnnotationVisitor newAnnotation(@NotNull String desc, boolean visible);
|
||||
|
||||
void done();
|
||||
void done(boolean generateSmapCopyToAnnotation);
|
||||
|
||||
@NotNull
|
||||
ClassVisitor getVisitor();
|
||||
|
||||
@@ -30,9 +30,9 @@ class ClassBuilderOnDemand(createClassBuilder: () -> ClassBuilder) : DelegatingC
|
||||
classBuilder()
|
||||
}
|
||||
|
||||
override fun done() {
|
||||
override fun done(generateSmapCopyToAnnotation: Boolean) {
|
||||
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)
|
||||
}
|
||||
|
||||
override fun done() {
|
||||
override fun done(generateSmapCopyToAnnotation: Boolean) {
|
||||
handleClashingNames(classInternalName, classCreatedFor)
|
||||
super.done()
|
||||
super.done(generateSmapCopyToAnnotation)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,8 +75,8 @@ public abstract class DelegatingClassBuilder implements ClassBuilder {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void done() {
|
||||
getDelegate().done();
|
||||
public void done(boolean generateSmapCopyToAnnotation) {
|
||||
getDelegate().done(generateSmapCopyToAnnotation);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -47,8 +47,8 @@ import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature;
|
||||
import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt;
|
||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager;
|
||||
import org.jetbrains.kotlin.storage.NotNullLazyValue;
|
||||
import org.jetbrains.kotlin.types.error.ErrorUtils;
|
||||
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.MethodVisitor;
|
||||
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.done();
|
||||
v.done(state.getGenerateSmapCopyToAnnotation());
|
||||
}
|
||||
|
||||
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.MethodContext
|
||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||
import org.jetbrains.kotlin.config.IncrementalCompilation
|
||||
import org.jetbrains.kotlin.config.JvmAnalysisFlags
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
|
||||
@@ -345,7 +344,7 @@ class MultifileClassCodegenImpl(
|
||||
}
|
||||
|
||||
private fun done() {
|
||||
classBuilder.done()
|
||||
classBuilder.done(state.generateSmapCopyToAnnotation)
|
||||
if (classBuilder.isComputed) {
|
||||
state.afterIndependentPart()
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.codegen;
|
||||
import kotlin.text.StringsKt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
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.CodegenContext;
|
||||
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.storage.LockBasedStorageManager;
|
||||
import org.jetbrains.kotlin.types.KotlinType;
|
||||
import org.jetbrains.kotlin.backend.common.SamType;
|
||||
import org.jetbrains.kotlin.util.OperatorNameConventions;
|
||||
import org.jetbrains.org.objectweb.asm.Label;
|
||||
import org.jetbrains.org.objectweb.asm.MethodVisitor;
|
||||
@@ -166,7 +166,7 @@ public class SamWrapperCodegen {
|
||||
generateDelegatesToDefaultImpl(asmType, classDescriptor, samType.getClassDescriptor(), functionCodegen, state);
|
||||
}
|
||||
|
||||
cv.done();
|
||||
cv.done(state.getGenerateSmapCopyToAnnotation());
|
||||
|
||||
return asmType;
|
||||
}
|
||||
|
||||
+2
-2
@@ -71,7 +71,7 @@ abstract class SignatureCollectingClassBuilderFactory(
|
||||
return super.newMethod(origin, access, name, desc, signature, exceptions)
|
||||
}
|
||||
|
||||
override fun done() {
|
||||
override fun done(generateSmapCopyToAnnotation: Boolean) {
|
||||
for ((signature, elementsAndDescriptors) in signatures.entrySet()) {
|
||||
if (elementsAndDescriptors.size == 1) continue // no clash
|
||||
handleClashingSignatures(ConflictingJvmDeclarationsData(
|
||||
@@ -82,7 +82,7 @@ abstract class SignatureCollectingClassBuilderFactory(
|
||||
))
|
||||
}
|
||||
onClassDone(classCreatedFor, classInternalName, signatures)
|
||||
super.done()
|
||||
super.done(generateSmapCopyToAnnotation)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -656,7 +656,7 @@ private fun generateLambdaForRunSuspend(
|
||||
|
||||
writeSyntheticClassMetadata(lambdaBuilder, state, false)
|
||||
|
||||
lambdaBuilder.done()
|
||||
lambdaBuilder.done(state.generateSmapCopyToAnnotation)
|
||||
return lambdaBuilder.thisName
|
||||
}
|
||||
|
||||
@@ -729,4 +729,4 @@ fun String.encodedUTF8Size(): Int {
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -228,7 +228,7 @@ class AnonymousObjectTransformer(
|
||||
if (continuationClassName == transformationInfo.oldClassName) {
|
||||
coroutineTransformer.registerClassBuilder(continuationClassName)
|
||||
} else {
|
||||
classBuilder.done()
|
||||
classBuilder.done(state.generateSmapCopyToAnnotation)
|
||||
}
|
||||
|
||||
return transformationResult
|
||||
|
||||
@@ -207,7 +207,7 @@ class MethodInliner(
|
||||
}
|
||||
|
||||
for (classBuilder in childInliningContext.continuationBuilders.values) {
|
||||
classBuilder.done()
|
||||
classBuilder.done(inliningContext.state.generateSmapCopyToAnnotation)
|
||||
}
|
||||
} else {
|
||||
result.addNotChangedClass(oldClassName)
|
||||
|
||||
@@ -104,7 +104,7 @@ class WhenMappingTransformer(
|
||||
transformedClinit.signature, transformedClinit.exceptions.toTypedArray()
|
||||
)
|
||||
transformedClinit.accept(result)
|
||||
classBuilder.done()
|
||||
classBuilder.done(state.generateSmapCopyToAnnotation)
|
||||
|
||||
return transformationResult
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ class SamWrapperTransformer(transformationInfo: SamWrapperTransformationInfo, pr
|
||||
}
|
||||
|
||||
}, ClassReader.SKIP_FRAMES)
|
||||
classBuilder.done()
|
||||
classBuilder.done(inliningContext.state.generateSmapCopyToAnnotation)
|
||||
|
||||
return transformationResult
|
||||
}
|
||||
|
||||
+1
-1
@@ -142,7 +142,7 @@ class CoroutineTransformer(
|
||||
}
|
||||
|
||||
fun replaceFakesWithReals(node: MethodNode) {
|
||||
findFakeContinuationConstructorClassName(node)?.let(::unregisterClassBuilder)?.let(ClassBuilder::done)
|
||||
findFakeContinuationConstructorClassName(node)?.let(::unregisterClassBuilder)?.done(state.generateSmapCopyToAnnotation)
|
||||
replaceFakeContinuationsWithRealOnes(
|
||||
node, if (!inliningContext.isContinuation) getLastParameterIndex(node.desc, node.access) else 0
|
||||
)
|
||||
|
||||
@@ -322,6 +322,7 @@ class GenerationState private constructor(
|
||||
val unifiedNullChecks: Boolean =
|
||||
languageVersionSettings.apiVersion >= ApiVersion.KOTLIN_1_4 &&
|
||||
!configuration.getBoolean(JVMConfigurationKeys.NO_UNIFIED_NULL_CHECKS)
|
||||
val generateSmapCopyToAnnotation: Boolean = !configuration.getBoolean(JVMConfigurationKeys.NO_SOURCE_DEBUG_EXTENSION)
|
||||
val functionsWithInlineClassReturnTypesMangled: Boolean =
|
||||
languageVersionSettings.supportsFeature(LanguageFeature.MangleClassMembersReturningInlineClasses)
|
||||
val shouldValidateIr = configuration.getBoolean(JVMConfigurationKeys.VALIDATE_IR)
|
||||
|
||||
+3
-3
@@ -95,7 +95,7 @@ class SignatureDumpingBuilderFactory(
|
||||
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
|
||||
outputStream.append("\t{\n")
|
||||
origin.descriptor?.let {
|
||||
@@ -122,7 +122,7 @@ class SignatureDumpingBuilderFactory(
|
||||
}}
|
||||
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);
|
||||
WriteAnnotationUtilKt.writeSyntheticClassMetadata(cb, state, publicAbi);
|
||||
|
||||
cb.done();
|
||||
cb.done(state.getGenerateSmapCopyToAnnotation());
|
||||
}
|
||||
|
||||
private static void generateFields(@NotNull ClassBuilder cb, @NotNull List<WhenByEnumsMapping> mappings) {
|
||||
|
||||
Reference in New Issue
Block a user