blob: 1cf830d1017af69c52a01dd3069bba51c8552e9d [file] [log] [blame]
/*
* @test
* @summary Test that inherited declaration annotations are stored in bytecode.
*
* @compile ../PersistUtil.java Driver.java ReferenceInfoUtil.java Extends.java Super.java
* @run main Driver Extends
*/
public class Extends {
@ADescriptions({
@ADescription(annotation = "org/checkerframework/checker/nullness/qual/EnsuresNonNull")
})
public String m1() {
StringBuilder sb = new StringBuilder();
return TestWrapper.wrap("@Override void setf() { f = new Object(); }");
}
@ADescriptions({})
public String m2() {
return TestWrapper.wrap("@Override void setg() {}");
}
// Issue 342
// We do not want that behavior with related annotations. @Pure should override @SideEffectFree.
@ADescriptions({
@ADescription(annotation = "org/checkerframework/dataflow/qual/Pure"),
@ADescription(annotation = "org/checkerframework/dataflow/qual/SideEffectFree")
})
public String m3() {
return TestWrapper.wrap("@Pure @Override void seth() {}");
}
}
class TestWrapper {
public static String wrap(String... method) {
return "class Test extends Super {"
+ System.lineSeparator()
+ String.join(System.lineSeparator(), method)
+ System.lineSeparator()
+ "}";
}
}