Skip to content

JShell Integration: Improve handling of "var" support #8327

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

matthiasblaesing
Copy link
Contributor

Part 1: Lexer: Improve handling of grammars using a lexer with backtracking

Entering:

var x = "Test"<Enter>

into a java platform shell yields exceptions. Checking the java lexer
showed, that the java lexer at that point does backtracking and this
indicates a problem in the lexer infrastructure. The problem seems
to be caused by the generic lexer infrastructure, which has special
handling for languages embedded into other languages. In the case of
the jshell lexer, this is java code inside the shells code. In combination
with a backtracking lexer this seems to break lexing.

Part 2: Improve handling of var Statement

  • parser falsely reports that var is not supported
  • parser reports missing semikolon

The first condition needs to be newly caught, the second condition was
partially caught in SemicolonMissingRule, but failed because there is an
potential off-by-one issue.

Entering:

var x = "Test"<Enter>

into a java platform shell yields exceptions. Checking the java lexer
showed, that the java lexer at that point does backtracking and this
indicates a problem in the lexer infrastructure. The special case here
is, that for the JShell console, it is not "text/java", that is being
lexed, but "text/x-repl/text/x-java". I.e. java embedded in the shell
input/output. Indeed the JoinLexerInputOperation uses a position
tracking, that works independently from the position tracking of the
extended LexerInputOperation. While there is code in place, to update
the position for the "normal" read case, the "backup" code path is not
covered and can not be trivially be covered as the method is final. So
this PR replaces the custom position tracking by using the position of
the base class and applying the position shift of the embedded token
sequences.

INFO [org.netbeans.editor.GuardedDocument]: Runtime exception thrown in GuardedDocument.runAtomicAsUser() leading to breakAtomicLock():
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
	at org.netbeans.lib.lexer.JoinLexerInputOperation.createJoinToken(JoinLexerInputOperation.java:267)
	at org.netbeans.lib.lexer.JoinLexerInputOperation.createDefaultTokenInstance(JoinLexerInputOperation.java:212)
	at org.netbeans.lib.lexer.LexerInputOperation.createToken(LexerInputOperation.java:294)
	at org.netbeans.spi.lexer.TokenFactory.createToken(TokenFactory.java:81)
	at org.netbeans.spi.lexer.TokenFactory.createToken(TokenFactory.java:65)
	at org.netbeans.lib.java.lexer.JavaLexer.finishIdentifier(JavaLexer.java:1357)
	at org.netbeans.lib.java.lexer.JavaLexer.nextToken(JavaLexer.java:1163)
	at org.netbeans.lib.lexer.LexerInputOperation.nextToken(LexerInputOperation.java:191)
	at org.netbeans.lib.lexer.JoinTokenList.init(JoinTokenList.java:666)
	at org.netbeans.lib.lexer.JoinTokenList.create(JoinTokenList.java:74)
	at org.netbeans.lib.lexer.TokenListList.checkCreateJoinTokenList(TokenListList.java:147)
	at org.netbeans.lib.lexer.TokenListList.<init>(TokenListList.java:106)
	at org.netbeans.lib.lexer.TokenHierarchyOperation.tokenListList(TokenHierarchyOperation.java:478)
	at org.netbeans.lib.lexer.EmbeddingOperation.embeddedTokenList(EmbeddingOperation.java:174)
	at org.netbeans.api.lexer.TokenSequence.embeddedImpl(TokenSequence.java:343)
	at org.netbeans.api.lexer.TokenSequence.embedded(TokenSequence.java:290)
	at org.netbeans.modules.textmate.lexer.SyntaxHighlighting$HSImpl.moveTheSequence(SyntaxHighlighting.java:453)
	at org.netbeans.modules.textmate.lexer.SyntaxHighlighting$HSImpl.moveNext(SyntaxHighlighting.java:431)
	at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer$Wrapper.fetchNextHighlight(DirectMergeContainer.java:600)
	at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer$Wrapper.init(DirectMergeContainer.java:509)
	at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer$HlSequence.<init>(DirectMergeContainer.java:211)
	at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer.getHighlights(DirectMergeContainer.java:96)
	at org.netbeans.modules.editor.lib2.highlighting.HighlightsReader.<init>(HighlightsReader.java:42)
	at org.netbeans.modules.editor.lib2.view.HighlightsViewFactory.restart(HighlightsViewFactory.java:167)
	at org.netbeans.modules.editor.lib2.view.ViewBuilder$FactoryState.init(ViewBuilder.java:1299)
	at org.netbeans.modules.editor.lib2.view.ViewBuilder.createViews(ViewBuilder.java:699)
	at org.netbeans.modules.editor.lib2.view.ViewBuilder.createReplaceRepaintViews(ViewBuilder.java:660)
	at org.netbeans.modules.editor.lib2.view.ViewUpdates.updateViewsByModification(ViewUpdates.java:299)
	at org.netbeans.modules.editor.lib2.view.ViewUpdates.insertUpdate(ViewUpdates.java:235)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.openide.util.WeakListenerImpl$ProxyListener.invoke(WeakListenerImpl.java:461)
	at jdk.proxy1/jdk.proxy1.$Proxy31.insertUpdate(Unknown Source)
	at org.netbeans.lib.editor.util.swing.PriorityDocumentListenerList.insertUpdate(PriorityDocumentListenerList.java:60)
	at java.desktop/javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:227)
	at org.netbeans.editor.BaseDocument.fireInsertUpdate(BaseDocument.java:1653)
	at org.netbeans.editor.BaseDocument.handleInsertString(BaseDocument.java:826)
	at org.netbeans.editor.BaseDocument$FilterBypassImpl.insertString(BaseDocument.java:2629)
	at java.desktop/javax.swing.text.DocumentFilter.insertString(DocumentFilter.java:105)
	at org.netbeans.modules.jshell.model.ConsoleModel$DocFilter.insertString(ConsoleModel.java:888)
	at org.netbeans.editor.BaseDocument.insertString(BaseDocument.java:745)
	at org.netbeans.editor.BaseKit$InsertBreakAction.performLineBreakInsertion(BaseKit.java:1610)
	at org.netbeans.editor.BaseKit$InsertBreakAction.access$400(BaseKit.java:1439)
	at org.netbeans.editor.BaseKit$InsertBreakAction$2.run(BaseKit.java:1529)
