|
hoshi-lang dev
Yet another programming language
|
#include <visitor.h>
Classes | |
| struct | OverloadResult |
Static Public Member Functions | |
| static yoi::wstr | getInterfaceImplName (const std::pair< yoi::indexT, yoi::indexT > &interfaceSrc, const std::shared_ptr< IRValueType > &typeSrc) |
Public Attributes | |
| std::shared_ptr< yoi::moduleContext > | moduleContext |
| std::shared_ptr< yoi::IRModule > | irModule |
| yoi::indexT | currentModuleIndex |
Private Member Functions | |
| void | pushModuleContext (yoi::indexT moduleIndex) |
| void | popModuleContext () |
Private Attributes | |
| std::stack< std::pair< std::shared_ptr< yoi::moduleContext >, yoi::indexT > > | moduleContextStack |
| visitor | ( | const std::shared_ptr< yoi::moduleContext > & | moduleContext, |
| const std::shared_ptr< yoi::IRModule > & | irModule, | ||
| yoi::indexT | moduleIndex | ||
| ) |
Definition at line 28 of file visitor.cpp.
| bool canCastTo | ( | const std::shared_ptr< IRValueType > & | fromType, |
| const std::shared_ptr< IRValueType > & | toType | ||
| ) |
Definition at line 3922 of file visitor.cpp.
References moduleContext::getCompilerContext(), and yoi::managedPtr().

| void checkConceptSatisfaction | ( | yoi::externModuleAccessExpression * | stmt | ) |
Definition at line 5762 of file visitor.cpp.
References yoi::__current_file_path, AST::getColumn(), AST::getLine(), and yoi::managedPtr().

| void checkConceptSatisfaction | ( | yoi::externModuleAccessExpression * | stmt, |
| const yoi::wstr & | paramName, | ||
| const std::shared_ptr< IRValueType > & | args | ||
| ) |
Definition at line 5784 of file visitor.cpp.
References IRTemplateBuilder::addTemplateArgument(), moduleContext::popTemplateBuilder(), and moduleContext::pushTemplateBuilder().

| bool checkMarcoSatisfaction | ( | yoi::marcoDescriptor * | desc | ) |
Check whether the marco satisfies the condition.
| desc | The marco descriptor |
Definition at line 5093 of file visitor.cpp.
References lexer::token::basicVal, lexer::token::col, AST::getColumn(), moduleContext::getCompilerContext(), AST::getLine(), lexer::token::kind, lexer::token::line, marcoDescriptor::pairs, yoi::panic(), lexer::scan(), lexer::token::strVal, lexer::token::vBasicValue::vDeci, yoi::wstring2string(), and yoi::yoi_assert().

| void constructDataStruct | ( | yoi::indexT | datastructIndex, |
| yoi::indexT | moduleIndex, | ||
| yoi::invocationArguments * | args | ||
| ) |
Construct data struct and initialize with given parameters.
| datastructIndex | The index of the data struct in the module's struct table. |
| moduleIndex | The index of the module where the struct will be created. |
| args | The arguments to initialize the struct. |
Definition at line 5554 of file visitor.cpp.
References invocationArguments::arg, AST::getColumn(), moduleContext::getCompilerContext(), moduleContext::getIRBuilder(), AST::getLine(), IRBuilder::initializeFieldsOp(), IRBuilder::newDataStructOp(), yoi::wstring2string(), and yoi::yoi_assert().

| std::pair< yoi::indexT, std::pair< yoi::indexT, yoi::indexT > > createCallableImplementationForFunction | ( | const std::shared_ptr< IRFunctionDefinition > & | func, |
| yoi::indexT | funcIndex, | ||
| yoi::indexT | moduleIndex, | ||
| bool | hasThis | ||
| ) |
Create a Callable Implementation For Function object also create a unnamed struct for the function and return its callable implementation index in the module's implementation table.
| func | The function definition. |
| funcIndex | The index of the function in the module's function table. |
| moduleIndex | The index of the module where the implementation will be created. |
Definition at line 5394 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), IRFunctionDefinition::Builder::addAttr(), IRStructDefinition::Builder::addField(), IRStructDefinition::Builder::addMethod(), IRFunctionDefinition::Builder::argumentTypes, IRBuilder::createCodeBlock(), moduleContext::getCompilerContext(), IRBuilder::getCurrentDebugInfo(), moduleContext::getIRBuilder(), HOSHI_COMPILER_CTX_GLOB_ID_CONST, IRBuilder::invokeOp(), IRBuilder::loadOp(), yoi::managedPtr(), moduleContext::popIRBuilder(), moduleContext::pushIRBuilder(), IRBuilder::retOp(), IRFunctionDefinition::Builder::setDebugInfo(), IRFunctionDefinition::Builder::setName(), IRStructDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), IRBuilder::storeOp(), IRBuilder::switchCodeBlock(), IRFunctionDefinition::Builder::yield(), IRStructDefinition::Builder::yield(), and IRBuilder::yield().

| std::pair< yoi::indexT, std::pair< yoi::indexT, yoi::indexT > > createCallableImplementationForLambda | ( | const std::shared_ptr< IRStructDefinition > & | lambda, |
| yoi::indexT | lambdaStructIndex, | ||
| yoi::indexT | moduleIndex | ||
| ) |
Create a Callable Implementation For Lambda object also create a struct for the lambda and return its callable implementation index in the module's implementation table.
| lambda | The lambda struct definition. |
| lambdaStructIndex | The index of the lambda struct in the module's struct table. |
| moduleIndex | The index of the module where the implementation will be created. |
Definition at line 5056 of file visitor.cpp.
References IRInterfaceImplementationDefinition::Builder::addVirtualMethod(), moduleContext::getCompilerContext(), moduleContext::getIRBuilder(), IRBuilder::getRhsFromTempVarStack(), HOSHI_COMPILER_CTX_GLOB_ID_CONST, yoi::managedPtr(), IRInterfaceImplementationDefinition::Builder::setImplInterfaceIndex(), IRInterfaceImplementationDefinition::Builder::setImplStructIndex(), and IRInterfaceImplementationDefinition::Builder::yield().

| void createCallableInstanceForFunction | ( | yoi::indexT | implIndex, |
| std::pair< yoi::indexT, yoi::indexT > | callableInterfaceIndex, | ||
| yoi::indexT | moduleIndex, | ||
| bool | hasThis | ||
| ) |
Create a Callable Instance For Function object.
| implIndex | The index of the callable implementation in the module's implementation table. |
| callableInterfaceIndex | The index of the callable interface in the module's interface table. |
| moduleIndex | The index of the module where the implementation will be created. |
| hasThis | The index of the module where the implementation will be created. |
Definition at line 5508 of file visitor.cpp.
References IRBuilder::constructInterfaceImplOp(), moduleContext::getCompilerContext(), moduleContext::getIRBuilder(), IRBuilder::getRhsFromTempVarStack(), IRBuilder::invokeDanglingOp(), and IRBuilder::newStructOp().

| yoi::indexT createCallableInterface | ( | const yoi::vec< std::shared_ptr< IRValueType > > & | parameterTypes, |
| const std::shared_ptr< IRValueType > & | returnType | ||
| ) |
Create a Callable Interface object and return its index in the module's interface table.
| parameterTypes | The parameter types of the callable interface. |
| returnType | The return type of the callable interface. |
Definition at line 4912 of file visitor.cpp.
References IRInterfaceInstanceDefinition::Builder::addMethod(), moduleContext::getCompilerContext(), HOSHI_COMPILER_CTX_GLOB_ID_CONST, yoi::managedPtr(), IRInterfaceInstanceDefinition::Builder::setName(), and IRInterfaceInstanceDefinition::Builder::yield().

| yoi::indexT createLambdaUnnamedStruct | ( | yoi::lambdaExpr * | lambdaExpr | ) |
Create a Lambda Unnamed Struct object.
| lambdaExpr | The lambda expression. |
Definition at line 4943 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), IRFunctionDefinition::Builder::addAttr(), lambdaExpr::args, IRFunctionDefinition::Builder::attrs, lambdaExpr::block, lambdaExpr::captures, IRBuilder::createCodeBlock(), AST::getColumn(), moduleContext::getCompilerContext(), moduleContext::getIRBuilder(), AST::getLine(), IRBuilder::getRhsFromTempVarStack(), IRBuilder::invokeMethodOp(), IRBuilder::loadOp(), yoi::managedPtr(), IRBuilder::newStructOp(), moduleContext::popIRBuilder(), moduleContext::pushIRBuilder(), lambdaExpr::resultType, IRBuilder::retOp(), IRFunctionDefinition::Builder::setDebugInfo(), IRBuilder::setDebugInfo(), IRFunctionDefinition::Builder::setName(), IRStructDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), definitionArguments::spec, IRBuilder::storeMemberOp(), IRBuilder::switchCodeBlock(), IRFunctionDefinition::Builder::yield(), and IRBuilder::yield().

