E0094

E0094#

警告名称:unknown_intrinsic

#intrinsic 属性指定了编译器无法识别的内建指令名称。编译器会忽略该属性,改用普通函数体。此警告默认启用。

错误示例#

下面的名称是特意虚构的。函数对于输入 41 仍会返回 42,但其属性会产生警告:

///|
#intrinsic("%not_a_real_intrinsic")
pub fn add_one(value : Int32) -> Int32 {
  value + 1
}

///|
test {
  assert_eq(add_one(41), 42)
}

建议#

删除属性并保留普通实现。内建指令不是稳定的 API,不建议在应用代码中使用。

///|
pub fn add_one(value : Int32) -> Int32 {
  value + 1
}

///|
test {
  assert_eq(add_one(41), 42)
}

这与 E4070 不同:fn f(x : Int32) -> Int32 = "%not_a_real_intrinsic" 这样的声明没有可供回退的普通函数体,因此未知内建指令会导致错误,而不是警告。