Freeze for now

function_dep
parent 05d00ff58b
commit 0c104440ae

@ -578,6 +578,7 @@ public final class TypeChecker
VariableAssignmentNode varAssignDNode = cast(compiler.typecheck.dependency.variables.VariableAssignmentNode)dnode;
Variable assignTo = (cast(VariableAssignment)varAssignDNode.getEntity()).getVariable();
variableName = resolver.generateName(modulle, assignTo);
gprintln("VariableAssignmentNode: "~to!(string)(variableName));
/**
* Codegen
@ -608,7 +609,7 @@ public final class TypeChecker
* Emit a variable declaration instruction
*/
Variable variablePNode = cast(Variable)dnode.getEntity();
gprintln("HELLO NIGGA");
gprintln("HELLO FELLA");
string variableName = resolver.generateName(modulle, variablePNode);
VariableDeclaration varDecInstr = new VariableDeclaration(variableName, 4);
@ -712,7 +713,9 @@ public final class TypeChecker
if(varDecPNode.context.container == clazzPNode)
{
/* TODO: Add the static variable declARATION INITIALIZATIONS HERE */
/* FIXME: Surely after, to preserve ordering */
kept.insert(varDecInstr);
// kept.insertAfter(kept[], varDecInstr);
}
/**
* If not, then put it back where it was

@ -520,6 +520,33 @@ public class DNodeGenerator
return node;
}
/**
* Used for maintaining dependencies along a trail of `x.y.z`
*/
private DNode[][string] pathTrailDeps;
private void addToPathTrail(string finalEntityName, DNode dep)
{
bool found = false;
foreach(string entityName; pathTrailDeps.keys)
{
if(cmp(entityName, finalEntityName) == 0)
{
found = true;
break;
}
}
if(found == false)
{
pathTrailDeps[finalEntityName] = [];
}
pathTrailDeps[finalEntityName] ~= dep;
}
private DNode expressionPass(Expression exp, Context context)
{
ExpressionDNode dnode = poolT!(ExpressionDNode, Expression)(exp);
@ -654,9 +681,9 @@ public class DNodeGenerator
/* NOTE: Fix is below I think (it doesn't crash then) */
/* Set context for expression and the variable itself */
// varExp.setContext(context);
// Entity bruh = tc.getResolver().resolveBest(context.getContainer(), path);
// bruh.setContext(context);
varExp.setContext(context);
Entity bruh = tc.getResolver().resolveBest(context.getContainer(), path);
bruh.setContext(context);
@ -827,7 +854,11 @@ public class DNodeGenerator
{
Clazz clazz = cast(Clazz)namedEntity;
/* TODO: This actually gives a wrong dependency order, we would have to swap a lot */
/* IDEA: We could change what we return here, such that we return a different dnode with it dependent on class? */
dnode.needs(classPassStatic(clazz));
// addToPathTrail(tc.getResolver().generateName(context.getContainer(), ))
}
/* TODO: Recurse on `newPath` */

@ -1,8 +1,14 @@
module simple_class_ref;
class A
{
static int aVal;
}
class TestClass
{
static int value = 2;
static int x = 2;
static int A = 3;
}
int testValue = TestClass.value;
int testValue = TestClass.x;
Loading…
Cancel
Save