| void ejectTemporaryConceptEvaluationEnvironment | ( | ) |
Definition at line 5721 of file visitor.cpp.
References moduleContext::popIRBuilder(), and moduleContext::popTemplateBuilder().

| void emitBasicCastInBasicArithOpByLhsAndRhs | ( | yoi::indexT | lhs, |
| yoi::indexT | rhs | ||
| ) |
Definition at line 2973 of file visitor.cpp.
References IRBuilder::basicCast(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), IRBuilder::getRhsFromTempVarStack(), and yoi::managedPtr().

| void emitBasicCastTo | ( | const std::shared_ptr< IRValueType > & | toType | ) |
Definition at line 3022 of file visitor.cpp.
References IRBuilder::basicCast(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), and IRBuilder::getRhsFromTempVarStack().

| yoi::vec< std::shared_ptr< IRValueType > > evaluateArguments | ( | yoi::invocationArguments * | args | ) |
Visits a list of argument expressions and returns their types.
| args | The AST node for the argument list. |
Definition at line 4095 of file visitor.cpp.
References invocationArguments::get(), moduleContext::getIRBuilder(), and IRBuilder::getRhsFromTempVarStack().

| void evaluateConstraint | ( | yoi::conceptStmt * | stmt, |
| const IRDebugInfo & | currentDebugInfo | ||
| ) |
Definition at line 5726 of file visitor.cpp.
References IRDebugInfo::column, satisfyStmt::emae, conceptStmt::Expression, conceptStmt::ConceptStmtValue::expression, moduleContext::getIRBuilder(), conceptStmt::kind, IRDebugInfo::line, yoi::panic(), IRBuilder::restoreState(), conceptStmt::SatisfyStmt, conceptStmt::ConceptStmtValue::satisfyStmt, IRBuilder::saveState(), and conceptStmt::value.

| yoi::vec< yoi::wstr > extractTemplateParamsFromTypeArgs | ( | yoi::defTemplateArg * | templateArgs | ) |
Definition at line 3294 of file visitor.cpp.
References defTemplateArg::get().

| yoi::vec< yoi::wstr > extractTemplateParamsFromTypeArgs | ( | yoi::templateArg * | templateArgs | ) |
Definition at line 3274 of file visitor.cpp.
References templateArg::get(), AST::getColumn(), AST::getLine(), externModuleAccessExpression::getTerms(), typeSpec::kind, typeSpec::member, and yoi::panic().

| yoi::indexT generateNullInterfaceImplementation | ( | const std::shared_ptr< IRValueType > & | structType | ) |
Definition at line 4002 of file visitor.cpp.
References moduleContext::getCompilerContext(), HOSHI_COMPILER_CTX_GLOB_ID_CONST, and yoi::managedPtr().

| yoi::IRExternEntry getExternEntry | ( | yoi::indexT | moduleIndex, |
| const yoi::wstr & | identifier | ||
| ) | const |
search and return extern entry by identifier in target module
| moduleIndex | the index of target module |
| identifier | the identifier to search |
| std::runtime_error | if identifier not found |
Definition at line 2933 of file visitor.cpp.
References moduleContext::getCompilerContext(), and yoi::wstring2string().

| std::set< IRFunctionDefinition::FunctionAttrs > getFunctionAttributes | ( | const yoi::vec< lexer::token > & | attrs | ) |
Definition at line 4025 of file visitor.cpp.
| yoi::wstr getFuncUniqueNameStr | ( | const std::vector< std::shared_ptr< IRValueType > > & | argumentTypes, |
| bool | whetherIgnoreFirstParam = false |
||
| ) |
Definition at line 3102 of file visitor.cpp.
| std::shared_ptr< IRValueType > getGeneratorContext | ( | const yoi::wstr & | funcName, |
| const std::shared_ptr< IRValueType > & | yieldType | ||
| ) |
Get or fetch generator context type for specific function.
| funcName | The name of the function, we do not use the function index cause the function itself needs the generator context type as return value type. |
| yieldType | The yield type of the generator |
Definition at line 5590 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), IRFunctionDefinition::Builder::addAttr(), IRStructDefinition::Builder::addField(), IRStructDefinition::Builder::addMethod(), IRBuilder::createCodeBlock(), moduleContext::getCompilerContext(), moduleContext::getIRBuilder(), HOSHI_COMPILER_CTX_GLOB_ID_CONST, IRBuilder::loadMemberOp(), IRBuilder::loadOp(), yoi::managedPtr(), moduleContext::popIRBuilder(), moduleContext::pushIRBuilder(), IRBuilder::resumeOp(), IRBuilder::retOp(), IRFunctionDefinition::Builder::setDebugInfo(), IRFunctionDefinition::Builder::setName(), IRStructDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), IRBuilder::storeMemberOp(), IRBuilder::switchCodeBlock(), IRStructDefinition::Builder::yield(), and IRBuilder::yield().

| std::shared_ptr< IRValueType > getIncompleteType | ( | const yoi::wstr & | typeName | ) | const |
Definition at line 3155 of file visitor.cpp.
References moduleContext::getTemplateBuilders(), and yoi::wstring2string().

|
static |
Definition at line 2898 of file visitor.cpp.
Referenced by IROptimizer::performInterfaceWrapperPass().

| yoi::wstr getInterfaceNameStr | ( | const std::pair< yoi::indexT, yoi::indexT > & | interfaceSrc | ) |
Definition at line 3032 of file visitor.cpp.
| yoi::wstr getMangledTemplateName | ( | const yoi::wstr & | baseName, |
| const yoi::vec< std::shared_ptr< IRValueType > > & | templateArgs | ||
| ) |
Definition at line 3262 of file visitor.cpp.
| yoi::wstr getSpecializedMangledMethodName | ( | yoi::indexTable< yoi::wstr, IRTemplateBuilder::Argument > & | templateArgs, |
| const yoi::wstr & | baseMethodName, | ||
| const yoi::vec< std::shared_ptr< IRValueType > > & | specializedArgTypes | ||
| ) |
Definition at line 3720 of file visitor.cpp.
References replace_all().

| yoi::indexTable< yoi::wstr, IRTemplateBuilder::Argument > getTemplateArgs | ( | const yoi::defTemplateArg & | templateArgs | ) |
Definition at line 3168 of file visitor.cpp.
References yoi::managedPtr(), indexTable< A, B >::put_create(), and defTemplateArg::spec.

| yoi::wstr getTypeSpecUniqueNameStr | ( | const std::shared_ptr< IRValueType > & | type | ) |
Definition at line 3036 of file visitor.cpp.
References IRDebugInfo::column, IRBuilder::getCurrentDebugInfo(), moduleContext::getIRBuilder(), IRDebugInfo::line, and yoi::panic().

| yoi::indexT handleBinaryOperatorOverload | ( | const yoi::wstr & | overloadName, |
| T * | rhsAST | ||
| ) |
Generates a call to certain operator overload function when left hand side or right hand side owns a appropriate overloaded operator method.
| overloadName | the name of the operator overload method |
| rhsAST | the right hand side AST expression, will be used when the cast is required when resolving overload method |
Definition at line 4373 of file visitor.cpp.
References IRDebugInfo::column, IRBuilder::discardState(), moduleContext::getCompilerContext(), IRBuilder::getCurrentDebugInfo(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), IRBuilder::getRhsFromTempVarStack(), IRBuilder::invokeMethodOp(), IRBuilder::invokeVirtualOp(), IRDebugInfo::line, IRBuilder::restoreState(), yoi::wstring2string(), and yoi::yoi_assert().

