diff --git a/framework/src/test/java/org/checkerframework/framework/test/junit/ValueUncheckedDefaultsTest.java b/framework/src/test/java/org/checkerframework/framework/test/junit/ValueUncheckedDefaultsTest.java index d33bdf51dd8e..f9d836539d24 100644 --- a/framework/src/test/java/org/checkerframework/framework/test/junit/ValueUncheckedDefaultsTest.java +++ b/framework/src/test/java/org/checkerframework/framework/test/junit/ValueUncheckedDefaultsTest.java @@ -20,7 +20,8 @@ public ValueUncheckedDefaultsTest(List testFiles) { "value", // Ignore the test suite's usage of qualifiers in illegal locations. "-AignoreTargetLocations", - "-AuseConservativeDefaultsForUncheckedCode=btyecode", + "-Astubs=tests/value/unchecked-bytecode.astub", + "-AuseConservativeDefaultsForUncheckedCode=bytecode", "-A" + ValueChecker.REPORT_EVAL_WARNS); } diff --git a/framework/tests/value/unchecked-bytecode.astub b/framework/tests/value/unchecked-bytecode.astub new file mode 100644 index 000000000000..560b48f62951 --- /dev/null +++ b/framework/tests/value/unchecked-bytecode.astub @@ -0,0 +1,162 @@ +package java.lang; + +import org.checkerframework.common.value.qual.UnknownVal; + +class StringBuilder { + StringBuilder append(@UnknownVal char c); + + StringBuilder append(@UnknownVal String str); +} + +package java.io; + +import org.checkerframework.common.value.qual.UnknownVal; + +class PrintStream { + void print(@UnknownVal String s); + + void print(@UnknownVal char c); + + void println(@UnknownVal Object x); + + void println(@UnknownVal String x); + + void println(@UnknownVal int x); +} + +class IOException { + IOException(@UnknownVal String message); +} + +package java.lang; + +import org.checkerframework.common.value.qual.UnknownVal; + +class ClassLoader { + Class loadClass(@UnknownVal String name) throws ClassNotFoundException; +} + +class Class { + Class asSubclass(@UnknownVal Class clazz); +} + +class Object { + boolean equals(@UnknownVal Object obj); +} + +class IllegalArgumentException { + IllegalArgumentException(@UnknownVal String s); +} + +class UnsupportedOperationException { + UnsupportedOperationException(@UnknownVal String message); +} + +class RuntimeException { + RuntimeException(@UnknownVal String message, @UnknownVal Throwable cause); +} + +class AssertionError { + AssertionError(@UnknownVal Object detailMessage); +} + +class Error { + Error(@UnknownVal String message); +} + +package org.checkerframework.framework.testchecker.lib; + +import org.checkerframework.common.value.qual.StaticallyExecutable; +import org.checkerframework.common.value.qual.UnknownVal; + +class VarargsMethods { + @StaticallyExecutable + static int test0(@UnknownVal Object... objects); + + @StaticallyExecutable + static int test1(@UnknownVal String s, @UnknownVal Object... objects); + + @StaticallyExecutable + static int test2(@UnknownVal String s, @UnknownVal String s2, @UnknownVal Object... objects); +} + +package java.util; + +import org.checkerframework.common.value.qual.UnknownVal; + +class ArrayList { + ArrayList(@UnknownVal Collection c); +} + +class HashSet { + HashSet(@UnknownVal Collection c); + + boolean contains(@UnknownVal Object o); +} + +interface Set { + boolean retainAll(@UnknownVal Collection c); +} + +package java.nio.file; + +import org.checkerframework.common.value.qual.UnknownVal; + +class Paths { + static Path get(@UnknownVal String first, @UnknownVal String... more); +} + +class Files { + static java.io.BufferedWriter newBufferedWriter( + @UnknownVal Path path, + @UnknownVal java.nio.charset.Charset cs, + @UnknownVal OpenOption... options); + + static boolean isRegularFile(@UnknownVal Path path, @UnknownVal LinkOption... options); +} + +package java.lang.invoke; + +import org.checkerframework.common.value.qual.UnknownVal; + +class MethodHandle { + Object invoke(@UnknownVal Object... args) throws Throwable; +} + +package java.util.stream; + +import org.checkerframework.common.value.qual.UnknownVal; + +interface Stream { + static Stream of(@UnknownVal T... values); + + R collect(@UnknownVal Collector collector); + + Stream skip(@UnknownVal long n); + + Stream sorted(@UnknownVal java.util.Comparator comparator); + + java.util.Optional max(@UnknownVal java.util.Comparator comparator); +} + +interface IntStream { + static IntStream range(@UnknownVal int startInclusive, @UnknownVal int endExclusive); +} + +class Collectors { + static Collector joining(@UnknownVal CharSequence delimiter); + + static Collector> toMap( + @UnknownVal java.util.function.Function keyMapper, + @UnknownVal java.util.function.Function valueMapper); + + static > Collector toMap( + @UnknownVal java.util.function.Function keyMapper, + @UnknownVal java.util.function.Function valueMapper, + @UnknownVal java.util.function.BinaryOperator mergeFunction, + @UnknownVal java.util.function.Supplier mapSupplier); + + static Collector collectingAndThen( + @UnknownVal Collector downstream, + @UnknownVal java.util.function.Function finisher); +}