Skip to content

Commit 410673c

Browse files
committed
add a bunch of hopeful tests
1 parent 29ea935 commit 410673c

File tree

4 files changed

+94
-0
lines changed

4 files changed

+94
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
2+
// FIXME: make this test work when this enum is move-only
3+
public enum Descriptor {
4+
case stdout
5+
case stderr
6+
case other(Int)
7+
8+
public func message() -> String { return "hello world" }
9+
}
10+
11+
@_moveOnly
12+
public struct File {
13+
14+
#if SYNTHESIZE_ACCESSORS
15+
public var fd: Descriptor = .other(1337)
16+
#else
17+
private var _fd: Descriptor = .other(1337)
18+
public var fd: Descriptor {
19+
_modify { yield &_fd }
20+
_read { yield _fd }
21+
}
22+
#endif
23+
24+
public init() {}
25+
}
26+
27+
public class FileHandle {
28+
#if SYNTHESIZE_ACCESSORS
29+
public var file: File = File()
30+
#else
31+
private var _file: File = File()
32+
public var file: File {
33+
_modify { yield &_file }
34+
_read { yield _file }
35+
}
36+
#endif
37+
38+
#if SYNTHESIZE_ACCESSORS
39+
public let immutableFile: File = File()
40+
#else
41+
public var immutableFile: File {
42+
return File() // still immutable, but now generated fresh each time!
43+
}
44+
#endif
45+
46+
public init() {}
47+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
public class Message { var s: String = "hello" }
3+
4+
@_moveOnly
5+
public struct FileDescriptor {
6+
public var x: Int = 0
7+
public var msg: Message = Message()
8+
}
9+
10+
public class FileHandle {
11+
var file: FileDescriptor = FileDescriptor()
12+
}
13+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// RUN: %empty-directory(%t)
2+
3+
// FIXME: should work without syntize accessors too
4+
// RUN: %target-swift-frontend -DSYNTHESIZE_ACCESSORS -enable-library-evolution -module-name Hello -emit-module -o %t/Hello.swiftmodule -emit-module-interface-path %t/Hello.swiftinterface %S/Inputs/moveonly_simple.swift -enable-experimental-move-only
5+
6+
// rdar://106164128
7+
// XFAIL: *
8+
9+
// TODO: finish this test by verifying the interface with FileCheck
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// RUN: %empty-directory(%t)
2+
3+
// >> first try when no library evolution is specified
4+
// RUN: %target-swift-frontend -DSYNTHESIZE_ACCESSORS -enable-experimental-move-only -emit-module -o %t/Hello.swiftmodule %S/Inputs/moveonly_api.swift
5+
// RUN: %target-swift-frontend -emit-sil -sil-verify-all -enable-experimental-move-only -I %t %s > /dev/null
6+
7+
// >> now again with library evolution; we expect the same result.
8+
// FIXME: move checker doesn't like it when you specify library evolution
9+
// RUN: %target-swift-frontend -DSYNTHESIZE_ACCESSORS -enable-library-evolution -enable-experimental-move-only -emit-module -o %t/Hello.swiftmodule %S/Inputs/moveonly_api.swift
10+
// RUN: %target-swift-frontend -emit-sil -sil-verify-all -enable-experimental-move-only -I %t %s > /dev/null
11+
12+
// FIXME: ideally this would also try executing the program rather than just generating SIL
13+
14+
// FIXME: make this test work when we're not synthesizing the accessors
15+
16+
// rdar://106164128
17+
// XFAIL: *
18+
19+
import Hello
20+
21+
func simpleTest() {
22+
let handle = FileHandle()
23+
let msg = handle.file.fd.message()
24+
print(msg)
25+
}

0 commit comments

Comments
 (0)