mirror of
https://github.com/apple/swift.git
synced 2026-10-12 14:50:47 +02:00
Describe the required object or interface pointer representation in the builtin documentation and diagnostic. Calling the value a "single reference" can be mistaken for a requirement on its reference count.
32 lines
1.3 KiB
Swift
32 lines
1.3 KiB
Swift
// RUN: %target-swift-emit-silgen -enable-builtin-module -verify %s
|
|
|
|
import Builtin
|
|
|
|
func value(_ pointer: Builtin.RawPointer) -> Int {
|
|
Builtin.takeFromRawPointer(pointer)
|
|
// expected-error@-1 {{invalid use of builtin: takeFromRawPointer result must have an object or interface pointer representation}}
|
|
}
|
|
|
|
func generic<T>(_ pointer: Builtin.RawPointer) -> T {
|
|
Builtin.takeFromRawPointer(pointer)
|
|
// expected-error@-1 {{invalid use of builtin: takeFromRawPointer result must have an object or interface pointer representation}}
|
|
}
|
|
|
|
protocol P {}
|
|
func existential(_ pointer: Builtin.RawPointer) -> any P {
|
|
Builtin.takeFromRawPointer(pointer)
|
|
// expected-error@-1 {{invalid use of builtin: takeFromRawPointer result must have an object or interface pointer representation}}
|
|
}
|
|
|
|
class Object {}
|
|
func optional(_ pointer: Builtin.RawPointer) -> Object? {
|
|
Builtin.takeFromRawPointer(pointer)
|
|
// expected-error@-1 {{invalid use of builtin: takeFromRawPointer result must have an object or interface pointer representation}}
|
|
}
|
|
|
|
protocol ClassProtocol: AnyObject {}
|
|
func classExistential(_ pointer: Builtin.RawPointer) -> any ClassProtocol {
|
|
Builtin.takeFromRawPointer(pointer)
|
|
// expected-error@-1 {{invalid use of builtin: takeFromRawPointer result must have an object or interface pointer representation}}
|
|
}
|