diff options
author | Yanzuo Liu <zwuis@outlook.com> | 2024-07-26 20:39:46 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-26 08:39:46 -0400 |
commit | 9d220956320a36fd127ee14ed41f0ecdcc0fb5b0 (patch) | |
tree | 552397d3a405be13fd08c3e3900f614ea134fc6a /clang/lib/AST/DeclBase.cpp | |
parent | 22bc9db92b46965882b1c77aebc86430149b0912 (diff) | |
download | llvm-9d220956320a36fd127ee14ed41f0ecdcc0fb5b0.zip llvm-9d220956320a36fd127ee14ed41f0ecdcc0fb5b0.tar.gz llvm-9d220956320a36fd127ee14ed41f0ecdcc0fb5b0.tar.bz2 |
[Clang] Remove `IDNS_Ordinary` flag in `IndirectFieldDecl::IdentifierNamespace` (#100525)
There is a `IDNS_Ordinary` flag in
`IndirectFieldDecl::IdentifierNamespace` so that members in nested
anonymous struct/union can be found as ordinary identifiers.
```c
struct S {
struct { int x; };
// Previous behaviour: `x` in previous line is found
// Expected: nothing is found
int arr[sizeof(x)];
};
```
This PR fixes this issue.
Fixes #31295.
Diffstat (limited to 'clang/lib/AST/DeclBase.cpp')
-rw-r--r-- | clang/lib/AST/DeclBase.cpp | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp index bc5a920..a1f7054 100644 --- a/clang/lib/AST/DeclBase.cpp +++ b/clang/lib/AST/DeclBase.cpp @@ -879,8 +879,6 @@ unsigned Decl::getIdentifierNamespaceForKind(Kind DeclKind) { return IDNS_Ordinary; case Label: return IDNS_Label; - case IndirectField: - return IDNS_Ordinary | IDNS_Member; case Binding: case NonTypeTemplateParm: @@ -918,6 +916,7 @@ unsigned Decl::getIdentifierNamespaceForKind(Kind DeclKind) { return IDNS_ObjCProtocol; case Field: + case IndirectField: case ObjCAtDefsField: case ObjCIvar: return IDNS_Member; |