diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-05-19 00:01:19 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-05-19 00:01:19 +0000 |
commit | 3384c9c1882bab002971f59a31b1da47b13c818c (patch) | |
tree | 125e72a6ea4215ec932585e8cbb678265b9f74aa /lib/Sema/SemaExpr.cpp | |
parent | 3d1a7af3f09cc8f5e04f71080debc4366e5b1a37 (diff) |
Template instantiation for array subscript expressions. This was far
easier than expected because of the limitation that subscript
operators must be member functions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72076 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaExpr.cpp')
-rw-r--r-- | lib/Sema/SemaExpr.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 418b3b8ce0..ed62b254d5 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -1665,6 +1665,14 @@ Sema::ActOnArraySubscriptExpr(Scope *S, ExprArg Base, SourceLocation LLoc, *RHSExp = static_cast<Expr*>(Idx.get()); if (getLangOptions().CPlusPlus && + (LHSExp->isTypeDependent() || RHSExp->isTypeDependent())) { + Base.release(); + Idx.release(); + return Owned(new (Context) ArraySubscriptExpr(LHSExp, RHSExp, + Context.DependentTy, RLoc)); + } + + if (getLangOptions().CPlusPlus && (LHSExp->getType()->isRecordType() || LHSExp->getType()->isEnumeralType() || RHSExp->getType()->isRecordType() || |