clang: include/clang/Sema/SemaObjC.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_CLANG_SEMA_SEMAOBJC_H

14#define LLVM_CLANG_SEMA_SEMAOBJC_H

15

32#include "llvm/ADT/DenseMap.h"

33#include "llvm/ADT/MapVector.h"

34#include "llvm/ADT/SmallPtrSet.h"

35#include

36#include

37#include

38

40

41class AttributeCommonInfo;

42class AvailabilitySpec;

44class DeclGroupRef;

45class LookupResult;

46struct ObjCDictionaryElement;

47class ParsedAttr;

48class ParsedAttributesView;

49class Scope;

50struct SkipBodyInfo;

51

53public:

55

57 Expr *collection);

59 Expr *collection,

61

62

64

67

69

72

77 Expr *operand);

79 Stmt *SynchBody);

80

82

83

84

88

89

96

97

103 bool FailOnError = false);

104

105

111 bool FailOnError, bool Rebuilding);

112

113

114

116

117

118

122

126

127

129

132

133

134

135

136

139

141

144 RedeclarationKind Redecl = RedeclarationKind::NotForRedeclaration);

145

148

151

152

153

154

156

157

160

162

164

165

166

168 Expr **Args, unsigned NumArgs);

169

171

174

175

176

179

180

181

183

184private:

186

187

188

189

190

191

192

193

194

195

196

197public:

206

207

208

210

212 llvm::DenseMap<Selector, std::pair<ObjCMethodList, ObjCMethodList>>;

213

214

215

216

217

218

219

221

223

225

236

242

247

253 Decl *const *ProtoRefs, unsigned NumProtoRefs,

256

262

267

273

277

281 unsigned NumProtoRefs, const SourceLocation *ProtoLocs,

284

289 Decl *const *ProtoRefs, unsigned NumProtoRefs,

292

297

302

304

307

312

316

321 bool SelectProtocolFirst = false);

322

323

324

325

333 bool warnOnIncompleteProtocols);

334

337

341

345

346

349

350

352 };

353

355 int ParamIndex,

356 bool MethodDefinition);

357

364

365

367 unsigned CNumArgs,

369 bool isVariadic, bool MethodDefinition);

370

372

374

375

376

379

380

386

389

393

394

395

397

400

401

402

406

409 bool IsProtocolMethodDecl);

410

413 bool IsProtocolMethodDecl);

414

415

416

418 bool IsProtocolMethodDecl);

419

420

421

425 ObjCContainerDecl *IDecl, bool &IncompleteImpl, bool ImmediateClass,

426 bool WarnCategoryMethodImpl = false);

427

428

429

430

432

433

434

437 bool IncompleteImpl = false);

438

442

443

444

448

449

451

454

455

456

457

458

459

460 bool

463 bool InstanceFirst, bool CheckTheOther,

465

466 bool

470

471 void

474 bool receiverIdOrClass);

475

478

479

481

483

484

485

486

488

492

497

499

500

501

502 void

505

507

508

509

512

513

514

515

519

520

521

522

523

525 bool impl = false) {

526 AddMethodToGlobalPool(Method, impl, true);

527 }

528

529

531 AddMethodToGlobalPool(Method, impl, false);

532 }

533

537

538

539

540

541

542

543

544

545

546

547

548

549

550

554

556

557

558

560

563

565

566private:

567

568

569 void AddMethodToGlobalPool(ObjCMethodDecl *Method, bool impl, bool instance);

570

571

572

574 bool receiverIdOrClass,

575 bool instance);

576

577

578

579

580

581

582

583

584

585

586

587

588

589public:

590

592

593

595

596

598

599

601

602

604

605

607

608

610

611

613

614

616

617

619

620

622

623

625

626

628

629

631

632

634

635

637

643 QualType SuperType, bool Super);

644

649

650

653

655

656

657

658

663

664

665

666

667

668

670

672 Expr *IndexExpr,

675

679

683

688

689

694 bool WarnMultipleSelectors);

695

696

703

705

706

707

709

711

713

714

717

720 bool HasTrailingDot,

722

727

734 bool isImplicit = false);

735

740

745

752 bool isImplicit = false);

753

758

763

768

773 Expr *SubExpr);

774

776

778

781

788 bool Diagnose = true);

789

792 bool Diagnose = true);

793

794

797

800 bool IsInstance);

802 bool IsInstance);

803

805

807

808

809

813 bool Diagnose = true,

814 bool DiagnoseCFAudited = false,

816

819

822

823

824

825

826

834

835

836

837

840 bool isSuperMessage);

841

842

843

845

846

847

848

850

851

852

855 bool receiverIdOrClass = false) {

856 return LookupMethodInGlobalPool(Sel, R, receiverIdOrClass,

857 true);

858 }

859

860

861

864 bool receiverIdOrClass = false) {

865 return LookupMethodInGlobalPool(Sel, R, receiverIdOrClass,

866 false);

867 }

868

869

870

871

872

873

874

877

878

879

880

881

884 bool AllowBuiltinCreation = false);

885

887

888

889

892

894 bool Diagnose = true);

895

896

898

902

903

904

906

907

908

919

920

921

922

923

924

925

926

927

928

929

930

931

932public:

933

934

935

937 unsigned &Attributes,

938 bool propertyInPrimaryClass);

939

940

941

942

944

950

957

958

959

964 unsigned &Attributes, const unsigned AttributesAsWritten, QualType T,

966

967

968

974 const bool isReadWrite, const unsigned Attributes,

975 const unsigned AttributesAsWritten, QualType T,

978

982 bool OverridingProtocolProperty);

983

987

988

989

992 bool SynthesizeProperties);

993

994

996

997

998

1003

1004

1005

1006

1009

1011

1012 void

1015

1016

1017

1018

1021

1022

1023

1024

1025

1026

1027

1028

1029

1030

1031

1032

1033

1036

1039

1060

1063 bool IsTemplateInstantiation);

1064

1065

1068

1071

1072

1073};

1074

1075}

1076

1077#endif

Forward declaration of all AST node types.

enum clang::sema::@1726::IndirectLocalPathEntry::EntryKind Kind

