mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-01 21:35:40 +02:00
242403 - applied patch to solve ClassCastException
This commit is contained in:
parent
2b7f9a4f65
commit
eff3096b28
3 changed files with 52 additions and 20 deletions
|
@ -15,10 +15,12 @@ import org.eclipse.cdt.core.settings.model.extension.CLanguageData;
|
||||||
import org.eclipse.cdt.core.settings.model.extension.CResourceData;
|
import org.eclipse.cdt.core.settings.model.extension.CResourceData;
|
||||||
import org.eclipse.cdt.managedbuilder.core.BuildException;
|
import org.eclipse.cdt.managedbuilder.core.BuildException;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
|
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.IFolderInfo;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
|
import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IOption;
|
import org.eclipse.cdt.managedbuilder.core.IOption;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
|
import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
|
||||||
import org.eclipse.cdt.managedbuilder.core.ITool;
|
import org.eclipse.cdt.managedbuilder.core.ITool;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.IToolChain;
|
||||||
import org.eclipse.cdt.managedbuilder.core.OptionStringValue;
|
import org.eclipse.cdt.managedbuilder.core.OptionStringValue;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.PluginVersionIdentifier;
|
import org.eclipse.core.runtime.PluginVersionIdentifier;
|
||||||
|
@ -228,25 +230,33 @@ public abstract class MultiResourceInfo extends MultiItemsHolder implements
|
||||||
|
|
||||||
String sid = getSuperClassId(option);
|
String sid = getSuperClassId(option);
|
||||||
for (int i=0; i<fRis.length; i++) {
|
for (int i=0; i<fRis.length; i++) {
|
||||||
ITool[] ts = fRis[i].getTools();
|
IHoldsOptions[] hos;
|
||||||
for (int j=0; j<ts.length; j++) {
|
if (parent instanceof ITool)
|
||||||
|
hos = fRis[i].getTools();
|
||||||
|
else if (parent instanceof IToolChain)
|
||||||
|
// If parent is an IToolChain then the resource infos must be at folder level
|
||||||
|
hos = new IHoldsOptions[] {((IFolderInfo)fRis[i]).getToolChain()};
|
||||||
|
else // Shouldn't happen
|
||||||
|
throw new BuildException(ManagedMakeMessages.getString("MultiResourceInfo.MultiResourceInfo.UnhandledIHoldsOptionsType")); //$NON-NLS-1$
|
||||||
|
|
||||||
|
for (int j=0; j<hos.length; j++) {
|
||||||
if (ext != null &&
|
if (ext != null &&
|
||||||
! ext.equals(ts[j].getDefaultInputExtension()))
|
! ext.equals(((ITool)hos[j]).getDefaultInputExtension()))
|
||||||
continue;
|
continue;
|
||||||
IOption op2 = ts[j].getOptionBySuperClassId(sid);
|
IOption op2 = hos[j].getOptionBySuperClassId(sid);
|
||||||
if (op2 != null) {
|
if (op2 != null) {
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case MODE_BOOL:
|
case MODE_BOOL:
|
||||||
op = fRis[i].setOption(ts[j], op2, ((Boolean)value).booleanValue());
|
op = fRis[i].setOption(hos[j], op2, ((Boolean)value).booleanValue());
|
||||||
break;
|
break;
|
||||||
case MODE_STR:
|
case MODE_STR:
|
||||||
op = fRis[i].setOption(ts[j], op2, (String)value);
|
op = fRis[i].setOption(hos[j], op2, (String)value);
|
||||||
break;
|
break;
|
||||||
case MODE_SAR:
|
case MODE_SAR:
|
||||||
op = fRis[i].setOption(ts[j], op2, (String[])value);
|
op = fRis[i].setOption(hos[j], op2, (String[])value);
|
||||||
break;
|
break;
|
||||||
case MODE_OSV:
|
case MODE_OSV:
|
||||||
op = fRis[i].setOption(ts[j], op2, (OptionStringValue[])value);
|
op = fRis[i].setOption(hos[j], op2, (OptionStringValue[])value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,6 +159,7 @@ CommonBuilder.22=Building referenced configurations..
|
||||||
CommonBuilder.23=Buildfile generation error occurred..
|
CommonBuilder.23=Buildfile generation error occurred..
|
||||||
CommonBuilder.24=Build stopped..
|
CommonBuilder.24=Build stopped..
|
||||||
MakeBuilder.buildError=
|
MakeBuilder.buildError=
|
||||||
|
MultiResourceInfo.MultiResourceInfo.UnhandledIHoldsOptionsType=Unhandled parent type: not ITool nor IToolChain
|
||||||
ResourceChangeHandler2.0=project build settings update job
|
ResourceChangeHandler2.0=project build settings update job
|
||||||
ToolInfo.0=conversion failure
|
ToolInfo.0=conversion failure
|
||||||
ToolInfo.1=the tool is removed
|
ToolInfo.1=the tool is removed
|
||||||
|
|
|
@ -30,6 +30,7 @@ import org.eclipse.cdt.managedbuilder.core.IOptionApplicability;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
|
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
|
import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
|
||||||
import org.eclipse.cdt.managedbuilder.core.ITool;
|
import org.eclipse.cdt.managedbuilder.core.ITool;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.IToolChain;
|
||||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||||
import org.eclipse.cdt.managedbuilder.internal.core.MultiResourceInfo;
|
import org.eclipse.cdt.managedbuilder.internal.core.MultiResourceInfo;
|
||||||
import org.eclipse.cdt.ui.newui.AbstractCPropertyTab;
|
import org.eclipse.cdt.ui.newui.AbstractCPropertyTab;
|
||||||
|
@ -53,8 +54,10 @@ public class BuildOptionSettingsUI extends AbstractToolSettingUI {
|
||||||
new HashMap<String, FieldEditor>();
|
new HashMap<String, FieldEditor>();
|
||||||
private IOptionCategory category;
|
private IOptionCategory category;
|
||||||
private IHoldsOptions optionHolder;
|
private IHoldsOptions optionHolder;
|
||||||
|
/** Option Holders involved */
|
||||||
private IHoldsOptions[] ohs;
|
private IHoldsOptions[] ohs;
|
||||||
private int curr;
|
/** The index of the current IHoldsOptions in ohs */
|
||||||
|
private int curr = -1;
|
||||||
private Map<FieldEditor, Composite> fieldEditorsToParentMap =
|
private Map<FieldEditor, Composite> fieldEditorsToParentMap =
|
||||||
new HashMap<FieldEditor, Composite>();
|
new HashMap<FieldEditor, Composite>();
|
||||||
|
|
||||||
|
@ -69,25 +72,43 @@ public class BuildOptionSettingsUI extends AbstractToolSettingUI {
|
||||||
MultiResourceInfo mri = (MultiResourceInfo)info;
|
MultiResourceInfo mri = (MultiResourceInfo)info;
|
||||||
IResourceInfo[] ris = (IResourceInfo[])mri.getItems();
|
IResourceInfo[] ris = (IResourceInfo[])mri.getItems();
|
||||||
String id = category.getId();
|
String id = category.getId();
|
||||||
String ext = ((ITool)optionHolder).getDefaultInputExtension();
|
|
||||||
ArrayList<ITool> lst = new ArrayList<ITool>();
|
/*
|
||||||
for (int i=0; i<ris.length; i++) {
|
* Collect together all the IHoldsOptions (ITools & IToolChains)
|
||||||
ITool[] ts = ris[i].getTools();
|
* from the MultiResourceInfo's set of selected configs
|
||||||
for (int j=0; j<ts.length; j++) {
|
* which contain the option category and accept the input type
|
||||||
IOptionCategory op = ts[j].getOptionCategory(id);
|
* of this option holder.
|
||||||
if (op != null) {
|
*/
|
||||||
if (ext.equals(ts[j].getDefaultInputExtension()))
|
ArrayList<IHoldsOptions> lst = new ArrayList<IHoldsOptions>();
|
||||||
lst.add(ts[j]);
|
if (optionHolder instanceof ITool) {
|
||||||
|
String ext = ((ITool)optionHolder).getDefaultInputExtension();
|
||||||
|
for (int i=0; i<ris.length; i++) {
|
||||||
|
ITool[] ts = ris[i].getTools();
|
||||||
|
for (int j=0; j<ts.length; j++) {
|
||||||
|
IOptionCategory op = ts[j].getOptionCategory(id);
|
||||||
|
if (op != null) {
|
||||||
|
if (ext.equals(ts[j].getDefaultInputExtension())) {
|
||||||
|
lst.add(ts[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (optionHolder instanceof IToolChain) {
|
||||||
|
for (int i=0; i<ris.length; i++) {
|
||||||
|
IToolChain tc = ris[i].getParent().getToolChain();
|
||||||
|
IOptionCategory op = tc.getOptionCategory(id);
|
||||||
|
if (op != null)
|
||||||
|
lst.add(tc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ohs = (IHoldsOptions[])lst.toArray(new IHoldsOptions[lst.size()]);
|
ohs = (IHoldsOptions[])lst.toArray(new IHoldsOptions[lst.size()]);
|
||||||
for (int i=0; i<ohs.length; i++) {
|
for (int i=0; i<ohs.length; i++) {
|
||||||
if (ohs[i].equals(optionHolder)) {
|
if (ohs[i].equals(optionHolder)) {
|
||||||
curr = i;
|
curr = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ohs = null;
|
ohs = null;
|
||||||
curr = 0;
|
curr = 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue