clang 22.0.0git
Sema.h File Reference
#include "clang/APINotes/APINotesManager.h"
#include "clang/AST/ASTFwd.h"
#include "clang/AST/ASTLambda.h"
#include "clang/AST/Attr.h"
#include "clang/AST/AttrIterator.h"
#include "clang/AST/CharUnits.h"
#include "clang/AST/DeclBase.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/DeclarationName.h"
#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprConcepts.h"
#include "clang/AST/ExternalASTSource.h"
#include "clang/AST/NestedNameSpecifier.h"
#include "clang/AST/OperationKinds.h"
#include "clang/AST/StmtCXX.h"
#include "clang/AST/Type.h"
#include "clang/AST/TypeLoc.h"
#include "clang/Basic/AttrSubjectMatchRules.h"
#include "clang/Basic/Builtins.h"
#include "clang/Basic/CapturedStmt.h"
#include "clang/Basic/Cuda.h"
#include "clang/Basic/DiagnosticSema.h"
#include "clang/Basic/ExceptionSpecificationType.h"
#include "clang/Basic/ExpressionTraits.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/Lambda.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Basic/Module.h"
#include "clang/Basic/OpenCLOptions.h"
#include "clang/Basic/OperatorKinds.h"
#include "clang/Basic/PartialDiagnostic.h"
#include "clang/Basic/PragmaKinds.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/Specifiers.h"
#include "clang/Basic/StackExhaustionHandler.h"
#include "clang/Basic/TemplateKinds.h"
#include "clang/Basic/TokenKinds.h"
#include "clang/Basic/TypeTraits.h"
#include "clang/Sema/AnalysisBasedWarnings.h"
#include "clang/Sema/Attr.h"
#include "clang/Sema/CleanupInfo.h"
#include "clang/Sema/DeclSpec.h"
#include "clang/Sema/ExternalSemaSource.h"
#include "clang/Sema/IdentifierResolver.h"
#include "clang/Sema/Ownership.h"
#include "clang/Sema/ParsedAttr.h"
#include "clang/Sema/Redeclaration.h"
#include "clang/Sema/Scope.h"
#include "clang/Sema/SemaBase.h"
#include "clang/Sema/TypoCorrection.h"
#include "clang/Sema/Weak.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/BitmaskEnum.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/FloatingPointMode.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/PointerIntPair.h"
#include "llvm/ADT/PointerUnion.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/STLForwardCompat.h"
#include "llvm/ADT/STLFunctionalExtras.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallBitVector.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/TinyPtrVector.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/ErrorHandling.h"
#include <cassert>
#include <climits>
#include <cstddef>
#include <cstdint>
#include <deque>
#include <functional>
#include <iterator>
#include <memory>
#include <optional>
#include <string>
#include <tuple>
#include <type_traits>
#include <utility>
#include <vector>

Go to the source code of this file.

Classes

struct  clang::FileNullability
 Describes whether we've seen any nullability information for the given file. More...
class  clang::FileNullabilityMap
 A mapping from file IDs to a record of whether we've seen nullability information in that file. More...
class  clang::PreferredTypeBuilder
 Tracks expected type during expression parsing, for use in code completion. More...
struct  clang::SkipBodyInfo
class  clang::Sema
 Sema - This implements semantic analysis and AST building for C. More...
class  clang::Sema::PoppedFunctionScopeDeleter
 Custom deleter to allow FunctionScopeInfos to be kept alive for a short time after they've been popped. More...
class  clang::Sema::CompoundScopeRAII
 A RAII object to enter scope of a compound statement. More...
struct  clang::Sema::FunctionScopeRAII
 An RAII helper that pops function a function scope on exit. More...
class  clang::Sema::DelayedDiagnosticsState
class  clang::Sema::DelayedDiagnostics
 A class which encapsulates the logic for delaying diagnostics during parsing and other processing. More...
struct  clang::Sema::PragmaClangSection
struct  clang::Sema::PragmaPackInfo
class  clang::Sema::AlignPackInfo
struct  clang::Sema::PragmaStack< ValueType >
struct  clang::Sema::PragmaStack< ValueType >::Slot
struct  clang::Sema::AlignPackIncludeState
class  clang::Sema::PragmaStackSentinelRAII
struct  clang::Sema::PragmaAttributeEntry
 This an attribute introduced by #pragma clang attribute. More...
struct  clang::Sema::PragmaAttributeGroup
 A push'd group of PragmaAttributeEntries. More...
struct  clang::Sema::FormatStringInfo
struct  clang::Sema::TypeTagData
struct  clang::Sema::NestedNameSpecInfo
 Keeps information about an identifier in a nested-name-spec. More...
