Do not write 'jet.volatile' annotation to class files

ProGuard fails when it sees a class named 'volatile'
This commit is contained in:
Andrey Breslav
2013-10-10 21:54:35 +04:00
parent 41180d78e2
commit d47109b928
3 changed files with 16 additions and 6 deletions
@@ -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");