Bug 12908 - Build and save attempt fail with NPE and trying it many times crashs Eclipse
Summary: Build and save attempt fail with NPE and trying it many times crashs Eclipse
Status: RESOLVED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 2.0   Edit
Hardware: PC Windows 2000
: P2 major (vote)
Target Milestone: 2.0 M5   Edit
Assignee: Philipe Mulet CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-04-05 17:06 EST by Marcelo Paternostro CLA
Modified: 2002-04-08 10:22 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Marcelo Paternostro CLA 2002-04-05 17:06:36 EST
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.
Comment 1 Philipe Mulet CLA 2002-04-08 07:06:35 EDT
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
Comment 2 Philipe Mulet CLA 2002-04-08 10:22:32 EDT
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).