class  clang::Sema::ContextRAII
 A RAII object to temporarily push a declaration context. More...
class  clang::Sema::NameClassification
struct  clang::Sema::ProcessDeclAttributeOptions
class  clang::Sema::ImplicitExceptionSpecification
 Helper class that collects exception specifications for implicitly-declared special member functions. More...
class  clang::Sema::DefaultedFunctionKind
 For a defaulted function, the kind of defaulted function that it is. More...
struct  clang::Sema::ExpressionEvaluationContextRecord
 Data structure used to record current or nested expression evaluation contexts. More...
struct  clang::Sema::ExpressionEvaluationContextRecord::InitializationContext
struct  clang::Sema::OffsetOfComponent
class  clang::Sema::VerifyICEDiagnoser
 Abstract base class used for diagnosing integer constant expression violations. More...
class  clang::Sema::FullExprArg
class  clang::Sema::ConditionResult
struct  clang::Sema::TypeDiagnoser
 Abstract class used to diagnose incomplete types. More...
class  clang::Sema::BoundTypeDiagnoser< Ts >
class  clang::Sema::SizelessTypeDiagnoser< Ts >
 A derivative of BoundTypeDiagnoser for which the diagnostic's type parameter is preceded by a 0/1 enum that is 1 if the type is sizeless. More...
class  clang::Sema::CXXThisScopeRAII
 RAII object used to temporarily allow the C++ 'this' expression to be used, with the given qualifiers on the current class type. More...
struct  clang::Sema::ActOnMemberAccessExtraArgs
class  clang::Sema::LambdaScopeForCallOperatorInstantiationRAII
class  clang::Sema::SpecialMemberOverloadResult
 SpecialMemberOverloadResult - The overloading result for a special member function. More...
class  clang::Sema::SpecialMemberOverloadResultEntry
class  clang::Sema::DeferDiagsRAII
 RAII class to control scope of DeferDiags. More...
class  clang::Sema::ContextualImplicitConverter
 Abstract base class used to perform a contextual implicit conversion from an expression to any type passing a filter. More...
class  clang::Sema::ICEConvertDiagnoser
struct  clang::Sema::ReferenceConversionsScope
struct  clang::Sema::CheckNonDependentConversionsFlag
struct  clang::Sema::NamedReturnInfo
class  clang::Sema::FpPragmaStackSaveRAII
class  clang::Sema::RequiredTemplateKind
 Whether and why a template name is required in this lookup. More...
struct  clang::Sema::CheckTemplateArgumentInfo
class  clang::Sema::TemplateCompareNewDeclInfo
class  clang::Sema::SFINAETrap
 RAII class used to determine whether SFINAE has trapped any errors that occur during template argument deduction. More...
class  clang::Sema::TentativeAnalysisScope
 RAII class used to indicate that we are performing provisional semantic analysis to determine the validity of a construct, so typo-correction and diagnostics in the immediate context (not within implicitly-instantiated templates) should be suppressed. More...
struct  clang::Sema::OriginalCallArg
 brief A function argument from which we performed template argument More...
class  clang::Sema::ExtParameterInfoBuilder
 A helper class for building up ExtParameterInfos. More...
struct  clang::Sema::CodeSynthesisContext
 A context in which code is being synthesized (where a source location alone is not sufficient to identify the context). More...
struct  clang::Sema::InstantiatingTemplate
 A stack object to be created when performing template instantiation. More...
struct  clang::Sema::InstantiatingTemplate::ExceptionSpecification
struct  clang::Sema::InstantiatingTemplate::ConstraintsCheck
struct  clang::Sema::InstantiatingTemplate::ConstraintSubstitution
struct  clang::Sema::InstantiatingTemplate::ConstraintNormalization
struct  clang::Sema::InstantiatingTemplate::ParameterMappingSubstitution
struct  clang::Sema::InstantiatingTemplate::BuildingDeductionGuidesTag
struct  clang::Sema::InstantiatingTemplate::PartialOrderingTTP
class  clang::Sema::SynthesizedFunctionScope
 RAII object to handle the state changes required to synthesize a function body. More...
class  clang::Sema::ArgPackSubstIndexRAII
 RAII object used to change the argument pack substitution index within a Sema object. More...
struct  clang::Sema::ConstraintEvalRAII< InstTy >
class  clang::Sema::LocalEagerInstantiationScope
class  clang::Sema::FPFeaturesStateRAII
 Records and restores the CurFPFeatures state on entry/exit of compound statements. More...
