syntax/refused_forms.rb
tests/_examples/syntax/refused_forms.rb in the metorex repository.
# Forms Ruby's grammar does not accept raise SyntaxError when the code is
# read, and a range that ends its line takes its end from the next line.
[
"->(x) x + 1",
"-> 42",
"add_ten = x -> x + 10",
"add = (x, y) -> x + y",
"def skipped *\nend",
"def skipped **\nend",
"def skipped &\nend",
"match 1\nwhen 1\nend",
"-> { |x| x }",
"-> do |x| x end",
"->(x) { x + 1 }",
"def kept *; end",
"def kept *\nrest\nend"
].each do |source|
eval(source)
puts("read #{source.inspect}")
rescue SyntaxError
puts("refused #{source.inspect}")
end
span = 1..
2
p(span)
p((3..
))
Output:
refused "->(x) x + 1"
refused "-> 42"
refused "add_ten = x -> x + 10"
refused "add = (x, y) -> x + y"
refused "def skipped *\nend"
refused "def skipped **\nend"
refused "def skipped &\nend"
refused "match 1\nwhen 1\nend"
refused "-> { |x| x }"
refused "-> do |x| x end"
read "->(x) { x + 1 }"
read "def kept *; end"
read "def kept *\nrest\nend"
1..2
3..