hoshi-lang dev
Yet another programming language
Loading...
Searching...
No Matches
yoi Namespace Reference

Namespaces

namespace  serialization
 

Classes

class  abstractExpr
 
class  addExpr
 
struct  AnalysisState
 
class  andExpr
 
class  AST
 
class  basicLiterals
 
class  bracedInitalizerList
 
class  breakStmt
 
class  BuiltinModuleBuilder
 
struct  CallGraph
 
class  catchParam
 
class  ccObjectLinker
 
class  clObjectLinker
 
class  codeBlock
 
class  CodegenObjectCache
 
struct  CodegenObjectCacheEntry
 
class  CodegenTaskDispatcher
 
class  compilerContext
 
class  conceptDefinition
 
class  conceptStmt
 
class  constructorDecl
 
class  constructorDef
 
class  continueStmt
 
class  dataStructDefStmt
 
class  decltypeExpr
 
class  definitionArguments
 
class  defTemplateArg
 
class  defTemplateArgSpec
 
class  dynCastExpression
 
class  enum_range
 
class  enumerationDefinition
 
class  enumerationPair
 
class  equalityExpr
 
class  exclusiveExpr
 
class  exportDecl
 
class  externModuleAccessExpression
 
class  finalizerDecl
 
class  finalizerDef
 
class  forEachStmt
 
struct  FormatOption
 
class  Formatter
 
class  forStmt
 
class  funcDefStmt
 
class  funcExpr
 
struct  FunctionAnalysisInfo
 
class  funcTypeSpec
 
class  globalStmt
 
class  hoshiModule
 
class  identifier
 
class  identifierWithDefTemplateArg
 
class  identifierWithTemplateArg
 
class  identifierWithTypeSpec
 
class  ifStmt
 
class  implInner
 
class  implInnerPair
 
class  implStmt
 
class  importDecl
 
class  inclusiveExpr
 
class  inCodeBlockStmt
 
class  indexPool
 
class  indexTable
 
class  indexTableDeprecated
 
class  innerMethodDecl
 
class  innerMethodDef
 
class  interfaceDefInner
 
class  interfaceDefInnerPair
 
class  interfaceDefStmt
 
class  invocationArguments
 
class  IR
 
struct  IRBuildConfig
 
class  IRBuilder
 
class  IRCodeBlock
 
class  IRConcept
 
class  IRDataStructDefinition
 
struct  IRDebugInfo
 
class  IREnumerationType
 
class  IRExternEntry
 
class  IRFFITable
 
class  IRFunctionDefinition
 
class  IRFunctionOptimizer
 
class  IRFunctionTemplate
 
class  IRInterfaceImplementationDefinition
 
class  IRInterfaceImplementationTemplate
 
class  IRInterfaceInstanceDefinition
 
class  IRInterfaceInstanceTemplate
 
class  IRLinker
 
struct  IRMetadata
 
class  IRModule
 
class  IRObjectFile
 
class  IROperand
 
class  IROptimizer
 
class  IRStringLiteralPool
 
class  IRStructDefinition
 
class  IRStructTemplate
 
class  IRTemplateBuilder
 
class  IRTypeAlias
 
class  IRValueType
 
class  IRVariableTable
 
class  lambdaExpr
 
class  leftExpr
 
class  letAssignmentPair
 
class  letAssignmentPairLHS
 
class  letStmt
 
class  lexer
 
class  LLVMCodegen
 
class  logicalAndExpr
 
class  logicalOrExpr
 
class  marcoDescriptor
 
class  marcoPair
 
class  memberExpr
 
class  moduleContext
 
class  mulExpr
 
class  newExpression
 
class  ObjectLinker
 
class  primary
 
class  relationalExpr
 
class  returnStmt
 
class  rExpr
 
class  satisfyClause
 
class  satisfyStmt
 
class  shiftExpr
 
class  structDefInner
 
class  structDefInnerPair
 
class  structDefStmt
 
class  subscript
 
class  subscriptExpr
 
class  templateArg
 
class  templateArgSpec
 
class  throwStmt
 
class  tryCatchStmt
 
class  typeAliasStmt
 
class  typeIdExpression
 
class  typeSpec
 
class  uniqueExpr
 
class  unnamedDefinitionArguments
 
class  useStmt
 
class  visitor
 
class  whileStmt
 
class  yieldStmt
 

Typedefs

using wstr = std::wstring
 
using wchar = wstr::value_type
 
using vdeci = double
 
using indexT = uint64_t
 
template<typename t >
using vec = std::vector< t >
 

Enumerations

enum class  ExceptionHandleType { Suppress , Warning , Panic }
 

Functions

void finalizeAST (funcTypeSpec *ptr)
 
void finalizeAST (definitionArguments *ptr)
 
void finalizeAST (invocationArguments *ptr)
 
void finalizeAST (templateArg *ptr)
 
void finalizeAST (templateArgSpec *ptr)
 
void finalizeAST (defTemplateArg *ptr)
 
void finalizeAST (defTemplateArgSpec *ptr)
 
void finalizeAST (identifierWithTypeSpec *ptr)
 
void finalizeAST (typeSpec *ptr)
 
void finalizeAST (identifier *ptr)
 
void finalizeAST (basicLiterals *ptr)
 
void finalizeAST (identifierWithDefTemplateArg *ptr)
 
void finalizeAST (identifierWithTemplateArg *ptr)
 
void finalizeAST (subscriptExpr *ptr)
 
void finalizeAST (memberExpr *ptr)
 
void finalizeAST (primary *ptr)
 
void finalizeAST (uniqueExpr *ptr)
 
void finalizeAST (mulExpr *ptr)
 
void finalizeAST (addExpr *ptr)
 
void finalizeAST (shiftExpr *ptr)
 
void finalizeAST (relationalExpr *ptr)
 
void finalizeAST (equalityExpr *ptr)
 
void finalizeAST (andExpr *ptr)
 
void finalizeAST (exclusiveExpr *ptr)
 
void finalizeAST (inclusiveExpr *ptr)
 
void finalizeAST (logicalAndExpr *ptr)
 
void finalizeAST (logicalOrExpr *ptr)
 
void finalizeAST (rExpr *ptr)
 
void finalizeAST (codeBlock *ptr)
 
void finalizeAST (useStmt *ptr)
 
void finalizeAST (funcDefStmt *ptr)
 
void finalizeAST (interfaceDefInner *ptr)
 
void finalizeAST (interfaceDefInnerPair *ptr)
 
void finalizeAST (interfaceDefStmt *ptr)
 
void finalizeAST (structDefInnerPair *ptr)
 
void finalizeAST (structDefInner *ptr)
 
void finalizeAST (structDefStmt *ptr)
 
void finalizeAST (dataStructDefStmt *ptr)
 
void finalizeAST (implInnerPair *ptr)
 
void finalizeAST (implInner *ptr)
 
void finalizeAST (implStmt *ptr)
 
void finalizeAST (letAssignmentPair *ptr)
 
void finalizeAST (letStmt *ptr)
 
void finalizeAST (globalStmt *ptr)
 
void finalizeAST (ifStmt *ptr)
 
void finalizeAST (whileStmt *ptr)
 
void finalizeAST (forStmt *ptr)
 
void finalizeAST (forEachStmt *ptr)
 
void finalizeAST (returnStmt *ptr)
 
void finalizeAST (continueStmt *ptr)
 
void finalizeAST (breakStmt *ptr)
 
void finalizeAST (inCodeBlockStmt *ptr)
 
void finalizeAST (innerMethodDecl *ptr)
 
void finalizeAST (innerMethodDef *ptr)
 
void finalizeAST (constructorDecl *ptr)
 
void finalizeAST (constructorDef *ptr)
 
void finalizeAST (externModuleAccessExpression *ptr)
 
void finalizeAST (hoshiModule *ptr)
 
void finalizeAST (leftExpr *ptr)
 
void finalizeAST (exportDecl *ptr)
 
void finalizeAST (importDecl *ptr)
 
void finalizeAST (subscript *ptr)
 
void finalizeAST (tryCatchStmt *ptr)
 
void finalizeAST (catchParam *ptr)
 