Defines the clang::IdentifierInfo, clang::IdentifierTable, and clang::Selector interfaces.

Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.

RedeclarationKind

Specifies whether (or how) name lookup is being performed for a redeclaration (vs.

Defines the clang::SourceLocation class and associated facilities.

Defines various enumerations that describe declaration and type specifiers.

Defines the clang::TokenKind enum and support functions.

C Language Family Type Representation.

Attr - This represents one attribute.

DeclContext - This is used only as base class of specific decl types that can act as declaration cont...

Decl - This represents one declaration (or definition), e.g.

The name of a declaration.

Information about one declarator, including the parsed type information and the identifier.

This represents one expression.

One of these records is kept for each identifier that is lexed.

Represents the results of name lookup.

static const unsigned NumNSNumberLiteralMethods

This represents a decl that may have a name.

ObjCArrayLiteral - used for objective-c array containers; as in: @["Hello", NSApp,...

ObjCCategoryDecl - Represents a category declaration.

ObjCCategoryImplDecl - An object of this class encapsulates a category @implementation declaration.

ObjCContainerDecl - Represents a container for method declarations.

Captures information about "declaration specifiers" specific to Objective-C.

ObjCDictionaryLiteral - AST node to represent objective-c dictionary literals; as in:"name" : NSUserN...

ObjCImplementationDecl - Represents a class definition - this is where method definitions are specifi...

Represents an ObjC class declaration.

ObjCIvarDecl - Represents an ObjC instance variable.

ObjCList - This is a simple template class used to hold various lists of decls etc,...

An expression that sends a message to the given Objective-C object or class.

ObjCMethodDecl - Represents an instance or class method declaration.

Represents a pointer to an Objective C object.

Represents a class type in Objective C.

Represents one property declaration in an Objective-C interface.

Represents an Objective-C protocol declaration.

Represents the declaration of an Objective-C type parameter.

Stores a list of Objective-C type parameters for a parameterized class or a category/extension thereo...

Represents a parameter to a function.

ParsedAttr - Represents a syntactic attribute.

A (possibly-)qualified type.

Represents a struct/union/class.

Scope - A scope is a transient data structure that is used while parsing the program.

Smart pointer class that efficiently represents Objective-C method names.

A generic diagnostic builder for errors which may or may not be deferred.

bool isCFError(RecordDecl *D)

void ActOnObjCReenterContainerContext(ObjCContainerDecl *ObjCCtx)

void ActOnObjCTemporaryExitContainerContext(ObjCContainerDecl *ObjCCtx)

Invoked when we must temporarily exit the objective-c container scope for parsing/looking-up C constr...

void DefaultSynthesizeProperties(Scope *S, ObjCImplDecl *IMPDecl, ObjCInterfaceDecl *IDecl, SourceLocation AtEnd)

DefaultSynthesizeProperties - This routine default synthesizes all properties which must be synthesiz...

void handleRuntimeName(Decl *D, const ParsedAttr &AL)

Decl * ActOnIvar(Scope *S, SourceLocation DeclStart, Declarator &D, Expr *BitWidth, tok::ObjCKeywordKind visibility)

ActOnIvar - Each ivar field of an objective-c class is passed into this in order to create an IvarDec...

void ActOnStartOfObjCMethodDef(Scope *S, Decl *D)

ActOnStartOfObjCMethodDef - This routine sets up parameters; invisible and user declared,...

void handleNSObject(Decl *D, const ParsedAttr &AL)

void ActOnSuperClassOfClassInterface(Scope *S, SourceLocation AtInterfaceLoc, ObjCInterfaceDecl *IDecl, IdentifierInfo *ClassName, SourceLocation ClassLoc, IdentifierInfo *SuperName, SourceLocation SuperLoc, ArrayRef< ParsedType > SuperTypeArgs, SourceRange SuperTypeArgsRange)

bool DiagnosePropertyAccessorMismatch(ObjCPropertyDecl *PD, ObjCMethodDecl *Getter, SourceLocation Loc)

bool isValidOSObjectOutParameter(const Decl *D)

VarDecl * BuildObjCExceptionDecl(TypeSourceInfo *TInfo, QualType ExceptionType, SourceLocation StartLoc, SourceLocation IdLoc, const IdentifierInfo *Id, bool Invalid=false)

Build a type-check a new Objective-C exception variable declaration.

ObjCMessageKind getObjCMessageKind(Scope *S, IdentifierInfo *Name, SourceLocation NameLoc, bool IsSuper, bool HasTrailingDot, ParsedType &ReceiverType)

ObjCMethodDecl * ValueWithBytesObjCTypeMethod

The declaration of the valueWithBytes:objCType: method.

void DiagnoseUnusedBackingIvarInAccessor(Scope *S, const ObjCImplementationDecl *ImplD)

DiagnoseUnusedBackingIvarInAccessor - Issue an 'unused' warning if ivar which backs the property is n...

void SetIvarInitializers(ObjCImplementationDecl *ObjCImplementation)

SetIvarInitializers - This routine builds initialization ASTs for the Objective-C implementation whos...

StmtResult ActOnObjCForCollectionStmt(SourceLocation ForColLoc, Stmt *First, Expr *collection, SourceLocation RParenLoc)

StmtResult FinishObjCForCollectionStmt(Stmt *ForCollection, Stmt *Body)

FinishObjCForCollectionStmt - Attach the body to a objective-C foreach statement.

ExprResult BuildObjCDictionaryLiteral(SourceRange SR, MutableArrayRef< ObjCDictionaryElement > Elements)

ExprResult HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT, Expr *BaseExpr, SourceLocation OpLoc, DeclarationName MemberName, SourceLocation MemberLoc, SourceLocation SuperLoc, QualType SuperType, bool Super)

HandleExprPropertyRefExpr - Handle foo.bar where foo is a pointer to an objective C interface.

void handleNSErrorDomain(Decl *D, const ParsedAttr &Attr)

void WarnExactTypedMethods(ObjCMethodDecl *Method, ObjCMethodDecl *MethodDecl, bool IsProtocolMethodDecl)

WarnExactTypedMethods - This routine issues a warning if method implementation declaration matches ex...

ExprResult BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef< SourceLocation > SelectorLocs, SourceLocation RBracLoc, MultiExprArg Args, bool isImplicit=false)