| bool handleInvocationExtern | ( | const yoi::wstr & | baseName, |
| yoi::invocationArguments * | args, | ||
| yoi::indexT | targetModule, | ||
| const std::shared_ptr< IRValueType > & | structContext = nullptr, |
||
| bool | noThisCall = false, |
||
| yoi::templateArg * | templateArgs = nullptr |
||
| ) |
Orchestrates an external function/method invocation IR generation.
Definition at line 4227 of file visitor.cpp.
References IRExternEntry::affiliateModule, IRBuilder::discardState(), visitor::OverloadResult::fixedArgCount, visitor::OverloadResult::found(), visitor::OverloadResult::function, visitor::OverloadResult::functionIndex, invocationArguments::get(), definitionArguments::get(), identifierWithTemplateArg::getArg(), identifierWithDefTemplateArg::getArg(), innerMethodDecl::getArgs(), innerMethodDef::getArgs(), moduleContext::getCompilerContext(), moduleContext::getIRBuilder(), structDefInnerPair::getMethod(), implInnerPair::getMethod(), innerMethodDecl::getName(), innerMethodDef::getName(), IRBuilder::invokeMethodOp(), IRBuilder::invokeOp(), IRBuilder::invokeVirtualOp(), visitor::OverloadResult::isCastRequired, visitor::OverloadResult::isVariadic, IRExternEntry::itemIndex, IRBuilder::newArrayOp(), IRBuilder::restoreState(), IRBuilder::saveState(), and visitor::OverloadResult::variadicElementType.

| bool handleSubscript | ( | yoi::vec< yoi::subscript * >::iterator & | it, |
| yoi::vec< yoi::subscript * >::iterator | end, | ||
| bool | isStoreOp, | ||
| bool | isLastTerm | ||
| ) |
Handle subscript.
Definition at line 4811 of file visitor.cpp.
References IRBuilder::arithmeticOp(), IRBuilder::commitState(), IRBuilder::discardState(), visitor::OverloadResult::found(), visitor::OverloadResult::function, visitor::OverloadResult::functionIndex, moduleContext::getCompilerContext(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), IRBuilder::getRhsFromTempVarStack(), IRBuilder::invokeMethodOp(), visitor::OverloadResult::isCastRequired, visitor::OverloadResult::isVariadic, IRBuilder::loadOp(), yoi::managedPtr(), IRBuilder::popOp(), IRBuilder::pushOp(), IRBuilder::restoreStateTemporarily(), IRBuilder::saveState(), IRBuilder::storeOp(), and yoi::yoi_assert().

| yoi::indexT handleUnaryOperatorOverload | ( | const yoi::wstr & | overloadName | ) |
Handles unary operator overload function when the operand owns a appropriate overloaded operator method.
| overloadName | the name of the operator overload method |
Definition at line 4481 of file visitor.cpp.
References IRDebugInfo::column, moduleContext::getCompilerContext(), IRBuilder::getCurrentDebugInfo(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getRhsFromTempVarStack(), IRBuilder::invokeMethodOp(), IRBuilder::invokeVirtualOp(), IRDebugInfo::line, yoi::wstring2string(), and yoi::yoi_assert().

| yoi::indexT isModuleName | ( | identifier * | it, |
| yoi::indexT | currentModule | ||
| ) | const |
Definition at line 4066 of file visitor.cpp.
References moduleContext::getCompilerContext(), identifier::node, and lexer::token::strVal.

| yoi::indexT isModuleName | ( | identifierWithTemplateArg * | it, |
| yoi::indexT | currentModule | ||
| ) | const |
check if the subscript expression is a module name
| it | The subscript expression being checked |
| currentModule | The current module being checked, -1 if not in a module |
Definition at line 2925 of file visitor.cpp.
References identifierWithTemplateArg::hasTemplateArg(), and identifierWithTemplateArg::id.

| bool isVisitingGlobalScope | ( | ) | const |
Definition at line 2969 of file visitor.cpp.
References moduleContext::getIRBuilder(), and IRBuilder::irFuncDefinition().

| std::shared_ptr< IRValueType > mapEnumTypeToBasicType | ( | yoi::indexT | targetModule, |
| yoi::indexT | targetEnumType | ||
| ) |
Definition at line 5243 of file visitor.cpp.
References moduleContext::getCompilerContext().

| std::pair< std::shared_ptr< IRConcept >, templateArg * > parseConceptName | ( | yoi::externModuleAccessExpression * | conceptName | ) |
Definition at line 5745 of file visitor.cpp.
References AST::getColumn(), moduleContext::getCompilerContext(), AST::getLine(), externModuleAccessExpression::getTerms(), and yoi::yoi_assert().

| yoi::wstr parseIdentifierWithTemplateArg | ( | yoi::identifierWithTemplateArg * | identifierWithTemplateArg | ) |
Definition at line 2884 of file visitor.cpp.
References templateArg::get(), identifierWithTemplateArg::getArg(), identifierWithTemplateArg::getId(), identifierWithTemplateArg::hasTemplateArg(), identifier::node, and lexer::token::strVal.

| std::pair< std::pair< yoi::indexT, yoi::indexT >, std::shared_ptr< IRInterfaceInstanceDefinition > > parseInterfaceName | ( | yoi::externModuleAccessExpression * | structDef | ) |
Definition at line 2903 of file visitor.cpp.
References AST::getColumn(), moduleContext::getCompilerContext(), AST::getLine(), externModuleAccessExpression::getTerms(), yoi::panic(), yoi::wstring2string(), and yoi::yoi_assert().

| yoi::vec< std::shared_ptr< IRValueType > > parseTemplateArgs | ( | const yoi::templateArg & | templateArgs | ) |
Definition at line 3178 of file visitor.cpp.
References yoi::managedPtr(), and templateArg::spec.

| IRValueType parseTypeSpec | ( | yoi::externModuleAccessExpression * | emaExpression | ) |
Definition at line 4076 of file visitor.cpp.
References externModuleAccessExpression::getTerms().

| IRValueType parseTypeSpec | ( | yoi::funcTypeSpec * | typeSpec | ) |
Definition at line 4902 of file visitor.cpp.
References HOSHI_COMPILER_CTX_GLOB_ID_CONST, and yoi::managedPtr().

| IRValueType parseTypeSpec | ( | yoi::identifier * | identifier | ) |
Definition at line 1893 of file visitor.cpp.
References AST::getColumn(), moduleContext::getCompilerContext(), AST::getLine(), identifier::node, yoi::panic(), lexer::token::strVal, and yoi::wstring2string().

| IRValueType parseTypeSpec | ( | yoi::identifierWithTemplateArg * | identifierWithTemplateArg | ) |
Definition at line 2726 of file visitor.cpp.
References identifierWithTemplateArg::getArg(), AST::getColumn(), identifierWithTemplateArg::getId(), AST::getLine(), identifierWithTemplateArg::hasTemplateArg(), identifierWithTemplateArg::id, identifier::node, yoi::panic(), lexer::token::strVal, and yoi::wstring2string().

| IRValueType parseTypeSpec | ( | yoi::subscriptExpr * | subscriptExpr | ) |
Definition at line 2752 of file visitor.cpp.
References subscriptExpr::getSubscript(), subscriptExpr::id, and yoi::yoi_assert().

| IRValueType parseTypeSpec | ( | yoi::typeSpec * | typeSpec | ) |
Definition at line 2825 of file visitor.cpp.
References typeSpec::arraySubscript, typeSpec::decltypeExpression, decltypeExpr::expr, typeSpec::func, AST::getColumn(), moduleContext::getIRBuilder(), AST::getLine(), IRBuilder::getRhsFromTempVarStack(), externModuleAccessExpression::getTerms(), typeSpec::kind, typeSpec::member, yoi::panic(), IRBuilder::restoreState(), IRBuilder::saveState(), and yoi::yoi_assert().

| IRValueType parseTypeSpecExtern | ( | yoi::identifier * | identifier, |
| yoi::indexT | targetModule | ||
| ) |
Definition at line 2770 of file visitor.cpp.
References IRExternEntry::affiliateModule, identifier::get(), moduleContext::getCompilerContext(), IRExternEntry::itemIndex, identifier::node, lexer::token::strVal, IRExternEntry::type, and yoi::wstring2string().

| IRValueType parseTypeSpecExtern | ( | yoi::identifierWithTemplateArg * | identifierWithTemplateArg, |
| yoi::indexT | targetModule | ||
| ) |
Definition at line 2786 of file visitor.cpp.
References identifierWithTemplateArg::getArg(), AST::getColumn(), moduleContext::getCompilerContext(), identifierWithTemplateArg::getId(), AST::getLine(), identifierWithTemplateArg::hasTemplateArg(), identifierWithTemplateArg::id, identifier::node, yoi::panic(), lexer::token::strVal, and yoi::wstring2string().

| IRValueType parseTypeSpecExtern | ( | yoi::subscriptExpr * | subscriptExpr, |
| yoi::indexT | targetModule | ||
| ) |
Definition at line 2814 of file visitor.cpp.
References AST::getColumn(), AST::getLine(), subscriptExpr::getSubscript(), subscriptExpr::id, and yoi::panic().

|
private |
Definition at line 4802 of file visitor.cpp.
References moduleContext::getCompilerContext().

|
private |
Definition at line 4794 of file visitor.cpp.
References moduleContext::getCompilerContext().

| visitor::OverloadResult resolveOverloadExtern | ( | const yoi::wstr & | baseName, |
| const yoi::vec< std::shared_ptr< IRValueType > > & | argTypes, | ||
| yoi::indexT | targetModule, | ||
| const std::shared_ptr< IRStructDefinition > & | structContext = nullptr |
||
| ) |
Resolves an external function overload within a target module.
| baseName | The base name of the function (e.g., "println" or "constructor"). |
| argTypes | The types of the arguments provided at the call site. |
| targetModule | The index of the module being looked into. |
| structContext | Optional. If not null, searches for a method within this external struct. |
Definition at line 4104 of file visitor.cpp.
References visitor::OverloadResult::fixedArgCount, visitor::OverloadResult::function, visitor::OverloadResult::functionIndex, moduleContext::getCompilerContext(), visitor::OverloadResult::isCastRequired, visitor::OverloadResult::isVariadic, yoi::managedPtr(), visitor::OverloadResult::variadicElementType, and yoi::wstring2string().

| visitor::OverloadResult resolveOverloadInterface | ( | const yoi::wstr & | baseName, |
| const yoi::vec< std::shared_ptr< IRValueType > > & | argTypes, | ||
| yoi::indexT | targetModule, | ||
| const std::shared_ptr< IRInterfaceInstanceDefinition > & | interfaceContext | ||
| ) |
Resolves an function overload within the interface context.
| baseName | The base name of the function (e.g., "println" or "constructor"). |
| argTypes | The types of the arguments provided at the call site. |
| targetModule | The index of the module being looked into. |
| interfaceContext | The interface context where the function is being called. |
Definition at line 4716 of file visitor.cpp.
References visitor::OverloadResult::fixedArgCount, visitor::OverloadResult::function, visitor::OverloadResult::functionIndex, moduleContext::getCompilerContext(), visitor::OverloadResult::isCastRequired, visitor::OverloadResult::isVariadic, visitor::OverloadResult::isVirtual, yoi::managedPtr(), and visitor::OverloadResult::variadicElementType.

| void setupTemporaryConceptEvaluationEnvironment | ( | yoi::indexT | moduleIndex, |
| const yoi::wstr & | conceptName, | ||
| const std::vector< std::shared_ptr< IRValueType > > & | args | ||
| ) |
Definition at line 5679 of file visitor.cpp.
References IRTemplateBuilder::addTemplateArgument(), IRDebugInfo::column, IRBuilder::createCodeBlock(), moduleContext::getCompilerContext(), IRBuilder::getCurrentDebugInfo(), moduleContext::getIRBuilder(), IRDebugInfo::line, yoi::managedPtr(), moduleContext::pushIRBuilder(), moduleContext::pushTemplateBuilder(), IRBuilder::switchCodeBlock(), and yoi::yoi_assert().

| yoi::indexT specializeFunctionTemplate | ( | yoi::funcDefStmt * | astNode, |
| const yoi::vec< std::shared_ptr< IRValueType > > & | templateArgs, | ||
| yoi::indexT | moduleIndex | ||
| ) |
Definition at line 3186 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), IRTemplateBuilder::addTemplateArgument(), identifierWithDefTemplateArg::arg, IRBuilder::createCodeBlock(), identifier::get(), defTemplateArg::get(), definitionArguments::get(), funcDefStmt::getArgs(), funcDefStmt::getBlock(), AST::getColumn(), moduleContext::getCompilerContext(), moduleContext::getIRBuilder(), AST::getLine(), funcDefStmt::getResultType(), identifierWithDefTemplateArg::hasDefTemplateArg(), identifierWithDefTemplateArg::id, funcDefStmt::id, yoi::managedPtr(), yoi::panic(), moduleContext::popIRBuilder(), moduleContext::popTemplateBuilder(), moduleContext::pushIRBuilder(), moduleContext::pushTemplateBuilder(), IRFunctionDefinition::Builder::setDebugInfo(), IRBuilder::setDebugInfo(), IRFunctionDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), lexer::token::strVal, IRBuilder::switchCodeBlock(), yoi::wstring2string(), IRFunctionDefinition::Builder::yield(), and IRBuilder::yield().

