I believe the issue in question is Can't define a default value with getter! · Issue #7968 · crystal-lang/crystal · GitHub (the referenced issues are also a good read). Asterite’s comment summarises the issue:
But for me it’s misleading.
property!
means if it’s not set then it will raise. Ifproperty!
allows a default value then it will never raise. And at that point you better useproperty
. Because if a user readsproperty!
in the source code they will think “This can raise” when in fact it’ll never happen.