IllegalArgumentException in highlights
Archie Cobbs
archie.cobbs at gmail.com
Fri Jun 13 16:56:57 UTC 2025
Here's a reproducer using JDK 25-ea:
$ jshell
| Welcome to JShell -- Version 25-ea
| For an introduction type: /help intro
jshell> import jdk.jshell.*
jshell> JShell jsh = JShell.builder().out(System.out).build();
jsh ==> jdk.jshell.JShell at 1134affc
jshell> var sca = jsh.sourceCodeAnalysis()
sca ==> jdk.jshell.SourceCodeAnalysisImpl at 73f792cf
jshell> sca.highlights("System.out.println(\"");
| Exception java.lang.IllegalArgumentException
| at JCDiagnostic.<init> (JCDiagnostic.java:659)
| at JCDiagnostic.<init> (JCDiagnostic.java:641)
| at JCDiagnostic$Factory.create (JCDiagnostic.java:294)
| at JCDiagnostic$Factory.error (JCDiagnostic.java:111)
| at AbstractLog.error (AbstractLog.java:144)
| at JavaTokenizer.lexError (JavaTokenizer.java:201)
| at JavaTokenizer.scanString (JavaTokenizer.java:470)
| at JavaTokenizer.readToken (JavaTokenizer.java:1017)
| at Scanner.nextToken (Scanner.java:124)
| at SourceCodeAnalysisImpl.lambda$highlights$0
(SourceCodeAnalysisImpl.java:680)
| at TaskFactory.lambda$runTask$1 (TaskFactory.java:218)
| at JavacTaskPool.getTask (JavacTaskPool.java:193)
| at TaskFactory.runTask (TaskFactory.java:211)
| at TaskFactory.analyze (TaskFactory.java:180)
| at TaskFactory.analyze (TaskFactory.java:166)
| at TaskFactory.analyze (TaskFactory.java:155)
| at SourceCodeAnalysisImpl.highlights
(SourceCodeAnalysisImpl.java:651)
| at (#4:1)
Here's what happens:
- JShell is doing some parsing without establishing the current source
file via Log.useSource() (I've seen this in other JShell scenarios as
well)
- The JCDiagnostic() constructor has an assertion that if a diagnostic
has a source code position then it also must have a current source file.
So the first question would be: who is right?
-Archie
On Fri, Jun 13, 2025 at 2:21 AM Volkan Yazıcı <volkan at yazi.ci> wrote:
> Downloaded JDK 24.0.1
> <https://www.oracle.com/java/technologies/downloads/#java24>, yet could
> not reproduce the issue:
>
> $ jdk-24.0.1/bin/jshell
> | Welcome to JShell -- Version 24.0.1
> | For an introduction type: /help intro
>
> jshell> System.out.println("
> | Error:
> | unclosed string literal
> | System.out.println("
> |
>
> Would you mind sharing more details to reproduce the issue, please? Which
> JDK distribution do you use? Which major/minor/patch version? Which
> architecture & OS?
>
> On Thu, Jun 12, 2025 at 9:19 PM Sven Reimers <sven.reimers at gmail.com>
> wrote:
>
>> JDK 24
>>
>> Sven
>>
>> On Thu, Jun 12, 2025 at 8:56 PM Archie Cobbs <archie.cobbs at gmail.com>
>> wrote:
>>
>>> What JDK version?
>>>
>>> On Thu, Jun 12, 2025 at 1:39 PM Sven Reimers <sven.reimers at gmail.com>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> working on highlighting in JTaccuino I found
>>>>
>>>> Caused by: java.lang.IllegalArgumentException
>>>> at
>>>> jdk.compiler/com.sun.tools.javac.util.JCDiagnostic.<init>(JCDiagnostic.java:647)
>>>> at
>>>> jdk.compiler/com.sun.tools.javac.util.JCDiagnostic.<init>(JCDiagnostic.java:627)
>>>> at
>>>> jdk.compiler/com.sun.tools.javac.util.JCDiagnostic$Factory.create(JCDiagnostic.java:301)
>>>> at
>>>> jdk.compiler/com.sun.tools.javac.util.JCDiagnostic$Factory.error(JCDiagnostic.java:114)
>>>> at
>>>> jdk.compiler/com.sun.tools.javac.util.AbstractLog.error(AbstractLog.java:145)
>>>> at
>>>> jdk.compiler/com.sun.tools.javac.parser.JavaTokenizer.lexError(JavaTokenizer.java:202)
>>>> at
>>>> jdk.compiler/com.sun.tools.javac.parser.JavaTokenizer.scanString(JavaTokenizer.java:468)
>>>> at
>>>> jdk.compiler/com.sun.tools.javac.parser.JavaTokenizer.readToken(JavaTokenizer.java:1015)
>>>> at
>>>> jdk.compiler/com.sun.tools.javac.parser.Scanner.nextToken(Scanner.java:124)
>>>> at
>>>> jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl.lambda$highlights$0(SourceCodeAnalysisImpl.java:647)
>>>> at
>>>> jdk.jshell/jdk.jshell.TaskFactory.lambda$runTask$1(TaskFactory.java:218)
>>>> at
>>>> jdk.compiler/com.sun.tools.javac.api.JavacTaskPool.getTask(JavacTaskPool.java:193)
>>>> at jdk.jshell/jdk.jshell.TaskFactory.runTask(TaskFactory.java:211)
>>>> at jdk.jshell/jdk.jshell.TaskFactory.analyze(TaskFactory.java:180)
>>>> at jdk.jshell/jdk.jshell.TaskFactory.analyze(TaskFactory.java:166)
>>>> at jdk.jshell/jdk.jshell.TaskFactory.analyze(TaskFactory.java:155)
>>>> at
>>>> jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl.highlights(SourceCodeAnalysisImpl.java:618)
>>>>
>>>> happening, when a snippet is sent with a not closed quoted string, e.g.
>>>>
>>>> System.out.println("
>>>>
>>>> I assume this should not happen?
>>>>
>>>> Thanks
>>>>
>>>> Sven
>>>>
>>>> --
>>>> Sven Reimers
>>>>
>>>> * Java Champion
>>>> * Apache NetBeans PMC: http://netbeans.apache.org
>>>> * JUG Leader JUG Bodensee: https://www.meetup.com/JUG-Bodensee
>>>>
>>>
>>>
>>> --
>>> Archie L. Cobbs
>>>
>>
>>
>> --
>> Sven Reimers
>>
>> * Java Champion
>> * Apache NetBeans PMC: http://netbeans.apache.org
>> * JUG Leader JUG Bodensee: https://www.meetup.com/JUG-Bodensee
>> * Duke's Choice Award Winner 2009 & 2018
>>
>> * LinkedIn: http://www.linkedin.com/in/svenreimers
>>
>
--
Archie L. Cobbs
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/kulla-dev/attachments/20250613/430b858c/attachment.htm>
More information about the kulla-dev
mailing list