Hi Matthias,

looks like jackpot doesn't understand

if (o instanceof Integer i)

yet.

I tested with:

if ($origVar instanceof $T $t) {
}
=>
if ($origVar instanceof $T $t) {
}
;;

and it never initialized $T or $t.


There is a "Changing source level to 1.8" line in the log, I saw that before but never had time to investigate, its possible that jackpot can't match anything beyond 8 language level because of that (if at all related to this issue).

another thing what jackpot doesn't understand is the short form of lambdas, e.g:
$stream.mapToObj(($x) -> $x)

never matches anything

-michael

On 23.11.21 23:37, Matthias Bläsing wrote:
Hi,

it would be great if someone could give me a hint what I'm missing:

I would like to rewrite a pattern matching if into a if checking the
condition and then doing the necessary cast.

Basicly:

if (o instanceof FancyObject fancy) {
        doSomethingWithFancy(fancy);
}

Should become:

if (o instanceof FancyObject) {
        FancyObject fancy = (FancyObject) o;
        doSomethingWithFancy(fancy);
}

And yes - the intention is to lower the source level from 14+ to 8.

I tried this:

------------------------------
if ($origVar instanceof $targetClass $targetName) {
     $body$;
}
=>
if ($origVar instanceof $targetClass) {
     $targetClass $targetName = ($targetClass) $origVar;
     $body$;
}
;;
------------------------------

But that resulted in an partial rewrite:

------------------------------
public class Mavenproject1 {
     public static void main(String[] args) {
         Object o = 1;
         if(o instanceof Integer i) {
             System.out.println("Integer: " + i);
         }
     }
}
------------------------------

became

------------------------------
public class Mavenproject1 {

     public static void main(String[] args) {
         Object o = 1;
         if(o instanceof $targetClass) {
             $targetClass $targetName = ($targetClass) o;
             System.out.println("Integer: " + i);
         }
     }
}
------------------------------

So it was matched and $origVar was picked up correctly, but the other
variables are totally ignored.

What am I missing?!

Greetings

Matthias


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists





---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists



Reply via email to