[cfe-commits] [PATCH][Review Request] Handle CXXForRangeStmt
Jim Goodnow II
Jim at TheGoodnows.net
Fri Oct 7 04:28:02 PDT 2011
Hi Richard,
Excuse my density, :-) , but I'm not seeing the white-space issues other
than the two extra lines that could be removed. Being pedantic is
completely reasonable in a code base this large worked on by so many
people. I'm just missing something, so any hints would be appreciated.
Thanks!
- jim
On 10/6/2011 8:01 PM, Richard Smith wrote:
> Hi Jim,
>
> On Thu, October 6, 2011 11:19, Jim Goodnow II wrote:
>> I made the changes you suggested and am resubmitting it. Thanks for your
>> help.
> Thanks. There are a few remaining whitespace cleanups to be made (sorry, I
> know this is pedantic):
>
> Index: lib/Sema/SemaStmt.cpp
> ===================================================================
> --- lib/Sema/SemaStmt.cpp (revision 141174)
> +++ lib/Sema/SemaStmt.cpp (working copy)
> @@ -1337,12 +1337,19 @@
> if (!BeginEndDecl.get()&& !RangeVarType->isDependentType()) {
> SourceLocation RangeLoc = RangeVar->getLocation();
>
> - ExprResult RangeRef = BuildDeclRefExpr(RangeVar,
> - RangeVarType.getNonReferenceType(),
> - VK_LValue, ColonLoc);
> - if (RangeRef.isInvalid())
> + const QualType RangeVarNonRefType = RangeVarType.getNonReferenceType();
> +
> + ExprResult BeginRangeRef = BuildDeclRefExpr(RangeVar, RangeVarNonRefType,
> + VK_LValue, ColonLoc);
>
> Here.
>
> + if (BeginRangeRef.isInvalid())
> return StmtError();
>
> + ExprResult EndRangeRef = BuildDeclRefExpr(RangeVar, RangeVarNonRefType,
> + VK_LValue, ColonLoc);
>
> Here.
>
> +
> + if (EndRangeRef.isInvalid())
> + return StmtError();
> +
> QualType AutoType = Context.getAutoDeductType();
> Expr *Range = RangeVar->getInit();
> if (!Range)
> @@ -1368,8 +1375,8 @@
> // the program is ill-formed;
>
> // begin-expr is __range.
> - BeginExpr = RangeRef;
> - if (FinishForRangeVarDecl(*this, BeginVar, RangeRef.get(), ColonLoc,
> + BeginExpr = BeginRangeRef;
> + if (FinishForRangeVarDecl(*this, BeginVar, BeginRangeRef.get(), ColonLoc,
> diag::err_for_range_iter_deduction_failure)) {
> NoteForRangeBeginEndFunction(*this, BeginExpr.get(), BEF_begin);
> return StmtError();
> @@ -1391,7 +1398,7 @@
> }
>
> // end-expr is __range + __bound.
> - EndExpr = ActOnBinOp(S, ColonLoc, tok::plus, RangeRef.get(),
> + EndExpr = ActOnBinOp(S, ColonLoc, tok::plus, EndRangeRef.get(),
> BoundExpr.get());
> if (EndExpr.isInvalid())
> return StmtError();
> @@ -1431,14 +1438,14 @@
> }
>
> BeginExpr = BuildForRangeBeginEndCall(*this, S, ColonLoc, BeginVar,
> - BEF_begin, BeginNameInfo,
> - BeginMemberLookup, RangeRef.get());
> + BEF_begin, BeginNameInfo,
> + BeginMemberLookup, BeginRangeRef.get());
>
> Here.
>
> if (BeginExpr.isInvalid())
> return StmtError();
>
> EndExpr = BuildForRangeBeginEndCall(*this, S, ColonLoc, EndVar,
> BEF_end, EndNameInfo,
> - EndMemberLookup, RangeRef.get());
> + EndMemberLookup, EndRangeRef.get());
> if (EndExpr.isInvalid())
> return StmtError();
> }
> @@ -1458,12 +1465,18 @@
> BuildDeclaratorGroup(BeginEndDecls, 2, /*TypeMayContainAuto=*/false);
> BeginEndDecl = ActOnDeclStmt(BeginEndGroup, ColonLoc, ColonLoc);
>
> - ExprResult BeginRef = BuildDeclRefExpr(BeginVar,
> - BeginType.getNonReferenceType(),
> + const QualType BeginRefNonRefType = BeginType.getNonReferenceType();
> + ExprResult BeginRef = BuildDeclRefExpr(BeginVar, BeginRefNonRefType,
> VK_LValue, ColonLoc);
> + if (BeginRef.isInvalid())
> + return StmtError();
> +
> ExprResult EndRef = BuildDeclRefExpr(EndVar, EndType.getNonReferenceType(),
> VK_LValue, ColonLoc);
> + if (EndRef.isInvalid())
> + return StmtError();
>
> +
>
> No need for this extra line.
>
> // Build and check __begin != __end expression.
> NotEqExpr = ActOnBinOp(S, ColonLoc, tok::exclaimequal,
> BeginRef.get(), EndRef.get());
> @@ -1477,6 +1490,11 @@
> }
>
> // Build and check ++__begin expression.
> + BeginRef = BuildDeclRefExpr(BeginVar, BeginRefNonRefType,
> + VK_LValue, ColonLoc);
>
> Here.
>
> + if (BeginRef.isInvalid())
> + return StmtError();
> +
> IncrExpr = ActOnUnaryOp(S, ColonLoc, tok::plusplus, BeginRef.get());
> IncrExpr = ActOnFinishFullExpr(IncrExpr.get());
> if (IncrExpr.isInvalid()) {
> @@ -1485,6 +1503,11 @@
> }
>
> // Build and check *__begin expression.
> + BeginRef = BuildDeclRefExpr(BeginVar, BeginRefNonRefType,
> + VK_LValue, ColonLoc);
>
> Here.
>
> + if (BeginRef.isInvalid())
> + return StmtError();
> +
> ExprResult DerefExpr = ActOnUnaryOp(S, ColonLoc, tok::star, BeginRef.get());
> if (DerefExpr.isInvalid()) {
> NoteForRangeBeginEndFunction(*this, BeginExpr.get(), BEF_begin);
>
>
>
>
More information about the cfe-commits
mailing list