Build an Objective-C instance message expression.

void handleXReturnsXRetainedAttr(Decl *D, const ParsedAttr &AL)

const ObjCMethodDecl * SelectorsForTypoCorrection(Selector Sel, QualType ObjectType=QualType())

QualType BuildObjCTypeParamType(const ObjCTypeParamDecl *Decl, SourceLocation ProtocolLAngleLoc, ArrayRef< ObjCProtocolDecl * > Protocols, ArrayRef< SourceLocation > ProtocolLocs, SourceLocation ProtocolRAngleLoc, bool FailOnError=false)

Build an Objective-C type parameter type.

void ProcessPropertyDecl(ObjCPropertyDecl *property)

Process the specified property declaration and create decls for the setters and getters as needed.

TypeResult actOnObjCTypeArgsAndProtocolQualifiers(Scope *S, SourceLocation Loc, ParsedType BaseType, SourceLocation TypeArgsLAngleLoc, ArrayRef< ParsedType > TypeArgs, SourceLocation TypeArgsRAngleLoc, SourceLocation ProtocolLAngleLoc, ArrayRef< Decl * > Protocols, ArrayRef< SourceLocation > ProtocolLocs, SourceLocation ProtocolRAngleLoc)

Build a specialized and/or protocol-qualified Objective-C type.

ExprResult ParseObjCSelectorExpression(Selector Sel, SourceLocation AtLoc, SourceLocation SelLoc, SourceLocation LParenLoc, SourceLocation RParenLoc, bool WarnMultipleSelectors)

ParseObjCSelectorExpression - Build selector expression for @selector.

void addMethodToGlobalList(ObjCMethodList *List, ObjCMethodDecl *Method)

Add the given method to the list of globally-known methods.

void checkArrayLiteral(QualType TargetType, ObjCArrayLiteral *ArrayLiteral)

Check an Objective-C array literal being converted to the given target type.

ObjCPropertyDecl * HandlePropertyInClassExtension(Scope *S, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, Selector GetterSel, SourceLocation GetterNameLoc, Selector SetterSel, SourceLocation SetterNameLoc, const bool isReadWrite, unsigned &Attributes, const unsigned AttributesAsWritten, QualType T, TypeSourceInfo *TSI, tok::ObjCKeywordKind MethodImplKind)

Called by ActOnProperty to handle @property declarations in class extensions.

ObjCInterfaceDecl * ActOnStartClassInterface(Scope *S, SourceLocation AtInterfaceLoc, IdentifierInfo *ClassName, SourceLocation ClassLoc, ObjCTypeParamList *typeParamList, IdentifierInfo *SuperName, SourceLocation SuperLoc, ArrayRef< ParsedType > SuperTypeArgs, SourceRange SuperTypeArgsRange, Decl *const *ProtoRefs, unsigned NumProtoRefs, const SourceLocation *ProtoLocs, SourceLocation EndProtoLoc, const ParsedAttributesView &AttrList, SkipBodyInfo *SkipBody)

void handleExternallyRetainedAttr(Decl *D, const ParsedAttr &AL)

ARCConversionResult CheckObjCConversion(SourceRange castRange, QualType castType, Expr *&op, CheckedConversionKind CCK, bool Diagnose=true, bool DiagnoseCFAudited=false, BinaryOperatorKind Opc=BO_PtrMemD)

Checks for invalid conversions and casts between retainable pointers and other pointer kinds for ARC ...

void diagnoseNullResettableSynthesizedSetters(const ObjCImplDecl *impDecl)

Diagnose any null-resettable synthesized setters.

ObjCSubscriptKind CheckSubscriptingKind(Expr *FromE)

CheckSubscriptingKind - This routine decide what type of indexing represented by "FromE" is being don...

void updateOutOfDateSelector(Selector Sel)

llvm::SmallPtrSet< Selector, 8 > SelectorSet

IdentifierInfo * getNSErrorIdent()

Retrieve the identifier "NSError".

ExprResult BuildClassMessage(TypeSourceInfo *ReceiverTypeInfo, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef< SourceLocation > SelectorLocs, SourceLocation RBracLoc, MultiExprArg Args, bool isImplicit=false)

Build an Objective-C class message expression.

void popObjCTypeParamList(Scope *S, ObjCTypeParamList *typeParamList)

ExprResult BuildObjCNumericLiteral(SourceLocation AtLoc, Expr *Number)

BuildObjCNumericLiteral - builds an ObjCBoxedExpr AST node for the numeric literal expression.

ObjCImplementationDecl * ActOnStartClassImplementation(SourceLocation AtClassImplLoc, const IdentifierInfo *ClassName, SourceLocation ClassLoc, const IdentifierInfo *SuperClassname, SourceLocation SuperClassLoc, const ParsedAttributesView &AttrList)

bool AreMultipleMethodsInGlobalPool(Selector Sel, ObjCMethodDecl *BestMethod, SourceRange R, bool receiverIdOrClass, SmallVectorImpl< ObjCMethodDecl * > &Methods)

ObjCMethodDecl * LookupInstanceMethodInGlobalPool(Selector Sel, SourceRange R, bool receiverIdOrClass=false)

LookupInstanceMethodInGlobalPool - Returns the method and warns if there are multiple signatures.

Decl * ActOnObjCExceptionDecl(Scope *S, Declarator &D)

ExprResult ActOnObjCBridgedCast(Scope *S, SourceLocation LParenLoc, ObjCBridgeCastKind Kind, SourceLocation BridgeKeywordLoc, ParsedType Type, SourceLocation RParenLoc, Expr *SubExpr)

ObjCPropertyDecl * CreatePropertyDecl(Scope *S, ObjCContainerDecl *CDecl, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, Selector GetterSel, SourceLocation GetterNameLoc, Selector SetterSel, SourceLocation SetterNameLoc, const bool isReadWrite, const unsigned Attributes, const unsigned AttributesAsWritten, QualType T, TypeSourceInfo *TSI, tok::ObjCKeywordKind MethodImplKind, DeclContext *lexicalDC=nullptr)

