E4034

E4034#

Multiple possible struct types detected, please add more annotation.

Erroneous Example#

pub struct S {
  x : Int
  y : Int
}

pub struct T {
  x : Int
  y : Int
}

pub fn make() -> Unit {
  let _ = { x: 2, y: 1 }
}

The example above tries to assign a struct with fields x and y to a variable c, but this field combination matches both S and T types, giving the following error on line 4:

Multiple possible struct types detected: T, S, please add more annotation.

Suggestion#

Disambiguate the struct type by adding a type annotation:

pub struct  {
   : 
   : 
}

pub struct  {
   : 
   : 
}

pub let  :  = { : 2, : 1 }
pub let  :  = ::{ : 2, : 1 }
pub let  :  = { : 0, : 0 }