Lines Matching refs:AL

75 void SemaSwift::handleAttrAttr(Decl *D, const ParsedAttr &AL) {  in handleAttrAttr()  argument
79 if (!SemaRef.checkStringLiteralArgumentAttr(AL, 0, Str)) in handleAttrAttr()
82 D->addAttr(::new (getASTContext()) SwiftAttrAttr(getASTContext(), AL, Str)); in handleAttrAttr()
85 void SemaSwift::handleBridge(Decl *D, const ParsedAttr &AL) { in handleBridge() argument
89 if (!SemaRef.checkStringLiteralArgumentAttr(AL, 0, BT)) in handleBridge()
96 Diag(AL.getLoc(), diag::warn_duplicate_attribute) << AL; in handleBridge()
100 D->addAttr(::new (getASTContext()) SwiftBridgeAttr(getASTContext(), AL, BT)); in handleBridge()
125 void SemaSwift::handleError(Decl *D, const ParsedAttr &AL) { in handleError() argument
126 auto hasErrorParameter = [](Sema &S, Decl *D, const ParsedAttr &AL) -> bool { in handleError() argument
132 S.Diag(AL.getLoc(), diag::err_attr_swift_error_no_error_parameter) in handleError()
133 << AL << isa<ObjCMethodDecl>(D); in handleError()
137 auto hasPointerResult = [](Sema &S, Decl *D, const ParsedAttr &AL) -> bool { in handleError() argument
145 S.Diag(AL.getLoc(), diag::err_attr_swift_error_return_type) in handleError()
146 << AL << AL.getArgAsIdent(0)->Ident->getName() << isa<ObjCMethodDecl>(D) in handleError()
151 auto hasIntegerResult = [](Sema &S, Decl *D, const ParsedAttr &AL) -> bool { in handleError() argument
156 S.Diag(AL.getLoc(), diag::err_attr_swift_error_return_type) in handleError()
157 << AL << AL.getArgAsIdent(0)->Ident->getName() << isa<ObjCMethodDecl>(D) in handleError()
165 IdentifierLoc *Loc = AL.getArgAsIdent(0); in handleError()
169 Diag(AL.getLoc(), diag::warn_attribute_type_not_supported) in handleError()
170 << AL << Loc->Ident; in handleError()
180 if (!hasErrorParameter(SemaRef, D, AL)) in handleError()
185 if (!hasErrorParameter(SemaRef, D, AL) || !hasPointerResult(SemaRef, D, AL)) in handleError()
191 if (!hasErrorParameter(SemaRef, D, AL) || !hasIntegerResult(SemaRef, D, AL)) in handleError()
197 SwiftErrorAttr(getASTContext(), AL, Convention)); in handleError()
282 void SemaSwift::handleAsyncError(Decl *D, const ParsedAttr &AL) { in handleAsyncError() argument
283 IdentifierLoc *IDLoc = AL.getArgAsIdent(0); in handleAsyncError()
287 Diag(AL.getLoc(), diag::warn_attribute_type_not_supported) in handleAsyncError()
288 << AL << IDLoc->Ident; in handleAsyncError()
296 if (!AL.checkExactlyNumArgs(SemaRef, 2)) in handleAsyncError()
299 Expr *IdxExpr = AL.getArgAsExpr(1); in handleAsyncError()
300 if (!SemaRef.checkUInt32Argument(AL, IdxExpr, ParamIdx)) in handleAsyncError()
306 if (!AL.checkExactlyNumArgs(SemaRef, 1)) in handleAsyncError()
313 SwiftAsyncErrorAttr(getASTContext(), AL, ConvKind, ParamIdx); in handleAsyncError()
328 static bool validateSwiftFunctionName(Sema &S, const ParsedAttr &AL, in validateSwiftFunctionName() argument
343 S.Diag(Loc, diag::warn_attr_swift_name_function) << AL; in validateSwiftFunctionName()
360 << AL << /*context*/ 1; in validateSwiftFunctionName()
368 << AL << /*basename*/ 0; in validateSwiftFunctionName()
376 << AL << /* getter or setter */ 0; in validateSwiftFunctionName()
381 S.Diag(Loc, diag::warn_attr_swift_name_missing_parameters) << AL; in validateSwiftFunctionName()
392 << AL << /* have at least one parameter */ 1; in validateSwiftFunctionName()
397 S.Diag(Loc, diag::warn_attr_swift_name_setter_parameters) << AL; in validateSwiftFunctionName()
405 S.Diag(Loc, diag::warn_attr_swift_name_function) << AL; in validateSwiftFunctionName()
418 << AL << /*parameter*/ 2; in validateSwiftFunctionName()
427 S.Diag(Loc, diag::warn_attr_swift_name_multiple_selfs) << AL; in validateSwiftFunctionName()
449 << AL << /*have a 'self:' parameter*/ 2; in validateSwiftFunctionName()
472 S.Diag(Loc, ParamDiag) << AL; in validateSwiftFunctionName()
481 << AL; in validateSwiftFunctionName()
487 << AL; in validateSwiftFunctionName()
494 << AL; in validateSwiftFunctionName()
501 S.Diag(Loc, ParamDiag) << AL; in validateSwiftFunctionName()
511 const ParsedAttr &AL, bool IsAsync) { in DiagnoseName() argument
527 << AL << AL.isRegularKeywordAttribute() in DiagnoseName()
537 << AL << isa<ObjCMethodDecl>(D); in DiagnoseName()
545 if (!validateSwiftFunctionName(SemaRef, AL, Loc, Name, SwiftParamCount, in DiagnoseName()
571 << (SwiftParamCount > ParamCount) << AL << ParamCount in DiagnoseName()
588 << AL << /*context*/ 1; in DiagnoseName()
594 << AL << /*basename*/ 0; in DiagnoseName()
598 Diag(Loc, diag::warn_attr_swift_name_decl_kind) << AL; in DiagnoseName()
604 void SemaSwift::handleName(Decl *D, const ParsedAttr &AL) { in handleName() argument
607 if (!SemaRef.checkStringLiteralArgumentAttr(AL, 0, Name, &Loc)) in handleName()
610 if (!DiagnoseName(D, Name, Loc, AL, /*IsAsync=*/false)) in handleName()
613 D->addAttr(::new (getASTContext()) SwiftNameAttr(getASTContext(), AL, Name)); in handleName()
616 void SemaSwift::handleAsyncName(Decl *D, const ParsedAttr &AL) { in handleAsyncName() argument
619 if (!SemaRef.checkStringLiteralArgumentAttr(AL, 0, Name, &Loc)) in handleAsyncName()
622 if (!DiagnoseName(D, Name, Loc, AL, /*IsAsync=*/true)) in handleAsyncName()
626 SwiftAsyncNameAttr(getASTContext(), AL, Name)); in handleAsyncName()
629 void SemaSwift::handleNewType(Decl *D, const ParsedAttr &AL) { in handleNewType() argument
631 if (!AL.checkExactlyNumArgs(SemaRef, 1)) in handleNewType()
634 if (!AL.isArgIdent(0)) { in handleNewType()
635 Diag(AL.getLoc(), diag::err_attribute_argument_type) in handleNewType()
636 << AL << AANT_ArgumentIdentifier; in handleNewType()
641 IdentifierInfo *II = AL.getArgAsIdent(0)->Ident; in handleNewType()
643 Diag(AL.getLoc(), diag::warn_attribute_type_not_supported) << AL << II; in handleNewType()
648 Diag(AL.getLoc(), diag::warn_attribute_wrong_decl_type_str) in handleNewType()
649 << AL << AL.isRegularKeywordAttribute() << "typedefs"; in handleNewType()
654 SwiftNewTypeAttr(getASTContext(), AL, Kind)); in handleNewType()
657 void SemaSwift::handleAsyncAttr(Decl *D, const ParsedAttr &AL) { in handleAsyncAttr() argument
658 if (!AL.isArgIdent(0)) { in handleAsyncAttr()
659 Diag(AL.getLoc(), diag::err_attribute_argument_n_type) in handleAsyncAttr()
660 << AL << 1 << AANT_ArgumentIdentifier; in handleAsyncAttr()
665 IdentifierInfo *II = AL.getArgAsIdent(0)->Ident; in handleAsyncAttr()
667 Diag(AL.getLoc(), diag::err_swift_async_no_access) << AL << II; in handleAsyncAttr()
674 if (!AL.checkExactlyNumArgs(SemaRef, 1)) in handleAsyncAttr()
678 if (!AL.checkExactlyNumArgs(SemaRef, 2)) in handleAsyncAttr()
681 Expr *HandlerIdx = AL.getArgAsExpr(1); in handleAsyncAttr()
682 if (!SemaRef.checkFunctionOrMethodParameterIndex(D, AL, 2, HandlerIdx, Idx)) in handleAsyncAttr()
703 ::new (getASTContext()) SwiftAsyncAttr(getASTContext(), AL, Kind, Idx); in handleAsyncAttr()