| void specializeInterfaceImplementation | ( | yoi::implStmt * | implAst, |
| const std::shared_ptr< IRValueType > & | concreteStructType, | ||
| const yoi::wstr & | specializedStructName, | ||
| const yoi::vec< std::shared_ptr< IRValueType > > & | concreteTemplateArgs, | ||
| yoi::indexT | targetModule | ||
| ) |
Definition at line 4603 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), IRInterfaceImplementationDefinition::Builder::addVirtualMethod(), IRFunctionDefinition::Builder::attrs, IRBuilder::createCodeBlock(), AST::getColumn(), moduleContext::getCompilerContext(), implInner::getInner(), implStmt::getInner(), moduleContext::getIRBuilder(), AST::getLine(), implStmt::inner, implStmt::interfaceName, implStmt::isImplForStmt(), yoi::managedPtr(), yoi::panic(), moduleContext::popIRBuilder(), moduleContext::pushIRBuilder(), IRFunctionDefinition::Builder::setDebugInfo(), IRBuilder::setDebugInfo(), IRInterfaceImplementationDefinition::Builder::setImplInterfaceIndex(), IRInterfaceImplementationDefinition::Builder::setImplStructIndex(), IRFunctionDefinition::Builder::setName(), IRInterfaceImplementationDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), IRBuilder::switchCodeBlock(), yoi::wstring2string(), IRFunctionDefinition::Builder::yield(), IRInterfaceImplementationDefinition::Builder::yield(), IRBuilder::yield(), and yoi::yoi_assert().

| yoi::indexT specializeInterfaceTemplate | ( | const yoi::wstr & | templateName, |
| const yoi::vec< std::shared_ptr< IRValueType > > & | concreteTemplateArgs, | ||
| yoi::indexT | moduleIndex | ||
| ) |
Definition at line 4534 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), IRFunctionDefinition::Builder::addAttr(), IRInterfaceInstanceDefinition::Builder::addMethod(), IRTemplateBuilder::addTemplateArgument(), moduleContext::getCompilerContext(), yoi::managedPtr(), moduleContext::popTemplateBuilder(), moduleContext::pushTemplateBuilder(), IRFunctionDefinition::Builder::setDebugInfo(), IRFunctionDefinition::Builder::setName(), IRInterfaceInstanceDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), yoi::wstring2string(), IRFunctionDefinition::Builder::yield(), IRInterfaceInstanceDefinition::Builder::yield(), and yoi::yoi_assert().

| std::pair< yoi::indexT, yoi::wstr > specializeStructMethodDeclaration | ( | IRTemplateBuilder & | structTemplate, |
| yoi::structDefInnerPair * | methodAstNode, | ||
| const yoi::wstr & | specializedStructName, | ||
| const yoi::vec< std::shared_ptr< IRValueType > > & | concreteTemplateArgs, | ||
| yoi::indexT | moduleIndex | ||
| ) |
Definition at line 3515 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), IRFunctionDefinition::Builder::addAttr(), IRTemplateBuilder::addTemplateArgument(), identifierWithDefTemplateArg::arg, innerMethodDecl::attrs, IRFunctionDefinition::Builder::attrs, identifier::get(), definitionArguments::get(), innerMethodDecl::getArgs(), constructorDecl::getArgs(), AST::getColumn(), moduleContext::getCompilerContext(), structDefInnerPair::getConstructor(), identifierWithDefTemplateArg::getId(), AST::getLine(), structDefInnerPair::getMethod(), innerMethodDecl::getName(), innerMethodDecl::getResultType(), identifierWithDefTemplateArg::hasDefTemplateArg(), structDefInnerPair::kind, yoi::managedPtr(), moduleContext::popTemplateBuilder(), moduleContext::pushTemplateBuilder(), IRFunctionDefinition::Builder::setDebugInfo(), IRFunctionDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), defTemplateArg::spec, lexer::token::strVal, constructorDecl::tempArgs, IRTemplateBuilder::templateArguments, and IRFunctionDefinition::Builder::yield().

