// RUN: %target-repl-run-simple-swift | %FileCheck %s

// REQUIRES: swift_repl

:print_decl String
// CHECK: struct String
// CHECK: extension String : _ExpressibleByStringInterpolation

false // CHECK: Bool = false
(1,2) // CHECK: (Int, Int) = (1, 2)
print(10)
print(10)
// CHECK: 10
// CHECK-NEXT: 10

func f() {
  print("Hello")
}
f() // CHECK: Hello

102 // CHECK: Int = 102

var x = 1 // CHECK: x : Int = 1

(x, 2)  // CHECK: (Int, Int) = (1, 2)

var (_, y) = (x,2)  // CHECK: (_, y) : (Int, Int) = (1, 2)

var aString = String() // CHECK: aString : String = ""

"\n\r\t\"' abcd\u{45}\u{01}"  // CHECK: "\n\r\t\"\' abcdE\u{01}"


String(-1) // CHECK: String = "-1"
String(-112312312)  // CHECK: String = "-112312312"
String(4.0)  // CHECK: String = "4.0"

1 +
44
// CHECK: Int = 45{{$}}

123 .
hashValue
// CHECK: Int = 123{{$}}

// Check that we handle unmatched parentheses in REPL.
1+1)

var z = 44
+z
// CHECK: Int = 44{{$}}

+44
// CHECK: Int = 44{{$}}

typealias Foo = Int

var f1 : Foo = 1
var f44 : Foo = 44
f1 +
  f44
// CHECK: Foo = 45{{$}}
+(f44)
// CHECK: Foo = 44{{$}}

1.5
// CHECK: Double = 1.5{{$}}
1.5+2.25
// CHECK: Double = 3.75{{$}}
+1.75
// CHECK: Double = 1.75{{$}}
-1.75
// CHECK: Double = -1.75{{$}}

func r13792487(_ x: Float64) -> Float64 { return x }
r13792487(1234.0)
// CHECK: Float64 = 1234.0{{$}}
r13792487(1234)
// CHECK: Float64 = 1234.0{{$}}

var ab = (1,
2)
// CHECK: (Int, Int) = (1, 2)

var ba = (y:1, x:2)

var f2 : Foo = 2
var xy = (f1, f2)
// CHECK: (Foo, Foo) = (1, 2)

var yx = (y:f1, x:f2)

func sub(x x: Int, y: Int) -> Int { return x - y }

sub(x:1, y:2) // CHECK: Int = -1
sub(x:f1, y:f2) // CHECK: Foo = -1

var array = [1, 2, 3, 4, 5]
// CHECK: array : [Int] = [1, 2, 3, 4, 5]

var dict = [ "Hello" : 1.5 ]
// CHECK: dict : [String : Double] = ["Hello": 1.5]

0..<10
// FIXME: Disabled CHECK for Range<Int> = 0...10 until we get general printing going
// FIXME: Disabled CHECK for 0...10 pending <rdar://problem/11510876>
// (Implement overload resolution)

// Don't crash on this. rdar://14912363
-2...-1

-2 ... -1
// r2 : Range<Int> = -2...-1

String(0)
// CHECK: "0"

for i in 0..<10 { print(i); }
// CHECK: 0
// CHECK-NEXT: 1
// CHECK-NEXT: 2
// CHECK-NEXT: 3
// CHECK-NEXT: 4
// CHECK-NEXT: 5
// CHECK-NEXT: 6
// CHECK-NEXT: 7
// CHECK-NEXT: 8
// CHECK-NEXT: 9

for i in 0..<10 { print(i); }
// CHECK: 0
// CHECK-NEXT: 1
// CHECK-NEXT: 2
// CHECK-NEXT: 3
// CHECK-NEXT: 4
// CHECK-NEXT: 5
// CHECK-NEXT: 6
// CHECK-NEXT: 7
// CHECK-NEXT: 8
// CHECK-NEXT: 9

for c in "foobar".unicodeScalars { print(c) }
// CHECK: f
// CHECK-NEXT: o
// CHECK-NEXT: o
// CHECK-NEXT: b
// CHECK-NEXT: a
// CHECK-NEXT: r

var vec = Array<String>()
// CHECK: vec : [String] = []

// Error recovery
var a : [int]
var a = [Int]()
var b = a.slice[3..<5]

struct Inner<T> {}
struct Outer<T> { var inner : Inner<T> }
Outer<Int>(inner: Inner()) // CHECK: Outer<Int> = REPL.Outer

struct ContainsSlice { var slice : [Int] }
ContainsSlice(slice: [1, 2, 3]) // CHECK: ContainsSlice = REPL.ContainsSlice

struct ContainsGenericSlice<T> { var slice : [T] }
ContainsGenericSlice(slice: [1, 2, 3]) // CHECK: ContainsGenericSlice<Int> = REPL.ContainsGenericSlice
ContainsGenericSlice(slice: [(1, 2), (3, 4)]) // CHECK: ContainsGenericSlice<(Int, Int)> = REPL.ContainsGenericSlice

struct ContainsContainsSlice { var containsSlice : ContainsSlice }
ContainsContainsSlice(containsSlice: ContainsSlice(slice: [1, 2, 3])) // CHECK: ContainsContainsSlice = REPL.ContainsContainsSlice

protocol Proto {
  func foo()
}
extension Double : Proto { 
  func foo() {
    print("Double: \(self)\n", terminator: "") 
  }
}
var pr : Proto = 3.14159
// CHECK: Double: 3.14159
pr.foo()

// erroneous; we'll try again after adding the conformance
pr = "foo"

extension String : Proto {
  func foo() {
    print("String: \(self)\n", terminator: "")
  }
}
pr = "foo"
// CHECK: String: foo
pr.foo()

var _ : ([Int]).Type = type(of: [4])
// CHECK: : ([Int]).Type
var _ : ((Int) -> Int)? = .none
// CHECK: : ((Int) -> Int)?
func chained(f f: @escaping (Int) -> ()) -> Int { return 0 }
chained
// CHECK: : (@escaping (Int) -> ()) -> Int
[chained]
// CHECK: : [(@escaping (Int) -> ()) -> Int]

({97210}())
// CHECK: = 97210
true && true
// CHECK: = true

if ({true}()) { print("yeah1") }
// CHECK: yeah1
if true && true { print("yeah2") }
// CHECK: yeah2
if true && true { if true && true { print("yeah3") } }
// CHECK: yeah3
if true && (true && true) { if true && (true && true) { print("yeah4") } }
// CHECK: yeah4
if true && true { if true && true { print(true && true) } }
// CHECK: true

"ok"
// CHECK: = "ok"

