Hi all,
I have the following code:
namespace a {
class A {};
namespace b { class B { friend class A; }; } // b
} // a
I expect that the friend “class A” refers to CXXRecordDecl “class a::A”. However, it refers to an implicit CXXRecordDecl “class a:
:A” instead. Is this expected?
- Node dump of the ElaboratedType “class A” in the friend declaration:
ElaboratedType 0x7fbf27d39570 'class A' sugar
`-RecordType 0x7fbf27d39540 'class a::b::A'
`-CXXRecord 0x7fbf27d394a8 'A'
- AST dump:
....
`-NamespaceDecl 0x7f1f79f4f050 </home/ioeric/llvm-build/test.cc:1:1, line:6:1> line:1:11 a
>-CXXRecordDecl 0x7f1f79f4f0b8 <line:2:1, col:10> col:7 **class A** definition
> `-CXXRecordDecl 0x7f1f79f4f1d0 <col:1, col:7> col:7 implicit class A
`-NamespaceDecl 0x7f1f79f4f288 <line:3:1, line:5:1> line:3:11 b
`-CXXRecordDecl 0x7f1f79f4f2f0 <line:4:1, col:27> col:7 class B definition
>-CXXRecordDecl 0x7f1f79f4f410 <col:1, col:7> col:7 implicit class B
`-FriendDecl 0x7f1f79f4f5c0 <col:11, col:24> col:18 **'class A':'class a::b::A'**
Thanks,
Eric