diff --git a/src/element.cpp b/src/element.cpp index 3ed14c9..ebc5763 100644 --- a/src/element.cpp +++ b/src/element.cpp @@ -35,7 +35,8 @@ shared_ptr StructType::struct_replace( shared_ptr ut, map, shared_ptr>& eq) { auto tt = make_shared(); - (*tt) = (*ut); + tt->str = str; + tt->mp = ut->mp; set> vis; for (auto u = str; u.get() != nullptr; u = u->fa.lock()) { vis.insert(u); diff --git a/tests/ok/simple-logic3.ac b/tests/ok/simple-logic3.ac new file mode 100644 index 0000000..6795e16 --- /dev/null +++ b/tests/ok/simple-logic3.ac @@ -0,0 +1,32 @@ +struct +{ + struct A() + { + struct AA(){}; + struct AB() + { + struct ABA() + { + }; + }; + }; + struct B() + { + struct BA() + { + a = A::AB::ABA(); + }; + struct BB() + { + struct BBA() + { + }; + struct BBB(p:z) + { + a = BA(); + }; + }; + }; + struct C(delete){}; + a = Fn<>()->A::AB>::ABA{return B>::BB::BB>::BBB(admit()).a.a;}; +}main; \ No newline at end of file