mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 365981: Detect syntax error replacing pointer to member.
This commit is contained in:
parent
934ea4b7b8
commit
282daa7a8e
2 changed files with 12 additions and 2 deletions
|
@ -5644,7 +5644,16 @@ public class AST2TemplateTests extends AST2BaseTest {
|
||||||
// int main() {
|
// int main() {
|
||||||
// foo(0);
|
// foo(0);
|
||||||
// }
|
// }
|
||||||
public void testSyntaxFailureInstantiatingFunctionTemplate_365981() throws Exception {
|
public void testSyntaxFailureInstantiatingFunctionTemplate_365981a() throws Exception {
|
||||||
|
parseAndCheckBindings();
|
||||||
|
}
|
||||||
|
|
||||||
|
// template <typename T> bool bar(T);
|
||||||
|
// template <typename T> bool bar(T, void(T::*)() = 0);
|
||||||
|
// void test() {
|
||||||
|
// bar(0);
|
||||||
|
// }
|
||||||
|
public void testSyntaxFailureInstantiatingFunctionTemplate_365981b() throws Exception {
|
||||||
parseAndCheckBindings();
|
parseAndCheckBindings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTQueries;
|
||||||
import org.eclipse.cdt.internal.core.dom.parser.IASTInternalScope;
|
import org.eclipse.cdt.internal.core.dom.parser.IASTInternalScope;
|
||||||
import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
|
import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
|
||||||
import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding;
|
import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.dom.parser.ProblemType;
|
||||||
import org.eclipse.cdt.internal.core.dom.parser.Value;
|
import org.eclipse.cdt.internal.core.dom.parser.Value;
|
||||||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName;
|
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName;
|
||||||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPArrayType;
|
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPArrayType;
|
||||||
|
@ -1143,7 +1144,7 @@ public class CPPTemplates {
|
||||||
IType newMemberOfClass = instantiateType(memberOfClass, tpMap, packOffset, within);
|
IType newMemberOfClass = instantiateType(memberOfClass, tpMap, packOffset, within);
|
||||||
if (!(newMemberOfClass instanceof ICPPClassType || newMemberOfClass instanceof UniqueType
|
if (!(newMemberOfClass instanceof ICPPClassType || newMemberOfClass instanceof UniqueType
|
||||||
|| newMemberOfClass instanceof ICPPUnknownBinding)) {
|
|| newMemberOfClass instanceof ICPPUnknownBinding)) {
|
||||||
newMemberOfClass = memberOfClass;
|
return new ProblemType(ISemanticProblem.BINDING_INVALID_TYPE);
|
||||||
}
|
}
|
||||||
if (newNestedType != nestedType || newMemberOfClass != memberOfClass) {
|
if (newNestedType != nestedType || newMemberOfClass != memberOfClass) {
|
||||||
return new CPPPointerToMemberType(newNestedType, newMemberOfClass,
|
return new CPPPointerToMemberType(newNestedType, newMemberOfClass,
|
||||||
|
|
Loading…
Add table
Reference in a new issue