E4199

E4199#

编译器诊断名称:struct_has_no_constr

调用语法 Type(...) 只适用于声明了构造器的结构体。普通的记录风格结构体仍然可以用记录字面量创建,但它不会自动获得一个与结构体同名的构造函数。

错误示例#

///|
pub(all) struct Point {
  x : Int
}

///|
test {
  let _ : Point = Point(1)
}

建议#

使用记录构造,或先声明并实现构造器,再把结构体当作函数调用。

///|
pub(all) struct Point {
  x : Int
}

///|
fn make_point(x : Int) -> Point {
  { x, }
}

///|
test {
  let point = make_point(1)
  inspect(point.x, content="1")
}