From a28aa80c739a1d169649a4da833ef48cfb3465b3 Mon Sep 17 00:00:00 2001 From: eregon Date: Thu, 28 Mar 2019 14:22:29 +0000 Subject: Update to ruby/spec@e81b3cd git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67361 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- spec/ruby/language/alias_spec.rb | 12 ++++++++++++ spec/ruby/language/fixtures/for_scope.rb | 15 +++++++++++++++ spec/ruby/language/for_spec.rb | 6 ++++++ spec/ruby/language/method_spec.rb | 1 + 4 files changed, 34 insertions(+) create mode 100644 spec/ruby/language/fixtures/for_scope.rb (limited to 'spec/ruby/language') diff --git a/spec/ruby/language/alias_spec.rb b/spec/ruby/language/alias_spec.rb index 306c2776b4..a7f34146d1 100644 --- a/spec/ruby/language/alias_spec.rb +++ b/spec/ruby/language/alias_spec.rb @@ -244,3 +244,15 @@ describe "The alias keyword" do } end end + +describe "The alias keyword" do + it "can create a new global variable, synonym of the original" do + code = '$a = 1; alias $b $a; p [$a, $b]; $b = 2; p [$a, $b]' + ruby_exe(code).should == "[1, 1]\n[2, 2]\n" + end + + it "can override an existing global variable and make them synonyms" do + code = '$a = 1; $b = 2; alias $b $a; p [$a, $b]; $b = 3; p [$a, $b]' + ruby_exe(code).should == "[1, 1]\n[3, 3]\n" + end +end diff --git a/spec/ruby/language/fixtures/for_scope.rb b/spec/ruby/language/fixtures/for_scope.rb new file mode 100644 index 0000000000..9c44a23a2c --- /dev/null +++ b/spec/ruby/language/fixtures/for_scope.rb @@ -0,0 +1,15 @@ +module ForSpecs + class ForInClassMethod + m = :same_variable_set_outside + + def self.foo + all = [] + for m in [:bar, :baz] + all << m + end + all + end + + READER = -> { m } + end +end diff --git a/spec/ruby/language/for_spec.rb b/spec/ruby/language/for_spec.rb index 7d725430c6..0ad5ea88af 100644 --- a/spec/ruby/language/for_spec.rb +++ b/spec/ruby/language/for_spec.rb @@ -1,4 +1,5 @@ require_relative '../spec_helper' +require_relative 'fixtures/for_scope' # for name[, name]... in expr [do] # body @@ -130,6 +131,11 @@ describe "The for expression" do a.should == 123 end + it "does not try to access variables outside the method" do + ForSpecs::ForInClassMethod.foo.should == [:bar, :baz] + ForSpecs::ForInClassMethod::READER.call.should == :same_variable_set_outside + end + it "returns expr" do for i in 1..3; end.should == (1..3) for i,j in { 1 => 10, 2 => 20 }; end.should == { 1 => 10, 2 => 20 } diff --git a/spec/ruby/language/method_spec.rb b/spec/ruby/language/method_spec.rb index 49837fa638..b0fc521d69 100644 --- a/spec/ruby/language/method_spec.rb +++ b/spec/ruby/language/method_spec.rb @@ -574,6 +574,7 @@ describe "A method" do m(a: 1, b: 2).should == { a: 1, b: 2 } m(*[]).should == {} m(**{}).should == {} + m(**{a: 1, b: 2}, **{a: 4, c: 7}).should == { a: 4, b: 2, c: 7 } lambda { m(2) }.should raise_error(ArgumentError) end -- cgit v1.2.3