Minor. Introduce FunctionHandle::mightBeIncorrectCode

This commit is contained in:
Denis Zharkov
2018-12-21 10:54:29 +03:00
parent cd51658976
commit e0ff7281b4
3 changed files with 19 additions and 6 deletions
@@ -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() =