diff options
author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2009-02-03 20:19:35 +0000 |
---|---|---|
committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2009-02-03 20:19:35 +0000 |
commit | 3d3f75a995cee883428f3e5c331433c9c1d76725 (patch) | |
tree | c025daba400ead4ffbb37cc81f9ac5158a791e21 /clang/lib/Sema/SemaExprCXX.cpp | |
parent | fc7c76159cf5027dc28e95e3d2471d4becbc53aa (diff) | |
download | bcm5719-llvm-3d3f75a995cee883428f3e5c331433c9c1d76725.tar.gz bcm5719-llvm-3d3f75a995cee883428f3e5c331433c9c1d76725.zip |
Allow taking the address of data members, resulting in a member pointer.
Pointers to functions don't work yet, and pointers to overloaded functions even less. Also, far too much illegal code is accepted.
llvm-svn: 63655
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 3c8184d24d8..e9dbc849b00 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -28,13 +28,14 @@ using namespace clang; Sema::OwningExprResult Sema::ActOnCXXConversionFunctionExpr(Scope *S, SourceLocation OperatorLoc, TypeTy *Ty, bool HasTrailingLParen, - const CXXScopeSpec &SS) { + const CXXScopeSpec &SS, + bool isAddressOfOperand) { QualType ConvType = QualType::getFromOpaquePtr(Ty); QualType ConvTypeCanon = Context.getCanonicalType(ConvType); DeclarationName ConvName = Context.DeclarationNames.getCXXConversionFunctionName(ConvTypeCanon); return ActOnDeclarationNameExpr(S, OperatorLoc, ConvName, HasTrailingLParen, - &SS); + &SS, /*ForceRes*/false, isAddressOfOperand); } /// ActOnCXXOperatorFunctionIdExpr - Parse a C++ overloaded operator @@ -46,9 +47,11 @@ Sema::OwningExprResult Sema::ActOnCXXOperatorFunctionIdExpr(Scope *S, SourceLocation OperatorLoc, OverloadedOperatorKind Op, bool HasTrailingLParen, - const CXXScopeSpec &SS) { + const CXXScopeSpec &SS, + bool isAddressOfOperand) { DeclarationName Name = Context.DeclarationNames.getCXXOperatorName(Op); - return ActOnDeclarationNameExpr(S, OperatorLoc, Name, HasTrailingLParen, &SS); + return ActOnDeclarationNameExpr(S, OperatorLoc, Name, HasTrailingLParen, &SS, + /*ForceRes*/false, isAddressOfOperand); } /// ActOnCXXTypeidOfType - Parse typeid( type-id ). |