diff --git a/tests/operators/operator.cc b/tests/operators/operator.cc new file mode 100644 index 00000000..13f424ac --- /dev/null +++ b/tests/operators/operator.cc @@ -0,0 +1,71 @@ +class Foo { + void operator()(int) { } + void operator()(bool); + int operator()(int a, int b); +}; + +friend Foo &operator += (const Foo&, const Type&); + +/* +OUTPUT: +{ + "types": [{ + "id": 0, + "usr": "c:@S@Foo", + "short_name": "Foo", + "detailed_name": "Foo", + "definition_spelling": "1:7-1:10", + "definition_extent": "1:1-5:2", + "funcs": [0, 1, 2], + "uses": ["1:7-1:10", "7:8-7:11", "7:32-7:35"] + }], + "funcs": [{ + "id": 0, + "is_operator": true, + "usr": "c:@S@Foo@F@operator()#I#", + "short_name": "operator()", + "detailed_name": "void Foo::operator()(int)", + "definition_spelling": "2:8-2:18", + "definition_extent": "2:3-2:27", + "declaring_type": 0 + }, { + "id": 1, + "is_operator": true, + "usr": "c:@S@Foo@F@operator()#b#", + "short_name": "operator()", + "detailed_name": "void Foo::operator()(bool)", + "declarations": [{ + "spelling": "3:8-3:18", + "extent": "3:3-3:24", + "content": "void operator()(bool)", + "param_spellings": ["3:23-3:23"] + }], + "declaring_type": 0 + }, { + "id": 2, + "is_operator": true, + "usr": "c:@S@Foo@F@operator()#I#I#", + "short_name": "operator()", + "detailed_name": "int Foo::operator()(int, int)", + "declarations": [{ + "spelling": "4:7-4:17", + "extent": "4:3-4:31", + "content": "int operator()(int a, int b)", + "param_spellings": ["4:22-4:23", "4:29-4:30"] + }], + "declaring_type": 0 + }, { + "id": 3, + "is_operator": true, + "usr": "c:@F@operator+=#&1$@S@Foo#&1I#", + "short_name": "operator+=", + "detailed_name": "Foo &operator+=(const Foo &, const int &)", + "declarations": [{ + "spelling": "7:13-7:24", + "extent": "7:1-7:50", + "content": "friend Foo &operator += (const Foo&, const Type&)", + "param_spellings": ["7:36-7:36", "7:49-7:49"] + }] + }] +} +*/