class  clang::Sema::GlobalEagerInstantiationScope
struct  clang::Sema::LateInstantiatedAttribute
class  clang::Sema::SatisfactionStackResetRAII
struct  clang::Sema::FunctionEffectDiff
struct  clang::Sema::FunctionEffectDiffVector
struct  clang::LateParsedTemplate
 Contains a late templated function. More...

Namespaces

namespace  llvm
 Diagnostic wrappers for TextAPI types for error reporting.
namespace  clang
 The JSON file list parser is used to communicate input to InstallAPI.
namespace  clang::sema
namespace  clang::threadSafety
namespace  clang::DiagAttrParams
 Enums for the diagnostics of target, target_version and target_clones.

Typedefs

typedef std::pair< llvm::PointerUnion< const TemplateTypeParmType *, NamedDecl *, const TemplateSpecializationType *, const SubstBuiltinTemplatePackType * >, SourceLocationclang::UnexpandedParameterPack

Enumerations

enum class  clang::AssignmentAction {
  clang::Assigning , clang::Passing , clang::Returning , clang::Converting ,
  clang::Initializing , clang::Sending , clang::Casting , clang::Passing_CFAudited
}
enum class  clang::TemplateDeductionResult {
  clang::Success = 0 , clang::Invalid , clang::InstantiationDepth , clang::Incomplete ,
  clang::IncompletePack , clang::Inconsistent , clang::Underqualified , clang::SubstitutionFailure ,
  clang::DeducedMismatch , clang::DeducedMismatchNested , clang::NonDeducedMismatch , clang::TooManyArguments ,
  clang::TooFewArguments , clang::InvalidExplicitArguments , clang::NonDependentConversionFailure , clang::ConstraintsNotSatisfied ,
  clang::MiscellaneousDeductionFailure , clang::CUDATargetMismatch , clang::AlreadyDiagnosed
}
 Describes the result of template argument deduction. More...
enum class  clang::CXXSpecialMemberKind {
  clang::DefaultConstructor , clang::CopyConstructor , clang::MoveConstructor , clang::CopyAssignment ,
  clang::MoveAssignment , clang::Destructor , clang::Invalid
}
 Kinds of C++ special members. More...
enum class  clang::CheckedConversionKind {
  clang::Implicit , clang::CStyleCast , clang::FunctionalCast , clang::OtherCast ,
  clang::ForBuiltinOverloadedOp
}
 The kind of conversion being performed. More...
enum class  clang::TagUseKind { clang::Reference , clang::Declaration , clang::Definition , clang::Friend }
enum class  clang::FunctionEffectMode : uint8_t { clang::None , clang::False , clang::True , clang::Dependent }
 Used with attributes/effects with a boolean condition, e.g. nonblocking. More...
enum class  clang::PragmaClangSectionKind {
  clang::Invalid = 0 , clang::BSS = 1 , clang::Data = 2 , clang::Rodata = 3 ,
  clang::Text = 4 , clang::Relro = 5
}
 pragma clang section kind More...
enum class  clang::PragmaClangSectionAction { clang::Set = 0 , clang::Clear = 1 }
enum class  clang::PragmaOptionsAlignKind {
  clang::Native , clang::Natural , clang::Packed , clang::Power ,
  clang::Mac68k , clang::Reset
}
enum class  clang::TUFragmentKind { clang::Global , clang::Normal , clang::Private }
enum class  clang::FormatStringType {
  clang::Scanf , clang::Printf , clang::NSString , clang::Strftime ,
  clang::Strfmon , clang::Kprintf , clang::FreeBSDKPrintf , clang::OSTrace ,
  clang::OSLog , clang::Syslog , clang::Unknown
}
enum class  clang::VariadicCallType {
  clang::Function , clang::Block , clang::Method , clang::Constructor ,
  clang::DoesNotApply
}
enum class  clang::BuiltinCountedByRefKind {
  clang::Assignment , clang::Initializer , clang::FunctionArg , clang::ReturnArg ,
  clang::ArraySubscript , clang::BinaryExpr
}
enum class  clang::NonTrivialCUnionContext {
  clang::FunctionParam , clang::FunctionReturn , clang::DefaultInitializedObject , clang::AutoVar ,
  clang::CopyInit , clang::Assignment , clang::CompoundLiteral , clang::BlockCapture ,
  clang::LValueToRValueVolatile
}
enum class  clang::NameClassificationKind {
  clang::Unknown , clang::Error , clang::Keyword , clang::Type ,
  clang::NonType , clang::UndeclaredNonType , clang::DependentNonType , clang::OverloadSet ,
  clang::TypeTemplate , clang::VarTemplate , clang::FunctionTemplate , clang::UndeclaredTemplate ,
  clang::Concept
}
 Describes the result of the name lookup and resolution performed by Sema::ClassifyName(). More...
