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.constants.*;
|
||||
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 java.lang.annotation.RetentionPolicy;
|
||||
@@ -85,11 +84,17 @@ public abstract class AnnotationCodegen {
|
||||
|
||||
AnnotationDescriptor annotationDescriptor = bindingContext.get(BindingContext.ANNOTATION, annotationEntry);
|
||||
if (annotationDescriptor == null) continue; // Skipping annotations if they are not resolved. Needed for JetLightClass generation
|
||||
if (isVolatile(annotationDescriptor)) continue;
|
||||
|
||||
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) {
|
||||
AnnotationVisitor visitor = visitAnnotation(null, false); // Parameters are unimportant
|
||||
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;
|
||||
|
||||
import junit.framework.Assert;
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestSuite;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Pattern;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.test.InnerTestClasses;
|
||||
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 */
|
||||
@SuppressWarnings("all")
|
||||
@@ -87,6 +84,11 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
|
||||
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")
|
||||
public void testPrivateDefaultArgs() throws Exception {
|
||||
doTest("compiler/testData/codegen/bytecodeText/privateDefaultArgs.kt");
|
||||
|
||||
Reference in New Issue
Block a user