diff options
| author | Peter Collingbourne <peter@pcc.me.uk> | 2014-02-22 02:59:41 +0000 |
|---|---|---|
| committer | Peter Collingbourne <peter@pcc.me.uk> | 2014-02-22 02:59:41 +0000 |
| commit | b8d17e7a3b194414e071908004f81ee5fcf01b8d (patch) | |
| tree | e64e0540c3c8d6a16d74153c3505abd07551740f /clang/lib | |
| parent | bfec361caec215a7f6b6f313f553aa115646435a (diff) | |
| download | bcm5719-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.cpp | 15 |
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(); |

