Value* |
Add<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
void |
AnalyzeControlFlow(BoundCompileUnit& boundCompileUUnit) |
std::vector<std::unique_ptr<Value>> |
ArgumentsToValues(const std::vector<std::unique_ptr<BoundExpression>>& arguments, bool& error, BoundCompileUnit& boundCompileUnit) |
std::vector<std::unique_ptr<Value>> |
ArgumentsToValues(const std::vector<std::unique_ptr<BoundExpression>>& arguments, bool& error, bool skipFirst, BoundCompileUnit& boundCompileUnit) |
bool |
BetterArgumentMatch(const ArgumentMatch& left, const ArgumentMatch& right) inline |
Value* |
BinaryEvaluate<ValueT, Op>(Value* left, Value* right, Op op, const Span& span, const boost::uuids::uuid& moduleId) |
Value* |
BinaryPredEvaluate<ValueT, Op>(Value* left, Value* right, Op op, const Span& span, const boost::uuids::uuid& moduleId) |
void |
BindClass(ClassTypeSymbol* classType, void* boundCompileUnit) |
std::unique_ptr<BoundExpression> |
BindExpression(Node* node, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, ContainerScope* containerScope, StatementBinder* statementBinder) |
std::unique_ptr<BoundExpression> |
BindExpression(Node* node, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, ContainerScope* containerScope, StatementBinder* statementBinder, bool lvalue) |
std::unique_ptr<BoundExpression> |
BindExpression(Node* node, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, ContainerScope* containerScope, StatementBinder* statementBinder, bool lvalue, bool acceptFunctionGroupOrMemberExpression) |
std::unique_ptr<BoundExpression> |
BindExpression(Node* node, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, ContainerScope* containerScope, StatementBinder* statementBinder, bool lvalue, bool acceptFunctionGroupOrMemberExpression, bool acceptIncomplete) |
std::unique_ptr<BoundExpression> |
BindExpression(Node* node, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, ContainerScope* containerScope, StatementBinder* statementBinder, bool lvalue, bool acceptFunctionGroupOrMemberExpression, bool acceptIncomplete, bool moveTemporaryDestructorCalls) |
std::vector<std::string> |
BindTypes(Module* module, CompileUnitNode* compileUnit) |
std::unique_ptr<BoundExpression> |
BindUnaryOp(BoundExpression* operand, Node& node, const std::u32string& groupName, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, ContainerScope* containerScope, StatementBinder* statementBinder) |
Value* |
BitAnd<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
BitOr<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
BitXor<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
void |
CheckAccess(FunctionSymbol* fromFunction, Symbol* toSymbol) |
bool |
CheckConstraint(ConstraintNode* constraint, const NodeList<Node>& usingNodes, BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope, BoundFunction* currentFunction, const std::vector<TemplateParameterSymbol*>& templateParameters, const std::unordered_map<TemplateParameterSymbol*, TypeSymbol*>& templateParameterMap, std::unique_ptr<BoundConstraint>& boundConstraint, const Span& span, const boost::uuids::uuid& moduleId, FunctionSymbol* viableFunction, std::unique_ptr<Exception>& conceptCheckException) |
void |
CheckFunctionReturnPaths(FunctionSymbol* functionSymbol, CompoundStatementNode* bodyNode, const Span& span, const boost::uuids::uuid& moduleId, ContainerScope* containerScope, BoundCompileUnit& boundCompileUnit) |
void |
CheckFunctionReturnPaths(FunctionSymbol* functionSymbol, FunctionNode& functionNode, ContainerScope* containerScope, BoundCompileUnit& boundCompileUnit) |
void |
CollectViableFunctionsFromSymbolTable(int arity, const std::u32string& groupName, const std::vector<FunctionScopeLookup>& functionScopeLookups, BoundCompileUnit& boundCompileUnit, ViableFunctionSet& viableFunctions) |
Value* |
Complement<ValueT>(Value* subject, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
Conjunction<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
std::unique_ptr<BoundFunctionCall> |
CreateBoundFunctionCall(FunctionSymbol* bestFun, std::vector<std::unique_ptr<BoundExpression>>& arguments, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, const FunctionMatch& bestMatch, ContainerScope* containerScope, const Span& span, const boost::uuids::uuid& moduleId) |
TypeSymbol* |
CreateFunctionGroupTypeSymbol(FunctionGroupSymbol* functionGroupSymbol, void* boundFunctionGroupExpression) |
TypeSymbol* |
CreateMemberExpressionTypeSymbol(const Span& span, const boost::uuids::uuid& moduleId_, const std::u32string& name, void* boundMemberExpression) |
TypeSymbol* |
CreateNamespaceTypeSymbol(NamespaceSymbol* ns) |
Value* |
Disjunction<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
Div<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
Equal<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
std::unique_ptr<Value> |
Evaluate(Node* node, TypeSymbol* targetType, ContainerScope* containerScope, BoundCompileUnit& boundCompileUnit, bool dontThrow, BoundFunction* currentFunction, const Span& span, const boost::uuids::uuid& moduleId) |
std::unique_ptr<BoundFunctionCall> |
FailWithAmbiguousOverload(const std::u32string& groupName, std::vector<std::unique_ptr<BoundExpression>>& arguments, std::vector<FunctionMatch>& functionMatches, const Span& span, const boost::uuids::uuid& moduleId, OverloadResolutionFlags flags, std::unique_ptr<Exception>& exception) |
std::unique_ptr<BoundFunctionCall> |
FailWithNoViableFunction(const std::u32string& groupName, const std::vector<std::unique_ptr<BoundExpression>>& arguments, const Span& span, const boost::uuids::uuid& moduleId, OverloadResolutionFlags flags, std::unique_ptr<Exception>& exception) |
std::unique_ptr<BoundFunctionCall> |
FailWithOverloadNotFound(Module* module, const ViableFunctionSet& viableFunctions, const std::u32string& groupName, const std::vector<std::unique_ptr<BoundExpression>>& arguments, const std::vector<FunctionMatch>& failedFunctionMatches, const Span& span, const boost::uuids::uuid& moduleId, OverloadResolutionFlags flags, std::unique_ptr<Exception>& exception) |
bool |
FindClassTemplateSpecializationMatch(TypeSymbol* sourceType, TypeSymbol* targetType, ConversionType conversionType, BoundExpression* argument, BoundCompileUnit& boundCompileUnit, FunctionMatch& functionMatch, ContainerScope* containerScope, BoundFunction* currentFunction, const Span& span, const boost::uuids::uuid& moduleId) |
bool |
FindConversions(BoundCompileUnit& boundCompileUnit, FunctionSymbol* function, std::vector<std::unique_ptr<BoundExpression>>& arguments, FunctionMatch& functionMatch, ConversionType conversionType, ContainerScope* containerScope, BoundFunction* currentFunction, const Span& span, const boost::uuids::uuid& moduleId) |
bool |
FindQualificationConversion(TypeSymbol* sourceType, TypeSymbol* targetType, BoundExpression* argument, ConversionType conversionType, const Span& span, const boost::uuids::uuid& moduleId, FunctionMatch& functionMatch, ArgumentMatch& argumentMatch) |
bool |
FindTemplateParameterMatch(TypeSymbol* sourceType, TypeSymbol* targetType, ConversionType conversionType, BoundExpression* argument, BoundCompileUnit& boundCompileUnit, FunctionMatch& functionMatch, ContainerScope* containerScope, BoundFunction* currentFunction, const Span& span, const boost::uuids::uuid& moduleId) |
void |
GenerateClassAssignment(MemberFunctionSymbol* assignmentFunctionSymbol, MemberFunctionNode* assignmentNode, BoundCompoundStatement* boundCompoundStatement, BoundFunction* boundFunction, BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope, StatementBinder* statementBinder, bool generateDefault, const Span& span, const boost::uuids::uuid& moduleId) |
void |
GenerateClassInitialization(ConstructorSymbol* constructorSymbol, ConstructorNode* constructorNode, BoundCompoundStatement* boundCompoundStatement, BoundFunction* boundFunction, BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope, StatementBinder* statementBinder, bool generateDefault, const Span& span, const boost::uuids::uuid& moduleId) |
void |
GenerateClassTermination(DestructorSymbol* destructorSymbol, DestructorNode* destructorNode, BoundCompoundStatement* boundCompoundStatement, BoundFunction* boundFunction, BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope, StatementBinder* statementBinder, const Span& span, const boost::uuids::uuid& moduleId) |
void |
GenerateDestructorImplementation(BoundClass* boundClass, DestructorSymbol* destructorSymbol, BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope, BoundFunction* currentFunction, const Span& span, const boost::uuids::uuid& moduleId) |
void |
GenerateStaticClassInitialization(StaticConstructorSymbol* staticConstructorSymbol, StaticConstructorNode* staticConstructorNode, BoundCompileUnit& boundCompileUnit, BoundCompoundStatement* boundCompoundStatement, BoundFunction* boundFunction, ContainerScope* containerScope, StatementBinder* statementBinder, const Span& span, const boost::uuids::uuid& moduleId) |
Value* |
Greater<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
GreaterEqual<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
bool |
HasAccess(FunctionSymbol* fromFunction, Symbol* toSymbol) |
std::unique_ptr<BoundConcept> |
Instantiate(ConceptSymbol* conceptSymbol, const std::vector<TypeSymbol*>& typeArguments, BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope, BoundFunction* currentFunction, std::unique_ptr<BoundConstraint>& boundConstraint, const Span& span, const boost::uuids::uuid& moduleId, std::unique_ptr<Exception>& exception) |
bool |
IsAlwaysTrue(Node* node, BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope) |
Value* |
Less<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
LessEqual<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
std::u32string |
MakeBoundConceptName(ConceptSymbol* conceptSymbol, const std::vector<TypeSymbol*>& typeArguments) |
BoundExpression* |
MakeExitEntryPtr(BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope, const Span& span, const boost::uuids::uuid& moduleId) |
std::string |
MakeOverloadName(const std::u32string& groupName, const std::vector<std::unique_ptr<BoundExpression>>& arguments, const Span& span, const boost::uuids::uuid& moduleId) |
Value* |
Mul<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
Not<ValueT>(Value* subject, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
NotEqual<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
NotSupported(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
NotSupported(Value* subject, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
Rem<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
ConceptSymbol* |
ResolveConceptId(ConceptIdNode* conceptIdNode, BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope) |
std::unique_ptr<BoundFunctionCall> |
ResolveOverload(const std::u32string& groupName, ContainerScope* containerScope, const std::vector<FunctionScopeLookup>& functionScopeLookups, std::vector<std::unique_ptr<BoundExpression>>& arguments, BoundCompileUnit& boundCompileUnit, BoundFunction* currentFunction, const Span& span, const boost::uuids::uuid& moduleId) |
std::unique_ptr<BoundFunctionCall> |
ResolveOverload(const std::u32string& groupName, ContainerScope* containerScope, const std::vector<FunctionScopeLookup>& functionScopeLookups, std::vector<std::unique_ptr<BoundExpression>>& arguments, BoundCompileUnit& boundCompileUnit, BoundFunction* currentFunction, const Span& span, const boost::uuids::uuid& moduleId, OverloadResolutionFlags flags, std::vector<TypeSymbol*>& templateArgumentTypes, std::unique_ptr<Exception>& exception) |
TypeSymbol* |
ResolveType(Node* typeExprNode, BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope) |
TypeSymbol* |
ResolveType(Node* typeExprNode, BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope, ClassTypeSymbol* currentClass) |
TypeSymbol* |
ResolveType(Node* typeExprNode, BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope, TypeResolverFlags flags) |
TypeSymbol* |
ResolveType(Node* typeExprNode, BoundCompileUnit& boundCompileUnit, ContainerScope* containerScope, TypeResolverFlags flags, ClassTypeSymbol* currentClass) |
std::unique_ptr<BoundFunctionCall> |
SelectViableFunction(const ViableFunctionSet& viableFunctions, const std::u32string& groupName, std::vector<std::unique_ptr<BoundExpression>>& arguments, ContainerScope* containerScope, BoundCompileUnit& boundCompileUnit, BoundFunction* boundFunction, const Span& span, const boost::uuids::uuid& moduleId, OverloadResolutionFlags flags, std::vector<TypeSymbol*>& templateArgumentTypes, std::unique_ptr<Exception>& exception) |
void |
SetConstraintSymbolBinder(ConstraintSymbolBinder* constraintSymbolBinder_) |
Value* |
ShiftLeft<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
ShiftRight<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
Sub<ValueT>(Value* left, Value* right, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
bool |
TerminatesCase(StatementNode* statementNode) |
bool |
TerminatesDefault(StatementNode* statementNode) |
bool |
TerminatesFunction(StatementNode* statement, bool inForEverLoop, ContainerScope* containerScope, BoundCompileUnit& boundCompileUnit) |
void |
ThrowCannotEvaluateStatically(const Span& defined, const boost::uuids::uuid& moduleId) |
void |
ThrowCannotEvaluateStatically(const Span& defined, const boost::uuids::uuid& moduleId, const Span& referenced, const boost::uuids::uuid& referencedModuleId) |
Value* |
UnaryEvaluate<ValueT, Op>(Value* subject, Op op, const Span& span, const boost::uuids::uuid& moduleId) |
Value* |
UnaryMinus<ValueT>(Value* subject, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
Value* |
UnaryPlus<ValueT>(Value* subject, const Span& span, const boost::uuids::uuid& moduleId, bool dontThrow) |
std::vector<std::unique_ptr<BoundExpression>> |
ValuesToLiterals(std::vector<std::unique_ptr<Value>>& values, SymbolTable* symbolTable, bool& error) |
bool |
operator!=(const BoundConceptKey& left, const BoundConceptKey& right) inline |
bool |
operator!=(const FunctionTemplateKey& left, const FunctionTemplateKey& right) |
BoundExpressionFlags |
operator&(BoundExpressionFlags left, BoundExpressionFlags right) inline |
BoundStatementFlags |
operator&(BoundStatementFlags left, BoundStatementFlags right) inline |
CollectFlags |
operator&(CollectFlags left, CollectFlags right) inline |
OverloadResolutionFlags |
operator&(OverloadResolutionFlags left, OverloadResolutionFlags right) inline |
TypeResolverFlags |
operator&(TypeResolverFlags left, TypeResolverFlags right) inline |
bool |
operator==(const BoundConceptKey& left, const BoundConceptKey& right) |
bool |
operator==(const FunctionTemplateKey& left, const FunctionTemplateKey& right) |
BoundExpressionFlags |
operator|(BoundExpressionFlags left, BoundExpressionFlags right) inline |
BoundStatementFlags |
operator|(BoundStatementFlags left, BoundStatementFlags right) inline |
CollectFlags |
operator|(CollectFlags left, CollectFlags right) inline |
OverloadResolutionFlags |
operator|(OverloadResolutionFlags left, OverloadResolutionFlags right) inline |
TypeResolverFlags |
operator|(TypeResolverFlags left, TypeResolverFlags right) inline |