From 7bae52fc5666ceb99e702c0f6a084e2fabcf6e1b Mon Sep 17 00:00:00 2001 From: skandhas Date: Fri, 23 Nov 2012 16:10:14 +0800 Subject: remove redundant LOOP_NORMAL checkups in function:codegen. and fix #561 --- src/codegen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codegen.c b/src/codegen.c index f37a9e331..fd41e3cb8 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -1501,7 +1501,7 @@ codegen(codegen_scope *s, node *tree, int val) case NODE_RETURN: codegen(s, tree, VAL); pop(); - if (s->loop && s->loop->type != LOOP_NORMAL) { + if (s->loop) { genop(s, MKOP_AB(OP_RETURN, cursp(), OP_R_RETURN)); } else { -- cgit v1.2.3 From a316e92da3d9e54c09806f2e231a4c0eed5a8c7d Mon Sep 17 00:00:00 2001 From: skandhas Date: Fri, 23 Nov 2012 16:20:04 +0800 Subject: modify the order of BS BLOCK assert. Because 'BS BLOCK 32' is already defined at line:349 --- test/t/bs_block.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/t/bs_block.rb b/test/t/bs_block.rb index cbfb925fe..ad661720b 100644 --- a/test/t/bs_block.rb +++ b/test/t/bs_block.rb @@ -389,7 +389,7 @@ assert('BS Block [ruby-core:14395]') do t.test_for_bug end -assert("BS Block 32") do +assert("BS Block 33") do module TestReturnFromNestedBlock def self.test 1.times do -- cgit v1.2.3 From 385f129acaa1c84f2d61026b5b240e5f3f70058a Mon Sep 17 00:00:00 2001 From: skandhas Date: Fri, 23 Nov 2012 16:22:24 +0800 Subject: add assert 'BS Block 34' --- test/t/bs_block.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/t/bs_block.rb b/test/t/bs_block.rb index ad661720b..3bd200b4a 100644 --- a/test/t/bs_block.rb +++ b/test/t/bs_block.rb @@ -402,3 +402,17 @@ assert("BS Block 33") do end TestReturnFromNestedBlock.test == :ok end + +assert("BS Block 34") do + module TestReturnFromNestedBlock_BSBlock34 + def self.test + 1.times do + while true + return :ok + end + end + :bad + end + end + TestReturnFromNestedBlock_BSBlock34.test == :ok +end -- cgit v1.2.3 From 6c8d2ca3995bbefa00ca04e5275b103f7e59dcd6 Mon Sep 17 00:00:00 2001 From: skandhas Date: Fri, 23 Nov 2012 16:25:42 +0800 Subject: add assert 'BS Block 35' --- test/t/bs_block.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/t/bs_block.rb b/test/t/bs_block.rb index 3bd200b4a..4bfdc304a 100644 --- a/test/t/bs_block.rb +++ b/test/t/bs_block.rb @@ -416,3 +416,17 @@ assert("BS Block 34") do end TestReturnFromNestedBlock_BSBlock34.test == :ok end + +assert("BS Block 35") do + module TestReturnFromNestedBlock_BSBlock35 + def self.test + 1.times do + until false + return :ok + end + end + :bad + end + end + TestReturnFromNestedBlock_BSBlock35.test == :ok +end -- cgit v1.2.3