diff options
author | Douglas Gregor <dgregor@apple.com> | 2008-11-04 14:32:21 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2008-11-04 14:32:21 +0000 |
commit | 97a9c81b05ae342ec77743a44eedb9908e8a648f (patch) | |
tree | 4dafd4955a6c71fab04acad45c96d33f6ef97661 /clang/lib/Sema | |
parent | e4f5c9495f2087d73ef926d4d70d1c41311d4501 (diff) | |
download | bcm5719-llvm-97a9c81b05ae342ec77743a44eedb9908e8a648f.tar.gz bcm5719-llvm-97a9c81b05ae342ec77743a44eedb9908e8a648f.zip |
Create a new expression class, CXXThisExpr, to handle the C++ 'this' primary expression. Remove CXXThis from PredefinedExpr
llvm-svn: 58695
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 22 | ||||
-rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 3 |
2 files changed, 10 insertions, 15 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 33fc52b71dc..e4321f53ff0 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -46,7 +46,7 @@ namespace { bool VisitExpr(Expr *Node); bool VisitDeclRefExpr(DeclRefExpr *DRE); - bool VisitPredefinedExpr(PredefinedExpr *PE); + bool VisitCXXThisExpr(CXXThisExpr *ThisE); }; /// VisitExpr - Visit all of the children of this expression. @@ -88,18 +88,14 @@ namespace { return false; } - /// VisitPredefinedExpr - Visit a predefined expression, which could - /// refer to "this". - bool CheckDefaultArgumentVisitor::VisitPredefinedExpr(PredefinedExpr *PE) { - if (PE->getIdentType() == PredefinedExpr::CXXThis) { - // C++ [dcl.fct.default]p8: - // The keyword this shall not be used in a default argument of a - // member function. - return S->Diag(PE->getSourceRange().getBegin(), - diag::err_param_default_argument_references_this, - PE->getSourceRange()); - } - return false; + /// VisitCXXThisExpr - Visit a C++ "this" expression. + bool CheckDefaultArgumentVisitor::VisitCXXThisExpr(CXXThisExpr *ThisE) { + // C++ [dcl.fct.default]p8: + // The keyword this shall not be used in a default argument of a + // member function. + return S->Diag(ThisE->getSourceRange().getBegin(), + diag::err_param_default_argument_references_this, + ThisE->getSourceRange()); } } diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index fde28529b71..d012473c25d 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -708,8 +708,7 @@ Action::ExprResult Sema::ActOnCXXThis(SourceLocation ThisLoc) { if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(CurContext)) if (MD->isInstance()) - return new PredefinedExpr(ThisLoc, MD->getThisType(Context), - PredefinedExpr::CXXThis); + return new CXXThisExpr(ThisLoc, MD->getThisType(Context)); return Diag(ThisLoc, diag::err_invalid_this_use); } |