From 49d94f72d262104d974d786d36aa495ba417c49a Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Fri, 22 Mar 2019 03:59:45 +0300 Subject: [PATCH] Revert "Kapt: Generate constant value initializers for mutable properties (KT-30164)" This reverts commit cce2b472 --- .../stubs/ClassFileToSourceStubConverter.kt | 18 +-- ...ileToSourceStubConverterTestGenerated.java | 5 - .../testData/converter/annotations.txt | 2 +- .../testData/converter/kt18791.txt | 4 +- .../testData/converter/modifiers.txt | 2 +- .../converter/unsafePropertyInitializers.kt | 24 ---- .../converter/unsafePropertyInitializers.txt | 118 ------------------ 7 files changed, 5 insertions(+), 168 deletions(-) delete mode 100644 plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.kt delete mode 100644 plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.txt diff --git a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/ClassFileToSourceStubConverter.kt b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/ClassFileToSourceStubConverter.kt index 1d8c6b65395..a8dc19944bb 100644 --- a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/ClassFileToSourceStubConverter.kt +++ b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/ClassFileToSourceStubConverter.kt @@ -28,7 +28,6 @@ import org.jetbrains.kotlin.base.kapt3.KaptFlag import org.jetbrains.kotlin.codegen.coroutines.CONTINUATION_PARAMETER_NAME import org.jetbrains.kotlin.codegen.needsExperimentalCoroutinesWrapper import org.jetbrains.kotlin.config.LanguageFeature -import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.descriptors.annotations.Annotations @@ -50,13 +49,11 @@ import org.jetbrains.kotlin.load.java.sources.JavaSourceElement import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.BindingContext -import org.jetbrains.kotlin.resolve.DelegatingBindingTrace import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall import org.jetbrains.kotlin.resolve.calls.model.DefaultValueArgument import org.jetbrains.kotlin.resolve.calls.model.ResolvedValueArgument import org.jetbrains.kotlin.resolve.constants.* -import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassOrAny @@ -647,10 +644,8 @@ class ClassFileToSourceStubConverter(val kaptContext: KaptContextForStubGenerati private fun convertPropertyInitializer(field: FieldNode): JCExpression? { val value = field.value - val origin = kaptContext.origins[field] - val propertyInitializer = (origin?.element as? KtProperty)?.initializer - if (value != null) { + val propertyInitializer = (kaptContext.origins[field]?.element as? KtProperty)?.initializer if (propertyInitializer != null) { return convertConstantValueArguments(value, listOf(propertyInitializer)) } @@ -658,17 +653,6 @@ class ClassFileToSourceStubConverter(val kaptContext: KaptContextForStubGenerati return convertValueOfPrimitiveTypeOrString(value) } - val propertyType = (origin?.descriptor as? PropertyDescriptor)?.returnType - if (propertyInitializer != null && propertyType != null) { - val moduleDescriptor = kaptContext.generationState.module - val evaluator = ConstantExpressionEvaluator(moduleDescriptor, LanguageVersionSettingsImpl.DEFAULT, kaptContext.project) - val trace = DelegatingBindingTrace(kaptContext.bindingContext, "Kapt") - val const = evaluator.evaluateExpression(propertyInitializer, trace, propertyType) - if (const != null && !const.isError && const.canBeUsedInAnnotations && !const.usesNonConstValAsConstant) { - return convertConstantValueArguments(const.getValue(propertyType), listOf(propertyInitializer)) - } - } - if (isFinal(field.access)) { val type = Type.getType(field.desc) return convertLiteralExpression(getDefaultValue(type)) diff --git a/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/ClassFileToSourceStubConverterTestGenerated.java b/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/ClassFileToSourceStubConverterTestGenerated.java index d3398dd3a9c..313ed50a287 100644 --- a/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/ClassFileToSourceStubConverterTestGenerated.java +++ b/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/ClassFileToSourceStubConverterTestGenerated.java @@ -413,9 +413,4 @@ public class ClassFileToSourceStubConverterTestGenerated extends AbstractClassFi public void testTopLevel() throws Exception { runTest("plugins/kapt3/kapt3-compiler/testData/converter/topLevel.kt"); } - - @TestMetadata("unsafePropertyInitializers.kt") - public void testUnsafePropertyInitializers() throws Exception { - runTest("plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.kt"); - } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/annotations.txt b/plugins/kapt3/kapt3-compiler/testData/converter/annotations.txt index eb6f7768673..a0daffbe80e 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/annotations.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/annotations.txt @@ -101,7 +101,7 @@ import java.lang.System; public final class TestAnno2 { @org.jetbrains.annotations.NotNull() @Anno3(value = "field") - private java.lang.String b = "property initializer"; + private java.lang.String b; @Anno1() public final void a(@org.jetbrains.annotations.NotNull() diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/kt18791.txt b/plugins/kapt3/kapt3-compiler/testData/converter/kt18791.txt index a46e5cfc39f..a0b74f61b25 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/kt18791.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/kt18791.txt @@ -130,9 +130,9 @@ public final class MyActivity { private final int f = 0; public final int propA = app.B.id.textView; private final int propB = app.B.id.textView; - private int propC = app.B.id.textView; + private int propC; public final int propD = app.B.id.textView; - public int propE = app.B.id.textView; + public int propE; private final int propF = 0; @Bind(id = lib.R.id.textView) diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/modifiers.txt b/plugins/kapt3/kapt3-compiler/testData/converter/modifiers.txt index f54ffd3f1da..3ba828dc35e 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/modifiers.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/modifiers.txt @@ -31,7 +31,7 @@ public final class Modifiers { @org.jetbrains.annotations.NotNull() private final transient java.lang.String transientField = ""; @org.jetbrains.annotations.NotNull() - private volatile java.lang.String volatileField = ""; + private volatile java.lang.String volatileField; @org.jetbrains.annotations.NotNull() public final java.lang.String getTransientField() { diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.kt b/plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.kt deleted file mode 100644 index 0a802b38a4d..00000000000 --- a/plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.kt +++ /dev/null @@ -1,24 +0,0 @@ -object Foo { - const val aString: String = "foo" - const val aInt: Int = 3 - - val bString: String = "bar" - val bInt: Int = 5 - - var cString: String = "baz" - var cInt: Int = 7 - - val d = Boo.z - val e = Boo.z.length - val f = 5 + 3 - val g = "a" + "b" - val h = -4 - val i = Int.MAX_VALUE - val j = "$e$g" - val k = g + j -} - -object Boo { - val z = foo() - fun foo() = "abc" -} \ No newline at end of file diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.txt b/plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.txt deleted file mode 100644 index cc80a16adc4..00000000000 --- a/plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.txt +++ /dev/null @@ -1,118 +0,0 @@ -import java.lang.System; - -@kotlin.Metadata() -public final class Boo { - @org.jetbrains.annotations.NotNull() - private static final java.lang.String z = null; - public static final Boo INSTANCE = null; - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getZ() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String foo() { - return null; - } - - private Boo() { - super(); - } -} - -//////////////////// - - -import java.lang.System; - -@kotlin.Metadata() -public final class Foo { - @org.jetbrains.annotations.NotNull() - public static final java.lang.String aString = "foo"; - public static final int aInt = 3; - @org.jetbrains.annotations.NotNull() - private static final java.lang.String bString = "bar"; - private static final int bInt = 5; - @org.jetbrains.annotations.NotNull() - private static java.lang.String cString = "baz"; - private static int cInt = 7; - @org.jetbrains.annotations.NotNull() - private static final java.lang.String d = null; - private static final int e = 0; - private static final int f = 8; - @org.jetbrains.annotations.NotNull() - private static final java.lang.String g = "ab"; - private static final int h = -4; - private static final int i = 2147483647; - @org.jetbrains.annotations.NotNull() - private static final java.lang.String j = null; - @org.jetbrains.annotations.NotNull() - private static final java.lang.String k = null; - public static final Foo INSTANCE = null; - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getBString() { - return null; - } - - public final int getBInt() { - return 0; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getCString() { - return null; - } - - public final void setCString(@org.jetbrains.annotations.NotNull() - java.lang.String p0) { - } - - public final int getCInt() { - return 0; - } - - public final void setCInt(int p0) { - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getD() { - return null; - } - - public final int getE() { - return 0; - } - - public final int getF() { - return 0; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getG() { - return null; - } - - public final int getH() { - return 0; - } - - public final int getI() { - return 0; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getJ() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getK() { - return null; - } - - private Foo() { - super(); - } -}