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