void finalizeAST (throwStmt *ptr)
 
void finalizeAST (dynCastExpression *ptr)
 
void finalizeAST (typeIdExpression *ptr)
 
void finalizeAST (newExpression *ptr)
 
void finalizeAST (abstractExpr *ptr)
 
void finalizeAST (lambdaExpr *ptr)
 
void finalizeAST (unnamedDefinitionArguments *ptr)
 
void finalizeAST (marcoDescriptor *ptr)
 
void finalizeAST (marcoPair *ptr)
 
void finalizeAST (typeAliasStmt *ptr)
 
void finalizeAST (finalizerDecl *ptr)
 
void finalizeAST (finalizerDef *ptr)
 
void finalizeAST (funcExpr *ptr)
 
void finalizeAST (letAssignmentPairLHS *ptr)
 
void finalizeAST (enumerationDefinition *ptr)
 
void finalizeAST (enumerationPair *ptr)
 
void finalizeAST (bracedInitalizerList *ptr)
 
void finalizeAST (yieldStmt *ptr)
 
void finalizeAST (decltypeExpr *ptr)
 
void finalizeAST (conceptStmt *ptr)
 
void finalizeAST (satisfyStmt *ptr)
 
void finalizeAST (satisfyClause *ptr)
 
void finalizeAST (conceptDefinition *ptr)
 
void finalizeAST (importInner *ptr)
 
void formatToken (std::wostream &os, FormatOption option, const lexer::token &token)
 
template<typename T >
void finalizeAST_vec (yoi::vec< T * > &vec)
 
void parse (yoi::basicLiterals *&o, yoi::lexer &lex)
 
void parse (identifier *&o, lexer &lex)
 
void parse (identifierWithTypeSpec *&o, lexer &lex)
 
void parse (defTemplateArgSpec *&o, lexer &lex)
 
void parse (defTemplateArg *&o, lexer &lex)
 
void parse (templateArgSpec *&o, lexer &lex)
 
void parse (templateArg *&o, lexer &lex)
 
void parse (invocationArguments *&o, lexer &lex)
 
void parse (definitionArguments *&o, lexer &lex)
 
void parse (funcTypeSpec *&o, lexer &lex)
 
void parse (typeSpec *&o, lexer &lex)
 
void parse (subscript *&o, lexer &lex)
 
void parse (identifierWithTemplateArg *&o, lexer &lex)
 
void parse (identifierWithDefTemplateArg *&o, lexer &lex)
 
void parse (externModuleAccessExpression *&o, lexer &lex)
 
void parse (subscriptExpr *&o, lexer &lex)
 
void parse (memberExpr *&o, lexer &lex)
 
void parse (newExpression *&o, lexer &lex)
 
void parse (primary *&o, lexer &lex)
 
void parse (uniqueExpr *&o, lexer &lex)
 
