Unexpectedly nice case of auto return type
mipri
mipri at minimaltype.com
Sat Dec 7 01:05:10 UTC 2019
On Friday, 6 December 2019 at 23:25:30 UTC, Johannes Loher wrote:
> On Tuesday, 3 December 2019 at 10:06:22 UTC, Mike Parker wrote:
>> On Tuesday, 3 December 2019 at 10:03:22 UTC, Basile B. wrote:
>>
>>>
>>> That's interesting details of D developement. Since you reply
>>> to the first message I think you have not followed but in the
>>> last reply I told that maybe we should be able to name the
>>> type of null. I think this relates to TBottom too a bit.
>>
>> https://github.com/dlang/DIPs/blob/40352337053998885fbd0fe2718c300a322d3996/DIPs/DIP1NNN-DK.md
>
> This is everything I wished for. It basically exactly resembles
> the results of the lengthy discussion H. S. Theo and I had in
> the review thread for Walter‘s original bottom type suggestion.
> And it even covers a few additional details we had not thought
> about. I can’t wait for this DIP to go into review. Thanks a
> lot to the DIP author. You have my biggest respect for writing
> a fleshed out proposal of this!
nice.
Kotlin has this as well, with Unit as void and Nothing as
noreturn.
So for example this compiles without complaint:
fun infinite(f: () -> Unit) {
while (true) {
f()
}
}
fun main() {
infinite { println(".") }
println("goodbye")
}
Where 'infinite' has an implcit Unit return type, but this
warns that the "goodbye" will never happen:
fun infinite(f: () -> Unit): Nothing {
while (true) {
f()
}
}
fun main() {
infinite { println(".") }
println("goodbye")
}
This might be more important for resources that never get
closed, or secrets are never scrubbed from memory, due to
someone putting those tasks after a function like 'infinite'
without noticing.
... noreturn local variables are pretty gross, though.
More information about the Digitalmars-d-learn
mailing list