From 7e12b4472527fa21e7ae73dc32c3e4836604bd33 Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Wed, 9 May 2007 10:20:49 +0000 Subject: [PATCH] Fix for 179671: [Editor] Avoid duplicate parsing when opening a file Fixes also bug 185709: [Editor] Empty outline when editor is reused --- .../internal/core/model/CModelBuilder2.java | 35 +++++-------------- .../ui/text/CSourceViewerConfiguration.java | 8 +++++ 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java index 33575a21c54..cb21266b05e 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java @@ -90,21 +90,6 @@ import org.eclipse.core.runtime.OperationCanceledException; */ public class CModelBuilder2 implements IContributedModelBuilder { - private static final boolean PRINT_PROBLEMS= false; - - private static class ProblemPrinter implements IProblemRequestor { - public void acceptProblem(IProblem problem) { - System.err.println("PROBLEM: " + problem.getMessage()); //$NON-NLS-1$ - } - public void beginReporting() { - } - public void endReporting() { - } - public boolean isActive() { - return true; - } - } - /** * Adapts {@link IASTProblem} to {@link IProblem). */ @@ -249,14 +234,11 @@ public class CModelBuilder2 implements IContributedModelBuilder { + " time="+ ( System.currentTimeMillis() - startTime ) + "ms", //$NON-NLS-1$ //$NON-NLS-2$ IDebugLogConstants.MODEL, false); - if (elementInfo instanceof ASTHolderTUInfo) { - ((ASTHolderTUInfo)elementInfo).fAST= ast; - } - - checkCanceled(); if (ast == null) { return; } + + checkCanceled(); startTime= System.currentTimeMillis(); buildModel(ast); elementInfo.setIsStructureKnown(true); @@ -264,6 +246,12 @@ public class CModelBuilder2 implements IContributedModelBuilder { +"children="+ fTranslationUnit.getElementInfo().internalGetChildren().size() //$NON-NLS-1$ +" time="+ (System.currentTimeMillis() - startTime) + "ms", //$NON-NLS-1$ //$NON-NLS-2$ IDebugLogConstants.MODEL, false); + + if (elementInfo instanceof ASTHolderTUInfo) { + ((ASTHolderTUInfo)elementInfo).fAST= ast; + // preserve index lock for AST receiver + index= null; + } } finally { if (index != null) { index.releaseReadLock(); @@ -340,9 +328,6 @@ public class CModelBuilder2 implements IContributedModelBuilder { // report problems IProblemRequestor problemRequestor= fTranslationUnit.getProblemRequestor(); - if (problemRequestor == null && PRINT_PROBLEMS) { - problemRequestor= new ProblemPrinter(); - } if (problemRequestor != null && problemRequestor.isActive()) { problemRequestor.beginReporting(); final IASTProblem[] ppProblems= ast.getPreprocessorProblems(); @@ -351,8 +336,6 @@ public class CModelBuilder2 implements IContributedModelBuilder { IASTProblem problem= problems[i]; if (isLocalToFile(problem)) { problemRequestor.acceptProblem(new ProblemAdapter(problem)); - } else if (PRINT_PROBLEMS) { - System.err.println("PREPROCESSOR PROBLEM: " + problem.getMessage()); //$NON-NLS-1$ } } problems= CPPVisitor.getProblems(ast); @@ -360,8 +343,6 @@ public class CModelBuilder2 implements IContributedModelBuilder { IASTProblem problem= problems[i]; if (isLocalToFile(problem)) { problemRequestor.acceptProblem(new ProblemAdapter(problem)); - } else if (PRINT_PROBLEMS) { - System.err.println("PROBLEM: " + problem.getMessage()); //$NON-NLS-1$ } } problemRequestor.endReporting(); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CSourceViewerConfiguration.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CSourceViewerConfiguration.java index f6a47df8546..1dd0827933c 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CSourceViewerConfiguration.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CSourceViewerConfiguration.java @@ -830,4 +830,12 @@ public class CSourceViewerConfiguration extends TextSourceViewerConfiguration { // fallback return GPPLanguage.getDefault(); } + + /** + * Reset cached language dependent scanners. + */ + public void resetScanners() { + fCodeScanner= null; + fPreprocessorScanner= null; + } }