From 3ec82a67caa915e73a8a9d3d27de65ff67cb4f7d Mon Sep 17 00:00:00 2001 From: John Camelon Date: Tue, 5 Jul 2005 18:41:09 +0000 Subject: [PATCH] Patch for Robert O'Callahan (robert@ocallahan.org) Partial fix for 102602 pre-#included files aren't built by quick parser --- .../cdt/internal/core/model/CModelBuilder.java | 9 ++++++--- .../cdt/core/parser/ExtendedScannerInfo.java | 16 +++++++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java index 131281bf86d..ecf71fd8dfe 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.IParent; import org.eclipse.cdt.core.model.IProblemRequestor; import org.eclipse.cdt.core.parser.CodeReader; +import org.eclipse.cdt.core.parser.ExtendedScannerInfo; import org.eclipse.cdt.core.parser.IParser; import org.eclipse.cdt.core.parser.IProblem; import org.eclipse.cdt.core.parser.IQuickParseCallback; @@ -31,7 +32,6 @@ import org.eclipse.cdt.core.parser.ParserFactoryError; import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserMode; import org.eclipse.cdt.core.parser.ParserUtil; -import org.eclipse.cdt.core.parser.ScannerInfo; import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException; import org.eclipse.cdt.core.parser.ast.ASTUtil; @@ -142,7 +142,7 @@ public class CModelBuilder { // create the parser IParser parser = null; try { - IScannerInfo scanInfo = new ScannerInfo(); + IScannerInfo scanInfo = null; IScannerInfoProvider provider = CCorePlugin.getDefault().getScannerInfoProvider(currentProject); if (provider != null){ IScannerInfo buildScanInfo = null; @@ -156,9 +156,12 @@ public class CModelBuilder { buildScanInfo = provider.getScannerInformation(currentProject); } if (buildScanInfo != null){ - scanInfo = new ScannerInfo(buildScanInfo.getDefinedSymbols(), buildScanInfo.getIncludePaths()); + scanInfo = new ExtendedScannerInfo(buildScanInfo); } } + if (scanInfo == null) { + scanInfo = new ExtendedScannerInfo(); + } CodeReader reader = translationUnit.getUnderlyingResource() != null diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ExtendedScannerInfo.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ExtendedScannerInfo.java index ace98de5184..e82e101255d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ExtendedScannerInfo.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ExtendedScannerInfo.java @@ -19,7 +19,7 @@ import java.util.Map; public class ExtendedScannerInfo extends ScannerInfo implements IExtendedScannerInfo { private static final String [] EMPTY_STRING_ARRAY = new String[ 0 ]; - private String [] m, i; + private String [] m, i, localIncludePaths; public ExtendedScannerInfo() { @@ -37,7 +37,16 @@ public class ExtendedScannerInfo extends ScannerInfo implements IExtendedScanner i = includes; } - + public ExtendedScannerInfo( IScannerInfo info ) + { + super(info.getDefinedSymbols(), info.getIncludePaths()); + if (info instanceof IExtendedScannerInfo) { + IExtendedScannerInfo einfo = (IExtendedScannerInfo)info; + m = einfo.getMacroFiles(); + i = einfo.getIncludeFiles(); + localIncludePaths = einfo.getLocalIncludePath(); + } + } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.IExtendedScannerInfo#getMacroFiles() @@ -59,6 +68,7 @@ public class ExtendedScannerInfo extends ScannerInfo implements IExtendedScanner * @see org.eclipse.cdt.core.parser.IExtendedScannerInfo#getLocalIncludePath() */ public String[] getLocalIncludePath() { - return EMPTY_STRING_ARRAY; //TODO add impl + if ( localIncludePaths == null ) return EMPTY_STRING_ARRAY; + return localIncludePaths; } }