Lines Matching defs:AL

75 void SemaSwift::handleAttrAttr(Decl *D, const ParsedAttr &AL) {
76 if (AL.isInvalid() || AL.isUsedAsTypeAttr())
82 if (!SemaRef.checkStringLiteralArgumentAttr(AL, 0, Str)) {
83 AL.setInvalid();
87 D->addAttr(::new (getASTContext()) SwiftAttrAttr(getASTContext(), AL, Str));
90 void SemaSwift::handleBridge(Decl *D, const ParsedAttr &AL) {
94 if (!SemaRef.checkStringLiteralArgumentAttr(AL, 0, BT))
101 Diag(AL.getLoc(), diag::warn_duplicate_attribute) << AL;
105 D->addAttr(::new (getASTContext()) SwiftBridgeAttr(getASTContext(), AL, BT));
130 void SemaSwift::handleError(Decl *D, const ParsedAttr &AL) {
131 auto hasErrorParameter = [](Sema &S, Decl *D, const ParsedAttr &AL) -> bool {
137 S.Diag(AL.getLoc(), diag::err_attr_swift_error_no_error_parameter)
138 << AL << isa<ObjCMethodDecl>(D);
142 auto hasPointerResult = [](Sema &S, Decl *D, const ParsedAttr &AL) -> bool {
150 S.Diag(AL.getLoc(), diag::err_attr_swift_error_return_type)
151 << AL << AL.getArgAsIdent(0)->Ident->getName() << isa<ObjCMethodDecl>(D)
156 auto hasIntegerResult = [](Sema &S, Decl *D, const ParsedAttr &AL) -> bool {
161 S.Diag(AL.getLoc(), diag::err_attr_swift_error_return_type)
162 << AL << AL.getArgAsIdent(0)->Ident->getName() << isa<ObjCMethodDecl>(D)
170 IdentifierLoc *Loc = AL.getArgAsIdent(0);
174 Diag(AL.getLoc(), diag::warn_attribute_type_not_supported)
175 << AL << Loc->Ident;
185 if (!hasErrorParameter(SemaRef, D, AL))
190 if (!hasErrorParameter(SemaRef, D, AL) || !hasPointerResult(SemaRef, D, AL))
196 if (!hasErrorParameter(SemaRef, D, AL) || !hasIntegerResult(SemaRef, D, AL))
202 SwiftErrorAttr(getASTContext(), AL, Convention));
287 void SemaSwift::handleAsyncError(Decl *D, const ParsedAttr &AL) {
288 IdentifierLoc *IDLoc = AL.getArgAsIdent(0);
292 Diag(AL.getLoc(), diag::warn_attribute_type_not_supported)
293 << AL << IDLoc->Ident;
301 if (!AL.checkExactlyNumArgs(SemaRef, 2))
304 Expr *IdxExpr = AL.getArgAsExpr(1);
305 if (!SemaRef.checkUInt32Argument(AL, IdxExpr, ParamIdx))
311 if (!AL.checkExactlyNumArgs(SemaRef, 1))
318 SwiftAsyncErrorAttr(getASTContext(), AL, ConvKind, ParamIdx);
333 static bool validateSwiftFunctionName(Sema &S, const ParsedAttr &AL,
348 S.Diag(Loc, diag::warn_attr_swift_name_function) << AL;
365 << AL << /*context*/ 1;
373 << AL << /*basename*/ 0;
381 << AL << /* getter or setter */ 0;
386 S.Diag(Loc, diag::warn_attr_swift_name_missing_parameters) << AL;
397 << AL << /* have at least one parameter */ 1;
402 S.Diag(Loc, diag::warn_attr_swift_name_setter_parameters) << AL;
410 S.Diag(Loc, diag::warn_attr_swift_name_function) << AL;
423 << AL << /*parameter*/ 2;
432 S.Diag(Loc, diag::warn_attr_swift_name_multiple_selfs) << AL;
454 << AL << /*have a 'self:' parameter*/ 2;
477 S.Diag(Loc, ParamDiag) << AL;
486 << AL;
492 << AL;
499 << AL;
506 S.Diag(Loc, ParamDiag) << AL;
516 const ParsedAttr &AL, bool IsAsync) {
532 << AL << AL.isRegularKeywordAttribute()
542 << AL << isa<ObjCMethodDecl>(D);
550 if (!validateSwiftFunctionName(SemaRef, AL, Loc, Name, SwiftParamCount,
576 << (SwiftParamCount > ParamCount) << AL << ParamCount
593 << AL << /*context*/ 1;
599 << AL << /*basename*/ 0;
603 Diag(Loc, diag::warn_attr_swift_name_decl_kind) << AL;
609 void SemaSwift::handleName(Decl *D, const ParsedAttr &AL) {
612 if (!SemaRef.checkStringLiteralArgumentAttr(AL, 0, Name, &Loc))
615 if (!DiagnoseName(D, Name, Loc, AL, /*IsAsync=*/false))
618 D->addAttr(::new (getASTContext()) SwiftNameAttr(getASTContext(), AL, Name));
621 void SemaSwift::handleAsyncName(Decl *D, const ParsedAttr &AL) {
624 if (!SemaRef.checkStringLiteralArgumentAttr(AL, 0, Name, &Loc))
627 if (!DiagnoseName(D, Name, Loc, AL, /*IsAsync=*/true))
631 SwiftAsyncNameAttr(getASTContext(), AL, Name));
634 void SemaSwift::handleNewType(Decl *D, const ParsedAttr &AL) {
636 if (!AL.checkExactlyNumArgs(SemaRef, 1))
639 if (!AL.isArgIdent(0)) {
640 Diag(AL.getLoc(), diag::err_attribute_argument_type)
641 << AL << AANT_ArgumentIdentifier;
646 IdentifierInfo *II = AL.getArgAsIdent(0)->Ident;
648 Diag(AL.getLoc(), diag::warn_attribute_type_not_supported) << AL << II;
653 Diag(AL.getLoc(), diag::warn_attribute_wrong_decl_type)
654 << AL << AL.isRegularKeywordAttribute() << ExpectedTypedef;
659 SwiftNewTypeAttr(getASTContext(), AL, Kind));
662 void SemaSwift::handleAsyncAttr(Decl *D, const ParsedAttr &AL) {
663 if (!AL.isArgIdent(0)) {
664 Diag(AL.getLoc(), diag::err_attribute_argument_n_type)
665 << AL << 1 << AANT_ArgumentIdentifier;
670 IdentifierInfo *II = AL.getArgAsIdent(0)->Ident;
672 Diag(AL.getLoc(), diag::err_swift_async_no_access) << AL << II;
679 if (!AL.checkExactlyNumArgs(SemaRef, 1))
683 if (!AL.checkExactlyNumArgs(SemaRef, 2))
686 Expr *HandlerIdx = AL.getArgAsExpr(1);
687 if (!SemaRef.checkFunctionOrMethodParameterIndex(D, AL, 2, HandlerIdx, Idx))
708 ::new (getASTContext()) SwiftAsyncAttr(getASTContext(), AL, Kind, Idx);