Merge pull request #66 from robotpy/fn-operator
breaking change: Remove operator type and make part of Function
This commit is contained in:
commit
8c69970857
@ -37,7 +37,6 @@ from .types import (
|
|||||||
NameSpecifier,
|
NameSpecifier,
|
||||||
NamespaceAlias,
|
NamespaceAlias,
|
||||||
NamespaceDecl,
|
NamespaceDecl,
|
||||||
Operator,
|
|
||||||
PQNameSegment,
|
PQNameSegment,
|
||||||
Parameter,
|
Parameter,
|
||||||
PQName,
|
PQName,
|
||||||
@ -1825,33 +1824,19 @@ class CxxParser:
|
|||||||
if (is_class_block or multiple_name_segments) and not is_typedef:
|
if (is_class_block or multiple_name_segments) and not is_typedef:
|
||||||
props.update(dict.fromkeys(mods.meths.keys(), True))
|
props.update(dict.fromkeys(mods.meths.keys(), True))
|
||||||
|
|
||||||
method: Method
|
method = Method(
|
||||||
|
return_type,
|
||||||
if op:
|
pqname,
|
||||||
method = Operator(
|
params,
|
||||||
return_type,
|
vararg,
|
||||||
pqname,
|
doxygen=doxygen,
|
||||||
params,
|
constructor=constructor,
|
||||||
vararg,
|
destructor=destructor,
|
||||||
doxygen=doxygen,
|
template=template,
|
||||||
operator=op,
|
operator=op,
|
||||||
template=template,
|
access=self._current_access,
|
||||||
access=self._current_access,
|
**props, # type: ignore
|
||||||
**props, # type: ignore
|
)
|
||||||
)
|
|
||||||
else:
|
|
||||||
method = Method(
|
|
||||||
return_type,
|
|
||||||
pqname,
|
|
||||||
params,
|
|
||||||
vararg,
|
|
||||||
doxygen=doxygen,
|
|
||||||
constructor=constructor,
|
|
||||||
destructor=destructor,
|
|
||||||
template=template,
|
|
||||||
access=self._current_access,
|
|
||||||
**props, # type: ignore
|
|
||||||
)
|
|
||||||
|
|
||||||
self._parse_method_end(method)
|
self._parse_method_end(method)
|
||||||
|
|
||||||
@ -1883,6 +1868,7 @@ class CxxParser:
|
|||||||
vararg,
|
vararg,
|
||||||
doxygen=doxygen,
|
doxygen=doxygen,
|
||||||
template=template,
|
template=template,
|
||||||
|
operator=op,
|
||||||
**props,
|
**props,
|
||||||
)
|
)
|
||||||
self._parse_fn_end(fn)
|
self._parse_fn_end(fn)
|
||||||
|
@ -550,6 +550,15 @@ class Function:
|
|||||||
#: calling convention
|
#: calling convention
|
||||||
msvc_convention: typing.Optional[str] = None
|
msvc_convention: typing.Optional[str] = None
|
||||||
|
|
||||||
|
#: The operator type (+, +=, etc).
|
||||||
|
#:
|
||||||
|
#: If this object is a Function, then this is a free operator function. If
|
||||||
|
#: this object is a Method, then it is an operator method.
|
||||||
|
#:
|
||||||
|
#: In the case of a conversion operator (such as 'operator bool'), this
|
||||||
|
#: is the string "conversion" and the full Type is found in return_type
|
||||||
|
operator: typing.Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Method(Function):
|
class Method(Function):
|
||||||
@ -585,19 +594,6 @@ class Method(Function):
|
|||||||
override: bool = False
|
override: bool = False
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class Operator(Method):
|
|
||||||
"""
|
|
||||||
Represents an operator method
|
|
||||||
"""
|
|
||||||
|
|
||||||
#: The operator type (+, +=, etc).
|
|
||||||
#:
|
|
||||||
#: In the case of a conversion operator (such as 'operator bool'), this
|
|
||||||
#: is the string "conversion" and the full Type is found in return_type
|
|
||||||
operator: str = ""
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class FriendDecl:
|
class FriendDecl:
|
||||||
"""
|
"""
|
||||||
|
@ -14,7 +14,6 @@ from cxxheaderparser.types import (
|
|||||||
Method,
|
Method,
|
||||||
MoveReference,
|
MoveReference,
|
||||||
NameSpecifier,
|
NameSpecifier,
|
||||||
Operator,
|
|
||||||
PQName,
|
PQName,
|
||||||
Parameter,
|
Parameter,
|
||||||
Pointer,
|
Pointer,
|
||||||
@ -369,7 +368,7 @@ def test_class_member_spec_2() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
constructor=True,
|
constructor=True,
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="int")]
|
segments=[FundamentalSpecifier(name="int")]
|
||||||
@ -399,7 +398,7 @@ def test_class_member_spec_2() -> None:
|
|||||||
const=True,
|
const=True,
|
||||||
operator="()",
|
operator="()",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Reference(
|
return_type=Reference(
|
||||||
ref_to=Type(
|
ref_to=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
|
@ -14,7 +14,6 @@ from cxxheaderparser.types import (
|
|||||||
Method,
|
Method,
|
||||||
MoveReference,
|
MoveReference,
|
||||||
NameSpecifier,
|
NameSpecifier,
|
||||||
Operator,
|
|
||||||
PQName,
|
PQName,
|
||||||
Parameter,
|
Parameter,
|
||||||
Pointer,
|
Pointer,
|
||||||
|
@ -7,9 +7,9 @@ from cxxheaderparser.types import (
|
|||||||
Function,
|
Function,
|
||||||
FunctionType,
|
FunctionType,
|
||||||
FundamentalSpecifier,
|
FundamentalSpecifier,
|
||||||
|
Method,
|
||||||
MoveReference,
|
MoveReference,
|
||||||
NameSpecifier,
|
NameSpecifier,
|
||||||
Operator,
|
|
||||||
PQName,
|
PQName,
|
||||||
Parameter,
|
Parameter,
|
||||||
Pointer,
|
Pointer,
|
||||||
@ -888,7 +888,7 @@ def test_method_w_reference() -> None:
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
methods=[
|
methods=[
|
||||||
Operator(
|
Method(
|
||||||
return_type=Reference(
|
return_type=Reference(
|
||||||
ref_to=Type(
|
ref_to=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
|
@ -2,10 +2,11 @@
|
|||||||
|
|
||||||
from cxxheaderparser.types import (
|
from cxxheaderparser.types import (
|
||||||
ClassDecl,
|
ClassDecl,
|
||||||
|
Function,
|
||||||
FundamentalSpecifier,
|
FundamentalSpecifier,
|
||||||
|
Method,
|
||||||
MoveReference,
|
MoveReference,
|
||||||
NameSpecifier,
|
NameSpecifier,
|
||||||
Operator,
|
|
||||||
Pointer,
|
Pointer,
|
||||||
PQName,
|
PQName,
|
||||||
Parameter,
|
Parameter,
|
||||||
@ -78,7 +79,7 @@ def test_class_operators() -> None:
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
methods=[
|
methods=[
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -102,7 +103,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="=",
|
operator="=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -126,7 +127,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="-=",
|
operator="-=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -137,7 +138,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="+=",
|
operator="+=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -148,7 +149,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="[]",
|
operator="[]",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="bool")]
|
segments=[FundamentalSpecifier(name="bool")]
|
||||||
@ -173,7 +174,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="==",
|
operator="==",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Reference(
|
return_type=Reference(
|
||||||
ref_to=Type(
|
ref_to=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
@ -186,7 +187,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="+",
|
operator="+",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -197,7 +198,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="-",
|
operator="-",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -208,7 +209,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="*",
|
operator="*",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -219,7 +220,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="\\",
|
operator="\\",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -230,7 +231,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="%",
|
operator="%",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -241,7 +242,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="^",
|
operator="^",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -252,7 +253,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="|",
|
operator="|",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -263,7 +264,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="&",
|
operator="&",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -274,7 +275,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="~",
|
operator="~",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -285,7 +286,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="<<",
|
operator="<<",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -296,7 +297,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator=">>",
|
operator=">>",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -307,7 +308,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="!=",
|
operator="!=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -318,7 +319,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="<",
|
operator="<",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -329,7 +330,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator=">",
|
operator=">",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -340,7 +341,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator=">=",
|
operator=">=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -351,7 +352,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="<=",
|
operator="<=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -362,7 +363,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="!",
|
operator="!",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -373,7 +374,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="&&",
|
operator="&&",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -384,7 +385,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="||",
|
operator="||",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -395,7 +396,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="+=",
|
operator="+=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -406,7 +407,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="-=",
|
operator="-=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -417,7 +418,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="*=",
|
operator="*=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -428,7 +429,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="\\=",
|
operator="\\=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -439,7 +440,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="%=",
|
operator="%=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -450,7 +451,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="&=",
|
operator="&=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -461,7 +462,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="|=",
|
operator="|=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -472,7 +473,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="^=",
|
operator="^=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -483,7 +484,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="<<=",
|
operator="<<=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -494,7 +495,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator=">>=",
|
operator=">>=",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -505,7 +506,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="++",
|
operator="++",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -516,7 +517,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="--",
|
operator="--",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -527,7 +528,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="()",
|
operator="()",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -538,7 +539,7 @@ def test_class_operators() -> None:
|
|||||||
access="public",
|
access="public",
|
||||||
operator="->",
|
operator="->",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="void")]
|
segments=[FundamentalSpecifier(name="void")]
|
||||||
@ -579,7 +580,7 @@ def test_conversion_operators() -> None:
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
methods=[
|
methods=[
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(segments=[NameSpecifier(name="Type1")])
|
typename=PQName(segments=[NameSpecifier(name="Type1")])
|
||||||
),
|
),
|
||||||
@ -590,7 +591,7 @@ def test_conversion_operators() -> None:
|
|||||||
const=True,
|
const=True,
|
||||||
operator="conversion",
|
operator="conversion",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(segments=[NameSpecifier(name="Type2")])
|
typename=PQName(segments=[NameSpecifier(name="Type2")])
|
||||||
),
|
),
|
||||||
@ -601,7 +602,7 @@ def test_conversion_operators() -> None:
|
|||||||
explicit=True,
|
explicit=True,
|
||||||
operator="conversion",
|
operator="conversion",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Type(
|
return_type=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
segments=[FundamentalSpecifier(name="bool")]
|
segments=[FundamentalSpecifier(name="bool")]
|
||||||
@ -641,7 +642,7 @@ def test_conversion_operators_decorated() -> None:
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
methods=[
|
methods=[
|
||||||
Operator(
|
Method(
|
||||||
return_type=Pointer(
|
return_type=Pointer(
|
||||||
ptr_to=Type(
|
ptr_to=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
@ -656,7 +657,7 @@ def test_conversion_operators_decorated() -> None:
|
|||||||
const=True,
|
const=True,
|
||||||
operator="conversion",
|
operator="conversion",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=Reference(
|
return_type=Reference(
|
||||||
ref_to=Type(
|
ref_to=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
@ -671,7 +672,7 @@ def test_conversion_operators_decorated() -> None:
|
|||||||
const=True,
|
const=True,
|
||||||
operator="conversion",
|
operator="conversion",
|
||||||
),
|
),
|
||||||
Operator(
|
Method(
|
||||||
return_type=MoveReference(
|
return_type=MoveReference(
|
||||||
moveref_to=Type(
|
moveref_to=Type(
|
||||||
typename=PQName(
|
typename=PQName(
|
||||||
@ -691,3 +692,57 @@ def test_conversion_operators_decorated() -> None:
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_free_operator() -> None:
|
||||||
|
content = """
|
||||||
|
std::ostream& operator<<(std::ostream& os, const MyDate& dt);
|
||||||
|
"""
|
||||||
|
data = parse_string(content, cleandoc=True)
|
||||||
|
|
||||||
|
assert data == ParsedData(
|
||||||
|
namespace=NamespaceScope(
|
||||||
|
functions=[
|
||||||
|
Function(
|
||||||
|
return_type=Reference(
|
||||||
|
ref_to=Type(
|
||||||
|
typename=PQName(
|
||||||
|
segments=[
|
||||||
|
NameSpecifier(name="std"),
|
||||||
|
NameSpecifier(name="ostream"),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
name=PQName(segments=[NameSpecifier(name="operator<<")]),
|
||||||
|
parameters=[
|
||||||
|
Parameter(
|
||||||
|
type=Reference(
|
||||||
|
ref_to=Type(
|
||||||
|
typename=PQName(
|
||||||
|
segments=[
|
||||||
|
NameSpecifier(name="std"),
|
||||||
|
NameSpecifier(name="ostream"),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
name="os",
|
||||||
|
),
|
||||||
|
Parameter(
|
||||||
|
type=Reference(
|
||||||
|
ref_to=Type(
|
||||||
|
typename=PQName(
|
||||||
|
segments=[NameSpecifier(name="MyDate")]
|
||||||
|
),
|
||||||
|
const=True,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
name="dt",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
operator="<<",
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user