1
0
Fork 0
mirror of https://github.com/Reuh/anselme.git synced 2025-10-27 16:49:31 +00:00

[stdlib] Add keep return(function)

This commit is contained in:
Étienne Fildadut 2024-01-09 18:06:04 +01:00
parent 87afa51baa
commit 760181eaf9
3 changed files with 18 additions and 0 deletions

View file

@ -27,6 +27,16 @@ Function = ast.abstract.Overloadable {
return Function:new(parameters, ReturnBoundary:new(expression))
end,
-- returns the same function, without the return boundary
-- this does not create a new function scope
without_return_boundary = function(self)
if ReturnBoundary:is(self.expression) then
return Function:new(self.parameters, self.expression.expression, self.scope, self.upvalues)
else
return self
end
end,
_format = function(self, ...)
if self.parameters.assignment then
return "$"..self.parameters:format_short(...).."; "..self.expression:format_right(...)

View file

@ -26,6 +26,13 @@ return {
end
},
{
"keep return", "(f::is function)",
function(state, f)
return f:without_return_boundary()
end
},
{
"_._", "(c::is function, s::is string)",
function(state, c, s)

View file

@ -12,6 +12,7 @@ return [[
:@défini = stdlib.defined
:@surcharge = stdlib.overload
:@préserver retour = stdlib.keep return
:@si = stdlib.if
:@sinon = stdlib.else