[catch] at org.netbeans.editor.GuardedDocument.runAtomicAsUser(GuardedDocument.java:333)
	at org.netbeans.editor.BaseKit$InsertBreakAction.actionPerformed(BaseKit.java:1520)
	at org.netbeans.editor.BaseAction.actionPerformed(BaseAction.java:324)
	at java.desktop/javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1810)
	at java.desktop/javax.swing.JComponent.processKeyBinding(JComponent.java:2962)
	at java.desktop/javax.swing.JComponent.processKeyBindings(JComponent.java:3010)
	at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2924)
	at java.desktop/java.awt.Component.processEvent(Component.java:6398)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
	at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1942)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:883)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1146)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1020)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:848)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4877)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
SEVERE [global]
java.lang.IndexOutOfBoundsException: View index=8 >= 8
	at org.netbeans.modules.editor.lib2.view.DocumentView.getParagraphView(DocumentView.java:318)
	at org.netbeans.modules.editor.lib2.view.ViewBuilder.initModUpdate(ViewBuilder.java:446)
	at org.netbeans.modules.editor.lib2.view.ViewUpdates.updateViewsByModification(ViewUpdates.java:298)
	at org.netbeans.modules.editor.lib2.view.ViewUpdates.removeUpdate(ViewUpdates.java:265)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.openide.util.WeakListenerImpl$ProxyListener.invoke(WeakListenerImpl.java:461)
	at jdk.proxy1/jdk.proxy1.$Proxy31.removeUpdate(Unknown Source)
	at org.netbeans.lib.editor.util.swing.PriorityDocumentListenerList.removeUpdate(PriorityDocumentListenerList.java:91)
	at java.desktop/javax.swing.text.AbstractDocument.fireRemoveUpdate(AbstractDocument.java:285)
	at org.netbeans.editor.BaseDocument.fireRemoveUpdate(BaseDocument.java:1656)
	at org.netbeans.editor.BaseDocumentEvent.undo(BaseDocumentEvent.java:266)
	at org.netbeans.editor.GuardedDocumentEvent.undo(GuardedDocumentEvent.java:47)
	at org.netbeans.modules.editor.lib2.document.StableCompoundEdit.undo(StableCompoundEdit.java:70)
	at org.netbeans.editor.BaseDocument$AtomicCompoundEdit.undo(BaseDocument.java:2296)
	at org.netbeans.editor.BaseDocument.undoAtomicEdits(BaseDocument.java:2202)
	at org.netbeans.editor.BaseDocument.breakAtomicLock(BaseDocument.java:1831)
	at org.netbeans.editor.GuardedDocument.runAtomicAsUser(GuardedDocument.java:339)
	at org.netbeans.editor.BaseKit$InsertBreakAction.actionPerformed(BaseKit.java:1520)
	at org.netbeans.editor.BaseAction.actionPerformed(BaseAction.java:324)
	at java.desktop/javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1810)
	at java.desktop/javax.swing.JComponent.processKeyBinding(JComponent.java:2962)
	at java.desktop/javax.swing.JComponent.processKeyBindings(JComponent.java:3010)
	at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2924)
	at java.desktop/java.awt.Component.processEvent(Component.java:6398)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
	at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1942)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:883)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1146)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1020)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:848)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4877)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