Called by ActOnProperty and HandlePropertyInClassExtension to handle creating the ObjcPropertyDecl fo...

StmtResult ActOnObjCAtSynchronizedStmt(SourceLocation AtLoc, Expr *SynchExpr, Stmt *SynchBody)

ObjCLiteralKind CheckLiteralKind(Expr *FromE)

ParsedType ActOnObjCInstanceType(SourceLocation Loc)

The parser has parsed the context-sensitive type 'instancetype' in an Objective-C message declaration...

void handleMethodFamilyAttr(Decl *D, const ParsedAttr &AL)

llvm::DenseMap< Selector, std::pair< ObjCMethodList, ObjCMethodList > > GlobalMethodPool

void handleIndependentClass(Decl *D, const ParsedAttr &AL)

ExprResult BuildObjCEncodeExpression(SourceLocation AtLoc, TypeSourceInfo *EncodedTypeInfo, SourceLocation RParenLoc)

bool CheckObjCBridgeRelatedConversions(SourceLocation Loc, QualType DestType, QualType SrcType, Expr *&SrcExpr, bool Diagnose=true)

ExprResult BuildObjCArrayLiteral(SourceRange SR, MultiExprArg Elements)

bool CheckObjCDeclScope(Decl *D)

Checks that the Objective-C declaration is declared in the global scope.

ObjCInterfaceDecl * NSArrayDecl

The declaration of the Objective-C NSArray class.

DeclResult actOnObjCTypeParam(Scope *S, ObjCTypeParamVariance variance, SourceLocation varianceLoc, unsigned index, IdentifierInfo *paramName, SourceLocation paramLoc, SourceLocation colonLoc, ParsedType typeBound)

RecordDecl * CFError

The struct behind the CFErrorRef pointer.

ExprResult ActOnClassPropertyRefExpr(const IdentifierInfo &receiverName, const IdentifierInfo &propertyName, SourceLocation receiverNameLoc, SourceLocation propertyNameLoc)

void handleIBOutlet(Decl *D, const ParsedAttr &AL)

ObjCIvarDecl * GetIvarBackingPropertyAccessor(const ObjCMethodDecl *Method, const ObjCPropertyDecl *&PDecl) const

GetIvarBackingPropertyAccessor - If method is a property setter/getter and it property has a backing ...

void handleReturnsInnerPointerAttr(Decl *D, const ParsedAttr &Attrs)

bool isObjCWritebackConversion(QualType FromType, QualType ToType, QualType &ConvertedType)

Determine whether this is an Objective-C writeback conversion, used for parameter passing when perfor...

void CheckObjCCircularContainer(ObjCMessageExpr *Message)

Check whether receiver is mutable ObjC container which attempts to add itself into the container.

bool CheckARCMethodDecl(ObjCMethodDecl *method)

Check a method declaration for compatibility with the Objective-C ARC conventions.

ObjCContainerKind getObjCContainerKind() const

ObjCInterfaceDecl * getObjCInterfaceDecl(const IdentifierInfo *&Id, SourceLocation IdLoc, bool TypoCorrection=false)

Look for an Objective-C class in the translation unit.

ObjCMethodDecl * LookupMethodInObjectType(Selector Sel, QualType Ty, bool IsInstance)

LookupMethodInType - Look up a method in an ObjCObjectType.

bool IvarBacksCurrentMethodAccessor(ObjCInterfaceDecl *IFace, ObjCMethodDecl *Method, ObjCIvarDecl *IV)

IvarBacksCurrentMethodAccessor - This routine returns 'true' if 'IV' is an ivar synthesized for 'Meth...

ParmVarDecl * ActOnMethodParmDeclaration(Scope *S, ObjCArgInfo &ArgInfo, int ParamIndex, bool MethodDefinition)

DeclGroupPtrTy ActOnFinishObjCImplementation(Decl *ObjCImpDecl, ArrayRef< Decl * > Decls)

ExprResult BuildClassMessageImplicit(QualType ReceiverType, bool isSuperReceiver, SourceLocation Loc, Selector Sel, ObjCMethodDecl *Method, MultiExprArg Args)

ObjCContainerDecl * getObjCDeclContext() const

void handleSuppresProtocolAttr(Decl *D, const ParsedAttr &AL)

ObjCInterfaceDecl * NSNumberDecl

The declaration of the Objective-C NSNumber class.

void CheckObjCBridgeRelatedCast(QualType castType, Expr *castExpr)

ExprResult BuildObjCBoxedExpr(SourceRange SR, Expr *ValueExpr)

BuildObjCBoxedExpr - builds an ObjCBoxedExpr AST node for the '@' prefixed parenthesized expression.

StmtResult ActOnObjCAtTryStmt(SourceLocation AtLoc, Stmt *Try, MultiStmtArg Catch, Stmt *Finally)

void WarnConflictingTypedMethods(ObjCMethodDecl *Method, ObjCMethodDecl *MethodDecl, bool IsProtocolMethodDecl)

void handleOwnershipAttr(Decl *D, const ParsedAttr &AL)

ObjCInterfaceDecl * NSValueDecl

The declaration of the Objective-C NSValue class.

bool isSignedCharBool(QualType Ty)

Selector RespondsToSelectorSel

will hold 'respondsToSelector:'

void handleBlocksAttr(Decl *D, const ParsedAttr &AL)

bool MatchTwoMethodDeclarations(const ObjCMethodDecl *Method, const ObjCMethodDecl *PrevMethod, MethodMatchStrategy strategy=MMS_strict)

MatchTwoMethodDeclarations - Checks if two methods' type match and returns true, or false,...

bool CheckMessageArgumentTypes(const Expr *Receiver, QualType ReceiverType, MultiExprArg Args, Selector Sel, ArrayRef< SourceLocation > SelectorLocs, ObjCMethodDecl *Method, bool isClassMessage, bool isSuperMessage, SourceLocation lbrac, SourceLocation rbrac, SourceRange RecRange, QualType &ReturnType, ExprValueKind &VK)

