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

Merge branch 'master' into sd90

This commit is contained in:
Andrew Gvozdev 2011-09-10 10:48:38 -04:00
commit 3b616cdefa
36 changed files with 4110 additions and 4047 deletions

View file

@ -5466,4 +5466,19 @@ public class AST2TemplateTests extends AST2BaseTest {
ICPPTemplateInstance inst= bh.assertNonProblem("f() {", 1); ICPPTemplateInstance inst= bh.assertNonProblem("f() {", 1);
assertSame(template, inst.getTemplateDefinition()); assertSame(template, inst.getTemplateDefinition());
} }
// template<typename T1,typename T2> class A{};
// template<typename T1> class A<T1, int>{};
// template<typename T2> class A<int, T2>{};
// template<> class A<int, int>;
// A<int, int> fooA();
//
// template<typename T1,typename T2> class B{};
// template<typename T1> class B<T1, int>{};
// template<typename T2> class B<int, T2>{};
// template<> class B<int, int> {};
// A<int, int> fooB();
public void testExplicitSpecializationOfForbiddenAsImplicit_356818() throws Exception {
parseAndCheckBindings();
}
} }

View file

@ -15,7 +15,6 @@ import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IMacroBinding; import org.eclipse.cdt.core.dom.ast.IMacroBinding;
import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IScope;
import org.eclipse.core.runtime.CoreException;
final class TestMacro implements IMacroBinding { final class TestMacro implements IMacroBinding {
private String fName; private String fName;
@ -36,7 +35,7 @@ final class TestMacro implements IMacroBinding {
return fParams != null; return fParams != null;
} }
public ILinkage getLinkage() throws CoreException { public ILinkage getLinkage() {
return null; return null;
} }

View file

@ -18,6 +18,7 @@ import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTImplicitName;
import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.dom.ast.ICompositeType;
@ -1308,4 +1309,31 @@ public class IndexCPPBindingResolutionBugs extends IndexBindingResolutionTestBas
IFunction f= getBindingFromASTName("fun", 0); IFunction f= getBindingFromASTName("fun", 0);
ITypedef t= getBindingFromASTName("Type", 0); ITypedef t= getBindingFromASTName("Type", 0);
} }
// struct base {
// virtual void operator+(base const &) { }
// virtual void operator-(base const &) { }
// };
// #include "header.h"
// struct inter : public base {
// virtual void operator+(base const &){}
// };
// struct sub : public inter {
// void doSomething() {
// base *left, *right;
//
// *left + *right;
// *left - *right;
// }
// };
public void test_Bug356982() throws Exception {
IASTName name= findName("+ ", 1);
assertTrue(name instanceof IASTImplicitName);
assertEquals("base", name.resolveBinding().getOwner().getName());
name= findName("- ", 1);
assertTrue(name instanceof IASTImplicitName);
assertEquals("base", name.resolveBinding().getOwner().getName());
}
} }

View file

@ -1558,11 +1558,11 @@ public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBa
ICPPTemplateInstance inst= (ICPPTemplateInstance) t1; ICPPTemplateInstance inst= (ICPPTemplateInstance) t1;
final ICPPClassTemplate tmplDef = (ICPPClassTemplate) inst.getTemplateDefinition(); final ICPPClassTemplate tmplDef = (ICPPClassTemplate) inst.getTemplateDefinition();
IBinding inst2= CPPTemplates.instantiate(tmplDef, inst.getTemplateArguments(), false); IBinding inst2= CPPTemplates.instantiate(tmplDef, inst.getTemplateArguments());
assertSame(inst, inst2); assertSame(inst, inst2);
IBinding charInst1= CPPTemplates.instantiate(tmplDef, new ICPPTemplateArgument[] {new CPPTemplateArgument(new CPPBasicType(Kind.eChar, 0))}, false); IBinding charInst1= CPPTemplates.instantiate(tmplDef, new ICPPTemplateArgument[] {new CPPTemplateArgument(new CPPBasicType(Kind.eChar, 0))});
IBinding charInst2= CPPTemplates.instantiate(tmplDef, new ICPPTemplateArgument[] {new CPPTemplateArgument(new CPPBasicType(Kind.eChar, 0))}, false); IBinding charInst2= CPPTemplates.instantiate(tmplDef, new ICPPTemplateArgument[] {new CPPTemplateArgument(new CPPBasicType(Kind.eChar, 0))});
assertSame(charInst1, charInst2); assertSame(charInst1, charInst2);
} }

View file

