# Optional Unwrap case pattern

**URL:** https://talk.remobjects.com/t/optional-unwrap-case-pattern/19435
**Category:** Elements Bugs
**Tags:** silver, swift
**Created:** [May 14, 2019, 12:04am UTC](https://talk.remobjects.com/t/optional-unwrap-case-pattern/19435 "2019-05-14T00:04:47Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![dbroggi](https://talk.remobjects.com/letter_avatar_proxy/v4/letter/d/df788c/32.png) [@dbroggi](https://talk.remobjects.com/u/dbroggi)
#### Post date: [May 14, 2019, 12:04am UTC](https://talk.remobjects.com/t/optional-unwrap-case-pattern/19435/1 "2019-05-14T00:04:47Z")

</div>

**IDE:** _Visual Studio X/Fire_  
**Version:** \_ 10.0.0.2399 (develop)\_  
**Target** (If relevant): _OSX_  
**Description** :  
(A) Swift (since 1.0 IIRC) allows a postfix “?” in a pattern for optionals to match only if the optional is non-nil, and enable further matching on the contained value.

(B) Additionally, the error message seems to be missing the (offending) character “?”.  
**Expected Behavior** :  
Part A:  
Compiles.  
Part B:  
“E: comma or closing parenthesis expected, got “?” [\<file (\<line\>)]”  
**Actual Behavior** :  
“E: comma or closing parenthesis expected, got [\<file (\<line\>)]”  
**Steps** :

```auto
enum F {
    case o(String?)
}
let f = F.o("foo")
switch f {
    case .o(let ov?):
    // ^ Error Here
    // use ov: String
    case .o(nil):
        break
}

```

---

<div class="post-metadata">

### Author: ![RemObjectsSoftware](https://talk.remobjects.com/user_avatar/talk.remobjects.com/remobjectssoftware/32/15947_2.png) [@RemObjectsSoftware](https://talk.remobjects.com/u/RemObjectsSoftware)
#### Post date: [May 14, 2019, 4:59am UTC](https://talk.remobjects.com/t/optional-unwrap-case-pattern/19435/2 "2019-05-14T04:59:29Z")

</div>

Thanks, logged as bugs://82586

---

<div class="post-metadata">

### Author: ![RemObjectsSoftware](https://talk.remobjects.com/user_avatar/talk.remobjects.com/remobjectssoftware/32/15947_2.png) [@RemObjectsSoftware](https://talk.remobjects.com/u/RemObjectsSoftware)
#### Post date: [May 23, 2019, 7:30am UTC](https://talk.remobjects.com/t/optional-unwrap-case-pattern/19435/3 "2019-05-23T07:30:10Z")

</div>

[bugs://82586](https://www.remobjects.com/portal/bugs/?id=82586) got closed with status fixed.

---

<div class="post-metadata">

### Author: ![dbroggi](https://talk.remobjects.com/letter_avatar_proxy/v4/letter/d/df788c/32.png) [@dbroggi](https://talk.remobjects.com/u/dbroggi)
#### Post date: [May 28, 2019, 9:17pm UTC](https://talk.remobjects.com/t/optional-unwrap-case-pattern/19435/4 "2019-05-28T21:17:13Z")

</div>

Adding to report in **Version:** _10.0.0.2407 (develop)_:

If the optional istop level, the combination `word?:` could result, which is not parsed.

```auto
enum F {
    case z
}
let f: F? = F.z
switch f {
    case let iz?: // Syntax error 
        break
    case nil:
        break
}

```

---

<div class="post-metadata">

### Author: ![RemObjectsSoftware](https://talk.remobjects.com/user_avatar/talk.remobjects.com/remobjectssoftware/32/15947_2.png) [@RemObjectsSoftware](https://talk.remobjects.com/u/RemObjectsSoftware)
#### Post date: [May 28, 2019, 9:36pm UTC](https://talk.remobjects.com/t/optional-unwrap-case-pattern/19435/5 "2019-05-28T21:36:13Z")

</div>

[bugs://82586](https://www.remobjects.com/portal/bugs/?id=82586) got reopened.

---

<div class="post-metadata">

### Author: ![RemObjectsSoftware](https://talk.remobjects.com/user_avatar/talk.remobjects.com/remobjectssoftware/32/15947_2.png) [@RemObjectsSoftware](https://talk.remobjects.com/u/RemObjectsSoftware)
#### Post date: [May 29, 2019, 9:28am UTC](https://talk.remobjects.com/t/optional-unwrap-case-pattern/19435/6 "2019-05-29T09:28:05Z")

</div>

[bugs://82586](https://www.remobjects.com/portal/bugs/?id=82586) got closed with status fixed.

---

<div class="post-metadata">

### Author: ![dbroggi](https://talk.remobjects.com/letter_avatar_proxy/v4/letter/d/df788c/32.png) [@dbroggi](https://talk.remobjects.com/u/dbroggi)
#### Post date: [November 23, 2019, 3:55pm UTC](https://talk.remobjects.com/t/optional-unwrap-case-pattern/19435/7 "2019-11-23T15:55:41Z")

</div>

It was fixed for trailing binding patterns, but apparently not for ‘literal’ patterns:  
Version: _10.0.0.2457 (develop)_

```auto
enum F {
	case z
}
let f: F? = F.z
switch f { // E64 Type mismatch, cannot find operator to evaluate "F!" = "F!"
		   // W45 Switch does not cover all values
	case .z?: // E287 Syntax error
			   // E1 colon expected, got "break"
			   // E65 Constant value expected
		break // E287 Syntax error
	case nil:
		break
}

```

---

<div class="post-metadata">

### Author: ![RemObjectsSoftware](https://talk.remobjects.com/user_avatar/talk.remobjects.com/remobjectssoftware/32/15947_2.png) [@RemObjectsSoftware](https://talk.remobjects.com/u/RemObjectsSoftware)
#### Post date: [November 24, 2019, 3:53pm UTC](https://talk.remobjects.com/t/optional-unwrap-case-pattern/19435/8 "2019-11-24T15:53:40Z")

</div>

[bugs://82586](https://www.remobjects.com/portal/bugs/?id=82586) got reopened.

---

<div class="post-metadata">

### Author: ![RemObjectsSoftware](https://talk.remobjects.com/user_avatar/talk.remobjects.com/remobjectssoftware/32/15947_2.png) [@RemObjectsSoftware](https://talk.remobjects.com/u/RemObjectsSoftware)
#### Post date: [November 25, 2019, 10:23am UTC](https://talk.remobjects.com/t/optional-unwrap-case-pattern/19435/9 "2019-11-25T10:23:34Z")

</div>

[bugs://82586](https://www.remobjects.com/portal/bugs/?id=82586) got closed with status fixed.
