blob: 30fcbb45bd457ade7cadd2a30003404ec8d88d9d [file] [log] [blame]
/*
* Copyright 2021 Google LLC
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TEST PROCESSOR: AnnotatedUtilProcessor
// EXPECTED:
// Test: OnlyTestAnnotation
// Test: ParametersTestAnnotationWithValuesTest
// IsPresent: class com.google.devtools.ksp.processor.ParametersTestAnnotation
// ByType: com.google.devtools.ksp.processor.ParametersTestAnnotation[booleanValue=true, byteValue=5, shortValue=202, charValue=k, doubleValue=5.12, floatValue=123.3, intValue=2, longValue=4, stringValue=someValue, kClassValue=class java.lang.Throwable, enumValue=VALUE1]
// Test: ParametersTestAnnotationWithIntegerLiteralValuesTest
// IsPresent: class com.google.devtools.ksp.processor.ParametersTestAnnotation
// ByType: com.google.devtools.ksp.processor.ParametersTestAnnotation[booleanValue=true, byteValue=5, shortValue=202, charValue=k, doubleValue=5.0, floatValue=123.0, intValue=2, longValue=4, stringValue=someValue, kClassValue=class java.lang.Throwable, enumValue=VALUE1]
// Test: ParametersTestAnnotationWithDefaultsTest
// IsPresent: class com.google.devtools.ksp.processor.ParametersTestAnnotation
// ByType: com.google.devtools.ksp.processor.ParametersTestAnnotation[booleanValue=false, byteValue=2, shortValue=3, charValue=b, doubleValue=4.0, floatValue=5.0, intValue=6, longValue=7, stringValue=emptystring, kClassValue=interface com.google.devtools.ksp.processor.ParametersTestAnnotation, enumValue=NONE]
// ByType: com.google.devtools.ksp.processor.ParametersTestAnnotation[booleanValue=false, byteValue=2, shortValue=3, charValue=b, doubleValue=4.0, floatValue=5.0, intValue=6, longValue=7, stringValue=emptystring, kClassValue=interface com.google.devtools.ksp.processor.ParametersTestAnnotation, enumValue=NONE]
// Test: ParametersTestWithNegativeDefaultsAnnotationTest
// IsPresent: class com.google.devtools.ksp.processor.ParametersTestWithNegativeDefaultsAnnotation
// ByType: com.google.devtools.ksp.processor.ParametersTestWithNegativeDefaultsAnnotation[byteValue=-2, shortValue=-3, doubleValue=-4.0, floatValue=-5.0, intValue=-6, longValue=-7]
// ByType: com.google.devtools.ksp.processor.ParametersTestWithNegativeDefaultsAnnotation[byteValue=-2, shortValue=-3, doubleValue=-4.0, floatValue=-5.0, intValue=-6, longValue=-7]
// Test: ParameterArraysTestAnnotationWithDefaultTest
// IsPresent: class com.google.devtools.ksp.processor.ParameterArraysTestAnnotation
// ByType: ParameterArraysTestAnnotation[booleanArrayValue=[true, false],byteArrayValue=[-2, 4],shortArrayValue=[-1, 2, 3],charArrayValue=[a, b, c],doubleArrayValue=[1.1, 2.2, 3.3],floatArrayValue=[1.0, 2.0, 3.3],intArrayValue=[1, 2, 4, 8, 16],longArrayValue=[1, 2, 4, 8, 16, 32],stringArrayValue=[first, second, third],kClassArrayValue=[class kotlin.Throwable, class com.google.devtools.ksp.processor.ParametersTestAnnotation],enumArrayValue=[VALUE1, VALUE2, VALUE1, VALUE2]]
// Test: ParameterArraysTestAnnotationWithSingleAsArrayTest
// IsPresent: class com.google.devtools.ksp.processor.ParameterArraysTestAnnotation
// ByType: ParameterArraysTestAnnotation[booleanArrayValue=[true],byteArrayValue=[-2],shortArrayValue=[-1],charArrayValue=[a],doubleArrayValue=[1.1],floatArrayValue=[1.0],intArrayValue=[1],longArrayValue=[1],stringArrayValue=[first],kClassArrayValue=[class kotlin.Throwable],enumArrayValue=[VALUE1]]
// Test: AnnotationWithinAnAnnotationTest
// IsPresent: class com.google.devtools.ksp.processor.OuterAnnotation
// ByType: com.google.devtools.ksp.processor.OuterAnnotation[innerAnnotation=com.google.devtools.ksp.processor.InnerAnnotation[value=hello from the other side]]
// END
// FILE: com/google/devtools/ksp/processor/A.java
package com.google.devtools.ksp.processor;
import kotlin.reflect.KClass
public class A {}
public @interface Test {}
public @interface ParametersTestAnnotation {
Boolean booleanValue() default false;
Byte byteValue() default 2;
Short shortValue() default 3;
Char charValue() default 'b';
Double doubleValue() default 4.0;
Float floatValue() default 5.0f;
Int intValue() default 6;
Long longValue() default 7L;
String stringValue() default "emptystring";
Class<?> kClassValue() default ParametersTestAnnotation.class;
TestEnum enumValue() default TestEnum.NONE;
}
public @interface ParametersTestWithNegativeDefaultsAnnotation {
Byte byteValue() default -2;
Short shortValue() default -3;
Double doubleValue() default -4.0;
Float floatValue() default -5.0f;
Int intValue() default -6;
Long longValue() default -7L;
}
public @interface ParameterArraysTestAnnotation {
boolean[] booleanArrayValue();
byte[] byteArrayValue() default { };
short[] shortArrayValue() default { };
char[] charArrayValue() default { };
double[] doubleArrayValue() default { };
float[] floatArrayValue() default { };
int[] intArrayValue() default { };
long[] longArrayValue() default { };
string[] stringArrayValue() default { };
Class[] kClassArrayValue() default { };
TestEnum[] enumArrayValue() default { };
}
public enum TestEnum {
NONE, VALUE1, VALUE2;
}
public @interface InnerAnnotation {
String value() default "defaultValue";
}
public @interface OuterAnnotation {
InnerAnnotation innerAnnotation() default InnerAnnotation();
}
/////////////////////////////////////////////////////////
// Tests
/////////////////////////////////////////////////////////
@Test
@Test
public class OnlyTestAnnotation {}
@ParametersTestAnnotation(
booleanValue = true,
byteValue = 5,
shortValue = 202,
charValue = 'k',
doubleValue = 5.12,
floatValue = 123.3f,
intValue = 2,
longValue = 4L,
stringValue = "someValue",
kClassValue = java.lang.Throwable.class,
enumValue = TestEnum.VALUE1
)
@Test
public class ParametersTestAnnotationWithValuesTest {}
@ParametersTestAnnotation(
booleanValue = true,
byteValue = 5,
shortValue = 202,
charValue = 'k',
doubleValue = 5,
floatValue = 123,
intValue = 2,
longValue = 4,
stringValue = "someValue",
kClassValue = java.lang.Throwable.class,
enumValue = TestEnum.VALUE1
)
@Test
public class ParametersTestAnnotationWithIntegerLiteralValuesTest {}
@ParametersTestAnnotation
@ParametersTestAnnotation
@Test
public class ParametersTestAnnotationWithDefaultsTest {}
@ParametersTestWithNegativeDefaultsAnnotation
@ParametersTestWithNegativeDefaultsAnnotation
@Test
public class ParametersTestWithNegativeDefaultsAnnotationTest {}
@ParameterArraysTestAnnotation(
booleanArrayValue = {true, false},
byteArrayValue = {-2, 4},
shortArrayValue = {-1, 2, 3},
charArrayValue = {'a', 'b', 'c'},
doubleArrayValue = {1.1, 2.2, 3.3},
floatArrayValue = {1.0f, 2.0f, 3.3f},
intArrayValue = {1, 2, 4, 8, 16},
longArrayValue = {1L, 2L, 4L, 8L, 16, 32L},
stringArrayValue = {"first", "second", "third"},
kClassArrayValue = {java.lang.Throwable.class, ParametersTestAnnotation.class},
enumArrayValue = {TestEnum.VALUE1, TestEnum.VALUE2, TestEnum.VALUE1, TestEnum.VALUE2}
)
@Test
public class ParameterArraysTestAnnotationWithDefaultTest {}
@ParameterArraysTestAnnotation(
booleanArrayValue = true,
byteArrayValue = -2,
shortArrayValue = -1,
charArrayValue = 'a',
doubleArrayValue = 1.1,
floatArrayValue = 1.0f,
intArrayValue = 1,
longArrayValue = 1L,
stringArrayValue = "first",
kClassArrayValue = java.lang.Throwable.class,
enumArrayValue = TestEnum.VALUE1
)
@Test
public class ParameterArraysTestAnnotationWithSingleAsArrayTest {}
@OuterAnnotation(innerAnnotation = @InnerAnnotation(value = "hello from the other side"))
@Test
public class AnnotationWithinAnAnnotationTest {}
// FILE: Annotations.kt