| void specializeStructMethodDefinition | ( | IRTemplateBuilder & | structTemplate, |
| const std::shared_ptr< IRStructDefinition > & | specializedStruct, | ||
| yoi::implInnerPair * | methodAstNode, | ||
| const yoi::wstr & | specializedStructName, | ||
| const yoi::vec< std::shared_ptr< IRValueType > > & | concreteTemplateArgs, | ||
| yoi::indexT | moduleIndex | ||
| ) |
Definition at line 3630 of file visitor.cpp.
References IRTemplateBuilder::addTemplateArgument(), IRBuilder::createCodeBlock(), identifier::get(), definitionArguments::get(), innerMethodDef::getArgs(), constructorDef::getArgs(), innerMethodDef::getBlock(), constructorDef::getBlock(), AST::getColumn(), moduleContext::getCompilerContext(), implInnerPair::getConstructor(), identifierWithTemplateArg::getId(), moduleContext::getIRBuilder(), AST::getLine(), implInnerPair::getMethod(), innerMethodDef::getName(), implInnerPair::isConstructor(), implInnerPair::isFinalizer(), yoi::managedPtr(), yoi::panic(), moduleContext::popIRBuilder(), moduleContext::popTemplateBuilder(), moduleContext::pushIRBuilder(), moduleContext::pushTemplateBuilder(), yoi::set_current_file_path(), IRBuilder::setDebugInfo(), lexer::token::strVal, IRBuilder::switchCodeBlock(), IRTemplateBuilder::templateArguments, yoi::wstring2string(), and IRBuilder::yield().

| yoi::indexT specializeStructMethodTemplate | ( | const std::shared_ptr< IRStructDefinition > & | structDef, |
| yoi::structDefInnerPair * | decl, | ||
| yoi::implInnerPair * | def, | ||
| const yoi::wstr & | baseMethodName, | ||
| const yoi::vec< std::shared_ptr< IRValueType > > & | methodTemplateArgs, | ||
| yoi::indexT | moduleIndex | ||
| ) |
Definition at line 3407 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), IRTemplateBuilder::addTemplateArgument(), identifierWithDefTemplateArg::arg, innerMethodDecl::attrs, innerMethodDef::attrs, IRFunctionDefinition::Builder::attrs, IRBuilder::createCodeBlock(), definitionArguments::get(), identifierWithTemplateArg::getArg(), identifierWithDefTemplateArg::getArg(), innerMethodDecl::getArgs(), innerMethodDef::getArgs(), innerMethodDef::getBlock(), AST::getColumn(), moduleContext::getCompilerContext(), moduleContext::getIRBuilder(), AST::getLine(), structDefInnerPair::getMethod(), implInnerPair::getMethod(), innerMethodDecl::getName(), innerMethodDef::getName(), innerMethodDecl::getResultType(), innerMethodDef::getResultType(), identifierWithDefTemplateArg::hasDefTemplateArg(), yoi::managedPtr(), IRFunctionDefinition::Builder::name, yoi::panic(), moduleContext::popIRBuilder(), moduleContext::popTemplateBuilder(), moduleContext::pushIRBuilder(), moduleContext::pushTemplateBuilder(), IRFunctionDefinition::Builder::setDebugInfo(), IRBuilder::setDebugInfo(), IRFunctionDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), defTemplateArg::spec, IRBuilder::switchCodeBlock(), yoi::wstring2string(), IRFunctionDefinition::Builder::yield(), IRBuilder::yield(), and yoi::yoi_assert().

| yoi::indexT specializeStructTemplate | ( | const yoi::wstr & | templateName, |
| const yoi::vec< std::shared_ptr< IRValueType > > & | concreteTemplateArgs, | ||
| yoi::implStmt * | pureTemplateImplAst, | ||
| yoi::indexT | moduleIndex | ||
| ) |
Definition at line 3304 of file visitor.cpp.
References IRStructDefinition::Builder::addField(), IRStructDefinition::Builder::addMethod(), IRTemplateBuilder::addTemplateArgument(), IRStructDefinition::Builder::addTemplateMethodDecl(), IRStructDefinition::Builder::addTemplateMethodDef(), moduleContext::getCompilerContext(), implInner::getInner(), implStmt::getInner(), yoi::managedPtr(), moduleContext::popTemplateBuilder(), moduleContext::pushTemplateBuilder(), IRStructDefinition::Builder::setName(), IRStructDefinition::Builder::setStoredTemplateArgs(), yoi::wstring2string(), IRStructDefinition::Builder::yield(), and yoi::yoi_assert().

| void tryCastTo | ( | const std::shared_ptr< IRValueType > & | toType | ) |
Definition at line 3851 of file visitor.cpp.
References IRDebugInfo::column, IRBuilder::constructInterfaceImplOp(), moduleContext::getCompilerContext(), IRBuilder::getCurrentDebugInfo(), moduleContext::getIRBuilder(), IRBuilder::getRhsFromTempVarStack(), IRBuilder::invokeDanglingOp(), IRDebugInfo::line, yoi::managedPtr(), IRBuilder::newArrayOp(), IRBuilder::newDynamicArrayOp(), IRBuilder::newStructOp(), yoi::panic(), IRBuilder::popFromTempVarStack(), and yoi::wstring2string().

| std::shared_ptr< yoi::IRModule > visit | ( | ) |
Definition at line 33 of file visitor.cpp.
References IRBuilder::createCodeBlock(), moduleContext::getCompilerContext(), moduleContext::getIRBuilder(), moduleContext::getModuleAST(), visitor::irModule, yoi::managedPtr(), moduleContext::popIRBuilder(), IRFunctionDefinition::Preserve, moduleContext::pushIRBuilder(), IRBuilder::retOp(), IRBuilder::setDebugInfo(), IRBuilder::switchCodeBlock(), visitor::visit(), and IRBuilder::yield().
Referenced by visitor::visit().


| yoi::indexT visit | ( | yoi::abstractExpr * | abstractExpr, |
| bool | isStoreOp = false |
||
| ) |
Definition at line 180 of file visitor.cpp.
References IRBuilder::discardState(), AST::getColumn(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), AST::getLine(), IRBuilder::getRhsFromTempVarStack(), IRBuilder::interfaceOfOp(), lexer::token::kind, abstractExpr::lhs, yoi::managedPtr(), abstractExpr::op, IRBuilder::pushOp(), IRBuilder::restoreState(), abstractExpr::rhs, IRBuilder::saveState(), IRBuilder::typeIdOp(), and yoi::yoi_assert().

| yoi::indexT visit | ( | yoi::addExpr * | addExpr | ) |
Definition at line 438 of file visitor.cpp.
References IRBuilder::arithmeticOp(), IRBuilder::discardState(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), addExpr::getOp(), IRBuilder::getRhsFromTempVarStack(), addExpr::getTerms(), yoi::panic(), and IRBuilder::saveState().

| yoi::indexT visit | ( | yoi::andExpr * | andExpr | ) |
Definition at line 625 of file visitor.cpp.
References IRBuilder::arithmeticOp(), IRBuilder::basicCast(), IRBuilder::discardState(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), andExpr::getOp(), IRBuilder::getRhsFromTempVarStack(), andExpr::getTerms(), yoi::panic(), and IRBuilder::saveState().

| yoi::indexT visit | ( | yoi::basicLiterals * | basicLiterals | ) |
Definition at line 58 of file visitor.cpp.
References lexer::token::basicVal, lexer::token::boolean, lexer::token::character, lexer::token::col, lexer::token::decimal, IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), lexer::token::integer, lexer::token::kind, lexer::token::kNull, lexer::token::line, basicLiterals::node, yoi::panic(), IRBuilder::pushOp(), lexer::token::shortInt, lexer::token::string, lexer::token::strVal, lexer::token::unsignedInt, lexer::token::vBasicValue::vBool, lexer::token::vBasicValue::vDeci, lexer::token::vBasicValue::vInt, lexer::token::vBasicValue::vShort, and lexer::token::vBasicValue::vUint.

| yoi::indexT visit | ( | yoi::bracedInitalizerList * | bracedInitalizerList | ) |
Definition at line 5529 of file visitor.cpp.
References bracedInitalizerList::exprs, IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getRhsFromTempVarStack(), yoi::managedPtr(), and IRBuilder::pushTempVar().

| yoi::indexT visit | ( | yoi::breakStmt * | breakStmt | ) |
Definition at line 2721 of file visitor.cpp.
References IRBuilder::breakOp(), IRBuilder::getCurrentInsertionPoint(), and moduleContext::getIRBuilder().

| void visit | ( | yoi::codeBlock * | codeBlock, |
| bool | notEmitNewBlockInstruction = false |
||
| ) |
Definition at line 887 of file visitor.cpp.
References IRBuilder::createCodeBlock(), moduleContext::getIRBuilder(), codeBlock::getStmts(), IRBuilder::irFuncDefinition(), IRBuilder::jumpOp(), and IRBuilder::switchCodeBlock().

| void visit | ( | yoi::conceptDefinition * | conceptDefinition | ) |
Definition at line 5670 of file visitor.cpp.
References yoi::managedPtr(), conceptDefinition::name, and lexer::token::strVal.

| yoi::indexT visit | ( | yoi::continueStmt * | continueStmt | ) |
Definition at line 2716 of file visitor.cpp.
References IRBuilder::continueOp(), IRBuilder::getCurrentInsertionPoint(), and moduleContext::getIRBuilder().

| void visit | ( | yoi::dataStructDefStmt * | dataStructDefStmt | ) |
Definition at line 5539 of file visitor.cpp.
References identifier::get(), structDefInner::getInner(), dataStructDefStmt::getInner(), dataStructDefStmt::id, yoi::managedPtr(), IRDataStructDefinition::Builder::setName(), and lexer::token::strVal.

| yoi::indexT visit | ( | yoi::dynCastExpression * | dynCastExpression | ) |
Definition at line 3978 of file visitor.cpp.
References IRBuilder::dynCastOp(), dynCastExpression::expr, AST::getColumn(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), AST::getLine(), IRBuilder::getRhsFromTempVarStack(), yoi::managedPtr(), yoi::panic(), dynCastExpression::type, yoi::wstring2string(), and yoi::yoi_assert().

| void visit | ( | yoi::enumerationDefinition * | enumerationDefinition | ) |
Definition at line 5257 of file visitor.cpp.
References IREnumerationType::Builder::addValue(), identifier::get(), enumerationDefinition::name, IREnumerationType::Builder::setName(), lexer::token::strVal, enumerationDefinition::values, and IREnumerationType::Builder::yield().

| yoi::indexT visit | ( | yoi::equalityExpr * | equalityExpr | ) |
Definition at line 581 of file visitor.cpp.
References IRBuilder::arithmeticOp(), IRBuilder::discardState(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), equalityExpr::getOp(), IRBuilder::getRhsFromTempVarStack(), equalityExpr::getTerms(), yoi::panic(), and IRBuilder::saveState().

| yoi::indexT visit | ( | yoi::exclusiveExpr * | exclusiveExpr | ) |
Definition at line 672 of file visitor.cpp.
References IRBuilder::arithmeticOp(), IRBuilder::basicCast(), IRBuilder::discardState(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), exclusiveExpr::getOp(), IRBuilder::getRhsFromTempVarStack(), exclusiveExpr::getTerms(), yoi::panic(), and IRBuilder::saveState().

| yoi::indexT visit | ( | yoi::exportDecl * | exportDecl | ) |
Definition at line 3733 of file visitor.cpp.
References exportDecl::as, exportDecl::attrs, exportDecl::from, AST::getColumn(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), AST::getLine(), externModuleAccessExpression::getTerms(), yoi::managedPtr(), typeSpec::member, identifier::node, yoi::panic(), lexer::token::strVal, yoi::wstring2string(), and yoi::yoi_assert().

| void visit | ( | yoi::forEachStmt * | forEachStmt | ) |
Definition at line 2693 of file visitor.cpp.
References AST::getColumn(), AST::getLine(), and yoi::panic().

| yoi::indexT visit | ( | yoi::forStmt * | forStmt | ) |
Definition at line 2652 of file visitor.cpp.
References forStmt::afterStmt, forStmt::block, forStmt::cond, IRBuilder::createCodeBlock(), AST::getColumn(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), AST::getLine(), IRBuilder::getRhsFromTempVarStack(), forStmt::initStmt, IRBuilder::irFuncDefinition(), IRBuilder::jumpIfOp(), IRBuilder::jumpOp(), IRBuilder::popLoopContext(), IRBuilder::pushLoopContext(), IRBuilder::switchCodeBlock(), and yoi::yoi_assert().

| yoi::indexT visit | ( | yoi::funcDefStmt * | funcDefStmt | ) |
Definition at line 1951 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), IRFunctionDefinition::Builder::addAttr(), funcDefStmt::attrs, IRFunctionDefinition::Builder::attrs, funcDefStmt::block, IRBuilder::createCodeBlock(), definitionArguments::get(), funcDefStmt::getArgs(), AST::getColumn(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), funcDefStmt::getId(), identifierWithDefTemplateArg::getId(), moduleContext::getIRBuilder(), AST::getLine(), funcDefStmt::getResultType(), IRBuilder::irFuncDefinition(), yoi::managedPtr(), IRFunctionDefinition::Builder::name, identifier::node, moduleContext::popIRBuilder(), moduleContext::pushIRBuilder(), IRFunctionDefinition::Builder::setDebugInfo(), IRBuilder::setDebugInfo(), IRFunctionDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), lexer::token::strVal, IRBuilder::switchCodeBlock(), IRFunctionDefinition::Builder::yield(), and IRBuilder::yield().

| yoi::indexT visit | ( | yoi::funcExpr * | func | ) |
Definition at line 5271 of file visitor.cpp.
References funcExpr::args, AST::getColumn(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), AST::getLine(), externModuleAccessExpression::getTerms(), yoi::managedPtr(), funcExpr::name, yoi::panic(), unnamedDefinitionArguments::types, yoi::wstring2string(), and yoi::yoi_assert().

| void visit | ( | yoi::globalStmt * | globalStmt | ) |
Definition at line 2519 of file visitor.cpp.
References globalStmt::vValue::conceptDefVal, globalStmt::vValue::dataStructDefStmtVal, globalStmt::vValue::enumerationDefVal, globalStmt::vValue::exportDeclVal, globalStmt::vValue::funcDefStmtVal, AST::getColumn(), AST::getLine(), globalStmt::vValue::implStmtVal, globalStmt::vValue::importDeclVal, globalStmt::vValue::interfaceDefStmtVal, globalStmt::kind, globalStmt::vValue::letStmtVal, globalStmt::marco, yoi::panic(), globalStmt::vValue::structDefStmtVal, globalStmt::vValue::typeAliasStmtVal, globalStmt::vValue::useStmtVal, and globalStmt::value.

| void visit | ( | yoi::hoshiModule * | module | ) |
Visitor methods These methods received a pointer to the corresponding AST node and return an index of the current position in IR array.
Definition at line 52 of file visitor.cpp.
| yoi::indexT visit | ( | yoi::identifier * | identifier, |
| bool | isStoreOp = false |
||
| ) |
Definition at line 102 of file visitor.cpp.
References lexer::token::col, IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::irFuncDefinition(), lexer::token::line, IRBuilder::loadOp(), identifier::node, yoi::panic(), IRBuilder::storeOp(), lexer::token::strVal, and yoi::wstring2string().

| yoi::indexT visit | ( | yoi::identifierWithTemplateArg * | identifierWithTemplateArg, |
| bool | isStoreOp = false |
||
| ) |
Definition at line 1877 of file visitor.cpp.
References AST::getColumn(), AST::getLine(), identifierWithTemplateArg::hasTemplateArg(), identifierWithTemplateArg::id, and yoi::panic().

| yoi::indexT visit | ( | yoi::ifStmt * | ifStmt | ) |
Definition at line 2577 of file visitor.cpp.
References ifStmt::ifBlock::block, ifStmt::ifBlock::cond, IRBuilder::createCodeBlock(), ifStmt::elifB, ifStmt::elseB, AST::getColumn(), IRBuilder::getCurrentInsertionPoint(), ifStmt::getIfBlock(), moduleContext::getIRBuilder(), AST::getLine(), IRBuilder::getRhsFromTempVarStack(), ifStmt::hasElseBlock(), IRBuilder::jumpIfOp(), IRBuilder::jumpOp(), IRBuilder::switchCodeBlock(), and yoi::yoi_assert().

