E4173

E4173#

编译器诊断名称:invalid_value_type_attr

无效的 #valtype 声明。

#valtype 要求编译器将某个类型表示为值类型。并不是所有类型形状都能这样表示。如果声明需要装箱或运行时对象存储,编译器会拒绝它,例如包含类型参数字段、对象字段、可变字段、过多字段或嵌套值类型字段。

错误示例#

#valtype
struct Box[T] {
  value : T
}

字段 value 的类型是类型参数 T。值类型必须具有具体且受支持的布局,因此这个泛型字段会被拒绝。

建议#

为值类型使用具体的标量字段;如果该类型需要泛型布局或装箱布局,则移除 #valtype

#valtype
struct Point {
  x : Int
  y : Int
}