Skip to content

Commit 2ce30d3

Browse files
committed
Add a few more type-checker crasher addressed by the "occurs" check.
For rdar://problem/19343997, rdar://problem/19924870, and rdar://problem/20771765.
1 parent 26a5de4 commit 2ce30d3

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// RUN: not %target-swift-frontend %s -parse
2+
3+
func ignore<T>(_ parser: (String) -> (T, String)?) -> (String) -> ((), String)? {
4+
return { parser($0).map { _ in () } }
5+
}
6+
func | <T> (left: (String) -> (T, String)?, right: (String) -> ((), String)?) -> (String) -> (T?, String)? {
7+
return { _ in nil }
8+
}
9+
10+
ignore(" " | "\r" | "\t" | "\n")
11+
12+
// Related: rdar://problem/19924870
13+
func unit<T>(_ x: T) -> T? { return x }
14+
func f() -> Int? {
15+
return unit(1) ?? unit(2).map { 1 } ?? nil
16+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// RUN: %target-swift-frontend %s -parse
2+
3+
enum Pattern {
4+
case Specific(title: String?, label: String?, value: AnyObject?)
5+
case General(String)
6+
}
7+
8+
extension Pattern : CustomDebugStringConvertible {
9+
var debugDescription: String {
10+
switch(self) {
11+
case let .Specific(title, label, value):
12+
let elements = [
13+
title.map { "title: \(String(reflecting: $0))" },
14+
label.map { "label: \(String(reflecting: $0))" },
15+
value.map { "value: \(String(reflecting: $0))" }
16+
].flatMap { $0 }
17+
return "x"
18+
case let .General(s):
19+
return ".General(\(String(reflecting: s))))"
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)