Community
Participate
Working Groups
Created attachment 284247 [details] Sample file to reproduce the issue Using SDK with Build id: I20200922-1800 , and working on lemminx-project (specifically the attached file), I get a lot of exceptions that cause error popups and -even more annoying- incapability to open the Java editor. Here are some interesting exceptions in the log at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.parseMethods(TypeDeclaration.java:1133) at org.eclipse.jdt.internal.compiler.parser.Parser.getMethodBodies(Parser.java:11877) at org.eclipse.jdt.internal.compiler.SourceElementParser.parseCompilationUnit(SourceElementParser.java:1138) at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:195) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:268) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:596) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:326) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:312) at org.eclipse.jdt.internal.core.JavaElement.getChildren(JavaElement.java:267) at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType(JavaElement.java:281) at org.eclipse.jdt.internal.core.CompilationUnit.getTypes(CompilationUnit.java:968) at org.eclipse.jdt.internal.corext.refactoring.util.JavaElementUtil.getMainType(JavaElementUtil.java:99) at org.eclipse.jdt.internal.corext.refactoring.RefactoringAvailabilityTester.getSingleSelectedType(RefactoringAvailabilityTester.java:156) at org.eclipse.jdt.ui.actions.ExtractClassAction.selectionChanged(ExtractClassAction.java:85) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchSelectionChanged(SelectionDispatchAction.java:262) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.selectionChanged(SelectionDispatchAction.java:257) at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151) java.lang.StringIndexOutOfBoundsException: offset 27112, count -498, length 37253 at java.base/java.lang.String.checkBoundsOffCount(String.java:3741) at java.base/java.lang.String.rangeCheck(String.java:298) at java.base/java.lang.String.<init>(String.java:294) at org.eclipse.jdt.internal.compiler.parser.Scanner.disambiguatedToken(Scanner.java:5640) at org.eclipse.jdt.internal.compiler.parser.Scanner.getNextToken(Scanner.java:1472) at org.eclipse.jdt.internal.compiler.parser.diagnose.LexStream.readTokenFromScanner(LexStream.java:84) at org.eclipse.jdt.internal.compiler.parser.diagnose.LexStream.token(LexStream.java:154) at org.eclipse.jdt.internal.compiler.parser.diagnose.LexStream.kind(LexStream.java:194) at org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser.diagnoseParse(DiagnoseParser.java:312) at org.eclipse.jdt.internal.compiler.parser.Parser.reportSyntaxErrors(Parser.java:14062) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12895) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13204) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.parseStatements(MethodDeclaration.java:225) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.parseMethods(TypeDeclaration.java:1133) at org.eclipse.jdt.internal.compiler.parser.Parser.getMethodBodies(Parser.java:11877) at org.eclipse.jdt.internal.compiler.SourceElementParser.parseCompilationUnit(SourceElementParser.java:1138) at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:195) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:268) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:596) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:326) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:312) at org.eclipse.jdt.internal.core.JavaElement.getChildren(JavaElement.java:267) at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType(JavaElement.java:281) at org.eclipse.jdt.internal.core.CompilationUnit.getTypes(CompilationUnit.java:968) at org.eclipse.jdt.internal.corext.refactoring.util.JavaElementUtil.getMainType(JavaElementUtil.java:99) at org.eclipse.jdt.internal.corext.refactoring.RefactoringAvailabilityTester.getSingleSelectedType(RefactoringAvailabilityTester.java:156) at org.eclipse.jdt.ui.actions.ExtractClassAction.selectionChanged(ExtractClassAction.java:85) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchSelectionChanged(SelectionDispatchAction.java:262)
Similar case for me, had to revert to Eclipse 2020-03 to continue working :-(
Version: 2020-12 (4.18) Build id: I20200924-1800 I'm definitely able to reproduce on the I-builds, on 4.17 SDK (2020-09), but the 4.16 SDK (2020-06) seems to not have the issue. 1) I installed m2e (to be sure the project resolves), and imported https://github.com/eclipse/lemminx-maven (as "Projects from Folder or Archive") 2) I opened MavenCompletionParticipant and deleted any brace (eg. '{', '}') or in some cases semicolon, and saw the issue. I'm able able to reproduce with the following simpler snippet : !ENTRY org.eclipse.jdt.core 4 4 2020-09-25 13:17:49.999 !MESSAGE Exception occurred during problem detection: ----------------------------------- SOURCE BEGIN ------------------------------------- package foo; import java.util.ArrayList; public class Foo { public void foo() { new ArrayList<>().stream().filter(p -> p != null) switch ("") { case "": } } } ----------------------------------- SOURCE END -------------------------------------
New Gerrit change created: https://git.eclipse.org/r/c/jdt/eclipse.jdt.core/+/170002
(In reply to Roland Grunberg from comment #2) Thanks Roland for the test case - could reproduce the issue
Gerrit change https://git.eclipse.org/r/c/jdt/eclipse.jdt.core/+/170002 was merged to [master]. Commit: http://git.eclipse.org/c/jdt/eclipse.jdt.core.git/commit/?id=27561fd83113216e5f697434e65c1535a3dfcdb5
Thanks Mickael Istria for the bug with the relevant tests. @Mickael, @Florian - can you please check this one of the I builds that will be built later today/tomorrow?
FYI, I have the same problem. In a large java file I had the following code and the missing comma caused the editor to fail saving with the below stack trace. It is however in a switch statement (default:) so maybe the current fix will helper here as well? bucketSubscriptions.add(new BucketSubscription(Integer.parseInt(subKey), Integer.parseInt(detail.getKeyValue()), <-- REMOVED THE COMMA HERE AND THE EDITOR FAILED TO SAVE. Boolean.parseBoolean(detail.getOldValue()))); Sorry that I cannot give you a smaller example that makes it fail. Stack trace: java.lang.StringIndexOutOfBoundsException: offset 14292, count -3247, length 81831 at java.base/java.lang.String.checkBoundsOffCount(String.java:3741) at java.base/java.lang.String.rangeCheck(String.java:298) at java.base/java.lang.String.<init>(String.java:294) at org.eclipse.jdt.internal.compiler.parser.Scanner.disambiguatedToken(Scanner.java:5491) at org.eclipse.jdt.internal.compiler.parser.Scanner.getNextToken(Scanner.java:1461) at org.eclipse.jdt.internal.compiler.parser.diagnose.LexStream.readTokenFromScanner(LexStream.java:84) at org.eclipse.jdt.internal.compiler.parser.diagnose.LexStream.token(LexStream.java:154) at org.eclipse.jdt.internal.compiler.parser.diagnose.LexStream.kind(LexStream.java:194) at org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser.diagnoseParse(DiagnoseParser.java:312) at org.eclipse.jdt.internal.compiler.parser.Parser.reportSyntaxErrors(Parser.java:14010) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12843) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13152) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.parseStatements(MethodDeclaration.java:225) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.parseMethods(TypeDeclaration.java:1138) at org.eclipse.jdt.internal.compiler.parser.Parser.getMethodBodies(Parser.java:11825) at org.eclipse.jdt.internal.compiler.SourceElementParser.parseCompilationUnit(SourceElementParser.java:1058) at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:195) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:268) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:596) at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(CompilationUnit.java:1146) at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(CompilationUnit.java:1126) at org.eclipse.jdt.internal.core.CommitWorkingCopyOperation.executeOperation(CommitWorkingCopyOperation.java:128) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:736) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2292) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2317) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:807) at org.eclipse.jdt.internal.core.CompilationUnit.commitWorkingCopy(CompilationUnit.java:404) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.commitWorkingCopy(CompilationUnitDocumentProvider.java:1418) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$3.execute(CompilationUnitDocumentProvider.java:1495) at org.eclipse.ui.editors.text.TextFileDocumentProvider$DocumentProviderOperation.run(TextFileDocumentProvider.java:133) at org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.execute(WorkspaceModifyDelegatingOperation.java:71) at org.eclipse.ui.actions.WorkspaceModifyOperation.lambda$0(WorkspaceModifyOperation.java:110) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2292) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2317) at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:131) at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:76) at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:66) at org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation(TextFileDocumentProvider.java:461) at org.eclipse.ui.editors.text.TextFileDocumentProvider.saveDocument(TextFileDocumentProvider.java:764) at org.eclipse.ui.texteditor.AbstractTextEditor.performSave(AbstractTextEditor.java:5007) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSave(CompilationUnitEditor.java:1268) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave(CompilationUnitEditor.java:1322) at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.doSave(AbstractTextEditor.java:7151) at org.eclipse.ui.Saveable.doSave(Saveable.java:213) at org.eclipse.ui.internal.SaveableHelper.doSaveModel(SaveableHelper.java:333) at org.eclipse.ui.internal.SaveableHelper.lambda$1(SaveableHelper.java:196) at org.eclipse.ui.internal.SaveableHelper.lambda$3(SaveableHelper.java:271) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:436) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:352) at org.eclipse.ui.internal.WorkbenchWindow.lambda$7(WorkbenchWindow.java:2353) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74) at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2351) at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:278) at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:260) at org.eclipse.ui.internal.SaveableHelper.saveModels(SaveableHelper.java:207) at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:150) at org.eclipse.ui.internal.WorkbenchPage.saveSaveable(WorkbenchPage.java:3822) at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3835) at org.eclipse.ui.internal.handlers.SaveHandler.execute(SaveHandler.java:81) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:283) at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:97) at jdk.internal.reflect.GeneratedMethodAccessor59.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:319) at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:253) 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:487) 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:584) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:653) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:443) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$2(KeyBindingDispatcher.java:386) 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:1254) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1036) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1046) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1088) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1084) at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1513) at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4881) at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:345) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4759) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4913) at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3610) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) 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:644) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:153) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401) 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:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594) at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
(In reply to Mattias Andersson from comment #7) > so maybe the current > fix will helper here as well? > yes, it will.
New Gerrit change created: https://git.eclipse.org/r/c/jdt/eclipse.jdt.core/+/170141
Gerrit change https://git.eclipse.org/r/c/jdt/eclipse.jdt.core/+/170141 was merged to [BETA_JAVA15]. Commit: http://git.eclipse.org/c/jdt/eclipse.jdt.core.git/commit/?id=ce1d43fa4c2f0e1cdf4de43f0e1ff0fd31fae7f2
Confirmed, this fixes the issue. Can't reproduce with I20200930-1800. Thanks :)
(In reply to Florian Lieb from comment #11) > Confirmed, this fixes the issue. Can't reproduce with I20200930-1800. > > Thanks :) Thanks Florian for confirming. resolving.
Verified for 4.18 M1 as mentioned in comment 11 with I20200930-180
Thanks for fix. Is this fix will be released for a 4.17 update or does we need to wait for 4.18 ?
*** Bug 567795 has been marked as a duplicate of this bug. ***
*** Bug 567583 has been marked as a duplicate of this bug. ***
*** Bug 567571 has been marked as a duplicate of this bug. ***
*** Bug 567191 has been marked as a duplicate of this bug. ***
*** Bug 568178 has been marked as a duplicate of this bug. ***
*** Bug 568140 has been marked as a duplicate of this bug. ***
*** Bug 567967 has been marked as a duplicate of this bug. ***
For the book keeping: regression in 4.17 M3, from bug 565844 changes.
*** Bug 568422 has been marked as a duplicate of this bug. ***
(In reply to Stéphane B. from comment #14) > Thanks for fix. Is this fix will be released for a 4.17 update or does we > need to wait for 4.18 ? This is available from 4.18 M1 build onwards.
*** Bug 568556 has been marked as a duplicate of this bug. ***
*** Bug 568606 has been marked as a duplicate of this bug. ***
*** Bug 568724 has been marked as a duplicate of this bug. ***
*** Bug 568806 has been marked as a duplicate of this bug. ***