void parse (leftExpr *&o, lexer &lex)
 
 PARSE_BINARY_EXPR (mulExpr, leftExpr,(lex.curToken.kind==lexer::token::tokenKind::asterisk||lex.curToken.kind==lexer::token::tokenKind::slash||lex.curToken.kind==lexer::token::tokenKind::percentSign), "expected uniqueExpr after operators while parsing mulExpr") PARSE_BINARY_EXPR(addExpr
 
void parse (unnamedDefinitionArguments *&o, lexer &lex)
 
void parse (abstractExpr *&o, lexer &lex)
 
void parse (bracedInitalizerList *&o, lexer &lex)
 
void parse (mulExpr *&o, lexer &lex)
 
void parse (addExpr *&o, lexer &lex)
 
void parse (shiftExpr *&o, lexer &lex)
 
void parse (relationalExpr *&o, lexer &lex)
 
void parse (equalityExpr *&o, lexer &lex)
 
void parse (andExpr *&o, lexer &lex)
 
void parse (exclusiveExpr *&o, lexer &lex)
 
void parse (inclusiveExpr *&o, lexer &lex)
 
void parse (logicalAndExpr *&o, lexer &lex)
 
void parse (logicalOrExpr *&o, lexer &lex)
 
void parse (rExpr *&o, lexer &lex)
 
void parse (codeBlock *&o, lexer &lex)
 
void parse (useStmt *&o, lexer &lex)
 
void parse (funcDefStmt *&o, lexer &lex)
 
void parse (interfaceDefInnerPair *&o, lexer &lex)
 
void parse (interfaceDefInner *&o, lexer &lex)
 
void parse (interfaceDefStmt *&o, lexer &lex)
 
void parse (structDefInnerPair *&o, lexer &lex)
 
void parse (dataStructDefStmt *&o, lexer &lex)
 
void parse (structDefInner *&o, lexer &lex)
 
void parse (structDefStmt *&o, lexer &lex)
 
void parse (implInnerPair *&o, lexer &lex)
 
void parse (implInner *&o, lexer &lex)
 
void parse (implStmt *&o, lexer &lex)
 
void parse (finalizerDecl *&o, lexer &lex)
 
void parse (finalizerDef *&o, lexer &lex)
 
void parse (letAssignmentPair *&o, lexer &lex)
 
void parse (letAssignmentPairLHS *&o, lexer &lex)
 
void parse (letStmt *&o, lexer &lex)
 
void parse (globalStmt *&o, lexer &lex)
 
void parse (ifStmt::ifBlock &o, lexer &lex)
 
void parse (ifStmt *&o, lexer &lex)
 
void parse (whileStmt *&o, lexer &lex)
 
void parse (forStmt *&o, lexer &lex)
 
void parse (forEachStmt *&o, lexer &lex)
 
void parse (returnStmt *&o, lexer &lex)
 
void parse (continueStmt *&o, lexer &lex)
 
void parse (breakStmt *&o, lexer &lex)
 
void parse (inCodeBlockStmt *&o, lexer &lex)
 
void parse (innerMethodDecl *&o, lexer &lex)
 
void parse (innerMethodDef *&o, lexer &lex)
 
void parse (constructorDecl *&o, lexer &lex)
 
void parse (constructorDef *&o, lexer &lex)
 
void parse (hoshiModule *&o, lexer &lex)
 
void parse (importInner *&o, lexer &lex)
 
void parse (importDecl *&o, lexer &lex)
 
void parse (exportDecl *&o, lexer &lex)
 
void parse (tryCatchStmt *&o, lexer &lex)
 
void parse (throwStmt *&o, lexer &lex)
 
void parse (catchParam *&o, lexer &lex)
 
void parse (typeIdExpression *&o, lexer &lex)
 
void parse (dynCastExpression *&o, lexer &lex)
 
void parse (lambdaExpr *&o, lexer &lex)
 
void parse (funcExpr *&o, lexer &lex)
 
void parse (marcoPair *&o, lexer &lex)
 
void parse (marcoDescriptor *&o, lexer &lex)
 
void parse (typeAliasStmt *&o, lexer &lex)
 
void parse (enumerationDefinition *&o, lexer &lex)
 
void parse (enumerationPair *&o, lexer &lex)
 
void parse (yieldStmt *&o, lexer &lex)
 
void parse (decltypeExpr *&o, lexer &lex)
 
void parse (satisfyStmt *&o, lexer &lex)
 
void parse (conceptStmt *&o, lexer &lex)
 
void parse (conceptDefinition *&o, lexer &lex)
 
void parse (satisfyClause *&o, lexer &lex)
 
AnalysisState mergeStates (const AnalysisState &s1, const AnalysisState &s2)
 
void parseString (std::wistream &input, wstr &value)
 
wstr escapeString (const wstr &value)
 
void set_current_file_path (const std::wstring &path)
 
std::wstring get_line_hint_for_error (const std::wstring &file, yoi::indexT line, yoi::indexT col)
 
void panic (yoi::indexT line, yoi::indexT col, const std::string &msg)
 
void warning (yoi::indexT line, yoi::indexT col, const std::string &msg, const std::string &label)
 
void yoi_assert (bool condition, yoi::indexT line, yoi::indexT col, const std::string &msg)
 Asserts a condition that would be true and throws a runtime_error if it is false.
 
std::wstring string2wstring (const std::string &v)
 
std::string wstring2string (const std::wstring &v)
 
yoi::wstr realpath (const std::wstring &path)
 
std::wstring whereIsHoshiLang ()
 
template<typename T >
std::basic_string< T > trim (const std::basic_string< T > &str)
 
template<typename T >
std::shared_ptr< T > managedPtr (const T &v)
 
template<typename string_t >
void replace_all (string_t &str, const string_t &from, const string_t &to)
 

Variables

 mulExpr
 
thread_local yoi::wstr __current_file_path = L""
 
std::mutex consoleMutex
 
std::map< std::string, ExceptionHandleTypeexception_categories
 

Typedef Documentation

◆ indexT

using indexT = uint64_t

Definition at line 51 of file def.hpp.

◆ vdeci

using vdeci = double

Definition at line 50 of file def.hpp.

◆ vec

template<typename t >
using vec = std::vector<t>

Definition at line 53 of file def.hpp.

◆ wchar

using wchar = wstr::value_type

Definition at line 49 of file def.hpp.

◆ wstr

using wstr = std::wstring

Definition at line 48 of file def.hpp.

Enumeration Type Documentation

◆ ExceptionHandleType

enum class ExceptionHandleType
strong
Enumerator
Suppress 
Warning 
Panic 

Definition at line 57 of file def.hpp.

Function Documentation

◆ escapeString()

wstr escapeString ( const wstr value)

Definition at line 84 of file def.cpp.

Referenced by Formatter::format(), and formatToken().

Here is the caller graph for this function:

◆ finalizeAST() [1/88]

void finalizeAST ( abstractExpr ptr)

Definition at line 1148 of file ast.cpp.

References finalizeAST(), abstractExpr::lhs, and abstractExpr::rhs.

Here is the call graph for this function:

◆ finalizeAST() [2/88]

void finalizeAST ( addExpr ptr)

Definition at line 621 of file ast.cpp.

References finalizeAST(), and addExpr::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [3/88]

void finalizeAST ( andExpr ptr)

Definition at line 645 of file ast.cpp.

References finalizeAST(), and andExpr::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [4/88]

void finalizeAST ( basicLiterals ptr)

Definition at line 547 of file ast.cpp.

◆ finalizeAST() [5/88]

void finalizeAST ( bracedInitalizerList ptr)

Definition at line 1246 of file ast.cpp.

References bracedInitalizerList::exprs, and finalizeAST().

Here is the call graph for this function:

◆ finalizeAST() [6/88]

void finalizeAST ( breakStmt ptr)

Definition at line 881 of file ast.cpp.

◆ finalizeAST() [7/88]

void finalizeAST ( catchParam ptr)

Definition at line 1101 of file ast.cpp.

References catchParam::block, finalizeAST(), catchParam::name, and catchParam::type.

Here is the call graph for this function:

◆ finalizeAST() [8/88]

void finalizeAST ( codeBlock ptr)

Definition at line 680 of file ast.cpp.

References finalizeAST(), and codeBlock::getStmts().

Here is the call graph for this function:

◆ finalizeAST() [9/88]

void finalizeAST ( conceptDefinition ptr)

Definition at line 1289 of file ast.cpp.

References conceptDefinition::algebraParams, conceptDefinition::conceptBlock, and finalizeAST().

Here is the call graph for this function:

◆ finalizeAST() [10/88]

◆ finalizeAST() [11/88]

void finalizeAST ( constructorDecl ptr)

Definition at line 944 of file ast.cpp.

References constructorDecl::args, and finalizeAST().

Here is the call graph for this function:

◆ finalizeAST() [12/88]

void finalizeAST ( constructorDef ptr)

Definition at line 949 of file ast.cpp.

References constructorDef::args, constructorDef::block, and finalizeAST().

Here is the call graph for this function:

◆ finalizeAST() [13/88]

void finalizeAST ( continueStmt ptr)

Definition at line 877 of file ast.cpp.

◆ finalizeAST() [14/88]

void finalizeAST ( dataStructDefStmt ptr)

Definition at line 751 of file ast.cpp.

References finalizeAST(), dataStructDefStmt::id, and dataStructDefStmt::inner.

Here is the call graph for this function:

◆ finalizeAST() [15/88]

void finalizeAST ( decltypeExpr ptr)

Definition at line 1259 of file ast.cpp.

References decltypeExpr::expr, and finalizeAST().

Here is the call graph for this function:

◆ finalizeAST() [16/88]

void finalizeAST ( definitionArguments ptr)

Definition at line 481 of file ast.cpp.

References finalizeAST(), and definitionArguments::get().

Here is the call graph for this function:

◆ finalizeAST() [17/88]

void finalizeAST ( defTemplateArg ptr)

Definition at line 504 of file ast.cpp.

References finalizeAST(), and defTemplateArg::get().

Here is the call graph for this function:

◆ finalizeAST() [18/88]

void finalizeAST ( defTemplateArgSpec ptr)

Definition at line 510 of file ast.cpp.

References finalizeAST(), defTemplateArgSpec::id, and defTemplateArgSpec::satisfyCondition.

Here is the call graph for this function:

◆ finalizeAST() [19/88]

void finalizeAST ( dynCastExpression ptr)

Definition at line 1119 of file ast.cpp.

References dynCastExpression::expr, finalizeAST(), and dynCastExpression::type.

Here is the call graph for this function:

◆ finalizeAST() [20/88]

void finalizeAST ( enumerationDefinition ptr)

Definition at line 1234 of file ast.cpp.

References finalizeAST(), enumerationDefinition::name, and enumerationDefinition::values.

Here is the call graph for this function:

◆ finalizeAST() [21/88]

void finalizeAST ( enumerationPair ptr)

Definition at line 1241 of file ast.cpp.

References finalizeAST(), and enumerationPair::name.

Here is the call graph for this function:

◆ finalizeAST() [22/88]

void finalizeAST ( equalityExpr ptr)

Definition at line 639 of file ast.cpp.

References finalizeAST(), and equalityExpr::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [23/88]

void finalizeAST ( exclusiveExpr ptr)

Definition at line 651 of file ast.cpp.

References finalizeAST(), and exclusiveExpr::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [24/88]

void finalizeAST ( exportDecl ptr)

Definition at line 1045 of file ast.cpp.

References exportDecl::as, finalizeAST(), and exportDecl::from.

Here is the call graph for this function:

◆ finalizeAST() [25/88]

void finalizeAST ( externModuleAccessExpression ptr)

Definition at line 1007 of file ast.cpp.

References finalizeAST(), and externModuleAccessExpression::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [26/88]

void finalizeAST ( finalizerDecl ptr)

Definition at line 1209 of file ast.cpp.

◆ finalizeAST() [27/88]

void finalizeAST ( finalizerDef ptr)

Definition at line 1213 of file ast.cpp.

References finalizerDef::block, and finalizeAST().

Here is the call graph for this function:

◆ finalizeAST() [28/88]

void finalizeAST ( forEachStmt ptr)

Definition at line 864 of file ast.cpp.

References forEachStmt::block, forEachStmt::container, finalizeAST(), and forEachStmt::var.

Here is the call graph for this function:

◆ finalizeAST() [29/88]

void finalizeAST ( forStmt ptr)

Definition at line 856 of file ast.cpp.

References forStmt::afterStmt, forStmt::block, forStmt::cond, finalizeAST(), and forStmt::initStmt.

Here is the call graph for this function:

◆ finalizeAST() [30/88]

void finalizeAST ( funcDefStmt ptr)

Definition at line 691 of file ast.cpp.

References funcDefStmt::args, funcDefStmt::block, finalizeAST(), funcDefStmt::id, and funcDefStmt::resultType.

Here is the call graph for this function:

◆ finalizeAST() [31/88]

void finalizeAST ( funcExpr ptr)

Definition at line 1218 of file ast.cpp.

References funcExpr::args, finalizeAST(), and funcExpr::name.

Here is the call graph for this function:

◆ finalizeAST() [32/88]

void finalizeAST ( funcTypeSpec ptr)

Definition at line 475 of file ast.cpp.

References funcTypeSpec::args, finalizeAST(), and funcTypeSpec::resultType.

Referenced by finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST(), finalizeAST_vec(), parse(), parse(), parse(), parse(), parse(), parse(), parse(), parse(), and compilerContext::~compilerContext().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ finalizeAST() [33/88]

◆ finalizeAST() [34/88]

void finalizeAST ( hoshiModule ptr)

Definition at line 1014 of file ast.cpp.

References finalizeAST(), and hoshiModule::getStmts().

Here is the call graph for this function:

◆ finalizeAST() [35/88]

void finalizeAST ( identifier ptr)

Definition at line 543 of file ast.cpp.

◆ finalizeAST() [36/88]

void finalizeAST ( identifierWithDefTemplateArg ptr)

Definition at line 551 of file ast.cpp.

References identifierWithDefTemplateArg::arg, finalizeAST(), identifierWithDefTemplateArg::hasDefTemplateArg(), and identifierWithDefTemplateArg::id.

Here is the call graph for this function:

◆ finalizeAST() [37/88]

void finalizeAST ( identifierWithTemplateArg ptr)

Definition at line 558 of file ast.cpp.

References identifierWithTemplateArg::arg, finalizeAST(), identifierWithTemplateArg::hasTemplateArg(), and identifierWithTemplateArg::id.

Here is the call graph for this function:

◆ finalizeAST() [38/88]

void finalizeAST ( identifierWithTypeSpec ptr)

Definition at line 517 of file ast.cpp.

References finalizeAST(), identifierWithTypeSpec::id, and identifierWithTypeSpec::spec.

Here is the call graph for this function:

◆ finalizeAST() [39/88]

void finalizeAST ( ifStmt ptr)

Definition at line 838 of file ast.cpp.

References ifStmt::ifBlock::block, ifStmt::ifBlock::cond, ifStmt::elifB, ifStmt::elseB, finalizeAST(), and ifStmt::ifB.

Here is the call graph for this function:

◆ finalizeAST() [40/88]

void finalizeAST ( implInner ptr)

Definition at line 768 of file ast.cpp.

References finalizeAST(), and implInner::getInner().

Here is the call graph for this function:

◆ finalizeAST() [41/88]

void finalizeAST ( implInnerPair ptr)

Definition at line 757 of file ast.cpp.

References implInnerPair::con, finalizeAST(), implInnerPair::finalizer, implInnerPair::isConstructor(), implInnerPair::isFinalizer(), and implInnerPair::met.

Here is the call graph for this function:

◆ finalizeAST() [42/88]

void finalizeAST ( implStmt ptr)

Definition at line 774 of file ast.cpp.

References finalizeAST(), implStmt::inner, implStmt::interfaceName, implStmt::isImplForStmt(), and implStmt::structName.

Here is the call graph for this function:

◆ finalizeAST() [43/88]

void finalizeAST ( importDecl ptr)

Definition at line 1055 of file ast.cpp.

References finalizeAST(), and importDecl::inner.

Here is the call graph for this function:

◆ finalizeAST() [44/88]

void finalizeAST ( importInner *  ptr)

◆ finalizeAST() [45/88]

void finalizeAST ( inclusiveExpr ptr)

Definition at line 657 of file ast.cpp.

References finalizeAST(), and inclusiveExpr::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [46/88]

◆ finalizeAST() [47/88]

void finalizeAST ( innerMethodDecl ptr)

Definition at line 929 of file ast.cpp.

References innerMethodDecl::args, finalizeAST(), innerMethodDecl::name, and innerMethodDecl::resultType.

Here is the call graph for this function:

◆ finalizeAST() [48/88]

void finalizeAST ( innerMethodDef ptr)

Definition at line 936 of file ast.cpp.

References innerMethodDef::args, innerMethodDef::block, finalizeAST(), innerMethodDef::name, and innerMethodDef::resultType.

Here is the call graph for this function:

◆ finalizeAST() [49/88]

void finalizeAST ( interfaceDefInner ptr)

Definition at line 699 of file ast.cpp.

References finalizeAST(), and interfaceDefInner::getInner().

Here is the call graph for this function:

◆ finalizeAST() [50/88]

void finalizeAST ( interfaceDefInnerPair ptr)

Definition at line 706 of file ast.cpp.

References finalizeAST(), interfaceDefInnerPair::isMethod(), interfaceDefInnerPair::method, and interfaceDefInnerPair::var.

Here is the call graph for this function:

◆ finalizeAST() [51/88]

void finalizeAST ( interfaceDefStmt ptr)

Definition at line 715 of file ast.cpp.

References finalizeAST(), interfaceDefStmt::id, and interfaceDefStmt::inner.

Here is the call graph for this function:

◆ finalizeAST() [52/88]

void finalizeAST ( invocationArguments ptr)

Definition at line 487 of file ast.cpp.

References finalizeAST(), and invocationArguments::get().

Here is the call graph for this function:

◆ finalizeAST() [53/88]

void finalizeAST ( lambdaExpr ptr)

Definition at line 1155 of file ast.cpp.

References lambdaExpr::args, lambdaExpr::block, lambdaExpr::captures, finalizeAST(), and lambdaExpr::resultType.

Here is the call graph for this function:

◆ finalizeAST() [54/88]

void finalizeAST ( leftExpr ptr)

Definition at line 1021 of file ast.cpp.

References finalizeAST(), leftExpr::hasRhs(), leftExpr::lhs, and leftExpr::rhs.

Here is the call graph for this function:

◆ finalizeAST() [55/88]

void finalizeAST ( letAssignmentPair ptr)

Definition at line 782 of file ast.cpp.

References finalizeAST(), letAssignmentPair::lhs, and letAssignmentPair::rhs.

Here is the call graph for this function:

◆ finalizeAST() [56/88]

void finalizeAST ( letAssignmentPairLHS ptr)

Definition at line 1224 of file ast.cpp.

References finalizeAST(), letAssignmentPairLHS::id, letAssignmentPairLHS::identifier, letAssignmentPairLHS::kind, and letAssignmentPairLHS::list.

Here is the call graph for this function:

◆ finalizeAST() [57/88]

void finalizeAST ( letStmt ptr)

Definition at line 788 of file ast.cpp.

References finalizeAST(), and letStmt::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [58/88]

void finalizeAST ( logicalAndExpr ptr)

Definition at line 663 of file ast.cpp.

References finalizeAST(), and logicalAndExpr::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [59/88]

void finalizeAST ( logicalOrExpr ptr)

Definition at line 669 of file ast.cpp.

References finalizeAST(), and logicalOrExpr::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [60/88]

void finalizeAST ( marcoDescriptor ptr)

Definition at line 1173 of file ast.cpp.

References marcoDescriptor::pairs.

◆ finalizeAST() [61/88]

void finalizeAST ( marcoPair ptr)

Definition at line 1180 of file ast.cpp.

◆ finalizeAST() [62/88]

void finalizeAST ( memberExpr ptr)

Definition at line 572 of file ast.cpp.

References finalizeAST(), and memberExpr::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [63/88]

void finalizeAST ( mulExpr ptr)

Definition at line 615 of file ast.cpp.

References finalizeAST(), and mulExpr::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [64/88]

void finalizeAST ( newExpression ptr)

Definition at line 1133 of file ast.cpp.

References newExpression::args, finalizeAST(), and newExpression::type.

Here is the call graph for this function:

◆ finalizeAST() [65/88]

◆ finalizeAST() [66/88]

void finalizeAST ( relationalExpr ptr)

Definition at line 633 of file ast.cpp.

References finalizeAST(), and relationalExpr::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [67/88]

void finalizeAST ( returnStmt ptr)

Definition at line 871 of file ast.cpp.

References finalizeAST(), returnStmt::hasValue(), and returnStmt::value.

Here is the call graph for this function:

◆ finalizeAST() [68/88]

void finalizeAST ( rExpr ptr)

Definition at line 675 of file ast.cpp.

References rExpr::expr, and finalizeAST().

Here is the call graph for this function:

◆ finalizeAST() [69/88]

void finalizeAST ( satisfyClause ptr)

Definition at line 1283 of file ast.cpp.

References satisfyClause::emaes, and finalizeAST().

Here is the call graph for this function:

◆ finalizeAST() [70/88]

void finalizeAST ( satisfyStmt ptr)

Definition at line 1278 of file ast.cpp.

References satisfyStmt::emae, and finalizeAST().

Here is the call graph for this function:

◆ finalizeAST() [71/88]

void finalizeAST ( shiftExpr ptr)

Definition at line 627 of file ast.cpp.

References finalizeAST(), and shiftExpr::getTerms().

Here is the call graph for this function:

◆ finalizeAST() [72/88]

void finalizeAST ( structDefInner ptr)

Definition at line 739 of file ast.cpp.

References finalizeAST(), and structDefInner::getInner().

Here is the call graph for this function:

◆ finalizeAST() [73/88]

void finalizeAST ( structDefInnerPair ptr)

Definition at line 721 of file ast.cpp.

References structDefInnerPair::con, finalizeAST(), structDefInnerPair::finalizer, structDefInnerPair::kind, structDefInnerPair::method, and structDefInnerPair::var.

Here is the call graph for this function:

◆ finalizeAST() [74/88]

void finalizeAST ( structDefStmt ptr)

Definition at line 745 of file ast.cpp.

References finalizeAST(), structDefStmt::id, and structDefStmt::inner.

Here is the call graph for this function:

◆ finalizeAST() [75/88]

void finalizeAST ( subscript ptr)

Definition at line 1062 of file ast.cpp.

References subscript::args, subscript::expr, finalizeAST(), subscript::isInvocation(), and subscript::isSubscript().

Here is the call graph for this function:

◆ finalizeAST() [76/88]

void finalizeAST ( subscriptExpr ptr)

Definition at line 565 of file ast.cpp.

References finalizeAST(), subscriptExpr::id, and subscriptExpr::subscriptVal.

Here is the call graph for this function:

◆ finalizeAST() [77/88]

void finalizeAST ( templateArg ptr)

Definition at line 493 of file ast.cpp.

References finalizeAST(), and templateArg::get().

Here is the call graph for this function:

◆ finalizeAST() [78/88]

void finalizeAST ( templateArgSpec ptr)

Definition at line 499 of file ast.cpp.

References finalizeAST(), and templateArgSpec::spec.

Here is the call graph for this function:

◆ finalizeAST() [79/88]

void finalizeAST ( throwStmt ptr)

Definition at line 1114 of file ast.cpp.

References throwStmt::expr, and finalizeAST().

Here is the call graph for this function:

◆ finalizeAST() [80/88]

void finalizeAST ( tryCatchStmt ptr)

Definition at line 1087 of file ast.cpp.

References tryCatchStmt::catchParams, finalizeAST(), tryCatchStmt::finallyBlock, and tryCatchStmt::tryBlock.

Here is the call graph for this function:

◆ finalizeAST() [81/88]

void finalizeAST ( typeAliasStmt ptr)

Definition at line 1184 of file ast.cpp.

References typeAliasStmt::lhs, and typeAliasStmt::rhs.

◆ finalizeAST() [82/88]

void finalizeAST ( typeIdExpression ptr)

Definition at line 1125 of file ast.cpp.

References typeIdExpression::expr, finalizeAST(), and typeIdExpression::type.

Here is the call graph for this function:

◆ finalizeAST() [83/88]

◆ finalizeAST() [84/88]

void finalizeAST ( uniqueExpr ptr)

Definition at line 610 of file ast.cpp.

References finalizeAST(), and uniqueExpr::lhs.

Here is the call graph for this function:

◆ finalizeAST() [85/88]

void finalizeAST ( unnamedDefinitionArguments ptr)

Definition at line 1166 of file ast.cpp.

References finalizeAST(), and unnamedDefinitionArguments::types.

Here is the call graph for this function:

◆ finalizeAST() [86/88]

void finalizeAST ( useStmt ptr)

Definition at line 686 of file ast.cpp.

References finalizeAST(), and useStmt::name.

Here is the call graph for this function:

◆ finalizeAST() [87/88]

void finalizeAST ( whileStmt ptr)

Definition at line 850 of file ast.cpp.

References whileStmt::block, whileStmt::cond, and finalizeAST().

Here is the call graph for this function:

◆ finalizeAST() [88/88]

void finalizeAST ( yieldStmt ptr)

Definition at line 1252 of file ast.cpp.

References yieldStmt::expr, and finalizeAST().

Here is the call graph for this function:

◆ finalizeAST_vec()

template<typename T >
void finalizeAST_vec ( yoi::vec< T * > &  vec)

Definition at line 18 of file parser.cpp.

References finalizeAST().

Referenced by parse(), parse(), parse(), parse(), parse(), and parse().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ formatToken()

void formatToken ( std::wostream &  os,
FormatOption  option,
const lexer::token token 
)

Definition at line 14 of file formatter.cpp.

References lexer::token::additionAssignment, lexer::token::assignSign, lexer::token::asterisk, lexer::token::basicVal, lexer::token::binaryAnd, lexer::token::binaryNot, lexer::token::binaryOr, lexer::token::binaryShiftLeft, lexer::token::binaryShiftRight, lexer::token::binaryXor, lexer::token::boolean, lexer::token::character, lexer::token::colon, lexer::token::comma, lexer::token::decimal, lexer::token::decrementSign, lexer::token::directAssignSign, lexer::token::divisionAssignment, lexer::token::dot, lexer::token::eof, lexer::token::equal, escapeString(), lexer::token::greaterEqual, lexer::token::greaterThan, lexer::token::identifier, lexer::token::incrementSign, lexer::token::integer, lexer::token::kAlias, lexer::token::kAlwaysInline, lexer::token::kAs, lexer::token::kBreak, lexer::token::kCallable, lexer::token::kCast, lexer::token::kCatch, lexer::token::kConcept, lexer::token::kConstructor, lexer::token::kContinue, lexer::token::kDataField, lexer::token::kDataStruct, lexer::token::kDecltype, lexer::token::kDynCast, lexer::token::kElif, lexer::token::kElse, lexer::token::kEnum, lexer::token::kExport, lexer::token::kFinalizer, lexer::token::kFinally, lexer::token::kFor, lexer::token::kForEach, lexer::token::kFrom, lexer::token::kFunc, lexer::token::kGenerator, lexer::token::kIf, lexer::token::kImpl, lexer::token::kImport, lexer::token::kIn, lexer::token::kind, lexer::token::kInterface, lexer::token::kInterfaceOf, lexer::token::kIntrinsic, lexer::token::kLet, lexer::token::kNew, lexer::token::kNoFFI, lexer::token::kNull, lexer::token::kReturn, lexer::token::kSatisfy, lexer::token::kStatic, lexer::token::kStruct, lexer::token::kThreeDots, lexer::token::kThrow, lexer::token::kTry, lexer::token::kTypeId, lexer::token::kUse, lexer::token::kWhile, lexer::token::kYield, lexer::token::leftBraces, lexer::token::leftBracket, lexer::token::leftParentheses, lexer::token::lessEqual, lexer::token::lessThan, lexer::token::logicAnd, lexer::token::logicNot, lexer::token::logicOr, lexer::token::minus, lexer::token::multiplicationAssignment, lexer::token::notEqual, lexer::token::percentSign, lexer::token::plus, lexer::token::reminderAssignment, lexer::token::rightBraces, lexer::token::rightBracket, lexer::token::rightParentheses, lexer::token::semicolon, lexer::token::sharp, lexer::token::shortInt, lexer::token::slash, lexer::token::string, lexer::token::strVal, lexer::token::subtractionAssignment, lexer::token::toSign, lexer::token::unknown, lexer::token::unsignedInt, lexer::token::vBasicValue::vBool, lexer::token::vBasicValue::vDeci, lexer::token::vBasicValue::vInt, lexer::token::vBasicValue::vShort, and lexer::token::vBasicValue::vUint.

Referenced by Formatter::format(), Formatter::format(), Formatter::format(), Formatter::format(), Formatter::format(), Formatter::format(), and Formatter::format().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_line_hint_for_error()

std::wstring get_line_hint_for_error ( const std::wstring &  file,
yoi::indexT  line,
yoi::indexT  col 
)

Definition at line 117 of file def.cpp.

References string2wstring(), and wstring2string().

Referenced by panic(), and warning().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ managedPtr()

template<typename T >
std::shared_ptr< T > managedPtr ( const T &  v)

Definition at line 324 of file def.hpp.

Referenced by LLVMCodegen::actualizeInterfaceObject(), IRFunctionOptimizer::analyzeBlockForNullable(), IRFunctionOptimizer::analyzeBlockForRaw(), IRBuilder::basicCast(), IRBuilder::bindElementsOp(), visitor::canCastTo(), visitor::checkConceptSatisfaction(), IRBuilder::constructInterfaceImplOp(), LLVMCodegen::createArrayObject(), visitor::createCallableImplementationForFunction(), visitor::createCallableImplementationForLambda(), visitor::createCallableInterface(), LLVMCodegen::createDynamicArrayObject(), LLVMCodegen::createGeneratorContext(), visitor::createLambdaUnnamedStruct(), visitor::emitBasicCastInBasicArithOpByLhsAndRhs(), LLVMCodegen::ensureObject(), LLVMCodegen::generateArrayGCFunctionImplementations(), LLVMCodegen::generateBasicTypeDeclarations(), LLVMCodegen::generateFunction(), LLVMCodegen::generateInstruction(), visitor::generateNullInterfaceImplementation(), LLVMCodegen::generateRTTIDeclaration(), compilerContext::getBoolObjectType(), compilerContext::getCharObjectType(), compilerContext::getDeciObjectType(), LLVMCodegen::getDIType(), LLVMCodegen::getGcFunction(), visitor::getGeneratorContext(), compilerContext::getIntObjectType(), compilerContext::getShortObjectType(), compilerContext::getStrObjectType(), visitor::getTemplateArgs(), compilerContext::getUnsignedObjectType(), LLVMCodegen::handleBinaryOp(), LLVMCodegen::handleComparison(), LLVMCodegen::handleForeignTypeConv(), LLVMCodegen::handleIntrinsicCall(), visitor::handleSubscript(), BuiltinModuleBuilder::initializeSharedObjects(), IRBuilder::invokeImportedOp(), IRLinker::linkDataStructs(), LLVMCodegen::loadArrayElement(), IRBuilder::newArrayOp(), IRBuilder::newDataStructOp(), IRBuilder::newDynamicArrayOp(), IRBuilder::newStructOp(), visitor::parseTemplateArgs(), visitor::parseTypeSpec(), IRLinker::patchType(), IROptimizer::performBaseOptimization(), IROptimizer::performInterfaceWrapperPass(), IRFunctionOptimizer::performNullableCheck(), IRFunctionOptimizer::performParamBorrowCheck(), IRFunctionOptimizer::performRawCheck(), IROptimizer::performStructNullablePass(), IRBuilder::pointerCastOp(), IRBuilder::pushOp(), visitor::resolveOverloadExtern(), visitor::resolveOverloadInterface(), visitor::setupTemporaryConceptEvaluationEnvironment(), visitor::specializeFunctionTemplate(), visitor::specializeInterfaceImplementation(), visitor::specializeInterfaceTemplate(), visitor::specializeStructMethodDeclaration(), visitor::specializeStructMethodDefinition(), visitor::specializeStructMethodTemplate(), visitor::specializeStructTemplate(), LLVMCodegen::storeArrayElement(), visitor::tryCastTo(), IRBuilder::typeIdOp(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visitExtern(), LLVMCodegen::wrapInterfaceObjectIfRegressed(), IRBuildConfig::Builder::yield(), IRFunctionDefinition::Builder::yield(), and LLVMCodegen::yoiTypeToLLVMType().

Here is the caller graph for this function:

◆ mergeStates()

◆ panic()

void panic ( yoi::indexT  line,
yoi::indexT  col,
const std::string &  msg 
)

Definition at line 131 of file def.cpp.

References __current_file_path, get_line_hint_for_error(), and wstring2string().

Referenced by IRFunctionOptimizer::add(), IRFunctionOptimizer::analyzeBlockForRaw(), IRBuilder::arithmeticOp(), IRBuilder::basicCast(), IRFunctionOptimizer::bitwiseAnd(), IRFunctionOptimizer::bitwiseNot(), IRFunctionOptimizer::bitwiseOr(), IRFunctionOptimizer::bitwiseShiftLeft(), IRFunctionOptimizer::bitwiseShiftRight(), IRFunctionOptimizer::bitwiseXor(), IROptimizer::buildCallGraph(), visitor::checkMarcoSatisfaction(), IRFunctionOptimizer::controlFlowOptimization(), IRLinker::createEntryFunction(), IRFunctionOptimizer::div(), LLVMCodegen::ValueStackWithPhi::enterNode(), LLVMCodegen::ValueStackWithPhi::enterNode(), IRFunctionOptimizer::equal(), visitor::evaluateConstraint(), visitor::extractTemplateParamsFromTypeArgs(), LLVMCodegen::generateFunction(), LLVMCodegen::generateInstruction(), LLVMCodegen::generateTargetObjectCode(), LLVMCodegen::getArrayLLVMType(), lexer::getCh(), LLVMCodegen::getDIType(), visitor::getTypeSpecUniqueNameStr(), IRFunctionOptimizer::greaterThan(), IRFunctionOptimizer::greaterThanOrEqual(), LLVMCodegen::handleBinaryOp(), LLVMCodegen::handleComparison(), LLVMCodegen::handleIntrinsicCall(), IRFunctionOptimizer::lessThan(), IRFunctionOptimizer::lessThanOrEqual(), LLVMCodegen::loadArrayElement(), mergeStates(), IRFunctionOptimizer::mergeStatesForInterfaceAllocationReduction(), IRFunctionOptimizer::mergeStatesForNullable(), IRFunctionOptimizer::mergeStatesForRaw(), IRFunctionOptimizer::mod(), IRFunctionOptimizer::mul(), IRFunctionOptimizer::negate(), IRBuilder::newArrayOp(), IRBuilder::newDynamicArrayOp(), IRFunctionOptimizer::notEqual(), lexer::operatorStart(), parse(), parse(), parse(), parse(), parse(), parse(), parse(), parse(), parse(), parse(), parse(), parse(), parse(), visitor::parseInterfaceName(), visitor::parseTypeSpec(), visitor::parseTypeSpec(), visitor::parseTypeSpec(), visitor::parseTypeSpecExtern(), visitor::parseTypeSpecExtern(), IRBuilder::pushOp(), lexer::scan(), visitor::specializeFunctionTemplate(), visitor::specializeInterfaceImplementation(), visitor::specializeStructMethodDefinition(), visitor::specializeStructMethodTemplate(), IRBuilder::storeOp(), lexer::strStart(), IRFunctionOptimizer::sub(), visitor::tryCastTo(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visitExtern(), visitor::visitExtern(), visitor::visitExtern(), warning(), yoi_assert(), and LLVMCodegen::yoiTypeToLLVMType().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse() [1/89]

void parse ( abstractExpr *&  o,
lexer lex 
)

◆ parse() [2/89]

void parse ( addExpr *&  o,
lexer lex 
)

◆ parse() [3/89]

void parse ( andExpr *&  o,
lexer lex 
)

◆ parse() [4/89]

void parse ( bracedInitalizerList *&  o,
lexer lex 
)

◆ parse() [5/89]

void parse ( breakStmt *&  o,
lexer lex 
)

◆ parse() [6/89]

void parse ( catchParam *&  o,
lexer lex 
)

◆ parse() [7/89]

void parse ( codeBlock *&  o,
lexer lex 
)

◆ parse() [8/89]

void parse ( conceptDefinition *&  o,
lexer lex 
)

◆ parse() [9/89]

void parse ( conceptStmt *&  o,
lexer lex 
)

◆ parse() [10/89]

void parse ( constructorDecl *&  o,
lexer lex 
)

◆ parse() [11/89]

void parse ( constructorDef *&  o,
lexer lex 
)

◆ parse() [12/89]

void parse ( continueStmt *&  o,
lexer lex 
)

◆ parse() [13/89]

void parse ( dataStructDefStmt *&  o,
lexer lex 
)

◆ parse() [14/89]

void parse ( decltypeExpr *&  o,
lexer lex 
)

◆ parse() [15/89]

void parse ( definitionArguments *&  o,
lexer lex 
)

◆ parse() [16/89]

◆ parse() [17/89]

void parse ( defTemplateArgSpec *&  o,
lexer lex 
)

Definition at line 88 of file parser.cpp.

References lexer::col, lexer::curToken, finalizeAST(), lexer::token::kind, lexer::token::kSatisfy, lexer::line, panic(), and parse().

Here is the call graph for this function:

◆ parse() [18/89]

void parse ( dynCastExpression *&  o,
lexer lex 
)

◆ parse() [19/89]

void parse ( enumerationDefinition *&  o,
lexer lex 
)

◆ parse() [20/89]

void parse ( enumerationPair *&  o,
lexer lex 
)

◆ parse() [21/89]

void parse ( equalityExpr *&  o,
lexer lex 
)

◆ parse() [22/89]

void parse ( exclusiveExpr *&  o,
lexer lex 
)

◆ parse() [23/89]

void parse ( exportDecl *&  o,
lexer lex 
)

◆ parse() [24/89]

void parse ( externModuleAccessExpression *&  o,
lexer lex 
)

◆ parse() [25/89]

void parse ( finalizerDecl *&  o,
lexer lex 
)

◆ parse() [26/89]

void parse ( finalizerDef *&  o,
lexer lex 
)

◆ parse() [27/89]

void parse ( forEachStmt *&  o,
lexer lex 
)

◆ parse() [28/89]

void parse ( forStmt *&  o,
lexer lex 
)

◆ parse() [29/89]

void parse ( funcDefStmt *&  o,
lexer lex 
)

◆ parse() [30/89]

void parse ( funcExpr *&  o,
lexer lex 
)

◆ parse() [31/89]

void parse ( funcTypeSpec *&  o,
lexer lex 
)

Definition at line 285 of file parser.cpp.

References lexer::col, lexer::token::colon, lexer::curToken, finalizeAST(), lexer::token::kFunc, lexer::token::kind, lexer::line, panic(), parse(), and lexer::scan().

Here is the call graph for this function:

◆ parse() [32/89]

void parse ( globalStmt *&  o,
lexer lex 
)

◆ parse() [33/89]

void parse ( hoshiModule *&  o,
lexer lex 
)

◆ parse() [34/89]

void parse ( identifier *&  o,
lexer lex 
)

Definition at line 44 of file parser.cpp.

References lexer::curToken, lexer::token::identifier, lexer::token::kind, and lexer::scan().

Here is the call graph for this function:

◆ parse() [35/89]

void parse ( identifierWithDefTemplateArg *&  o,
lexer lex 
)

Definition at line 470 of file parser.cpp.

References identifierWithDefTemplateArg::arg, lexer::curToken, and parse().

Here is the call graph for this function:

◆ parse() [36/89]

void parse ( identifierWithTemplateArg *&  o,
lexer lex 
)

Definition at line 450 of file parser.cpp.

References identifierWithTemplateArg::arg, lexer::curToken, and parse().

Here is the call graph for this function:

◆ parse() [37/89]

void parse ( identifierWithTypeSpec *&  o,
lexer lex 
)

Definition at line 53 of file parser.cpp.

References lexer::token::colon, lexer::curToken, lexer::dropState(), finalizeAST(), lexer::token::kind, parse(), lexer::returnState(), lexer::saveState(), and lexer::scan().

Here is the call graph for this function:

◆ parse() [38/89]

void parse ( ifStmt *&  o,
lexer lex 
)

◆ parse() [39/89]

void parse ( ifStmt::ifBlock o,
lexer lex 
)

◆ parse() [40/89]

void parse ( implInner *&  o,
lexer lex 
)

◆ parse() [41/89]

void parse ( implInnerPair *&  o,
lexer lex 
)

◆ parse() [42/89]

void parse ( implStmt *&  o,
lexer lex 
)

◆ parse() [43/89]

void parse ( importDecl *&  o,
lexer lex 
)

◆ parse() [44/89]

void parse ( importInner *&  o,
lexer lex 
)

◆ parse() [45/89]

void parse ( inclusiveExpr *&  o,
lexer lex 
)

◆ parse() [46/89]

void parse ( inCodeBlockStmt *&  o,
lexer lex 
)

◆ parse() [47/89]

void parse ( innerMethodDecl *&  o,
lexer lex 
)

◆ parse() [48/89]

void parse ( innerMethodDef *&  o,
lexer lex 
)

◆ parse() [49/89]

void parse ( interfaceDefInner *&  o,
lexer lex 
)

◆ parse() [50/89]

void parse ( interfaceDefInnerPair *&  o,
lexer lex 
)

◆ parse() [51/89]

void parse ( interfaceDefStmt *&  o,
lexer lex 
)

◆ parse() [52/89]

void parse ( invocationArguments *&  o,
lexer lex 
)

◆ parse() [53/89]

void parse ( lambdaExpr *&  o,
lexer lex 
)

◆ parse() [54/89]

◆ parse() [55/89]

void parse ( letAssignmentPair *&  o,
lexer lex 
)

◆ parse() [56/89]

void parse ( letAssignmentPairLHS *&  o,
lexer lex 
)

◆ parse() [57/89]

void parse ( letStmt *&  o,
lexer lex 
)

◆ parse() [58/89]

void parse ( logicalAndExpr *&  o,
lexer lex 
)

◆ parse() [59/89]

void parse ( logicalOrExpr *&  o,
lexer lex 
)

◆ parse() [60/89]

void parse ( marcoDescriptor *&  o,
lexer lex 
)

◆ parse() [61/89]

void parse ( marcoPair *&  o,
lexer lex 
)

◆ parse() [62/89]

void parse ( memberExpr *&  o,
lexer lex 
)

Definition at line 547 of file parser.cpp.

References lexer::col, lexer::curToken, lexer::token::dot, finalizeAST_vec(), lexer::token::kind, lexer::line, panic(), parse(), and lexer::scan().

Here is the call graph for this function:

◆ parse() [63/89]

void parse ( mulExpr *&  o,
lexer lex 
)

◆ parse() [64/89]

◆ parse() [65/89]

◆ parse() [66/89]

void parse ( relationalExpr *&  o,
lexer lex 
)

◆ parse() [67/89]

void parse ( returnStmt *&  o,
lexer lex 
)

◆ parse() [68/89]

void parse ( rExpr *&  o,
lexer lex 
)

◆ parse() [69/89]

void parse ( satisfyClause *&  o,
lexer lex 
)

◆ parse() [70/89]

void parse ( satisfyStmt *&  o,
lexer lex 
)

◆ parse() [71/89]

void parse ( shiftExpr *&  o,
lexer lex 
)

◆ parse() [72/89]

void parse ( structDefInner *&  o,
lexer lex 
)

◆ parse() [73/89]

void parse ( structDefInnerPair *&  o,
lexer lex 
)

◆ parse() [74/89]

void parse ( structDefStmt *&  o,
lexer lex 
)

◆ parse() [75/89]

◆ parse() [76/89]

void parse ( subscriptExpr *&  o,
lexer lex 
)

Definition at line 528 of file parser.cpp.

References lexer::curToken, and parse().

Here is the call graph for this function:

◆ parse() [77/89]

◆ parse() [78/89]

void parse ( templateArgSpec *&  o,
lexer lex 
)

Definition at line 157 of file parser.cpp.

References lexer::curToken, and parse().

Here is the call graph for this function:

◆ parse() [79/89]

void parse ( throwStmt *&  o,
lexer lex 
)

◆ parse() [80/89]

void parse ( tryCatchStmt *&  o,
lexer lex 
)

◆ parse() [81/89]

void parse ( typeAliasStmt *&  o,
lexer lex 
)

◆ parse() [82/89]

void parse ( typeIdExpression *&  o,
lexer lex 
)

◆ parse() [83/89]

◆ parse() [84/89]

◆ parse() [85/89]

void parse ( unnamedDefinitionArguments *&  o,
lexer lex 
)

◆ parse() [86/89]

void parse ( useStmt *&  o,
lexer lex 
)

◆ parse() [87/89]

void parse ( whileStmt *&  o,
lexer lex 
)

◆ parse() [88/89]

void parse ( yieldStmt *&  o,
lexer lex 
)

◆ parse() [89/89]

◆ PARSE_BINARY_EXPR()

PARSE_BINARY_EXPR ( mulExpr  ,
leftExpr  ,
(lex.curToken.kind==lexer::token::tokenKind::asterisk||lex.curToken.kind==lexer::token::tokenKind::slash|| lex.curToken.kind==lexer::token::tokenKind::percentSign ,
"expected uniqueExpr after operators while parsing mulExpr"   
)

◆ parseString()

void parseString ( std::wistream &  input,
wstr value 
)

Definition at line 25 of file def.cpp.

Referenced by lexer::strStart().

Here is the caller graph for this function:

◆ realpath()

yoi::wstr realpath ( const std::wstring &  path)

Definition at line 190 of file def.cpp.

References string2wstring(), and wstring2string().

Referenced by compilerContext::compileModule(), main(), and visitor::visit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ replace_all()

template<typename string_t >
void replace_all ( string_t &  str,
const string_t &  from,
const string_t &  to 
)

Definition at line 368 of file def.hpp.

Referenced by ccObjectLinker::link(), and clObjectLinker::link().

Here is the caller graph for this function:

◆ set_current_file_path()

◆ string2wstring()

◆ trim()

template<typename T >
std::basic_string< T > trim ( const std::basic_string< T > &  str)

Definition at line 70 of file def.hpp.

Referenced by Formatter::printComments().

Here is the caller graph for this function:

◆ warning()

void warning ( yoi::indexT  line,
yoi::indexT  col,
const std::string &  msg,
const std::string &  label 
)

◆ whereIsHoshiLang()

std::wstring whereIsHoshiLang ( )

Definition at line 200 of file def.cpp.

References string2wstring().

Referenced by ObjectLinker::defaultAdditionalLinkingFiles(), and main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ wstring2string()

std::string wstring2string ( const std::wstring &  v)

Definition at line 184 of file def.cpp.

References utf8Unicode::unicodeToUtf8().

Referenced by IRFunctionOptimizer::analyzeBlockForNullable(), IRBuilder::arithmeticOp(), visitor::checkMarcoSatisfaction(), compilerContext::compileModule(), visitor::constructDataStruct(), IRFunctionOptimizer::controlFlowOptimization(), LLVMCodegen::generate(), LLVMCodegen::generateArrayGCFunctionDeclarations(), LLVMCodegen::generateArrayGCFunctionImplementations(), LLVMCodegen::generateBasicTypeDeclarations(), LLVMCodegen::generateBasicTypeImplementations(), LLVMCodegen::generateDataStructShallowDeclarations(), LLVMCodegen::generateDescription(), LLVMCodegen::generateExportFunctionDecls(), LLVMCodegen::generateForeignStructTypes(), LLVMCodegen::generateFunction(), LLVMCodegen::generateFunctionDeclarations(), LLVMCodegen::generateGlobalDeclarations(), LLVMCodegen::generateImportFunctionDeclarations(), LLVMCodegen::generateImportFunctionImplementations(), LLVMCodegen::generateInstruction(), LLVMCodegen::generateRTTIImplmentation(), LLVMCodegen::generateStructShallowDeclarations(), LLVMCodegen::generateTargetObjectCode(), get_line_hint_for_error(), LLVMCodegen::getArrayLLVMType(), LLVMCodegen::getDIType(), visitor::getExternEntry(), LLVMCodegen::getGcFunction(), visitor::getIncompleteType(), visitor::handleBinaryOperatorOverload(), visitor::handleUnaryOperatorOverload(), ccObjectLinker::link(), clObjectLinker::link(), IRVariableTable::lookup(), IRStructDefinition::lookupName(), main(), IRBuilder::newArrayOp(), IRBuilder::newDynamicArrayOp(), panic(), visitor::parseInterfaceName(), visitor::parseTypeSpec(), visitor::parseTypeSpec(), visitor::parseTypeSpecExtern(), visitor::parseTypeSpecExtern(), realpath(), IRFunctionOptimizer::reduceEmptyCodeBlock(), CodegenObjectCache::register_entry_unlocked(), visitor::resolveOverloadExtern(), visitor::specializeFunctionTemplate(), visitor::specializeInterfaceImplementation(), visitor::specializeInterfaceTemplate(), visitor::specializeStructMethodDefinition(), visitor::specializeStructMethodTemplate(), visitor::specializeStructTemplate(), visitor::tryCastTo(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visitExtern(), visitor::visitExtern(), warning(), yoi::serialization::write(), and LLVMCodegen::yoiTypeToLLVMType().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ yoi_assert()

void yoi_assert ( bool  condition,
yoi::indexT  line,
yoi::indexT  col,
const std::string &  msg 
)

Asserts a condition that would be true and throws a runtime_error if it is false.

Parameters
conditionthe condition to be asserted.
linethe line number in source code.
colthe column number in source code.
msgthe error message to be displayed.

Definition at line 171 of file def.cpp.

References panic().

Referenced by LLVMCodegen::actualizeInterfaceObject(), IRBuilder::arithmeticOp(), IRBuilder::basicCast(), IRBuilder::breakOp(), visitor::checkMarcoSatisfaction(), visitor::constructDataStruct(), IRBuilder::continueOp(), LLVMCodegen::createArrayObject(), LLVMCodegen::createDynamicArrayObject(), lexer::digitStart(), IRBuilder::discardState(), LLVMCodegen::ValueStackWithPhi::enterNode(), LLVMCodegen::ValueStackWithPhi::enterNode(), LLVMCodegen::ValueStackWithPhi::finalizeNode(), LLVMCodegen::generate(), LLVMCodegen::generateExportFunctionDecls(), LLVMCodegen::generateGeneratorContextInitialization(), LLVMCodegen::generateImportFunctionImplementations(), LLVMCodegen::generateInstruction(), IRBuilder::getLhsFromTempVarStack(), IRBuilder::getRhsFromTempVarStack(), visitor::handleBinaryOperatorOverload(), LLVMCodegen::handleForeignTypeConv(), LLVMCodegen::handleIntrinsicCall(), visitor::handleSubscript(), visitor::handleUnaryOperatorOverload(), IRBuilder::jumpIfOp(), LLVMCodegen::LLVMCodegen(), LLVMCodegen::loadArrayElement(), lexer::operatorStart(), visitor::parseConceptName(), visitor::parseInterfaceName(), visitor::parseTypeSpec(), visitor::parseTypeSpec(), IRBuilder::restoreState(), IRBuilder::restoreStateTemporarily(), clObjectLinker::searchAndSetupLinker(), visitor::setupTemporaryConceptEvaluationEnvironment(), visitor::specializeInterfaceImplementation(), visitor::specializeInterfaceTemplate(), visitor::specializeStructMethodTemplate(), visitor::specializeStructTemplate(), LLVMCodegen::unwrapInterfaceObject(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visit(), visitor::visitExtern(), and visitor::visitExtern().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ __current_file_path

thread_local yoi::wstr __current_file_path = L""

◆ consoleMutex

std::mutex consoleMutex

Definition at line 15 of file def.cpp.

Referenced by CodegenObjectCache::register_entry_unlocked(), and warning().

◆ exception_categories

std::map< std::string, ExceptionHandleType > exception_categories
Initial value:
= {
{"NULLABLE_VALUE_SUPPLY_TO_RAW", ExceptionHandleType::Suppress},
{"INTERNAL", ExceptionHandleType::Panic},
{"UCRT_NOT_FOUND", ExceptionHandleType::Warning},
{"ELYSIA_RUNTIME_NOT_FOUND", ExceptionHandleType::Warning},
{"MODULE_NOT_MODIFIED", ExceptionHandleType::Suppress},
}

Definition at line 17 of file def.cpp.

Referenced by main(), and warning().

◆ mulExpr

Definition at line 809 of file parser.cpp.