[catch] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
SEVERE [global]
java.lang.IndexOutOfBoundsException: index=1 >= size()=1
	at org.netbeans.lib.lexer.JoinTokenList.tokenList(JoinTokenList.java:170)
	at org.netbeans.lib.lexer.JoinLexerInputOperation.tokenList(JoinLexerInputOperation.java:190)
	at org.netbeans.lib.lexer.JoinLexerInputOperation.fetchActiveTokenList(JoinLexerInputOperation.java:183)
	at org.netbeans.lib.lexer.JoinLexerInputOperation.createJoinToken(JoinLexerInputOperation.java:247)
	at org.netbeans.lib.lexer.JoinLexerInputOperation.createDefaultTokenInstance(JoinLexerInputOperation.java:212)
	at org.netbeans.lib.lexer.LexerInputOperation.createToken(LexerInputOperation.java:294)
	at org.netbeans.spi.lexer.TokenFactory.createToken(TokenFactory.java:81)
	at org.netbeans.spi.lexer.TokenFactory.createToken(TokenFactory.java:65)
	at org.netbeans.lib.java.lexer.JavaLexer.finishIdentifier(JavaLexer.java:1357)
	at org.netbeans.lib.java.lexer.JavaLexer.nextToken(JavaLexer.java:1163)
	at org.netbeans.lib.lexer.LexerInputOperation.nextToken(LexerInputOperation.java:191)
	at org.netbeans.lib.lexer.JoinTokenList.init(JoinTokenList.java:666)
	at org.netbeans.lib.lexer.JoinTokenList.create(JoinTokenList.java:74)
	at org.netbeans.lib.lexer.TokenListList.checkCreateJoinTokenList(TokenListList.java:147)
	at org.netbeans.lib.lexer.TokenListList.<init>(TokenListList.java:106)
	at org.netbeans.lib.lexer.TokenHierarchyOperation.tokenListList(TokenHierarchyOperation.java:478)
	at org.netbeans.lib.lexer.EmbeddingOperation.embeddedTokenList(EmbeddingOperation.java:174)
	at org.netbeans.api.lexer.TokenSequence.embeddedImpl(TokenSequence.java:343)
	at org.netbeans.api.lexer.TokenSequence.embedded(TokenSequence.java:290)
	at org.netbeans.lib.lexer.TokenHierarchyOperation.embeddedTokenSequences(TokenHierarchyOperation.java:454)
	at org.netbeans.api.lexer.TokenHierarchy.embeddedTokenSequences(TokenHierarchy.java:240)
	at org.netbeans.modules.editor.completion.CompletionImpl$7.run(CompletionImpl.java:616)
	at org.netbeans.editor.BaseDocument.render(BaseDocument.java:1406)
	at org.netbeans.modules.editor.completion.CompletionImpl.getMimePath(CompletionImpl.java:613)
	at org.netbeans.modules.editor.completion.CompletionImpl.ensureActiveProviders(CompletionImpl.java:538)
	at org.netbeans.modules.editor.completion.CompletionImpl.caretUpdate(CompletionImpl.java:366)
	at java.desktop/javax.swing.text.JTextComponent.fireCaretUpdate(JTextComponent.java:408)
	at java.desktop/javax.swing.text.JTextComponent$MutableCaretEvent.fire(JTextComponent.java:4484)
	at java.desktop/javax.swing.text.JTextComponent$MutableCaretEvent.stateChanged(JTextComponent.java:4506)
	at org.netbeans.api.editor.caret.EditorCaret$6.run(EditorCaret.java:1733)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
