Lines Matching refs:Arg
493 const ParsedTemplateArgument &Arg) {
495 switch (Arg.getKind()) {
498 QualType T = SemaRef.GetTypeFromParser(Arg.getAsType(), &DI);
500 DI = SemaRef.Context.getTrivialTypeSourceInfo(T, Arg.getLocation());
505 Expr *E = static_cast<Expr *>(Arg.getAsExpr());
510 TemplateName Template = Arg.getAsTemplate().get();
512 if (Arg.getEllipsisLoc().isValid())
517 Arg.getScopeSpec().getWithLocInContext(
519 Arg.getLocation(),
520 Arg.getEllipsisLoc());
2444 const TemplateArgument &Arg = AL.getArgument();
2447 switch(Arg.getKind()) {
2449 // C++ [temp.arg.type]p1:
2457 TemplateName Name = Arg.getAsTemplate();
2471 if (DeclRefExpr *ArgExpr = dyn_cast<DeclRefExpr>(Arg.getAsExpr())) {
2475 dyn_cast<DependentScopeDeclRefExpr>(Arg.getAsExpr())) {
2479 dyn_cast<CXXDependentScopeMemberExpr>(Arg.getAsExpr())) {
2517 QualType ArgType = Context.getCanonicalType(Arg.getAsType());
2724 ExprResult Arg = SubstDefaultTemplateArgument(*this, Template,
2729 if (Arg.isInvalid())
2732 Expr *ArgE = Arg.takeAs<Expr>();
2763 Arg The template argument.
2784 const TemplateArgumentLoc &Arg,
2793 return CheckTemplateTypeArgument(TTP, Arg, Converted);
2829 switch (Arg.getArgument().getKind()) {
2836 CheckTemplateArgument(NTTP, NTTPType, Arg.getArgument().getAsExpr(),
2850 Converted.push_back(Arg.getArgument());
2858 = Arg.getArgument().getAsTemplateOrTemplatePattern()
2866 Arg.getTemplateNameLoc());
2869 SS.Adopt(Arg.getTemplateQualifierLoc());
2870 // FIXME: the template-template arg was a DependentTemplateName,
2881 if (Arg.getArgument().getKind() == TemplateArgument::TemplateExpansion){
2882 E = ActOnPackExpansion(E.take(), Arg.getTemplateEllipsisLoc());
2899 Diag(Arg.getLocation(), diag::err_template_arg_must_be_expr)
2900 << Arg.getSourceRange();
2909 // C++ [temp.arg]p2:
2916 QualType T = Arg.getArgument().getAsType();
2917 SourceRange SR = Arg.getSourceRange();
2958 switch (Arg.getArgument().getKind()) {
2964 if (CheckTemplateArgument(TempParm, Arg, ArgumentPackIndex))
2967 Converted.push_back(Arg.getArgument());
2974 Diag(Arg.getLocation(), diag::err_template_arg_must_be_template)
3057 // C++ [temp.arg]p1:
3195 TemplateArgumentLoc Arg;
3216 Arg = TemplateArgumentLoc(TemplateArgument(ArgType->getType()),
3233 Arg = TemplateArgumentLoc(TemplateArgument(Ex), Ex);
3252 Arg = TemplateArgumentLoc(TemplateArgument(Name), QualifierLoc,
3265 if (CheckTemplateArgument(*Param, Arg, Template, TemplateLoc,
3273 TemplateArgs.addArgument(Arg);
3531 /// This routine implements the semantics of C++ [temp.arg.type]. It
3536 QualType Arg = ArgInfo->getType();
3539 if (Arg->isVariablyModifiedType()) {
3540 return Diag(SR.getBegin(), diag::err_variably_modified_template_arg) << Arg;
3541 } else if (Context.hasSameUnqualifiedType(Arg, Context.OverloadTy)) {
3545 // C++03 [temp.arg.type]p2:
3557 Arg->hasUnnamedOrLocalType()) {
3559 (void)Finder.Visit(Context.getCanonicalType(Arg));
3575 QualType ParamType, Expr *Arg) {
3576 if (Arg->isValueDependent() || Arg->isTypeDependent())
3583 ExprResult ArgRV = S.DefaultFunctionArrayConversion(Arg);
3586 Arg = ArgRV.take();
3591 if (!Arg->EvaluateAsRValue(EvalResult, S.Context) ||
3593 SourceLocation DiagLoc = Arg->getExprLoc();
3605 << Arg->getType() << Arg->getSourceRange();
3613 // C++11 [temp.arg.nontype]p1:
3615 if (Arg->getType()->isNullPtrType())
3626 if (S.Context.hasSameUnqualifiedType(Arg->getType(), ParamType) ||
3627 S.IsQualificationConversion(Arg->getType(), ParamType, false,
3633 S.Diag(Arg->getExprLoc(), diag::err_template_arg_wrongtype_null_constant)
3634 << Arg->getType() << ParamType << Arg->getSourceRange();
3641 if (Arg->isNullPointerConstant(S.Context, Expr::NPC_NeverValueDependent)) {
3643 S.Diag(Arg->getExprLoc(), diag::err_template_arg_untyped_null_constant)
3645 << FixItHint::CreateInsertion(Arg->getLocStart(), Code)
3646 << FixItHint::CreateInsertion(S.PP.getLocForEndOfToken(Arg->getLocEnd()),
3659 /// of an object or function according to C++ [temp.arg.nontype]p1.
3667 Expr *Arg = ArgIn;
3668 QualType ArgType = Arg->getType();
3672 switch (isNullPointerValueTemplateArgument(S, Param, ParamType, Arg)) {
3674 S.Diag(Arg->getExprLoc(), diag::warn_cxx98_compat_template_arg_null);
3687 Arg = Arg->IgnoreImpCasts();
3689 // C++ [temp.arg.nontype]p1:
3704 while (ParenExpr *Parens = dyn_cast<ParenExpr>(Arg)) {
3706 S.Diag(Arg->getLocStart(),
3710 << Arg->getSourceRange();
3714 Arg = Parens->getSubExpr();
3718 dyn_cast<SubstNonTypeTemplateParmExpr>(Arg))
3719 Arg = subst->getReplacement()->IgnoreImpCasts();
3723 if (UnaryOperator *UnOp = dyn_cast<UnaryOperator>(Arg)) {
3725 Arg = UnOp->getSubExpr();
3731 if (S.getLangOpts().MicrosoftExt && isa<CXXUuidofExpr>(Arg)) {
3737 dyn_cast<SubstNonTypeTemplateParmExpr>(Arg))
3738 Arg = subst->getReplacement()->IgnoreImpCasts();
3742 if (Arg->isValueDependent()) {
3747 DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(Arg);
3749 S.Diag(Arg->getLocStart(), diag::err_template_arg_not_decl_ref)
3750 << Arg->getSourceRange();
3756 S.Diag(Arg->getLocStart(),
3758 << Arg->getSourceRange();
3767 S.Diag(Arg->getLocStart(), diag::err_template_arg_field)
3768 << Field << Arg->getSourceRange();
3776 S.Diag(Arg->getLocStart(), diag::err_template_arg_method)
3777 << Method << Arg->getSourceRange();
3789 S.Diag(Arg->getLocStart(), diag::err_template_arg_not_object_or_func)
3790 << Arg->getSourceRange();
3797 S.Diag(Arg->getLocStart(), S.getLangOpts().CPlusPlus11 ?
3800 << !Func << Entity << Arg->getSourceRange();
3804 S.Diag(Arg->getLocStart(), diag::err_template_arg_object_no_linkage)
3805 << !Func << Entity << Arg->getSourceRange();
3837 S.Diag(Arg->getLocStart(),
3839 << Var->getType() << Arg->getSourceRange();
3847 S.Diag(Arg->getLocStart(), diag::err_template_arg_thread_local)
3848 << Arg->getSourceRange();
3885 S.Diag(Arg->getLocStart(), diag::err_template_arg_not_address_of)
3891 S.Diag(Arg->getLocStart(), diag::err_template_arg_not_address_of)
3893 << FixItHint::CreateInsertion(Arg->getLocStart(), "&");
3910 // C++ [temp.arg.nontype]p5b3:
3923 S.Diag(Arg->getLocStart(),
3925 << ParamType << Arg->getType()
3926 << Arg->getSourceRange();
3940 S.Diag(Arg->getLocStart(), diag::err_template_arg_no_ref_bind)
3941 << ParamType << ArgIn->getType() << Arg->getSourceRange();
3943 S.Diag(Arg->getLocStart(), diag::err_template_arg_not_convertible)
3944 << ArgIn->getType() << ParamType << Arg->getSourceRange();
3953 S.MarkAnyDeclReferenced(Arg->getLocStart(), Entity, false);
3958 /// member constant according to C++ [temp.arg.nontype]p1.
3967 Expr *Arg = ResultArg;
3968 switch (isNullPointerValueTemplateArgument(S, Param, ParamType, Arg)) {
3972 S.Diag(Arg->getExprLoc(), diag::warn_cxx98_compat_template_arg_null);
3980 if (S.IsQualificationConversion(Arg->getType(),
3983 Arg = S.ImpCastExprToType(Arg, ParamType, CK_NoOp,
3984 Arg->getValueKind()).take();
3985 ResultArg = Arg;
3986 } else if (!S.Context.hasSameUnqualifiedType(Arg->getType(),
3989 S.Diag(Arg->getLocStart(), diag::err_template_arg_not_convertible)
3990 << Arg->getType() << ParamType << Arg->getSourceRange();
3996 while (ImplicitCastExpr *Cast = dyn_cast<ImplicitCastExpr>(Arg))
3997 Arg = Cast->getSubExpr();
3999 // C++ [temp.arg.nontype]p1:
4010 while (ParenExpr *Parens = dyn_cast<ParenExpr>(Arg)) {
4012 S.Diag(Arg->getLocStart(),
4016 << Arg->getSourceRange();
4020 Arg = Parens->getSubExpr();
4024 dyn_cast<SubstNonTypeTemplateParmExpr>(Arg))
4025 Arg = subst->getReplacement()->IgnoreImpCasts();
4028 if (UnaryOperator *UnOp = dyn_cast<UnaryOperator>(Arg)) {
4036 else if ((DRE = dyn_cast<DeclRefExpr>(Arg))) {
4042 if (Arg->isTypeDependent() || Arg->isValueDependent()) {
4043 Converted = TemplateArgument(Arg);
4057 return S.Diag(Arg->getLocStart(),
4059 << Arg->getSourceRange();
4068 if (Arg->isTypeDependent() || Arg->isValueDependent()) {
4069 Converted = TemplateArgument(Arg);
4078 S.Diag(Arg->getLocStart(),
4080 << Arg->getSourceRange();
4088 /// This routine implements the semantics of C++ [temp.arg.nontype].
4094 QualType InstantiatedParamType, Expr *Arg,
4097 SourceLocation StartLoc = Arg->getLocStart();
4101 if (InstantiatedParamType->isDependentType() || Arg->isTypeDependent()) {
4103 Converted = TemplateArgument(Arg);
4104 return Owned(Arg);
4107 // C++ [temp.arg.nontype]p5:
4126 !Context.hasSameUnqualifiedType(ParamType, Arg->getType())) {
4136 << Arg->getType().getUnqualifiedType()
4146 if (Arg->isValueDependent()) {
4147 Converted = TemplateArgument(Arg);
4148 return Owned(Arg);
4151 // C++ [temp.arg.nontype]p1:
4160 CheckConvertedConstantExpression(Arg, ParamType, Value,
4178 ExprResult ArgResult = DefaultLvalueConversion(Arg);
4181 Arg = ArgResult.take();
4183 QualType ArgType = Arg->getType();
4185 // C++ [temp.arg.nontype]p1:
4195 Diag(Arg->getLocStart(),
4197 << ArgType << Arg->getSourceRange();
4200 } else if (!Arg->isValueDependent()) {
4213 Arg = VerifyIntegerConstantExpression(Arg, &Value, Diagnoser,
4215 if (!Arg)
4229 Arg = ImpCastExprToType(Arg, ParamType, CK_IntegralToBoolean).take();
4230 } else if (IsIntegralPromotion(Arg, ArgType, ParamType) ||
4233 Arg = ImpCastExprToType(Arg, ParamType, CK_IntegralCast).take();
4236 Diag(Arg->getLocStart(),
4238 << Arg->getType() << InstantiatedParamType << Arg->getSourceRange();
4246 if (Arg->isValueDependent()) {
4249 Converted = TemplateArgument(Arg);
4250 return Owned(Arg);
4277 Diag(Arg->getLocStart(), diag::warn_template_arg_negative)
4279 << Arg->getSourceRange();
4292 Diag(Arg->getLocStart(),
4295 << Arg->getSourceRange();
4304 return Owned(Arg);
4307 QualType ArgType = Arg->getType();
4334 if (Arg->getType() == Context.OverloadTy) {
4335 if (FunctionDecl *Fn = ResolveAddressOfOverloadedFunction(Arg, ParamType,
4338 if (DiagnoseUseOfDecl(Fn, Arg->getLocStart()))
4341 Arg = FixOverloadedFunctionReference(Arg, FoundResult, Fn);
4342 ArgType = Arg->getType();
4350 Arg, Converted))
4352 return Owned(Arg);
4355 if (CheckTemplateArgumentPointerToMember(*this, Param, ParamType, Arg,
4358 return Owned(Arg);
4371 Arg, Converted))
4373 return Owned(Arg);
4386 if (Arg->getType() == Context.OverloadTy) {
4387 if (FunctionDecl *Fn = ResolveAddressOfOverloadedFunction(Arg,
4391 if (DiagnoseUseOfDecl(Fn, Arg->getLocStart()))
4394 Arg = FixOverloadedFunctionReference(Arg, FoundResult, Fn);
4395 ArgType = Arg->getType();
4402 Arg, Converted))
4404 return Owned(Arg);
4409 if (Arg->isTypeDependent() || Arg->isValueDependent()) {
4410 Converted = TemplateArgument(Arg);
4411 return Owned(Arg);
4414 Arg)) {
4416 Diag(Arg->getExprLoc(), diag::err_template_arg_not_convertible)
4417 << Arg->getType() << ParamType;
4425 Diag(Arg->getExprLoc(), diag::warn_cxx98_compat_template_arg_null);
4427 return Owned(Arg);
4435 if (CheckTemplateArgumentPointerToMember(*this, Param, ParamType, Arg,
4438 return Owned(Arg);
4444 /// This routine implements the semantics of C++ [temp.arg.template].
4447 const TemplateArgumentLoc &Arg,
4449 TemplateName Name = Arg.getArgument().getAsTemplateOrTemplatePattern();
4457 // C++0x [temp.arg.template]p1:
4474 Diag(Arg.getLocation(), diag::err_template_arg_not_class_template);
4487 Arg.getLocation());
4495 Sema::BuildExpressionFromDeclTemplateArgument(const TemplateArgument &Arg,
4510 if (Arg.getKind() == TemplateArgument::NullPtr) {
4518 assert(Arg.getKind() == TemplateArgument::Declaration &&
4521 ValueDecl *VD = cast<ValueDecl>(Arg.getAsDecl());
4619 Sema::BuildExpressionFromIntegralTemplateArgument(const TemplateArgument &Arg,
4621 assert(Arg.getKind() == TemplateArgument::Integral &&
4623 QualType OrigT = Arg.getIntegralType();
4646 E = new (Context) CharacterLiteral(Arg.getAsIntegral().getZExtValue(),
4649 E = new (Context) CXXBoolLiteralExpr(Arg.getAsIntegral().getBoolValue(),
4654 E = IntegerLiteral::Create(Context, Arg.getAsIntegral(), T, Loc);
4830 // C++0x [temp.arg.template]p3:
4859 // C++0x [temp.arg.template]p3: