clang 20.0.0git
|
#include "clang/Sema/SemaSwift.h"
Public Member Functions | |
SemaSwift (Sema &S) | |
SwiftNameAttr * | mergeNameAttr (Decl *D, const SwiftNameAttr &SNA, StringRef Name) |
void | handleAttrAttr (Decl *D, const ParsedAttr &AL) |
void | handleAsyncAttr (Decl *D, const ParsedAttr &AL) |
void | handleBridge (Decl *D, const ParsedAttr &AL) |
void | handleError (Decl *D, const ParsedAttr &AL) |
void | handleAsyncError (Decl *D, const ParsedAttr &AL) |
void | handleName (Decl *D, const ParsedAttr &AL) |
void | handleAsyncName (Decl *D, const ParsedAttr &AL) |
void | handleNewType (Decl *D, const ParsedAttr &AL) |
bool | DiagnoseName (Decl *D, StringRef Name, SourceLocation Loc, const ParsedAttr &AL, bool IsAsync) |
Do a check to make sure Name looks like a legal argument for the swift_name attribute applied to decl D . | |
void | AddParameterABIAttr (Decl *D, const AttributeCommonInfo &CI, ParameterABI abi) |
Public Member Functions inherited from clang::SemaBase | |
SemaBase (Sema &S) | |
ASTContext & | getASTContext () const |
DiagnosticsEngine & | getDiagnostics () const |
const LangOptions & | getLangOpts () const |
SemaDiagnosticBuilder | Diag (SourceLocation Loc, unsigned DiagID, bool DeferHint=false) |
Emit a diagnostic. | |
SemaDiagnosticBuilder | Diag (SourceLocation Loc, const PartialDiagnostic &PD, bool DeferHint=false) |
Emit a partial diagnostic. | |
PartialDiagnostic | PDiag (unsigned DiagID=0) |
Build a partial diagnostic. | |
Additional Inherited Members | |
Public Attributes inherited from clang::SemaBase | |
Sema & | SemaRef |
Definition at line 28 of file SemaSwift.h.
clang::SemaSwift::SemaSwift | ( | Sema & | S | ) |
Definition at line 24 of file SemaSwift.cpp.
void clang::SemaSwift::AddParameterABIAttr | ( | Decl * | D, |
const AttributeCommonInfo & | CI, | ||
ParameterABI | abi | ||
) |
Definition at line 710 of file SemaSwift.cpp.
References D, clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), clang::AttributeCommonInfo::getLoc(), clang::getParameterABISpelling(), clang::AttributeCommonInfo::isRegularKeywordAttribute(), clang::isValidSwiftContextType(), clang::isValidSwiftErrorResultType(), clang::isValidSwiftIndirectResultType(), clang::Ordinary, clang::SwiftAsyncContext, clang::SwiftContext, clang::SwiftErrorResult, clang::SwiftIndirectResult, and clang::ast_matchers::type.
Referenced by clang::Sema::InstantiateAttrs(), and ProcessDeclAttribute().
bool clang::SemaSwift::DiagnoseName | ( | Decl * | D, |
StringRef | Name, | ||
SourceLocation | Loc, | ||
const ParsedAttr & | AL, | ||
bool | IsAsync | ||
) |
Do a check to make sure Name
looks like a legal argument for the swift_name attribute applied to decl D
.
Raise a diagnostic if the name is invalid for the given declaration.
AL
is used to provide caret diagnostics in case of a malformed name.
D
, false otherwise. Definition at line 510 of file SemaSwift.cpp.
References D, clang::SemaBase::Diag(), clang::ExpectedFunctionWithProtoType, clang::Type::getPointeeType(), clang::ValueDecl::getType(), clang::QualType::isConstQualified(), clang::Type::isPointerType(), clang::Type::isReferenceType(), clang::AttributeCommonInfo::isRegularKeywordAttribute(), clang::isValidAsciiIdentifier(), Loc, clang::SemaBase::SemaRef, and clang::validateSwiftFunctionName().
Referenced by handleAsyncName(), handleName(), and ProcessAPINotes().
void clang::SemaSwift::handleAsyncAttr | ( | Decl * | D, |
const ParsedAttr & | AL | ||
) |
Definition at line 657 of file SemaSwift.cpp.
References clang::AANT_ArgumentIdentifier, clang::Type::castAs(), clang::ParsedAttr::checkExactlyNumArgs(), clang::Sema::checkFunctionOrMethodParameterIndex(), clang::checkSwiftAsyncErrorBlock(), D, clang::SemaBase::Diag(), clang::ParsedAttr::getArgAsExpr(), clang::ParsedAttr::getArgAsIdent(), clang::SemaBase::getASTContext(), clang::ParamIdx::getASTIndex(), clang::getFunctionOrMethodParam(), clang::AttributeCommonInfo::getLoc(), clang::Decl::getLocation(), clang::IdentifierInfo::getName(), getPointeeType(), clang::FunctionType::getReturnType(), clang::ValueDecl::getType(), clang::IdentifierLoc::Ident, clang::ParsedAttr::isArgIdent(), clang::Type::isBlockPointerType(), clang::Type::isVoidType(), Kind, and clang::SemaBase::SemaRef.
Referenced by ProcessDeclAttribute().
void clang::SemaSwift::handleAsyncError | ( | Decl * | D, |
const ParsedAttr & | AL | ||
) |
Definition at line 282 of file SemaSwift.cpp.
References clang::ParsedAttr::checkExactlyNumArgs(), clang::checkSwiftAsyncErrorBlock(), clang::Sema::checkUInt32Argument(), D, clang::SemaBase::Diag(), clang::ParsedAttr::getArgAsExpr(), clang::ParsedAttr::getArgAsIdent(), clang::SemaBase::getASTContext(), clang::AttributeCommonInfo::getLoc(), clang::IdentifierInfo::getName(), clang::IdentifierLoc::Ident, and clang::SemaBase::SemaRef.
Referenced by ProcessDeclAttribute().
void clang::SemaSwift::handleAsyncName | ( | Decl * | D, |
const ParsedAttr & | AL | ||
) |
Definition at line 616 of file SemaSwift.cpp.
References clang::Sema::checkStringLiteralArgumentAttr(), D, DiagnoseName(), clang::SemaBase::getASTContext(), Loc, and clang::SemaBase::SemaRef.
Referenced by ProcessDeclAttribute().
void clang::SemaSwift::handleAttrAttr | ( | Decl * | D, |
const ParsedAttr & | AL | ||
) |
Definition at line 75 of file SemaSwift.cpp.
References clang::Sema::checkStringLiteralArgumentAttr(), D, clang::SemaBase::getASTContext(), and clang::SemaBase::SemaRef.
Referenced by ProcessDeclAttribute().
void clang::SemaSwift::handleBridge | ( | Decl * | D, |
const ParsedAttr & | AL | ||
) |
Definition at line 85 of file SemaSwift.cpp.
References clang::Sema::checkStringLiteralArgumentAttr(), D, clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), clang::AttributeCommonInfo::getLoc(), clang::Other, and clang::SemaBase::SemaRef.
Referenced by ProcessDeclAttribute().
void clang::SemaSwift::handleError | ( | Decl * | D, |
const ParsedAttr & | AL | ||
) |
Definition at line 125 of file SemaSwift.cpp.
References D, clang::SemaBase::Diag(), E, clang::ParsedAttr::getArgAsIdent(), clang::SemaBase::getASTContext(), clang::getFunctionOrMethodNumParams(), clang::getFunctionOrMethodParamType(), clang::getFunctionOrMethodResultType(), clang::AttributeCommonInfo::getLoc(), clang::IdentifierInfo::getName(), clang::Type::hasPointerRepresentation(), clang::IdentifierLoc::Ident, clang::isErrorParameter(), clang::Type::isIntegralType(), clang::Type::isReferenceType(), Loc, and clang::SemaBase::SemaRef.
Referenced by ProcessDeclAttribute().
void clang::SemaSwift::handleName | ( | Decl * | D, |
const ParsedAttr & | AL | ||
) |
Definition at line 604 of file SemaSwift.cpp.
References clang::Sema::checkStringLiteralArgumentAttr(), D, DiagnoseName(), clang::SemaBase::getASTContext(), Loc, and clang::SemaBase::SemaRef.
Referenced by ProcessDeclAttribute().
void clang::SemaSwift::handleNewType | ( | Decl * | D, |
const ParsedAttr & | AL | ||
) |
Definition at line 629 of file SemaSwift.cpp.
References clang::AANT_ArgumentIdentifier, clang::ParsedAttr::checkExactlyNumArgs(), D, clang::SemaBase::Diag(), clang::ParsedAttr::getArgAsIdent(), clang::SemaBase::getASTContext(), clang::AttributeCommonInfo::getLoc(), clang::IdentifierInfo::getName(), clang::IdentifierLoc::Ident, clang::ParsedAttr::isArgIdent(), clang::AttributeCommonInfo::isRegularKeywordAttribute(), Kind, and clang::SemaBase::SemaRef.
Referenced by ProcessDeclAttribute().
SwiftNameAttr * clang::SemaSwift::mergeNameAttr | ( | Decl * | D, |
const SwiftNameAttr & | SNA, | ||
StringRef | Name | ||
) |
Definition at line 26 of file SemaSwift.cpp.
References D, clang::SemaBase::Diag(), and clang::SemaBase::getASTContext().
Referenced by mergeDeclAttribute().