blob: 90a40dfd5042a07dc0a19fbc971bcdd9caf8b3e3 [file] [log] [blame]
This directory contains the .smali files used to generate .dex files used
by libcore.java.lang.reflect.ParameterTest.
The use of .smali files allows construction of valid and invalid
system annotations for parameter metadata that are then tested in
ParameterTest.
Regenerate the .dex files with:
make smali
smali assemble libcore/luni/src/test/java/libcore/java/lang/reflect/parameter/ParameterMetdataTestClasses*.smali \
-o libcore/luni/src/test/resources/libcore/java/lang/reflect/parameter/parameter_metadata_test_classes.dex
For reference, the valid smali code should be (roughly) the equivalent of the
following Java code when compiled using a compiler with .dex parameter metadata support
enabled.
The smali was generated using Jack to create a .dex file.
For example:
jack -D jack.java.source.version=1.8 \
--output-dex . \
-cp ${ANDROID_BUILD_TOP}/out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/classes.jack \
src/test/java/libcore/java/lang/reflect/parameter/ParameterMetadataTestClasses.java
It was then decompiled using baksmali, hand modified, and a .dex generated from it using smali.
ParameterMetadataTestClasses* contain valid metadata.
MetadataVariations* contain variations on valid and invalid metdata that would be difficult to
generate from a .java file (i.e. invalid cases, null/empty parameter names).
---------------------
package libcore.java.lang.reflect.parameter;
import java.util.concurrent.Callable;
import java.util.function.Function;
public class ParameterMetadataTestClasses {
static class SingleParameter {
SingleParameter(String p0) {}
void oneParameter(String p0) {}
}
static class GenericParameter {
GenericParameter(Function<String, Integer> p0) {}
void genericParameter(Function<String, Integer> p0) {}
}
static class TwoParameters {
TwoParameters(String p0, Integer p1) {}
void twoParameters(String p0, Integer p1) {}
}
static class FinalParameter {
FinalParameter(final String p0) {}
void finalParameter(final String p0) {}
}
class InnerClass {
public InnerClass() {}
public InnerClass(String p1) {}
public InnerClass(Function<String, Integer> p1) {}
}
enum TestEnum { ONE, TWO }
static class SingleVarArgs {
SingleVarArgs(String... p0) {}
void varArgs(String... p0) {}
}
static class MixedVarArgs {
MixedVarArgs(Integer[] p0, String... p1) {}
void both(Integer[] p0, String... p1) {}
}
static class NonVarArgs {
NonVarArgs(Integer[] p0) {}
void notVarArgs(Integer[] p0) {}
}
static class NonIdenticalParameters {
void method0(String p1) {}
void method1(String p1) {}
}
private String outerClassMethod() {
return "Howdy";
}
public Class<?> getAnonymousClassWith1ParameterConstructor() {
// Deliberately not implemented with a lambda. Do not refactor.
Callable<String> anonymousClassObject = new Callable<String>() {
@Override
public String call() throws Exception {
return ParameterMetadataTestClasses.this.outerClassMethod();
}
};
return anonymousClassObject.getClass();
}
public Class<?> getMethodClassWith1ImplicitParameterConstructor() {
class MethodClass {
MethodClass() {
ParameterMetadataTestClasses.this.outerClassMethod();
}
}
return MethodClass.class;
}
public Class<?> getLambdaClassWith1ParameterConstructor() {
return ((Callable<String>) ParameterMetadataTestClasses.this::outerClassMethod).getClass();
}
}
----------------
package libcore.java.lang.reflect.parameter;
public interface MetadataVariations {
void emptyMethodParametersAnnotation();
void tooManyAccessFlags(final String p0);
void tooFewAccessFlags(final String p0, final String p1);
void tooManyNames(final String p0);
void tooFewNames(final String p0, final String p1);
void tooManyBoth(final String p0);
void tooFewBoth(final String p0, final String p1);
void nullName(final String p0);
void emptyName(final String p0);
void nameWithSemicolon(final String p0);
void nameWithSlash(final String p0);
void nameWithPeriod(final String p0);
void nameWithOpenSquareBracket(final String p0);
void badAccessModifier(final String p0);
void badlyFormedAnnotation(final String p0);
void manyParameters(
final int a000, final int a001, final int a002, final int a003, final int a004,
final int a005, final int a006, final int a007, final int a008, final int a009,
final int a010, final int a011, final int a012, final int a013, final int a014,
final int a015, final int a016, final int a017, final int a018, final int a019,
final int a020, final int a021, final int a022, final int a023, final int a024,
final int a025, final int a026, final int a027, final int a028, final int a029,
final int a030, final int a031, final int a032, final int a033, final int a034,
final int a035, final int a036, final int a037, final int a038, final int a039,
final int a040, final int a041, final int a042, final int a043, final int a044,
final int a045, final int a046, final int a047, final int a048, final int a049,
final int a050, final int a051, final int a052, final int a053, final int a054,
final int a055, final int a056, final int a057, final int a058, final int a059,
final int a060, final int a061, final int a062, final int a063, final int a064,
final int a065, final int a066, final int a067, final int a068, final int a069,
final int a070, final int a071, final int a072, final int a073, final int a074,
final int a075, final int a076, final int a077, final int a078, final int a079,
final int a080, final int a081, final int a082, final int a083, final int a084,
final int a085, final int a086, final int a087, final int a088, final int a089,
final int a090, final int a091, final int a092, final int a093, final int a094,
final int a095, final int a096, final int a097, final int a098, final int a099,
final int a100, final int a101, final int a102, final int a103, final int a104,
final int a105, final int a106, final int a107, final int a108, final int a109,
final int a110, final int a111, final int a112, final int a113, final int a114,
final int a115, final int a116, final int a117, final int a118, final int a119,
final int a120, final int a121, final int a122, final int a123, final int a124,
final int a125, final int a126, final int a127, final int a128, final int a129,
final int a130, final int a131, final int a132, final int a133, final int a134,
final int a135, final int a136, final int a137, final int a138, final int a139,
final int a140, final int a141, final int a142, final int a143, final int a144,
final int a145, final int a146, final int a147, final int a148, final int a149,
final int a150, final int a151, final int a152, final int a153, final int a154,
final int a155, final int a156, final int a157, final int a158, final int a159,
final int a160, final int a161, final int a162, final int a163, final int a164,
final int a165, final int a166, final int a167, final int a168, final int a169,
final int a170, final int a171, final int a172, final int a173, final int a174,
final int a175, final int a176, final int a177, final int a178, final int a179,
final int a180, final int a181, final int a182, final int a183, final int a184,
final int a185, final int a186, final int a187, final int a188, final int a189,
final int a190, final int a191, final int a192, final int a193, final int a194,
final int a195, final int a196, final int a197, final int a198, final int a199,
final int a200, final int a201, final int a202, final int a203, final int a204,
final int a205, final int a206, final int a207, final int a208, final int a209,
final int a210, final int a211, final int a212, final int a213, final int a214,
final int a215, final int a216, final int a217, final int a218, final int a219,
final int a220, final int a221, final int a222, final int a223, final int a224,
final int a225, final int a226, final int a227, final int a228, final int a229,
final int a230, final int a231, final int a232, final int a233, final int a234,
final int a235, final int a236, final int a237, final int a238, final int a239,
final int a240, final int a241, final int a242, final int a243, final int a244,
final int a245, final int a246, final int a247, final int a248, final int a249,
final int a250, final int a251, final int a252, final int a253, final int a254,
final int a255, final int a256, final int a257, final int a258, final int a259,
final int a260, final int a261, final int a262, final int a263, final int a264,
final int a265, final int a266, final int a267, final int a268, final int a269,
final int a270, final int a271, final int a272, final int a273, final int a274,
final int a275, final int a276, final int a277, final int a278, final int a279,
final int a280, final int a281, final int a282, final int a283, final int a284,
final int a285, final int a286, final int a287, final int a288, final int a289,
final int a290, final int a291, final int a292, final int a293, final int a294,
final int a295, final int a296, final int a297, final int a298, final int a299
);
}