CheckMessageArgumentTypes - Check types in an Obj-C message send.

ObjCInterfaceDecl * NSStringDecl

The declaration of the Objective-C NSString class.

StmtResult ActOnObjCAtFinallyStmt(SourceLocation AtLoc, Stmt *Body)

void MatchAllMethodDeclarations(const SelectorSet &InsMap, const SelectorSet &ClsMap, SelectorSet &InsMapSeen, SelectorSet &ClsMapSeen, ObjCImplDecl *IMPDecl, ObjCContainerDecl *IDecl, bool &IncompleteImpl, bool ImmediateClass, bool WarnCategoryMethodImpl=false)

MatchAllMethodDeclarations - Check methods declaraed in interface or or protocol against those declar...

llvm::MapVector< Selector, SourceLocation > ReferencedSelectors

Method selectors used in a @selector expression.

void DiagnoseOwningPropertyGetterSynthesis(const ObjCImplementationDecl *D)

ObjCMethodDecl * LookupFactoryMethodInGlobalPool(Selector Sel, SourceRange R, bool receiverIdOrClass=false)

LookupFactoryMethodInGlobalPool - Returns the method and warns if there are multiple signatures.

void ActOnObjCContainerFinishDefinition()

ObjCMethodDecl * StringWithUTF8StringMethod

The declaration of the stringWithUTF8String: method.

TypeResult actOnObjCProtocolQualifierType(SourceLocation lAngleLoc, ArrayRef< Decl * > protocols, ArrayRef< SourceLocation > protocolLocs, SourceLocation rAngleLoc)

Build a an Objective-C protocol-qualified 'id' type where no base type was specified.

Decl * ActOnCompatibilityAlias(SourceLocation AtCompatibilityAliasLoc, IdentifierInfo *AliasName, SourceLocation AliasLocation, IdentifierInfo *ClassName, SourceLocation ClassLocation)

ActOnCompatibilityAlias - this action is called after complete parsing of a @compatibility_alias decl...

void DiagnoseDuplicateIvars(ObjCInterfaceDecl *ID, ObjCInterfaceDecl *SID)

DiagnoseDuplicateIvars - Check for duplicate ivars in the entire class at the start of @implementatio...

StmtResult BuildObjCAtThrowStmt(SourceLocation AtLoc, Expr *Throw)

bool checkInitMethod(ObjCMethodDecl *method, QualType receiverTypeIfCall)

Check whether the given method, which must be in the 'init' family, is a valid member of that family.

void handleBridgeMutableAttr(Decl *D, const ParsedAttr &AL)

Sema::RetainOwnershipKind parsedAttrToRetainOwnershipKind(const ParsedAttr &AL)

void CheckConflictingOverridingMethod(ObjCMethodDecl *Method, ObjCMethodDecl *Overridden, bool IsProtocolMethodDecl)

QualType FindCompositeObjCPointerType(ExprResult &LHS, ExprResult &RHS, SourceLocation QuestionLoc)

FindCompositeObjCPointerType - Helper method to find composite type of two objective-c pointer types ...

void handleRequiresSuperAttr(Decl *D, const ParsedAttr &Attrs)

ExprResult BuildObjCStringLiteral(SourceLocation AtLoc, StringLiteral *S)

ObjCTypeParamList * actOnObjCTypeParamList(Scope *S, SourceLocation lAngleLoc, ArrayRef< Decl * > typeParams, SourceLocation rAngleLoc)

ObjCInterfaceDecl * NSDictionaryDecl

The declaration of the Objective-C NSDictionary class.

ObjCMethodDecl * ArrayWithObjectsMethod

The declaration of the arrayWithObjects:count: method.

ObjCCategoryDecl * ActOnStartCategoryInterface(SourceLocation AtInterfaceLoc, const IdentifierInfo *ClassName, SourceLocation ClassLoc, ObjCTypeParamList *typeParamList, const IdentifierInfo *CategoryName, SourceLocation CategoryLoc, Decl *const *ProtoRefs, unsigned NumProtoRefs, const SourceLocation *ProtoLocs, SourceLocation EndProtoLoc, const ParsedAttributesView &AttrList)

ExprResult ParseObjCEncodeExpression(SourceLocation AtLoc, SourceLocation EncodeLoc, SourceLocation LParenLoc, ParsedType Ty, SourceLocation RParenLoc)

QualType QIDNSCopying

id type.

bool CheckObjCString(Expr *Arg)

CheckObjCString - Checks that the argument to the builtin CFString constructor is correct Note: It mi...

QualType BuildObjCObjectType(QualType BaseType, SourceLocation Loc, SourceLocation TypeArgsLAngleLoc, ArrayRef< TypeSourceInfo * > TypeArgs, SourceLocation TypeArgsRAngleLoc, SourceLocation ProtocolLAngleLoc, ArrayRef< ObjCProtocolDecl * > Protocols, ArrayRef< SourceLocation > ProtocolLocs, SourceLocation ProtocolRAngleLoc, bool FailOnError, bool Rebuilding)

Build an Objective-C object pointer type.

void actOnObjCTypeArgsOrProtocolQualifiers(Scope *S, ParsedType baseType, SourceLocation lAngleLoc, ArrayRef< IdentifierInfo * > identifiers, ArrayRef< SourceLocation > identifierLocs, SourceLocation rAngleLoc, SourceLocation &typeArgsLAngleLoc, SmallVectorImpl< ParsedType > &typeArgs, SourceLocation &typeArgsRAngleLoc, SourceLocation &protocolLAngleLoc, SmallVectorImpl< Decl * > &protocols, SourceLocation &protocolRAngleLoc, bool warnOnIncompleteProtocols)

Given a list of identifiers (and their locations), resolve the names to either Objective-C protocol q...

Decl * ActOnProperty(Scope *S, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, ObjCDeclSpec &ODS, Selector GetterSel, Selector SetterSel, tok::ObjCKeywordKind MethodImplKind, DeclContext *lexicalDC=nullptr)

bool CheckForwardProtocolDeclarationForCircularDependency(IdentifierInfo *PName, SourceLocation &PLoc, SourceLocation PrevLoc, const ObjCList< ObjCProtocolDecl > &PList)

