From 072b8512ea7ffded0f5feedab57b369f47faa8b4 Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Sat, 9 Mar 2013 22:44:23 -0500 Subject: [PATCH] Bug 402807 - Partial specialization for vararg function type Change-Id: I2fa7bdede392a5b51da065d1d6196b10f2a52d6a Reviewed-on: https://git.eclipse.org/r/11025 Reviewed-by: Sergey Prigogin IP-Clean: Sergey Prigogin Tested-by: Sergey Prigogin --- .../core/parser/tests/ast2/AST2TemplateTests.java | 13 +++++++++++++ .../cpp/semantics/TemplateArgumentDeduction.java | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java index 7ec52522513..995369058a8 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java @@ -7195,6 +7195,19 @@ public class AST2TemplateTests extends AST2TestBase { parseAndCheckBindings(); } + // template + // struct waldo { + // typedef int type; + // }; + // + // template + // struct waldo; + // + // typedef waldo::type Type; + public void testPartialSpecializationForVarargFunctionType_402807() throws Exception { + parseAndCheckBindings(); + } + // template // struct meta { // static const bool value = 1; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java index f03403601e6..6dd0f7bb428 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java @@ -922,7 +922,7 @@ public class TemplateArgumentDeduction { private boolean fromFunctionType(ICPPFunctionType ftp, ICPPFunctionType fta, IASTNode point) throws DOMException { - if (ftp.isConst() != fta.isConst() || ftp.isVolatile() != fta.isVolatile()) + if (ftp.isConst() != fta.isConst() || ftp.isVolatile() != fta.isVolatile() || ftp.takesVarArgs() != fta.takesVarArgs()) return false; if (!fromType(ftp.getReturnType(), fta.getReturnType(), false, point))