Bug 29029

Summary: Use of "assert" in inner class causes NullPointerException in compiler
Product: [Eclipse Project] JDT Reporter: Dominic Seymour <dominic.seymour>
Component: CoreAssignee: JDT-Core-Inbox <jdt-core-inbox>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: P3    
Version: 2.1   
Target Milestone: 2.1 M5   
Hardware: PC   
OS: Linux-GTK   
Whiteboard:

Description Dominic Seymour CLA 2003-01-06 09:37:46 EST
On 2.1M4 the Java compiler seems to break with an NPE when it encounters an
assert statement inside an non-static inner class. For me, the following minimal
code reproduces the problem. The content of the assert expression doesn't seem
to make any difference. Making the inner class static removes the problem.

public class AssertBreaker {   
    class Inner {
        public void something() {
            assert true;                       
        }    
    }  
}

The exception produced is:

!ENTRY org.eclipse.ui 2 0 Jan 06, 2003 14:32:06.406
!MESSAGE Save Failed
!STACK 0
java.lang.NullPointerException
	at org.eclipse.jdt.internal.compiler.ClassFile.addFieldInfo(ClassFile.java:434)
	at org.eclipse.jdt.internal.compiler.ClassFile.addFieldInfos(ClassFile.java:579)
	at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:694)
	at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:762)
	at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:709)
	at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:770)
	at
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.generateCode(CompilationUnitDeclaration.java:158)
	at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:591)
	at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:204)
	at
org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:90)
	at
org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(CompilationUnit.java:664)
	at org.eclipse.jdt.internal.core.WorkingCopy.reconcile(WorkingCopy.java:446)
	at org.eclipse.jdt.internal.core.WorkingCopy.reconcile(WorkingCopy.java:421)
	at
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.doSaveDocument(CompilationUnitDocumentProvider.java:903)
	at
org.eclipse.ui.texteditor.AbstractDocumentProvider.saveDocument(AbstractDocumentProvider.java:454)
	at
org.eclipse.ui.texteditor.AbstractTextEditor$11.execute(AbstractTextEditor.java:2772)
	at
org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:65)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1564)
	at
org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:79)
	at
org.eclipse.ui.texteditor.AbstractTextEditor.performSaveOperation(AbstractTextEditor.java:2790)
	at
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSaveOperation(CompilationUnitEditor.java:849)
	at
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave(CompilationUnitEditor.java:913)
	at org.eclipse.ui.internal.EditorManager$11.run(EditorManager.java:1032)
	at org.eclipse.ui.internal.EditorManager$8.run(EditorManager.java:901)
	at
org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:296)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:246)
	at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:432)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:65)
	at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:429)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:1174)
	at
org.eclipse.ui.internal.EditorManager.runProgressMonitorOperation(EditorManager.java:907)
	at org.eclipse.ui.internal.EditorManager.saveEditor(EditorManager.java:1037)
	at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:2143)
	at org.eclipse.ui.internal.SaveAction.run(SaveAction.java:30)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:769)
	at
org.eclipse.ui.internal.WWinKeyBindingService.invoke(WWinKeyBindingService.java:139)
	at
org.eclipse.ui.internal.WWinKeyBindingService.pressed(WWinKeyBindingService.java:120)
	at
org.eclipse.ui.internal.WWinKeyBindingService$6.widgetSelected(WWinKeyBindingService.java:376)
	at org.eclipse.ui.internal.AcceleratorMenu$2.handleEvent(AcceleratorMenu.java:55)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:77)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:868)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1456)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1278)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1446)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:1429)
	at
org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:845)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:462)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:247)
	at org.eclipse.core.launcher.Main.run(Main.java:703)
	at org.eclipse.core.launcher.Main.main(Main.java:539)
Comment 1 Kent Johnson CLA 2003-01-06 10:43:14 EST

*** This bug has been marked as a duplicate of 28750 ***