mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This is because we currently JIT in process resulting in weirdness around swift-frontend wanting to link against the host stdlib and the exec swift code wanting to link against the target stdlib. For now, we work around this by just saying in that case we will force swift-frontend to use the just built runtime so we are consistent. The only potential problem is that a bug in the just built runtime may now cause these tests to fail. But overall, that would suggest a problem we may want to catch in it of itself, so the work around I think makes sense until JITing is done in a separate process (which I think is the right fix). rdar://78768013
61 lines
1.3 KiB
Swift
61 lines
1.3 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/def_operator.swift
|
|
// RUN: llvm-bcanalyzer %t/def_operator.swiftmodule | %FileCheck %s
|
|
// RUN: %target-swift-frontend -typecheck -I%t %s
|
|
//
|
|
// Run with the interpreter using the proper filecheck pattern.
|
|
// RUN: %target-jit-run -I %t -DINTERP %s | %FileCheck --check-prefix=OUTPUT %s
|
|
// REQUIRES: swift_interpreter
|
|
|
|
// FIXME: iOS doesn't work because this test needs the interpreter to handle
|
|
// func typeCheckOnly (which causes link errors if built as an executable).
|
|
|
|
// CHECK-NOT: UnknownCode
|
|
|
|
import def_operator
|
|
|
|
prefix func ~~~(x: Int) -> (Int, Int, Int) {
|
|
return (x, x, x)
|
|
}
|
|
|
|
var triple = (~~~42)
|
|
print("(\(triple.0), \(triple.1), \(triple.2))")
|
|
// OUTPUT: (42, 42, 42)
|
|
|
|
postfix func ^^(x: Int) -> Int {
|
|
return x ^ x
|
|
}
|
|
|
|
print("\(1^^)")
|
|
// OUTPUT: 0
|
|
|
|
|
|
func *-(lhs: Int, rhs: Int) -> Int {
|
|
return lhs - rhs
|
|
}
|
|
func -*(lhs: Int, rhs: Int) -> Int {
|
|
return lhs - rhs
|
|
}
|
|
func *-*(lhs: Int, rhs: Int) -> Int {
|
|
return lhs - rhs
|
|
}
|
|
|
|
print("\(5 *- 3 *- 2) \(5 -* 3 -* 2)")
|
|
// OUTPUT: 0 4
|
|
print("\(5 *- 3 -* 2) \(5 -* 3 *- 2)")
|
|
// OUTPUT: 0 4
|
|
print("\(5 *- 3 *-* 2) \(5 *-* 3 *- 2)")
|
|
// OUTPUT: 0 4
|
|
|
|
#if !INTERP
|
|
|
|
func typeCheckOnly() {
|
|
~~~true
|
|
var b = false
|
|
b^^
|
|
true *-* false
|
|
b *- false
|
|
}
|
|
|
|
#endif
|