[catch] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
SEVERE [org.openide.util.Exceptions]
java.lang.AssertionError: Non-null joinInfo in tokenList ETL@500a3238j<230,249> TC=0(0) JI:<0(R0),0>, tli=0(R0), lps=0
JTLL for "text/x-repl/text/x-java"
[0]: ETL@500a3238j<230,249> TC=0(0) JI:<0(R0),0>, tli=0(R0), lps=0
	at org.netbeans.lib.lexer.JoinTokenList.initTokenList(JoinTokenList.java:743)
	at org.netbeans.lib.lexer.JoinTokenList.init(JoinTokenList.java:665)
	at org.netbeans.lib.lexer.JoinTokenList.create(JoinTokenList.java:74)
	at org.netbeans.lib.lexer.TokenListList.checkCreateJoinTokenList(TokenListList.java:147)
	at org.netbeans.lib.lexer.TokenListList.<init>(TokenListList.java:106)
	at org.netbeans.lib.lexer.TokenHierarchyOperation.tokenListList(TokenHierarchyOperation.java:478)
	at org.netbeans.lib.lexer.TokenListList.<init>(TokenListList.java:97)
	at org.netbeans.lib.lexer.TokenHierarchyOperation.tokenListList(TokenHierarchyOperation.java:478)
	at org.netbeans.lib.lexer.TokenSequenceList.<init>(TokenSequenceList.java:84)
	at org.netbeans.lib.lexer.TokenHierarchyOperation.tokenSequenceList(TokenHierarchyOperation.java:430)
	at org.netbeans.api.lexer.TokenHierarchy.tokenSequenceList(TokenHierarchy.java:204)
	at org.netbeans.spi.debugger.ui.EditorContextDispatcher.getMIMETypesOnLine(EditorContextDispatcher.java:327)
	at org.netbeans.spi.debugger.ui.EditorContextDispatcher.getMIMETypesOnCurrentLine(EditorContextDispatcher.java:286)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
Caused: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
[catch] at org.netbeans.spi.debugger.ActionsProvider$ContextAware.isCurrentMIMETypeIn(ActionsProvider.java:382)
	at org.netbeans.spi.debugger.ActionsProvider$ContextAware.isEnabled(ActionsProvider.java:253)
	at org.netbeans.api.debugger.ActionsManager.isEnabled(ActionsManager.java:327)
	at org.netbeans.api.debugger.ActionsManager.fireActionStateChanged(ActionsManager.java:471)
	at org.netbeans.api.debugger.ActionsManager.lambda$new$0(ActionsManager.java:118)
	at org.netbeans.spi.debugger.ActionsProviderSupport.fireActionStateChanged(ActionsProviderSupport.java:86)
	at org.netbeans.spi.debugger.ActionsProviderSupport.setEnabled(ActionsProviderSupport.java:73)
	at org.netbeans.modules.debugger.jpda.truffle.actions.ToggleBreakpointsInLanguagesActionProvider.propertyChange(ToggleBreakpointsInLanguagesActionProvider.java:131)
	at org.openide.util.WeakListenerImpl$PropertyChange.propertyChange(WeakListenerImpl.java:189)
	at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343)
	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335)
	at org.netbeans.spi.debugger.ui.EditorContextDispatcher.firePropertyChange(EditorContextDispatcher.java:521)
	at org.netbeans.spi.debugger.ui.EditorContextDispatcher.access$2000(EditorContextDispatcher.java:101)
	at org.netbeans.spi.debugger.ui.EditorContextDispatcher$EventFirer.run(EditorContextDispatcher.java:990)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1403)
	at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
	at org.openide.util.lookup.Lookups.executeWith(Lookups.java:287)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2018)
