diff options
| author | Reid Kleckner <reid@kleckner.net> | 2013-06-19 16:37:23 +0000 |
|---|---|---|
| committer | Reid Kleckner <reid@kleckner.net> | 2013-06-19 16:37:23 +0000 |
| commit | 0a0c8895ea768fc3a0a5789dc99447b0487456c8 (patch) | |
| tree | 2eea4d38a4bcb7c759a129fa4ee3db873bc1d9f3 | |
| parent | b5375cd1b6798f6309126ed008da86f260e22e8f (diff) | |
| download | bcm5719-llvm-0a0c8895ea768fc3a0a5789dc99447b0487456c8.tar.gz bcm5719-llvm-0a0c8895ea768fc3a0a5789dc99447b0487456c8.zip | |
[Windows] Fix __declspec(property) when the getter returns a ref
This fixes an issue when parsing atlbase.h.
Patch by Will Wilson!
llvm-svn: 184319
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 3 | ||||
| -rw-r--r-- | clang/test/SemaCXX/MicrosoftExtensions.cpp | 17 |
2 files changed, 19 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index edeb731b83d..56ece247c6c 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -2003,7 +2003,8 @@ ExprResult Sema::ActOnIdExpression(Scope *S, MightBeImplicitMember = true; else MightBeImplicitMember = isa<FieldDecl>(R.getFoundDecl()) || - isa<IndirectFieldDecl>(R.getFoundDecl()); + isa<IndirectFieldDecl>(R.getFoundDecl()) || + isa<MSPropertyDecl>(R.getFoundDecl()); if (MightBeImplicitMember) return BuildPossibleImplicitMemberExpr(SS, TemplateKWLoc, diff --git a/clang/test/SemaCXX/MicrosoftExtensions.cpp b/clang/test/SemaCXX/MicrosoftExtensions.cpp index c0e7a5ad4c7..217fc6e6d79 100644 --- a/clang/test/SemaCXX/MicrosoftExtensions.cpp +++ b/clang/test/SemaCXX/MicrosoftExtensions.cpp @@ -344,3 +344,20 @@ union u { int *i1; int &i2; // expected-warning {{union member 'i2' has reference type 'int &', which is a Microsoft extension}} }; + +// Property getter using reference. +struct SP11 { + __declspec(property(get=GetV)) int V; + int _v; + int& GetV() { return _v; } + void UseV(); + void TakePtr(int *) {} + void TakeRef(int &) {} + void TakeVal(int) {} +}; + +void SP11::UseV() { + TakePtr(&V); + TakeRef(V); + TakeVal(V); +} |

