diff options
author | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2019-03-28 14:22:29 +0000 |
---|---|---|
committer | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2019-03-28 14:22:29 +0000 |
commit | a28aa80c739a1d169649a4da833ef48cfb3465b3 (patch) | |
tree | c2f6bb79c268bd60116b54319ea96f01bb7dda79 /spec/ruby/language | |
parent | 0f64776745ef31e626dec0d42b7fb2a5988397ec (diff) | |
download | ruby-a28aa80c739a1d169649a4da833ef48cfb3465b3.tar.gz |
Update to ruby/spec@e81b3cd
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67361 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/ruby/language')
-rw-r--r-- | spec/ruby/language/alias_spec.rb | 12 | ||||
-rw-r--r-- | spec/ruby/language/fixtures/for_scope.rb | 15 | ||||
-rw-r--r-- | spec/ruby/language/for_spec.rb | 6 | ||||
-rw-r--r-- | spec/ruby/language/method_spec.rb | 1 |
4 files changed, 34 insertions, 0 deletions
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 |