INFO [org.netbeans.editor.GuardedDocument]: Runtime exception thrown in GuardedDocument.runAtomicAsUser() leading to breakAtomicLock():
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
	at org.netbeans.lib.lexer.JoinLexerInputOperation.createJoinToken(JoinLexerInputOperation.java:267)
	at org.netbeans.lib.lexer.JoinLexerInputOperation.createDefaultTokenInstance(JoinLexerInputOperation.java:212)
	at org.netbeans.lib.lexer.LexerInputOperation.createToken(LexerInputOperation.java:294)
	at org.netbeans.spi.lexer.TokenFactory.createToken(TokenFactory.java:81)
	at org.netbeans.spi.lexer.TokenFactory.createToken(TokenFactory.java:65)
	at org.netbeans.lib.java.lexer.JavaLexer.finishIdentifier(JavaLexer.java:1357)
	at org.netbeans.lib.java.lexer.JavaLexer.nextToken(JavaLexer.java:1163)
	at org.netbeans.lib.lexer.LexerInputOperation.nextToken(LexerInputOperation.java:191)
	at org.netbeans.lib.lexer.JoinTokenList.init(JoinTokenList.java:666)
	at org.netbeans.lib.lexer.JoinTokenList.create(JoinTokenList.java:74)
	at org.netbeans.lib.lexer.TokenListList.checkCreateJoinTokenList(TokenListList.java:147)
	at org.netbeans.lib.lexer.TokenListList.<init>(TokenListList.java:106)
	at org.netbeans.lib.lexer.TokenHierarchyOperation.tokenListList(TokenHierarchyOperation.java:478)
	at org.netbeans.lib.lexer.EmbeddingOperation.embeddedTokenList(EmbeddingOperation.java:174)
	at org.netbeans.api.lexer.TokenSequence.embeddedImpl(TokenSequence.java:343)
	at org.netbeans.api.lexer.TokenSequence.embedded(TokenSequence.java:290)
	at org.netbeans.modules.textmate.lexer.SyntaxHighlighting$HSImpl.moveTheSequence(SyntaxHighlighting.java:453)
	at org.netbeans.modules.textmate.lexer.SyntaxHighlighting$HSImpl.moveNext(SyntaxHighlighting.java:431)
	at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer$Wrapper.fetchNextHighlight(DirectMergeContainer.java:600)
	at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer$Wrapper.init(DirectMergeContainer.java:509)
	at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer$HlSequence.<init>(DirectMergeContainer.java:211)
	at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer.getHighlights(DirectMergeContainer.java:96)
	at org.netbeans.modules.editor.lib2.highlighting.HighlightsReader.<init>(HighlightsReader.java:42)
	at org.netbeans.modules.editor.lib2.view.HighlightsViewFactory.restart(HighlightsViewFactory.java:167)
	at org.netbeans.modules.editor.lib2.view.ViewBuilder$FactoryState.init(ViewBuilder.java:1299)
	at org.netbeans.modules.editor.lib2.view.ViewBuilder.createViews(ViewBuilder.java:699)
	at org.netbeans.modules.editor.lib2.view.ViewBuilder.createReplaceRepaintViews(ViewBuilder.java:660)
	at org.netbeans.modules.editor.lib2.view.ViewUpdates.updateViewsByModification(ViewUpdates.java:299)
	at org.netbeans.modules.editor.lib2.view.ViewUpdates.insertUpdate(ViewUpdates.java:235)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.openide.util.WeakListenerImpl$ProxyListener.invoke(WeakListenerImpl.java:461)
	at jdk.proxy1/jdk.proxy1.$Proxy31.insertUpdate(Unknown Source)
	at org.netbeans.lib.editor.util.swing.PriorityDocumentListenerList.insertUpdate(PriorityDocumentListenerList.java:60)
	at java.desktop/javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:227)
	at org.netbeans.editor.BaseDocument.fireInsertUpdate(BaseDocument.java:1653)
	at org.netbeans.editor.BaseDocument.handleInsertString(BaseDocument.java:826)
	at org.netbeans.editor.BaseDocument$FilterBypassImpl.insertString(BaseDocument.java:2629)
	at java.desktop/javax.swing.text.DocumentFilter.insertString(DocumentFilter.java:105)
	at org.netbeans.modules.jshell.model.ConsoleModel$DocFilter.insertString(ConsoleModel.java:888)
	at org.netbeans.editor.BaseDocument.insertString(BaseDocument.java:745)
	at org.netbeans.editor.BaseKit$InsertBreakAction.performLineBreakInsertion(BaseKit.java:1610)
	at org.netbeans.editor.BaseKit$InsertBreakAction.access$400(BaseKit.java:1439)
	at org.netbeans.editor.BaseKit$InsertBreakAction$2.run(BaseKit.java:1529)
