mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
bug 385678: Juno Indexer cannot find headers in workspace folders that
Indigo did find
This commit is contained in:
parent
03af322a6f
commit
5bd41e38ba
2 changed files with 25 additions and 10 deletions
|
@ -458,6 +458,10 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
|
||||||
// "relative" should make no difference for VALUE_WORKSPACE_PATH
|
// "relative" should make no difference for VALUE_WORKSPACE_PATH
|
||||||
IPath incWorkspaceRelativePath_3 = incWorkspace_3.getFullPath().makeRelative();
|
IPath incWorkspaceRelativePath_3 = incWorkspace_3.getFullPath().makeRelative();
|
||||||
IPath incWorkspaceLocation_3 = incWorkspace_3.getLocation();
|
IPath incWorkspaceLocation_3 = incWorkspace_3.getLocation();
|
||||||
|
// not having "RESOLVED" should make no difference for well formed path
|
||||||
|
IFolder incWorkspace_4 = ResourceHelper.createFolder(project, "include_4");
|
||||||
|
IPath incWorkspacePathNoResolved_4 = incWorkspace_4.getFullPath();
|
||||||
|
IPath incWorkspaceLocation_4 = incWorkspace_4.getLocation();
|
||||||
// folder defined by absolute path on the filesystem
|
// folder defined by absolute path on the filesystem
|
||||||
IPath incFilesystem = ResourceHelper.createWorkspaceFolder("includeFilesystem");
|
IPath incFilesystem = ResourceHelper.createWorkspaceFolder("includeFilesystem");
|
||||||
|
|
||||||
|
@ -465,12 +469,14 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
|
||||||
CIncludePathEntry incWorkspaceEntry_1 = new CIncludePathEntry(incWorkspace_1, 0);
|
CIncludePathEntry incWorkspaceEntry_1 = new CIncludePathEntry(incWorkspace_1, 0);
|
||||||
CIncludePathEntry incWorkspaceEntry_2 = new CIncludePathEntry(incWorkspacePath_2, ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED);
|
CIncludePathEntry incWorkspaceEntry_2 = new CIncludePathEntry(incWorkspacePath_2, ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED);
|
||||||
CIncludePathEntry incWorkspaceEntry_3 = new CIncludePathEntry(incWorkspaceRelativePath_3, ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED);
|
CIncludePathEntry incWorkspaceEntry_3 = new CIncludePathEntry(incWorkspaceRelativePath_3, ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED);
|
||||||
|
CIncludePathEntry incWorkspaceEntry_4 = new CIncludePathEntry(incWorkspacePathNoResolved_4, ICSettingEntry.VALUE_WORKSPACE_PATH);
|
||||||
CIncludePathEntry incFilesystemEntry = new CIncludePathEntry(incFilesystem, 0);
|
CIncludePathEntry incFilesystemEntry = new CIncludePathEntry(incFilesystem, 0);
|
||||||
|
|
||||||
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
||||||
entries.add(incWorkspaceEntry_1);
|
entries.add(incWorkspaceEntry_1);
|
||||||
entries.add(incWorkspaceEntry_2);
|
entries.add(incWorkspaceEntry_2);
|
||||||
entries.add(incWorkspaceEntry_3);
|
entries.add(incWorkspaceEntry_3);
|
||||||
|
entries.add(incWorkspaceEntry_4);
|
||||||
entries.add(incFilesystemEntry);
|
entries.add(incFilesystemEntry);
|
||||||
|
|
||||||
// add provider to the configuration
|
// add provider to the configuration
|
||||||
|
@ -490,8 +496,9 @@ public class LanguageSettingsScannerInfoProviderTests extends BaseTestCase {
|
||||||
assertEquals(incWorkspaceLocation_1, new Path(actualIncludePaths[0]));
|
assertEquals(incWorkspaceLocation_1, new Path(actualIncludePaths[0]));
|
||||||
assertEquals(incWorkspaceLocation_2, new Path(actualIncludePaths[1]));
|
assertEquals(incWorkspaceLocation_2, new Path(actualIncludePaths[1]));
|
||||||
assertEquals(incWorkspaceLocation_3, new Path(actualIncludePaths[2]));
|
assertEquals(incWorkspaceLocation_3, new Path(actualIncludePaths[2]));
|
||||||
assertEquals(incFilesystem, new Path(actualIncludePaths[3]));
|
assertEquals(incWorkspaceLocation_4, new Path(actualIncludePaths[3]));
|
||||||
assertEquals(4, actualIncludePaths.length);
|
assertEquals(incFilesystem, new Path(actualIncludePaths[4]));
|
||||||
|
assertEquals(5, actualIncludePaths.length);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
|
||||||
import org.eclipse.cdt.core.settings.model.ICMacroEntry;
|
import org.eclipse.cdt.core.settings.model.ICMacroEntry;
|
||||||
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
|
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
|
||||||
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
|
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
|
||||||
|
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
|
||||||
import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager;
|
import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager;
|
||||||
import org.eclipse.cdt.internal.core.settings.model.SettingsModelMessages;
|
import org.eclipse.cdt.internal.core.settings.model.SettingsModelMessages;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
|
@ -221,9 +222,15 @@ public class LanguageSettingsScannerInfoProvider implements IScannerInfoProvider
|
||||||
for (ICLanguageSettingEntry entry : entriesPath) {
|
for (ICLanguageSettingEntry entry : entriesPath) {
|
||||||
ACPathEntry entryPath = (ACPathEntry)entry;
|
ACPathEntry entryPath = (ACPathEntry)entry;
|
||||||
if (entryPath.isValueWorkspacePath()) {
|
if (entryPath.isValueWorkspacePath()) {
|
||||||
IPath loc = entryPath.getLocation();
|
ICLanguageSettingEntry[] entries = new ICLanguageSettingEntry[] {entry};
|
||||||
|
if (!entry.isResolved()) {
|
||||||
|
entries = CDataUtil.resolveEntries(entries, cfgDescription);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ICLanguageSettingEntry resolved : entries) {
|
||||||
|
IPath loc = ((ACPathEntry) resolved).getLocation();
|
||||||
if (loc != null) {
|
if (loc != null) {
|
||||||
if (checkBit(entryPath.getFlags(), ICSettingEntry.FRAMEWORKS_MAC)) {
|
if (checkBit(resolved.getFlags(), ICSettingEntry.FRAMEWORKS_MAC)) {
|
||||||
// handle frameworks, see IScannerInfo.getIncludePaths()
|
// handle frameworks, see IScannerInfo.getIncludePaths()
|
||||||
locations.add(loc.append(FRAMEWORK_HEADERS_INCLUDE).toOSString());
|
locations.add(loc.append(FRAMEWORK_HEADERS_INCLUDE).toOSString());
|
||||||
locations.add(loc.append(FRAMEWORK_PRIVATE_HEADERS_INCLUDE).toOSString());
|
locations.add(loc.append(FRAMEWORK_PRIVATE_HEADERS_INCLUDE).toOSString());
|
||||||
|
@ -231,6 +238,7 @@ public class LanguageSettingsScannerInfoProvider implements IScannerInfoProvider
|
||||||
locations.add(loc.toOSString());
|
locations.add(loc.toOSString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
String locStr = entryPath.getName();
|
String locStr = entryPath.getName();
|
||||||
if (entryPath.isResolved()) {
|
if (entryPath.isResolved()) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue