Such a return can be seen ambiguous.
Users have to use break or continue.
Signed-off-by: Jean Privat <jean@pryen.org>
if ctx != null then variable_ctx = ctx
end
+ # Are we inside a default closure definition ?
+ readable writable var _is_default_closure_definition: Bool = false
+
# Number of nested once
readable writable var _once_count: Int = 0
_escapable = escapable
v.escapable_ctx.push(escapable, null)
+ v.is_default_closure_definition = true
+
super
+ v.is_default_closure_definition = false
+
if n_expr != null then
if v.variable_ctx.unreash == false then
if variable.closure.signature.return_type != null then
do
v.variable_ctx.unreash = true
var t = v.local_property.signature.return_type
+
+ if v.is_default_closure_definition then
+ v.error(self, "Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.")
+ return
+ end
+
var e = n_expr
if e == null and t != null then
v.error(self, "Error: Return without value in a function.")
-alt/base_closure_break_default2_alt1.nit:23,5--10: Error: Return without value in a function.
+alt/base_closure_break_default2_alt1.nit:23,5--10: Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.
-0
-1
-2
-0
-1
-1
-0
+alt/base_closure_break_default2_alt2.nit:24,5--12: Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.
-0
-1
-2
-0
-1
-0
+alt/base_closure_break_default_alt1.nit:23,5--10: Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.
-alt/base_closure_break_default_alt2.nit:24,5--12: Error: Return with value in a procedure.
+alt/base_closure_break_default_alt2.nit:24,5--12: Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.
-0
-1
-2
-3
-0
-1
-0
+alt/base_closure_default1_alt1.nit:23,5--10: Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.
-alt/base_closure_default1_alt2.nit:24,5--12: Error: Return with value in a procedure.
+alt/base_closure_default1_alt2.nit:24,5--12: Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.
-0
-1
-2
-3
-0
-1
-0
+alt/base_closure_default2_alt1.nit:23,5--10: Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.
-alt/base_closure_default2_alt2.nit:24,5--12: Error: Return with value in a procedure.
+alt/base_closure_default2_alt2.nit:24,5--12: Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.
-0
-1
-2
-3
-0
-1
-0
+alt/base_closure_default3_alt1.nit:23,5--10: Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.
-alt/base_closure_default3_alt2.nit:24,5--12: Error: Return with value in a procedure.
+alt/base_closure_default3_alt2.nit:24,5--12: Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.
-0
-1
-2
-3
-0
-1
-0
+alt/base_closure_default4_alt1.nit:23,5--10: Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.
-alt/base_closure_default4_alt2.nit:24,5--13: Error: Return with value in a procedure.
+alt/base_closure_default4_alt2.nit:24,5--13: Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.