Yes, but <https://github.com/apple/swift/pull/2379> uses 
`Builtin.unreachable()` because it:

> "Saves a bit of code size in the standard library by eliminating some
> static strings and function calls."

Clang has both `__builtin_unreachable()` and `llvm_unreachable()`:

<http://clang.llvm.org/docs/LanguageExtensions.html#builtin-unreachable>

<http://llvm.org/docs/CodingStandards.html#assert-liberally>

-- Ben

> On 3 Oct 2016, at 20:01, Robert Widmann <devteam.cod...@gmail.com> wrote:
> 
> fatalError has defaults for its arguments so it can be used as a nullary 
> unreachable function already.
> 
> ~Robert Widmann
> 
>> On Oct 3, 2016, at 2:50 PM, Ben Rimmington via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> Instead of using `fatalError(_:file:line:)` in `default` cases, would a 
>> public `unreachable()` function be more efficient?
>> 
>> e.g. <https://github.com/apple/swift/pull/2379 
>> <https://github.com/apple/swift/pull/2379>>
>> 
>> -- Ben
>> 
>>> On 3 Oct 2016, at 18:50, João Pinheiro via swift-evolution 
>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>> 
>>> -1 from me too.
>>> 
>>> Avoiding having to write "default: break" isn't a good justification to 
>>> introduce new syntax. It would make the understanding of case switches 
>>> harder without providing any real benefit for the syntax bloat.
>>> 
>>> João Pinheiro
>>> 
>>> 
>>>> On 03 Oct 2016, at 19:41, Xiaodi Wu via swift-evolution 
>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>>> 
>>>> -1 from me as well. This suggestion falls into the same category as those 
>>>> about making `else` optional after `guard`, which is repeatedly rejected. 
>>>> Since code is read more often than written, explicit handling of the 
>>>> default case never hurts and can increase clarity. Not having to write 
>>>> `default: break` offers no help in writing correct code and IMO can't 
>>>> justify new syntax or the changing of a well-known control statement.
>>>> 
>>>> On Mon, Oct 3, 2016 at 11:39 AM, Robert Widmann via swift-evolution 
>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>>> -1 in general.  I want smarter exhaustiveness analysis, but I don’t want 
>>>> to be able to ignore cases that “can’t happen” (so say we, writer of bugs) 
>>>> when they’re clearly in the domain of possible values that can be fed to a 
>>>> switch-case.  Exhaustiveness guarantees wellformedness of a program that 
>>>> does happen to go wrong, and makes it much easier to verify the 
>>>> correctness of the flow of control of the containing block because all 
>>>> points from the switch must be covered.  We also don’t have the type-level 
>>>> tools to convince the checker to allow you to remove unreachable cases.  
>>>> If it’s really a problem that you are writing default cases everywhere, 
>>>> just bailout in a fatal error with a nice description.  It never hurts.
>>>> 
>>>> ~Robert Widmann
>>>> 
>>>>> On Oct 3, 2016, at 6:14 AM, Adrian Zubarev via swift-evolution 
>>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>>>> 
>>>>> I know that there is this note in Commonly Rejected Changes 
>>>>> <https://github.com/apple/swift-evolution/blob/master/commonly_proposed.md>:
>>>>> 
>>>>> Remove support for default: in switch and just use case _:: default is 
>>>>> widely used, case _ is too magical, and default is widely precedented in 
>>>>> many C family languages.
>>>>> I really like to use the switch instead of if case for pattern matching, 
>>>>> just because it’s neat block design. I do not want to remove default from 
>>>>> switches because it’s a must have and powerful feature.
>>>>> 
>>>>> I’d like to know why switches must be exhaustive. 
>>>>> 
>>>>> switch someValue {
>>>>>      
>>>>> case …:
>>>>>     // Do something
>>>>>      
>>>>> case …:
>>>>>     // Do something else
>>>>> 
>>>>> default:  
>>>>>     () // useless nop; do nothing when no pattern matched
>>>>> }
>>>>> 
>>>>> // VS:
>>>>> 
>>>>> if case … {
>>>>>      
>>>>> } else if case … {
>>>>>      
>>>>> } else if case … {
>>>>>      
>>>>> } // No need for `else`
>>>>> Can’t we make default optional, or at least on non-enum values?
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> -- 
>>>>> Adrian Zubarev
>>>>> Sent with Airmail
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to