> On Jun 7, 2016, at 12:49 PM, Michael Peternell via swift-evolution > <swift-evolution@swift.org> wrote: > >> >> Am 07.06.2016 um 19:45 schrieb Charles Srstka via swift-evolution >> <swift-evolution@swift.org>: >> >>> On Jun 7, 2016, at 11:47 AM, Brent Royal-Gordon via swift-evolution >>> <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. 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. Either it’s going to kill the app via a fatalError >> or something, or we have something like dispatch_main() which will keep >> executing until the program stops, and one way or another, it won’t return. >> >> For that reason, frankly, I don’t understand why we want to change this from >> being an attribute, which seems to me the more natural and logical choice to >> describe this behavior. If we *do* have to change it, though, NoReturn >> conveys the most clearly to the reader what it does. > > +1 for @noreturn > We don't have to change it. > We have to keep it.
+1 from me too. Logically, “does not return" is an annotation: the function doesn’t return something that can’t be returned, it just doesn’t resume execution at the call point. > > -Michael > >> >> Charles >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org >> https://lists.swift.org/mailman/listinfo/swift-evolution > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution