Skip to content
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 declaration results in ClassCastException: LocalDeclaration cannot be cast to LambdaExpression #1195

Closed
Bananeweizen opened this issue Jun 28, 2023 · 10 comments · Fixed by #1349
Assignees
Labels
bug Something isn't working

Comments

@Bananeweizen
Copy link
Contributor

Bananeweizen commented Jun 28, 2023

Eclipse 2023-06, reproducer:

package reproducer;

import java.util.function.Predicate;

public class Reproducer {

    private final Predicate<Object> predicate =
            input -> (input instanceof String withoutThisVariableNameThereIsNoError);
}

Using F3 on "predicate" will lead to the below exception.

Removing the variable name after the instanceof check fixes the issue, therefore the root cause of the bug might be related to changes for pattern matching with instanceof.

Caused by: java.lang.ClassCastException: class org.eclipse.jdt.internal.compiler.ast.LocalDeclaration cannot be cast to class org.eclipse.jdt.internal.compiler.ast.LambdaExpression (org.eclipse.jdt.internal.compiler.ast.LocalDeclaration and org.eclipse.jdt.internal.compiler.ast.LambdaExpression are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @21a1554)
	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeLambdaExpression(Parser.java:9156)
	at org.eclipse.jdt.internal.codeassist.select.SelectionParser.consumeLambdaExpression(SelectionParser.java:874)
	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeRule(Parser.java:7951)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13180)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13435)
	at org.eclipse.jdt.internal.codeassist.select.SelectionParser.parse(SelectionParser.java:1665)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13392)
	at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:11778)
	at org.eclipse.jdt.internal.codeassist.select.SelectionParser.dietParse(SelectionParser.java:1489)
	at org.eclipse.jdt.internal.codeassist.SelectionEngine.select(SelectionEngine.java:994)
	at org.eclipse.jdt.internal.core.Openable.codeSelect(Openable.java:167)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:389)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:382)
	at org.eclipse.jdt.internal.ui.actions.SelectionConverter.codeResolve(SelectionConverter.java:270)
	at org.eclipse.jdt.internal.ui.actions.SelectionConverter$1CodeResolveRunnable.run(SelectionConverter.java:254)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)

EDIT: I later found another exception in the log, which might be related. However, I cannot say which piece of source triggered this one:

java.lang.ClassCastException: class org.eclipse.jdt.internal.codeassist.select.SelectionOnLocalName cannot be cast to class org.eclipse.jdt.internal.compiler.ast.LambdaExpression (org.eclipse.jdt.internal.codeassist.select.SelectionOnLocalName is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @40d0bff1; org.eclipse.jdt.internal.compiler.ast.LambdaExpression is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @21a1554)
	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeLambdaExpression(Parser.java:9156)
	at org.eclipse.jdt.internal.codeassist.select.SelectionParser.consumeLambdaExpression(SelectionParser.java:874)
	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeRule(Parser.java:7951)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13180)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13435)
	at org.eclipse.jdt.internal.codeassist.select.SelectionParser.parse(SelectionParser.java:1665)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13392)
	at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:11778)
	at org.eclipse.jdt.internal.codeassist.select.SelectionParser.dietParse(SelectionParser.java:1489)
	at org.eclipse.jdt.internal.codeassist.SelectionEngine.select(SelectionEngine.java:994)
	at org.eclipse.jdt.internal.core.Openable.codeSelect(Openable.java:167)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:389)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:382)
	at org.eclipse.jdt.internal.ui.text.java.hover.AbstractJavaEditorTextHover.getJavaElementsAt(AbstractJavaEditorTextHover.java:121)
	at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:667)
	at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:663)
	at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163)
	at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:130)
	at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89)
	at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155)
@iloveeclipse
Copy link
Member

Still in latest master, but now only with one error:

eclipse.buildId=4.29.0.I20230627-1800
java.version=17.0.6
java.vendor=Eclipse Adoptium
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments:  -product org.eclipse.sdk.ide -pluginCustomization /home/aloskuto/tmp/pluginCustomization.ini
Command-line arguments:  -product org.eclipse.sdk.ide -data /data/4x_platform_workspace/../runtime-Java_17 -dev file:/data/4x_platform_workspace/.metadata/.plugins/org.eclipse.pde.core/Java_17/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog -pluginCustomization /home/aloskuto/tmp/pluginCustomization.ini

org.eclipse.jdt.ui
Error
Wed Jun 28 11:42:28 CEST 2023
Internal Error