[catch] at org.netbeans.editor.GuardedDocument.runAtomicAsUser(GuardedDocument.java:333)
	at org.netbeans.editor.BaseKit$InsertBreakAction.actionPerformed(BaseKit.java:1520)
	at org.netbeans.editor.BaseAction.actionPerformed(BaseAction.java:324)
	at java.desktop/javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1810)
	at java.desktop/javax.swing.JComponent.processKeyBinding(JComponent.java:2962)
	at java.desktop/javax.swing.JComponent.processKeyBindings(JComponent.java:3010)
	at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2924)
	at java.desktop/java.awt.Component.processEvent(Component.java:6398)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
	at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1942)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:883)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1146)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1020)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:848)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4877)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
SEVERE [global]
java.lang.IndexOutOfBoundsException: View index=8 >= 8
	at org.netbeans.modules.editor.lib2.view.DocumentView.getParagraphView(DocumentView.java:318)
	at org.netbeans.modules.editor.lib2.view.ViewBuilder.initModUpdate(ViewBuilder.java:446)
	at org.netbeans.modules.editor.lib2.view.ViewUpdates.updateViewsByModification(ViewUpdates.java:298)
	at org.netbeans.modules.editor.lib2.view.ViewUpdates.removeUpdate(ViewUpdates.java:265)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.openide.util.WeakListenerImpl$ProxyListener.invoke(WeakListenerImpl.java:461)
	at jdk.proxy1/jdk.proxy1.$Proxy31.removeUpdate(Unknown Source)
	at org.netbeans.lib.editor.util.swing.PriorityDocumentListenerList.removeUpdate(PriorityDocumentListenerList.java:91)
	at java.desktop/javax.swing.text.AbstractDocument.fireRemoveUpdate(AbstractDocument.java:285)
	at org.netbeans.editor.BaseDocument.fireRemoveUpdate(BaseDocument.java:1656)
	at org.netbeans.editor.BaseDocumentEvent.undo(BaseDocumentEvent.java:266)
	at org.netbeans.editor.GuardedDocumentEvent.undo(GuardedDocumentEvent.java:47)
	at org.netbeans.modules.editor.lib2.document.StableCompoundEdit.undo(StableCompoundEdit.java:70)
	at org.netbeans.editor.BaseDocument$AtomicCompoundEdit.undo(BaseDocument.java:2296)
	at org.netbeans.editor.BaseDocument.undoAtomicEdits(BaseDocument.java:2202)
	at org.netbeans.editor.BaseDocument.breakAtomicLock(BaseDocument.java:1831)
	at org.netbeans.editor.GuardedDocument.runAtomicAsUser(GuardedDocument.java:339)
	at org.netbeans.editor.BaseKit$InsertBreakAction.actionPerformed(BaseKit.java:1520)
	at org.netbeans.editor.BaseAction.actionPerformed(BaseAction.java:324)
	at java.desktop/javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1810)
	at java.desktop/javax.swing.JComponent.processKeyBinding(JComponent.java:2962)
	at java.desktop/javax.swing.JComponent.processKeyBindings(JComponent.java:3010)
	at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2924)
	at java.desktop/java.awt.Component.processEvent(Component.java:6398)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
	at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1942)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:883)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1146)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1020)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:848)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4877)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