@ -53,6 +53,7 @@ public class IndexCompositeTests extends BaseTestCase {
private static final int NONE = 0, REFS = IIndexManager.ADD_DEPENDENCIES; private static final int NONE = 0, REFS = IIndexManager.ADD_DEPENDENCIES;
private static final int REFD = IIndexManager.ADD_DEPENDENT, BOTH = REFS | REFD; private static final int REFD = IIndexManager.ADD_DEPENDENT, BOTH = REFS | REFD;
private static final IndexFilter FILTER= new IndexFilter() { private static final IndexFilter FILTER= new IndexFilter() {
@Override
public boolean acceptBinding(IBinding binding) throws CoreException { public boolean acceptBinding(IBinding binding) throws CoreException {
if (binding instanceof ICPPMethod) { if (binding instanceof ICPPMethod) {
return !((ICPPMethod) binding).isImplicit(); return !((ICPPMethod) binding).isImplicit();
@ -419,6 +420,7 @@ public class IndexCompositeTests extends BaseTestCase {
index.acquireReadLock(); index.acquireReadLock();
} }
@Override
protected void tearDown() throws Exception { protected void tearDown() throws Exception {
if (index != null) { if (index != null) {
index.releaseReadLock(); index.releaseReadLock();
@ -451,7 +453,7 @@ class ProjectBuilder {
return this; return this;
} }
ICProject create() throws CoreException { ICProject create() throws Exception {
ICProject result = cpp ? ICProject result = cpp ?
CProjectHelper.createCCProject(name, "bin", IPDOMManager.ID_NO_INDEXER) : CProjectHelper.createCCProject(name, "bin", IPDOMManager.ID_NO_INDEXER) :
CProjectHelper.createCCProject(name, "bin", IPDOMManager.ID_NO_INDEXER); CProjectHelper.createCCProject(name, "bin", IPDOMManager.ID_NO_INDEXER);
@ -466,7 +468,7 @@ class ProjectBuilder {
result.getProject().setDescription(desc, new NullProgressMonitor()); result.getProject().setDescription(desc, new NullProgressMonitor());
CCorePlugin.getIndexManager().setIndexerId(result, IPDOMManager.ID_FAST_INDEXER); CCorePlugin.getIndexManager().setIndexerId(result, IPDOMManager.ID_FAST_INDEXER);
CCorePlugin.getIndexManager().joinIndexer(4000, new NullProgressMonitor()); BaseTestCase.waitForIndexer(result);
return result; return result;
} }
} }

View file

@ -117,6 +117,15 @@ public class IndexUpdateTests extends IndexTestBase {
assertTrue(CCorePlugin.getIndexManager().joinIndexer(INDEXER_WAIT_TIME, npm())); assertTrue(CCorePlugin.getIndexManager().joinIndexer(INDEXER_WAIT_TIME, npm()));
} }
private void updateHeader() throws Exception {
// Append variable comment to the end of the file to change its contents.
// Indexer would not reindex the file if its contents remain the same.
IProject project= fHeader.getProject();
fHeader= TestSourceReader.createFile(project, "header.h",
fContents[++fContentUsed].toString() + "\n// " + fContentUsed);
TestSourceReader.waitUntilFileIsIndexed(fIndex, fHeader, INDEXER_WAIT_TIME);
}
private void setupFile(int totalFileVersions, boolean cpp) throws Exception { private void setupFile(int totalFileVersions, boolean cpp) throws Exception {
if (fContents == null) { if (fContents == null) {
fContents= getContentsForTest(totalFileVersions); fContents= getContentsForTest(totalFileVersions);
@ -1339,4 +1348,89 @@ public class IndexUpdateTests extends IndexTestBase {
fIndex.releaseReadLock(); fIndex.releaseReadLock();
} }
} }
// typedef enum {
// AE_ON = 0
// } Adaptiv_T;
// struct mystruct {
// Adaptiv_T eAdapt;
// };
// int main() {
// mystruct ms;
// ms.eAdapt = AE_ON;
// }
// // insert line
// typedef enum {
// AE_ON = 0
// } Adaptiv_T;
// struct mystruct {
// Adaptiv_T eAdapt;
// };
public void testAnonymousEnum_Bug356057cpp() throws Exception {
setupHeader(3, true);
setupFile(3, true);
String name1;
fIndex.acquireReadLock();
try {
final IEnumerator e = (IEnumerator) findBinding("AE_ON");
assertNotNull(e);
name1= e.getOwner().getName();
} finally {
fIndex.releaseReadLock();
} }
updateHeader();
fIndex.acquireReadLock();
try {
final IEnumerator e = (IEnumerator) findBinding("AE_ON");
assertNotNull(e);
assertFalse(name1.equals(e.getOwner().getName()));
} finally {
fIndex.releaseReadLock();
}
}
// typedef enum {
// AE_ON = 0
// } Adaptiv_T;
// struct mystruct {
// Adaptiv_T eAdapt;
// };
// int main() {
// mystruct ms;
// ms.eAdapt = AE_ON;
// }
// // insert line
// typedef enum {
// AE_ON = 0
// } Adaptiv_T;
// struct mystruct {
// Adaptiv_T eAdapt;
// };
public void testAnonymousEnum_Bug356057c() throws Exception {
setupHeader(3, false);
setupFile(3, false);
String name1;
fIndex.acquireReadLock();
try {
final IEnumerator e = (IEnumerator) findBinding("AE_ON");
assertNotNull(e);
name1= e.getOwner().getName();
} finally {
fIndex.releaseReadLock();
}
updateHeader();
fIndex.acquireReadLock();
try {
final IEnumerator e = (IEnumerator) findBinding("AE_ON");
assertNotNull(e);
assertFalse(name1.equals(e.getOwner().getName()));
} finally {
fIndex.releaseReadLock();
}
}
}

View file

@ -57,7 +57,7 @@ public class BaseTestCase extends TestCase {
super(name); super(name);
} }
public NullProgressMonitor npm() { public static NullProgressMonitor npm() {
return new NullProgressMonitor(); return new NullProgressMonitor();
} }
@ -284,7 +284,7 @@ public class BaseTestCase extends TestCase {
} }
} }
protected void waitForIndexer(ICProject project) throws InterruptedException { public static void waitForIndexer(ICProject project) throws InterruptedException {
final PDOMManager indexManager = CCoreInternals.getPDOMManager(); final PDOMManager indexManager = CCoreInternals.getPDOMManager();
assertTrue(indexManager.joinIndexer(10000, npm())); assertTrue(indexManager.joinIndexer(10000, npm()));
long waitms= 1; long waitms= 1;

View file

@ -17,7 +17,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPUsingDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.ICPPUsingDeclaration;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IAdaptable;
/** /**
@ -42,7 +41,7 @@ public interface IBinding extends IAdaptable {
* Returns the linkage the binding belongs to. C++-declarations declared as * Returns the linkage the binding belongs to. C++-declarations declared as
* extern "C" will still return c++-linkage. * extern "C" will still return c++-linkage.
*/ */
public ILinkage getLinkage() throws CoreException; public ILinkage getLinkage();
/** /**
* Returns the binding that owns this binding, or <code>null</code> if there is no owner. * Returns the binding that owns this binding, or <code>null</code> if there is no owner.

View file

@ -15,6 +15,7 @@
package org.eclipse.cdt.internal.core.dom.parser.cpp; package org.eclipse.cdt.internal.core.dom.parser.cpp;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IProblemBinding; import org.eclipse.cdt.core.dom.ast.IProblemBinding;
import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IType;
@ -45,6 +46,17 @@ public class CPPClassInstance extends CPPClassSpecialization implements ICPPTemp
return arguments; return arguments;
} }
@Override
protected ICPPClassSpecializationScope getSpecializationScope() {
// An instance with a declaration has no specialization scope.
checkForDefinition();
final IASTNode[] decls = getDeclarations();
if (decls != null && decls.length > 0 && decls[0] != null)
return null;
return super.getSpecializationScope();
}
public boolean isExplicitSpecialization() { public boolean isExplicitSpecialization() {
return !(getCompositeScope() instanceof ICPPClassSpecializationScope); return !(getCompositeScope() instanceof ICPPClassSpecializationScope);
} }

View file

@ -26,9 +26,8 @@ import org.eclipse.cdt.core.dom.ast.IProblemBinding;
import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.ITypedef;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateId;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassSpecialization;
@ -83,9 +82,10 @@ public class CPPClassSpecialization extends CPPSpecialization
} }
} }
private class FindDefinitionAction extends ASTVisitor { private class FindDeclarationDefinitionAction extends ASTVisitor {
private char [] nameArray = CPPClassSpecialization.this.getNameCharArray(); private char [] nameArray = CPPClassSpecialization.this.getNameCharArray();
public IASTName result = null; public IASTName foundDef = null;
public IASTName foundDecl = null;
{ {
shouldVisitNames = true; shouldVisitNames = true;
@ -96,31 +96,26 @@ public class CPPClassSpecialization extends CPPSpecialization
@Override @Override
public int visit(IASTName name) { public int visit(IASTName name) {
if( name instanceof ICPPASTTemplateId ) final IASTNode parent = name.getParent();
return PROCESS_SKIP; final boolean isDef = parent instanceof ICPPASTCompositeTypeSpecifier;
if( name instanceof ICPPASTQualifiedName ) final boolean isDecl = !isDef && parent instanceof ICPPASTElaboratedTypeSpecifier
return PROCESS_CONTINUE; && parent.getParent() instanceof IASTSimpleDeclaration;
char[] c = name.getLookupKey(); if (isDef || isDecl) {
name= name.getLastName();
if (name.getParent() instanceof ICPPASTQualifiedName) { if (CharArrayUtils.equals(name.getLookupKey(), nameArray)) {
IASTName[] ns = ((ICPPASTQualifiedName) name.getParent()).getNames();
if (ns[ns.length - 1] != name)
return PROCESS_CONTINUE;
name = (IASTName) name.getParent();
}
if (name.getParent() instanceof ICPPASTCompositeTypeSpecifier && CharArrayUtils.equals(c, nameArray)) {
IBinding binding = name.resolveBinding(); IBinding binding = name.resolveBinding();
if (binding == CPPClassSpecialization.this) { if (binding == CPPClassSpecialization.this) {
if (name instanceof ICPPASTQualifiedName) { if (isDef) {
IASTName[] ns = ((ICPPASTQualifiedName) name).getNames(); foundDef= name;
name = ns[ns.length - 1];
}
result = name;
return PROCESS_ABORT; return PROCESS_ABORT;
} }
if (foundDecl == null)
foundDecl= name;
} }
return PROCESS_CONTINUE; }
}
// Don't look at members of qualified names or template ids.
return PROCESS_SKIP;
} }
@Override @Override
@ -155,9 +150,12 @@ public class CPPClassSpecialization extends CPPSpecialization
orig= ((ICPPSpecialization) orig).getSpecializedBinding(); orig= ((ICPPSpecialization) orig).getSpecializedBinding();
} }
if (tu != null) { if (tu != null) {
FindDefinitionAction action= new FindDefinitionAction(); FindDeclarationDefinitionAction action= new FindDeclarationDefinitionAction();
tu.accept( action ); tu.accept( action );
definition = action.result; definition = action.foundDef;
if (definition == null && action.foundDecl != null) {
addDeclaration(action.foundDecl);
}
} }
checked = true; checked = true;
} }
@ -260,10 +258,14 @@ public class CPPClassSpecialization extends CPPSpecialization
if (specScope != null) if (specScope != null)
return specScope; return specScope;
return getCompositeTypeSpecifier().getScope(); final ICPPASTCompositeTypeSpecifier typeSpecifier = getCompositeTypeSpecifier();
if (typeSpecifier != null)
return typeSpecifier.getScope();
return null;
} }
private ICPPClassSpecializationScope getSpecializationScope() { protected ICPPClassSpecializationScope getSpecializationScope() {
checkForDefinition(); checkForDefinition();
if (getDefinition() != null) if (getDefinition() != null)
return null; return null;

View file

@ -351,7 +351,7 @@ public class CPPScopeMapper {
if (template instanceof IIndexBinding && template instanceof ICPPClassType) { if (template instanceof IIndexBinding && template instanceof ICPPClassType) {
IBinding mapped= mapToAST((ICPPClassType) template); IBinding mapped= mapToAST((ICPPClassType) template);
if (mapped != template && mapped instanceof ICPPClassType) { if (mapped != template && mapped instanceof ICPPClassType) {
mapped= CPPTemplates.instantiate((ICPPClassTemplate) mapped, inst.getTemplateArguments(), false); mapped= CPPTemplates.instantiate((ICPPClassTemplate) mapped, inst.getTemplateArguments());
if (mapped instanceof ICPPClassType) if (mapped instanceof ICPPClassType)
return (ICPPClassType) mapped; return (ICPPClassType) mapped;
} }

View file

@ -314,11 +314,10 @@ public class ClassTypeHelper {
private static ObjectSet<ICPPMethod> getOwnMethods(ICPPClassType classType) { private static ObjectSet<ICPPMethod> getOwnMethods(ICPPClassType classType) {
ObjectSet<ICPPMethod> set= new ObjectSet<ICPPMethod>(4); ObjectSet<ICPPMethod> set= new ObjectSet<ICPPMethod>(4);
set.addAll(classType.getDeclaredMethods()); set.addAll(classType.getDeclaredMethods());
if (classType instanceof IProblemBinding) { IScope scope = classType.getCompositeScope();
return set; if (scope instanceof ICPPClassScope) {
set.addAll(((ICPPClassScope) scope).getImplicitMethods());
} }
ICPPClassScope scope= (ICPPClassScope) classType.getCompositeScope();
set.addAll(scope.getImplicitMethods());
return set; return set;
} }

View file

@ -25,7 +25,6 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPBasicType; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPBasicType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPFunctionType; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPFunctionType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateTypeParameter; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateTypeParameter;
import org.eclipse.core.runtime.CoreException;
/** /**
* This class represents a template function used for deducing 'auto' types (C++0x: 7.1.6.4). * This class represents a template function used for deducing 'auto' types (C++0x: 7.1.6.4).
@ -115,7 +114,7 @@ class AutoTypeResolver implements ICPPFunctionTemplate {
throw new UnsupportedOperationException(UNEXPECTED_CALL); throw new UnsupportedOperationException(UNEXPECTED_CALL);
} }
public ILinkage getLinkage() throws CoreException { public ILinkage getLinkage() {
throw new UnsupportedOperationException(UNEXPECTED_CALL); throw new UnsupportedOperationException(UNEXPECTED_CALL);
} }

View file

@ -373,7 +373,7 @@ public class CPPSemantics {
if (data.tu != null) { if (data.tu != null) {
ICPPASTTemplateId id = (ICPPASTTemplateId) data.astName; ICPPASTTemplateId id = (ICPPASTTemplateId) data.astName;
ICPPTemplateArgument[] args = CPPTemplates.createTemplateArgumentArray(id); ICPPTemplateArgument[] args = CPPTemplates.createTemplateArgumentArray(id);
IBinding inst= CPPTemplates.instantiate((ICPPClassTemplate) cls, args, false); IBinding inst= CPPTemplates.instantiate((ICPPClassTemplate) cls, args);
if (inst instanceof ICPPClassType) { if (inst instanceof ICPPClassType) {
cls= (ICPPClassType) inst; cls= (ICPPClassType) inst;
} }
@ -955,7 +955,7 @@ public class CPPSemantics {
return; return;
// Lookup in base classes // Lookup in base classes
if (!data.usingDirectivesOnly && scope instanceof ICPPClassScope) { if (!data.usingDirectivesOnly && scope instanceof ICPPClassScope && !data.ignoreMembers) {
BaseClassLookup.lookupInBaseClasses(data, (ICPPClassScope) scope, fileSet); BaseClassLookup.lookupInBaseClasses(data, (ICPPClassScope) scope, fileSet);
if (!data.contentAssist && data.hasResultOrProblem()) if (!data.contentAssist && data.hasResultOrProblem())
return; return;

View file

@ -64,6 +64,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateId; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateId;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateSpecialization;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassSpecialization;
@ -159,7 +160,15 @@ public class CPPTemplates {
/** /**
* Instantiates a class template with the given arguments. May return <code>null</code>. * Instantiates a class template with the given arguments. May return <code>null</code>.
*/ */
public static IBinding instantiate(ICPPClassTemplate template, ICPPTemplateArgument[] args, boolean isDef) { public static IBinding instantiate(ICPPClassTemplate template, ICPPTemplateArgument[] args) {
return instantiate(template, args, false, false);
}
/**
* Instantiates a class template with the given arguments. May return <code>null</code>.
*/
private static IBinding instantiate(ICPPClassTemplate template, ICPPTemplateArgument[] args,
boolean isDefinition, boolean isExplicitSpecialization) {
try { try {
// Add default arguments, if necessary. // Add default arguments, if necessary.
ICPPTemplateArgument[] arguments= SemanticUtil.getSimplifiedArguments(args); ICPPTemplateArgument[] arguments= SemanticUtil.getSimplifiedArguments(args);
@ -172,7 +181,7 @@ public class CPPTemplates {
} }
if (template instanceof ICPPClassTemplatePartialSpecialization) { if (template instanceof ICPPClassTemplatePartialSpecialization) {
return instantiatePartialSpecialization((ICPPClassTemplatePartialSpecialization) template, arguments, isDef, null); return instantiatePartialSpecialization((ICPPClassTemplatePartialSpecialization) template, arguments, isDefinition, null);
} }
@ -222,15 +231,17 @@ public class CPPTemplates {
map.put(param, pack); map.put(param, pack);
} }
ICPPTemplateInstance prim= getInstance(template, arguments, isDef); ICPPTemplateInstance prim= getInstance(template, arguments, isDefinition);
if (prim != null && prim.isExplicitSpecialization()) if (prim != null && (isExplicitSpecialization || prim.isExplicitSpecialization()))
return prim; return prim;
IBinding result= CPPTemplates.selectSpecialization(template, arguments, isDef); if (!isExplicitSpecialization) {
IBinding result= CPPTemplates.selectSpecialization(template, arguments, isDefinition);
if (result != null) if (result != null)
return result; return result;
}
return instantiatePrimaryTemplate(template, arguments, map, isDef); return instantiatePrimaryTemplate(template, arguments, map, isDefinition);
} catch (DOMException e) { } catch (DOMException e) {
return e.getProblem(); return e.getProblem();
} }
@ -620,22 +631,25 @@ public class CPPTemplates {
parentOfName = parentOfName.getParent(); parentOfName = parentOfName.getParent();
} }
boolean isDecl= false; boolean isDeclaration= false;
boolean isDef= false; boolean isDefinition= false;
if (isLastName) { boolean isExplicitSpecialization= false;
if (isLastName && parentOfName != null) {
IASTNode declaration= parentOfName.getParent();
if (declaration instanceof IASTSimpleDeclaration) {
if (parentOfName instanceof ICPPASTElaboratedTypeSpecifier) { if (parentOfName instanceof ICPPASTElaboratedTypeSpecifier) {
IASTNode parentOfDeclaration= parentOfName; isDeclaration= true;
while (parentOfDeclaration != null) {
if (parentOfDeclaration instanceof IASTDeclaration) {
parentOfDeclaration= parentOfDeclaration.getParent();
break;
}
parentOfDeclaration= parentOfDeclaration.getParent();
}
isDecl= !(parentOfDeclaration instanceof ICPPASTExplicitTemplateInstantiation);
} else if (parentOfName instanceof ICPPASTCompositeTypeSpecifier) { } else if (parentOfName instanceof ICPPASTCompositeTypeSpecifier) {
isDef= true; isDefinition= true;
}
if (isDeclaration || isDefinition) {
IASTNode parentOfDeclaration = declaration.getParent();
if (parentOfDeclaration instanceof ICPPASTExplicitTemplateInstantiation) {
isDeclaration= false;
} else if (parentOfDeclaration instanceof ICPPASTTemplateSpecialization) {
isExplicitSpecialization= true;
}
}
} }
} }
try { try {
@ -669,7 +683,7 @@ public class CPPTemplates {
result= classTemplate; result= classTemplate;
} else { } else {
ICPPClassTemplatePartialSpecialization partialSpec= findPartialSpecialization(classTemplate, args); ICPPClassTemplatePartialSpecialization partialSpec= findPartialSpecialization(classTemplate, args);
if (isDecl || isDef) { if (isDeclaration || isDefinition) {
if (partialSpec == null) { if (partialSpec == null) {
partialSpec = new CPPClassTemplatePartialSpecialization(id); partialSpec = new CPPClassTemplatePartialSpecialization(id);
if (template instanceof ICPPInternalClassTemplate) if (template instanceof ICPPInternalClassTemplate)
@ -684,11 +698,11 @@ public class CPPTemplates {
} }
} }
if (result == null) { if (result == null) {
result= instantiate(classTemplate, args, isDef); result= instantiate(classTemplate, args, isDefinition, isExplicitSpecialization);
if (result instanceof ICPPInternalBinding) { if (result instanceof ICPPInternalBinding) {
if (isDecl) { if (isDeclaration) {
ASTInternal.addDeclaration(result, id); ASTInternal.addDeclaration(result, id);
} else if (isDef) { } else if (isDefinition) {
ASTInternal.addDefinition(result, id); ASTInternal.addDefinition(result, id);
} }
} }
@ -2320,7 +2334,7 @@ public class CPPTemplates {
ICPPTemplateArgument[] newArgs = CPPTemplates.instantiateArguments( ICPPTemplateArgument[] newArgs = CPPTemplates.instantiateArguments(
((ICPPUnknownClassInstance) unknown).getArguments(), tpMap, packOffset, within); ((ICPPUnknownClassInstance) unknown).getArguments(), tpMap, packOffset, within);
if (result instanceof ICPPClassTemplate) { if (result instanceof ICPPClassTemplate) {
result = instantiate((ICPPClassTemplate) result, newArgs, false); result = instantiate((ICPPClassTemplate) result, newArgs);
} }
} }
} }
@ -2349,7 +2363,7 @@ public class CPPTemplates {
} }
if (changed) { if (changed) {
IBinding inst= instantiate(classTemplate, newArgs, false); IBinding inst= instantiate(classTemplate, newArgs);
if (inst != null) if (inst != null)
return inst; return inst;
} }

View file

@ -1893,7 +1893,7 @@ public class CPPVisitor extends ASTQueries {
return new ProblemType(ISemanticProblem.TYPE_CANNOT_DEDUCE_AUTO_TYPE); return new ProblemType(ISemanticProblem.TYPE_CANNOT_DEDUCE_AUTO_TYPE);
} }
type = (IType) CPPTemplates.instantiate(initializer_list_template, type = (IType) CPPTemplates.instantiate(initializer_list_template,
new ICPPTemplateArgument[] { new CPPTemplateArgument(type) }, true); new ICPPTemplateArgument[] { new CPPTemplateArgument(type) });
if (type instanceof IProblemBinding) { if (type instanceof IProblemBinding) {
return new ProblemType(ISemanticProblem.TYPE_CANNOT_DEDUCE_AUTO_TYPE); return new ProblemType(ISemanticProblem.TYPE_CANNOT_DEDUCE_AUTO_TYPE);
} }
@ -1924,7 +1924,7 @@ public class CPPVisitor extends ASTQueries {
type = argument.getTypeValue(); type = argument.getTypeValue();
if (initClause instanceof ICPPASTInitializerList) { if (initClause instanceof ICPPASTInitializerList) {
type = (IType) CPPTemplates.instantiate(initializer_list_template, type = (IType) CPPTemplates.instantiate(initializer_list_template,
new ICPPTemplateArgument[] { new CPPTemplateArgument(type) }, true); new ICPPTemplateArgument[] { new CPPTemplateArgument(type) });
} }
return decorateType(type, declSpec, declarator); return decorateType(type, declSpec, declarator);
} }

View file

@ -18,7 +18,6 @@ import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.ITypedef;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding;
import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer; import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
import org.eclipse.core.runtime.CoreException;
public class CPPTypedefClone implements ITypedef, ITypeContainer, IIndexType, ICPPBinding { public class CPPTypedefClone implements ITypedef, ITypeContainer, IIndexType, ICPPBinding {
protected final ITypedef delegate; protected final ITypedef delegate;
@ -35,7 +34,7 @@ public class CPPTypedefClone implements ITypedef, ITypeContainer, IIndexType, IC
return type; return type;
} }
public ILinkage getLinkage() throws CoreException { public ILinkage getLinkage() {
return delegate.getLinkage(); return delegate.getLinkage();
} }

View file

@ -14,6 +14,7 @@ package org.eclipse.cdt.internal.core.index;
* Constants used by IIndexFragment implementations for identifying persisted binding types * Constants used by IIndexFragment implementations for identifying persisted binding types
*/ */
public interface IIndexBindingConstants { public interface IIndexBindingConstants {
int ENUMERATOR= 3;
int MACRO_DEFINITION = 4; int MACRO_DEFINITION = 4;
int MACRO_CONTAINER = 5; int MACRO_CONTAINER = 5;
int LAST_CONSTANT= MACRO_CONTAINER; int LAST_CONSTANT= MACRO_CONTAINER;

View file

@ -14,12 +14,13 @@ package org.eclipse.cdt.internal.core.index;
* Constants used by IIndexFragment implementations for identifying persisted binding types * Constants used by IIndexFragment implementations for identifying persisted binding types
*/ */
public interface IIndexCBindingConstants { public interface IIndexCBindingConstants {
int CENUMERATOR = IIndexBindingConstants.ENUMERATOR;
int CVARIABLE = IIndexBindingConstants.LAST_CONSTANT + 1; int CVARIABLE = IIndexBindingConstants.LAST_CONSTANT + 1;
int CFUNCTION = IIndexBindingConstants.LAST_CONSTANT + 2; int CFUNCTION = IIndexBindingConstants.LAST_CONSTANT + 2;
int CSTRUCTURE = IIndexBindingConstants.LAST_CONSTANT + 3; int CSTRUCTURE = IIndexBindingConstants.LAST_CONSTANT + 3;
int CFIELD = IIndexBindingConstants.LAST_CONSTANT + 4; int CFIELD = IIndexBindingConstants.LAST_CONSTANT + 4;
int CENUMERATION = IIndexBindingConstants.LAST_CONSTANT + 5; int CENUMERATION = IIndexBindingConstants.LAST_CONSTANT + 5;
int CENUMERATOR = IIndexBindingConstants.LAST_CONSTANT + 6;
int CTYPEDEF = IIndexBindingConstants.LAST_CONSTANT + 7; int CTYPEDEF = IIndexBindingConstants.LAST_CONSTANT + 7;
int CPARAMETER = IIndexBindingConstants.LAST_CONSTANT + 8; int CPARAMETER = IIndexBindingConstants.LAST_CONSTANT + 8;
} }

View file

@ -15,6 +15,8 @@ package org.eclipse.cdt.internal.core.index;
* Constants used by IIndexFragment implementations for identifying persisted binding types. * Constants used by IIndexFragment implementations for identifying persisted binding types.
*/ */
public interface IIndexCPPBindingConstants { public interface IIndexCPPBindingConstants {
int CPPENUMERATOR = IIndexBindingConstants.ENUMERATOR;
int CPPVARIABLE = IIndexBindingConstants.LAST_CONSTANT + 1; int CPPVARIABLE = IIndexBindingConstants.LAST_CONSTANT + 1;
int CPPFUNCTION = IIndexBindingConstants.LAST_CONSTANT + 2; int CPPFUNCTION = IIndexBindingConstants.LAST_CONSTANT + 2;
int CPPCLASSTYPE = IIndexBindingConstants.LAST_CONSTANT + 3; int CPPCLASSTYPE = IIndexBindingConstants.LAST_CONSTANT + 3;
@ -24,7 +26,6 @@ public interface IIndexCPPBindingConstants {
int CPPNAMESPACEALIAS = IIndexBindingConstants.LAST_CONSTANT + 7; int CPPNAMESPACEALIAS = IIndexBindingConstants.LAST_CONSTANT + 7;
int CPPPARAMETER = IIndexBindingConstants.LAST_CONSTANT + 9; int CPPPARAMETER = IIndexBindingConstants.LAST_CONSTANT + 9;
int CPPENUMERATION = IIndexBindingConstants.LAST_CONSTANT + 10; int CPPENUMERATION = IIndexBindingConstants.LAST_CONSTANT + 10;
int CPPENUMERATOR = IIndexBindingConstants.LAST_CONSTANT + 11;
int CPPTYPEDEF = IIndexBindingConstants.LAST_CONSTANT + 12; int CPPTYPEDEF = IIndexBindingConstants.LAST_CONSTANT + 12;
int CPP_CONSTRUCTOR= IIndexBindingConstants.LAST_CONSTANT + 14; int CPP_CONSTRUCTOR= IIndexBindingConstants.LAST_CONSTANT + 14;
int CPP_FUNCTION_TEMPLATE= IIndexBindingConstants.LAST_CONSTANT + 16; int CPP_FUNCTION_TEMPLATE= IIndexBindingConstants.LAST_CONSTANT + 16;

View file

@ -27,7 +27,7 @@ public interface IIndexFragmentBinding extends IIndexBinding {
/** /**
* Returns the linkage the binding belongs to. * Returns the linkage the binding belongs to.
*/ */
ILinkage getLinkage() throws CoreException; ILinkage getLinkage();
/** /**
* Returns whether this binding has any definitions associated with it * Returns whether this binding has any definitions associated with it

View file

@ -46,7 +46,7 @@ public abstract class CompositeIndexBinding implements IIndexBinding {
this.rbinding = rbinding; this.rbinding = rbinding;
} }
public ILinkage getLinkage() throws CoreException { public ILinkage getLinkage() {
return rbinding.getLinkage(); return rbinding.getLinkage();
} }

View file

@ -196,7 +196,7 @@ public class PDOM extends PlatformObject implements IPDOM {
* 96.0 - storing pack expansions in the template parameter map, bug 294730. * 96.0 - storing pack expansions in the template parameter map, bug 294730.
* 97.0 - storing file contents hash in PDOMFile, bug 302083. * 97.0 - storing file contents hash in PDOMFile, bug 302083.
* #98.0# - strongly typed enums, bug 305975. <<CDT 7.0.0>> * #98.0# - strongly typed enums, bug 305975. <<CDT 7.0.0>>
* 99.0 - correct marshalling of basic types, bug 319186. * #99.0# - correct marshalling of basic types, bug 319186. <<CDT 7.0.1>>
* *
* CDT 8.0 development (versions not supported on the 7.0.x branch) * CDT 8.0 development (versions not supported on the 7.0.x branch)
* 110.0 - update index on encoding change, bug 317435. * 110.0 - update index on encoding change, bug 317435.
@ -204,12 +204,15 @@ public class PDOM extends PlatformObject implements IPDOM {
* 111.1 - defaulted and deleted functions, bug 305978 * 111.1 - defaulted and deleted functions, bug 305978
* 112.0 - inline namespaces, bug 305980 * 112.0 - inline namespaces, bug 305980
* 113.0 - Changed marshaling of values, bug 327878 * 113.0 - Changed marshaling of values, bug 327878
* 114.0 - Partial specializations for class template specializations, bug 332884. * #114.0# - Partial specializations for class template specializations, bug 332884.
* 115.0 - Corrected signatures for function templates, bug 335062. * - Corrected signatures for function templates, bug 335062. <<CDT 8.0>>
*
* CDT 8.1 development (versions not supported on teh 8.0.x branch)
* 120.0 - Enumerators in global index, bug 356235
*/ */
private static final int MIN_SUPPORTED_VERSION= version(114, 0); private static final int MIN_SUPPORTED_VERSION= version(120, 0);
private static final int MAX_SUPPORTED_VERSION= version(114, Short.MAX_VALUE); private static final int MAX_SUPPORTED_VERSION= version(120, Short.MAX_VALUE);
private static final int DEFAULT_VERSION = version(114, 0); private static final int DEFAULT_VERSION = version(120, 0);
private static int version(int major, int minor) { private static int version(int major, int minor) {
return (major << 16) + minor; return (major << 16) + minor;

View file

@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.pdom.dom;
import org.eclipse.cdt.core.dom.IPDOMNode; import org.eclipse.cdt.core.dom.IPDOMNode;
import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.IPDOMVisitor;
import org.eclipse.cdt.internal.core.index.IIndexBindingConstants;
import org.eclipse.cdt.internal.core.pdom.db.BTree; import org.eclipse.cdt.internal.core.pdom.db.BTree;
import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.db.Database;
import org.eclipse.cdt.internal.core.pdom.db.IBTreeComparator; import org.eclipse.cdt.internal.core.pdom.db.IBTreeComparator;
@ -44,6 +45,11 @@ public class FindBinding {
if (t1 == t2) { if (t1 == t2) {
t1 = PDOMNode.getNodeType(database, record1); t1 = PDOMNode.getNodeType(database, record1);
t2 = PDOMNode.getNodeType(database, record2); t2 = PDOMNode.getNodeType(database, record2);
if (t1 == t2 && t1 == IIndexBindingConstants.ENUMERATOR) {
// Allow to insert multiple enumerators into the global index.
t1= record1;
t2= record2;
}
} }
cmp= t1 < t2 ? -1 : (t1 > t2 ? 1 : 0); cmp= t1 < t2 ? -1 : (t1 > t2 ? 1 : 0);
} }
@ -164,7 +170,6 @@ public class FindBinding {
public static PDOMBinding findBinding(IPDOMNode node, final PDOMLinkage linkage, final char[] name, final int[] constants, public static PDOMBinding findBinding(IPDOMNode node, final PDOMLinkage linkage, final char[] name, final int[] constants,
long localToFileRec) throws CoreException { long localToFileRec) throws CoreException {
// mstodo faster searches
final DefaultFindBindingVisitor visitor = new DefaultFindBindingVisitor(linkage, name, constants, localToFileRec); final DefaultFindBindingVisitor visitor = new DefaultFindBindingVisitor(linkage, name, constants, localToFileRec);
try { try {
node.accept(visitor); node.accept(visitor);

View file

@ -13,7 +13,6 @@ package org.eclipse.cdt.internal.core.pdom.dom;
import org.eclipse.cdt.core.dom.IPDOMNode; import org.eclipse.cdt.core.dom.IPDOMNode;
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding; import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.core.runtime.CoreException;
/** /**
* Marker for bindings in the pdom * Marker for bindings in the pdom
@ -33,5 +32,5 @@ public interface IPDOMBinding extends IPDOMNode, IIndexFragmentBinding {
/** /**
* Returns the linkage of the binding. * Returns the linkage of the binding.
*/ */
PDOMLinkage getLinkage() throws CoreException; PDOMLinkage getLinkage();
} }

View file

@ -41,7 +41,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter;
import org.eclipse.cdt.core.index.IIndexBinding; import org.eclipse.cdt.core.index.IIndexBinding;
import org.eclipse.cdt.core.parser.IToken; import org.eclipse.cdt.core.parser.IToken;
import org.eclipse.core.runtime.CoreException;
public class PDOMASTAdapter { public class PDOMASTAdapter {
private static class AnonymousASTName implements IASTName { private static class AnonymousASTName implements IASTName {
@ -253,7 +252,7 @@ public class PDOMASTAdapter {
return fDelegate.getEnumerators(); return fDelegate.getEnumerators();
} }
public ILinkage getLinkage() throws CoreException { public ILinkage getLinkage() {
return fDelegate.getLinkage(); return fDelegate.getLinkage();
} }
@ -321,7 +320,7 @@ public class PDOMASTAdapter {
return fDelegate.getKey(); return fDelegate.getKey();
} }
public ILinkage getLinkage() throws CoreException { public ILinkage getLinkage() {
return fDelegate.getLinkage(); return fDelegate.getLinkage();
} }
@ -395,7 +394,7 @@ public class PDOMASTAdapter {
return fDelegate.getAdapter(adapter); return fDelegate.getAdapter(adapter);
} }
public ILinkage getLinkage() throws CoreException { public ILinkage getLinkage() {
return fDelegate.getLinkage(); return fDelegate.getLinkage();
} }

View file

@ -357,8 +357,8 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation {
return false; return false;
} }
public PDOMLinkage getLinkage() throws CoreException { public PDOMLinkage getLinkage() {
return getFile().getLinkage(); return fLinkage;
} }
public IIndexScope getScope() { public IIndexScope getScope() {

View file

@ -11,20 +11,28 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.dom.c; package org.eclipse.cdt.internal.core.pdom.dom.c;
import java.lang.ref.Reference;
import java.lang.ref.SoftReference;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.List;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.IPDOMNode;
import org.eclipse.cdt.core.dom.IPDOMVisitor;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IEnumeration; import org.eclipse.cdt.core.dom.ast.IEnumeration;
import org.eclipse.cdt.core.dom.ast.IEnumerator; import org.eclipse.cdt.core.dom.ast.IEnumerator;
import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.ITypedef;
import org.eclipse.cdt.core.parser.util.CharArrayUtils;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
import org.eclipse.cdt.internal.core.index.IIndexCBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexCBindingConstants;
import org.eclipse.cdt.internal.core.index.IIndexType; import org.eclipse.cdt.internal.core.index.IIndexType;
import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.db.Database;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMASTAdapter; import org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode;
@ -33,12 +41,10 @@ import org.eclipse.core.runtime.CoreException;
/** /**
* Enumerations in the database. * Enumerations in the database.
*/ */
class PDOMCEnumeration extends PDOMBinding implements IEnumeration, IIndexType { class PDOMCEnumeration extends PDOMBinding implements IEnumeration, IIndexType, IPDOMMemberOwner {
private static final int OFFSET_ENUMERATOR_LIST = PDOMBinding.RECORD_SIZE;
private static final int FIRST_ENUMERATOR = PDOMBinding.RECORD_SIZE + 0; private static final int OFFSET_MIN_VALUE= OFFSET_ENUMERATOR_LIST + Database.PTR_SIZE;
private static final int OFFSET_MIN_VALUE= FIRST_ENUMERATOR + Database.PTR_SIZE;
private static final int OFFSET_MAX_VALUE= OFFSET_MIN_VALUE + 8; private static final int OFFSET_MAX_VALUE= OFFSET_MIN_VALUE + 8;
@SuppressWarnings("hiding") @SuppressWarnings("hiding")
protected static final int RECORD_SIZE = OFFSET_MAX_VALUE + 8; protected static final int RECORD_SIZE = OFFSET_MAX_VALUE + 8;
@ -80,35 +86,71 @@ class PDOMCEnumeration extends PDOMBinding implements IEnumeration, IIndexType {
return IIndexCBindingConstants.CENUMERATION; return IIndexCBindingConstants.CENUMERATION;
} }
public IEnumerator[] getEnumerators() throws DOMException { public IEnumerator[] getEnumerators() {
try { List<PDOMCEnumerator> result = getCachedEnumerators(true);
ArrayList<PDOMCEnumerator> enums = new ArrayList<PDOMCEnumerator>(); return result.toArray(new IEnumerator[result.size()]);
for (PDOMCEnumerator enumerator = getFirstEnumerator();
enumerator != null;
enumerator = enumerator.getNextEnumerator()) {
enums.add(enumerator);
} }
// Reverse the list since they are last in first out private List<PDOMCEnumerator> getCachedEnumerators(boolean create) {
Collections.reverse(enums); final Long key= record;
return enums.toArray(new IEnumerator[enums.size()]); final PDOM pdom = getPDOM();
@SuppressWarnings("unchecked")
Reference<List<PDOMCEnumerator>> cached= (Reference<List<PDOMCEnumerator>>) pdom.getCachedResult(key);
List<PDOMCEnumerator> result= cached == null ? null : cached.get();
if (result == null && create) {
// there is no cache, build it:
result= loadEnumerators();
pdom.putCachedResult(key, new SoftReference<List<PDOMCEnumerator>>(result));
}
return result;
}
private List<PDOMCEnumerator> loadEnumerators() {
final ArrayList<PDOMCEnumerator> result= new ArrayList<PDOMCEnumerator>();
try {
PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + OFFSET_ENUMERATOR_LIST);
list.accept(new IPDOMVisitor() {
public boolean visit(IPDOMNode node) throws CoreException {
if (node instanceof PDOMCEnumerator) {
result.add((PDOMCEnumerator) node);
}
return true;
}
public void leave(IPDOMNode node) {}
});
} catch (CoreException e) { } catch (CoreException e) {
CCorePlugin.log(e); CCorePlugin.log(e);
return new IEnumerator[0]; }
result.trimToSize();
return result;
}
@Override
public void accept(IPDOMVisitor visitor) throws CoreException {
for (PDOMCEnumerator enumerator : getCachedEnumerators(true)) {
visitor.visit(enumerator);
visitor.leave(enumerator);
} }
} }
private PDOMCEnumerator getFirstEnumerator() throws CoreException { @Override
long value = getDB().getRecPtr(record + FIRST_ENUMERATOR); public void addChild(PDOMNode node) throws CoreException {
return value != 0 ? new PDOMCEnumerator(getLinkage(), value) : null; if (node instanceof PDOMCEnumerator) {
PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + OFFSET_ENUMERATOR_LIST);
list.addMember(node);
List<PDOMCEnumerator> cache = getCachedEnumerators(false);
if (cache != null)
cache.add((PDOMCEnumerator) node);
}
} }
public void addEnumerator(PDOMCEnumerator enumerator) throws CoreException { @Override
PDOMCEnumerator first = getFirstEnumerator(); public boolean mayHaveChildren() {
enumerator.setNextEnumerator(first); return true;
getDB().putRecPtr(record + FIRST_ENUMERATOR, enumerator.getRecord());
} }
public long getMinValue() { public long getMinValue() {
if (fMinValue != null) { if (fMinValue != null) {
return fMinValue.longValue(); return fMinValue.longValue();
@ -149,18 +191,20 @@ class PDOMCEnumeration extends PDOMBinding implements IEnumeration, IIndexType {
if (type instanceof IEnumeration) { if (type instanceof IEnumeration) {
IEnumeration etype= (IEnumeration) type; IEnumeration etype= (IEnumeration) type;
etype= (IEnumeration) PDOMASTAdapter.getAdapterForAnonymousASTBinding(etype); char[] nchars = etype.getNameCharArray();
try { if (nchars.length == 0) {
return getDBName().equals(etype.getNameCharArray()); nchars= ASTTypeUtil.createNameForAnonymous(etype);
} catch (CoreException e) {
CCorePlugin.log(e);
} }
if (nchars == null || !CharArrayUtils.equals(nchars, getNameCharArray()))
return false;
return SemanticUtil.isSameOwner(getOwner(), etype.getOwner());
} }
return false; return false;
} }
@Override @Override
public Object clone() { public Object clone() {
throw new UnsupportedOperationException(); throw new IllegalArgumentException("Enums must not be cloned"); //$NON-NLS-1$
} }
} }

View file

@ -29,22 +29,17 @@ import org.eclipse.core.runtime.CoreException;
* Binding for c enumerator in the index. * Binding for c enumerator in the index.
*/ */
class PDOMCEnumerator extends PDOMBinding implements IEnumerator { class PDOMCEnumerator extends PDOMBinding implements IEnumerator {
private static final int VALUE= PDOMBinding.RECORD_SIZE + 0;
private static final int ENUMERATION = PDOMBinding.RECORD_SIZE + 0;
private static final int NEXT_ENUMERATOR = PDOMBinding.RECORD_SIZE + 4;
private static final int VALUE= PDOMBinding.RECORD_SIZE + 8;
@SuppressWarnings("hiding") @SuppressWarnings("hiding")
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 12; protected static final int RECORD_SIZE = VALUE + 4;
public PDOMCEnumerator(PDOMLinkage linkage, PDOMNode parent, IEnumerator enumerator, PDOMCEnumeration enumeration) public PDOMCEnumerator(PDOMLinkage linkage, PDOMNode parent, IEnumerator enumerator)
throws CoreException { throws CoreException {
super(linkage, parent, enumerator.getNameCharArray()); super(linkage, parent, enumerator.getNameCharArray());
final Database db = getDB(); final Database db = getDB();
db.putRecPtr(record + ENUMERATION, enumeration.getRecord());
storeValue(db, enumerator); storeValue(db, enumerator);
enumeration.addEnumerator(this);
} }
public PDOMCEnumerator(PDOMLinkage linkage, long record) { public PDOMCEnumerator(PDOMLinkage linkage, long record) {
@ -75,34 +70,12 @@ class PDOMCEnumerator extends PDOMBinding implements IEnumerator {
storeValue(getDB(), (IEnumerator) newBinding); storeValue(getDB(), (IEnumerator) newBinding);
} }
public PDOMCEnumerator getNextEnumerator() throws CoreException {
long value = getDB().getRecPtr(record + NEXT_ENUMERATOR);
return value != 0 ? new PDOMCEnumerator(getLinkage(), value) : null;
}
public void setNextEnumerator(PDOMCEnumerator enumerator) throws CoreException {
long value = enumerator != null ? enumerator.getRecord() : 0;
getDB().putRecPtr(record + NEXT_ENUMERATOR, value);
}
public IType getType() throws DOMException { public IType getType() throws DOMException {
return getEnumeration(); IIndexFragmentBinding owner = getOwner();
} if (owner instanceof IType)
return (IType) owner;
private PDOMCEnumeration getEnumeration() {
try {
return new PDOMCEnumeration(getLinkage(), getDB().getRecPtr(record + ENUMERATION));
} catch (CoreException e) {
CCorePlugin.log(e);
return null; return null;
} }
}
@Override
public IIndexFragmentBinding getOwner() {
return getEnumeration();
}
public IValue getValue() { public IValue getValue() {
try { try {

View file

@ -14,7 +14,6 @@
package org.eclipse.cdt.internal.core.pdom.dom.c; package org.eclipse.cdt.internal.core.pdom.dom.c;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.dom.ast.ICompositeType;
@ -110,6 +109,7 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants {
private PDOMBinding createBinding(PDOMNode parent, IBinding binding, long localToFile) throws CoreException { private PDOMBinding createBinding(PDOMNode parent, IBinding binding, long localToFile) throws CoreException {
PDOMBinding pdomBinding= null; PDOMBinding pdomBinding= null;
PDOMNode insertIntoIndex= null;
if (binding instanceof IField) { // must be before IVariable if (binding instanceof IField) { // must be before IVariable
if (parent instanceof IPDOMMemberOwner) if (parent instanceof IPDOMMemberOwner)
pdomBinding = new PDOMCField(this, (IPDOMMemberOwner)parent, (IField) binding); pdomBinding = new PDOMCField(this, (IPDOMMemberOwner)parent, (IField) binding);
@ -124,15 +124,11 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants {
} else if (binding instanceof IEnumeration) { } else if (binding instanceof IEnumeration) {
pdomBinding = new PDOMCEnumeration(this, parent, (IEnumeration) binding); pdomBinding = new PDOMCEnumeration(this, parent, (IEnumeration) binding);
} else if (binding instanceof IEnumerator) { } else if (binding instanceof IEnumerator) {
try { assert parent instanceof IEnumeration;
IType enumeration= ((IEnumerator)binding).getType(); pdomBinding = new PDOMCEnumerator(this, parent, (IEnumerator) binding);
if (enumeration instanceof IEnumeration) { insertIntoIndex= parent.getParentNode();
PDOMBinding pdomEnumeration = adaptBinding((IEnumeration) enumeration); if (insertIntoIndex == null) {
if (pdomEnumeration instanceof PDOMCEnumeration) insertIntoIndex= this;
pdomBinding = new PDOMCEnumerator(this, parent, (IEnumerator) binding, (PDOMCEnumeration)pdomEnumeration);
}
} catch (DOMException e) {
CCorePlugin.log(e);
} }
} else if (binding instanceof ITypedef) { } else if (binding instanceof ITypedef) {
pdomBinding = new PDOMCTypedef(this, parent, (ITypedef)binding); pdomBinding = new PDOMCTypedef(this, parent, (ITypedef)binding);
@ -141,8 +137,13 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants {
if (pdomBinding != null) { if (pdomBinding != null) {
pdomBinding.setLocalToFileRec(localToFile); pdomBinding.setLocalToFileRec(localToFile);
parent.addChild(pdomBinding); parent.addChild(pdomBinding);
if (insertIntoIndex != null) {
insertIntoIndex.addChild(pdomBinding);
}
if (parent != this && insertIntoIndex != this) {
insertIntoNestedBindingsIndex(pdomBinding); insertIntoNestedBindingsIndex(pdomBinding);
} }
}
return pdomBinding; return pdomBinding;
} }
@ -214,10 +215,6 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants {
} }
IBinding owner= binding.getOwner(); IBinding owner= binding.getOwner();
// For plain c the enumeration type is not the parent of the enumeration item.
if (owner instanceof IEnumeration) {
owner= owner.getOwner();
}
if (owner == null) { if (owner == null) {
return this; return this;
} }
@ -263,23 +260,11 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants {
if (parent == null) { if (parent == null) {
parent= getAdaptedParent(binding); parent= getAdaptedParent(binding);
} }
PDOMNode inheritFileLocal= parent;
if (binding instanceof IEnumerator) {
try {
IType enumeration= ((IEnumerator)binding).getType();
if (enumeration instanceof IEnumeration) {
inheritFileLocal= adaptBinding((IEnumeration) enumeration);
}
} catch (DOMException e) {
CCorePlugin.log(e);
}
}
if (parent == this) { if (parent == this) {
final int[] bindingTypes = new int[] {getBindingType(binding)}; final int[] bindingTypes = new int[] {getBindingType(binding)};
final char[] nameChars = binding.getNameCharArray(); final char[] nameChars = binding.getNameCharArray();
PDOMBinding nonLocal= FindBinding.findBinding(getIndex(), this, nameChars, bindingTypes, 0); PDOMBinding nonLocal= FindBinding.findBinding(getIndex(), this, nameChars, bindingTypes, 0);
long localToFileRec= getLocalToFileRec(inheritFileLocal, binding, nonLocal); long localToFileRec= getLocalToFileRec(parent, binding, nonLocal);
if (localToFileRec == 0) if (localToFileRec == 0)
return nonLocal; return nonLocal;
localToFileHolder[0]= localToFileRec; localToFileHolder[0]= localToFileRec;
@ -289,7 +274,7 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants {
final int[] bindingTypes = new int[] {getBindingType(binding)}; final int[] bindingTypes = new int[] {getBindingType(binding)};
final char[] nameChars = binding.getNameCharArray(); final char[] nameChars = binding.getNameCharArray();
PDOMBinding nonLocal= FindBinding.findBinding(parent, this, nameChars, bindingTypes, 0); PDOMBinding nonLocal= FindBinding.findBinding(parent, this, nameChars, bindingTypes, 0);
long localToFileRec= getLocalToFileRec(inheritFileLocal, binding, nonLocal); long localToFileRec= getLocalToFileRec(parent, binding, nonLocal);
if (localToFileRec == 0) if (localToFileRec == 0)
return nonLocal; return nonLocal;
localToFileHolder[0]= localToFileRec; localToFileHolder[0]= localToFileRec;

View file

@ -104,7 +104,6 @@ public class CPPFindBinding extends FindBinding {
public static PDOMBinding findBinding(PDOMNode node, PDOMLinkage linkage, char[] name, int constant, public static PDOMBinding findBinding(PDOMNode node, PDOMLinkage linkage, char[] name, int constant,
int sigHash, long localToFileRec) throws CoreException { int sigHash, long localToFileRec) throws CoreException {
// mstodo faster searches
CPPFindBindingVisitor visitor= new CPPFindBindingVisitor(linkage, name, constant, sigHash, CPPFindBindingVisitor visitor= new CPPFindBindingVisitor(linkage, name, constant, sigHash,
localToFileRec); localToFileRec);
try { try {

View file

@ -77,6 +77,12 @@ class PDOMCPPClassInstance extends PDOMCPPClassSpecialization implements ICPPTem
} }
} }
@Override
protected boolean hasOwnScope() throws CoreException {
// An instance with a declaration does not use the original template.
return hasDeclaration();
}
public boolean isExplicitSpecialization() { public boolean isExplicitSpecialization() {
return !(getCompositeScope() instanceof ICPPClassSpecializationScope); return !(getCompositeScope() instanceof ICPPClassSpecializationScope);
} }

View file

@ -129,7 +129,7 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements
public ICPPClassScope getCompositeScope() { public ICPPClassScope getCompositeScope() {
if (fScope == null) { if (fScope == null) {
try { try {
if (hasDefinition()) { if (hasOwnScope()) {
fScope= new PDOMCPPClassScope(this); fScope= new PDOMCPPClassScope(this);
return fScope; return fScope;
} }
@ -140,6 +140,10 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements
return fScope; return fScope;
} }
protected boolean hasOwnScope() throws CoreException {
return hasDefinition();
}
public PDOMCPPBase getFirstBase() throws CoreException { public PDOMCPPBase getFirstBase() throws CoreException {
long rec = getDB().getRecPtr(record + FIRSTBASE); long rec = getDB().getRecPtr(record + FIRSTBASE);
return rec != 0 ? new PDOMCPPBase(getLinkage(), rec) : null; return rec != 0 ? new PDOMCPPBase(getLinkage(), rec) : null;

View file

@ -71,7 +71,7 @@ class PDOMCPPFunctionInstance extends PDOMCPPFunctionSpecialization implements I
public boolean isExplicitSpecialization() { public boolean isExplicitSpecialization() {
try { try {
return hasDefinition(); return hasDeclaration();
} catch (CoreException e) { } catch (CoreException e) {
return false; return false;
} }

View file

@ -638,21 +638,9 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants {
if (parent == null) { if (parent == null) {
parent= adaptOrAddParent(false, binding); parent= adaptOrAddParent(false, binding);
} }
PDOMNode inheritFileLocal= parent;
if (binding instanceof IEnumerator) {
try {
IType enumeration= ((IEnumerator) binding).getType();
if (enumeration instanceof IEnumeration) {
inheritFileLocal= adaptBinding((IEnumeration) enumeration);
}
} catch (DOMException e) {
CCorePlugin.log(e);
}
}
if (parent == this) { if (parent == this) {
PDOMBinding glob= CPPFindBinding.findBinding(getIndex(), this, binding, 0); PDOMBinding glob= CPPFindBinding.findBinding(getIndex(), this, binding, 0);
final long loc= getLocalToFileRec(inheritFileLocal, binding, glob); final long loc= getLocalToFileRec(parent, binding, glob);
if (loc == 0) if (loc == 0)
return glob; return glob;
fileLocalRecHolder[0]= loc; fileLocalRecHolder[0]= loc;
@ -661,7 +649,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants {
if (parent instanceof PDOMCPPNamespace) { if (parent instanceof PDOMCPPNamespace) {
final BTree btree = ((PDOMCPPNamespace) parent).getIndex(); final BTree btree = ((PDOMCPPNamespace) parent).getIndex();
PDOMBinding glob= CPPFindBinding.findBinding(btree, this, binding, 0); PDOMBinding glob= CPPFindBinding.findBinding(btree, this, binding, 0);
final long loc= getLocalToFileRec(inheritFileLocal, binding, glob); final long loc= getLocalToFileRec(parent, binding, glob);
if (loc == 0) if (loc == 0)
return glob; return glob;
fileLocalRecHolder[0]= loc; fileLocalRecHolder[0]= loc;
@ -673,7 +661,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants {
} }
if (parent instanceof IPDOMMemberOwner) { if (parent instanceof IPDOMMemberOwner) {
PDOMBinding glob= CPPFindBinding.findBinding(parent, this, binding, 0); PDOMBinding glob= CPPFindBinding.findBinding(parent, this, binding, 0);
final long loc= getLocalToFileRec(inheritFileLocal, binding, glob); final long loc= getLocalToFileRec(parent, binding, glob);
if (loc == 0) if (loc == 0)
return glob; return glob;
fileLocalRecHolder[0]= loc; fileLocalRecHolder[0]= loc;

View file

@ -11,14 +11,12 @@
<managedBuildRevision <managedBuildRevision
fileVersion="4.0.0"> fileVersion="4.0.0">
</managedBuildRevision> </managedBuildRevision>
<tool <tool
command="${XL_compilerRoot}/xlc" command="${XL_compilerRoot}/xlc"
id="cdt.managedbuild.tool.xlc.c.linker" id="cdt.managedbuild.tool.xlc.c.linker"
name="%ToolName.linker.xlc.c" name="%ToolName.linker.xlc.c"
natureFilter="cnature" natureFilter="cnature"
superClass="org.eclipse.cdt.managedbuilder.xlc.ui.tool.abstractLinker"> superClass="org.eclipse.cdt.managedbuilder.xlc.ui.tool.abstractLinker">
</tool> </tool>
<tool <tool
command="${XL_compilerRoot}/xlC" command="${XL_compilerRoot}/xlC"
@ -394,7 +392,6 @@
name="%Option.namemangling.v3"> name="%Option.namemangling.v3">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
category="xlc.c.compiler.category.output" category="xlc.c.compiler.category.output"
id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.objectmodel" id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.objectmodel"
@ -517,7 +514,6 @@
</listOptionValue> </listOptionValue>
</option> </option>
</tool> </tool>
<projectType <projectType
buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe"
id="cdt.managedbuild.target.xlc.exe" id="cdt.managedbuild.target.xlc.exe"
@ -655,10 +651,8 @@
superClass="cdt.managedbuild.tool.xlc.assembler"> superClass="cdt.managedbuild.tool.xlc.assembler">
</tool> </tool>
</toolChain> </toolChain>
</configuration> </configuration>
</projectType> </projectType>
<projectType <projectType
buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib"
id="cdt.managedbuild.target.xlc.so" id="cdt.managedbuild.target.xlc.so"
@ -791,7 +785,6 @@
</toolChain> </toolChain>
</configuration> </configuration>
</projectType> </projectType>
<projectType <projectType
buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.staticLib" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.staticLib"
id="cdt.managedbuild.target.xlc.lib" id="cdt.managedbuild.target.xlc.lib"
@ -916,7 +909,6 @@
</toolChain> </toolChain>
</configuration> </configuration>
</projectType> </projectType>
<tool <tool
errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser" errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
id="org.eclipse.cdt.managedbuilder.xlc.ui.tool.abstractCompiler" id="org.eclipse.cdt.managedbuilder.xlc.ui.tool.abstractCompiler"
@ -964,7 +956,6 @@
id="xlc.c.compiler.option.preprocessor.undef.symbol" id="xlc.c.compiler.option.preprocessor.undef.symbol"
valueType="stringList"> valueType="stringList">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.altivec" name="%Option.altivec"
@ -973,7 +964,6 @@
id="xlc.c.compiler.option.input.altivec" id="xlc.c.compiler.option.input.altivec"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.asm" name="%Option.asm"
category="xlc.c.compiler.category.Input" category="xlc.c.compiler.category.Input"
@ -995,8 +985,6 @@
name="%Option.asm.gcc"> name="%Option.asm.gcc">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
name="%Option.qcomplexgccincl" name="%Option.qcomplexgccincl"
category="xlc.c.compiler.category.Input" category="xlc.c.compiler.category.Input"
@ -1005,7 +993,6 @@
valueType="includePath" valueType="includePath"
browseType="directory"> browseType="directory">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.Mbcs" name="%Option.Mbcs"
@ -1014,7 +1001,6 @@
id="xlc.c.compiler.option.input.mbcs" id="xlc.c.compiler.option.input.mbcs"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.Digraph" name="%Option.Digraph"
@ -1023,7 +1009,6 @@
id="xlc.c.compiler.option.input.digraph" id="xlc.c.compiler.option.input.digraph"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.Dollar" name="%Option.Dollar"
@ -1032,7 +1017,6 @@
id="xlc.c.compiler.option.input.dollar" id="xlc.c.compiler.option.input.dollar"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.Incdirfirst" name="%Option.Incdirfirst"
@ -1041,7 +1025,6 @@
id="xlc.c.compiler.option.input.dirfirst" id="xlc.c.compiler.option.input.dirfirst"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.ignprag" name="%Option.ignprag"
category="xlc.c.compiler.category.Input" category="xlc.c.compiler.category.Input"
@ -1082,7 +1065,6 @@
id="xlc.c.input.ignprag.omp"> id="xlc.c.input.ignprag.omp">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
category="xlc.c.compiler.category.Input" category="xlc.c.compiler.category.Input"
command="-qkeyword=" command="-qkeyword="
@ -1090,7 +1072,6 @@
name="%Option.Keyword" name="%Option.Keyword"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.langlvl" name="%Option.langlvl"
category="xlc.c.compiler.category.Input" category="xlc.c.compiler.category.Input"
@ -1156,7 +1137,6 @@
id="xlc.c.input.langlvl.ucs"> id="xlc.c.input.langlvl.ucs">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.Macpstr" name="%Option.Macpstr"
@ -1165,7 +1145,6 @@
id="xlc.c.compiler.option.input.macpstr" id="xlc.c.compiler.option.input.macpstr"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.sourcetype" name="%Option.sourcetype"
category="xlc.c.compiler.category.Input" category="xlc.c.compiler.category.Input"
@ -1218,7 +1197,6 @@
resourceFilter="all" resourceFilter="all"
valueType="includePath"> valueType="includePath">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.Input" name="%Option.Input"
@ -1227,7 +1205,6 @@
id="xlc.c.compiler.option.input.nostdinc" id="xlc.c.compiler.option.input.nostdinc"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.Trigraph" name="%Option.Trigraph"
@ -1244,12 +1221,10 @@
id="xlc.c.compiler.option.input.utf" id="xlc.c.compiler.option.input.utf"
valueType="boolean"> valueType="boolean">
</option> </option>
<optionCategory <optionCategory
name="%OptionCategory.Output" name="%OptionCategory.Output"
id="xlc.c.compiler.category.output"> id="xlc.c.compiler.category.output">
</optionCategory> </optionCategory>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.Trace" name="%Option.Trace"
@ -1290,7 +1265,6 @@
id="xlc.c.compiler.option.output.M" id="xlc.c.compiler.option.output.M"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.P" name="%Option.P"
@ -1299,7 +1273,6 @@
id="xlc.c.compiler.option.output.P" id="xlc.c.compiler.option.output.P"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.Assem" name="%Option.Assem"
@ -1308,8 +1281,6 @@
id="xlc.c.compiler.option.output.assem" id="xlc.c.compiler.option.output.assem"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.Strip" name="%Option.Strip"
@ -1373,14 +1344,12 @@
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
name="%Option.alloca" name="%Option.alloca"
category="xlc.c.compiler.category.output" category="xlc.c.compiler.category.output"
command="-qalloca" command="-qalloca"
id="xlc.c.compiler.option.output.alloca" id="xlc.c.compiler.option.output.alloca"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.Bitfields" name="%Option.Bitfields"
@ -1403,7 +1372,6 @@
name="%Option.Bitfields.unsigned"> name="%Option.Bitfields.unsigned">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.Chars" name="%Option.Chars"
@ -1487,7 +1455,6 @@
id="xlc.c.option.output.alignment.enum.8"> id="xlc.c.option.output.alignment.enum.8">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
name="%Option.Pic" name="%Option.Pic"
category="xlc.c.compiler.category.output" category="xlc.c.compiler.category.output"
@ -1511,7 +1478,6 @@
id="xlc.c.output.pic.large"> id="xlc.c.output.pic.large">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
category="xlc.c.compiler.category.output" category="xlc.c.compiler.category.output"
command="-qfuncsect" command="-qfuncsect"
@ -1653,8 +1619,7 @@
name="%Option.inlining" name="%Option.inlining"
category="xlc.c.compiler.category.optimization" category="xlc.c.compiler.category.optimization"
id="xlc.c.compiler.option.optimization.inlining" id="xlc.c.compiler.option.optimization.inlining"
valueType="enumerated" valueType="enumerated">
>
<enumeratedOptionValue <enumeratedOptionValue
id="xlc.c.compiler.option.optimization.inlining.default" id="xlc.c.compiler.option.optimization.inlining.default"
isDefault="true" isDefault="true"
@ -2333,7 +2298,6 @@
name="RS64III"> name="RS64III">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
name="%Option.aggrcopy" name="%Option.aggrcopy"
category="xlc.c.compiler.category.optimization" category="xlc.c.compiler.category.optimization"
@ -2355,7 +2319,6 @@
id="xlc.c.optimization.aggrcopy.overlap"> id="xlc.c.optimization.aggrcopy.overlap">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
name="%Option.alias" name="%Option.alias"
category="xlc.c.compiler.category.optimization" category="xlc.c.compiler.category.optimization"
@ -2371,7 +2334,6 @@
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.compact" name="%Option.compact"
category="xlc.c.compiler.category.optimization" category="xlc.c.compiler.category.optimization"
command="-qcompact" command="-qcompact"
@ -2393,16 +2355,13 @@
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.directstorage" name="%Option.directstorage"
category="xlc.c.compiler.category.optimization" category="xlc.c.compiler.category.optimization"
command="-qdirectstorage" command="-qdirectstorage"
id="xlc.c.compiler.option.optimization.directstorage" id="xlc.c.compiler.option.optimization.directstorage"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.fdpr" name="%Option.fdpr"
category="xlc.c.compiler.category.optimization" category="xlc.c.compiler.category.optimization"
command="-qfdpr" command="-qfdpr"
@ -2417,7 +2376,6 @@
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.ignerrno" name="%Option.ignerrno"
category="xlc.c.compiler.category.optimization" category="xlc.c.compiler.category.optimization"
command="-qignerrno" command="-qignerrno"
@ -2439,7 +2397,6 @@
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.largepage" name="%Option.largepage"
category="xlc.c.compiler.category.optimization" category="xlc.c.compiler.category.optimization"
command="-qlargepage" command="-qlargepage"
@ -2447,7 +2404,6 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.libansi" name="%Option.libansi"
category="xlc.c.compiler.category.optimization" category="xlc.c.compiler.category.optimization"
command="-qlibansi" command="-qlibansi"
@ -2455,7 +2411,6 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.pdf1" name="%Option.pdf1"
category="xlc.c.compiler.category.optimization" category="xlc.c.compiler.category.optimization"
command="-qpdf1" command="-qpdf1"
@ -2463,7 +2418,6 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.pdf2" name="%Option.pdf2"
category="xlc.c.compiler.category.optimization" category="xlc.c.compiler.category.optimization"
command="-qpdf2" command="-qpdf2"
@ -2573,7 +2527,6 @@
id="xlc.c.optimization.optimize.nostrict_induction"> id="xlc.c.optimization.optimize.nostrict_induction">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.optimization.tocdata" name="%Option.optimization.tocdata"
@ -2582,12 +2535,10 @@
id="xlc.c.compiler.option.optimization.tocdata" id="xlc.c.compiler.option.optimization.tocdata"
valueType="boolean"> valueType="boolean">
</option> </option>
<optionCategory <optionCategory
name="%OptionCategory.ifp" name="%OptionCategory.ifp"
id="xlc.c.compiler.category.ifp"> id="xlc.c.compiler.category.ifp">
</optionCategory> </optionCategory>
<option <option
name="%Option.y" name="%Option.y"
category="xlc.c.compiler.category.ifp" category="xlc.c.compiler.category.ifp"
@ -2623,7 +2574,6 @@
id="xlc.c.compiler.option.ifp.y.z"> id="xlc.c.compiler.option.ifp.y.z">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
name="%Option.float" name="%Option.float"
category="xlc.c.compiler.category.ifp" category="xlc.c.compiler.category.ifp"
@ -2659,7 +2609,6 @@
id="xlc.c.ifp.qnolonglong"> id="xlc.c.ifp.qnolonglong">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
name="%Option.rndflt" name="%Option.rndflt"
category="xlc.c.compiler.category.ifp" category="xlc.c.compiler.category.ifp"
@ -2695,8 +2644,6 @@
id="xlc.c.ifp.qrndflt.zero"> id="xlc.c.ifp.qrndflt.zero">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<optionCategory <optionCategory
name="%OptionCategory.cc" name="%OptionCategory.cc"
id="xlc.c.compiler.category.cc"> id="xlc.c.compiler.category.cc">
@ -2708,7 +2655,6 @@
id="xlc.c.compiler.option.cc.B" id="xlc.c.compiler.option.cc.B"
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.F" name="%Option.F"
category="xlc.c.compiler.category.cc" category="xlc.c.compiler.category.cc"
@ -2716,7 +2662,6 @@
id="xlc.c.compiler.option.cc.F" id="xlc.c.compiler.option.cc.F"
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.t" name="%Option.t"
category="xlc.c.compiler.category.cc" category="xlc.c.compiler.category.cc"
@ -2724,7 +2669,6 @@
id="xlc.c.compiler.option.cc.t" id="xlc.c.compiler.option.cc.t"
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.optimization.w" name="%Option.optimization.w"
category="xlc.c.compiler.category.cc" category="xlc.c.compiler.category.cc"
@ -2755,7 +2699,6 @@
name="%Option.tls" name="%Option.tls"
valueType="string"> valueType="string">
</option> </option>
<option <option
applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator" applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
category="xlc.c.compiler.category.objcc" category="xlc.c.compiler.category.objcc"
@ -2808,9 +2751,7 @@
name="%OptionCategory.lm" name="%OptionCategory.lm"
id="xlc.c.compiler.category.lm"> id="xlc.c.compiler.category.lm">
</optionCategory> </optionCategory>
<option <option
name="%Option.V" name="%Option.V"
category="xlc.c.compiler.category.lm" category="xlc.c.compiler.category.lm"
command="-V" command="-V"
@ -2904,7 +2845,6 @@
name="%Option.halt.unrecoverableError"> name="%Option.halt.unrecoverableError">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
name="%Option.info" name="%Option.info"
category="xlc.c.compiler.category.ecd" category="xlc.c.compiler.category.ecd"
@ -2913,7 +2853,6 @@
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.list" name="%Option.list"
category="xlc.c.compiler.category.lm" category="xlc.c.compiler.category.lm"
command="-qlist" command="-qlist"
@ -2921,7 +2860,6 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.listopt" name="%Option.listopt"
category="xlc.c.compiler.category.lm" category="xlc.c.compiler.category.lm"
command="-qlistopt" command="-qlistopt"
@ -2929,16 +2867,13 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.phsinfo" name="%Option.phsinfo"
category="xlc.c.compiler.category.lm" category="xlc.c.compiler.category.lm"
command="-qphsinfo" command="-qphsinfo"
id="xlc.c.compiler.option.lm.phsinfo" id="xlc.c.compiler.option.lm.phsinfo"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.noprint" name="%Option.noprint"
category="xlc.c.compiler.category.lm" category="xlc.c.compiler.category.lm"
command="-qnoprint" command="-qnoprint"
@ -2946,7 +2881,6 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.report" name="%Option.report"
category="xlc.c.compiler.category.lm" category="xlc.c.compiler.category.lm"
command="-qreport" command="-qreport"
@ -2954,7 +2888,6 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.showinc" name="%Option.showinc"
category="xlc.c.compiler.category.lm" category="xlc.c.compiler.category.lm"
command="-qshowinc" command="-qshowinc"
@ -2962,7 +2895,6 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.source" name="%Option.source"
category="xlc.c.compiler.category.lm" category="xlc.c.compiler.category.lm"
command="-qsource" command="-qsource"
@ -2970,7 +2902,6 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.srcmsg" name="%Option.srcmsg"
category="xlc.c.compiler.category.lm" category="xlc.c.compiler.category.lm"
command="-qsrcmsg" command="-qsrcmsg"
@ -2992,7 +2923,6 @@
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.warnfourcharconsts" name="%Option.warnfourcharconsts"
category="xlc.c.compiler.category.lm" category="xlc.c.compiler.category.lm"
command="-qwarnfourcharconsts" command="-qwarnfourcharconsts"
@ -3028,14 +2958,11 @@
id="xlc.c.lm.xref.xref"> id="xlc.c.lm.xref.xref">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<optionCategory <optionCategory
name="%OptionCategory.ecd" name="%OptionCategory.ecd"
id="xlc.c.compiler.category.ecd"> id="xlc.c.compiler.category.ecd">
</optionCategory> </optionCategory>
<option <option
name="%Option.g" name="%Option.g"
category="xlc.c.compiler.category.ecd" category="xlc.c.compiler.category.ecd"
command="-g" command="-g"
@ -3043,7 +2970,6 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.p" name="%Option.p"
category="xlc.c.compiler.category.ecd" category="xlc.c.compiler.category.ecd"
command="-p" command="-p"
@ -3051,7 +2977,6 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.pg" name="%Option.pg"
category="xlc.c.compiler.category.ecd" category="xlc.c.compiler.category.ecd"
command="-pg" command="-pg"
@ -3059,7 +2984,6 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.check" name="%Option.check"
category="xlc.c.compiler.category.ecd" category="xlc.c.compiler.category.ecd"
command="-qcheck" command="-qcheck"
@ -3067,7 +2991,6 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.dbxextra" name="%Option.dbxextra"
category="xlc.c.compiler.category.ecd" category="xlc.c.compiler.category.ecd"
command="-qdbxextra" command="-qdbxextra"
@ -3075,23 +2998,19 @@
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.extchk" name="%Option.extchk"
category="xlc.c.compiler.category.ecd" category="xlc.c.compiler.category.ecd"
command="-qextchk" command="-qextchk"
id="xlc.c.compiler.option.ecd.extchk" id="xlc.c.compiler.option.ecd.extchk"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.fullpath" name="%Option.fullpath"
category="xlc.c.compiler.category.ecd" category="xlc.c.compiler.category.ecd"
command="-qfullpath" command="-qfullpath"
id="xlc.c.compiler.option.ecd.fullpath" id="xlc.c.compiler.option.ecd.fullpath"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.genproto" name="%Option.genproto"
category="xlc.c.compiler.category.ecd" category="xlc.c.compiler.category.ecd"
@ -3116,7 +3035,6 @@
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
name="%Option.heapdebug" name="%Option.heapdebug"
category="xlc.c.compiler.category.ecd" category="xlc.c.compiler.category.ecd"
command="-qheapdebug" command="-qheapdebug"
@ -3131,7 +3049,6 @@
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.linedebug" name="%Option.linedebug"
category="xlc.c.compiler.category.ecd" category="xlc.c.compiler.category.ecd"
command="-qlinedebug" command="-qlinedebug"
@ -3146,7 +3063,6 @@
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.proto" name="%Option.proto"
category="xlc.c.compiler.category.ecd" category="xlc.c.compiler.category.ecd"
command="-qproto" command="-qproto"
@ -3188,7 +3104,6 @@
name="%Option.dfp.disabled"> name="%Option.dfp.disabled">
</enumeratedOptionValue> </enumeratedOptionValue>
</option> </option>
<option <option
applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator" applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
category="xlc.c.compiler.category.output" category="xlc.c.compiler.category.output"
@ -3592,7 +3507,6 @@
pathType="buildpathLibrary" pathType="buildpathLibrary"
variableList="LIBRARY_PATH"> variableList="LIBRARY_PATH">
</envVarBuildPath> </envVarBuildPath>
<optionCategory <optionCategory
name="%OptionCategory.Libs" name="%OptionCategory.Libs"
id="xlc.c.link.category.libs"> id="xlc.c.link.category.libs">
@ -3624,7 +3538,6 @@
name="%OptionCategory.Linking" name="%OptionCategory.Linking"
id="xlc.c.compiler.category.linking"> id="xlc.c.compiler.category.linking">
</optionCategory> </optionCategory>
<option <option
name="%Option.Linking.b" name="%Option.Linking.b"
category="xlc.c.compiler.category.linking" category="xlc.c.compiler.category.linking"
@ -3632,7 +3545,6 @@
id="xlc.c.compiler.option.linking.b" id="xlc.c.compiler.option.linking.b"
valueType="string"> valueType="string">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.linking.brtl" name="%Option.linking.brtl"
@ -3641,7 +3553,6 @@
id="xlc.c.compiler.option.linking.brtl" id="xlc.c.compiler.option.linking.brtl"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.linking.bundle" name="%Option.linking.bundle"
@ -3650,7 +3561,6 @@
id="xlc.c.compiler.option.linking.bundle" id="xlc.c.compiler.option.linking.bundle"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.linking.bundle_loader" name="%Option.linking.bundle_loader"
category="xlc.c.compiler.category.linking" category="xlc.c.compiler.category.linking"
@ -3658,8 +3568,6 @@
id="xlc.c.compiler.option.linking.bundle_loader" id="xlc.c.compiler.option.linking.bundle_loader"
valueType="string"> valueType="string">
</option> </option>
<option <option
browseType="file" browseType="file"
category="xlc.c.compiler.category.linking" category="xlc.c.compiler.category.linking"
@ -3668,7 +3576,6 @@
name="%Option.linking.f" name="%Option.linking.f"
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.Linking.L" name="%Option.Linking.L"
category="xlc.c.compiler.category.linking" category="xlc.c.compiler.category.linking"
@ -3676,7 +3583,6 @@
id="xlc.c.compiler.option.linking.L" id="xlc.c.compiler.option.linking.L"
valueType="string"> valueType="string">
</option> </option>
<option <option
name="%Option.Linking.l" name="%Option.Linking.l"
category="xlc.c.compiler.category.linking" category="xlc.c.compiler.category.linking"
@ -3684,7 +3590,6 @@
id="xlc.c.compiler.option.linking.l" id="xlc.c.compiler.option.linking.l"
valueType="string"> valueType="string">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.linking.r" name="%Option.linking.r"
@ -3693,7 +3598,6 @@
id="xlc.c.compiler.option.linking.r" id="xlc.c.compiler.option.linking.r"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.Linking.Z" name="%Option.Linking.Z"
category="xlc.c.compiler.category.linking" category="xlc.c.compiler.category.linking"
@ -3701,8 +3605,6 @@
id="xlc.c.compiler.option.linking.Z" id="xlc.c.compiler.option.linking.Z"
valueType="string"> valueType="string">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.linking.inlglue" name="%Option.linking.inlglue"
@ -3711,7 +3613,6 @@
id="xlc.c.compiler.option.linking.qinlglue" id="xlc.c.compiler.option.linking.qinlglue"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
defaultValue="false" defaultValue="false"
name="%Option.linking.lib" name="%Option.linking.lib"
@ -3720,7 +3621,6 @@
id="xlc.c.compiler.option.linking.qlib" id="xlc.c.compiler.option.linking.qlib"
valueType="boolean"> valueType="boolean">
</option> </option>
<option <option
name="%Option.Linking.priority" name="%Option.Linking.priority"
category="xlc.c.compiler.category.linking" category="xlc.c.compiler.category.linking"
@ -3873,7 +3773,6 @@
outputs="o"> outputs="o">
</outputType> </outputType>
</tool> </tool>
</extension> </extension>
<extension <extension
point="org.eclipse.ui.preferencePages"> point="org.eclipse.ui.preferencePages">
@ -3905,10 +3804,8 @@
<or> <or>
<instanceof value="org.eclipse.core.resources.IProject"/> <instanceof value="org.eclipse.core.resources.IProject"/>
<instanceof value="org.eclipse.cdt.core.model.ICProject"/> <instanceof value="org.eclipse.cdt.core.model.ICProject"/>
<instanceof value="org.eclipse.core.resources.IFolder"/> <instanceof value="org.eclipse.core.resources.IFolder"/>
<instanceof value="org.eclipse.cdt.core.model.ICContainer"/> <instanceof value="org.eclipse.cdt.core.model.ICContainer"/>
<instanceof value="org.eclipse.cdt.core.model.ITranslationUnit"/> <instanceof value="org.eclipse.cdt.core.model.ITranslationUnit"/>
<instanceof value="org.eclipse.core.resources.IFile"/> <instanceof value="org.eclipse.core.resources.IFile"/>
</or> </or>
@ -3930,7 +3827,6 @@
<projectType <projectType
projectTypeID="cdt.managedbuild.target.xlc.lib"> projectTypeID="cdt.managedbuild.target.xlc.lib">
</projectType> </projectType>
</wizardPage> </wizardPage>
</extension> </extension>
<!--extension <!--extension
@ -3943,6 +3839,3 @@
</variable> </variable>
</extension --> </extension -->
</plugin> </plugin>