void DiagnoseUnimplementedProperties(Scope *S, ObjCImplDecl *IMPDecl, ObjCContainerDecl *CDecl, bool SynthesizeProperties)

DiagnoseUnimplementedProperties - This routine warns on those properties which must be implemented by...

void AtomicPropertySetterGetterRules(ObjCImplDecl *IMPDecl, ObjCInterfaceDecl *IDecl)

AtomicPropertySetterGetterRules - This routine enforces the rule (via warning) when atomic property h...

ExprResult ActOnClassMessage(Scope *S, ParsedType Receiver, Selector Sel, SourceLocation LBracLoc, ArrayRef< SourceLocation > SelectorLocs, SourceLocation RBracLoc, MultiExprArg Args)

ExprResult ActOnObjCAtSynchronizedOperand(SourceLocation atLoc, Expr *operand)

void DiagnoseClassExtensionDupMethods(ObjCCategoryDecl *CAT, ObjCInterfaceDecl *ID)

DiagnoseClassExtensionDupMethods - Check for duplicate declaration of a class method in its extension...

void CheckTollFreeBridgeCast(QualType castType, Expr *castExpr)

bool CheckConversionToObjCLiteral(QualType DstType, Expr *&SrcExpr, bool Diagnose=true)

ObjCCategoryImplDecl * ActOnStartCategoryImplementation(SourceLocation AtCatImplLoc, const IdentifierInfo *ClassName, SourceLocation ClassLoc, const IdentifierInfo *CatName, SourceLocation CatLoc, const ParsedAttributesView &AttrList)

ActOnStartCategoryImplementation - Perform semantic checks on the category implementation declaration...

ObjCMethodDecl * tryCaptureObjCSelf(SourceLocation Loc)

Try to capture an implicit reference to 'self'.

ExprResult ParseObjCStringLiteral(SourceLocation *AtLocs, ArrayRef< Expr * > Strings)

bool inferObjCARCLifetime(ValueDecl *decl)

void AddXConsumedAttr(Decl *D, const AttributeCommonInfo &CI, Sema::RetainOwnershipKind K, bool IsTemplateInstantiation)

void adornBoolConversionDiagWithTernaryFixit(Expr *SourceExpr, const Sema::SemaDiagnosticBuilder &Builder)

void CheckObjCMethodOverride(ObjCMethodDecl *NewMethod, const ObjCMethodDecl *Overridden)

Check whether the given new method is a valid override of the given overridden method,...

const DeclContext * getCurObjCLexicalContext() const

void handleDesignatedInitializer(Decl *D, const ParsedAttr &AL)

Decl * ActOnMethodDeclaration(Scope *S, SourceLocation BeginLoc, SourceLocation EndLoc, tok::TokenKind MethodType, ObjCDeclSpec &ReturnQT, ParsedType ReturnType, ArrayRef< SourceLocation > SelectorLocs, Selector Sel, ParmVarDecl **ArgInfo, DeclaratorChunk::ParamInfo *CParamInfo, unsigned CNumArgs, const ParsedAttributesView &AttrList, tok::ObjCKeywordKind MethodImplKind, bool isVariadic, bool MethodDefinition)

void handleBridgeRelatedAttr(Decl *D, const ParsedAttr &AL)

ExprResult ActOnObjCBoolLiteral(SourceLocation AtLoc, SourceLocation ValueLoc, bool Value)

Decl * ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool ImplKind, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind)

ActOnPropertyImplDecl - This routine performs semantic checks and builds the AST node for a property ...

void handleIBOutletCollection(Decl *D, const ParsedAttr &AL)

ObjCMethodDecl * DictionaryWithObjectsMethod

The declaration of the dictionaryWithObjects:forKeys:count: method.

void ActOnTypedefedProtocols(SmallVectorImpl< Decl * > &ProtocolRefs, SmallVectorImpl< SourceLocation > &ProtocolLocs, IdentifierInfo *SuperName, SourceLocation SuperLoc)

ActOnTypedefedProtocols - this action finds protocol list as part of the typedef'ed use for a qualifi...

void DiagnoseMissingDesignatedInitOverrides(const ObjCImplementationDecl *ImplD, const ObjCInterfaceDecl *IFD)

void CollectIvarsToConstructOrDestruct(ObjCInterfaceDecl *OI, SmallVectorImpl< ObjCIvarDecl * > &Ivars)

CollectIvarsToConstructOrDestruct - Collect those ivars which require initialization.

QualType NSStringPointer

Pointer to NSString type (NSString *).

ExprResult BuildObjCBridgedCast(SourceLocation LParenLoc, ObjCBridgeCastKind Kind, SourceLocation BridgeKeywordLoc, TypeSourceInfo *TSInfo, Expr *SubExpr)

DeclGroupPtrTy ActOnForwardProtocolDeclaration(SourceLocation AtProtoclLoc, ArrayRef< IdentifierLocPair > IdentList, const ParsedAttributesView &attrList)

ActOnForwardProtocolDeclaration - Handle @protocol foo;.

ObjCProtocolDecl * LookupProtocol(IdentifierInfo *II, SourceLocation IdLoc, RedeclarationKind Redecl=RedeclarationKind::NotForRedeclaration)

Find the protocol with the given name, if any.

void DiagnoseCStringFormatDirectiveInCFAPI(const NamedDecl *FDecl, Expr **Args, unsigned NumArgs)

Diagnose use of s directive in an NSString which is being passed as formatting string to formatting m...

bool isCFStringType(QualType T)

QualType NSNumberPointer

Pointer to NSNumber type (NSNumber *).

void CheckObjCPropertyAttributes(Decl *PropertyPtrTy, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass)

Ensure attributes are consistent with type.

DeclResult LookupIvarInObjCMethod(LookupResult &Lookup, Scope *S, IdentifierInfo *II)

The parser has read a name in, and Sema has detected that we're currently inside an ObjC method.

ObjCMethodDecl * NSNumberLiteralMethods[NSAPI::NumNSNumberLiteralMethods]

The Objective-C NSNumber methods used to create NSNumber literals.

