summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2014-02-22 02:59:41 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2014-02-22 02:59:41 +0000
commitb8d17e7a3b194414e071908004f81ee5fcf01b8d (patch)
treee64e0540c3c8d6a16d74153c3505abd07551740f /clang/lib
parentbfec361caec215a7f6b6f313f553aa115646435a (diff)
downloadbcm5719-llvm-b8d17e7a3b194414e071908004f81ee5fcf01b8d.tar.gz
bcm5719-llvm-b8d17e7a3b194414e071908004f81ee5fcf01b8d.zip
Correctly set brace range for CXXConstructExprs formed by list initialization.
Differential Revision: http://llvm-reviews.chandlerc.com/D2711 llvm-svn: 201926
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Sema/SemaInit.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp
index 75f60ba480f..38e93f7858b 100644
--- a/clang/lib/Sema/SemaInit.cpp
+++ b/clang/lib/Sema/SemaInit.cpp
@@ -5232,10 +5232,13 @@ PerformConstructorInitialization(Sema &S,
ConstructKind = CXXConstructExpr::CK_Delegating;
}
- // Only get the parenthesis range if it is a direct construction.
- SourceRange parenRange =
- Kind.getKind() == InitializationKind::IK_Direct ?
- Kind.getParenRange() : SourceRange();
+ // Only get the parenthesis or brace range if it is a list initialization or
+ // direct construction.
+ SourceRange ParenOrBraceRange;
+ if (IsListInitialization)
+ ParenOrBraceRange = SourceRange(LBraceLoc, RBraceLoc);
+ else if (Kind.getKind() == InitializationKind::IK_Direct)
+ ParenOrBraceRange = Kind.getParenRange();
// If the entity allows NRVO, mark the construction as elidable
// unconditionally.
@@ -5247,7 +5250,7 @@ PerformConstructorInitialization(Sema &S,
IsListInitialization,
ConstructorInitRequiresZeroInit,
ConstructKind,
- parenRange);
+ ParenOrBraceRange);
else
CurInit = S.BuildCXXConstructExpr(Loc, Entity.getType(),
Constructor,
@@ -5256,7 +5259,7 @@ PerformConstructorInitialization(Sema &S,
IsListInitialization,
ConstructorInitRequiresZeroInit,
ConstructKind,
- parenRange);
+ ParenOrBraceRange);
}
if (CurInit.isInvalid())
return ExprError();
OpenPOWER on IntegriCloud