@@ -28,7 +28,7 @@ namespace PureScript {
28 case Type::Vector: new (&v) shared<vector> (src.v); break; \
28 case Type::Vector: new (&v) shared<vector> (src.v); break; \
29 case Type::Function: new (&f) shared<fn> (src.f); break; \
29 case Type::Function: new (&f) shared<fn> (src.f); break; \
30 case Type::EffFunction: new (&e) shared<eff_fn> (src.e); break; \
30 case Type::EffFunction: new (&e) shared<eff_fn> (src.e); break; \
31− case Type::Thunk: new (&t) shared<thunk> (src.t); break; \
31+ case Type::Thunk: t = src.t; break; \
32 case Type::Pointer: new (&p) shared<void> (src.p); break; \
32 case Type::Pointer: new (&p) shared<void> (src.p); break; \
34 default: assert(false && "Unsupported type in copy"); \
34 default: assert(false && "Unsupported type in copy"); \
@@ -46,7 +46,7 @@ namespace PureScript {
46 case Type::Vector: new (&v) shared<vector> (std::move(src.v)); break; \
46 case Type::Vector: new (&v) shared<vector> (std::move(src.v)); break; \
47 case Type::Function: new (&f) shared<fn> (std::move(src.f)); break; \
47 case Type::Function: new (&f) shared<fn> (std::move(src.f)); break; \
48 case Type::EffFunction: new (&e) shared<eff_fn> (std::move(src.e)); break; \
48 case Type::EffFunction: new (&e) shared<eff_fn> (std::move(src.e)); break; \
49− case Type::Thunk: new (&t) shared<thunk> (std::move(src.t)); break; \
49+ case Type::Thunk: t = src.t; break; \
50 case Type::Pointer: new (&p) shared<void> (std::move(src.p)); break; \
50 case Type::Pointer: new (&p) shared<void> (std::move(src.p)); break; \
52 default: assert(false && "Unsupported type in move"); \
52 default: assert(false && "Unsupported type in move"); \
@@ -88,7 +88,7 @@ any::~any() {
88 case Type::Vector: v.~shared<vector>(); break;
88 case Type::Vector: v.~shared<vector>(); break;
89 case Type::Function: f.~shared<fn>(); break;
89 case Type::Function: f.~shared<fn>(); break;
90 case Type::EffFunction: e.~shared<eff_fn>(); break;
90 case Type::EffFunction: e.~shared<eff_fn>(); break;
91− case Type::Thunk: t.~shared<thunk>(); break;
91+ case Type::Thunk: ; break;
92 case Type::Pointer: p.~shared<void>(); break;
92 case Type::Pointer: p.~shared<void>(); break;
94 default: assert(false && "Unsupported type in destructor");
94 default: assert(false && "Unsupported type in destructor");