summaryrefslogtreecommitdiff
path: root/tests/test_domain_cpp.py
diff options
context:
space:
mode:
authorJakob Lykke Andersen <Jakob@caput.dk>2016-05-28 22:00:13 +0900
committerJakob Lykke Andersen <Jakob@caput.dk>2016-05-30 23:18:10 +0900
commit8a64cfdd91f261925556649c779bea3d2fcfa658 (patch)
treec85645e06efa8073f18f8fb8d7481a9252708741 /tests/test_domain_cpp.py
parent74191207db56d07f866de612995c798172f5e302 (diff)
downloadsphinx-git-8a64cfdd91f261925556649c779bea3d2fcfa658.tar.gz
C++, add support for template introductions.
Thanks to mickk-on-cpp.
Diffstat (limited to 'tests/test_domain_cpp.py')
-rw-r--r--tests/test_domain_cpp.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/test_domain_cpp.py b/tests/test_domain_cpp.py
index 16db7cdb8..721d63f9a 100644
--- a/tests/test_domain_cpp.py
+++ b/tests/test_domain_cpp.py
@@ -410,6 +410,36 @@ def test_templates():
None, "I00ElsRNSt13basic_ostreamI4Char6TraitsEE"
"RK18c_string_view_baseIK4Char6TraitsE")
+ # template introductions
+ raises(DefinitionError, parse, 'enum', 'abc::ns::foo{id_0, id_1, id_2} A')
+ raises(DefinitionError, parse, 'enumerator', 'abc::ns::foo{id_0, id_1, id_2} A')
+ check('class', 'abc::ns::foo{id_0, id_1, id_2} xyz::bar',
+ None, 'I000EMissingRequiresManglingN3xyz3barE')
+ check('class', 'abc::ns::foo{id_0, id_1, ...id_2} xyz::bar',
+ None, 'I00DpEMissingRequiresManglingN3xyz3barE')
+ check('class', 'abc::ns::foo{id_0, id_1, id_2} xyz::bar<id_0, id_1, id_2>',
+ None, 'I000EMissingRequiresManglingN3xyz3barI4id_04id_14id_2EE')
+ check('class', 'abc::ns::foo{id_0, id_1, ...id_2} xyz::bar<id_0, id_1, id_2...>',
+ None, 'I00DpEMissingRequiresManglingN3xyz3barI4id_04id_1Dp4id_2EE')
+
+ check('class', 'template<> Concept{U} A<int>::B',
+ None, 'IEI0EMissingRequiresManglingN1AIiE1BE')
+
+ check('type', 'abc::ns::foo{id_0, id_1, id_2} xyz::bar = ghi::qux',
+ None, 'I000EMissingRequiresManglingN3xyz3barE')
+ check('type', 'abc::ns::foo{id_0, id_1, ...id_2} xyz::bar = ghi::qux',
+ None, 'I00DpEMissingRequiresManglingN3xyz3barE')
+ check('function', 'abc::ns::foo{id_0, id_1, id_2} void xyz::bar()',
+ None, 'I000EMissingRequiresManglingN3xyz3barEv')
+ check('function', 'abc::ns::foo{id_0, id_1, ...id_2} void xyz::bar()',
+ None, 'I00DpEMissingRequiresManglingN3xyz3barEv')
+ check('member', 'abc::ns::foo{id_0, id_1, id_2} ghi::qux xyz::bar',
+ None, 'I000EMissingRequiresManglingN3xyz3barE')
+ check('member', 'abc::ns::foo{id_0, id_1, ...id_2} ghi::qux xyz::bar',
+ None, 'I00DpEMissingRequiresManglingN3xyz3barE')
+ check('concept', 'Iterator{T, U} Another',
+ None, 'I00EMissingRequiresMangling7Another')
+
#def test_print():
# # used for getting all the ids out for checking