Kotlin / kotlin-interactive-shell

Kotlin Language Interactive Shell

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ki-shell and if

LaurentBerger opened this issue · comments

Hi,

OS windows10 x64
I trie this script :

var a = 18
var b = 19
var c = if (a>17) b else a
println(c)

and I runned it using kotlinc -script if_test1.kts
result is 19

I tried this and just after typing b (vithout enter) I have got this error :

ki-shell 0.4.5/1.6.10
type :h for help
[0] var a = 18
[1] var b = 19
[2] var c = if (a>17) b

java.lang.NullPointerException
        at org.jetbrains.kotlinx.ki.shell.parser.KotlinParserListenerForHighlighting.exitIfExpression(KotlinParserListenerForHighlighting.kt:679)
        at org.jetbrains.kotlinx.ki.shell.parser.KotlinParser$IfExpressionContext.exitRule(KotlinParser.java:13491)
        at org.antlr.v4.runtime.Parser.triggerExitRuleEvent(Parser.java:408)
        at org.antlr.v4.runtime.Parser.exitRule(Parser.java:642)
        at org.jetbrains.kotlinx.ki.shell.parser.KotlinParser.script(KotlinParser.java:514)
        at org.jetbrains.kotlinx.ki.shell.plugins.KotlinHighlighter.buildHighlighting(KotlinHighlighter.kt:39)
        at org.jetbrains.kotlinx.ki.shell.plugins.KotlinHighlighter.highlight(KotlinHighlighter.kt:20)
        at org.jetbrains.kotlinx.ki.shell.plugins.BaseHighlighter$DefaultImpls.highlight$default(BaseHighlighter.kt:8)
        at org.jetbrains.kotlinx.ki.shell.plugins.BaseHighlighter$DefaultImpls.highlight(BaseHighlighter.kt:11)
        at org.jetbrains.kotlinx.ki.shell.plugins.KotlinHighlighter.highlight(KotlinHighlighter.kt:13)
        at org.jetbrains.kotlinx.ki.shell.ContextHighlighter.highlight(ContextHighlighter.kt:16)
        at org.jline.reader.impl.LineReaderImpl.getHighlightedBuffer(LineReaderImpl.java:4041)
        at org.jline.reader.impl.LineReaderImpl.getDisplayedBufferWithPrompts(LineReaderImpl.java:3980)
        at org.jline.reader.impl.LineReaderImpl.redisplay(LineReaderImpl.java:3848)
        at org.jline.reader.impl.LineReaderImpl.redisplay(LineReaderImpl.java:3784)
        at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:708)
        at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:468)
        at org.jetbrains.kotlinx.ki.shell.Shell.doRun(Shell.kt:205)
        at org.jetbrains.kotlinx.ki.shell.KotlinShell.main(KotlinShell.kt:52)
[2]

What’s wrong here?

Hi, @LaurentBerger

It looks like you've copied the third expression to ki incorrectly. var c = if (a>17) b else a works like a charm for me, while var c = if (a>17) b is indeed semantically incorrect

@asm0dey When I type var c = if (a>17) b error occurs without a return I cannot enter else using keyboard error occurs..

@LaurentBerger oh, now I get you. Could you please try the latest 0.5.1 version? Before I will start checking on the different OS :)

@asm0dey
Oops

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/jetbrains/kotlinx/ki/shell/KotlinShell has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

I must update something

solved I have installed jdk 18

but an other error now:

ki-shell 0.5.0/1.7.0
type :h for help
[0] var a = 17
java.lang.IllegalStateException: Unknown outcome
        at org.jetbrains.kotlinx.ki.shell.Shell.handleSuccess(Shell.kt:310)
        at org.jetbrains.kotlinx.ki.shell.Shell.doRun$evalSnippet(Shell.kt:197)
        at org.jetbrains.kotlinx.ki.shell.Shell.doRun(Shell.kt:230)
        at org.jetbrains.kotlinx.ki.shell.KotlinShell.main(KotlinShell.kt:52)

problem is at beginning :pressed enter after [0] there is a problem

ki-shell 0.5.0/1.7.0
type :h for help
[0]
java.lang.IllegalStateException: Unknown outcome
        at org.jetbrains.kotlinx.ki.shell.Shell.handleSuccess(Shell.kt:310)
        at org.jetbrains.kotlinx.ki.shell.Shell.doRun$evalSnippet(Shell.kt:197)
        at org.jetbrains.kotlinx.ki.shell.Shell.doRun(Shell.kt:230)
        at org.jetbrains.kotlinx.ki.shell.KotlinShell.main(KotlinShell.kt:52)

Solved 0.5.1 and jdk 18

ki-shell 0.5.1/1.7.0
type :h for help
[0] var a = 18
[1] var b = 19
[2] var c = if (a>17) b else 20
[3] println(c)
19

@LaurentBerger does it work with jdk11 for you?

The input of 0.5.1 looks correct to me. Is it?

Yes everything is correct
About jdk 11 it's not available without an oracle account (https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html)

Well, for example Azul's builds are available: https://www.azul.com/downloads/?package=jdk#download-openjdk

I think the the issue is resolved, do not hesitate to report if it should be reopened