Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 393620

Summary: NullPointerException in ASTCommenter
Product: [Tools] CDT Reporter: David Pickens <pickensd>
Component: cdt-indexerAssignee: Project Inbox <cdt-indexer-inbox>
Status: CLOSED DUPLICATE QA Contact: Markus Schorn <mschorn.eclipse>
Severity: normal    
Priority: P3 CC: cdtdoug, dale_schaafsma, malaperle, yevshif
Version: 8.1.1   
Target Milestone: ---   
Hardware: PC   
OS: Linux-GTK   
Whiteboard:

Description David Pickens CLA 2012-11-05 19:21:25 EST
I get this error repeatedly when indexing the LLVM source code. Subsequently, C++ code completion doesn't work.

Running CDT 8.1.1 under Eclipse 4.2.1.

java.lang.NullPointerException
	at org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter$PreprocessorRangeChecker.isCommentOnSameLine(ASTCommenter.java:86)
	at org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter$PreprocessorRangeChecker.checkOffsets(ASTCommenter.java:70)
	at org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter$PreprocessorRangeChecker.visit(ASTCommenter.java:141)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.accept(CPPASTName.java:171)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNamespaceDefinition.accept(CPPASTNamespaceDefinition.java:134)
	at org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit.accept(ASTTranslationUnit.java:251)
	at org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter.isCommentDirectlyBeforePreprocessorStatement(ASTCommenter.java:217)
	at org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter.assignPreprocessorComments(ASTCommenter.java:268)
	at org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter.addCommentsToCommentMap(ASTCommenter.java:232)
	at org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter.getCommentedNodeMap(ASTCommenter.java:191)
	at org.eclipse.cdt.codan.core.cxx.model.CxxModelsCache.getCommentedNodeMap(CxxModelsCache.java:111)
	at org.eclipse.cdt.codan.core.cxx.model.CxxModelsCache.getCommentedNodeMap(CxxModelsCache.java:100)
	at org.eclipse.cdt.codan.core.cxx.model.AbstractIndexAstChecker.getCommentMap(AbstractIndexAstChecker.java:186)
	at org.eclipse.cdt.codan.internal.checkers.CaseBreakChecker.getLeadingComment(CaseBreakChecker.java:205)
	at org.eclipse.cdt.codan.internal.checkers.CaseBreakChecker$SwitchFindingVisitor.visit(CaseBreakChecker.java:108)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSwitchStatement.accept(CPPASTSwitchStatement.java:98)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompoundStatement.accept(CPPASTCompoundStatement.java:85)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDefinition.accept(CPPASTFunctionDefinition.java:201)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompositeTypeSpecifier.accept(CPPASTCompositeTypeSpecifier.java:193)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclaration.accept(CPPASTSimpleDeclaration.java:102)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNamespaceDefinition.accept(CPPASTNamespaceDefinition.java:139)
	at org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit.accept(ASTTranslationUnit.java:251)
	at org.eclipse.cdt.codan.internal.checkers.CaseBreakChecker.processAst(CaseBreakChecker.java:231)
	at org.eclipse.cdt.codan.core.cxx.model.AbstractIndexAstChecker.processModel(AbstractIndexAstChecker.java:111)
	at org.eclipse.cdt.codan.internal.core.CodanRunner.processResource(CodanRunner.java:103)
	at org.eclipse.cdt.codan.internal.core.CodanRunner.runInEditor(CodanRunner.java:57)
	at org.eclipse.cdt.codan.core.cxx.internal.model.CxxCodanReconciler.reconciledAst(CxxCodanReconciler.java:36)
	at org.eclipse.cdt.codan.internal.ui.cxx.CodanCReconciler.reconciled(CodanCReconciler.java:57)
	at org.eclipse.cdt.internal.ui.editor.CEditor.reconciled(CEditor.java:3219)
	at org.eclipse.cdt.internal.ui.text.CReconcilingStrategy.reconcile(CReconcilingStrategy.java:112)
	at org.eclipse.cdt.internal.ui.text.CReconcilingStrategy.reconcile(CReconcilingStrategy.java:77)
	at org.eclipse.cdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:87)
	at org.eclipse.cdt.internal.ui.text.CCompositeReconcilingStrategy.reconcile(CCompositeReconcilingStrategy.java:90)
	at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:77)
	at org.eclipse.cdt.internal.ui.text.CReconciler.process(CReconciler.java:358)
	at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:206)
Comment 1 Marc-André Laperle CLA 2012-11-07 00:33:55 EST
Here's some sample code that triggers the exception with latest master:

namespace {
// Comment
#define BAR
}

void foo() {
  int a;
  switch (a) {
  case 0:
  case 1:
    ;
  }
}
Comment 2 Marc-André Laperle CLA 2013-04-10 21:13:13 EDT
*** Bug 403128 has been marked as a duplicate of this bug. ***
Comment 3 Marc-André Laperle CLA 2013-05-14 10:15:10 EDT

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