Fix template specialization unit tests
This commit is contained in:
parent
cd110bbe29
commit
d97ed6c99c
@ -296,7 +296,7 @@ def test_class_member_spec_2():
|
||||
),
|
||||
fields=[
|
||||
Field(
|
||||
name="C",
|
||||
access="private",
|
||||
type=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
@ -305,10 +305,10 @@ def test_class_member_spec_2():
|
||||
]
|
||||
)
|
||||
),
|
||||
access="private",
|
||||
name="C",
|
||||
),
|
||||
Field(
|
||||
name="data",
|
||||
access="private",
|
||||
type=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
@ -318,7 +318,15 @@ def test_class_member_spec_2():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="int")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="int"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
@ -326,7 +334,7 @@ def test_class_member_spec_2():
|
||||
]
|
||||
)
|
||||
),
|
||||
access="private",
|
||||
name="data",
|
||||
),
|
||||
],
|
||||
methods=[
|
||||
@ -617,7 +625,7 @@ def test_class_member_spec_6():
|
||||
),
|
||||
fields=[
|
||||
Field(
|
||||
name="s",
|
||||
access="public",
|
||||
type=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
@ -627,9 +635,15 @@ def test_class_member_spec_6():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="CharT")
|
||||
]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="CharT"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
@ -637,7 +651,7 @@ def test_class_member_spec_6():
|
||||
]
|
||||
)
|
||||
),
|
||||
access="public",
|
||||
name="s",
|
||||
)
|
||||
],
|
||||
)
|
||||
@ -1662,7 +1676,15 @@ def test_initializer_with_initializer_list_1():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="int")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="int"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
@ -1747,9 +1769,15 @@ def test_initializer_with_initializer_list_2():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="R")
|
||||
]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="R"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
@ -2438,10 +2466,26 @@ def test_class_multi_vars():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="string")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="string"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="int")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="int"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
@ -2461,10 +2505,26 @@ def test_class_multi_vars():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="string")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="string"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="int")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="int"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
@ -2484,10 +2544,26 @@ def test_class_multi_vars():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="string")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="string"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="int")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="int"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
|
@ -220,7 +220,15 @@ def test_class_base_specialized():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="Green")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="Green"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
|
@ -433,10 +433,17 @@ def test_fn_template_ptr():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="Pointer"),
|
||||
Token(value="*"),
|
||||
]
|
||||
arg=Pointer(
|
||||
ptr_to=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="Pointer"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
@ -458,10 +465,17 @@ def test_fn_template_ptr():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="Pointer"),
|
||||
Token(value="*"),
|
||||
]
|
||||
arg=Pointer(
|
||||
ptr_to=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="Pointer"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
|
@ -4,6 +4,7 @@ from cxxheaderparser.types import (
|
||||
Array,
|
||||
BaseClass,
|
||||
ClassDecl,
|
||||
DecltypeSpecifier,
|
||||
Field,
|
||||
ForwardDecl,
|
||||
Function,
|
||||
@ -52,10 +53,26 @@ def test_template_base_template_ns():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="int")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="int"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="int")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="int"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
@ -341,15 +358,42 @@ def test_template_template_template():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="TT"),
|
||||
Token(value="<"),
|
||||
Token(value="T1"),
|
||||
Token(value=","),
|
||||
Token(value="Rest"),
|
||||
Token(value="..."),
|
||||
Token(value=">"),
|
||||
]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="TT",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="T1"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="Rest"
|
||||
)
|
||||
]
|
||||
)
|
||||
),
|
||||
param_pack=True,
|
||||
),
|
||||
]
|
||||
),
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
@ -420,13 +464,13 @@ def test_template_static_var():
|
||||
),
|
||||
fields=[
|
||||
Field(
|
||||
name="x",
|
||||
access="public",
|
||||
type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="int")]
|
||||
)
|
||||
),
|
||||
access="public",
|
||||
name="x",
|
||||
static=True,
|
||||
)
|
||||
],
|
||||
@ -439,7 +483,15 @@ def test_template_static_var():
|
||||
NameSpecifier(
|
||||
name="X",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[TemplateArgument(tokens=[Token(value="T")])]
|
||||
args=[
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[NameSpecifier(name="T")]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
),
|
||||
NameSpecifier(name="x"),
|
||||
@ -547,10 +599,26 @@ def test_template_fn_param_initializer():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="T")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="T"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="U")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="U"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
@ -624,28 +692,73 @@ def test_template_huge():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="unsigned")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="unsigned"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="std"),
|
||||
Token(value="::"),
|
||||
Token(value="pair"),
|
||||
Token(value="<"),
|
||||
Token(value="unsigned"),
|
||||
Token(value=","),
|
||||
Token(
|
||||
value="SnailTemplateClass"
|
||||
),
|
||||
Token(value="<"),
|
||||
Token(
|
||||
value="SnailNamespace"
|
||||
),
|
||||
Token(value="::"),
|
||||
Token(value="SnailClass"),
|
||||
Token(value=">"),
|
||||
Token(value=">"),
|
||||
]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="std"
|
||||
),
|
||||
NameSpecifier(
|
||||
name="pair",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="unsigned"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="SnailTemplateClass",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="SnailNamespace"
|
||||
),
|
||||
NameSpecifier(
|
||||
name="SnailClass"
|
||||
),
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
@ -673,36 +786,73 @@ def test_template_huge():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(
|
||||
value="unsigned"
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="unsigned"
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="std"),
|
||||
Token(value="::"),
|
||||
Token(value="pair"),
|
||||
Token(value="<"),
|
||||
Token(
|
||||
value="unsigned"
|
||||
),
|
||||
Token(value=","),
|
||||
Token(
|
||||
value="SnailTemplateClass"
|
||||
),
|
||||
Token(value="<"),
|
||||
Token(
|
||||
value="SnailNamespace"
|
||||
),
|
||||
Token(value="::"),
|
||||
Token(
|
||||
value="SnailClass"
|
||||
),
|
||||
Token(value=">"),
|
||||
Token(value=">"),
|
||||
]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="std"
|
||||
),
|
||||
NameSpecifier(
|
||||
name="pair",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="unsigned"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="SnailTemplateClass",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="SnailNamespace"
|
||||
),
|
||||
NameSpecifier(
|
||||
name="SnailClass"
|
||||
),
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
@ -740,7 +890,15 @@ def test_template_specialized():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="int")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="int"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
@ -799,7 +957,15 @@ def test_template_class_defaults():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="VALUE")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="VALUE"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
@ -953,10 +1119,26 @@ def test_template_many_packs():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="Type")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="Type"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="int")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="int"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
@ -995,29 +1177,67 @@ def test_template_many_packs():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(
|
||||
value="concat_iterator"
|
||||
),
|
||||
Token(value="<"),
|
||||
Token(value="ValueT"),
|
||||
Token(value=","),
|
||||
Token(value="IterTs"),
|
||||
Token(value="..."),
|
||||
Token(value=">"),
|
||||
]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="concat_iterator",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="ValueT"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="IterTs"
|
||||
)
|
||||
]
|
||||
)
|
||||
),
|
||||
param_pack=True,
|
||||
),
|
||||
]
|
||||
),
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="std"),
|
||||
Token(value="::"),
|
||||
Token(
|
||||
value="forward_iterator_tag"
|
||||
),
|
||||
]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="std"
|
||||
),
|
||||
NameSpecifier(
|
||||
name="forward_iterator_tag"
|
||||
),
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="ValueT")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="ValueT"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
@ -1052,24 +1272,34 @@ def test_template_many_packs():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="N"),
|
||||
Token(value="-"),
|
||||
Token(value="1"),
|
||||
]
|
||||
arg=Value(
|
||||
tokens=[
|
||||
Token(value="N"),
|
||||
Token(value="-"),
|
||||
Token(value="1"),
|
||||
]
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="N"),
|
||||
Token(value="-"),
|
||||
Token(value="1"),
|
||||
]
|
||||
arg=Value(
|
||||
tokens=[
|
||||
Token(value="N"),
|
||||
Token(value="-"),
|
||||
Token(value="1"),
|
||||
]
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="I"),
|
||||
Token(value="..."),
|
||||
]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="I"
|
||||
)
|
||||
]
|
||||
)
|
||||
),
|
||||
param_pack=True,
|
||||
),
|
||||
]
|
||||
),
|
||||
@ -1115,12 +1345,18 @@ def test_template_many_packs():
|
||||
name="build_index_impl",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(tokens=[Token(value="0")]),
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="I"),
|
||||
Token(value="..."),
|
||||
]
|
||||
arg=Value(tokens=[Token(value="0")])
|
||||
),
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(name="I")
|
||||
]
|
||||
)
|
||||
),
|
||||
param_pack=True,
|
||||
),
|
||||
]
|
||||
),
|
||||
@ -1138,10 +1374,16 @@ def test_template_many_packs():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="I"),
|
||||
Token(value="..."),
|
||||
]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="I"
|
||||
)
|
||||
]
|
||||
)
|
||||
),
|
||||
param_pack=True,
|
||||
)
|
||||
]
|
||||
),
|
||||
@ -1176,60 +1418,179 @@ def test_template_many_packs():
|
||||
name="is_callable",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(tokens=[Token(value="F")]),
|
||||
TemplateArgument(tokens=[Token(value="P")]),
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="typelist"),
|
||||
Token(value="<"),
|
||||
Token(value="T"),
|
||||
Token(value="..."),
|
||||
Token(value=">"),
|
||||
]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(name="F")
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="void_t"),
|
||||
Token(value="<"),
|
||||
Token(value="decltype"),
|
||||
Token(value="("),
|
||||
Token(value="("),
|
||||
Token(value="("),
|
||||
Token(value="*"),
|
||||
Token(value="std"),
|
||||
Token(value="::"),
|
||||
Token(value="declval"),
|
||||
Token(value="<"),
|
||||
Token(value="P"),
|
||||
Token(value=">"),
|
||||
Token(value="("),
|
||||
Token(value=")"),
|
||||
Token(value=")"),
|
||||
Token(value="."),
|
||||
Token(value="*"),
|
||||
Token(value="std"),
|
||||
Token(value="::"),
|
||||
Token(value="declval"),
|
||||
Token(value="<"),
|
||||
Token(value="F"),
|
||||
Token(value=">"),
|
||||
Token(value="("),
|
||||
Token(value=")"),
|
||||
Token(value=")"),
|
||||
Token(value="("),
|
||||
Token(value="std"),
|
||||
Token(value="::"),
|
||||
Token(value="declval"),
|
||||
Token(value="<"),
|
||||
Token(value="T"),
|
||||
Token(value=">"),
|
||||
Token(value="("),
|
||||
Token(value=")"),
|
||||
Token(value="..."),
|
||||
Token(value=")"),
|
||||
Token(value=")"),
|
||||
Token(value=">"),
|
||||
]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(name="P")
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="typelist",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="T"
|
||||
)
|
||||
]
|
||||
)
|
||||
),
|
||||
param_pack=True,
|
||||
)
|
||||
]
|
||||
),
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(
|
||||
name="void_t",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
DecltypeSpecifier(
|
||||
tokens=[
|
||||
Token(
|
||||
value="("
|
||||
),
|
||||
Token(
|
||||
value="("
|
||||
),
|
||||
Token(
|
||||
value="*"
|
||||
),
|
||||
Token(
|
||||
value="std"
|
||||
),
|
||||
Token(
|
||||
value="::"
|
||||
),
|
||||
Token(
|
||||
value="declval"
|
||||
),
|
||||
Token(
|
||||
value="<"
|
||||
),
|
||||
Token(
|
||||
value="P"
|
||||
),
|
||||
Token(
|
||||
value=">"
|
||||
),
|
||||
Token(
|
||||
value="("
|
||||
),
|
||||
Token(
|
||||
value=")"
|
||||
),
|
||||
Token(
|
||||
value=")"
|
||||
),
|
||||
Token(
|
||||
value="."
|
||||
),
|
||||
Token(
|
||||
value="*"
|
||||
),
|
||||
Token(
|
||||
value="std"
|
||||
),
|
||||
Token(
|
||||
value="::"
|
||||
),
|
||||
Token(
|
||||
value="declval"
|
||||
),
|
||||
Token(
|
||||
value="<"
|
||||
),
|
||||
Token(
|
||||
value="F"
|
||||
),
|
||||
Token(
|
||||
value=">"
|
||||
),
|
||||
Token(
|
||||
value="("
|
||||
),
|
||||
Token(
|
||||
value=")"
|
||||
),
|
||||
Token(
|
||||
value=")"
|
||||
),
|
||||
Token(
|
||||
value="("
|
||||
),
|
||||
Token(
|
||||
value="std"
|
||||
),
|
||||
Token(
|
||||
value="::"
|
||||
),
|
||||
Token(
|
||||
value="declval"
|
||||
),
|
||||
Token(
|
||||
value="<"
|
||||
),
|
||||
Token(
|
||||
value="T"
|
||||
),
|
||||
Token(
|
||||
value=">"
|
||||
),
|
||||
Token(
|
||||
value="("
|
||||
),
|
||||
Token(
|
||||
value=")"
|
||||
),
|
||||
Token(
|
||||
value="..."
|
||||
),
|
||||
Token(
|
||||
value=")"
|
||||
),
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
|
@ -45,7 +45,15 @@ def test_simple_typedef():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[Token(value="int")]
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="int"
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
|
@ -4,6 +4,7 @@ from cxxheaderparser.types import (
|
||||
BaseClass,
|
||||
ClassDecl,
|
||||
Function,
|
||||
FunctionType,
|
||||
FundamentalSpecifier,
|
||||
Method,
|
||||
NameSpecifier,
|
||||
@ -139,7 +140,15 @@ def test_alias_declaration_2():
|
||||
name="foo",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(tokens=[Token(value="T")])
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(name="T")
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
)
|
||||
@ -201,7 +210,15 @@ def test_alias_declaration_4():
|
||||
name="bar",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(tokens=[Token(value="T")])
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(name="T")
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
),
|
||||
@ -260,7 +277,15 @@ def test_alias_declaration_6():
|
||||
name="foo",
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(tokens=[Token(value="T")])
|
||||
TemplateArgument(
|
||||
arg=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(name="T")
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
),
|
||||
@ -410,11 +435,18 @@ def test_using_many_things():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="int"),
|
||||
Token(value="("),
|
||||
Token(value=")"),
|
||||
]
|
||||
arg=FunctionType(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="int"
|
||||
)
|
||||
]
|
||||
)
|
||||
),
|
||||
parameters=[],
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
@ -491,11 +523,18 @@ def test_using_many_things():
|
||||
specialization=TemplateSpecialization(
|
||||
args=[
|
||||
TemplateArgument(
|
||||
tokens=[
|
||||
Token(value="void"),
|
||||
Token(value="("),
|
||||
Token(value=")"),
|
||||
]
|
||||
arg=FunctionType(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(
|
||||
name="void"
|
||||
)
|
||||
]
|
||||
)
|
||||
),
|
||||
parameters=[],
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
|
Loading…
x
Reference in New Issue
Block a user