Records are called „methods“ in JShell

Lingo Coder plugins at lingocoder.com
Wed Jul 15 14:33:02 UTC 2020


Thank you Robert,

> „...And send us what it prints...“

You'll see below that right after I did `/set format normal typeKind`
it still said, „created *method*...“. I also recorded it. [1] 

But then right after `/set feedback verbose`, it said „created
*record*“.

However, after an `/exit` and a relaunch of `jshell --enable-preview`,
it
reverted back to „created *method*...“/„dropped *method*... “.

I _vaguely_ recall creating `mymode` and doing `/set feedback -retain
mymode` 
way back in 2017 when JShell first came out. I think. I'm not 100% sure
tho.
So I'm guessing I need to do `/set feedback -retain verbose` to
permanently
get „created *record*...“ Correct? 

TIA.

----
...

jshell> /set feedback
|  /set feedback -retain mymode
|
|  Retained feedback modes:
|     mymode
|  Available feedback modes:
|     concise
|     mymode
|     normal
|     silent
|     verbose

jshell> /set format normal typeKind
|  /set format normal typeKind "class" class
|  /set format normal typeKind "interface" interface
|  /set format normal typeKind "enum" enum
|  /set format normal typeKind "annotation interface" annotation
|  /set format normal typeKind "record" record

jshell> public record ConstExpr(Expr e) implements Expr{}
|  created method ConstExpr(), however, it cannot be referenced until
class Expr is declared

jshell> /type
|    record ConstExpr
|       which cannot be referenced until class Expr is declared

jshell> /types
|    record ConstExpr
|       which cannot be referenced until class Expr is declared

jshell> /method
|    void print(boolean)
|    void print(char)
|    void print(int)
|    void print(long)
|    void print(float)
|    void print(double)
|    void print(char s[])
|    void print(String)
|    void print(Object)
|    void println()
|    void println(boolean)
|    void println(char)
|    void println(int)
|    void println(long)
|    void println(float)
|    void println(double)
|    void println(char s[])
|    void println(String)
|    void println(Object)
|    void printf(java.util.Locale,String,Object...)
|    void printf(String,Object...)

jshell> /drop ConstExpr
|  dropped method ConstExpr()

jshell> /set feedback verbose
|  Feedback mode: verbose

jshell> public record ConstExpr(Expr e) implements Expr{}
|  created record ConstExpr, however, it cannot be referenced until
class Expr is declared

jshell> /type
|    record ConstExpr
|       which cannot be referenced until class Expr is declared

jshell> class Expr{}
|  created class Expr

jshell> /types
|    record ConstExpr
|       which cannot be referenced until this error is corrected:
|          interface expected here
|          public record ConstExpr(Expr e) implements Expr{}
|                                                     ^--^
|    class Expr

jshell> /drop Expr
|  dropped class Expr

jshell> interface Expr{}
|  created interface Expr
|    update replaced record ConstExpr

jshell> /types
|    record ConstExpr
|    interface Expr

jshell> /drop ConstExpr
|  dropped record ConstExpr

...

----
[1] https://imgur.com/ePyilYo



-------- Original Message --------
Subject: Re:_Records_are_called_„methods“_in_JSh ell
From: Robert Field <robert.field at oracle.com>
Date: Tue, July 14, 2020 8:07 pm
To: Lingo Coder <plugins at lingocoder.com>, 
"kulla-dev at openjdk.java.net" <kulla-dev at openjdk.java.net>, 
"jorn.vernee at oracle.com" <jorn.vernee at oracle.com>

I have a theory, maybe the following can illuminate...

Couple more things to try:

    /set feedback

    /set format normal typeKind

And send us what it prints.

Also, after you have entered:

    public record ConstExpr(Expr e) implements Expr{}

Type:

    /type

and

    /method

Separately, what do they print?

Oh, and if you want to try one more thing:

    /set feedback verbose

    public record ConstExpr(Expr e) implements Expr{}

Sorry, I don't have Windows, but I believe Jan has access.

-Robert


On 2020-07-14 18:35, Lingo Coder wrote:
> Thanks Robert,
> 
>> „...Can you do:
>> jshell --full-version...“
> 
> I did that. It says jshell 15-ea+31-1502 [1]
>
> What version of Windows are you other guys trying this in? I'm on
> Windows 7.
>
>> „...I'm guessing you may be using an older JDK...“
> As I show in [1] and in earlier screen recordings, I completely
> clear my $PATH to confirm that there is no other jshell.exe on
> the $PATH.
>
> I have not installed any JDKs with an installer or anything
> like that. For that reason, I rule out anything registry-related.
>
> I do have an early access release of 14-Valhalla
> build 14-valhalla+4-55 on my workstation. But, that was
> installed by simply unzipping the archive into a
> jdk-14.L.world.Build.14-valhalla+4-55 folder. More importantly,
> that build doesn't even have the records nor the sealed types
> features.
>
> I also have GA releases of OpenJDK 12 & 13 in their own folders.
> But again, not only are they isolated well out of the way of
> the $PATH I run jshell 15 in, they don't even have records and
> sealed types functionality.
>
> If _any_ other JDK were somehow in the $PATH, it would be
> surprising if records and sealed types even worked _at all_;
> let alone the misnaming as „methods“ issue Right? Please
> correct me if I'm wrong?
>
>
> [1] https://imgur.com/cMsAl5f
>
> -------- Original Message --------
> Subject: Re:_Records_are_called_„methods“_in_JSh ell
> From: Robert Field <robert.field at oracle.com>
> Date: Tue, July 14, 2020 3:57 pm
> To: kulla-dev at openjdk.java.net, jorn.vernee at oracle.com,
> plugins at lingocoder.com
>
> I'm guessing you may be using an older JDK. I get:
> jshell> public record ConstExpr(Expr e) implements Expr{}
> | created record ConstExpr
> 
> jshell> /drop ConstExpr
> | dropped record ConstExpr
> 
> 
> Can you do:
> jshell --full-version
> 
> Thanks,
> Robert
> 
> 
>


More information about the kulla-dev mailing list