Files
swift-mirror/test/IDE/print_ast_tc_function_bodies.swift
Dmitri Hrybenko 448d7cff8e AST Printer: add tests for printing deserialized modules
...and fix bugs found by this.


Swift SVN r8706
2013-09-26 23:17:32 +00:00

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
}