> On Jun 7, 2016, at 3:12 PM, Xiaodi Wu <xiaodi...@gmail.com> wrote:
> 
> On Tue, Jun 7, 2016 at 2:49 PM, Michael Peternell via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> 
> > Am 07.06.2016 um 19:45 schrieb Charles Srstka via swift-evolution 
> > <swift-evolution@swift.org <mailto:swift-evolution@swift.org>>:
> >
> >> On Jun 7, 2016, at 11:47 AM, Brent Royal-Gordon via swift-evolution 
> >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> >>
> >>> I disagree. We are discussing how to annotate a function in some way so 
> >>> that the compiler knows that the code following it will never be executed 
> >>> *and* so a human who reads the declaration knows that it does not return. 
> >>> “Never" is a poor choice for that. Never what? Never return? Never use 
> >>> this function? Never say never again?
> >>
> >> "Never return". That's why it's in the return type slot, right after the 
> >> `->`. If you read it out loud, you'll read "returns Never", which is 
> >> exactly correct.
> >>
> >> NoReturn, on the other hand, does *not* read well in that slot: "returns 
> >> NoReturn". Huh? I mean, I suppose you won't misunderstand it, but it makes 
> >> no sense whatsoever *as a type name*.
> >
> > But it’s *not* a type. You’ll never have an instance of it.
> 
> That's the dictionary definition of a bottom type 
> <https://en.wikipedia.org/wiki/Bottom_type>, though: a type which has no 
> values.
>  
> Since it’s not a type name, it doesn’t make sense that it needs to look like 
> one. What it is doing is telling you something about the behavior of the 
> function itself, not its return value. Its return value, if there were one, 
> is irrelevant, since the function, by its very nature, will never even get to 
> the point where it would return it.
> 
> And that's the dictionary definition of a function where the return type is 
> bottom. This isn't something being made up just for Swift...

What’s the dictionary definition of a do loop? Or a for loop? Or try/catch?

Swift doesn’t do things the same as other languages in lots of places. I don’t 
see why it has to be different here. @noreturn is a clearer description of what 
this construct does.

Charles

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to