C++, add support for template introductions.

Thanks to mickk-on-cpp.
This commit is contained in:
Jakob Lykke Andersen
2016-05-30 23:18:10 +09:00
parent 74191207db
commit 8a64cfdd91
4 changed files with 191 additions and 33 deletions
+30
View File
@@ -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