From 21e7b5bcf63c371e8781717a49f650c618943d2d Mon Sep 17 00:00:00 2001 From: kroening Date: Tue, 26 Aug 2014 07:39:30 +0000 Subject: [PATCH] don't check number of arguments for partial template specialisation git-svn-id: svn+ssh://svn.cprover.org/srv/svn/cbmc/trunk@4535 6afb6bc1-c8e4-404c-8f48-9ae832c5b171 --- regression/cpp/Template_Default_Parameters1/main.cpp | 3 +++ regression/cpp/Template_Default_Parameters1/test.desc | 3 +-- regression/cpp/Template_Parameters1/test.desc | 1 - src/cpp/cpp_typecheck_template.cpp | 11 +---------- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/regression/cpp/Template_Default_Parameters1/main.cpp b/regression/cpp/Template_Default_Parameters1/main.cpp index 24f3e7ae68..dac59f40e4 100644 --- a/regression/cpp/Template_Default_Parameters1/main.cpp +++ b/regression/cpp/Template_Default_Parameters1/main.cpp @@ -14,3 +14,6 @@ template<> struct p { typedef long double type; }; +int main() +{ +} diff --git a/regression/cpp/Template_Default_Parameters1/test.desc b/regression/cpp/Template_Default_Parameters1/test.desc index d6d2c6a0cf..1567bd1e5d 100644 --- a/regression/cpp/Template_Default_Parameters1/test.desc +++ b/regression/cpp/Template_Default_Parameters1/test.desc @@ -1,8 +1,7 @@ -KNOWNBUG +CORE main.cpp ^EXIT=0$ ^SIGNAL=0$ -- ^warning: ignoring - diff --git a/regression/cpp/Template_Parameters1/test.desc b/regression/cpp/Template_Parameters1/test.desc index a549e48222..00e7b725a0 100644 --- a/regression/cpp/Template_Parameters1/test.desc +++ b/regression/cpp/Template_Parameters1/test.desc @@ -5,4 +5,3 @@ main.ii ^SIGNAL=0$ -- ^warning: ignoring - diff --git a/src/cpp/cpp_typecheck_template.cpp b/src/cpp/cpp_typecheck_template.cpp index 7bbae9fee4..14265c0b5c 100644 --- a/src/cpp/cpp_typecheck_template.cpp +++ b/src/cpp/cpp_typecheck_template.cpp @@ -698,19 +698,10 @@ void cpp_typecheckt::convert_class_template_specialization( #endif { - // partial -- we typecheck + // partial specialization -- we typecheck declaration.partial_specialization_args()=template_args_non_tc; declaration.set_specialization_of(template_symbol.name); - // We can't typecheck arguments yet, they are used - // for guessing later. But we can check the number. - if(template_args_non_tc.arguments().size()!= - to_cpp_declaration(template_symbol.type).template_type().template_parameters().size()) - { - err_location(cpp_name.location()); - throw "template specialization with wrong number of arguments"; - } - typecheck_class_template(declaration); } }