[catch] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
SEVERE [global]
java.lang.IndexOutOfBoundsException: index=1 >= size()=1
	at org.netbeans.lib.lexer.JoinTokenList.tokenList(JoinTokenList.java:170)
	at org.netbeans.lib.lexer.JoinLexerInputOperation.tokenList(JoinLexerInputOperation.java:190)
	at org.netbeans.lib.lexer.JoinLexerInputOperation.fetchActiveTokenList(JoinLexerInputOperation.java:183)
	at org.netbeans.lib.lexer.JoinLexerInputOperation.createJoinToken(JoinLexerInputOperation.java:247)
	at org.netbeans.lib.lexer.JoinLexerInputOperation.createDefaultTokenInstance(JoinLexerInputOperation.java:212)
	at org.netbeans.lib.lexer.LexerInputOperation.createToken(LexerInputOperation.java:294)
	at org.netbeans.spi.lexer.TokenFactory.createToken(TokenFactory.java:81)
	at org.netbeans.spi.lexer.TokenFactory.createToken(TokenFactory.java:65)
	at org.netbeans.lib.java.lexer.JavaLexer.finishIdentifier(JavaLexer.java:1357)
	at org.netbeans.lib.java.lexer.JavaLexer.nextToken(JavaLexer.java:1163)
	at org.netbeans.lib.lexer.LexerInputOperation.nextToken(LexerInputOperation.java:191)
	at org.netbeans.lib.lexer.JoinTokenList.init(JoinTokenList.java:666)
	at org.netbeans.lib.lexer.JoinTokenList.create(JoinTokenList.java:74)
	at org.netbeans.lib.lexer.TokenListList.checkCreateJoinTokenList(TokenListList.java:147)
	at org.netbeans.lib.lexer.TokenListList.<init>(TokenListList.java:106)
	at org.netbeans.lib.lexer.TokenHierarchyOperation.tokenListList(TokenHierarchyOperation.java:478)
	at org.netbeans.lib.lexer.EmbeddingOperation.embeddedTokenList(EmbeddingOperation.java:174)
	at org.netbeans.api.lexer.TokenSequence.embeddedImpl(TokenSequence.java:343)
	at org.netbeans.api.lexer.TokenSequence.embedded(TokenSequence.java:290)
	at org.netbeans.lib.lexer.TokenHierarchyOperation.embeddedTokenSequences(TokenHierarchyOperation.java:454)
	at org.netbeans.api.lexer.TokenHierarchy.embeddedTokenSequences(TokenHierarchy.java:240)
	at org.netbeans.modules.editor.completion.CompletionImpl$7.run(CompletionImpl.java:616)
	at org.netbeans.editor.BaseDocument.render(BaseDocument.java:1406)
	at org.netbeans.modules.editor.completion.CompletionImpl.getMimePath(CompletionImpl.java:613)
	at org.netbeans.modules.editor.completion.CompletionImpl.ensureActiveProviders(CompletionImpl.java:538)
	at org.netbeans.modules.editor.completion.CompletionImpl.caretUpdate(CompletionImpl.java:366)
	at java.desktop/javax.swing.text.JTextComponent.fireCaretUpdate(JTextComponent.java:408)
	at java.desktop/javax.swing.text.JTextComponent$MutableCaretEvent.fire(JTextComponent.java:4484)
	at java.desktop/javax.swing.text.JTextComponent$MutableCaretEvent.stateChanged(JTextComponent.java:4506)
	at org.netbeans.api.editor.caret.EditorCaret$6.run(EditorCaret.java:1733)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
