mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 14:42:11 +02:00
Bug 538069 - Save non-type template parameter...
... of template template parameter in index. Fixes false positive "Invalid template arguments". Change-Id: I82cd9aece8f03142cbdcf5d1058113684c29d6fe Signed-off-by: Hannes Vogt <hannes@havogt.de>
This commit is contained in:
parent
ae8442fd6d
commit
8492296d24
2 changed files with 15 additions and 0 deletions
|
@ -2223,6 +2223,18 @@ public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBa
|
||||||
checkBindings();
|
checkBindings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// template <template <int... T1> class TT>
|
||||||
|
// struct my_template {
|
||||||
|
// };
|
||||||
|
|
||||||
|
// template<int...>
|
||||||
|
// struct my_type{};
|
||||||
|
//
|
||||||
|
// using foo = my_template<my_type>;
|
||||||
|
public void testTemplateTemplateNonTypeParameterPack_bug538069() throws Exception {
|
||||||
|
checkBindings();
|
||||||
|
}
|
||||||
|
|
||||||
// template<typename T>
|
// template<typename T>
|
||||||
// struct S {
|
// struct S {
|
||||||
// T t;
|
// T t;
|
||||||
|
|
|
@ -43,6 +43,7 @@ import org.eclipse.cdt.internal.core.pdom.db.Database;
|
||||||
import org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList;
|
import org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList;
|
||||||
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;
|
||||||
|
import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkage.ConfigureTemplateParameters;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -76,6 +77,7 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding
|
||||||
db.putInt(record + PARAMETERID, id);
|
db.putInt(record + PARAMETERID, id);
|
||||||
final ICPPTemplateParameter[] origParams= param.getTemplateParameters();
|
final ICPPTemplateParameter[] origParams= param.getTemplateParameters();
|
||||||
final IPDOMCPPTemplateParameter[] params = PDOMTemplateParameterArray.createPDOMTemplateParameters(linkage, this, origParams);
|
final IPDOMCPPTemplateParameter[] params = PDOMTemplateParameterArray.createPDOMTemplateParameters(linkage, this, origParams);
|
||||||
|
((PDOMCPPLinkage)linkage).new ConfigureTemplateParameters(origParams, params);
|
||||||
long rec= PDOMTemplateParameterArray.putArray(db, params);
|
long rec= PDOMTemplateParameterArray.putArray(db, params);
|
||||||
getDB().putRecPtr(record + PARAMETERS, rec);
|
getDB().putRecPtr(record + PARAMETERS, rec);
|
||||||
}
|
}
|
||||||
|
@ -220,6 +222,7 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding
|
||||||
IPDOMCPPTemplateParameter[] oldParams= getTemplateParameters();
|
IPDOMCPPTemplateParameter[] oldParams= getTemplateParameters();
|
||||||
try {
|
try {
|
||||||
params= PDOMTemplateParameterArray.createPDOMTemplateParameters(getLinkage(), this, ttp.getTemplateParameters());
|
params= PDOMTemplateParameterArray.createPDOMTemplateParameters(getLinkage(), this, ttp.getTemplateParameters());
|
||||||
|
((PDOMCPPLinkage)linkage).new ConfigureTemplateParameters(ttp.getTemplateParameters(), params);
|
||||||
long newRec= PDOMTemplateParameterArray.putArray(db, params);
|
long newRec= PDOMTemplateParameterArray.putArray(db, params);
|
||||||
db.putRecPtr(record + PARAMETERS, newRec);
|
db.putRecPtr(record + PARAMETERS, newRec);
|
||||||
if (oldRec != 0)
|
if (oldRec != 0)
|
||||||
|
|
Loading…
Add table
Reference in a new issue