1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Bug 367316: Relative includes when parsing in context.

This commit is contained in:
Markus Schorn 2012-01-02 13:37:14 +01:00
parent 10372e2841
commit 1b67403176
3 changed files with 23 additions and 3 deletions

View file

@ -295,4 +295,14 @@ public final class IndexBasedFileContentProvider extends InternalFileContentProv
}
return IIndexFile.EMPTY_FILE_ARRAY;
}
@Override
public String getContextPath() {
if (fContextToHeaderGap != null)
try {
return fPathResolver.getASTPath(fContextToHeaderGap[0].getLocation());
} catch (CoreException e) {
}
return null;
}
}

View file

@ -297,11 +297,14 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable {
fMacroExpander= new MacroExpander(this, fMacroDictionary, fLocationMap, fLexOptions);
fIncludeFileResolutionHeuristics= fFileContentProvider.getIncludeHeuristics();
final String filePath= fRootContent.getFileLocation();
configureIncludeSearchPath(new File(filePath).getParentFile(), info);
String contextPath= fFileContentProvider.getContextPath();
if (contextPath == null) {
contextPath= fRootContent.getFileLocation();
}
configureIncludeSearchPath(new File(contextPath).getParentFile(), info);
setupMacroDictionary(configuration, info, language);
ILocationCtx ctx= fLocationMap.pushTranslationUnit(filePath, fRootContent.getSource());
ILocationCtx ctx= fLocationMap.pushTranslationUnit(fRootContent.getFileLocation(), fRootContent.getSource());
Lexer lexer = new Lexer(fRootContent.getSource(), fLexOptions, this, this);
fRootContext= fCurrentContext= new ScannerContext(ctx, null, lexer);
if (info instanceof IExtendedScannerInfo) {

View file

@ -134,5 +134,12 @@ public abstract class InternalFileContentProvider extends IncludeFileContentProv
}
list.add(sig);
}
}
/**
* Return the path of the context of <code>null</code>, if there is no context.
*/
public String getContextPath() {
return null;
}
}