tools: accept statement block in attributes
[nit.git] / src / compiler / abstract_compiler.nit
index 94d5ada..b5052cb 100644 (file)
@@ -2351,8 +2351,17 @@ redef class AAttrPropdef
                assert mtype != null
 
                var nexpr = self.n_expr
+               var nblock = self.n_block
                if nexpr != null then
                        value = v.expr(nexpr, mtype)
+               else if nblock != null then
+                       value = v.new_var(mtype)
+                       frame.returnvar = value
+                       frame.returnlabel = v.get_name("RET_LABEL")
+                       v.add("\{")
+                       v.stmt(nblock)
+                       v.add("{frame.returnlabel.as(not null)}:(void)0;")
+                       v.add("\}")
                else
                        abort
                end