| yoi::indexT visit | ( | yoi::implStmt * | implStmt | ) |
Definition at line 2209 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), IRFunctionDefinition::Builder::addAttr(), IRInterfaceImplementationDefinition::Builder::addVirtualMethod(), IRFunctionDefinition::Builder::attrs, IRBuilder::createCodeBlock(), AST::getColumn(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), implInner::getInner(), implStmt::getInner(), moduleContext::getIRBuilder(), AST::getLine(), implStmt::getStructId(), externModuleAccessExpression::getTerms(), implStmt::inner, implStmt::interfaceName, implStmt::isImplForStmt(), yoi::managedPtr(), yoi::panic(), moduleContext::popIRBuilder(), moduleContext::pushIRBuilder(), IRFunctionDefinition::Builder::setDebugInfo(), IRBuilder::setDebugInfo(), IRInterfaceImplementationDefinition::Builder::setImplInterfaceIndex(), IRInterfaceImplementationDefinition::Builder::setImplStructIndex(), IRFunctionDefinition::Builder::setName(), IRInterfaceImplementationDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), implStmt::structName, IRBuilder::switchCodeBlock(), yoi::wstring2string(), IRFunctionDefinition::Builder::yield(), IRInterfaceImplementationDefinition::Builder::yield(), IRBuilder::yield(), and yoi::yoi_assert().

| yoi::indexT visit | ( | yoi::importDecl * | importDecl | ) |
Definition at line 3804 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), innerMethodDecl::args, innerMethodDecl::attrs, IRFunctionDefinition::Builder::attrs, importDecl::from_path, identifier::get(), definitionArguments::get(), AST::getColumn(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), identifierWithDefTemplateArg::getId(), moduleContext::getIRBuilder(), AST::getLine(), importDecl::inner, yoi::managedPtr(), innerMethodDecl::name, yoi::realpath(), innerMethodDecl::resultType, IRFunctionDefinition::Builder::setDebugInfo(), IRFunctionDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), lexer::token::strVal, yoi::wstring2string(), IRFunctionDefinition::Builder::yield(), and yoi::yoi_assert().

| yoi::indexT visit | ( | yoi::inclusiveExpr * | inclusiveExpr | ) |
Definition at line 717 of file visitor.cpp.
References IRBuilder::arithmeticOp(), IRBuilder::basicCast(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), inclusiveExpr::getOp(), IRBuilder::getRhsFromTempVarStack(), inclusiveExpr::getTerms(), and yoi::panic().

| void visit | ( | yoi::inCodeBlockStmt * | inCodeBlockStmt | ) |
Definition at line 1259 of file visitor.cpp.
References inCodeBlockStmt::vValue::breakStmtVal, inCodeBlockStmt::vValue::codeBlockVal, inCodeBlockStmt::vValue::continueStmtVal, inCodeBlockStmt::vValue::forEachStmtVal, inCodeBlockStmt::vValue::forStmtVal, AST::getColumn(), moduleContext::getIRBuilder(), inCodeBlockStmt::getKind(), AST::getLine(), inCodeBlockStmt::getValue(), inCodeBlockStmt::vValue::ifStmtVal, inCodeBlockStmt::vValue::letStmtVal, inCodeBlockStmt::marco, yoi::panic(), IRBuilder::popOp(), inCodeBlockStmt::vValue::returnStmtVal, inCodeBlockStmt::vValue::rExprVal, IRBuilder::setDebugInfo(), inCodeBlockStmt::vValue::whileStmtVal, and inCodeBlockStmt::vValue::yieldStmtVal.

| yoi::indexT visit | ( | yoi::interfaceDefStmt * | interfaceDefStmt | ) |
Definition at line 2015 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), IRFunctionDefinition::Builder::addAttr(), IRInterfaceInstanceDefinition::Builder::addMethod(), identifier::get(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), identifierWithDefTemplateArg::getId(), interfaceDefInner::getInner(), interfaceDefStmt::getInner(), moduleContext::getIRBuilder(), identifierWithDefTemplateArg::hasDefTemplateArg(), interfaceDefStmt::id, yoi::managedPtr(), IRFunctionDefinition::Builder::setDebugInfo(), IRFunctionDefinition::Builder::setName(), IRInterfaceInstanceDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), lexer::token::strVal, IRFunctionDefinition::Builder::yield(), IRInterfaceInstanceDefinition::Builder::yield(), and yoi::yoi_assert().

| yoi::indexT visit | ( | yoi::leftExpr * | leftExpr | ) |
Definition at line 288 of file visitor.cpp.
References IRBuilder::arithmeticOp(), lexer::token::col, IRBuilder::discardState(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), leftExpr::getOp(), IRBuilder::getRhsFromTempVarStack(), leftExpr::hasRhs(), IRBuilder::insert(), lexer::token::kind, leftExpr::lhs, lexer::token::line, yoi::panic(), IRBuilder::popFromTempVarStack(), IRBuilder::pushTempVar(), leftExpr::rhs, IRBuilder::saveState(), lexer::token::strVal, and yoi::wstring2string().

| yoi::indexT visit | ( | yoi::letStmt * | letStmt | ) |
Definition at line 2445 of file visitor.cpp.
References IRBuilder::bindElementsOp(), IRBuilder::bindFieldsOp(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getRhsFromTempVarStack(), IRBuilder::irFuncDefinition(), yoi::managedPtr(), yoi::panic(), IRBuilder::storeOp(), and letStmt::terms.

| yoi::indexT visit | ( | yoi::logicalAndExpr * | logicalAndExpr | ) |
Definition at line 762 of file visitor.cpp.
References IRBuilder::basicCast(), IRBuilder::createCodeBlock(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), logicalAndExpr::getOp(), IRBuilder::getRhsFromTempVarStack(), logicalAndExpr::getTerms(), IRBuilder::insert(), IRBuilder::jumpIfOp(), IRBuilder::jumpOp(), and IRBuilder::switchCodeBlock().

| yoi::indexT visit | ( | yoi::logicalOrExpr * | logicalOrExpr | ) |
Definition at line 806 of file visitor.cpp.
References IRBuilder::basicCast(), IRBuilder::createCodeBlock(), IRBuilder::getCodeBlock(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), logicalOrExpr::getOp(), IRBuilder::getRhsFromTempVarStack(), logicalOrExpr::getTerms(), IRCodeBlock::insert(), IRBuilder::jumpIfOp(), IRBuilder::jumpOp(), yoi::panic(), IRBuilder::pushTempVar(), IRBuilder::switchCodeBlock(), and yoi::yoi_assert().

| yoi::indexT visit | ( | yoi::memberExpr * | memberExpr, |
| bool | isStoreOp = false |
||
| ) |
Definition at line 900 of file visitor.cpp.
References IRBuilder::arrayLengthOp(), IRBuilder::commitState(), IRBuilder::discardState(), IRBuilder::discardStateUntil(), visitor::OverloadResult::found(), visitor::OverloadResult::function, visitor::OverloadResult::functionIndex, moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), IRBuilder::getRhsFromTempVarStack(), memberExpr::getTerms(), IRBuilder::invokeMethodOp(), visitor::OverloadResult::isCastRequired, visitor::OverloadResult::isVariadic, IRBuilder::loadFieldOp(), IRBuilder::loadMemberOp(), IRBuilder::loadOp(), yoi::managedPtr(), yoi::panic(), IRBuilder::popFromTempVarStack(), IRBuilder::popOp(), IRBuilder::pushOp(), IRBuilder::pushTempVar(), IRBuilder::restoreState(), IRBuilder::restoreStateTemporarily(), IRBuilder::saveState(), IRBuilder::storeFieldOp(), IRBuilder::storeMemberOp(), IRBuilder::storeOp(), yoi::wstring2string(), and yoi::yoi_assert().

| yoi::indexT visit | ( | yoi::mulExpr * | mulExpr | ) |
Definition at line 390 of file visitor.cpp.
References IRBuilder::arithmeticOp(), IRBuilder::discardState(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), mulExpr::getOp(), IRBuilder::getRhsFromTempVarStack(), mulExpr::getTerms(), yoi::panic(), and IRBuilder::saveState().

| yoi::indexT visit | ( | yoi::newExpression * | newExpression | ) |
Definition at line 4051 of file visitor.cpp.
References newExpression::args, subscript::expr, invocationArguments::get(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), newExpression::length, yoi::managedPtr(), IRBuilder::newDynamicArrayOp(), IRBuilder::pushOp(), and newExpression::type.

