mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Fix indentation
This commit is contained in:
parent
640fd94eff
commit
5823f6c25b
1 changed files with 187 additions and 187 deletions
|
@ -23,10 +23,10 @@ ruby_version_is "2.7" do
|
|||
it "extends case expression with case/in construction" do
|
||||
eval(<<~RUBY).should == :bar
|
||||
case [0, 1]
|
||||
in [0]
|
||||
:foo
|
||||
in [0, 1]
|
||||
:bar
|
||||
in [0]
|
||||
:foo
|
||||
in [0, 1]
|
||||
:bar
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -34,8 +34,8 @@ ruby_version_is "2.7" do
|
|||
it "allows using then operator" do
|
||||
eval(<<~RUBY).should == :bar
|
||||
case [0, 1]
|
||||
in [0] then :foo
|
||||
in [0, 1] then :bar
|
||||
in [0] then :foo
|
||||
in [0, 1] then :bar
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -59,8 +59,8 @@ ruby_version_is "2.7" do
|
|||
it "binds variables" do
|
||||
eval(<<~RUBY).should == 1
|
||||
case [0, 1]
|
||||
in [0, a]
|
||||
a
|
||||
in [0, a]
|
||||
a
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -69,8 +69,8 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~RUBY
|
||||
case []
|
||||
when 1 == 1
|
||||
in []
|
||||
when 1 == 1
|
||||
in []
|
||||
end
|
||||
RUBY
|
||||
}.should raise_error(SyntaxError, /syntax error, unexpected `in'/)
|
||||
|
@ -78,8 +78,8 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~RUBY
|
||||
case []
|
||||
in []
|
||||
when 1 == 1
|
||||
in []
|
||||
when 1 == 1
|
||||
end
|
||||
RUBY
|
||||
}.should raise_error(SyntaxError, /syntax error, unexpected `when'/)
|
||||
|
@ -88,12 +88,12 @@ ruby_version_is "2.7" do
|
|||
it "checks patterns until the first matching" do
|
||||
eval(<<~RUBY).should == :bar
|
||||
case [0, 1]
|
||||
in [0]
|
||||
:foo
|
||||
in [0, 1]
|
||||
:bar
|
||||
in [0, 1]
|
||||
:baz
|
||||
in [0]
|
||||
:foo
|
||||
in [0, 1]
|
||||
:bar
|
||||
in [0, 1]
|
||||
:baz
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -101,10 +101,10 @@ ruby_version_is "2.7" do
|
|||
it "executes else clause if no pattern matches" do
|
||||
eval(<<~RUBY).should == false
|
||||
case [0, 1]
|
||||
in [0]
|
||||
true
|
||||
else
|
||||
false
|
||||
in [0]
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -113,7 +113,7 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~RUBY
|
||||
case [0, 1]
|
||||
in [0]
|
||||
in [0]
|
||||
end
|
||||
RUBY
|
||||
}.should raise_error(NoMatchingPatternError, /\[0, 1\]/)
|
||||
|
@ -123,8 +123,8 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~RUBY
|
||||
case 0
|
||||
in 1 + 1
|
||||
true
|
||||
in 1 + 1
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
}.should raise_error(SyntaxError, /unexpected/)
|
||||
|
@ -134,8 +134,8 @@ ruby_version_is "2.7" do
|
|||
it "supports if guard" do
|
||||
eval(<<~RUBY).should == false
|
||||
case 0
|
||||
in 0 if false
|
||||
true
|
||||
in 0 if false
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -143,8 +143,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval(<<~RUBY).should == true
|
||||
case 0
|
||||
in 0 if true
|
||||
true
|
||||
in 0 if true
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -154,8 +154,8 @@ ruby_version_is "2.7" do
|
|||
it "supports unless guard" do
|
||||
eval(<<~RUBY).should == false
|
||||
case 0
|
||||
in 0 unless true
|
||||
true
|
||||
in 0 unless true
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -163,8 +163,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval(<<~RUBY).should == true
|
||||
case 0
|
||||
in 0 unless false
|
||||
true
|
||||
in 0 unless false
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -174,8 +174,8 @@ ruby_version_is "2.7" do
|
|||
it "makes bound variables visible in guard" do
|
||||
eval(<<~RUBY).should == true
|
||||
case [0, 1]
|
||||
in [a, 1] if a >= 0
|
||||
true
|
||||
in [a, 1] if a >= 0
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -183,7 +183,7 @@ ruby_version_is "2.7" do
|
|||
it "does not evaluate guard if pattern does not match" do
|
||||
eval <<~RUBY
|
||||
case 0
|
||||
in 1 if (ScratchPad << :foo) || true
|
||||
in 1 if (ScratchPad << :foo) || true
|
||||
else
|
||||
end
|
||||
RUBY
|
||||
|
@ -194,10 +194,10 @@ ruby_version_is "2.7" do
|
|||
it "takes guards into account when there are several matching patterns" do
|
||||
eval(<<~RUBY).should == :bar
|
||||
case 0
|
||||
in 0 if false
|
||||
:foo
|
||||
in 0 if true
|
||||
:bar
|
||||
in 0 if false
|
||||
:foo
|
||||
in 0 if true
|
||||
:bar
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -205,8 +205,8 @@ ruby_version_is "2.7" do
|
|||
it "executes else clause if no guarded pattern matches" do
|
||||
eval(<<~RUBY).should == false
|
||||
case 0
|
||||
in 0 if false
|
||||
true
|
||||
in 0 if false
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -217,7 +217,7 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~RUBY
|
||||
case [0, 1]
|
||||
in [0, 1] if false
|
||||
in [0, 1] if false
|
||||
end
|
||||
RUBY
|
||||
}.should raise_error(NoMatchingPatternError, /\[0, 1\]/)
|
||||
|
@ -228,36 +228,36 @@ ruby_version_is "2.7" do
|
|||
it "matches an object such that pattern === object" do
|
||||
eval(<<~RUBY).should == true
|
||||
case 0
|
||||
in 0
|
||||
true
|
||||
in 0
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
|
||||
eval(<<~RUBY).should == true
|
||||
case 0
|
||||
in (-1..1)
|
||||
true
|
||||
in (-1..1)
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
|
||||
eval(<<~RUBY).should == true
|
||||
case 0
|
||||
in Integer
|
||||
true
|
||||
in Integer
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
|
||||
eval(<<~RUBY).should == true
|
||||
case "0"
|
||||
in /0/
|
||||
true
|
||||
in /0/
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
|
||||
eval(<<~RUBY).should == true
|
||||
case "0"
|
||||
in ->(s) { s == "0" }
|
||||
true
|
||||
in ->(s) { s == "0" }
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -267,8 +267,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval(<<~RUBY).should == true
|
||||
case "x"
|
||||
in "#{x + ""}"
|
||||
true
|
||||
in "#{x + ""}"
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -278,8 +278,8 @@ ruby_version_is "2.7" do
|
|||
it "matches a value and binds variable name to this value" do
|
||||
eval(<<~RUBY).should == 0
|
||||
case 0
|
||||
in a
|
||||
a
|
||||
in a
|
||||
a
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -287,7 +287,7 @@ ruby_version_is "2.7" do
|
|||
it "makes bounded variable visible outside a case statement scope" do
|
||||
eval(<<~RUBY).should == 0
|
||||
case 0
|
||||
in a
|
||||
in a
|
||||
end
|
||||
|
||||
a
|
||||
|
@ -297,9 +297,9 @@ ruby_version_is "2.7" do
|
|||
it "create local variables even if a pattern doesn't match" do
|
||||
eval(<<~RUBY).should == [0, nil, nil]
|
||||
case 0
|
||||
in a
|
||||
in b
|
||||
in c
|
||||
in a
|
||||
in b
|
||||
in c
|
||||
end
|
||||
|
||||
[a, b, c]
|
||||
|
@ -309,8 +309,8 @@ ruby_version_is "2.7" do
|
|||
it "allow using _ name to drop values" do
|
||||
eval(<<~RUBY).should == 0
|
||||
case [0, 1]
|
||||
in [a, _]
|
||||
a
|
||||
in [a, _]
|
||||
a
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -318,8 +318,8 @@ ruby_version_is "2.7" do
|
|||
it "supports using _ in a pattern several times" do
|
||||
eval(<<~RUBY).should == true
|
||||
case [0, 1, 2]
|
||||
in [0, _, _]
|
||||
true
|
||||
in [0, _, _]
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -327,15 +327,15 @@ ruby_version_is "2.7" do
|
|||
it "supports using any name with _ at the beginning in a pattern several times" do
|
||||
eval(<<~RUBY).should == true
|
||||
case [0, 1, 2]
|
||||
in [0, _x, _x]
|
||||
true
|
||||
in [0, _x, _x]
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
|
||||
eval(<<~RUBY).should == true
|
||||
case {a: 0, b: 1, c: 2}
|
||||
in {a: 0, b: _x, c: _x}
|
||||
true
|
||||
in {a: 0, b: _x, c: _x}
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -344,7 +344,7 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~RUBY
|
||||
case [0]
|
||||
in [a, a]
|
||||
in [a, a]
|
||||
end
|
||||
RUBY
|
||||
}.should raise_error(SyntaxError, /duplicated variable name/)
|
||||
|
@ -355,8 +355,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval(<<~RUBY).should == true
|
||||
case 0
|
||||
in ^a
|
||||
true
|
||||
in ^a
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -364,15 +364,15 @@ ruby_version_is "2.7" do
|
|||
it "allows applying ^ operator to bound variables" do
|
||||
eval(<<~RUBY).should == 1
|
||||
case [1, 1]
|
||||
in [n, ^n]
|
||||
n
|
||||
in [n, ^n]
|
||||
n
|
||||
end
|
||||
RUBY
|
||||
|
||||
eval(<<~RUBY).should == false
|
||||
case [1, 2]
|
||||
in [n, ^n]
|
||||
true
|
||||
in [n, ^n]
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -383,8 +383,8 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~RUBY
|
||||
case [1, 2]
|
||||
in [^n, n]
|
||||
true
|
||||
in [^n, n]
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -397,8 +397,8 @@ ruby_version_is "2.7" do
|
|||
it "matches if any of patterns matches" do
|
||||
eval(<<~RUBY).should == true
|
||||
case 0
|
||||
in 0 | 1 | 2
|
||||
true
|
||||
in 0 | 1 | 2
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -407,7 +407,7 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~RUBY
|
||||
case [0, 1]
|
||||
in [0, 0] | [0, a]
|
||||
in [0, 0] | [0, a]
|
||||
end
|
||||
RUBY
|
||||
}.should raise_error(SyntaxError, /illegal variable in alternative pattern/)
|
||||
|
@ -416,10 +416,10 @@ ruby_version_is "2.7" do
|
|||
it "support underscore prefixed variables in alternation" do
|
||||
eval(<<~RUBY).should == true
|
||||
case [0, 1]
|
||||
in [1, _]
|
||||
false
|
||||
in [0, 0] | [0, _a]
|
||||
true
|
||||
in [1, _]
|
||||
false
|
||||
in [0, 0] | [0, _a]
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -429,8 +429,8 @@ ruby_version_is "2.7" do
|
|||
it "binds a variable to a value if pattern matches" do
|
||||
eval(<<~RUBY).should == 0
|
||||
case 0
|
||||
in Integer => n
|
||||
n
|
||||
in Integer => n
|
||||
n
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -438,8 +438,8 @@ ruby_version_is "2.7" do
|
|||
it "can be used as a nested pattern" do
|
||||
eval(<<~RUBY).should == [2, 3]
|
||||
case [1, [2, 3]]
|
||||
in [1, Array => ary]
|
||||
ary
|
||||
in [1, Array => ary]
|
||||
ary
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -449,8 +449,8 @@ ruby_version_is "2.7" do
|
|||
it "supports form Constant(pat, pat, ...)" do
|
||||
eval(<<~RUBY).should == true
|
||||
case [0, 1, 2]
|
||||
in Array(0, 1, 2)
|
||||
true
|
||||
in Array(0, 1, 2)
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -458,8 +458,8 @@ ruby_version_is "2.7" do
|
|||
it "supports form Constant[pat, pat, ...]" do
|
||||
eval(<<~RUBY).should == true
|
||||
case [0, 1, 2]
|
||||
in Array[0, 1, 2]
|
||||
true
|
||||
in Array[0, 1, 2]
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -467,8 +467,8 @@ ruby_version_is "2.7" do
|
|||
it "supports form [pat, pat, ...]" do
|
||||
eval(<<~RUBY).should == true
|
||||
case [0, 1, 2]
|
||||
in [0, 1, 2]
|
||||
true
|
||||
in [0, 1, 2]
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -476,22 +476,22 @@ ruby_version_is "2.7" do
|
|||
it "supports form pat, pat, ..." do
|
||||
eval(<<~RUBY).should == true
|
||||
case [0, 1, 2]
|
||||
in 0, 1, 2
|
||||
true
|
||||
in 0, 1, 2
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
|
||||
eval(<<~RUBY).should == 1
|
||||
case [0, 1, 2]
|
||||
in 0, a, 2
|
||||
a
|
||||
in 0, a, 2
|
||||
a
|
||||
end
|
||||
RUBY
|
||||
|
||||
eval(<<~RUBY).should == [1, 2]
|
||||
case [0, 1, 2]
|
||||
in 0, *rest
|
||||
rest
|
||||
in 0, *rest
|
||||
rest
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -502,8 +502,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval(<<~RUBY).should == true
|
||||
case obj
|
||||
in [Integer, Integer]
|
||||
true
|
||||
in [Integer, Integer]
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -511,8 +511,8 @@ ruby_version_is "2.7" do
|
|||
it "does not match object if Constant === object returns false" do
|
||||
eval(<<~RUBY).should == false
|
||||
case [0, 1, 2]
|
||||
in String[0, 1, 2]
|
||||
true
|
||||
in String[0, 1, 2]
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -524,8 +524,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval(<<~RUBY).should == false
|
||||
case obj
|
||||
in Object[]
|
||||
true
|
||||
in Object[]
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -539,7 +539,7 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~RUBY
|
||||
case obj
|
||||
in Object[]
|
||||
in Object[]
|
||||
else
|
||||
end
|
||||
RUBY
|
||||
|
@ -552,8 +552,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval(<<~RUBY).should == false
|
||||
case obj
|
||||
in Object[0]
|
||||
true
|
||||
in Object[0]
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -563,8 +563,8 @@ ruby_version_is "2.7" do
|
|||
it "binds variables" do
|
||||
eval(<<~RUBY).should == [0, 1, 2]
|
||||
case [0, 1, 2]
|
||||
in [a, b, c]
|
||||
[a, b, c]
|
||||
in [a, b, c]
|
||||
[a, b, c]
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -572,8 +572,8 @@ ruby_version_is "2.7" do
|
|||
it "supports splat operator *rest" do
|
||||
eval(<<~RUBY).should == [1, 2]
|
||||
case [0, 1, 2]
|
||||
in [0, *rest]
|
||||
rest
|
||||
in [0, *rest]
|
||||
rest
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -581,8 +581,8 @@ ruby_version_is "2.7" do
|
|||
it "does not match partially by default" do
|
||||
eval(<<~RUBY).should == false
|
||||
case [0, 1, 2, 3]
|
||||
in [1, 2]
|
||||
true
|
||||
in [1, 2]
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -592,15 +592,15 @@ ruby_version_is "2.7" do
|
|||
it "does match partially from the array beginning if list + , syntax used" do
|
||||
eval(<<~RUBY).should == true
|
||||
case [0, 1, 2, 3]
|
||||
in [0, 1,]
|
||||
true
|
||||
in [0, 1,]
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
|
||||
eval(<<~RUBY).should == true
|
||||
case [0, 1, 2, 3]
|
||||
in 0, 1,;
|
||||
true
|
||||
in 0, 1,;
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -608,8 +608,8 @@ ruby_version_is "2.7" do
|
|||
it "matches [] with []" do
|
||||
eval(<<~RUBY).should == true
|
||||
case []
|
||||
in []
|
||||
true
|
||||
in []
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -617,8 +617,8 @@ ruby_version_is "2.7" do
|
|||
it "matches anything with *" do
|
||||
eval(<<~RUBY).should == true
|
||||
case [0, 1]
|
||||
in *;
|
||||
true
|
||||
in *;
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -628,8 +628,8 @@ ruby_version_is "2.7" do
|
|||
it "supports form Constant(id: pat, id: pat, ...)" do
|
||||
eval(<<~RUBY).should == true
|
||||
case {a: 0, b: 1}
|
||||
in Hash(a: 0, b: 1)
|
||||
true
|
||||
in Hash(a: 0, b: 1)
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -637,8 +637,8 @@ ruby_version_is "2.7" do
|
|||
it "supports form Constant[id: pat, id: pat, ...]" do
|
||||
eval(<<~RUBY).should == true
|
||||
case {a: 0, b: 1}
|
||||
in Hash[a: 0, b: 1]
|
||||
true
|
||||
in Hash[a: 0, b: 1]
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -646,8 +646,8 @@ ruby_version_is "2.7" do
|
|||
it "supports form {id: pat, id: pat, ...}" do
|
||||
eval(<<~RUBY).should == true
|
||||
case {a: 0, b: 1}
|
||||
in {a: 0, b: 1}
|
||||
true
|
||||
in {a: 0, b: 1}
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -655,22 +655,22 @@ ruby_version_is "2.7" do
|
|||
it "supports form id: pat, id: pat, ..." do
|
||||
eval(<<~RUBY).should == true
|
||||
case {a: 0, b: 1}
|
||||
in a: 0, b: 1
|
||||
true
|
||||
in a: 0, b: 1
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
|
||||
eval(<<~RUBY).should == [0, 1]
|
||||
case {a: 0, b: 1}
|
||||
in a: a, b: b
|
||||
[a, b]
|
||||
in a: a, b: b
|
||||
[a, b]
|
||||
end
|
||||
RUBY
|
||||
|
||||
eval(<<~RUBY).should == { b: 1, c: 2 }
|
||||
case {a: 0, b: 1, c: 2}
|
||||
in a: 0, **rest
|
||||
rest
|
||||
in a: 0, **rest
|
||||
rest
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -678,40 +678,40 @@ ruby_version_is "2.7" do
|
|||
it "supports a: which means a: a" do
|
||||
eval(<<~RUBY).should == [0, 1]
|
||||
case {a: 0, b: 1}
|
||||
in Hash(a:, b:)
|
||||
[a, b]
|
||||
in Hash(a:, b:)
|
||||
[a, b]
|
||||
end
|
||||
RUBY
|
||||
|
||||
a = b = nil
|
||||
eval(<<~RUBY).should == [0, 1]
|
||||
case {a: 0, b: 1}
|
||||
in Hash[a:, b:]
|
||||
[a, b]
|
||||
in Hash[a:, b:]
|
||||
[a, b]
|
||||
end
|
||||
RUBY
|
||||
|
||||
a = b = nil
|
||||
eval(<<~RUBY).should == [0, 1]
|
||||
case {a: 0, b: 1}
|
||||
in {a:, b:}
|
||||
[a, b]
|
||||
in {a:, b:}
|
||||
[a, b]
|
||||
end
|
||||
RUBY
|
||||
|
||||
a = nil
|
||||
eval(<<~RUBY).should == [0, {b: 1, c: 2}]
|
||||
case {a: 0, b: 1, c: 2}
|
||||
in {a:, **rest}
|
||||
[a, rest]
|
||||
in {a:, **rest}
|
||||
[a, rest]
|
||||
end
|
||||
RUBY
|
||||
|
||||
a = b = nil
|
||||
eval(<<~RUBY).should == [0, 1]
|
||||
case {a: 0, b: 1}
|
||||
in a:, b:
|
||||
[a, b]
|
||||
in a:, b:
|
||||
[a, b]
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -719,8 +719,8 @@ ruby_version_is "2.7" do
|
|||
it "can mix key (a:) and key-value (a: b) declarations" do
|
||||
eval(<<~RUBY).should == [0, 1]
|
||||
case {a: 0, b: 1}
|
||||
in Hash(a:, b: x)
|
||||
[a, x]
|
||||
in Hash(a:, b: x)
|
||||
[a, x]
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -728,8 +728,8 @@ ruby_version_is "2.7" do
|
|||
it "supports 'string': key literal" do
|
||||
eval(<<~RUBY).should == true
|
||||
case {a: 0}
|
||||
in {"a": 0}
|
||||
true
|
||||
in {"a": 0}
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -738,7 +738,7 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~RUBY
|
||||
case {a: 1}
|
||||
in {"a" => 1}
|
||||
in {"a" => 1}
|
||||
end
|
||||
RUBY
|
||||
}.should raise_error(SyntaxError, /unexpected/)
|
||||
|
@ -750,7 +750,7 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~'RUBY'
|
||||
case {a: 1}
|
||||
in {"#{x}": 1}
|
||||
in {"#{x}": 1}
|
||||
end
|
||||
RUBY
|
||||
}.should raise_error(SyntaxError, /symbol literal with interpolation is not allowed/)
|
||||
|
@ -760,7 +760,7 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~RUBY
|
||||
case {a: 1}
|
||||
in {a: 1, b: 2, a: 3}
|
||||
in {a: 1, b: 2, a: 3}
|
||||
end
|
||||
RUBY
|
||||
}.should raise_error(SyntaxError, /duplicated key name/)
|
||||
|
@ -772,8 +772,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval(<<~RUBY).should == true
|
||||
case obj
|
||||
in {a: 1}
|
||||
true
|
||||
in {a: 1}
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -781,8 +781,8 @@ ruby_version_is "2.7" do
|
|||
it "does not match object if Constant === object returns false" do
|
||||
eval(<<~RUBY).should == false
|
||||
case {a: 1}
|
||||
in String[a: 1]
|
||||
true
|
||||
in String[a: 1]
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -794,8 +794,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval(<<~RUBY).should == false
|
||||
case obj
|
||||
in Object[a: 1]
|
||||
true
|
||||
in Object[a: 1]
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -809,7 +809,7 @@ ruby_version_is "2.7" do
|
|||
-> {
|
||||
eval <<~RUBY
|
||||
case obj
|
||||
in Object[a: 1]
|
||||
in Object[a: 1]
|
||||
end
|
||||
RUBY
|
||||
}.should raise_error(TypeError, /deconstruct_keys must return Hash/)
|
||||
|
@ -821,8 +821,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval(<<~RUBY).should == false
|
||||
case obj
|
||||
in Object[a: 1]
|
||||
true
|
||||
in Object[a: 1]
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -835,8 +835,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval(<<~RUBY).should == false
|
||||
case obj
|
||||
in Object[a: 2]
|
||||
true
|
||||
in Object[a: 2]
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -853,7 +853,7 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval <<~RUBY
|
||||
case obj
|
||||
in Object[a: 1, b: 2, c: 3]
|
||||
in Object[a: 1, b: 2, c: 3]
|
||||
end
|
||||
RUBY
|
||||
|
||||
|
@ -870,7 +870,7 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval <<~RUBY
|
||||
case obj
|
||||
in Object[a: 1, b: 2, **]
|
||||
in Object[a: 1, b: 2, **]
|
||||
end
|
||||
RUBY
|
||||
|
||||
|
@ -887,7 +887,7 @@ ruby_version_is "2.7" do
|
|||
|
||||
eval <<~RUBY
|
||||
case obj
|
||||
in Object[a: 1, **rest]
|
||||
in Object[a: 1, **rest]
|
||||
end
|
||||
RUBY
|
||||
|
||||
|
@ -897,8 +897,8 @@ ruby_version_is "2.7" do
|
|||
it "binds variables" do
|
||||
eval(<<~RUBY).should == [0, 1, 2]
|
||||
case {a: 0, b: 1, c: 2}
|
||||
in {a: x, b: y, c: z}
|
||||
[x, y, z]
|
||||
in {a: x, b: y, c: z}
|
||||
[x, y, z]
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -906,8 +906,8 @@ ruby_version_is "2.7" do
|
|||
it "supports double splat operator **rest" do
|
||||
eval(<<~RUBY).should == {b: 1, c: 2}
|
||||
case {a: 0, b: 1, c: 2}
|
||||
in {a: 0, **rest}
|
||||
rest
|
||||
in {a: 0, **rest}
|
||||
rest
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -915,15 +915,15 @@ ruby_version_is "2.7" do
|
|||
it "treats **nil like there should not be any other keys in a matched Hash" do
|
||||
eval(<<~RUBY).should == true
|
||||
case {a: 1, b: 2}
|
||||
in {a: 1, b: 2, **nil}
|
||||
true
|
||||
in {a: 1, b: 2, **nil}
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
|
||||
eval(<<~RUBY).should == false
|
||||
case {a: 1, b: 2}
|
||||
in {a: 1, **nil}
|
||||
true
|
||||
in {a: 1, **nil}
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
|
@ -933,8 +933,8 @@ ruby_version_is "2.7" do
|
|||
it "can match partially" do
|
||||
eval(<<~RUBY).should == true
|
||||
case {a: 1, b: 2}
|
||||
in {a: 1}
|
||||
true
|
||||
in {a: 1}
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -942,8 +942,8 @@ ruby_version_is "2.7" do
|
|||
it "matches {} with {}" do
|
||||
eval(<<~RUBY).should == true
|
||||
case {}
|
||||
in {}
|
||||
true
|
||||
in {}
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -951,8 +951,8 @@ ruby_version_is "2.7" do
|
|||
it "matches anything with **" do
|
||||
eval(<<~RUBY).should == true
|
||||
case {a: 1}
|
||||
in **;
|
||||
true
|
||||
in **;
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -974,8 +974,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
result = eval(<<~RUBY)
|
||||
case []
|
||||
in [0]
|
||||
true
|
||||
in [0]
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -998,8 +998,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
result = eval(<<~RUBY)
|
||||
case {}
|
||||
in a: 0
|
||||
true
|
||||
in a: 0
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
@ -1022,8 +1022,8 @@ ruby_version_is "2.7" do
|
|||
|
||||
result = eval(<<~RUBY)
|
||||
case {}
|
||||
in Array
|
||||
true
|
||||
in Array
|
||||
true
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue