1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-09-03 13:43:31 +02:00

Fix for 179671: [Editor] Avoid duplicate parsing when opening a file

Fixes also bug 185709: [Editor] Empty outline when editor is reused
This commit is contained in:
Anton Leherbauer 2007-05-09 10:20:49 +00:00
parent 098117e25d
commit 7e12b44725
2 changed files with 16 additions and 27 deletions

View file

@ -90,21 +90,6 @@ import org.eclipse.core.runtime.OperationCanceledException;
*/ */
public class CModelBuilder2 implements IContributedModelBuilder { 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). * 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$ + " time="+ ( System.currentTimeMillis() - startTime ) + "ms", //$NON-NLS-1$ //$NON-NLS-2$
IDebugLogConstants.MODEL, false); IDebugLogConstants.MODEL, false);
if (elementInfo instanceof ASTHolderTUInfo) {
((ASTHolderTUInfo)elementInfo).fAST= ast;
}
checkCanceled();
if (ast == null) { if (ast == null) {
return; return;
} }
checkCanceled();
startTime= System.currentTimeMillis(); startTime= System.currentTimeMillis();
buildModel(ast); buildModel(ast);
elementInfo.setIsStructureKnown(true); elementInfo.setIsStructureKnown(true);
@ -264,6 +246,12 @@ public class CModelBuilder2 implements IContributedModelBuilder {
+"children="+ fTranslationUnit.getElementInfo().internalGetChildren().size() //$NON-NLS-1$ +"children="+ fTranslationUnit.getElementInfo().internalGetChildren().size() //$NON-NLS-1$
+" time="+ (System.currentTimeMillis() - startTime) + "ms", //$NON-NLS-1$ //$NON-NLS-2$ +" time="+ (System.currentTimeMillis() - startTime) + "ms", //$NON-NLS-1$ //$NON-NLS-2$
IDebugLogConstants.MODEL, false); IDebugLogConstants.MODEL, false);
if (elementInfo instanceof ASTHolderTUInfo) {
((ASTHolderTUInfo)elementInfo).fAST= ast;
// preserve index lock for AST receiver
index= null;
}
} finally { } finally {
if (index != null) { if (index != null) {
index.releaseReadLock(); index.releaseReadLock();
@ -340,9 +328,6 @@ public class CModelBuilder2 implements IContributedModelBuilder {
// report problems // report problems
IProblemRequestor problemRequestor= fTranslationUnit.getProblemRequestor(); IProblemRequestor problemRequestor= fTranslationUnit.getProblemRequestor();
if (problemRequestor == null && PRINT_PROBLEMS) {
problemRequestor= new ProblemPrinter();
}
if (problemRequestor != null && problemRequestor.isActive()) { if (problemRequestor != null && problemRequestor.isActive()) {
problemRequestor.beginReporting(); problemRequestor.beginReporting();
final IASTProblem[] ppProblems= ast.getPreprocessorProblems(); final IASTProblem[] ppProblems= ast.getPreprocessorProblems();
@ -351,8 +336,6 @@ public class CModelBuilder2 implements IContributedModelBuilder {
IASTProblem problem= problems[i]; IASTProblem problem= problems[i];
if (isLocalToFile(problem)) { if (isLocalToFile(problem)) {
problemRequestor.acceptProblem(new ProblemAdapter(problem)); problemRequestor.acceptProblem(new ProblemAdapter(problem));
} else if (PRINT_PROBLEMS) {
System.err.println("PREPROCESSOR PROBLEM: " + problem.getMessage()); //$NON-NLS-1$
} }
} }
problems= CPPVisitor.getProblems(ast); problems= CPPVisitor.getProblems(ast);
@ -360,8 +343,6 @@ public class CModelBuilder2 implements IContributedModelBuilder {
IASTProblem problem= problems[i]; IASTProblem problem= problems[i];
if (isLocalToFile(problem)) { if (isLocalToFile(problem)) {
problemRequestor.acceptProblem(new ProblemAdapter(problem)); problemRequestor.acceptProblem(new ProblemAdapter(problem));
} else if (PRINT_PROBLEMS) {
System.err.println("PROBLEM: " + problem.getMessage()); //$NON-NLS-1$
} }
} }
problemRequestor.endReporting(); problemRequestor.endReporting();

View file

@ -830,4 +830,12 @@ public class CSourceViewerConfiguration extends TextSourceViewerConfiguration {
// fallback // fallback
return GPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
/**
* Reset cached language dependent scanners.
*/
public void resetScanners() {
fCodeScanner= null;
fPreprocessorScanner= null;
}
} }