enum class  clang::PointerAuthDiscArgKind { clang::Addr , clang::Extra }
enum class  clang::NonTagKind {
  clang::NonStruct , clang::NonClass , clang::NonUnion , clang::NonEnum ,
  clang::Typedef , clang::TypeAlias , clang::Template , clang::TypeAliasTemplate ,
  clang::TemplateTemplateArgument
}
 Common ways to introduce type names without a tag for use in diagnostics. More...
enum class  clang::OffsetOfKind { clang::Outside , clang::Builtin , clang::Macro }
enum class  clang::AvailabilityMergeKind {
  clang::None , clang::Redeclaration , clang::Override , clang::ProtocolImplementation ,
  clang::OptionalProtocolImplementation
}
 Describes the kind of merge to perform for availability attributes (including "deprecated", "unavailable", and "availability"). More...
enum class  clang::TrivialABIHandling { clang::IgnoreTrivialABI , clang::ConsiderTrivialABI }
enum class  clang::TryCaptureKind { clang::Implicit , clang::ExplicitByVal , clang::ExplicitByRef }
enum class  clang::AllowFoldKind { clang::No , clang::Allow }
enum class  clang::ArithConvKind {
  clang::Arithmetic , clang::BitwiseOp , clang::Comparison , clang::Conditional ,
  clang::CompAssign
}
 Context in which we're performing a usual arithmetic conversion. More...
enum class  clang::VarArgKind {
  clang::Valid , clang::ValidInCXX11 , clang::Undefined , clang::MSVCUndefined ,
  clang::Invalid
}
enum class  clang::AssignConvertType {
  clang::Compatible , clang::CompatibleVoidPtrToNonVoidPtr , clang::PointerToInt , clang::IntToPointer ,
  clang::FunctionVoidPointer , clang::IncompatiblePointer , clang::IncompatibleFunctionPointer , clang::IncompatibleFunctionPointerStrict ,
  clang::IncompatiblePointerSign , clang::CompatiblePointerDiscardsQualifiers , clang::IncompatiblePointerDiscardsQualifiers , clang::IncompatibleNestedPointerAddressSpaceMismatch ,
  clang::IncompatibleNestedPointerQualifiers , clang::IncompatibleVectors , clang::IntToBlockPointer , clang::IncompatibleBlockPointer ,
  clang::IncompatibleObjCQualifiedId , clang::IncompatibleObjCWeakRef , clang::Incompatible
}
 AssignConvertType - All of the 'assignment' semantic checks return this enum to indicate whether the assignment was allowed. More...
enum class  clang::AllocationFunctionScope { clang::Global , clang::Class , clang::Both }
 The scope in which to find allocation functions. More...
enum class  clang::IfExistsResult { clang::Exists , clang::DoesNotExist , clang::Dependent , clang::Error }
 Describes the result of an "if-exists" condition check. More...
enum class  clang::CorrectTypoKind { clang::NonError , clang::ErrorRecovery }
enum class  clang::OverloadKind { clang::Overload , clang::Match , clang::NonFunction }
enum class  clang::CCEKind {
  clang::CaseValue , clang::Enumerator , clang::TemplateArg , clang::TempArgStrict ,
  clang::ArrayBound , clang::ExplicitBool , clang::Noexcept , clang::StaticAssertMessageSize ,
  clang::StaticAssertMessageData
}
 Contexts in which a converted constant expression is required. More...
enum  clang::DiagAttrParams::DiagType { clang::DiagAttrParams::Unsupported , clang::DiagAttrParams::Duplicate , clang::DiagAttrParams::Unknown }
enum  clang::DiagAttrParams::Specifier { clang::DiagAttrParams::None , clang::DiagAttrParams::CPU , clang::DiagAttrParams::Tune }
enum  clang::DiagAttrParams::AttrName { clang::DiagAttrParams::Target , clang::DiagAttrParams::TargetClones , clang::DiagAttrParams::TargetVersion }

Functions

void clang::threadSafety::threadSafetyCleanup (BeforeSet *Cache)
void clang::inferNoReturnAttr (Sema &S, const Decl *D)
DeductionFailureInfo clang::MakeDeductionFailureInfo (ASTContext &Context, TemplateDeductionResult TDK, sema::TemplateDeductionInfo &Info)
 Convert from Sema's representation of template deduction information to the form used in overload-candidate information.