Minor. Introduce FunctionHandle::mightBeIncorrectCode
This commit is contained in:
@@ -30,6 +30,8 @@ interface FunctionHandle {
|
||||
val mayBeUsedAsSuperImplementation: Boolean
|
||||
|
||||
fun getOverridden(): Iterable<FunctionHandle>
|
||||
|
||||
val mightBeIncorrectCode: Boolean get() = false
|
||||
}
|
||||
|
||||
data class Bridge<out Signature>(
|
||||
|
||||
@@ -23,17 +23,20 @@ public class ClassBuilderMode {
|
||||
public final boolean generateMetadata;
|
||||
public final boolean generateSourceRetentionAnnotations;
|
||||
public final boolean generateMultiFileFacadePartClasses;
|
||||
public final boolean mightBeIncorrectCode;
|
||||
|
||||
private ClassBuilderMode(
|
||||
boolean generateBodies,
|
||||
boolean generateMetadata,
|
||||
boolean generateSourceRetentionAnnotations,
|
||||
boolean generateMultiFileFacadePartClasses
|
||||
boolean generateMultiFileFacadePartClasses,
|
||||
boolean mightBeIncorrectCode
|
||||
) {
|
||||
this.generateBodies = generateBodies;
|
||||
this.generateMetadata = generateMetadata;
|
||||
this.generateSourceRetentionAnnotations = generateSourceRetentionAnnotations;
|
||||
this.generateMultiFileFacadePartClasses = generateMultiFileFacadePartClasses;
|
||||
this.mightBeIncorrectCode = mightBeIncorrectCode;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -43,7 +46,8 @@ public class ClassBuilderMode {
|
||||
/* bodies = */ true,
|
||||
/* metadata = */ true,
|
||||
/* sourceRetention = */ false,
|
||||
/* generateMultiFileFacadePartClasses = */ true);
|
||||
/* generateMultiFileFacadePartClasses = */ true,
|
||||
/* mightBeIncorrectCode = */ false);
|
||||
|
||||
/**
|
||||
* ABI for compilation (non-private signatures + inline function bodies)
|
||||
@@ -52,7 +56,8 @@ public class ClassBuilderMode {
|
||||
/* bodies = */ true,
|
||||
/* metadata = */ true,
|
||||
/* sourceRetention = */ false,
|
||||
/* generateMultiFileFacadePartClasses = */ true);
|
||||
/* generateMultiFileFacadePartClasses = */ true,
|
||||
/* mightBeIncorrectCode = */ false);
|
||||
|
||||
/**
|
||||
* Generating light classes: Only function signatures
|
||||
@@ -61,7 +66,8 @@ public class ClassBuilderMode {
|
||||
/* bodies = */ false,
|
||||
/* metadata = */ false,
|
||||
/* sourceRetention = */ true,
|
||||
/* generateMultiFileFacadePartClasses = */ false);
|
||||
/* generateMultiFileFacadePartClasses = */ false,
|
||||
/* mightBeIncorrectCode = */ true);
|
||||
|
||||
/**
|
||||
* Function signatures + metadata (to support incremental compilation with kapt)
|
||||
@@ -70,12 +76,14 @@ public class ClassBuilderMode {
|
||||
/* bodies = */ false,
|
||||
/* metadata = */ true,
|
||||
/* sourceRetention = */ true,
|
||||
/* generateMultiFileFacadePartClasses = */ true);
|
||||
/* generateMultiFileFacadePartClasses = */ true,
|
||||
/* mightBeIncorrectCode = */ true);
|
||||
|
||||
@TestOnly
|
||||
public final static ClassBuilderMode LIGHT_ANALYSIS_FOR_TESTS = new ClassBuilderMode(
|
||||
/* bodies = */ false,
|
||||
/* metadata = */ true,
|
||||
/* sourceRetention = */ false,
|
||||
/* generateMultiFileFacadePartClasses = */ true);
|
||||
/* generateMultiFileFacadePartClasses = */ true,
|
||||
/* mightBeIncorrectCode = */ true);
|
||||
}
|
||||
|
||||
@@ -34,6 +34,9 @@ class DescriptorBasedFunctionHandleForJvm(
|
||||
|
||||
override val isDeclaration: Boolean =
|
||||
descriptor.kind.isReal || needToGenerateDelegationToDefaultImpls(descriptor)
|
||||
|
||||
override val mightBeIncorrectCode: Boolean
|
||||
get() = state.classBuilderMode.mightBeIncorrectCode
|
||||
}
|
||||
|
||||
private fun CallableMemberDescriptor.isJvmDefaultOrPlatformDependent() =
|
||||
|
||||
Reference in New Issue
Block a user