summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprCXX.cpp
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2009-02-03 20:19:35 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2009-02-03 20:19:35 +0000
commit3d3f75a995cee883428f3e5c331433c9c1d76725 (patch)
treec025daba400ead4ffbb37cc81f9ac5158a791e21 /clang/lib/Sema/SemaExprCXX.cpp
parentfc7c76159cf5027dc28e95e3d2471d4becbc53aa (diff)
downloadbcm5719-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.cpp11
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 ).
OpenPOWER on IntegriCloud