From 1d2380bb2bc7d0ea7cede52153dc5bc8962c8531 Mon Sep 17 00:00:00 2001 From: Quinton Miller Date: Thu, 15 Aug 2024 00:01:35 +0800 Subject: [PATCH] Remove special behavior for codegen specs using flags --- spec/compiler/codegen/macro_spec.cr | 5 +++++ spec/spec_helper.cr | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/spec/compiler/codegen/macro_spec.cr b/spec/compiler/codegen/macro_spec.cr index 0cae55711568..fcf1092192b4 100644 --- a/spec/compiler/codegen/macro_spec.cr +++ b/spec/compiler/codegen/macro_spec.cr @@ -1885,4 +1885,9 @@ describe "Code gen: macro" do {% end %} )).to_i.should eq(10) end + + it "accepts compile-time flags" do + run("{{ flag?(:foo) ? 1 : 0 }}", flags: %w(foo)).to_i.should eq(1) + run("{{ flag?(:foo) ? 1 : 0 }}", Int32, flags: %w(foo)).should eq(1) + end end diff --git a/spec/spec_helper.cr b/spec/spec_helper.cr index 31412035ff74..64a5b203123d 100644 --- a/spec/spec_helper.cr +++ b/spec/spec_helper.cr @@ -294,7 +294,7 @@ def run(code, filename = nil, inject_primitives = true, debug = Crystal::Debug:: # in the current executable!), so instead we compile # the program and run it, printing the last # expression and using that to compare the result. - if code.includes?(%(require "prelude")) || flags + if code.includes?(%(require "prelude")) ast = Parser.parse(code).as(Expressions) last = ast.expressions.last assign = Assign.new(Var.new("__tempvar"), last) @@ -315,7 +315,9 @@ def run(code, filename = nil, inject_primitives = true, debug = Crystal::Debug:: return SpecRunOutput.new(output) end else - new_program.run(code, filename: filename, debug: debug) + program = new_program + program.flags.concat(flags) if flags + program.run(code, filename: filename, debug: debug) end end @@ -324,10 +326,12 @@ def run(code, return_type : T.class, filename : String? = nil, inject_primitives code = %(require "primitives"\n#{code}) end - if code.includes?(%(require "prelude")) || flags + if code.includes?(%(require "prelude")) fail "TODO: support the prelude in typed codegen specs", file: file else - new_program.run(code, return_type: T, filename: filename, debug: debug) + program = new_program + program.flags.concat(flags) if flags + program.run(code, return_type: T, filename: filename, debug: debug) end end