diff options
Diffstat (limited to 'clang/lib/Sema/SemaExpr.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 308 |
1 files changed, 152 insertions, 156 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index ce0d32b25e5..2f1715ae4f2 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -503,11 +503,12 @@ static void DiagnoseDirectIsaAccess(Sema &S, const ObjCIvarRefExpr *OIRE, SourceLocation(), S.LookupOrdinaryName); if (ObjectSetClass) { SourceLocation RHSLocEnd = S.getLocForEndOfToken(RHS->getLocEnd()); - S.Diag(OIRE->getExprLoc(), diag::warn_objc_isa_assign) << - FixItHint::CreateInsertion(OIRE->getLocStart(), "object_setClass(") << - FixItHint::CreateReplacement(SourceRange(OIRE->getOpLoc(), - AssignLoc), ",") << - FixItHint::CreateInsertion(RHSLocEnd, ")"); + S.Diag(OIRE->getExprLoc(), diag::warn_objc_isa_assign) + << FixItHint::CreateInsertion(OIRE->getBeginLoc(), + "object_setClass(") + << FixItHint::CreateReplacement( + SourceRange(OIRE->getOpLoc(), AssignLoc), ",") + << FixItHint::CreateInsertion(RHSLocEnd, ")"); } else S.Diag(OIRE->getLocation(), diag::warn_objc_isa_assign); @@ -517,11 +518,11 @@ static void DiagnoseDirectIsaAccess(Sema &S, const ObjCIvarRefExpr *OIRE, &S.Context.Idents.get("object_getClass"), SourceLocation(), S.LookupOrdinaryName); if (ObjectGetClass) - S.Diag(OIRE->getExprLoc(), diag::warn_objc_isa_use) << - FixItHint::CreateInsertion(OIRE->getLocStart(), "object_getClass(") << - FixItHint::CreateReplacement( - SourceRange(OIRE->getOpLoc(), - OIRE->getLocEnd()), ")"); + S.Diag(OIRE->getExprLoc(), diag::warn_objc_isa_use) + << FixItHint::CreateInsertion(OIRE->getBeginLoc(), + "object_getClass(") + << FixItHint::CreateReplacement( + SourceRange(OIRE->getOpLoc(), OIRE->getLocEnd()), ")"); else S.Diag(OIRE->getLocation(), diag::warn_objc_isa_use); } @@ -576,10 +577,10 @@ ExprResult Sema::DefaultLvalueConversion(Expr *E) { &Context.Idents.get("object_getClass"), SourceLocation(), LookupOrdinaryName); if (ObjectGetClass) - Diag(E->getExprLoc(), diag::warn_objc_isa_use) << - FixItHint::CreateInsertion(OISA->getLocStart(), "object_getClass(") << - FixItHint::CreateReplacement( - SourceRange(OISA->getOpLoc(), OISA->getIsaMemberLoc()), ")"); + Diag(E->getExprLoc(), diag::warn_objc_isa_use) + << FixItHint::CreateInsertion(OISA->getBeginLoc(), "object_getClass(") + << FixItHint::CreateReplacement( + SourceRange(OISA->getOpLoc(), OISA->getIsaMemberLoc()), ")"); else Diag(E->getExprLoc(), diag::warn_objc_isa_use); } @@ -820,40 +821,38 @@ void Sema::checkVariadicArgument(const Expr *E, VariadicCallType CT) { switch (VAK) { case VAK_ValidInCXX11: DiagRuntimeBehavior( - E->getLocStart(), nullptr, - PDiag(diag::warn_cxx98_compat_pass_non_pod_arg_to_vararg) - << Ty << CT); + E->getBeginLoc(), nullptr, + PDiag(diag::warn_cxx98_compat_pass_non_pod_arg_to_vararg) << Ty << CT); LLVM_FALLTHROUGH; case VAK_Valid: if (Ty->isRecordType()) { // This is unlikely to be what the user intended. If the class has a // 'c_str' member function, the user probably meant to call that. - DiagRuntimeBehavior(E->getLocStart(), nullptr, + DiagRuntimeBehavior(E->getBeginLoc(), nullptr, PDiag(diag::warn_pass_class_arg_to_vararg) - << Ty << CT << hasCStrMethod(E) << ".c_str()"); + << Ty << CT << hasCStrMethod(E) << ".c_str()"); } break; case VAK_Undefined: case VAK_MSVCUndefined: - DiagRuntimeBehavior( - E->getLocStart(), nullptr, - PDiag(diag::warn_cannot_pass_non_pod_arg_to_vararg) - << getLangOpts().CPlusPlus11 << Ty << CT); + DiagRuntimeBehavior(E->getBeginLoc(), nullptr, + PDiag(diag::warn_cannot_pass_non_pod_arg_to_vararg) + << getLangOpts().CPlusPlus11 << Ty << CT); break; case VAK_Invalid: if (Ty.isDestructedType() == QualType::DK_nontrivial_c_struct) - Diag(E->getLocStart(), - diag::err_cannot_pass_non_trivial_c_struct_to_vararg) << Ty << CT; + Diag(E->getBeginLoc(), + diag::err_cannot_pass_non_trivial_c_struct_to_vararg) + << Ty << CT; else if (Ty->isObjCObjectType()) - DiagRuntimeBehavior( - E->getLocStart(), nullptr, - PDiag(diag::err_cannot_pass_objc_interface_to_vararg) - << Ty << CT); + DiagRuntimeBehavior(E->getBeginLoc(), nullptr, + PDiag(diag::err_cannot_pass_objc_interface_to_vararg) + << Ty << CT); else - Diag(E->getLocStart(), diag::err_cannot_pass_to_vararg) - << isa<InitListExpr>(E) << Ty << CT; + Diag(E->getBeginLoc(), diag::err_cannot_pass_to_vararg) + << isa<InitListExpr>(E) << Ty << CT; break; } } @@ -891,20 +890,19 @@ ExprResult Sema::DefaultVariadicArgumentPromotion(Expr *E, VariadicCallType CT, SourceLocation TemplateKWLoc; UnqualifiedId Name; Name.setIdentifier(PP.getIdentifierInfo("__builtin_trap"), - E->getLocStart()); + E->getBeginLoc()); ExprResult TrapFn = ActOnIdExpression(TUScope, SS, TemplateKWLoc, Name, true, false); if (TrapFn.isInvalid()) return ExprError(); - ExprResult Call = ActOnCallExpr(TUScope, TrapFn.get(), - E->getLocStart(), None, - E->getLocEnd()); + ExprResult Call = ActOnCallExpr(TUScope, TrapFn.get(), E->getBeginLoc(), + None, E->getLocEnd()); if (Call.isInvalid()) return ExprError(); - ExprResult Comma = ActOnBinOp(TUScope, E->getLocStart(), tok::comma, - Call.get(), E); + ExprResult Comma = + ActOnBinOp(TUScope, E->getBeginLoc(), tok::comma, Call.get(), E); if (Comma.isInvalid()) return ExprError(); return Comma.get(); @@ -1437,9 +1435,9 @@ Sema::CreateGenericSelectionExpr(SourceLocation KeyLoc, // We strip parens here because the controlling expression is typically // parenthesized in macro definitions. ControllingExpr = ControllingExpr->IgnoreParens(); - Diag(ControllingExpr->getLocStart(), diag::err_generic_sel_multi_match) - << ControllingExpr->getSourceRange() << ControllingExpr->getType() - << (unsigned) CompatIndices.size(); + Diag(ControllingExpr->getBeginLoc(), diag::err_generic_sel_multi_match) + << ControllingExpr->getSourceRange() << ControllingExpr->getType() + << (unsigned)CompatIndices.size(); for (unsigned I : CompatIndices) { Diag(Types[I]->getTypeLoc().getBeginLoc(), diag::note_compat_assoc) @@ -1456,8 +1454,8 @@ Sema::CreateGenericSelectionExpr(SourceLocation KeyLoc, // We strip parens here because the controlling expression is typically // parenthesized in macro definitions. ControllingExpr = ControllingExpr->IgnoreParens(); - Diag(ControllingExpr->getLocStart(), diag::err_generic_sel_no_match) - << ControllingExpr->getSourceRange() << ControllingExpr->getType(); + Diag(ControllingExpr->getBeginLoc(), diag::err_generic_sel_no_match) + << ControllingExpr->getSourceRange() << ControllingExpr->getType(); return ExprError(); } @@ -1682,7 +1680,7 @@ Sema::BuildDeclRefExpr(ValueDecl *D, QualType Ty, ExprValueKind VK, if (getLangOpts().ObjCWeak && isa<VarDecl>(D) && Ty.getObjCLifetime() == Qualifiers::OCL_Weak && !isUnevaluatedContext() && - !Diags.isIgnored(diag::warn_arc_repeated_use_of_weak, E->getLocStart())) + !Diags.isIgnored(diag::warn_arc_repeated_use_of_weak, E->getBeginLoc())) getCurFunction()->recordUseOfWeak(E); FieldDecl *FD = dyn_cast<FieldDecl>(D); @@ -4487,8 +4485,8 @@ Sema::CreateBuiltinArraySubscriptExpr(Expr *Base, SourceLocation LLoc, // wasn't promoted because of the C90 rule that doesn't // allow promoting non-lvalue arrays. Warn, then // force the promotion here. - Diag(LHSExp->getLocStart(), diag::ext_subscript_non_lvalue) << - LHSExp->getSourceRange(); + Diag(LHSExp->getBeginLoc(), diag::ext_subscript_non_lvalue) + << LHSExp->getSourceRange(); LHSExp = ImpCastExprToType(LHSExp, Context.getArrayDecayedType(LHSTy), CK_ArrayToPointerDecay).get(); LHSTy = LHSExp->getType(); @@ -4498,8 +4496,8 @@ Sema::CreateBuiltinArraySubscriptExpr(Expr *Base, SourceLocation LLoc, ResultType = LHSTy->getAs<PointerType>()->getPointeeType(); } else if (RHSTy->isArrayType()) { // Same as previous, except for 123[f().a] case - Diag(RHSExp->getLocStart(), diag::ext_subscript_non_lvalue) << - RHSExp->getSourceRange(); + Diag(RHSExp->getBeginLoc(), diag::ext_subscript_non_lvalue) + << RHSExp->getSourceRange(); RHSExp = ImpCastExprToType(RHSExp, Context.getArrayDecayedType(RHSTy), CK_ArrayToPointerDecay).get(); RHSTy = RHSExp->getType(); @@ -4526,8 +4524,8 @@ Sema::CreateBuiltinArraySubscriptExpr(Expr *Base, SourceLocation LLoc, // type. Note that Functions are not objects, and that (in C99 parlance) // incomplete types are not object types. if (ResultType->isFunctionType()) { - Diag(BaseExpr->getLocStart(), diag::err_subscript_function_type) - << ResultType << BaseExpr->getSourceRange(); + Diag(BaseExpr->getBeginLoc(), diag::err_subscript_function_type) + << ResultType << BaseExpr->getSourceRange(); return ExprError(); } @@ -4593,7 +4591,7 @@ bool Sema::CheckCXXDefaultArgExpr(SourceLocation CallLoc, FunctionDecl *FD, if (Inst.isInvalid()) return true; if (Inst.isAlreadyInstantiating()) { - Diag(Param->getLocStart(), diag::err_recursive_default_argument) << FD; + Diag(Param->getBeginLoc(), diag::err_recursive_default_argument) << FD; Param->setInvalidDecl(); return true; } @@ -4615,9 +4613,9 @@ bool Sema::CheckCXXDefaultArgExpr(SourceLocation CallLoc, FunctionDecl *FD, // Check the expression as an initializer for the parameter. InitializedEntity Entity = InitializedEntity::InitializeParameter(Context, Param); - InitializationKind Kind - = InitializationKind::CreateCopy(Param->getLocation(), - /*FIXME:EqualLoc*/UninstExpr->getLocStart()); + InitializationKind Kind = InitializationKind::CreateCopy( + Param->getLocation(), + /*FIXME:EqualLoc*/ UninstExpr->getBeginLoc()); Expr *ResultE = Result.getAs<Expr>(); InitializationSequence InitSeq(*this, Entity, Kind, ResultE); @@ -4639,7 +4637,7 @@ bool Sema::CheckCXXDefaultArgExpr(SourceLocation CallLoc, FunctionDecl *FD, // If the default argument expression is not set yet, we are building it now. if (!Param->hasInit()) { - Diag(Param->getLocStart(), diag::err_recursive_default_argument) << FD; + Diag(Param->getBeginLoc(), diag::err_recursive_default_argument) << FD; Param->setInvalidDecl(); return true; } @@ -4724,7 +4722,7 @@ static TypoCorrection TryTypoCorrectionForCall(Sema &S, Expr *Fn, ArrayRef<Expr *> Args) { MemberExpr *ME = dyn_cast<MemberExpr>(Fn); DeclarationName FuncName = FDecl->getDeclName(); - SourceLocation NameLoc = ME ? ME->getMemberLoc() : Fn->getLocStart(); + SourceLocation NameLoc = ME ? ME->getMemberLoc() : Fn->getBeginLoc(); if (TypoCorrection Corrected = S.CorrectTypo( DeclarationNameInfo(FuncName, NameLoc), Sema::LookupOrdinaryName, @@ -4815,8 +4813,7 @@ Sema::ConvertArgumentsForCall(CallExpr *Call, Expr *Fn, // Emit the location of the prototype. if (!TC && FDecl && !FDecl->getBuiltinID() && !IsExecConfig) - Diag(FDecl->getLocStart(), diag::note_callee_decl) - << FDecl; + Diag(FDecl->getBeginLoc(), diag::note_callee_decl) << FDecl; return true; } @@ -4838,28 +4835,27 @@ Sema::ConvertArgumentsForCall(CallExpr *Call, Expr *Fn, << TC.getCorrectionRange()); } else if (NumParams == 1 && FDecl && FDecl->getParamDecl(0)->getDeclName()) - Diag(Args[NumParams]->getLocStart(), + Diag(Args[NumParams]->getBeginLoc(), MinArgs == NumParams ? diag::err_typecheck_call_too_many_args_one : diag::err_typecheck_call_too_many_args_at_most_one) << FnKind << FDecl->getParamDecl(0) << static_cast<unsigned>(Args.size()) << Fn->getSourceRange() - << SourceRange(Args[NumParams]->getLocStart(), + << SourceRange(Args[NumParams]->getBeginLoc(), Args.back()->getLocEnd()); else - Diag(Args[NumParams]->getLocStart(), + Diag(Args[NumParams]->getBeginLoc(), MinArgs == NumParams ? diag::err_typecheck_call_too_many_args : diag::err_typecheck_call_too_many_args_at_most) << FnKind << NumParams << static_cast<unsigned>(Args.size()) << Fn->getSourceRange() - << SourceRange(Args[NumParams]->getLocStart(), + << SourceRange(Args[NumParams]->getBeginLoc(), Args.back()->getLocEnd()); // Emit the location of the prototype. if (!TC && FDecl && !FDecl->getBuiltinID() && !IsExecConfig) - Diag(FDecl->getLocStart(), diag::note_callee_decl) - << FDecl; + Diag(FDecl->getBeginLoc(), diag::note_callee_decl) << FDecl; // This deletes the extra arguments. Call->setNumArgs(Context, NumParams); @@ -4869,8 +4865,8 @@ Sema::ConvertArgumentsForCall(CallExpr *Call, Expr *Fn, SmallVector<Expr *, 8> AllArgs; VariadicCallType CallType = getVariadicCallType(FDecl, Proto, Fn); - Invalid = GatherArgumentsForCall(Call->getLocStart(), FDecl, - Proto, 0, Args, AllArgs, CallType); + Invalid = GatherArgumentsForCall(Call->getBeginLoc(), FDecl, Proto, 0, Args, + AllArgs, CallType); if (Invalid) return true; unsigned TotalNumArgs = AllArgs.size(); @@ -4898,8 +4894,7 @@ bool Sema::GatherArgumentsForCall(SourceLocation CallLoc, FunctionDecl *FDecl, if (ArgIx < Args.size()) { Arg = Args[ArgIx++]; - if (RequireCompleteType(Arg->getLocStart(), - ProtoArgType, + if (RequireCompleteType(Arg->getBeginLoc(), ProtoArgType, diag::err_call_incomplete_argument, Arg)) return true; @@ -5207,7 +5202,7 @@ static void checkDirectCallValidity(Sema &S, const Expr *Fn, return; if (const EnableIfAttr *Attr = S.CheckEnableIf(Callee, ArgExprs, true)) { - S.Diag(Fn->getLocStart(), + S.Diag(Fn->getBeginLoc(), isa<CXXMethodDecl>(Callee) ? diag::err_ovl_no_viable_member_function_in_call : diag::err_ovl_no_viable_function_in_call) @@ -5319,9 +5314,9 @@ ExprResult Sema::ActOnCallExpr(Scope *Scope, Expr *Fn, SourceLocation LParenLoc, if (isa<CXXPseudoDestructorExpr>(Fn)) { if (!ArgExprs.empty()) { // Pseudo-destructor calls should not have any arguments. - Diag(Fn->getLocStart(), diag::err_pseudo_dtor_call_with_args) + Diag(Fn->getBeginLoc(), diag::err_pseudo_dtor_call_with_args) << FixItHint::CreateRemoval( - SourceRange(ArgExprs.front()->getLocStart(), + SourceRange(ArgExprs.front()->getBeginLoc(), ArgExprs.back()->getLocEnd())); } @@ -5349,9 +5344,9 @@ ExprResult Sema::ActOnCallExpr(Scope *Scope, Expr *Fn, SourceLocation LParenLoc, Context.DependentTy, VK_RValue, RParenLoc); } else { - tryImplicitlyCaptureThisIfImplicitMemberFunctionAccessWithDependentArgs( + tryImplicitlyCaptureThisIfImplicitMemberFunctionAccessWithDependentArgs( *this, dyn_cast<UnresolvedMemberExpr>(Fn->IgnoreParens()), - Fn->getLocStart()); + Fn->getBeginLoc()); return new (Context) CallExpr( Context, Fn, ArgExprs, Context.DependentTy, VK_RValue, RParenLoc); @@ -5432,9 +5427,8 @@ ExprResult Sema::ActOnCallExpr(Scope *Scope, Expr *Fn, SourceLocation LParenLoc, NDecl = cast<MemberExpr>(NakedFn)->getMemberDecl(); if (FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(NDecl)) { - if (CallingNDeclIndirectly && - !checkAddressOfFunctionIsAvailable(FD, /*Complain=*/true, - Fn->getLocStart())) + if (CallingNDeclIndirectly && !checkAddressOfFunctionIsAvailable( + FD, /*Complain=*/true, Fn->getBeginLoc())) return ExprError(); if (getLangOpts().OpenCL && checkOpenCLDisabledDecl(*FD, *Fn)) @@ -5601,7 +5595,7 @@ Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, } // Check for a valid return type - if (CheckCallReturnType(FuncT->getReturnType(), Fn->getLocStart(), TheCall, + if (CheckCallReturnType(FuncT->getReturnType(), Fn->getBeginLoc(), TheCall, FDecl)) return ExprError(); @@ -5657,8 +5651,7 @@ Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, Arg = ArgE.getAs<Expr>(); } - if (RequireCompleteType(Arg->getLocStart(), - Arg->getType(), + if (RequireCompleteType(Arg->getBeginLoc(), Arg->getType(), diag::err_call_incomplete_argument, Arg)) return ExprError(); @@ -6396,11 +6389,11 @@ static QualType checkConditionalVoidType(Sema &S, ExprResult &LHS, Expr *RHSExpr = RHS.get(); if (!LHSExpr->getType()->isVoidType()) - S.Diag(RHSExpr->getLocStart(), diag::ext_typecheck_cond_one_void) - << RHSExpr->getSourceRange(); + S.Diag(RHSExpr->getBeginLoc(), diag::ext_typecheck_cond_one_void) + << RHSExpr->getSourceRange(); if (!RHSExpr->getType()->isVoidType()) - S.Diag(LHSExpr->getLocStart(), diag::ext_typecheck_cond_one_void) - << LHSExpr->getSourceRange(); + S.Diag(LHSExpr->getBeginLoc(), diag::ext_typecheck_cond_one_void) + << LHSExpr->getSourceRange(); LHS = S.ImpCastExprToType(LHS.get(), S.Context.VoidTy, CK_ToVoid); RHS = S.ImpCastExprToType(RHS.get(), S.Context.VoidTy, CK_ToVoid); return S.Context.VoidTy; @@ -7217,14 +7210,15 @@ static void DiagnoseConditionalPrecedence(Sema &Self, << Condition->getSourceRange() << BinaryOperator::getOpcodeStr(CondOpcode); - SuggestParentheses(Self, OpLoc, - Self.PDiag(diag::note_precedence_silence) - << BinaryOperator::getOpcodeStr(CondOpcode), - SourceRange(Condition->getLocStart(), Condition->getLocEnd())); + SuggestParentheses( + Self, OpLoc, + Self.PDiag(diag::note_precedence_silence) + << BinaryOperator::getOpcodeStr(CondOpcode), + SourceRange(Condition->getBeginLoc(), Condition->getLocEnd())); SuggestParentheses(Self, OpLoc, - Self.PDiag(diag::note_precedence_conditional_first), - SourceRange(CondRHS->getLocStart(), RHSExpr->getLocEnd())); + Self.PDiag(diag::note_precedence_conditional_first), + SourceRange(CondRHS->getBeginLoc(), RHSExpr->getLocEnd())); } /// Compute the nullability of a conditional expression. @@ -8136,7 +8130,7 @@ Sema::CheckSingleAssignmentConstraints(QualType LHSType, ExprResult &CallerRHS, return Incompatible; } if (getLangOpts().ObjC1 && - (CheckObjCBridgeRelatedConversions(E->getLocStart(), LHSType, + (CheckObjCBridgeRelatedConversions(E->getBeginLoc(), LHSType, E->getType(), E, Diagnose) || ConversionToObjCStringLiteralCheck(LHSType, E, Diagnose))) { if (!Diagnose) @@ -8921,7 +8915,7 @@ static void diagnoseStringPlusInt(Sema &Self, SourceLocation OpLoc, return; } - SourceRange DiagRange(LHSExpr->getLocStart(), RHSExpr->getLocEnd()); + SourceRange DiagRange(LHSExpr->getBeginLoc(), RHSExpr->getLocEnd()); Self.Diag(OpLoc, diag::warn_string_plus_int) << DiagRange << IndexExpr->IgnoreImpCasts()->getType(); @@ -8929,7 +8923,7 @@ static void diagnoseStringPlusInt(Sema &Self, SourceLocation OpLoc, if (IndexExpr == RHSExpr) { SourceLocation EndLoc = Self.getLocForEndOfToken(RHSExpr->getLocEnd()); Self.Diag(OpLoc, diag::note_string_plus_scalar_silence) - << FixItHint::CreateInsertion(LHSExpr->getLocStart(), "&") + << FixItHint::CreateInsertion(LHSExpr->getBeginLoc(), "&") << FixItHint::CreateReplacement(SourceRange(OpLoc), "[") << FixItHint::CreateInsertion(EndLoc, "]"); } else @@ -8962,7 +8956,7 @@ static void diagnoseStringPlusChar(Sema &Self, SourceLocation OpLoc, return; ASTContext &Ctx = Self.getASTContext(); - SourceRange DiagRange(LHSExpr->getLocStart(), RHSExpr->getLocEnd()); + SourceRange DiagRange(LHSExpr->getBeginLoc(), RHSExpr->getLocEnd()); const QualType CharType = CharExpr->getType(); if (!CharType->isAnyCharacterType() && @@ -8979,7 +8973,7 @@ static void diagnoseStringPlusChar(Sema &Self, SourceLocation OpLoc, if (isa<CharacterLiteral>(RHSExpr->IgnoreImpCasts())) { SourceLocation EndLoc = Self.getLocForEndOfToken(RHSExpr->getLocEnd()); Self.Diag(OpLoc, diag::note_string_plus_scalar_silence) - << FixItHint::CreateInsertion(LHSExpr->getLocStart(), "&") + << FixItHint::CreateInsertion(LHSExpr->getBeginLoc(), "&") << FixItHint::CreateReplacement(SourceRange(OpLoc), "[") << FixItHint::CreateInsertion(EndLoc, "]"); } else { @@ -9651,7 +9645,7 @@ static void diagnoseObjCLiteralComparison(Sema &S, SourceLocation Loc, if (BinaryOperator::isEqualityOp(Opc) && hasIsEqualMethod(S, LHS.get(), RHS.get())) { - SourceLocation Start = LHS.get()->getLocStart(); + SourceLocation Start = LHS.get()->getBeginLoc(); SourceLocation End = S.getLocForEndOfToken(RHS.get()->getLocEnd()); CharSourceRange OpRange = CharSourceRange::getCharRange(Loc, S.getLocForEndOfToken(Loc)); @@ -9684,7 +9678,7 @@ static void diagnoseLogicalNotOnLHSofCheck(Sema &S, ExprResult &LHS, << Loc << IsBitwiseOp; // First note suggest !(x < y) - SourceLocation FirstOpen = SubExpr->getLocStart(); + SourceLocation FirstOpen = SubExpr->getBeginLoc(); SourceLocation FirstClose = RHS.get()->getLocEnd(); FirstClose = S.getLocForEndOfToken(FirstClose); if (FirstClose.isInvalid()) @@ -9695,7 +9689,7 @@ static void diagnoseLogicalNotOnLHSofCheck(Sema &S, ExprResult &LHS, << FixItHint::CreateInsertion(FirstClose, ")"); // Second note suggests (!x) < y - SourceLocation SecondOpen = LHS.get()->getLocStart(); + SourceLocation SecondOpen = LHS.get()->getBeginLoc(); SourceLocation SecondClose = LHS.get()->getLocEnd(); SecondClose = S.getLocForEndOfToken(SecondClose); if (SecondClose.isInvalid()) @@ -9732,7 +9726,7 @@ static void diagnoseTautologicalComparison(Sema &S, SourceLocation Loc, QualType RHSType = RHS->getType(); if (LHSType->hasFloatingRepresentation() || (LHSType->isBlockPointerType() && !BinaryOperator::isEqualityOp(Opc)) || - LHS->getLocStart().isMacroID() || RHS->getLocStart().isMacroID() || + LHS->getBeginLoc().isMacroID() || RHS->getBeginLoc().isMacroID() || S.inTemplateInstantiation()) return; @@ -9886,7 +9880,7 @@ static bool checkThreeWayNarrowingConversion(Sema &S, QualType ToType, Expr *E, case NK_Constant_Narrowing: // Implicit conversion to a narrower type, and the value is not a constant // expression. - S.Diag(E->getLocStart(), diag::err_spaceship_argument_narrowing) + S.Diag(E->getBeginLoc(), diag::err_spaceship_argument_narrowing) << /*Constant*/ 1 << PreNarrowingValue.getAsString(S.Context, PreNarrowingType) << ToType; return true; @@ -9895,7 +9889,7 @@ static bool checkThreeWayNarrowingConversion(Sema &S, QualType ToType, Expr *E, // Implicit conversion to a narrower type, and the value is not a constant // expression. case NK_Type_Narrowing: - S.Diag(E->getLocStart(), diag::err_spaceship_argument_narrowing) + S.Diag(E->getBeginLoc(), diag::err_spaceship_argument_narrowing) << /*Constant*/ 0 << FromType << ToType; // TODO: It's not a constant expression, but what if the user intended it // to be? Can we produce notes to help them figure out why it isn't? @@ -9970,9 +9964,9 @@ static QualType checkArithmeticOrEnumeralThreeWayCompare(Sema &S, assert(Type->isArithmeticType() || Type->isEnumeralType()); bool HasNarrowing = checkThreeWayNarrowingConversion( - S, Type, LHS.get(), LHSType, LHS.get()->getLocStart()); - HasNarrowing |= checkThreeWayNarrowingConversion( - S, Type, RHS.get(), RHSType, RHS.get()->getLocStart()); + S, Type, LHS.get(), LHSType, LHS.get()->getBeginLoc()); + HasNarrowing |= checkThreeWayNarrowingConversion(S, Type, RHS.get(), RHSType, + RHS.get()->getBeginLoc()); if (HasNarrowing) return QualType(); @@ -11148,15 +11142,14 @@ QualType Sema::CheckAssignmentOperands(Expr *LHSExpr, ExprResult &RHS, if (ImplicitCastExpr *ICE = dyn_cast<ImplicitCastExpr>(RHSCheck)) RHSCheck = ICE->getSubExpr(); if (UnaryOperator *UO = dyn_cast<UnaryOperator>(RHSCheck)) { - if ((UO->getOpcode() == UO_Plus || - UO->getOpcode() == UO_Minus) && + if ((UO->getOpcode() == UO_Plus || UO->getOpcode() == UO_Minus) && Loc.isFileID() && UO->getOperatorLoc().isFileID() && // Only if the two operators are exactly adjacent. Loc.getLocWithOffset(1) == UO->getOperatorLoc() && // And there is a space or other character before the subexpr of the // unary +/-. We don't want to warn on "x=-1". - Loc.getLocWithOffset(2) != UO->getSubExpr()->getLocStart() && - UO->getSubExpr()->getLocStart().isFileID()) { + Loc.getLocWithOffset(2) != UO->getSubExpr()->getBeginLoc() && + UO->getSubExpr()->getBeginLoc().isFileID()) { Diag(Loc, diag::warn_not_compound_assign) << (UO->getOpcode() == UO_Plus ? "+" : "-") << SourceRange(UO->getOperatorLoc(), UO->getOperatorLoc()); @@ -11186,7 +11179,7 @@ QualType Sema::CheckAssignmentOperands(Expr *LHSExpr, ExprResult &RHS, // For ObjCWeak only, we do not warn if the assign is to a non-weak // variable, which will be valid for the current autorelease scope. if (!Diags.isIgnored(diag::warn_arc_repeated_use_of_weak, - RHS.get()->getLocStart())) + RHS.get()->getBeginLoc())) getCurFunction()->markSafeWeakUse(RHS.get()); } else if (getLangOpts().ObjCAutoRefCount || getLangOpts().ObjCWeak) { @@ -11267,9 +11260,9 @@ void Sema::DiagnoseCommaOperator(const Expr *LHS, SourceLocation Loc) { return; Diag(Loc, diag::warn_comma_operator); - Diag(LHS->getLocStart(), diag::note_cast_to_void) + Diag(LHS->getBeginLoc(), diag::note_cast_to_void) << LHS->getSourceRange() - << FixItHint::CreateInsertion(LHS->getLocStart(), + << FixItHint::CreateInsertion(LHS->getBeginLoc(), LangOpts.CPlusPlus ? "static_cast<void>(" : "(void)(") << FixItHint::CreateInsertion(PP.getLocForEndOfToken(LHS->getLocEnd()), @@ -11549,7 +11542,7 @@ QualType Sema::CheckAddressOfOperand(ExprResult &OrigOp, SourceLocation OpLoc) { if (auto *FD = dyn_cast_or_null<FunctionDecl>(dcl)) if (!checkAddressOfFunctionIsAvailable(FD, /*Complain=*/true, - op->getLocStart())) + op->getBeginLoc())) return QualType(); Expr::LValueClassification lval = op->ClassifyLValue(Context); @@ -12004,7 +11997,7 @@ ExprResult Sema::CreateBuiltinBinOp(SourceLocation OpLoc, // The meaning of x = {v} [...] is that of x = T(v) [...]. The meaning // of x = {} is x = T(). InitializationKind Kind = InitializationKind::CreateDirectList( - RHSExpr->getLocStart(), RHSExpr->getLocStart(), RHSExpr->getLocEnd()); + RHSExpr->getBeginLoc(), RHSExpr->getBeginLoc(), RHSExpr->getLocEnd()); InitializedEntity Entity = InitializedEntity::InitializeTemporary(LHSExpr->getType()); InitializationSequence InitSeq(*this, Entity, Kind, RHSExpr); @@ -12033,7 +12026,7 @@ ExprResult Sema::CreateBuiltinBinOp(SourceLocation OpLoc, // OpenCLC v2.0 s6.13.11.1 allows atomic variables to be initialized by // the ATOMIC_VAR_INIT macro. if (LHSTy->isAtomicType() || RHSTy->isAtomicType()) { - SourceRange SR(LHSExpr->getLocStart(), RHSExpr->getLocEnd()); + SourceRange SR(LHSExpr->getBeginLoc(), RHSExpr->getLocEnd()); if (BO_Assign == Opc) Diag(OpLoc, diag::err_opencl_atomic_init) << 0 << SR; else @@ -12196,10 +12189,12 @@ ExprResult Sema::CreateBuiltinBinOp(SourceLocation OpLoc, SourceLocation(), LookupOrdinaryName); if (ObjectSetClass && isa<ObjCIsaExpr>(LHS.get())) { SourceLocation RHSLocEnd = getLocForEndOfToken(RHS.get()->getLocEnd()); - Diag(LHS.get()->getExprLoc(), diag::warn_objc_isa_assign) << - FixItHint::CreateInsertion(LHS.get()->getLocStart(), "object_setClass(") << - FixItHint::CreateReplacement(SourceRange(OISA->getOpLoc(), OpLoc), ",") << - FixItHint::CreateInsertion(RHSLocEnd, ")"); + Diag(LHS.get()->getExprLoc(), diag::warn_objc_isa_assign) + << FixItHint::CreateInsertion(LHS.get()->getBeginLoc(), + "object_setClass(") + << FixItHint::CreateReplacement(SourceRange(OISA->getOpLoc(), OpLoc), + ",") + << FixItHint::CreateInsertion(RHSLocEnd, ")"); } else Diag(LHS.get()->getExprLoc(), diag::warn_objc_isa_assign); @@ -12256,13 +12251,14 @@ static void DiagnoseBitwisePrecedence(Sema &Self, BinaryOperatorKind Opc, if (isLeftBitwise || isRightBitwise) return; - SourceRange DiagRange = isLeftComp ? SourceRange(LHSExpr->getLocStart(), - OpLoc) - : SourceRange(OpLoc, RHSExpr->getLocEnd()); + SourceRange DiagRange = isLeftComp + ? SourceRange(LHSExpr->getBeginLoc(), OpLoc) + : SourceRange(OpLoc, RHSExpr->getLocEnd()); StringRef OpStr = isLeftComp ? LHSBO->getOpcodeStr() : RHSBO->getOpcodeStr(); - SourceRange ParensRange = isLeftComp ? - SourceRange(LHSBO->getRHS()->getLocStart(), RHSExpr->getLocEnd()) - : SourceRange(LHSExpr->getLocStart(), RHSBO->getLHS()->getLocEnd()); + SourceRange ParensRange = + isLeftComp + ? SourceRange(LHSBO->getRHS()->getBeginLoc(), RHSExpr->getLocEnd()) + : SourceRange(LHSExpr->getBeginLoc(), RHSBO->getLHS()->getLocEnd()); Self.Diag(OpLoc, diag::warn_precedence_bitwise_rel) << DiagRange << BinaryOperator::getOpcodeStr(Opc) << OpStr; @@ -12396,10 +12392,9 @@ static void DiagnoseShiftCompare(Sema &S, SourceLocation OpLoc, S.PDiag(diag::note_precedence_silence) << (Kind == OO_LessLess ? "<<" : ">>"), OCE->getSourceRange()); - SuggestParentheses(S, OpLoc, - S.PDiag(diag::note_evaluate_comparison_first), - SourceRange(OCE->getArg(1)->getLocStart(), - RHSExpr->getLocEnd())); + SuggestParentheses( + S, OpLoc, S.PDiag(diag::note_evaluate_comparison_first), + SourceRange(OCE->getArg(1)->getBeginLoc(), RHSExpr->getLocEnd())); } /// DiagnoseBinOpPrecedence - Emit warnings for expressions with tricky @@ -13069,9 +13064,9 @@ ExprResult Sema::BuildBuiltinOffsetOf(SourceLocation BuiltinLoc, // FIXME: An integral constant expression? if (!Idx->isTypeDependent() && !Idx->isValueDependent() && !Idx->getType()->isIntegerType()) - return ExprError(Diag(Idx->getLocStart(), - diag::err_typecheck_subscript_not_integer) - << Idx->getSourceRange()); + return ExprError( + Diag(Idx->getBeginLoc(), diag::err_typecheck_subscript_not_integer) + << Idx->getSourceRange()); // Record this array index. Comps.push_back(OffsetOfNode(OC.LocStart, Exprs.size(), OC.LocEnd)); @@ -13363,7 +13358,7 @@ void Sema::ActOnBlockArguments(SourceLocation CaretLoc, Declarator &ParamInfo, } else if (const FunctionProtoType *Fn = T->getAs<FunctionProtoType>()) { for (const auto &I : Fn->param_types()) { ParmVarDecl *Param = BuildParmVarDeclForTypedef( - CurBlock->TheDecl, ParamInfo.getLocStart(), I); + CurBlock->TheDecl, ParamInfo.getBeginLoc(), I); Params.push_back(Param); } } @@ -13542,7 +13537,7 @@ ExprResult Sema::BuildVAArgExpr(SourceLocation BuiltinLoc, if (const FunctionDecl *F = dyn_cast<FunctionDecl>(CurContext)) { CUDAFunctionTarget T = IdentifyCUDATarget(F); if (T == CFT_Global || T == CFT_Device || T == CFT_HostDevice) - return ExprError(Diag(E->getLocStart(), diag::err_va_arg_in_device)); + return ExprError(Diag(E->getBeginLoc(), diag::err_va_arg_in_device)); } } @@ -13592,9 +13587,10 @@ ExprResult Sema::BuildVAArgExpr(SourceLocation BuiltinLoc, if (!IsMS && !E->isTypeDependent() && !Context.hasSameType(VaListType, E->getType())) - return ExprError(Diag(E->getLocStart(), - diag::err_first_argument_to_va_arg_not_of_type_va_list) - << OrigExpr->getType() << E->getSourceRange()); + return ExprError( + Diag(E->getBeginLoc(), + diag::err_first_argument_to_va_arg_not_of_type_va_list) + << OrigExpr->getType() << E->getSourceRange()); if (!TInfo->getType()->isDependentType()) { if (RequireCompleteType(TInfo->getTypeLoc().getBeginLoc(), TInfo->getType(), @@ -13685,9 +13681,9 @@ bool Sema::ConversionToObjCStringLiteralCheck(QualType DstType, Expr *&Exp, if (!SL || !SL->isAscii()) return false; if (Diagnose) { - Diag(SL->getLocStart(), diag::err_missing_atsign_prefix) - << FixItHint::CreateInsertion(SL->getLocStart(), "@"); - Exp = BuildObjCStringLiteral(SL->getLocStart(), SL).get(); + Diag(SL->getBeginLoc(), diag::err_missing_atsign_prefix) + << FixItHint::CreateInsertion(SL->getBeginLoc(), "@"); + Exp = BuildObjCStringLiteral(SL->getBeginLoc(), SL).get(); } return true; } @@ -13708,7 +13704,7 @@ static bool maybeDiagnoseAssignmentToFunction(Sema &S, QualType DstType, return !S.checkAddressOfFunctionIsAvailable(FD, /*Complain=*/true, - SrcExpr->getLocStart()); + SrcExpr->getBeginLoc()); } bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, @@ -13961,7 +13957,7 @@ ExprResult Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, VerifyICEDiagnoser &Diagnoser, bool AllowFold) { - SourceLocation DiagLoc = E->getLocStart(); + SourceLocation DiagLoc = E->getBeginLoc(); if (getLangOpts().CPlusPlus11) { // C++11 [expr.const]p5: @@ -14191,7 +14187,7 @@ void Sema::PopExpressionEvaluationContext() { llvm_unreachable("Couldn't infer lambda error message."); for (const auto *L : Rec.Lambdas) - Diag(L->getLocStart(), D); + Diag(L->getBeginLoc(), D); } else { // Mark the capture expressions odr-used. This was deferred // during lambda expression creation. @@ -15021,7 +15017,7 @@ bool Sema::tryCaptureVariable( Diag(ExprLoc, diag::err_lambda_impcap) << Var->getDeclName(); Diag(Var->getLocation(), diag::note_previous_decl) << Var->getDeclName(); - Diag(LSI->Lambda->getLocStart(), diag::note_lambda_decl); + Diag(LSI->Lambda->getBeginLoc(), diag::note_lambda_decl); } else diagnoseUncapturableValueReference(*this, ExprLoc, Var, DC); } @@ -15075,7 +15071,7 @@ bool Sema::tryCaptureVariable( Diag(Var->getLocation(), diag::note_previous_decl) << Var->getDeclName(); if (cast<LambdaScopeInfo>(CSI)->Lambda) - Diag(cast<LambdaScopeInfo>(CSI)->Lambda->getLocStart(), + Diag(cast<LambdaScopeInfo>(CSI)->Lambda->getBeginLoc(), diag::note_lambda_decl); // FIXME: If we error out because an outer lambda can not implicitly // capture a variable that an inner lambda explicitly captures, we @@ -15433,8 +15429,8 @@ void Sema::MarkMemberReferenced(MemberExpr *E) { if (Method->isPure()) MightBeOdrUse = false; } - SourceLocation Loc = E->getMemberLoc().isValid() ? - E->getMemberLoc() : E->getLocStart(); + SourceLocation Loc = + E->getMemberLoc().isValid() ? E->getMemberLoc() : E->getBeginLoc(); MarkExprReferenced(*this, Loc, E->getMemberDecl(), E, MightBeOdrUse); } @@ -15530,34 +15526,34 @@ namespace { } void VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E) { - S.MarkFunctionReferenced(E->getLocStart(), - const_cast<CXXDestructorDecl*>(E->getTemporary()->getDestructor())); + S.MarkFunctionReferenced( + E->getBeginLoc(), + const_cast<CXXDestructorDecl *>(E->getTemporary()->getDestructor())); Visit(E->getSubExpr()); } void VisitCXXNewExpr(CXXNewExpr *E) { if (E->getOperatorNew()) - S.MarkFunctionReferenced(E->getLocStart(), E->getOperatorNew()); + S.MarkFunctionReferenced(E->getBeginLoc(), E->getOperatorNew()); if (E->getOperatorDelete()) - S.MarkFunctionReferenced(E->getLocStart(), E->getOperatorDelete()); + S.MarkFunctionReferenced(E->getBeginLoc(), E->getOperatorDelete()); Inherited::VisitCXXNewExpr(E); } void VisitCXXDeleteExpr(CXXDeleteExpr *E) { if (E->getOperatorDelete()) - S.MarkFunctionReferenced(E->getLocStart(), E->getOperatorDelete()); + S.MarkFunctionReferenced(E->getBeginLoc(), E->getOperatorDelete()); QualType Destroyed = S.Context.getBaseElementType(E->getDestroyedType()); if (const RecordType *DestroyedRec = Destroyed->getAs<RecordType>()) { CXXRecordDecl *Record = cast<CXXRecordDecl>(DestroyedRec->getDecl()); - S.MarkFunctionReferenced(E->getLocStart(), - S.LookupDestructor(Record)); + S.MarkFunctionReferenced(E->getBeginLoc(), S.LookupDestructor(Record)); } Inherited::VisitCXXDeleteExpr(E); } void VisitCXXConstructExpr(CXXConstructExpr *E) { - S.MarkFunctionReferenced(E->getLocStart(), E->getConstructor()); + S.MarkFunctionReferenced(E->getBeginLoc(), E->getConstructor()); Inherited::VisitCXXConstructExpr(E); } @@ -15728,7 +15724,7 @@ void Sema::DiagnoseAssignmentAsCondition(Expr *E) { Diag(Loc, diagnostic) << E->getSourceRange(); - SourceLocation Open = E->getLocStart(); + SourceLocation Open = E->getBeginLoc(); SourceLocation Close = getLocForEndOfToken(E->getSourceRange().getEnd()); Diag(Loc, diag::note_condition_assign_silence) << FixItHint::CreateInsertion(Open, "(") @@ -15746,7 +15742,7 @@ void Sema::DiagnoseAssignmentAsCondition(Expr *E) { /// that the user intended an assignment used as condition. void Sema::DiagnoseEqualityWithExtraParens(ParenExpr *ParenE) { // Don't warn if the parens came from a macro. - SourceLocation parenLoc = ParenE->getLocStart(); + SourceLocation parenLoc = ParenE->getBeginLoc(); if (parenLoc.isInvalid() || parenLoc.isMacroID()) return; // Don't warn for dependent expressions. @@ -16443,13 +16439,13 @@ ExprResult Sema::CheckPlaceholderExpr(Expr *E) { } } - Diag(E->getLocStart(), diag::err_builtin_fn_use); + Diag(E->getBeginLoc(), diag::err_builtin_fn_use); return ExprError(); } // Expressions of unknown type. case BuiltinType::OMPArraySection: - Diag(E->getLocStart(), diag::err_omp_array_section_use); + Diag(E->getBeginLoc(), diag::err_omp_array_section_use); return ExprError(); // Everything else should be impossible. |

