summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/TreeTransform.h
diff options
context:
space:
mode:
authorPatrick Beard <pcbeard@mac.com>2012-04-19 00:25:12 +0000
committerPatrick Beard <pcbeard@mac.com>2012-04-19 00:25:12 +0000
commit0caa39474bfc9ca1b4ce64b3318ddaa1d8975232 (patch)
treeed4816aeb2e1961c1a24293ddf74e1c8826a0d43 /clang/lib/Sema/TreeTransform.h
parent201ba5fa00c789edd594791176f6771f10e85dd1 (diff)
downloadbcm5719-llvm-0caa39474bfc9ca1b4ce64b3318ddaa1d8975232.tar.gz
bcm5719-llvm-0caa39474bfc9ca1b4ce64b3318ddaa1d8975232.zip
Implements boxed expressions for Objective-C. <rdar://problem/10194391>
llvm-svn: 155082
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r--clang/lib/Sema/TreeTransform.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index a66378e5178..7387eac667b 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -2225,6 +2225,14 @@ public:
RParenLoc);
}
+ /// \brief Build a new Objective-C boxed expression.
+ ///
+ /// By default, performs semantic analysis to build the new expression.
+ /// Subclasses may override this routine to provide different behavior.
+ ExprResult RebuildObjCBoxedExpr(SourceRange SR, Expr *ValueExpr) {
+ return getSema().BuildObjCBoxedExpr(SR, ValueExpr);
+ }
+
/// \brief Build a new Objective-C array literal.
///
/// By default, performs semantic analysis to build the new expression.
@@ -8352,8 +8360,16 @@ TreeTransform<Derived>::TransformObjCBoolLiteralExpr(ObjCBoolLiteralExpr *E) {
template<typename Derived>
ExprResult
-TreeTransform<Derived>::TransformObjCNumericLiteral(ObjCNumericLiteral *E) {
- return SemaRef.MaybeBindToTemporary(E);
+TreeTransform<Derived>::TransformObjCBoxedExpr(ObjCBoxedExpr *E) {
+ ExprResult SubExpr = getDerived().TransformExpr(E->getSubExpr());
+ if (SubExpr.isInvalid())
+ return ExprError();
+
+ if (!getDerived().AlwaysRebuild() &&
+ SubExpr.get() == E->getSubExpr())
+ return SemaRef.Owned(E);
+
+ return getDerived().RebuildObjCBoxedExpr(E->getSourceRange(), SubExpr.get());
}
template<typename Derived>
OpenPOWER on IntegriCloud