diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-03-23 00:40:08 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-03-23 00:40:08 +0000 |
commit | 140512d2225e6fd046ba1bdbcd1a27450f55c233 (patch) | |
tree | ea3c902891394c57d14dc04c3bdcf3ced924423b /spec/ruby/language/rescue_spec.rb | |
parent | 631272ff1587a7a76f75593ec5964493222ca50c (diff) | |
download | ruby-140512d2225e6fd046ba1bdbcd1a27450f55c233.tar.gz |
parse.y: else without rescue
* parse.y (bodystmt): [EXPERIMENTAL] make `else` without `rescue`
a syntax error. [DevelopersMeeting20180315Japan]
https://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20180315Japan
https://docs.google.com/document/d/1RT0ijSo8uJ4Awn3CEvuYkjH0TVeXSYgeAFNmVGYC3ak/edit#
> * do-else-end
> https://twitter.com/joker1007/status/974173396006129664
> https://twitter.com/joker1007/status/974173641347756032
> https://twitter.com/joker1007/status/974176512554369027
> Will be SyntaxError in 2.6-preview2
> All of begin/do/def (experimental)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62901 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/ruby/language/rescue_spec.rb')
-rw-r--r-- | spec/ruby/language/rescue_spec.rb | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/spec/ruby/language/rescue_spec.rb b/spec/ruby/language/rescue_spec.rb index b3de84468b..66a493cd34 100644 --- a/spec/ruby/language/rescue_spec.rb +++ b/spec/ruby/language/rescue_spec.rb @@ -195,18 +195,26 @@ describe "The rescue keyword" do ScratchPad.recorded.should == [:one, :else_ran, :ensure_ran, :outside_begin] end - it "will execute an else block even without rescue and ensure" do - lambda { - eval <<-ruby + else_without_rescue = lambda { + eval <<-ruby begin ScratchPad << :begin else ScratchPad << :else end ruby - }.should complain(/else without rescue is useless/) + } + + ruby_version_is ""..."2.6" do + it "will execute an else block even without rescue and ensure" do + else_without_rescue.should complain(/else without rescue is useless/) + + ScratchPad.recorded.should == [:begin, :else] + end + end - ScratchPad.recorded.should == [:begin, :else] + ruby_version_is "2.6" do + else_without_rescue.should raise_error(SyntaxError) end it "will not execute an else block if an exception was raised" do |