Is there a way to ask the compiler to issue a warning, whenever a proc does not 
have a return statement in all branches?

This came up when I am writing a toy compiler, and in a long proc that has many 
conditional branches, I missed some return statements in some branches. Ofc, I 
can go back/inspect/fix, but without compiler assistance, I don't feel 
completely confident that I covered all the branches and would have to rely on 
a lot of unit tests.

To make this more concrete, this is a toy example of the sort of code I am 
talking about:
    
    
    type
        X = ref Xobj
        Xobj = object
            x: int
        Ret = ref RetObj
        RetObj = object
            y: int
    
    proc fn(x: X): Ret =
        if isNil(x): # just an example, any condition is fine
            echo "ok"
        else:
            echo "ok too"
            return Ret(y:42)
    
    var x: X
    doAssert isNil(fn(x))
    
    
    Run

I thought this might trigger the ProveInit warning, which I can do 
`--warningAsError:ProveInit:on` to detect, but it did not trigger.

I looked at the `strictNotNil` experimental feature, but that doesn't seem to 
be relevant for this case.

Tldr: is there some way to get the compiler to help out with missing return 
statements? 

Reply via email to