Files
swift-mirror/test/SILOptimizer/moveonly_builtins.swift
Kavon Farvardin c9cfe28e6d NCGenerics: improve diagnostics
Removing the old, ad-hoc diagnostics code improves the diagnostics we
emit, since the existing diagnostics for missing conformances is already
pretty good.

rdar://127369509
2024-06-04 15:06:32 -07:00

37 lines
1.7 KiB
Swift

// RUN: %target-swift-frontend-typecheck -verify %s -DILLEGAL \
// RUN: -enable-builtin-module \
// RUN: -verify-additional-prefix illegal-
// RUN: %target-swift-frontend -emit-sil -sil-verify-all -verify %s \
// RUN: -enable-builtin-module
import Builtin
struct NC: ~Copyable {}
func checkPointerBuiltins(_ ptr: Builtin.RawPointer, _ value: consuming NC) {
Builtin.initialize(value, ptr)
}
func checkArrayBuiltins(_ dest: Builtin.RawPointer, src: Builtin.RawPointer, count: Builtin.Word) {
Builtin.takeArrayFrontToBack(NC.self, dest, src, count)
Builtin.takeArrayBackToFront(NC.self, dest, src, count)
Builtin.assignTakeArray(NC.self, dest, src, count)
Builtin.destroyArray(NC.self, dest, count)
#if ILLEGAL
Builtin.copyArray(NC.self, dest, src, count) // expected-illegal-error {{global function 'copyArray' requires that 'NC' conform to 'Copyable'}}
Builtin.assignCopyArrayNoAlias(NC.self, dest, src, count) // expected-illegal-error {{global function 'assignCopyArrayNoAlias' requires that 'NC' conform to 'Copyable'}}
Builtin.assignCopyArrayFrontToBack(NC.self, dest, src, count) // expected-illegal-error {{global function 'assignCopyArrayFrontToBack' requires that 'NC' conform to 'Copyable'}}
Builtin.assignCopyArrayBackToFront(NC.self, dest, src, count) // expected-illegal-error {{global function 'assignCopyArrayBackToFront' requires that 'NC' conform to 'Copyable'}}
#endif
}
public func checkIllegal() {
#if ILLEGAL
_ = Builtin.unsafeCastToNativeObject(NC())
_ = Builtin.castToNativeObject(NC()) // expected-illegal-error {{global function 'castToNativeObject' requires that 'NC' conform to 'Copyable'}}
let _: NC = Builtin.zeroInitializer()
#endif
}