clang 24.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/Analysis/Analyses/LifetimeSafety/LifetimeAnnotations.h"
#include "clang/Basic/AttrSubjectMatchRules.h"
#include "clang/Basic/BuiltinTraits.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/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/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/SemaConcept.h"
#include "clang/Sema/SemaRISCV.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>
#include "clang/Sema/AttrIsTypeDependent.inc"

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::PendingPragmaInfo
 Information from a C++ #pragma export, for a symbol that we haven't seen the declaration for yet. 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...
struct  clang::Sema::ExpressionEvaluationContextRecord
 Data structure used to record current or nested expression evaluation contexts. More...
struct  clang::Sema::ExpressionEvaluationContextRecord::InitializationContext
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::ForRangeBeginEndInfo
 Holds the 'begin' and 'end' variables of a range-based for loop or expansion statement; begin-expr and end-expr are also provided; the latter are used in some diagnostics. More...
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
struct  clang::Sema::SFINAEContextBase
struct  clang::Sema::NonSFINAEContext
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::RecursiveInstGuard
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::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::ScopedCodeSynthesisContext
 RAII object to ensure that a code synthesis context is popped on scope exit. More...
class  clang::Sema::ArgPackSubstIndexRAII
 RAII object used to change the argument pack substitution index within a Sema object. More...
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
 Top level wrappers for InstallAPI frontend operations.
namespace  clang::sema
namespace  clang::threadSafety
namespace  clang::DiagAttrParams
 Enums for the diagnostics of target, target_version and target_clones.

Typedefs

using clang::AllocationArgumentSet = SmallVector<ImplicitAllocationArguments, 3>
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::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::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::IncompatiblePointerDiscardsOverflowBehavior ,
  clang::IncompatibleNestedPointerAddressSpaceMismatch , clang::IncompatibleNestedPointerQualifiers , clang::IncompatibleVectors , clang::IntToBlockPointer ,
  clang::IncompatibleBlockPointer , clang::IncompatibleObjCQualifiedId , clang::IncompatibleObjCWeakRef , clang::IncompatibleOBTKinds ,
  clang::CompatibleOBTDiscards , 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 , clang::PackIndex
}
 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, 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.