Source location information for ? and : in a ConditionalOperator, from Enea Zaffanella
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80097 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index b670cf7..a04f2fa 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -3387,9 +3387,9 @@
Cond.release();
LHS.release();
RHS.release();
- return Owned(new (Context) ConditionalOperator(CondExpr,
+ return Owned(new (Context) ConditionalOperator(CondExpr, QuestionLoc,
isLHSNull ? 0 : LHSExpr,
- RHSExpr, result));
+ ColonLoc, RHSExpr, result));
}
// CheckPointerTypesForAssignment - This is a very tricky routine (despite
diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h
index 5d34e07..77d5220 100644
--- a/lib/Sema/TreeTransform.h
+++ b/lib/Sema/TreeTransform.h
@@ -3023,13 +3023,10 @@
RHS.get() == E->getRHS())
return SemaRef.Owned(E->Retain());
- // FIXM: ? and : locations are broken.
- SourceLocation FakeQuestionLoc = E->getCond()->getLocEnd();
- SourceLocation FakeColonLoc = E->getFalseExpr()->getLocStart();
return getDerived().RebuildConditionalOperator(move(Cond),
- FakeQuestionLoc,
+ E->getQuestionLoc(),
move(LHS),
- FakeColonLoc,
+ E->getColonLoc(),
move(RHS));
}