|
@@ -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.
|