Do not write 'jet.volatile' annotation to class files
ProGuard fails when it sees a class named 'volatile'
This commit is contained in:
@@ -36,7 +36,6 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
|
|||||||
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
|
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
|
||||||
import org.jetbrains.jet.lang.resolve.constants.*;
|
import org.jetbrains.jet.lang.resolve.constants.*;
|
||||||
import org.jetbrains.jet.lang.resolve.constants.StringValue;
|
import org.jetbrains.jet.lang.resolve.constants.StringValue;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
@@ -85,11 +84,17 @@ public abstract class AnnotationCodegen {
|
|||||||
|
|
||||||
AnnotationDescriptor annotationDescriptor = bindingContext.get(BindingContext.ANNOTATION, annotationEntry);
|
AnnotationDescriptor annotationDescriptor = bindingContext.get(BindingContext.ANNOTATION, annotationEntry);
|
||||||
if (annotationDescriptor == null) continue; // Skipping annotations if they are not resolved. Needed for JetLightClass generation
|
if (annotationDescriptor == null) continue; // Skipping annotations if they are not resolved. Needed for JetLightClass generation
|
||||||
|
if (isVolatile(annotationDescriptor)) continue;
|
||||||
|
|
||||||
genAnnotation(annotationDescriptor);
|
genAnnotation(annotationDescriptor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isVolatile(@NotNull AnnotationDescriptor annotationDescriptor) {
|
||||||
|
ClassifierDescriptor classDescriptor = annotationDescriptor.getType().getConstructor().getDeclarationDescriptor();
|
||||||
|
return KotlinBuiltIns.getInstance().getVolatileAnnotationClass().equals(classDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
public void generateAnnotationDefaultValue(CompileTimeConstant value) {
|
public void generateAnnotationDefaultValue(CompileTimeConstant value) {
|
||||||
AnnotationVisitor visitor = visitAnnotation(null, false); // Parameters are unimportant
|
AnnotationVisitor visitor = visitAnnotation(null, false); // Parameters are unimportant
|
||||||
genCompileTimeValue(null, value, visitor);
|
genCompileTimeValue(null, value, visitor);
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
volatile val foo: Int = 1
|
||||||
|
|
||||||
|
// 0 jet/volatile
|
||||||
@@ -16,17 +16,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.codegen;
|
package org.jetbrains.jet.codegen;
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
import junit.framework.Test;
|
import junit.framework.Test;
|
||||||
import junit.framework.TestSuite;
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
import org.jetbrains.jet.JetTestUtils;
|
import org.jetbrains.jet.JetTestUtils;
|
||||||
import org.jetbrains.jet.test.InnerTestClasses;
|
import org.jetbrains.jet.test.InnerTestClasses;
|
||||||
import org.jetbrains.jet.test.TestMetadata;
|
import org.jetbrains.jet.test.TestMetadata;
|
||||||
|
|
||||||
import org.jetbrains.jet.codegen.AbstractBytecodeTextTest;
|
import java.io.File;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/** This class is generated by {@link org.jetbrains.jet.generators.tests.GenerateTests}. DO NOT MODIFY MANUALLY */
|
/** This class is generated by {@link org.jetbrains.jet.generators.tests.GenerateTests}. DO NOT MODIFY MANUALLY */
|
||||||
@SuppressWarnings("all")
|
@SuppressWarnings("all")
|
||||||
@@ -87,6 +84,11 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
|
|||||||
doTest("compiler/testData/codegen/bytecodeText/kt2887.kt");
|
doTest("compiler/testData/codegen/bytecodeText/kt2887.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("noVolatileAnnotation.kt")
|
||||||
|
public void testNoVolatileAnnotation() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/noVolatileAnnotation.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("privateDefaultArgs.kt")
|
@TestMetadata("privateDefaultArgs.kt")
|
||||||
public void testPrivateDefaultArgs() throws Exception {
|
public void testPrivateDefaultArgs() throws Exception {
|
||||||
doTest("compiler/testData/codegen/bytecodeText/privateDefaultArgs.kt");
|
doTest("compiler/testData/codegen/bytecodeText/privateDefaultArgs.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user