mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
eliminating the @'s from them when used on func's. This is progress towards <rdar://problem/17527000> change operator declarations from "operator prefix" to "prefix operator" & make operator a keyword This also consolidates rejection of custom operator definitions into one place and makes it consistent, and adds postfix "?" to the list of rejected operators. This also changes the demangler to demangle weak/inout/postfix and related things without the @. Swift SVN r19929
79 lines
1.3 KiB
Swift
79 lines
1.3 KiB
Swift
// RUN: %target-run-simple-swift | FileCheck %s
|
|
|
|
struct Interval {
|
|
var lo, hi : Int
|
|
|
|
init(_ lo: Int, _ hi: Int) {
|
|
self.lo = lo
|
|
self.hi = hi
|
|
}
|
|
}
|
|
|
|
func +(a: Interval, b: Interval) -> Interval {
|
|
return Interval(a.lo + b.lo, a.hi + b.hi)
|
|
}
|
|
|
|
func -(a: Interval, b: Interval) -> Interval {
|
|
return Interval(a.lo - b.hi, a.hi - b.lo)
|
|
}
|
|
|
|
prefix func -(a: Interval) -> Interval {
|
|
return Interval(-a.hi, -a.lo)
|
|
}
|
|
|
|
func println(a: Interval) {
|
|
println("[\(a.lo), \(a.hi)]")
|
|
}
|
|
|
|
// CHECK: [-2, -1]
|
|
println(-Interval(1,2))
|
|
// CHECK: [4, 6]
|
|
println(Interval(1,2) + Interval(3,4))
|
|
// CHECK: [1, 3]
|
|
println(Interval(3,4) - Interval(1,2))
|
|
|
|
// CHECK: And now you know
|
|
println("And now you know the rest of the story")
|
|
|
|
struct BigStruct {
|
|
var a,b,c,d,e,f,g,h : Int
|
|
}
|
|
|
|
func returnBigStruct() -> BigStruct {
|
|
return BigStruct(a: 1, b: 6, c: 1, d: 8, e: 0, f: 3, g: 4, h: 0)
|
|
}
|
|
|
|
// CHECK: 1
|
|
// CHECK: 6
|
|
// CHECK: 1
|
|
// CHECK: 8
|
|
// CHECK: 0
|
|
// CHECK: 3
|
|
// CHECK: 4
|
|
// CHECK: 0
|
|
var bs = returnBigStruct()
|
|
println(bs.a)
|
|
println(bs.b)
|
|
println(bs.c)
|
|
println(bs.d)
|
|
println(bs.e)
|
|
println(bs.f)
|
|
println(bs.g)
|
|
println(bs.h)
|
|
|
|
struct GenStruct<T> {
|
|
var a, b : Int
|
|
|
|
init(_ a: Int, _ b: Int) {
|
|
self.a = a
|
|
self.b = b
|
|
}
|
|
|
|
}
|
|
|
|
// CHECK: 19
|
|
// CHECK: 84
|
|
var gs = GenStruct<String>(19, 84)
|
|
println(gs.a)
|
|
println(gs.b)
|