From 37acc93cf49aa3c26ce51536cb87575184624e20 Mon Sep 17 00:00:00 2001 From: Paint_Ninja Date: Tue, 2 Sep 2025 17:40:02 +0100 Subject: [PATCH] Add primitive supplier variants --- source/net.auoeke.dycon/Dycon.java | 20 ++++++++++++++++++-- test/DyconTest.java | 8 +++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/source/net.auoeke.dycon/Dycon.java b/source/net.auoeke.dycon/Dycon.java index ab32b91..4b23788 100644 --- a/source/net.auoeke.dycon/Dycon.java +++ b/source/net.auoeke.dycon/Dycon.java @@ -1,7 +1,7 @@ package net.auoeke.dycon; import java.lang.invoke.ConstantBootstraps; -import java.util.function.Supplier; +import java.util.function.*; public class Dycon { /** @@ -28,6 +28,22 @@ Object lazyInvoke(Object... arguments) { @throws RuntimeException if invoked at runtime (for example reflectively or without the compiler plugin) */ public static T ldc(Supplier initializer) { - throw new RuntimeException("Dycon::ldc may not be invoked at runtime"); + throw new RuntimeException("Dycon#ldc(Supplier) may not be invoked at runtime"); } + + public static boolean ldc(BooleanSupplier initializer) { + throw new RuntimeException("Dycon#ldc(BooleanSupplier) may not be invoked at runtime"); + } + + public static int ldc(IntSupplier initializer) { + throw new RuntimeException("Dycon#ldc(IntSupplier) may not be invoked at runtime"); + } + + public static long ldc(LongSupplier initializer) { + throw new RuntimeException("Dycon#ldc(LongSupplier) may not be invoked at runtime"); + } + + public static double ldc(DoubleSupplier initializer) { + throw new RuntimeException("Dycon#ldc(DoubleSupplier) may not be invoked at runtime"); + } } diff --git a/test/DyconTest.java b/test/DyconTest.java index 1af9a4c..078c929 100644 --- a/test/DyconTest.java +++ b/test/DyconTest.java @@ -1,5 +1,7 @@ import java.lang.invoke.MethodHandles; import java.util.List; +import java.util.function.Supplier; + import org.junit.jupiter.api.Test; import org.junit.platform.commons.annotation.Testable; import sun.misc.Unsafe; @@ -21,7 +23,7 @@ static Unsafe lazyLazyUnsafe() { return ldc(DyconTest::lazyUnsafe); } - Integer count(Object o) { + int count(Object o) { return ldc(() -> count); } @@ -30,11 +32,11 @@ static T allocateInstance(Class type) { } static List lazyStringList() { - return ldc(List::of); + return ldc(() -> List.of("Hello")); } static List lazyList() { - return ldc(List::of); + return ldc(() -> List.of()); } @Test void test() {