void handleDirectAttr(Decl *D, const ParsedAttr &AL)

QualType AdjustParameterTypeForObjCAutoRefCount(QualType T, SourceLocation NameLoc, TypeSourceInfo *TSInfo)

GlobalMethodPool MethodPool

Method Pool - allows efficient lookup when typechecking messages to "id".

StmtResult ActOnObjCAtThrowStmt(SourceLocation AtLoc, Expr *Throw, Scope *CurScope)

ObjCProtocolDecl * ActOnStartProtocolInterface(SourceLocation AtProtoInterfaceLoc, IdentifierInfo *ProtocolName, SourceLocation ProtocolLoc, Decl *const *ProtoRefNames, unsigned NumProtoRefs, const SourceLocation *ProtoLocs, SourceLocation EndProtoLoc, const ParsedAttributesView &AttrList, SkipBodyInfo *SkipBody)

ResultTypeCompatibilityKind

Describes the compatibility of a result type with its method.

void DiagnoseMultipleMethodInGlobalPool(SmallVectorImpl< ObjCMethodDecl * > &Methods, Selector Sel, SourceRange R, bool receiverIdOrClass)

QualType getMessageSendResultType(const Expr *Receiver, QualType ReceiverType, ObjCMethodDecl *Method, bool isClassMessage, bool isSuperMessage)

Determine the result of a message send expression based on the type of the receiver,...

ExprResult ParseObjCProtocolExpression(IdentifierInfo *ProtocolName, SourceLocation AtLoc, SourceLocation ProtoLoc, SourceLocation LParenLoc, SourceLocation ProtoIdLoc, SourceLocation RParenLoc)

ParseObjCProtocolExpression - Build protocol expression for @protocol.

DeclGroupPtrTy ActOnForwardClassDeclaration(SourceLocation Loc, IdentifierInfo **IdentList, SourceLocation *IdentLocs, ArrayRef< ObjCTypeParamList * > TypeParamLists, unsigned NumElts)

ExprResult BuildInstanceMessageImplicit(Expr *Receiver, QualType ReceiverType, SourceLocation Loc, Selector Sel, ObjCMethodDecl *Method, MultiExprArg Args)

void checkRetainCycles(ObjCMessageExpr *msg)

checkRetainCycles - Check whether an Objective-C message send might create an obvious retain cycle.

StmtResult ActOnObjCAtCatchStmt(SourceLocation AtLoc, SourceLocation RParen, Decl *Parm, Stmt *Body)

ObjCMessageKind

Describes the kind of message expression indicated by a message send that starts with an identifier.

@ ObjCClassMessage

The message is a class message, and the identifier is a type name.

@ ObjCInstanceMessage

The message is an instance message.

@ ObjCSuperMessage

The message is sent to 'super'.

ExprResult LookupInObjCMethod(LookupResult &LookUp, Scope *S, IdentifierInfo *II, bool AllowBuiltinCreation=false)

The parser has read a name in, and Sema has detected that we're currently inside an ObjC method.

QualType NSValuePointer

Pointer to NSValue type (NSValue *).

bool isNSStringType(QualType T, bool AllowNSAttributedString=false)

bool isObjCMethodDecl(Decl *D)

void EmitRelatedResultTypeNote(const Expr *E)

If the given expression involves a message send to a method with a related result type,...

OpaquePtr< DeclGroupRef > DeclGroupPtrTy

ExprResult ActOnInstanceMessage(Scope *S, Expr *Receiver, Selector Sel, SourceLocation LBracLoc, ArrayRef< SourceLocation > SelectorLocs, SourceLocation RBracLoc, MultiExprArg Args)

bool GetFormatNSStringIdx(const FormatAttr *Format, unsigned &Idx)

void ReadMethodPool(Selector Sel)

Read the contents of the method pool for a given selector from external storage.

void ActOnDefs(Scope *S, Decl *TagD, SourceLocation DeclStart, const IdentifierInfo *ClassName, SmallVectorImpl< Decl * > &Decls)

Called whenever @defs(ClassName) is encountered in the source.

ExprResult BuildIvarRefExpr(Scope *S, SourceLocation Loc, ObjCIvarDecl *IV)

void AddFactoryMethodToGlobalPool(ObjCMethodDecl *Method, bool impl=false)

AddFactoryMethodToGlobalPool - Same as above, but for factory methods.

ExprResult ActOnSuperMessage(Scope *S, SourceLocation SuperLoc, Selector Sel, SourceLocation LBracLoc, ArrayRef< SourceLocation > SelectorLocs, SourceLocation RBracLoc, MultiExprArg Args)

ExprResult CheckObjCForCollectionOperand(SourceLocation forLoc, Expr *collection)

void AddCFAuditedAttribute(Decl *D)

AddCFAuditedAttribute - Check whether we're currently within '#pragma clang arc_cf_code_audited' and,...

void DiagnoseTypeArgsAndProtocols(IdentifierInfo *ProtocolId, SourceLocation ProtocolLoc, IdentifierInfo *TypeArgId, SourceLocation TypeArgLoc, bool SelectProtocolFirst=false)

CastKind PrepareCastToObjCObjectPointer(ExprResult &E)

Prepare a conversion of the given expression to an ObjC object pointer type.

bool CollectMultipleMethodsInGlobalPool(Selector Sel, SmallVectorImpl< ObjCMethodDecl * > &Methods, bool InstanceFirst, bool CheckTheOther, const ObjCObjectType *TypeBound=nullptr)

We first select the type of the method: Instance or Factory, then collect all methods with that type.

void CheckObjCMethodDirectOverrides(ObjCMethodDecl *method, ObjCMethodDecl *overridden)

void DiagnoseUseOfUnimplementedSelectors()

bool checkObjCBridgeRelatedComponents(SourceLocation Loc, QualType DestType, QualType SrcType, ObjCInterfaceDecl *&RelatedClass, ObjCMethodDecl *&ClassMethod, ObjCMethodDecl *&InstanceMethod, TypedefNameDecl *&TDNDecl, bool CfToNs, bool Diagnose=true)

