Skip to content
This repository has been archived by the owner on Oct 6, 2024. It is now read-only.

Commit

Permalink
2024-04-04 011:
Browse files Browse the repository at this point in the history
- interesting how this is in this package:
  tripleo.elijah_durable_congenial.stages.gen_fn_r.RegisterClassInvocation_env;
  • Loading branch information
Tripleo committed Apr 4, 2024
1 parent 5ac5852 commit 5f7292c
Showing 1 changed file with 30 additions and 17 deletions.
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
package tripleo.elijah_durable_congenial.entrypoints;

import org.jetbrains.annotations.NotNull;
import tripleo.elijah.util.Eventual;
import tripleo.elijah.work.WorkList;
import tripleo.elijah_durable_congenial.comp.i.Compilation;
import tripleo.elijah_durable_congenial.lang.i.ClassStatement;
import tripleo.elijah_durable_congenial.lang.i.FunctionDef;
import tripleo.elijah_durable_congenial.lang.impl.BaseFunctionDef;
import tripleo.elijah_durable_congenial.nextgen.rosetta.Rosetta;
import tripleo.elijah_durable_congenial.stages.deduce.ClassInvocation;
import tripleo.elijah_durable_congenial.stages.deduce.DeducePhase;
import tripleo.elijah_durable_congenial.stages.deduce.FunctionInvocation;
import tripleo.elijah_durable_congenial.stages.deduce.NULL_DeduceTypes2;
import tripleo.elijah_durable_congenial.stages.deduce_r.RegisterClassInvocation_resp;
import tripleo.elijah_durable_congenial.stages.gen_fn.*;
import tripleo.elijah_durable_congenial.stages.gen_fn.*;
import tripleo.elijah_durable_congenial.stages.gen_generic.ICodeRegistrar;
import tripleo.elijah.work.WorkList;
import tripleo.elijah_durable_congenial.world.i.LivingRepo;
import tripleo.elijah_durable_congenial.lang.i.ClassStatement;
import tripleo.elijah_durable_congenial.lang.i.FunctionDef;
import tripleo.elijah_durable_congenial.stages.deduce.ClassInvocation;
import tripleo.elijah_durable_congenial.stages.deduce.FunctionInvocation;
import tripleo.elijah_durable_congenial.stages.gen_fn_r.RegisterClassInvocation_env;
import tripleo.elijah_durable_congenial.stages.gen_generic.ICodeRegistrar;
import tripleo.elijah_durable_congenial.world.i.LivingRepo;

Expand Down Expand Up @@ -86,19 +82,36 @@ public EPP_MCEP(final MainClassEntryPoint aEp, final DeducePhase aDeducePhase, f
public void process() {
final @NotNull ClassStatement cs = mcep.getKlass();
final @NotNull FunctionDef f = mcep.getMainFunction();
final ClassInvocation ci = deducePhase.registerClassInvocation(cs, null, new NULL_DeduceTypes2());

assert ci != null;
final ClassInvocation ci;

deducePhase.generatePhase.setCodeRegistrar(codeRegistrar);
final Eventual<ClassInvocation> rci = new Eventual<>();
rci.then(ci1 -> {
deducePhase.generatePhase.setCodeRegistrar(codeRegistrar);

final @NotNull WlGenerateClass job = new WlGenerateClass(generateFunctions, ci, deducePhase.generatedClasses, codeRegistrar);
wl.addJob(job);
final @NotNull WlGenerateClass job = new WlGenerateClass(generateFunctions, ci1, deducePhase.generatedClasses, codeRegistrar);
wl.addJob(job);

final @NotNull FunctionInvocation fi = deducePhase.newFunctionInvocation(f, null, ci);
final @NotNull FunctionInvocation fi = deducePhase.newFunctionInvocation(f, null, ci1);
// fi.setPhase(phase);
final @NotNull WlGenerateFunction job1 = new WlGenerateFunction(generateFunctions, fi, codeRegistrar);
wl.addJob(job1);
final @NotNull WlGenerateFunction job1 = new WlGenerateFunction(generateFunctions, fi, codeRegistrar);
wl.addJob(job1);
});

final boolean _Apr04 = false;
// README still does not solve problem of getting dt2
// investigate if actually needeed
// then set this to true
if (_Apr04) {
final RegisterClassInvocation_resp resp = new RegisterClassInvocation_resp();
Rosetta.create(new RegisterClassInvocation_env(cs, null, deducePhase), resp).apply();
resp.onSuccess(rci::resolve);
} else {
ci = deducePhase.registerClassInvocation(cs, null, new NULL_DeduceTypes2());
rci.resolve(ci);
}

assert rci.isResolved();
}
}

Expand Down

0 comments on commit 5f7292c

Please sign in to comment.