[catch] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
SEVERE [org.openide.util.Exceptions]
java.lang.AssertionError: Non-null joinInfo in tokenList ETL@500a3238j<230,249> TC=0(0) JI:<0(R0),0>, tli=0(R0), lps=0
JTLL for "text/x-repl/text/x-java"
[0]: ETL@500a3238j<230,249> TC=0(0) JI:<0(R0),0>, tli=0(R0), lps=0
	at org.netbeans.lib.lexer.JoinTokenList.initTokenList(JoinTokenList.java:743)
	at org.netbeans.lib.lexer.JoinTokenList.init(JoinTokenList.java:665)
	at org.netbeans.lib.lexer.JoinTokenList.create(JoinTokenList.java:74)
	at org.netbeans.lib.lexer.TokenListList.checkCreateJoinTokenList(TokenListList.java:147)
	at org.netbeans.lib.lexer.TokenListList.<init>(TokenListList.java:106)
	at org.netbeans.lib.lexer.TokenHierarchyOperation.tokenListList(TokenHierarchyOperation.java:478)
	at org.netbeans.lib.lexer.TokenListList.<init>(TokenListList.java:97)
	at org.netbeans.lib.lexer.TokenHierarchyOperation.tokenListList(TokenHierarchyOperation.java:478)
	at org.netbeans.lib.lexer.TokenSequenceList.<init>(TokenSequenceList.java:84)
	at org.netbeans.lib.lexer.TokenHierarchyOperation.tokenSequenceList(TokenHierarchyOperation.java:430)
	at org.netbeans.api.lexer.TokenHierarchy.tokenSequenceList(TokenHierarchy.java:204)
	at org.netbeans.spi.debugger.ui.EditorContextDispatcher.getMIMETypesOnLine(EditorContextDispatcher.java:327)
	at org.netbeans.spi.debugger.ui.EditorContextDispatcher.getMIMETypesOnCurrentLine(EditorContextDispatcher.java:286)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
Caused: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
[catch] at org.netbeans.spi.debugger.ActionsProvider$ContextAware.isCurrentMIMETypeIn(ActionsProvider.java:382)
	at org.netbeans.spi.debugger.ActionsProvider$ContextAware.isEnabled(ActionsProvider.java:253)
	at org.netbeans.api.debugger.ActionsManager.isEnabled(ActionsManager.java:327)
	at org.netbeans.api.debugger.ActionsManager.fireActionStateChanged(ActionsManager.java:471)
	at org.netbeans.api.debugger.ActionsManager.lambda$new$0(ActionsManager.java:118)
	at org.netbeans.spi.debugger.ActionsProviderSupport.fireActionStateChanged(ActionsProviderSupport.java:86)
	at org.netbeans.spi.debugger.ActionsProviderSupport.setEnabled(ActionsProviderSupport.java:73)
	at org.netbeans.modules.debugger.jpda.truffle.actions.ToggleBreakpointsInLanguagesActionProvider.propertyChange(ToggleBreakpointsInLanguagesActionProvider.java:131)
	at org.openide.util.WeakListenerImpl$PropertyChange.propertyChange(WeakListenerImpl.java:189)
	at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343)
	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335)
	at org.netbeans.spi.debugger.ui.EditorContextDispatcher.firePropertyChange(EditorContextDispatcher.java:521)
	at org.netbeans.spi.debugger.ui.EditorContextDispatcher.access$2000(EditorContextDispatcher.java:101)
	at org.netbeans.spi.debugger.ui.EditorContextDispatcher$EventFirer.run(EditorContextDispatcher.java:990)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1403)
	at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
	at org.openide.util.lookup.Lookups.executeWith(Lookups.java:287)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2018)
- parser falsely reports that var is not supported
- parser reports missing semikolon

The first condition needs to be newly caught, the second condition was
partially caug in SemicolonMissingRule, but failed because there is an
potential off-by-one issue.
@matthiasblaesing matthiasblaesing added Java [ci] enable extra Java tests (java.completion, java.source.base, java.hints, refactoring.java, form) ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) labels Mar 12, 2025
@matthiasblaesing matthiasblaesing added this to the NB26 milestone Mar 12, 2025
@matthiasblaesing matthiasblaesing modified the milestones: NB26, NB27 Apr 14, 2025
@matthiasblaesing
Copy link
Contributor Author

I intent to merge this early in the NB27 cycle.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) Java [ci] enable extra Java tests (java.completion, java.source.base, java.hints, refactoring.java, form)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant