Added C++0x support for 'extern' explicit template instantiation without the translation unit.
Added test cases. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2009-matevz@11385 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
72708ea173
commit
e1b5d43cd8
7 changed files with 14 additions and 9 deletions
|
|
@ -403,7 +403,8 @@ CPP0X_TEST_CASES = \
|
||||||
cpp0x_template_double_brackets \
|
cpp0x_template_double_brackets \
|
||||||
cpp0x_explicit_conversion_operators \
|
cpp0x_explicit_conversion_operators \
|
||||||
cpp0x_raw_string_literals \
|
cpp0x_raw_string_literals \
|
||||||
cpp0x_static_assert
|
cpp0x_static_assert \
|
||||||
|
cpp0x_template_explicit
|
||||||
# cpp0x_constexpr # not supported by any compilers yet
|
# cpp0x_constexpr # not supported by any compilers yet
|
||||||
|
|
||||||
# Broken C++0x test cases.
|
# Broken C++0x test cases.
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
/* This interface tests whether Swig supports the new "constexpr" keyword
|
/* This interface tests whether Swig supports the new "constexpr" keyword
|
||||||
introduced by C++0x.
|
introduced by C++0x.
|
||||||
*/
|
*/
|
||||||
%module foo
|
%module cpp0x_constexpr
|
||||||
|
|
||||||
%inline %{
|
%inline %{
|
||||||
class TestClass {
|
class TestClass {
|
||||||
|
public:
|
||||||
constexpr int func() { return 10; }
|
constexpr int func() { return 10; }
|
||||||
};
|
};
|
||||||
%}
|
%}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/* This interface checks whether Swig correctly compiles the new
|
/* This interface checks whether Swig correctly compiles the new
|
||||||
explicit conversion operators feature introduced in C++0x.
|
explicit conversion operators feature introduced in C++0x.
|
||||||
*/
|
*/
|
||||||
%module foo
|
%module cpp0x_explicit_conversion_operators
|
||||||
|
|
||||||
%inline %{
|
%inline %{
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,7 @@
|
||||||
|
|
||||||
This module also tests whether Swig correctly parses custom string delimiters.
|
This module also tests whether Swig correctly parses custom string delimiters.
|
||||||
*/
|
*/
|
||||||
|
%module cpp0x_raw_string_literals
|
||||||
%module raw_string_literals
|
|
||||||
|
|
||||||
%inline %{
|
%inline %{
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/* This test case checks whether swig correctly parses and ignores the
|
/* This test case checks whether swig correctly parses and ignores the
|
||||||
keywords "static_assert()" inside the class or struct.
|
keywords "static_assert()" inside the class or struct.
|
||||||
*/
|
*/
|
||||||
%module static_assert
|
%module cpp0x_static_assert
|
||||||
|
|
||||||
%inline %{
|
%inline %{
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
in the template syntax without having a space inbetween. This feature was
|
in the template syntax without having a space inbetween. This feature was
|
||||||
introduced in new C++0x standard.
|
introduced in new C++0x standard.
|
||||||
*/
|
*/
|
||||||
%module foo
|
%module cpp0x_template_double_brackets
|
||||||
%inline %{
|
%inline %{
|
||||||
#include <map>
|
#include <map>
|
||||||
std::map<int,std::map<int, double>> m;
|
std::map<int,std::map<int, double>> m;
|
||||||
|
|
|
||||||
|
|
@ -3850,7 +3850,11 @@ cpp_template_decl : TEMPLATE LESSTHAN template_parms GREATERTHAN { template_para
|
||||||
Namespaceprefix = Swig_symbol_qualifiedscopename(0);
|
Namespaceprefix = Swig_symbol_qualifiedscopename(0);
|
||||||
if (error) $$ = 0;
|
if (error) $$ = 0;
|
||||||
}
|
}
|
||||||
| TEMPLATE cpptype idcolon {
|
| TEMPLATE cpptype idcolon { /* Explicit template instantiation */
|
||||||
|
Swig_warning(WARN_PARSE_EXPLICIT_TEMPLATE, cparse_file, cparse_line, "Explicit template instantiation ignored.\n");
|
||||||
|
$$ = 0;
|
||||||
|
}
|
||||||
|
| EXTERN TEMPLATE cpptype idcolon { /* Explicit template instantiation without the translation unit */
|
||||||
Swig_warning(WARN_PARSE_EXPLICIT_TEMPLATE, cparse_file, cparse_line, "Explicit template instantiation ignored.\n");
|
Swig_warning(WARN_PARSE_EXPLICIT_TEMPLATE, cparse_file, cparse_line, "Explicit template instantiation ignored.\n");
|
||||||
$$ = 0;
|
$$ = 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue