У меня есть следующие настройки, и я пытаюсь пройти проверку типа компиляции кода, желательно с минимальной модификацией, поскольку код генерируется инструментом, а не вручную.
Я думаю, что проблема в том, Мне нужно придумать лучшее определение для T_MAX_LATTICE [T] или T_IntegerMaxLattice в M_TEST_COLL.
Код довольно большой, поэтому я не могу опубликовать весь код здесь, но помещаю URL репо внизу , Я изо всех сил пытаюсь визуализировать иерархию типов.
Я знаю, что вопрос слишком общий, но все, что я ищу, - это возможность скомпилировать код без использования снятия флажка и минимального изменения кода времени выполнения (или основы * 1023). * .handcode. scala)
Ошибки (1 и 2):
Type mismatch. Required:
C_NUMERIC [ T_IntegerMaxLattice ]
Found: M_MAX_LATTICE [ T_Integer ]
Type mismatch. Required:
C_NUMERIC [ T_IntegerMaxLattice ]
Found: M_MAX_LATTICE [ T_Integer ]
Сгенерированный код:
Задача № 1:
class M_TEST_COLL[T_T](name : String,val t_T : C_TYPE[T_T] with C_TINY[T_T])
extends Module(name)
with C_TEST_COLL[T_T,T_T]
{
type T_Result = T_T;
val v_equal = t_T.v_equal;
val v_string = t_T.v_string;
val v_assert = t_T.v_assert;
val v_node_equivalent = t_T.v_node_equivalent;
type T_Root = t_T.T_Root;
val t_Root = t_T.t_Root;
type T_Wood = t_T.T_Wood;
val t_Wood = t_T.t_Wood;
val p_root = t_T.p_root;
val v_root = t_T.v_root;
val p_branch = t_T.p_branch;
val v_branch = t_T.v_branch;
val p_leaf = t_T.p_leaf;
val v_leaf = t_T.v_leaf;
val t_Result : this.type = this;
val t_IntegerMaxLattice = new M_MAX_LATTICE[T_Integer]("IntegerMaxLattice",t_Integer,0);
type T_IntegerMaxLattice = /*TI*/T_MAX_LATTICE[T_Integer];
private class E_foo(anchor : Null) extends Evaluation[Null,T_IntegerMaxLattice](anchor,"foo") {
override def getDefault = new M__basic_4[ T_IntegerMaxLattice](t_IntegerMaxLattice).v__op_s(1,2);
override def compute : ValueType = c_foo();
}
Задача № 2:
def c_foo() : T_IntegerMaxLattice = {
Debug.begin("foo");
try {
return new M__basic_4[ T_IntegerMaxLattice](t_IntegerMaxLattice).v__op_s(1,2);
} finally { Debug.end(); }
}
URL репо