mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
184 lines
4.5 KiB
Swift
184 lines
4.5 KiB
Swift
// This file should not have any syntax or type checker errors.
|
|
// RUN: %swift -parse %s
|
|
|
|
// RUN: %swift-ide-test -print-ast-typechecked -source-filename %s -function-definitions=true -prefer-type-repr=false > %t.printed.txt
|
|
// RUN: FileCheck %s -strict-whitespace < %t.printed.txt
|
|
|
|
// RUN: %swift-ide-test -print-ast-typechecked -source-filename %s -function-definitions=true -prefer-type-repr=true > %t.printed.txt
|
|
// RUN: FileCheck %s -strict-whitespace < %t.printed.txt
|
|
|
|
struct FooStruct {
|
|
// CHECK-LABEL: {{^}}struct FooStruct {{{$}}
|
|
|
|
var instanceVar : Int
|
|
// CHECK-NEXT: {{^}} var instanceVar : Int{{$}}
|
|
|
|
subscript(i: Int) -> Double {
|
|
get:
|
|
return Double(i)
|
|
set(val):
|
|
instanceVar = i
|
|
}
|
|
// CHECK-NEXT: {{^}} subscript (i : Int) -> Double {{{$}}
|
|
// CHECK-NEXT: {{^}} get:{{$}}
|
|
// CHECK: {{^}} set(val):{{$}}
|
|
// CHECK: {{^}} }{{$}}
|
|
|
|
subscript(i: Int, j: Int) -> Double {
|
|
get:
|
|
return Double(i + j)
|
|
set(val):
|
|
instanceVar = i + j
|
|
}
|
|
// CHECK-NEXT: {{^}} subscript (i : Int, j : Int) -> Double {{{$}}
|
|
// CHECK-NEXT: {{^}} get:{{$}}
|
|
// CHECK: {{^}} set(val):{{$}}
|
|
// CHECK: {{^}} }{{$}}
|
|
}
|
|
|
|
extension FooStruct {
|
|
// CHECK-LABEL: {{^}}extension FooStruct {{{$}}
|
|
var extProp : Int {
|
|
get:
|
|
return 42
|
|
set(val):
|
|
}
|
|
// CHECK-NEXT: {{^}} var extProp : Int {{{$}}
|
|
// CHECK-NEXT: {{^}} get:{{$}}
|
|
// CHECK-NEXT: {{^}} return {{$}}
|
|
// CHECK: {{^}} set(val):{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
}
|
|
|
|
//===---
|
|
//===--- Variable declaration printing.
|
|
//===---
|
|
|
|
var topLevelVar1 : Int {
|
|
get: return 42
|
|
}
|
|
// CHECK: {{^}}var topLevelVar1 : Int {{{$}}
|
|
// CHECK-NEXT: {{^}}get:{{$}}
|
|
// CHECK-NEXT: {{^}} return {{$}}
|
|
// CHECK-NEXT: {{^}}}{{$}}
|
|
// CHECK-NOT: topLevelVar1
|
|
|
|
var topLevelVar2 : Int {
|
|
get: return 22
|
|
set: if true {}
|
|
}
|
|
// CHECK: {{^}}var topLevelVar2 : Int {{{$}}
|
|
// CHECK-NEXT: {{^}}get:{{$}}
|
|
// CHECK-NEXT: {{^}} return {{$}}
|
|
// CHECK: {{^}}set:{{$}}
|
|
// CHECK-NEXT: {{^}} if {{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NEXT: {{^}}}{{$}}
|
|
// CHECK-NOT: topLevelVar2
|
|
|
|
var topLevelVar3 : Int {
|
|
get: return 42
|
|
set(foo): if true {}
|
|
}
|
|
// CHECK: {{^}}var topLevelVar3 : Int {{{$}}
|
|
// CHECK-NEXT: {{^}}get:{{$}}
|
|
// CHECK-NEXT: {{^}} return {{$}}
|
|
// CHECK: {{^}}set(foo):{{$}}
|
|
// CHECK: {{^}} if {{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NEXT: {{^}}}{{$}}
|
|
// CHECK-NOT: topLevelVar3
|
|
|
|
class InClassVar1 {
|
|
// CHECK-LABEL: InClassVar1
|
|
|
|
var instanceVar1 : Int {
|
|
get: return 12
|
|
}
|
|
// CHECK: {{^}} var instanceVar1 : Int {{{$}}
|
|
// CHECK-NEXT: {{^}} get:{{$}}
|
|
// CHECK-NEXT: {{^}} return {{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NOT: instanceVar1
|
|
|
|
var instanceVar2 : Int {
|
|
get: return 42
|
|
set: if true {}
|
|
}
|
|
// CHECK-NEXT: {{^}} var instanceVar2 : Int {{{$}}
|
|
// CHECK-NEXT: {{^}} get:{{$}}
|
|
// CHECK-NEXT: {{^}} return {{$}}
|
|
// CHECK: {{^}} set:{{$}}
|
|
// CHECK-NEXT: {{^}} if {{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NOT: instanceVar2
|
|
|
|
var instanceVar3 : Int {
|
|
get: return 42
|
|
set(foo): if true {}
|
|
}
|
|
// CHECK: {{^}} var instanceVar3 : Int {{{$}}
|
|
// CHECK-NEXT: {{^}} get:{{$}}
|
|
// CHECK-NEXT: {{^}} return {{$}}
|
|
// CHECK: {{^}} set(foo):{{$}}
|
|
// CHECK: {{^}} if {{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NOT: instanceVar3
|
|
}
|
|
|
|
//===---
|
|
//===--- Subscript declaration printing.
|
|
//===---
|
|
|
|
class InClassSubscript1 {
|
|
// CHECK-LABEL: InClassSubscript1
|
|
subscript(i : Int) -> Int {
|
|
get: return 42
|
|
set: if true {}
|
|
}
|
|
// CHECK: {{^}} subscript (i : Int) -> Int {{{$}}
|
|
// CHECK-NEXT: {{^}} get:{{$}}
|
|
// CHECK-NEXT: {{^}} return {{$}}
|
|
// CHECK: {{^}} set:{{$}}
|
|
// CHECK-NEXT: {{^}} if {{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NOT: subscript
|
|
}
|
|
|
|
class InClassSubscript2 {
|
|
// CHECK-LABEL: InClassSubscript2
|
|
subscript(i : Int) -> Int {
|
|
get: return 42
|
|
set(value): if true {}
|
|
}
|
|
// CHECK: {{^}} subscript (i : Int) -> Int {{{$}}
|
|
// CHECK-NEXT: {{^}} get:{{$}}
|
|
// CHECK-NEXT: {{^}} return {{$}}
|
|
// CHECK: {{^}} set(value):{{$}}
|
|
// CHECK-NEXT: {{^}} if {{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NOT: subscript
|
|
}
|
|
|
|
class InClassSubscript3 {
|
|
// CHECK-LABEL: InClassSubscript3
|
|
subscript(i : Int) -> Int {
|
|
get: return 42
|
|
set(foo): if true {}
|
|
}
|
|
// CHECK: {{^}} subscript (i : Int) -> Int {{{$}}
|
|
// CHECK-NEXT: {{^}} get:{{$}}
|
|
// CHECK-NEXT: {{^}} return {{$}}
|
|
// CHECK: {{^}} set(foo):{{$}}
|
|
// CHECK-NEXT: {{^}} if {{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NEXT: {{^}} }{{$}}
|
|
// CHECK-NOT: subscript
|
|
}
|
|
|
|
|