< prev index next >

test/tools/javac/modules/AnnotationsOnModules.java

Print this page

        

*** 65,78 **** } @Test public void testSimpleAnnotation(Path base) throws Exception { Path moduleSrc = base.resolve("module-src"); ! Path m1 = moduleSrc.resolve("m1"); tb.writeJavaFiles(m1, ! "@Deprecated module m1 { }"); Path modulePath = base.resolve("module-path"); Files.createDirectories(modulePath); --- 65,78 ---- } @Test public void testSimpleAnnotation(Path base) throws Exception { Path moduleSrc = base.resolve("module-src"); ! Path m1 = moduleSrc.resolve("m1x"); tb.writeJavaFiles(m1, ! "@Deprecated module m1x { }"); Path modulePath = base.resolve("module-path"); Files.createDirectories(modulePath);
*** 81,106 **** .outdir(modulePath) .files(findJavaFiles(m1)) .run() .writeAll(); ! ClassFile cf = ClassFile.read(modulePath.resolve("m1").resolve("module-info.class")); RuntimeVisibleAnnotations_attribute annotations = (RuntimeVisibleAnnotations_attribute) cf.attributes.map.get(Attribute.RuntimeVisibleAnnotations); if (annotations == null || annotations.annotations.length != 1) { throw new AssertionError("Annotations not correct!"); } } @Test public void testAnnotationWithImport(Path base) throws Exception { Path moduleSrc = base.resolve("module-src"); ! Path m1 = moduleSrc.resolve("m1"); tb.writeJavaFiles(m1, ! "import m1.A; @A module m1 { }", ! "package m1; import java.lang.annotation.*; @Target(ElementType.MODULE) public @interface A {}"); Path modulePath = base.resolve("module-path"); Files.createDirectories(modulePath); --- 81,106 ---- .outdir(modulePath) .files(findJavaFiles(m1)) .run() .writeAll(); ! ClassFile cf = ClassFile.read(modulePath.resolve("m1x").resolve("module-info.class")); RuntimeVisibleAnnotations_attribute annotations = (RuntimeVisibleAnnotations_attribute) cf.attributes.map.get(Attribute.RuntimeVisibleAnnotations); if (annotations == null || annotations.annotations.length != 1) { throw new AssertionError("Annotations not correct!"); } } @Test public void testAnnotationWithImport(Path base) throws Exception { Path moduleSrc = base.resolve("module-src"); ! Path m1 = moduleSrc.resolve("m1x"); tb.writeJavaFiles(m1, ! "import m1x.A; @A module m1x { }", ! "package m1x; import java.lang.annotation.*; @Target(ElementType.MODULE) public @interface A {}"); Path modulePath = base.resolve("module-path"); Files.createDirectories(modulePath);
*** 109,136 **** .outdir(modulePath) .files(findJavaFiles(m1)) .run() .writeAll(); ! ClassFile cf = ClassFile.read(modulePath.resolve("m1").resolve("module-info.class")); RuntimeInvisibleAnnotations_attribute annotations = (RuntimeInvisibleAnnotations_attribute) cf.attributes.map.get(Attribute.RuntimeInvisibleAnnotations); if (annotations == null || annotations.annotations.length != 1) { throw new AssertionError("Annotations not correct!"); } } @Test public void testModuleInfoAnnotationsInAPI(Path base) throws Exception { Path moduleSrc = base.resolve("module-src"); ! Path m1 = moduleSrc.resolve("m1"); tb.writeJavaFiles(m1, ! "import m1.*; @A @Deprecated @E @E module m1 { }", ! "package m1; import java.lang.annotation.*; @Target(ElementType.MODULE) public @interface A {}", ! "package m1; import java.lang.annotation.*; @Target(ElementType.MODULE) @Repeatable(C.class) public @interface E {}", ! "package m1; import java.lang.annotation.*; @Target(ElementType.MODULE) public @interface C { public E[] value(); }"); Path modulePath = base.resolve("module-path"); Files.createDirectories(modulePath); --- 109,136 ---- .outdir(modulePath) .files(findJavaFiles(m1)) .run() .writeAll(); ! ClassFile cf = ClassFile.read(modulePath.resolve("m1x").resolve("module-info.class")); RuntimeInvisibleAnnotations_attribute annotations = (RuntimeInvisibleAnnotations_attribute) cf.attributes.map.get(Attribute.RuntimeInvisibleAnnotations); if (annotations == null || annotations.annotations.length != 1) { throw new AssertionError("Annotations not correct!"); } } @Test public void testModuleInfoAnnotationsInAPI(Path base) throws Exception { Path moduleSrc = base.resolve("module-src"); ! Path m1 = moduleSrc.resolve("m1x"); tb.writeJavaFiles(m1, ! "import m1x.*; @A @Deprecated @E @E module m1x { }", ! "package m1x; import java.lang.annotation.*; @Target(ElementType.MODULE) public @interface A {}", ! "package m1x; import java.lang.annotation.*; @Target(ElementType.MODULE) @Repeatable(C.class) public @interface E {}", ! "package m1x; import java.lang.annotation.*; @Target(ElementType.MODULE) public @interface C { public E[] value(); }"); Path modulePath = base.resolve("module-path"); Files.createDirectories(modulePath);
*** 151,187 **** Files.createDirectories(out); new JavacTask(tb) .options("--module-path", modulePath.toString(), ! "--add-modules", "m1", "-processor", AP.class.getName()) .outdir(out) .files(findJavaFiles(src)) .run() .writeAll(); new JavacTask(tb) .options("--module-path", modulePath.toString() + File.pathSeparator + out.toString(), ! "--add-modules", "m1", "-processor", AP.class.getName(), "-proc:only") ! .classes("m1/m1.A") .files(findJavaFiles(src)) .run() .writeAll(); } @SupportedAnnotationTypes("*") public static final class AP extends AbstractProcessor { @Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { ! ModuleElement m1 = processingEnv.getElementUtils().getModuleElement("m1"); Set<String> actualAnnotations = new HashSet<>(); Set<String> expectedAnnotations = ! new HashSet<>(Arrays.asList("@m1.A", "@java.lang.Deprecated", "@m1.C({@m1.E, @m1.E})")); for (AnnotationMirror am : m1.getAnnotationMirrors()) { actualAnnotations.add(am.toString()); } --- 151,187 ---- Files.createDirectories(out); new JavacTask(tb) .options("--module-path", modulePath.toString(), ! "--add-modules", "m1x", "-processor", AP.class.getName()) .outdir(out) .files(findJavaFiles(src)) .run() .writeAll(); new JavacTask(tb) .options("--module-path", modulePath.toString() + File.pathSeparator + out.toString(), ! "--add-modules", "m1x", "-processor", AP.class.getName(), "-proc:only") ! .classes("m1x/m1x.A") .files(findJavaFiles(src)) .run() .writeAll(); } @SupportedAnnotationTypes("*") public static final class AP extends AbstractProcessor { @Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { ! ModuleElement m1 = processingEnv.getElementUtils().getModuleElement("m1x"); Set<String> actualAnnotations = new HashSet<>(); Set<String> expectedAnnotations = ! new HashSet<>(Arrays.asList("@m1x.A", "@java.lang.Deprecated", "@m1x.C({@m1x.E, @m1x.E})")); for (AnnotationMirror am : m1.getAnnotationMirrors()) { actualAnnotations.add(am.toString()); }
*** 195,231 **** } @Test public void testModuleDeprecation(Path base) throws Exception { Path moduleSrc = base.resolve("module-src"); ! Path m1 = moduleSrc.resolve("m1"); tb.writeJavaFiles(m1, ! "@Deprecated module m1 { }"); ! Path m2 = moduleSrc.resolve("m2"); tb.writeJavaFiles(m2, ! "@Deprecated module m2 { }"); ! Path m3 = moduleSrc.resolve("m3"); Path modulePath = base.resolve("module-path"); Files.createDirectories(modulePath); List<String> actual; List<String> expected; for (String suppress : new String[] {"", "@Deprecated ", "@SuppressWarnings(\"deprecation\") "}) { tb.writeJavaFiles(m3, ! suppress + "module m3 {\n" + ! " requires m1;\n" + ! " exports api to m1, m2;\n" + "}", "package api; public class Api { }"); ! System.err.println("compile m3"); actual = new JavacTask(tb) .options("--module-source-path", moduleSrc.toString(), "-XDrawDiagnostics") .outdir(modulePath) .files(findJavaFiles(moduleSrc)) --- 195,231 ---- } @Test public void testModuleDeprecation(Path base) throws Exception { Path moduleSrc = base.resolve("module-src"); ! Path m1 = moduleSrc.resolve("m1x"); tb.writeJavaFiles(m1, ! "@Deprecated module m1x { }"); ! Path m2 = moduleSrc.resolve("m2x"); tb.writeJavaFiles(m2, ! "@Deprecated module m2x { }"); ! Path m3 = moduleSrc.resolve("m3x"); Path modulePath = base.resolve("module-path"); Files.createDirectories(modulePath); List<String> actual; List<String> expected; for (String suppress : new String[] {"", "@Deprecated ", "@SuppressWarnings(\"deprecation\") "}) { tb.writeJavaFiles(m3, ! suppress + "module m3x {\n" + ! " requires m1x;\n" + ! " exports api to m1x, m2x;\n" + "}", "package api; public class Api { }"); ! System.err.println("compile m3x"); actual = new JavacTask(tb) .options("--module-source-path", moduleSrc.toString(), "-XDrawDiagnostics") .outdir(modulePath) .files(findJavaFiles(moduleSrc))
*** 243,253 **** if (!expected.equals(actual)) { throw new AssertionError("Unexpected output: " + actual + "; suppress: " + suppress); } ! System.err.println("compile m3 with -Xlint:-deprecation"); actual = new JavacTask(tb) .options("--module-source-path", moduleSrc.toString(), "-XDrawDiagnostics", "-Xlint:deprecation") .outdir(modulePath) --- 243,253 ---- if (!expected.equals(actual)) { throw new AssertionError("Unexpected output: " + actual + "; suppress: " + suppress); } ! System.err.println("compile m3x with -Xlint:-deprecation"); actual = new JavacTask(tb) .options("--module-source-path", moduleSrc.toString(), "-XDrawDiagnostics", "-Xlint:deprecation") .outdir(modulePath)
*** 256,283 **** .writeAll() .getOutputLines(OutputKind.DIRECT); if (suppress.isEmpty()) { expected = Arrays.asList( ! "module-info.java:2:14: compiler.warn.has.been.deprecated.module: m1", "1 warning"); } else { expected = Arrays.asList(""); } if (!expected.equals(actual)) { throw new AssertionError("Unexpected output: " + actual + "; suppress: " + suppress); } //load the deprecated module-infos from classfile: ! System.err.println("compile m3 with -Xlint:-deprecation, loading deprecated modules from classes"); actual = new JavacTask(tb) .options("--module-path", modulePath.toString(), "-XDrawDiagnostics", "-Xlint:deprecation") ! .outdir(modulePath.resolve("m3")) ! .files(findJavaFiles(moduleSrc.resolve("m3"))) .run() .writeAll() .getOutputLines(OutputKind.DIRECT); if (!expected.equals(actual)) { --- 256,283 ---- .writeAll() .getOutputLines(OutputKind.DIRECT); if (suppress.isEmpty()) { expected = Arrays.asList( ! "module-info.java:2:14: compiler.warn.has.been.deprecated.module: m1x", "1 warning"); } else { expected = Arrays.asList(""); } if (!expected.equals(actual)) { throw new AssertionError("Unexpected output: " + actual + "; suppress: " + suppress); } //load the deprecated module-infos from classfile: ! System.err.println("compile m3x with -Xlint:-deprecation, loading deprecated modules from classes"); actual = new JavacTask(tb) .options("--module-path", modulePath.toString(), "-XDrawDiagnostics", "-Xlint:deprecation") ! .outdir(modulePath.resolve("m3x")) ! .files(findJavaFiles(moduleSrc.resolve("m3x"))) .run() .writeAll() .getOutputLines(OutputKind.DIRECT); if (!expected.equals(actual)) {
< prev index next >