void checkDictionaryLiteral(QualType TargetType, ObjCDictionaryLiteral *DictionaryLiteral)

Check an Objective-C dictionary literal being converted to the given target type.

void DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *Name, bool OverridingProtocolProperty)

DiagnosePropertyMismatch - Compares two properties for their attributes and types and warns on a vari...

void handleBoxable(Decl *D, const ParsedAttr &AL)

bool checkNSReturnsRetainedReturnType(SourceLocation loc, QualType type)

void EmitRelatedResultTypeNoteForReturn(QualType destType)

Given that we had incompatible pointer types in a return statement, check whether we're in a method w...

void diagnoseARCUnbridgedCast(Expr *e)

Given that we saw an expression with the ARCUnbridgedCastTy placeholder type, complain bitterly.

Decl * ActOnAtEnd(Scope *S, SourceRange AtEnd, ArrayRef< Decl * > allMethods={}, ArrayRef< DeclGroupPtrTy > allTUVars={})

void CheckCategoryVsClassMethodMatches(ObjCCategoryImplDecl *CatIMP)

CheckCategoryVsClassMethodMatches - Checks that methods implemented in category matches with those im...

void ImplMethodsVsClassMethods(Scope *S, ObjCImplDecl *IMPDecl, ObjCContainerDecl *IDecl, bool IncompleteImpl=false)

ImplMethodsVsClassMethods - This is main routine to warn if any method remains unimplemented in the c...

void CheckObjCMethodOverrides(ObjCMethodDecl *ObjCMethod, ObjCInterfaceDecl *CurrentClass, ResultTypeCompatibilityKind RTC)

ObjCMethodDecl * LookupMethodInQualifiedType(Selector Sel, const ObjCObjectPointerType *OPT, bool IsInstance)

LookupMethodInQualifiedType - Lookups up a method in protocol qualifier list of a qualified objective...

bool CheckTollFreeBridgeStaticCast(QualType castType, Expr *castExpr, CastKind &Kind)

StmtResult ActOnObjCAutoreleasePoolStmt(SourceLocation AtLoc, Stmt *Body)

void CheckImplementationIvars(ObjCImplementationDecl *ImpDecl, ObjCIvarDecl **Fields, unsigned nIvars, SourceLocation Loc)

CheckImplementationIvars - This routine checks if the instance variables listed in the implelementati...

bool CheckObjCARCUnavailableWeakConversion(QualType castType, QualType ExprType)

ObjCMethodDecl * LookupImplementedMethodInGlobalPool(Selector Sel)

LookupImplementedMethodInGlobalPool - Returns the method which has an implementation.

void handleDirectMembersAttr(Decl *D, const ParsedAttr &AL)

bool CheckObjCMethodCall(ObjCMethodDecl *Method, SourceLocation loc, ArrayRef< const Expr * > Args)

Expr * stripARCUnbridgedCast(Expr *e)

stripARCUnbridgedCast - Given an expression of ARCUnbridgedCast type, remove the placeholder cast.

ExprResult BuildObjCSubscriptExpression(SourceLocation RB, Expr *BaseExpr, Expr *IndexExpr, ObjCMethodDecl *getterMethod, ObjCMethodDecl *setterMethod)

Build an ObjC subscript pseudo-object expression, given that that's supported by the runtime.

void AddInstanceMethodToGlobalPool(ObjCMethodDecl *Method, bool impl=false)

AddInstanceMethodToGlobalPool - All instance methods in a translation unit are added to a global pool...

void handleBridgeAttr(Decl *D, const ParsedAttr &AL)

void AddAnyMethodToGlobalPool(Decl *D)

AddAnyMethodToGlobalPool - Add any method, instance or factory to global pool.

@ OCK_CategoryImplementation

bool isSelfExpr(Expr *RExpr)

Private Helper predicate to check for 'self'.

void handlePreciseLifetimeAttr(Decl *D, const ParsedAttr &AL)

ExprResult ActOnObjCAvailabilityCheckExpr(llvm::ArrayRef< AvailabilitySpec > AvailSpecs, SourceLocation AtLoc, SourceLocation RParen)

bool isKnownName(StringRef name)

std::unique_ptr< NSAPI > NSAPIObj

Caches identifiers/selectors for NSFoundation APIs.

void ActOnObjCContainerStartDefinition(ObjCContainerDecl *IDecl)

void FindProtocolDeclaration(bool WarnOnDeclarations, bool ForObjCContainer, ArrayRef< IdentifierLocPair > ProtocolId, SmallVectorImpl< Decl * > &Protocols)

FindProtocolDeclaration - This routine looks up protocols and issues an error if they are not declare...

Sema - This implements semantic analysis and AST building for C.

Encodes a location in the source.

A trivial tuple used to represent a source range.

Stmt - This represents one statement.

StringLiteral - This represents a string literal expression, e.g.

A container of type source information.

The base class of the type hierarchy.

Base class for declarations which introduce a typedef-name.

Simple class containing the result of Sema::CorrectTypo.

Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it ...

Represents a variable declaration or definition.

const internal::VariadicAllOfMatcher< Type > type

Matches Types in the clang AST.

const internal::VariadicAllOfMatcher< Decl > decl

Matches declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, CastExpr > castExpr

Matches any cast nodes of Clang's AST.

ObjCKeywordKind

Provides a namespace for Objective-C keywords which start with an '@'.

TokenKind

Provides a simple uniform namespace for tokens from all C languages.

The JSON file list parser is used to communicate input to InstallAPI.

@ Property

The type of a property.

ObjCBridgeCastKind

The kind of bridging performed by the Objective-C bridge cast.

CastKind

CastKind - The kind of operation required for a conversion.

ExprValueKind

The categorization of expression values, currently following the C++11 scheme.

const FunctionProtoType * T

ObjCTypeParamVariance

Describes the variance of a given generic parameter.

CheckedConversionKind

The kind of conversion being performed.

ParamInfo - An array of paraminfo objects is allocated whenever a function declarator is parsed.

This little struct is used to capture information about structure field declarators,...

a linked list of methods with the same selector name but different signatures.

ParsedAttributesView ArgAttrs

ArgAttrs - Attribute list for this argument.