// 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 : Array<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"

