-
Notifications
You must be signed in to change notification settings - Fork 152
Open
Description
Minimum example needed to reproduce
Basically I have types in Rust like these:
#[derive(Clone, Debug, VmType, Pushable, Getable)]
enum E1 {
S1(S),
}
#[derive(Clone, Debug, VmType, Pushable, Getable)]
struct S {
e: E2,
}
#[derive(Clone, Debug, VmType, Pushable, Getable)]
enum E2 {
Num(i32),
}And if I try to initialize E1 with:
let { E1, S, E2 } = import! test
let e1 = S1 { e = Num 3 }
Then I get the following:
error: Expected the following types to be equal
Expected: | Num : Int -> E1
Found: E2
1 errors were found during unification:
Types do not match:
Expected: Int -> E1
Found: Int -> <opaque>
┌─ test:3:23
│
3 │ let e1 = S1 { e = Num 3 }
│
│ ^^^^^
So it seems like suddenly E2's constructor(s) have changed (if E2 has multiple variants they all get changed). Note that this also happens in the repl*, but (assuming test is the module containing the types) when I try :t import! test it shows all types correctly, but if I try :t let { E1 } = import! test in S1 then it also shows the wrong type.
[*] The repl included in the test repo is basically the one taken from gluon, except Color is removed and the repl is run from a provided Thread.
Metadata
Metadata
Assignees
Labels
No labels