@@ 35,12 35,12 @@ class Compiler
attr_reader :variables, :arguments, :syntax, :source, :libs
attr_accessor :filename
- def compile(code = nil, keep_last: false, halt: true)
+ def compile(code = nil, halt: true)
if code
@source[@filename] = code
@sexps = Parser.new(code, filename: filename).parse
end
- compile_sexps(@sexps, options: { syntax: @syntax, locals: @locals }, halt: halt, keep_last: keep_last)
+ compile_sexps(@sexps, options: { syntax: @syntax, locals: @locals }, halt: halt)
end
def mangle_identifier(name)
@@ 60,10 60,10 @@ class Compiler
private
- def compile_sexps(sexps, options:, halt: false, keep_last: false)
+ def compile_sexps(sexps, options:, halt: false)
instructions = sexps
.each_with_index
- .map { |s, i| compile_sexp(s, options.merge(use: i == sexps.size - 1 && keep_last)) }
+ .map { |s, i| compile_sexp(s, options) }
.flatten
.compact
instructions << VM::HALT if halt
@@ 1177,7 1177,7 @@ describe VM do
n))
(fn 2)
END
- instr = c.compile(keep_last: true)
+ instr = c.compile
subject.execute(instr)
end
@@ 1205,7 1205,7 @@ describe VM do
(fn (- n 1))))
(fn 2)
END
- instr = c.compile(keep_last: true)
+ instr = c.compile
subject.execute(instr)
end
@@ 1235,7 1235,7 @@ describe VM do
#f))
(fn 2)
END
- instr = c.compile(keep_last: true)
+ instr = c.compile
subject.execute(instr)
end
@@ 1263,7 1263,7 @@ describe VM do
n))
(fn 2)
END
- instr = c.compile(keep_last: true)
+ instr = c.compile
subject.execute(instr)
end