From e668a0d4d04a515f6b18591b931ed5729da6d5d9 Mon Sep 17 00:00:00 2001 From: Wagyourtail Date: Tue, 6 Aug 2024 14:04:59 -0500 Subject: [PATCH] cleanup --- .../jvmdg/coverage/ApiCoverageChecker.java | 21 +++++++++++++--- .../j10/stub/java_base/J_L_I_MethodType.java | 2 ++ .../stub/java_net_http/J_N_H_HttpHeaders.java | 2 ++ .../java_net_http/J_N_H_HttpResponse.java | 5 ++++ .../j12/stub/java_base/J_L_C_ClassDesc.java | 2 ++ .../j12/stub/java_base/J_N_F_FileSystems.java | 3 +++ .../java_base/J_N_F_S_FileSystemProvider.java | 3 +++ .../j14/stub/java_base/J_I_PrintStream.java | 5 ---- ..._L_I_MethodHandles$Lookup$ClassOption.java | 25 ------------------- .../java_base/J_L_I_MethodHandles$Lookup.java | 14 ++++++++++- .../stub/java_base/J_L_R_RecordComponent.java | 2 +- .../stub/java_base/J_U_S_DoubleStream.java | 2 ++ .../j16/stub/java_base/J_U_S_IntStream.java | 2 ++ .../j16/stub/java_base/J_U_S_LongStream.java | 2 ++ .../j17/stub/java_base/J_U_HexFormat.java | 6 ++++- .../java_base/J_U_SequencedCollection.java | 3 +++ .../j21/stub/java_base/J_U_SequencedMap.java | 3 +++ .../j21/stub/java_base/J_U_SequencedSet.java | 6 +++++ .../jvmdg/j9/stub/java_base/J_L_Module.java | 3 +++ .../jvmdg/j9/stub/java_base/J_U_C_Flow.java | 3 +++ .../jvmdg/providers/Java15Downgrader.java | 2 +- .../jvmdg/version/CoverageIgnore.java | 14 +++++++++++ 22 files changed, 92 insertions(+), 38 deletions(-) delete mode 100644 java-api/src/java15/java/xyz/wagyourtail/jvmdg/j15/stub/java_base/J_L_I_MethodHandles$Lookup$ClassOption.java create mode 100644 src/shared/java/xyz/wagyourtail/jvmdg/version/CoverageIgnore.java diff --git a/java-api/src/coverage/java/xyz/wagyourtail/jvmdg/coverage/ApiCoverageChecker.java b/java-api/src/coverage/java/xyz/wagyourtail/jvmdg/coverage/ApiCoverageChecker.java index 8240f0ca..4d649ed4 100644 --- a/java-api/src/coverage/java/xyz/wagyourtail/jvmdg/coverage/ApiCoverageChecker.java +++ b/java-api/src/coverage/java/xyz/wagyourtail/jvmdg/coverage/ApiCoverageChecker.java @@ -9,6 +9,9 @@ import xyz.wagyourtail.jvmdg.util.Pair; import xyz.wagyourtail.jvmdg.util.Utils; import xyz.wagyourtail.jvmdg.version.Adapter; +import xyz.wagyourtail.jvmdg.version.CoverageIgnore; +import xyz.wagyourtail.jvmdg.version.Modify; +import xyz.wagyourtail.jvmdg.version.Stub; import xyz.wagyourtail.jvmdg.version.map.ClassMapping; import xyz.wagyourtail.jvmdg.version.map.FullyQualifiedMemberNameAndDesc; import xyz.wagyourtail.jvmdg.version.map.MemberNameAndDesc; @@ -16,6 +19,8 @@ import java.io.File; import java.io.IOException; import java.io.UncheckedIOException; +import java.lang.reflect.AnnotatedElement; +import java.lang.reflect.Executable; import java.lang.reflect.Member; import java.net.URISyntaxException; import java.net.URL; @@ -94,11 +99,17 @@ public static void main(String[] args) throws IOException, URISyntaxException { Map stubClassTypes = versionProvider.classStubs.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().getFirst())); Set stubClassMethods = versionProvider.classStubs.entrySet().stream().flatMap (e -> - Stream.concat( + Stream.concat( Arrays.stream(e.getValue().getSecond().getFirst().getDeclaredMethods()), Arrays.stream(e.getValue().getSecond().getFirst().getConstructors()) - ).filter(m -> (m.getModifiers() & (Opcodes.ACC_PUBLIC | Opcodes.ACC_PROTECTED)) != 0 && (m.getModifiers() & Opcodes.ACC_SYNTHETIC) == 0) - .map(MemberNameAndDesc::fromMember) + ).filter(m -> + (m.getModifiers() & (Opcodes.ACC_PUBLIC | Opcodes.ACC_PROTECTED)) != 0 && + (m.getModifiers() & Opcodes.ACC_SYNTHETIC) == 0 && + !m.isAnnotationPresent(CoverageIgnore.class) && + !m.isAnnotationPresent(Stub.class) && + !m.isAnnotationPresent(Modify.class) && + !m.getName().startsWith("jvmdg$") + ).map(MemberNameAndDesc::fromMember) .map(m -> m.toFullyQualified(e.getValue().getFirst())) ).collect(Collectors.toSet()); var unmatchedStubs = versionProvider.stubMappings.values().stream().flatMap(value -> Stream.of(value.getMethodStubMap().values().stream(), value.getMethodModifyMap().values().stream()).flatMap(e -> e)).map(Pair::getFirst).collect(Collectors.toList()); @@ -226,7 +237,9 @@ public static void main(String[] args) throws IOException, URISyntaxException { var unmatched = Path.of("./coverage/" + stubVersion + "/unmatched.txt"); writeList( Stream.concat( - unmatchedStubs.stream().map(FullyQualifiedMemberNameAndDesc::of), + unmatchedStubs.stream() + .filter(e -> !e.isAnnotationPresent(CoverageIgnore.class)) + .map(FullyQualifiedMemberNameAndDesc::of), stubClassMethods.stream() ).map(e -> new MemberInfo("unknown", e, false, false)) .collect(Collectors.toList()), diff --git a/java-api/src/java10/java/xyz/wagyourtail/jvmdg/j10/stub/java_base/J_L_I_MethodType.java b/java-api/src/java10/java/xyz/wagyourtail/jvmdg/j10/stub/java_base/J_L_I_MethodType.java index 858948ce..e3101c9a 100644 --- a/java-api/src/java10/java/xyz/wagyourtail/jvmdg/j10/stub/java_base/J_L_I_MethodType.java +++ b/java-api/src/java10/java/xyz/wagyourtail/jvmdg/j10/stub/java_base/J_L_I_MethodType.java @@ -8,6 +8,8 @@ public class J_L_I_MethodType { + // pkg-private -> public + @Stub public static Class lastParameterType(MethodType mt) { if (mt.parameterCount() == 0) { diff --git a/java-api/src/java11/java/xyz/wagyourtail/jvmdg/j11/stub/java_net_http/J_N_H_HttpHeaders.java b/java-api/src/java11/java/xyz/wagyourtail/jvmdg/j11/stub/java_net_http/J_N_H_HttpHeaders.java index 8a5871bc..20cfcbe2 100644 --- a/java-api/src/java11/java/xyz/wagyourtail/jvmdg/j11/stub/java_net_http/J_N_H_HttpHeaders.java +++ b/java-api/src/java11/java/xyz/wagyourtail/jvmdg/j11/stub/java_net_http/J_N_H_HttpHeaders.java @@ -1,6 +1,7 @@ package xyz.wagyourtail.jvmdg.j11.stub.java_net_http; import xyz.wagyourtail.jvmdg.version.Adapter; +import xyz.wagyourtail.jvmdg.version.CoverageIgnore; import java.util.ArrayList; import java.util.List; @@ -17,6 +18,7 @@ public class J_N_H_HttpHeaders { Map> headers; + @CoverageIgnore public J_N_H_HttpHeaders(Map> headers) { this.headers = headers; } diff --git a/java-api/src/java11/java/xyz/wagyourtail/jvmdg/j11/stub/java_net_http/J_N_H_HttpResponse.java b/java-api/src/java11/java/xyz/wagyourtail/jvmdg/j11/stub/java_net_http/J_N_H_HttpResponse.java index 7add34c0..626442eb 100644 --- a/java-api/src/java11/java/xyz/wagyourtail/jvmdg/j11/stub/java_net_http/J_N_H_HttpResponse.java +++ b/java-api/src/java11/java/xyz/wagyourtail/jvmdg/j11/stub/java_net_http/J_N_H_HttpResponse.java @@ -77,6 +77,9 @@ interface BodyHandler { @Adapter("Ljava/net/http/HttpResponse$BodyHandlers;") class BodyHandlers { + + private BodyHandlers() {} + private static Charset charsetFrom(J_N_H_HttpHeaders headers) { // throw MissingStubError.create(); return StandardCharsets.UTF_8; @@ -223,6 +226,8 @@ public static BodyHandler buffering(BodyHandler downstream, int buffer @Adapter("Ljava/net/http/HttpResponse$BodySubscribers;") class BodySubscribers { + private BodySubscribers() {} + public static BodySubscriber fromSubscriber(Flow.Subscriber> subscriber) { return fromSubscriber(subscriber, (s) -> null); } diff --git a/java-api/src/java12/java/xyz/wagyourtail/jvmdg/j12/stub/java_base/J_L_C_ClassDesc.java b/java-api/src/java12/java/xyz/wagyourtail/jvmdg/j12/stub/java_base/J_L_C_ClassDesc.java index 0e2ffb30..8a01fe1a 100644 --- a/java-api/src/java12/java/xyz/wagyourtail/jvmdg/j12/stub/java_base/J_L_C_ClassDesc.java +++ b/java-api/src/java12/java/xyz/wagyourtail/jvmdg/j12/stub/java_base/J_L_C_ClassDesc.java @@ -1,6 +1,7 @@ package xyz.wagyourtail.jvmdg.j12.stub.java_base; import xyz.wagyourtail.jvmdg.version.Adapter; +import xyz.wagyourtail.jvmdg.version.CoverageIgnore; import java.lang.invoke.MethodHandles; import java.util.Objects; @@ -164,6 +165,7 @@ default String displayName() { } @Override + @CoverageIgnore // for generics Class resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException; boolean equals(Object obj); diff --git a/java-api/src/java12/java/xyz/wagyourtail/jvmdg/j12/stub/java_base/J_N_F_FileSystems.java b/java-api/src/java12/java/xyz/wagyourtail/jvmdg/j12/stub/java_base/J_N_F_FileSystems.java index e082e806..ef561854 100644 --- a/java-api/src/java12/java/xyz/wagyourtail/jvmdg/j12/stub/java_base/J_N_F_FileSystems.java +++ b/java-api/src/java12/java/xyz/wagyourtail/jvmdg/j12/stub/java_base/J_N_F_FileSystems.java @@ -1,5 +1,6 @@ package xyz.wagyourtail.jvmdg.j12.stub.java_base; +import xyz.wagyourtail.jvmdg.version.CoverageIgnore; import xyz.wagyourtail.jvmdg.version.Ref; import xyz.wagyourtail.jvmdg.version.Stub; @@ -13,6 +14,7 @@ public class J_N_F_FileSystems { // fix env bug in older java + @CoverageIgnore @Stub(ref = @Ref("java/nio/file/FileSystems")) public static FileSystem newFileSystem(URI uri, Map env) throws IOException { env.replaceAll((k, v) -> { @@ -24,6 +26,7 @@ public static FileSystem newFileSystem(URI uri, Map env) throws return FileSystems.newFileSystem(uri, env); } + @CoverageIgnore @Stub(ref = @Ref("java/nio/file/FileSystems")) public static FileSystem newFileSystem(URI uri, Map env, ClassLoader loader) throws IOException { env.replaceAll((k, v) -> { diff --git a/java-api/src/java12/java/xyz/wagyourtail/jvmdg/j12/stub/java_base/J_N_F_S_FileSystemProvider.java b/java-api/src/java12/java/xyz/wagyourtail/jvmdg/j12/stub/java_base/J_N_F_S_FileSystemProvider.java index 9355fa32..337473d6 100644 --- a/java-api/src/java12/java/xyz/wagyourtail/jvmdg/j12/stub/java_base/J_N_F_S_FileSystemProvider.java +++ b/java-api/src/java12/java/xyz/wagyourtail/jvmdg/j12/stub/java_base/J_N_F_S_FileSystemProvider.java @@ -1,5 +1,6 @@ package xyz.wagyourtail.jvmdg.j12.stub.java_base; +import xyz.wagyourtail.jvmdg.version.CoverageIgnore; import xyz.wagyourtail.jvmdg.version.Stub; import java.io.IOException; @@ -12,6 +13,7 @@ public class J_N_F_S_FileSystemProvider { @Stub + @CoverageIgnore public static FileSystem newFileSystem(FileSystemProvider provider, URI uri, Map env) throws IOException { env.replaceAll((k, v) -> { if (v instanceof Boolean && !k.equals("useTempFile")) { @@ -23,6 +25,7 @@ public static FileSystem newFileSystem(FileSystemProvider provider, URI uri, Map } @Stub + @CoverageIgnore public static FileSystem newFileSystem(FileSystemProvider provider, Path path, Map env) throws IOException { env.replaceAll((k, v) -> { if (v instanceof Boolean && !k.equals("useTempFile")) { diff --git a/java-api/src/java14/java/xyz/wagyourtail/jvmdg/j14/stub/java_base/J_I_PrintStream.java b/java-api/src/java14/java/xyz/wagyourtail/jvmdg/j14/stub/java_base/J_I_PrintStream.java index f1d9cc36..2d925066 100644 --- a/java-api/src/java14/java/xyz/wagyourtail/jvmdg/j14/stub/java_base/J_I_PrintStream.java +++ b/java-api/src/java14/java/xyz/wagyourtail/jvmdg/j14/stub/java_base/J_I_PrintStream.java @@ -7,11 +7,6 @@ public class J_I_PrintStream { - @Stub - public static void write(PrintStream stream, byte[] buf) { - stream.write(buf, 0, buf.length); - } - @Stub public static void writeBytes(PrintStream stream, byte[] buf) { stream.write(buf, 0, buf.length); diff --git a/java-api/src/java15/java/xyz/wagyourtail/jvmdg/j15/stub/java_base/J_L_I_MethodHandles$Lookup$ClassOption.java b/java-api/src/java15/java/xyz/wagyourtail/jvmdg/j15/stub/java_base/J_L_I_MethodHandles$Lookup$ClassOption.java deleted file mode 100644 index 68d31d3d..00000000 --- a/java-api/src/java15/java/xyz/wagyourtail/jvmdg/j15/stub/java_base/J_L_I_MethodHandles$Lookup$ClassOption.java +++ /dev/null @@ -1,25 +0,0 @@ -package xyz.wagyourtail.jvmdg.j15.stub.java_base; - -import xyz.wagyourtail.jvmdg.version.Adapter; - -import java.util.Set; - -@Adapter("Ljava/lang/invoke/MethodHandles$Lookup$ClassOption;") -public enum J_L_I_MethodHandles$Lookup$ClassOption { - NESTMATE(0x00000001), - STRONG(0x00000004); - - private final int flag; - - J_L_I_MethodHandles$Lookup$ClassOption(int flag) { - this.flag = flag; - } - - public static int optionsToFlag(Set options) { - int flags = 0; - for (J_L_I_MethodHandles$Lookup$ClassOption cp : options) { - flags |= cp.flag; - } - return flags; - } -} diff --git a/java-api/src/java15/java/xyz/wagyourtail/jvmdg/j15/stub/java_base/J_L_I_MethodHandles$Lookup.java b/java-api/src/java15/java/xyz/wagyourtail/jvmdg/j15/stub/java_base/J_L_I_MethodHandles$Lookup.java index 5fe64bc4..9446dc53 100644 --- a/java-api/src/java15/java/xyz/wagyourtail/jvmdg/j15/stub/java_base/J_L_I_MethodHandles$Lookup.java +++ b/java-api/src/java15/java/xyz/wagyourtail/jvmdg/j15/stub/java_base/J_L_I_MethodHandles$Lookup.java @@ -5,6 +5,7 @@ import xyz.wagyourtail.jvmdg.ClassDowngrader; import xyz.wagyourtail.jvmdg.util.Function; import xyz.wagyourtail.jvmdg.util.Utils; +import xyz.wagyourtail.jvmdg.version.Adapter; import xyz.wagyourtail.jvmdg.version.Stub; import java.lang.instrument.IllegalClassFormatException; @@ -43,7 +44,7 @@ public static Class ensureInitialized(MethodHandles.Lookup lookup, Class c } @Stub(requiresRuntime = true) - public static Class defineHiddenClass(MethodHandles.Lookup lookup, byte[] bytes, boolean initialize, J_L_I_MethodHandles$Lookup$ClassOption... options) throws IllegalClassFormatException { + public static Class defineHiddenClass(MethodHandles.Lookup lookup, byte[] bytes, boolean initialize, ClassOption... options) throws IllegalClassFormatException { Objects.requireNonNull(bytes); Objects.requireNonNull(options); HiddenClassLoader loader = new HiddenClassLoader(lookup.lookupClass().getClassLoader()); @@ -90,4 +91,15 @@ public byte[] apply(String s) { } } + @Adapter("Ljava/lang/invoke/MethodHandles$Lookup$ClassOption;") + public enum ClassOption { + NESTMATE(0x00000001), + STRONG(0x00000004); + + private final int flag; + + ClassOption(int flag) { + this.flag = flag; + } + } } diff --git a/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_L_R_RecordComponent.java b/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_L_R_RecordComponent.java index dcf8fe7a..9d6a212c 100644 --- a/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_L_R_RecordComponent.java +++ b/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_L_R_RecordComponent.java @@ -13,7 +13,7 @@ public class J_L_R_RecordComponent { private final Field field; private final Method accessor; - public J_L_R_RecordComponent(Class declaring, String field, Class type) { + J_L_R_RecordComponent(Class declaring, String field, Class type) { this.declaring = declaring; Field fd = null; diff --git a/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_U_S_DoubleStream.java b/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_U_S_DoubleStream.java index 0e039b20..a6b5b635 100644 --- a/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_U_S_DoubleStream.java +++ b/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_U_S_DoubleStream.java @@ -2,6 +2,7 @@ import xyz.wagyourtail.jvmdg.version.Adapter; +import xyz.wagyourtail.jvmdg.version.CoverageIgnore; import xyz.wagyourtail.jvmdg.version.Stub; import java.util.Objects; @@ -20,6 +21,7 @@ public static DoubleStream mapMulti(DoubleStream stream, DoubleMapMultiConsumer @Adapter("Ljava/util/stream/DoubleStream$DoubleMapMultiConsumer;") public interface DoubleMapMultiConsumer { + @CoverageIgnore default DoubleStream of(double d) { DoubleStream.Builder doubles = DoubleStream.builder(); accept(d, doubles); diff --git a/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_U_S_IntStream.java b/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_U_S_IntStream.java index 7dfd6e96..caa0317a 100644 --- a/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_U_S_IntStream.java +++ b/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_U_S_IntStream.java @@ -2,6 +2,7 @@ import xyz.wagyourtail.jvmdg.version.Adapter; +import xyz.wagyourtail.jvmdg.version.CoverageIgnore; import xyz.wagyourtail.jvmdg.version.Stub; import java.util.function.IntConsumer; @@ -20,6 +21,7 @@ public static IntStream mapMulti(IntStream stream, IntMapMultiConsumer mapper) { @Adapter("Ljava/util/stream/IntStream$IntMapMultiConsumer;") public interface IntMapMultiConsumer { + @CoverageIgnore default IntStream of(int d) { IntStream.Builder integers = IntStream.builder(); accept(d, integers); diff --git a/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_U_S_LongStream.java b/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_U_S_LongStream.java index 601c40dd..badbb357 100644 --- a/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_U_S_LongStream.java +++ b/java-api/src/java16/java/xyz/wagyourtail/jvmdg/j16/stub/java_base/J_U_S_LongStream.java @@ -2,6 +2,7 @@ import xyz.wagyourtail.jvmdg.version.Adapter; +import xyz.wagyourtail.jvmdg.version.CoverageIgnore; import xyz.wagyourtail.jvmdg.version.Stub; import java.util.function.LongConsumer; @@ -21,6 +22,7 @@ public static LongStream mapMulti(LongStream stream, LongMapMultiConsumer mapper @Adapter("Ljava/util/stream/LongStream$LongMapMultiConsumer;") public interface LongMapMultiConsumer { + @CoverageIgnore default LongStream of(long d) { LongStream.Builder longs = LongStream.builder(); accept(d, longs); diff --git a/java-api/src/java17/java/xyz/wagyourtail/jvmdg/j17/stub/java_base/J_U_HexFormat.java b/java-api/src/java17/java/xyz/wagyourtail/jvmdg/j17/stub/java_base/J_U_HexFormat.java index 48ad0e03..5a7ef581 100644 --- a/java-api/src/java17/java/xyz/wagyourtail/jvmdg/j17/stub/java_base/J_U_HexFormat.java +++ b/java-api/src/java17/java/xyz/wagyourtail/jvmdg/j17/stub/java_base/J_U_HexFormat.java @@ -1,6 +1,7 @@ package xyz.wagyourtail.jvmdg.j17.stub.java_base; import xyz.wagyourtail.jvmdg.version.Adapter; +import xyz.wagyourtail.jvmdg.version.CoverageIgnore; import java.io.IOException; import java.io.UncheckedIOException; @@ -8,7 +9,10 @@ import java.util.Objects; @Adapter("java/util/HexFormat") -public record J_U_HexFormat(String delimiter, String prefix, String suffix, char[] digits) { +public record J_U_HexFormat(String delimiter, String prefix, String suffix, @CoverageIgnore char[] digits) { + @CoverageIgnore + public J_U_HexFormat {} + private static final char[] lowercase = "0123456789abcdef".toCharArray(); private static final char[] uppercase = "0123456789ABCDEF".toCharArray(); diff --git a/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_SequencedCollection.java b/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_SequencedCollection.java index bab08365..6bcf5e68 100644 --- a/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_SequencedCollection.java +++ b/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_SequencedCollection.java @@ -12,6 +12,9 @@ @Adapter(value = "java/util/SequencedCollection", target = "java/util/Collection") public class J_U_SequencedCollection { + private J_U_SequencedCollection() { + } + public static boolean jvmdg$instanceof(Object obj) { return obj instanceof List || obj instanceof LinkedHashSet || diff --git a/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_SequencedMap.java b/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_SequencedMap.java index 210846a7..9582dafd 100644 --- a/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_SequencedMap.java +++ b/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_SequencedMap.java @@ -9,6 +9,9 @@ @Adapter(value = "java/util/SequencedMap", target = "java/util/Map") public class J_U_SequencedMap { + private J_U_SequencedMap() { + } + public static boolean jvmdg$instanceof(Object obj) { return obj instanceof LinkedHashMap || obj instanceof SortedMap || diff --git a/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_SequencedSet.java b/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_SequencedSet.java index 1d4d74f9..229ce065 100644 --- a/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_SequencedSet.java +++ b/java-api/src/java21/java/xyz/wagyourtail/jvmdg/j21/stub/java_base/J_U_SequencedSet.java @@ -2,6 +2,8 @@ import xyz.wagyourtail.jvmdg.j21.impl.ReverseSet; import xyz.wagyourtail.jvmdg.version.Adapter; +import xyz.wagyourtail.jvmdg.version.Ref; +import xyz.wagyourtail.jvmdg.version.Stub; import java.util.LinkedHashSet; import java.util.Set; @@ -10,6 +12,9 @@ @Adapter(value = "java/util/SequencedSet", target = "java/util/Set") public class J_U_SequencedSet { + private J_U_SequencedSet() { + } + public static boolean jvmdg$instanceof(Object obj) { return obj instanceof LinkedHashSet || obj instanceof SortedSet || @@ -26,6 +31,7 @@ public class J_U_SequencedSet { throw new ClassCastException(); } + @Stub public static Set reversed(Set self) { if (self instanceof ReverseSet rs) { return rs.original; diff --git a/java-api/src/java9/java/xyz/wagyourtail/jvmdg/j9/stub/java_base/J_L_Module.java b/java-api/src/java9/java/xyz/wagyourtail/jvmdg/j9/stub/java_base/J_L_Module.java index 1786707e..be05a974 100644 --- a/java-api/src/java9/java/xyz/wagyourtail/jvmdg/j9/stub/java_base/J_L_Module.java +++ b/java-api/src/java9/java/xyz/wagyourtail/jvmdg/j9/stub/java_base/J_L_Module.java @@ -2,6 +2,7 @@ import xyz.wagyourtail.jvmdg.version.Adapter; +import xyz.wagyourtail.jvmdg.version.CoverageIgnore; @Adapter("Ljava/lang/Module;") public class J_L_Module { @@ -9,6 +10,7 @@ public class J_L_Module { private final ClassLoader classLoader; private final J_L_ModuleLayer layer = new J_L_ModuleLayer(); + @CoverageIgnore public J_L_Module() { J_L_StackWalker walker = J_L_StackWalker.getInstance(J_L_StackWalker.Option.RETAIN_CLASS_REFERENCE); J_L_StackWalker.StackFrame sf = walker.walk(stream -> stream.skip(2).findFirst().get()); @@ -19,6 +21,7 @@ public J_L_Module() { this.classLoader = sf.getDeclaringClass().getClassLoader(); } + @CoverageIgnore public J_L_Module(ClassLoader classLoader) { this.classLoader = classLoader; } diff --git a/java-api/src/java9/java/xyz/wagyourtail/jvmdg/j9/stub/java_base/J_U_C_Flow.java b/java-api/src/java9/java/xyz/wagyourtail/jvmdg/j9/stub/java_base/J_U_C_Flow.java index 1deffae9..35fdd98c 100644 --- a/java-api/src/java9/java/xyz/wagyourtail/jvmdg/j9/stub/java_base/J_U_C_Flow.java +++ b/java-api/src/java9/java/xyz/wagyourtail/jvmdg/j9/stub/java_base/J_U_C_Flow.java @@ -5,6 +5,9 @@ @Adapter("java/util/concurrent/Flow") public class J_U_C_Flow { + private J_U_C_Flow() { + } + public static int defaultBufferSize() { return 256; } diff --git a/java-api/src/main/java/xyz/wagyourtail/jvmdg/providers/Java15Downgrader.java b/java-api/src/main/java/xyz/wagyourtail/jvmdg/providers/Java15Downgrader.java index f5de1294..4c2cd202 100644 --- a/java-api/src/main/java/xyz/wagyourtail/jvmdg/providers/Java15Downgrader.java +++ b/java-api/src/main/java/xyz/wagyourtail/jvmdg/providers/Java15Downgrader.java @@ -22,7 +22,7 @@ public void init() { // ConstantDescs // ConstantBootstraps stub(J_L_I_MethodHandles$Lookup.class); - stub(J_L_I_MethodHandles$Lookup$ClassOption.class); + stub(J_L_I_MethodHandles$Lookup.ClassOption.class); stub(J_N_C_ServerSocketChannel.class); stub(J_N_C_SocketChannel.class); // EdECKey diff --git a/src/shared/java/xyz/wagyourtail/jvmdg/version/CoverageIgnore.java b/src/shared/java/xyz/wagyourtail/jvmdg/version/CoverageIgnore.java new file mode 100644 index 00000000..2007ddcf --- /dev/null +++ b/src/shared/java/xyz/wagyourtail/jvmdg/version/CoverageIgnore.java @@ -0,0 +1,14 @@ +package xyz.wagyourtail.jvmdg.version; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Marks a method as ignored inside of an @Adapter class, so it isn't included in unmatched.txt + */ +@Target({ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR}) +@Retention(RetentionPolicy.RUNTIME) +public @interface CoverageIgnore { +}