// RUN: %target-swift-ide-test -syntax-coloring -source-filename %s | FileCheck %s
// RUN: %target-swift-ide-test -syntax-coloring -typecheck -source-filename %s | FileCheck %s
// CHECK: struct S {
struct S {
// CHECK: var x : Int
var x : Int
// CHECK: var y : Int.Int
var y : Int.Int
// CHECK: var a, b : Int
var a, b : Int
}
enum EnumWithDerivedEquatableConformance : Int {
// CHECK-LABEL: enum EnumWithDerivedEquatableConformance : {{()}}Int{{()?}} {
case CaseA
// CHECK-NEXT: case CaseA
case CaseB, CaseC
// CHECK-NEXT: case CaseB, CaseC
case CaseD = 30, CaseE
// CHECK-NEXT: case CaseD = 30, CaseE
}
// CHECK-NEXT: }
// CHECK: class MyCls {
class MyCls {
// CHECK: var www : Int
var www : Int
// CHECK: func foo(x: Int) {}
func foo(x: Int) {}
// CHECK: var aaa : Int {
var aaa : Int {
// CHECK: get {}
get {}
// CHECK: set {}
set {}
}
// CHECK: var bbb : Int {
var bbb : Int {
// CHECK: set {
set {
// CHECK: var tmp : Int
var tmp : Int
}
// CHECK: get {
get {
// CHECK: var tmp : Int
var tmp : Int
}
}
// CHECK: subscript (i : Int, j : Int) -> Int {
subscript (i : Int, j : Int) -> Int {
// CHECK: get {
get {
// CHECK: return i + j
return i + j
}
// CHECK: set(v) {
set(v) {
// CHECK: v + i - j
v + i - j
}
}
// CHECK: func multi(_ name: Int, otherpart x: Int) {}
func multi(_ name: Int, otherpart x: Int) {}
}
// CHECK-LABEL: class Attributes {
class Attributes {
// CHECK: @IBOutlet var v0: Int
@IBOutlet var v0: Int
// CHECK: @IBOutlet @IBOutlet var {{()?}}v1{{()?}}: String
@IBOutlet @IBOutlet var v1: String
// CHECK: @objc @IBOutlet var {{()?}}v2{{()?}}: String
@objc @IBOutlet var v2: String
// CHECK: @IBOutlet @objc var {{()?}}v3{{()?}}: String
@IBOutlet @objc var v3: String
// CHECK: @noreturn func f0() {}
@noreturn func f0() {}
// CHECK: @availability(*, unavailable) func f1() {}
@availability(*, unavailable) func f1() {}
// CHECK: @availability(*, unavailable) @IBAction func f2() {}
@availability(*, unavailable) @IBAction func f2() {}
// CHECK: @IBAction @availability(*, unavailable) func f3() {}
@IBAction @availability(*, unavailable) func f3() {}
// CHECK: @IBAction @availability(*, unavailable) @noreturn func f4() {}
@IBAction @availability(*, unavailable) @noreturn func f4() {}
// CHECK: mutating func func_mutating_1() {}
mutating func func_mutating_1() {}
// CHECK: nonmutating func func_mutating_2() {}
nonmutating func func_mutating_2() {}
}
func stringLikeLiterals() {
// CHECK: var us1: UnicodeScalar = "a"
var us1: UnicodeScalar = "a"
// CHECK: var us2: UnicodeScalar = "ы"
var us2: UnicodeScalar = "ы"
// CHECK: var ch1: Character = "a"
var ch1: Character = "a"
// CHECK: var ch2: Character = "あ"
var ch2: Character = "あ"
// CHECK: var s1 = "abc абвгд あいうえお"
var s1 = "abc абвгд あいうえお"
}
// CHECK: var globComp : Int
var globComp : Int {
// CHECK: get {
get {
// CHECK: return 0
return 0
}
}
// CHECK: /* foo is the best */
/* foo is the best */
// CHECK: func foo(n: Float) -> Int {
func foo(n: Float) -> Int {
// CHECK: var fnComp : Int
var fnComp : Int {
// CHECK: get {
get {
// CHECK: var a: Int
// CHECK: return 0
var a: Int
return 0
}
}
// CHECK: var q = {{()?}}MyCls{{()?}}()
var q = MyCls()
// CHECK: var ee = "yoo";
var ee = "yoo";
// CHECK: return 100009
return 100009
}
// CHECK: protocol Prot {
protocol Prot {
// CHECK: typealias Blarg
typealias Blarg
// CHECK: func protMeth(x: Int)
func protMeth(x: Int)
// CHECK: var protocolProperty1: Int { get }
var protocolProperty1: Int { get }
// CHECK: var protocolProperty2: Int { get set }
var protocolProperty2: Int { get set }
}
// CHECK: infix operator *-* { associativity left precedence 140 }{{$}}
infix operator *-* { associativity left precedence 140 }
// CHECK: func *-*(l: Int, r: Int) -> Int { return l }{{$}}
func *-*(l: Int, r: Int) -> Int { return l }
// CHECK: infix operator *-+* { associativity left }{{$}}
infix operator *-+* { associativity left }
// CHECK: func *-+*(l: Int, r: Int) -> Int { return l }{{$}}
func *-+*(l: Int, r: Int) -> Int { return l }
// CHECK: infix operator *--* {}{{$}}
infix operator *--* {}
// CHECK: func *--*(l: Int, r: Int) -> Int { return l }{{$}}
func *--*(l: Int, r: Int) -> Int { return l }
// CHECK: protocol Prot2 : Prot {}
protocol Prot2 : Prot {}
// CHECK: class SubCls : MyCls, Prot {}
class SubCls : MyCls, Prot {}
// CHECK: func genFnwhere T.Blarg : Prot2>(_: T) -> Int {}
func genFn(_: T) -> Int {}
func f(x: Int) -> Int {
// CHECK: // string interpolation is the best
// string interpolation is the best
// CHECK: "This is string \(genFn({(a:Int -> Int) in a})) interpolation"
"This is string \(genFn({(a:Int -> Int) in a})) interpolation"
}
// CHECK: func bar(x: Int) -> (Int, Float) {
func bar(x: Int) -> (Int, Float) {
// CHECK: foo({{()?}}Float{{()?}}())
foo(Float())
}
class GenC {}
func test() {
// CHECK: {{()?}}GenC{{()?}}<Int, Float>()
var x = GenC()
}
// CHECK: typealias MyInt = Int
typealias MyInt = Int
func test2(x: Int) {
// CHECK: "\(x)"
"\(x)"
}
// CHECK: class Observers {
class Observers {
// CHECK: var p1 : Int {
var p1 : Int {
// CHECK: willSet(newValue) {}
willSet(newValue) {}
// CHECK: didSet {}
didSet {}
}
// CHECK: var p2 : Int {
var p2 : Int {
// CHECK: didSet {}
didSet {}
// CHECK: willSet {}
willSet {}
}
}
// CHECK: func test3(o: AnyObject) {
func test3(o: AnyObject) {
// CHECK: let x = o as! MyCls
let x = o as! MyCls
}
// CHECK: func test4(inout a: Int) {{{$}}
func test4(inout a: Int) {
// CHECK: if <#kw>#available#kw> (OSX >= 10.10, iOS >= 8.01) {let OSX = "iOS"}}{{$}}
if #available (OSX >= 10.10, iOS >= 8.01) {let OSX = "iOS"}}
// CHECK: class MySubClass : MyCls {
class MySubClass : MyCls {
// CHECK: override func foo(x: Int) {}
override func foo(x: Int) {}
// CHECK: convenience init(a: Int) {}
convenience init(a: Int) {}
}
// CHECK: var g1 = { (x: Int) -> Int in return 0 }
var g1 = { (x: Int) -> Int in return 0 }
// CHECK: infix operator ~~ {
infix operator ~~ {}
// CHECK: prefix operator *~~ {
prefix operator *~~ {}
// CHECK: postfix operator ~~* {
postfix operator ~~* {}
// FIXME: blah.
// FIXME: blah blah
// Something something, FIXME: blah
// CHECK: // FIXME: blah.
// CHECK: // FIXME: blah blah
// CHECK: // Something something, FIXME: blah
/* FIXME: blah*/
// CHECK: /* FIXME: blah*/
/*
* FIXME: blah
* Blah, blah.
*/
// CHECK: /*
// CHECK: * FIXME: blah
// CHECK: * Blah, blah.
// CHECK: */
// TODO: blah.
/// TTODO: blah.
// MARK: blah.
// CHECK: // TODO: blah.
// CHECK: /// TTODO: blah.
// CHECK: // MARK: blah.
// CHECK: func test5() -> Int {
func test5() -> Int {
// CHECK: // TODO: something, something.
// TODO: something, something.
// CHECK: return 0
return 0
}
// http://whatever.com?ee=2&yy=1 and radar://123456
/* http://whatever.com FIXME: see in http://whatever.com/fixme
http://whatever.com */
// CHECK: // http://whatever.com?ee=2&yy=1 and radar://123456
// CHECK: /* http://whatever.com FIXME: see in http://whatever.com/fixme
// CHECK: http://whatever.com */
// CHECK: // http://whatever.com/what-ever
// http://whatever.com/what-ever
// CHECK: func <#test1#> () {}
func <#test1#> () {}