From e2de39a227c8c4e99688fbfdc3cfab7e942ecb2e Mon Sep 17 00:00:00 2001 From: Ary Borenszweig <aborenszweig@manas.com.ar> Date: Wed, 26 Nov 2014 19:27:15 -0300 Subject: [PATCH] Fixed crystal_type_id (important for exceptions and re-raising) --- spec/compiler/codegen/primitives_spec.cr | 13 +++++++++++++ src/compiler/crystal/codegen/primitives.cr | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/spec/compiler/codegen/primitives_spec.cr b/spec/compiler/codegen/primitives_spec.cr index fc66279874..44568c96fe 100755 --- a/spec/compiler/codegen/primitives_spec.cr +++ b/spec/compiler/codegen/primitives_spec.cr @@ -73,4 +73,17 @@ describe "Code gen: primitives" do __LINE__ ").to_i.should eq(3) end + + it "codeges crystal_type_id with union type" do + run(" + class Foo + end + + class Bar < Foo + end + + f = Foo.allocate || Bar.allocate + f.crystal_type_id == Foo.allocate.crystal_type_id + ").to_b.should be_true + end end diff --git a/src/compiler/crystal/codegen/primitives.cr b/src/compiler/crystal/codegen/primitives.cr index ce6edf5bbf..8c710923fc 100644 --- a/src/compiler/crystal/codegen/primitives.cr +++ b/src/compiler/crystal/codegen/primitives.cr @@ -382,7 +382,7 @@ class Crystal::CodeGenVisitor < Crystal::Visitor end def codegen_primitive_object_crystal_type_id(node, target_def, call_args) - type_id(type) + type_id(call_args[0], type) end def codegen_primitive_symbol_to_s(node, target_def, call_args) -- GitLab