| yoi::indexT visit | ( | yoi::primary * | primary, |
| bool | isStoreOp = false |
||
| ) |
Definition at line 133 of file visitor.cpp.
References primary::bracedInitalizer, IRBuilder::constructInterfaceImplOp(), primary::dynCast, primary::expr, primary::func, AST::getColumn(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), AST::getLine(), primary::kind, primary::lambda, primary::literals, primary::member, primary::newExpr, yoi::panic(), and primary::typeId.

| yoi::indexT visit | ( | yoi::relationalExpr * | relationalExpr | ) |
Definition at line 525 of file visitor.cpp.
References IRBuilder::arithmeticOp(), IRBuilder::discardState(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), relationalExpr::getOp(), IRBuilder::getRhsFromTempVarStack(), relationalExpr::getTerms(), yoi::panic(), and IRBuilder::saveState().

| yoi::indexT visit | ( | yoi::returnStmt * | returnStmt | ) |
Definition at line 2698 of file visitor.cpp.
References AST::getColumn(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), AST::getLine(), returnStmt::hasValue(), IRBuilder::irFuncDefinition(), IRBuilder::retOp(), returnStmt::value, and yoi::yoi_assert().

| yoi::indexT visit | ( | yoi::rExpr * | rExpr | ) |
Definition at line 883 of file visitor.cpp.
References rExpr::getExpr().

| yoi::indexT visit | ( | yoi::shiftExpr * | shiftExpr | ) |
Definition at line 479 of file visitor.cpp.
References IRBuilder::arithmeticOp(), IRBuilder::discardState(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getLhsFromTempVarStack(), shiftExpr::getOp(), IRBuilder::getRhsFromTempVarStack(), shiftExpr::getTerms(), yoi::panic(), and IRBuilder::saveState().

| yoi::indexT visit | ( | yoi::structDefStmt * | structDefStmt | ) |
Definition at line 2071 of file visitor.cpp.
References IRFunctionDefinition::Builder::addArgument(), IRFunctionDefinition::Builder::addAttr(), IRStructDefinition::Builder::addField(), IRStructDefinition::Builder::addMethod(), IRStructDefinition::Builder::addTemplateMethodDecl(), IRFunctionDefinition::Builder::attrs, identifier::get(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), structDefStmt::getId(), identifierWithDefTemplateArg::getId(), structDefInner::getInner(), structDefStmt::getInner(), moduleContext::getIRBuilder(), identifierWithDefTemplateArg::hasDefTemplateArg(), structDefStmt::id, yoi::managedPtr(), IRFunctionDefinition::Builder::setDebugInfo(), IRFunctionDefinition::Builder::setName(), IRStructDefinition::Builder::setName(), IRFunctionDefinition::Builder::setReturnType(), lexer::token::strVal, IRFunctionDefinition::Builder::yield(), and IRStructDefinition::Builder::yield().

| yoi::indexT visit | ( | yoi::subscriptExpr * | subscriptExpr, |
| bool | isStoreOp = false |
||
| ) |
Definition at line 1307 of file visitor.cpp.
References IRBuilder::constructInterfaceImplOp(), IRBuilder::discardState(), identifier::get(), identifierWithTemplateArg::getArg(), AST::getColumn(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), identifierWithTemplateArg::getId(), moduleContext::getIRBuilder(), AST::getLine(), IRBuilder::getRhsFromTempVarStack(), subscriptExpr::getSubscript(), identifierWithTemplateArg::hasTemplateArg(), subscriptExpr::id, IRBuilder::invokeImportedOp(), yoi::managedPtr(), IRBuilder::newArrayOp(), IRBuilder::newStructOp(), yoi::panic(), IRBuilder::restoreState(), IRBuilder::saveState(), structObject, lexer::token::strVal, yoi::wstring2string(), and yoi::yoi_assert().

| void visit | ( | yoi::typeAliasStmt * | typeAlias | ) |
Definition at line 5229 of file visitor.cpp.
References AST::getColumn(), identifierWithDefTemplateArg::getId(), AST::getLine(), identifierWithDefTemplateArg::hasDefTemplateArg(), typeAliasStmt::lhs, identifier::node, yoi::panic(), typeAliasStmt::rhs, lexer::token::strVal, and yoi::wstring2string().

| yoi::indexT visit | ( | yoi::typeIdExpression * | typeIdExpression | ) |
Definition at line 3964 of file visitor.cpp.
References typeIdExpression::expr, IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), IRBuilder::getRhsFromTempVarStack(), yoi::managedPtr(), IRBuilder::restoreState(), IRBuilder::saveState(), typeIdExpression::type, and IRBuilder::typeIdOp().

| yoi::indexT visit | ( | yoi::uniqueExpr * | uniqueExpr, |
| bool | isStoreOp = false |
||
| ) |
Definition at line 233 of file visitor.cpp.
References lexer::token::col, IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), uniqueExpr::getOp(), IRBuilder::getRhsFromTempVarStack(), lexer::token::kind, uniqueExpr::lhs, lexer::token::line, yoi::panic(), and IRBuilder::uniqueArithmeticOp().

| yoi::indexT visit | ( | yoi::useStmt * | useStmt | ) |
Definition at line 1886 of file visitor.cpp.
References identifier::get(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), useStmt::name, useStmt::path, and lexer::token::strVal.

| yoi::indexT visit | ( | yoi::whileStmt * | whileStmt | ) |
Definition at line 2624 of file visitor.cpp.
References whileStmt::block, whileStmt::cond, IRBuilder::createCodeBlock(), AST::getColumn(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), AST::getLine(), IRBuilder::getRhsFromTempVarStack(), IRBuilder::jumpIfOp(), IRBuilder::jumpOp(), IRBuilder::popLoopContext(), IRBuilder::pushLoopContext(), IRBuilder::switchCodeBlock(), and yoi::yoi_assert().

| yoi::indexT visit | ( | yoi::yieldStmt * | stmt | ) |
Definition at line 5573 of file visitor.cpp.
References yieldStmt::expr, AST::getColumn(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), AST::getLine(), IRBuilder::irFuncDefinition(), IRBuilder::loadMemberOp(), IRBuilder::loadOp(), IRBuilder::yieldOp(), and yoi::yoi_assert().

| yoi::indexT visitExtern | ( | yoi::identifier * | identifier, |
| yoi::indexT | targetModule, | ||
| bool | isStoreOp = false |
||
| ) |
Definition at line 3118 of file visitor.cpp.
References IRExternEntry::affiliateModule, identifier::get(), AST::getColumn(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), moduleContext::getIRBuilder(), AST::getLine(), IRExternEntry::itemIndex, IRBuilder::loadOp(), identifier::node, yoi::panic(), IRBuilder::storeOp(), lexer::token::strVal, IRExternEntry::type, yoi::wstring2string(), and yoi::yoi_assert().

| yoi::indexT visitExtern | ( | yoi::identifierWithTemplateArg * | identifierWithTemplateArg, |
| yoi::indexT | targetModule, | ||
| bool | isStoreOp = false |
||
| ) |
Definition at line 3145 of file visitor.cpp.
References AST::getColumn(), AST::getLine(), identifierWithTemplateArg::hasTemplateArg(), identifierWithTemplateArg::id, and yoi::panic().

| yoi::indexT visitExtern | ( | yoi::subscriptExpr * | subscriptExpr, |
| yoi::indexT | targetModule, | ||
| bool | isStoreOp = false |
||
| ) |
Definition at line 1606 of file visitor.cpp.
References IRExternEntry::affiliateModule, IRBuilder::constructInterfaceImplOp(), IRBuilder::discardState(), identifier::get(), identifierWithTemplateArg::getArg(), AST::getColumn(), moduleContext::getCompilerContext(), IRBuilder::getCurrentInsertionPoint(), identifierWithTemplateArg::getId(), moduleContext::getIRBuilder(), AST::getLine(), IRBuilder::getRhsFromTempVarStack(), subscriptExpr::getSubscript(), identifierWithTemplateArg::hasTemplateArg(), subscriptExpr::id, IRBuilder::invokeImportedOp(), IRExternEntry::itemIndex, yoi::managedPtr(), IRBuilder::newArrayOp(), IRBuilder::newStructOp(), yoi::panic(), IRBuilder::popFromTempVarStack(), IRBuilder::restoreState(), IRBuilder::saveState(), lexer::token::strVal, yoi::wstring2string(), and yoi::yoi_assert().

| yoi::indexT currentModuleIndex |
| std::shared_ptr<yoi::IRModule> irModule |
Definition at line 42 of file visitor.h.
Referenced by visitor::visit().
| std::shared_ptr<yoi::moduleContext> moduleContext |
|
private |