docs/_docs/reference/error-codes/E159.md
This error occurs when a trait attempts to define a method with the @native annotation.
Native methods are implemented in platform-specific code (like C or assembly through JNI) and require a concrete class implementation. Since traits can be mixed into multiple classes and don't have a direct JVM implementation path for native code, they cannot define native methods.
trait NativeOperations {
@native def performNativeOp(): Unit
}
-- [E159] Syntax Error: example.scala:2:14 -------------------------------------
2 | @native def performNativeOp(): Unit
| ^
| A trait cannot define a @native method.
// Define native methods in a class or object instead
class NativeOperations {
@native def performNativeOp(): Unit
}
// Or use an abstract method in the trait and implement it in a class
trait NativeOperations {
def performNativeOp(): Unit
}
class NativeImpl extends NativeOperations {
@native def performNativeOp(): Unit
}