Community
Participate
Working Groups
Hi, Althought this is not common scenario I marked this defect as Major because it ends up crashing the Eclipse. It is really easy to reproduce it. In any constructor with at least one argument, add the word "private" before the first argument declaration. Something similar to... public class MyClass { public MyClass(private int i){} } Btw, I tested this with the 020321 and 020402 drivers.
Reproduced. When saving such code in editor, we get the following stack trace: 2 org.eclipse.ui 0 Save Failed java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.problem.ProblemReporter.illegalModifierForVari able(ProblemReporter.java:967) at org.eclipse.jdt.internal.compiler.lookup.BlockScope.checkAndSetModifiersForVaria ble(BlockScope.java:165) at org.eclipse.jdt.internal.compiler.lookup.BlockScope.addLocalVariable (BlockScope.java:96) at org.eclipse.jdt.internal.compiler.ast.Argument.bind(Argument.java:31) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.bindArguments (AbstractMethodDeclaration.java:134) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve (AbstractMethodDeclaration.java:313) at org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration.resolve (ConstructorDeclaration.java:339) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve (TypeDeclaration.java:898) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve (TypeDeclaration.java:930) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve (CompilationUnitDeclaration.java:213) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:561) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.resolve (CompilationUnitProblemFinder.java:149) at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure (CompilationUnit.java:79) at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent (CompilationUnit.java:552) at org.eclipse.jdt.internal.core.WorkingCopy.reconcile (WorkingCopy.java:333) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.doSaveDoc ument(CompilationUnitDocumentProvider.java:384) at org.eclipse.ui.texteditor.AbstractDocumentProvider.saveDocument (AbstractDocumentProvider.java:361) at org.eclipse.ui.texteditor.AbstractTextEditor$9.execute (AbstractTextEditor.java:1685) at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run (WorkspaceModifyOperation.java:64) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1343) at org.eclipse.ui.actions.WorkspaceModifyOperation.run (WorkspaceModifyOperation.java:78) at org.eclipse.ui.texteditor.AbstractTextEditor.performSaveOperation (AbstractTextEditor.java:1703) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSaveOperatio n(CompilationUnitEditor.java:569) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave (CompilationUnitEditor.java:617) at org.eclipse.ui.internal.EditorManager$9.run(EditorManager.java:811) at org.eclipse.jface.operation.ModalContext.runInCurrentThread (ModalContext.java:296) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:249) at org.eclipse.jface.dialogs.ProgressMonitorDialog.run (ProgressMonitorDialog.java:335) at org.eclipse.ui.internal.EditorManager.runProgressMonitorOperation (EditorManager.java:689) at org.eclipse.ui.internal.EditorManager.saveEditor (EditorManager.java:816) at org.eclipse.ui.internal.WorkbenchPage.saveEditor (WorkbenchPage.java:1481) at org.eclipse.ui.internal.SaveAction.run(SaveAction.java:32) at org.eclipse.jface.action.Action.runWithEvent(Action.java:590) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection (ActionContributionItem.java:407) at org.eclipse.jface.action.ActionContributionItem.handleWidgetEvent (ActionContributionItem.java:361) at org.eclipse.jface.action.ActionContributionItem.access$0 (ActionContributionItem.java:352) at org.eclipse.jface.action.ActionContributionItem$ActionListener.handleEvent (ActionContributionItem.java:47) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:75) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:637) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1420) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1208) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:755) at org.eclipse.ui.internal.Workbench.run(Workbench.java:738) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:777) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:319) at java.lang.reflect.Method.invoke(Native Method) at org.eclipse.core.launcher.Main.basicRun(Main.java:190) at org.eclipse.core.launcher.Main.run(Main.java:549) at org.eclipse.core.launcher.UIMain.main(UIMain.java:52) Save Failed
Error reporting did cause NPE. Fixed the bug, and also tuned the error messages (in particular added one for duplicate modifiers on arguments). Fixed, regression test added (NegativeTest#test262 + test263).