It's not a bug but it's not user friendly
Mandy Chung
mandy.chung at oracle.com
Mon Dec 14 21:41:23 UTC 2020
I think https://bugs.openjdk.java.net/browse/JDK-8199149 is the relevant
RFE.
Mandy
On 12/12/20 8:07 AM, Remi Forax wrote:
> A student of mine send me a code that can be reduced to this code
>
> ---
> import java.lang.invoke.MethodHandles;
> import java.lang.invoke.VarHandle;
>
> public class ThereIsABugButWhere {
> private static final VarHandle TEXT;
> static {
> try {
> TEXT = MethodHandles.lookup().findVarHandle(ThereIsABugButWhere.class, "text", String.class);
> } catch (NoSuchFieldException | IllegalAccessException e) {
> throw new AssertionError(e);
> }
> }
>
>
> private final String text;
>
> ThereIsABugButWhere() {
> text = "FOO";
> }
>
> public void update(String s) {
> TEXT.compareAndSet(this, "FOO", s);
> }
>
> public static void main(String[] args) {
> new ThereIsABugButWhere().update("BAR");
> }
> }
>
> ---
> If you execute it, you get
> Exception in thread "main" java.lang.UnsupportedOperationException
> at java.base/java.lang.invoke.VarForm.getMemberName(VarForm.java:99)
> at java.base/java.lang.invoke.VarHandleGuards.guard_LLL_Z(VarHandleGuards.java:77)
> at ThereIsABugButWhere.update(ThereIsABugButWhere.java:22)
> at ThereIsABugButWhere.main(ThereIsABugButWhere.java:26)
>
> It takes me 20 mins to find the issue ...
> I think we can improve the error message or even better report the issue at the right location :)
>
> regards,
> Rémi
More information about the core-libs-dev
mailing list