FuncDefStore

- Pass in ourselves (a `IFuncDefStore`) into the `DFunctionInnerGenerator` when adding a function definition
- Implemented `grabFunctionDef(string name)` from the updated `IFuncDefStore` API
This commit is contained in:
Tristan B. Velloza Kildaire 2023-12-09 16:32:05 +02:00
parent e338462026
commit b09d1326f6
1 changed files with 25 additions and 2 deletions

View File

@ -1,6 +1,6 @@
module tlang.compiler.typecheck.dependency.store.impls;
import tlang.compiler.typecheck.dependency.store.interfaces : IFuncDefStore;
import tlang.compiler.typecheck.dependency.store.interfaces;
import tlang.compiler.symbols.data : Function;
import tlang.compiler.typecheck.dependency.core : FunctionData, DFunctionInnerGenerator;
@ -58,7 +58,7 @@ public final class FuncDefStore : IFuncDefStore
* context etc.
*/
FunctionData funcData;
funcData.ownGenerator = new DFunctionInnerGenerator(tc, func);
funcData.ownGenerator = new DFunctionInnerGenerator(tc, this, func);
// TODO: Should we not generate a HELLA long name rather, to avoid duplication problems and overwrites of key values
funcData.name = tc.getResolver().generateName(tc.getModule(), func);
@ -81,4 +81,27 @@ public final class FuncDefStore : IFuncDefStore
{
return this.functions.dup;
}
/**
* Grabs a function definition by its
* name
*
* Params:
* name = the name of the function
* Returns: the `FunctionData`
* Throws:
* FuncDefStoreException if the function
* could not be found
*/
public FunctionData grabFunctionDef(string name)
{
if(name in this.functions)
{
return this.functions[name];
}
else
{
throw new FuncDefStoreException("Could not find function by name '"~name~"'");
}
}
}