java.lang.reflect.InvocationTargetException
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:395)
	at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:470)
	at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:230)
	at org.eclipse.ui.internal.progress.ProgressManager.lambda$26(ProgressManager.java:836)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:869)
	at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:845)
	at org.eclipse.jdt.internal.ui.actions.SelectionConverter.performForkedCodeResolve(SelectionConverter.java:261)
	at org.eclipse.jdt.internal.ui.actions.SelectionConverter.codeResolveForked(SelectionConverter.java:173)
	at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:164)
	at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:278)
	at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:252)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
	at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:121)
	at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:97)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:309)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:243)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173)
	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:485)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:580)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:655)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:439)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:96)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1953)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1528)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1555)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1538)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1577)
	at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:937)
	at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:4049)
	at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:931)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2507)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:6883)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:6163)
	at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_do_event(Native Method)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1597)
	at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_iteration_do(Native Method)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4514)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:643)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:550)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:171)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:588)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1459)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1432)
Caused by: java.lang.ClassCastException: class org.eclipse.jdt.internal.compiler.ast.LocalDeclaration cannot be cast to class org.eclipse.jdt.internal.compiler.ast.LambdaExpression (org.eclipse.jdt.internal.compiler.ast.LocalDeclaration and org.eclipse.jdt.internal.compiler.ast.LambdaExpression are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @30fa8a6b)
	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeLambdaExpression(Parser.java:9159)
	at org.eclipse.jdt.internal.codeassist.select.SelectionParser.consumeLambdaExpression(SelectionParser.java:874)
	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeRule(Parser.java:7954)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13183)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13438)
	at org.eclipse.jdt.internal.codeassist.select.SelectionParser.parse(SelectionParser.java:1665)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13395)
	at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:11781)
	at org.eclipse.jdt.internal.codeassist.select.SelectionParser.dietParse(SelectionParser.java:1489)
	at org.eclipse.jdt.internal.codeassist.SelectionEngine.select(SelectionEngine.java:994)
	at org.eclipse.jdt.internal.core.Openable.codeSelect(Openable.java:170)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:389)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:382)
	at org.eclipse.jdt.internal.ui.actions.SelectionConverter.codeResolve(SelectionConverter.java:270)
	at org.eclipse.jdt.internal.ui.actions.SelectionConverter$1CodeResolveRunnable.run(SelectionConverter.java:254)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)
Root exception:
java.lang.ClassCastException: class org.eclipse.jdt.internal.compiler.ast.LocalDeclaration cannot be cast to class org.eclipse.jdt.internal.compiler.ast.LambdaExpression (org.eclipse.jdt.internal.compiler.ast.LocalDeclaration and org.eclipse.jdt.internal.compiler.ast.LambdaExpression are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @30fa8a6b)
	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeLambdaExpression(Parser.java:9159)
	at org.eclipse.jdt.internal.codeassist.select.SelectionParser.consumeLambdaExpression(SelectionParser.java:874)
	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeRule(Parser.java:7954)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13183)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13438)
	at org.eclipse.jdt.internal.codeassist.select.SelectionParser.parse(SelectionParser.java:1665)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13395)
	at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:11781)
	at org.eclipse.jdt.internal.codeassist.select.SelectionParser.dietParse(SelectionParser.java:1489)
	at org.eclipse.jdt.internal.codeassist.SelectionEngine.select(SelectionEngine.java:994)
	at org.eclipse.jdt.internal.core.Openable.codeSelect(Openable.java:170)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:389)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:382)
	at org.eclipse.jdt.internal.ui.actions.SelectionConverter.codeResolve(SelectionConverter.java:270)
	at org.eclipse.jdt.internal.ui.actions.SelectionConverter$1CodeResolveRunnable.run(SelectionConverter.java:254)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)

@iloveeclipse iloveeclipse added the bug Something isn't working label Jun 28, 2023
@srikanth-sankaran srikanth-sankaran changed the title LocalDeclaration cannot be cast to LambdaExpression Open declaration results in ClassCastException: LocalDeclaration cannot be cast to LambdaExpression Jun 28, 2023
@srikanth-sankaran srikanth-sankaran self-assigned this Jun 28, 2023
@srikanth-sankaran srikanth-sankaran added this to the 4.29 M1 milestone Jun 28, 2023
@srikanth-sankaran
Copy link
Contributor

I'll take a look.

@srikanth-sankaran
Copy link
Contributor

srikanth-sankaran commented Jun 29, 2023

@jukzi
Copy link
Contributor

jukzi commented Aug 10, 2023

i got similar error:

java.lang.ClassCastException: class org.eclipse.jdt.internal.compiler.ast.LocalDeclaration cannot be cast to class org.eclipse.jdt.internal.compiler.ast.ForeachStatement (org.eclipse.jdt.internal.compiler.ast.LocalDeclaration and org.eclipse.jdt.internal.compiler.ast.ForeachStatement are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @6c3627c)
	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeEnhancedForStatement(Parser.java:3435)
	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeRule(Parser.java:8471)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13145)
	at org.eclipse.jdt.internal.codeassist.impl.AssistParser.parseBlockStatements(AssistParser.java:2139)
	at org.eclipse.jdt.internal.codeassist.impl.AssistParser.parseBlockStatements(AssistParser.java:1979)
	at org.eclipse.jdt.internal.codeassist.impl.Engine.parseBlockStatements(Engine.java:349)
	at org.eclipse.jdt.internal.codeassist.impl.Engine.parseBlockStatements(Engine.java:312)
	at org.eclipse.jdt.internal.codeassist.SelectionEngine.select(SelectionEngine.java:1081)
	at org.eclipse.jdt.internal.core.Openable.codeSelect(Openable.java:167)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:389)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:382)
	at org.eclipse.jdt.internal.ui.text.java.hover.AbstractJavaEditorTextHover.getJavaElementsAt(AbstractJavaEditorTextHover.java:121)
	at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:667)
	at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:663)
	at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163)
	at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:130)
	at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89)
	at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155)

@srikanth-sankaran
Copy link
Contributor

i got similar error:


java.lang.ClassCastException: class org.eclipse.jdt.internal.compiler.ast.LocalDeclaration cannot be cast to class

Is pattern matching instanceof used in the vicinity ??

@jukzi
Copy link
Contributor

jukzi commented Aug 11, 2023

Is pattern matching instanceof used in the vicinity ??

It happens when hovering for example anything in line 99-118 of org.eclipse.jdt.internal.launching.DetectVMInstallationsJob
There is no pattern matching but an old school instanceof in line 88! The error goes away if i delete lines 88-92.

@srikanth-sankaran
Copy link
Contributor

Is pattern matching instanceof used in the vicinity ??

It happens when hovering for example anything in line 99-118 of org.eclipse.jdt.internal.launching.DetectVMInstallationsJob There is no pattern matching but an old school instanceof in line 88! The error goes away if i delete lines 88-92.

I wish you had copied and pasted the lines involved instead of quoting line numbers! :)

I think what you encountered is pretty much the same problem as #1263 which will be fixed by #1349

I do see there is a instanceof with a pattern binding variable in line 90 in the present state of affairs.

@jukzi
Copy link
Contributor

jukzi commented Sep 12, 2023

@srikanth-sankaran
Copy link
Contributor

I wish you had copied and pasted the lines involved instead of quoting line numbers! :)

https://github.com/eclipse-jdt/eclipse.jdt.debug/blob/66e4636f7f6755a9714472a706e5c53b479c9765/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/DetectVMInstallationsJob.java#L102 hover "CANCEL_STATUS"

Thank you, but line 91 and 112 both have a pattern matching instanceof - In fact I don't see a "classic" instanceof at all in this file.

srikanth-sankaran added a commit that referenced this issue Sep 14, 2023
This is a substantial reimplementation of the code selection support for pattern matching constructs. By using auxiliary stacks to record the state of the parser and by using that state to drive the bottom up context recovery and parse tree construction, we now rebuild the parse tree to sufficient detail to ascertain liveness of pattern binding variables at the point of selection.

Fixes #1195
Fixes #769
Fixes #1263
Fixes #1360
Fixes #1364
Fixes #1278
Fixes #1288

Verifies https://bugs.eclipse.org/bugs/show_bug.cgi?id=573257
Verifies https://bugs.eclipse.org/bugs/show_bug.cgi?id=572975
Verifies https://bugs.eclipse.org/bugs/show_bug.cgi?id=576794
@srikanth-sankaran
Copy link
Contributor

The fix made here also addresses #860

robstryker pushed a commit to robstryker/eclipse.jdt.core that referenced this issue Jul 18, 2024
…e-jdt#1349)

This is a substantial reimplementation of the code selection support for pattern matching constructs. By using auxiliary stacks to record the state of the parser and by using that state to drive the bottom up context recovery and parse tree construction, we now rebuild the parse tree to sufficient detail to ascertain liveness of pattern binding variables at the point of selection.

Fixes eclipse-jdt#1195
Fixes eclipse-jdt#769
Fixes eclipse-jdt#1263
Fixes eclipse-jdt#1360
Fixes eclipse-jdt#1364
Fixes eclipse-jdt#1278
Fixes eclipse-jdt#1288

Verifies https://bugs.eclipse.org/bugs/show_bug.cgi?id=573257
Verifies https://bugs.eclipse.org/bugs/show_bug.cgi?id=572975
Verifies https://bugs.eclipse.org/bugs/show_bug.cgi?id=576794
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants