It is sadly perfectly legal. You need to have either a return type _or_ a property of some kind on the function. If there is no return type but there is at least one property, then the type is inferred. `auto` is only required when there are no properties on the function (though if you put the properties on the right-hand side it might require a return type - I'm not sure). The same goes for variables which are directly initialized. Something like

    static i = 7;

is perfectly legal.

Personally, I think that that's sloppy and that missing the return type (or the type of a variable) should be illegal even with a property, but that's not the way that the language is currently defined.