diff options
Diffstat (limited to 'clang/lib/Sema/SemaStmt.cpp')
-rw-r--r-- | clang/lib/Sema/SemaStmt.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index 05f7b30f139..959adbf1c35 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -2762,7 +2762,8 @@ static void DiagnoseForRangeReferenceVariableCopies(Sema &SemaRef, QualType NewReferenceType = SemaRef.Context.getLValueReferenceType(E->getType().withConst()); SemaRef.Diag(VD->getBeginLoc(), diag::note_use_type_or_non_reference) - << NonReferenceType << NewReferenceType << VD->getSourceRange(); + << NonReferenceType << NewReferenceType << VD->getSourceRange() + << FixItHint::CreateRemoval(VD->getTypeSpecEndLoc()); } else { // The range always returns a copy, so a temporary is always created. // Suggest removing the reference from the loop variable. @@ -2771,7 +2772,8 @@ static void DiagnoseForRangeReferenceVariableCopies(Sema &SemaRef, QualType NonReferenceType = VariableType.getNonReferenceType(); NonReferenceType.removeLocalConst(); SemaRef.Diag(VD->getBeginLoc(), diag::note_use_non_reference_type) - << NonReferenceType << VD->getSourceRange(); + << NonReferenceType << VD->getSourceRange() + << FixItHint::CreateRemoval(VD->getTypeSpecEndLoc()); } } @@ -2808,7 +2810,8 @@ static void DiagnoseForRangeConstVariableCopies(Sema &SemaRef, << VD << VariableType << InitExpr->getType(); SemaRef.Diag(VD->getBeginLoc(), diag::note_use_reference_type) << SemaRef.Context.getLValueReferenceType(VariableType) - << VD->getSourceRange(); + << VD->getSourceRange() + << FixItHint::CreateInsertion(VD->getLocation(), "&"); } /// DiagnoseForRangeVariableCopies - Diagnose three cases and fixes for them. |