[PRISM] Resync

This commit is contained in:
Kevin Newton 2024-03-18 09:58:53 -04:00
parent cb029fa4e8
commit c73dd96fe4
No known key found for this signature in database
GPG Key ID: 0EAD74C79EC73F26
3 changed files with 493 additions and 424 deletions

View File

@ -81,14 +81,6 @@ foo[bar] = baz
%w[\C:]
# foo[&bar] = 1
# foo.foo[&bar] = 1
# def foo(&)
# bar[&] = 1
# end
foo[] += 1
foo[] ||= 1
@ -113,18 +105,6 @@ foo.foo[bar] ||= 1
foo.foo[bar] &&= 1
# foo[bar, &baz] += 1
# foo[bar, &baz] ||= 1
# foo[bar, &baz] &&= 1
# foo.foo[bar, &baz] += 1
# foo.foo[bar, &baz] ||= 1
# foo.foo[bar, &baz] &&= 1
def f(*); a[*]; end
def f(*); a[1, *]; end

View File

@ -0,0 +1,89 @@
# frozen_string_literal: true
require_relative "test_helper"
module Prism
class IndexWriteTest < TestCase
def test_keywords_3_3_0
assert_parse_success(<<~RUBY, "3.3.0")
foo[bar: 1] = 1
foo[bar: 1] &&= 1
foo[bar: 1] ||= 1
foo[bar: 1] += 1
RUBY
assert_parse_success(<<~RUBY, "3.3.0")
def foo(**)
bar[**] = 1
bar[**] &&= 1
bar[**] ||= 1
bar[**] += 1
end
RUBY
end
def test_block_3_3_0
assert_parse_success(<<~RUBY, "3.3.0")
foo[&bar] = 1
foo[&bar] &&= 1
foo[&bar] ||= 1
foo[&bar] += 1
RUBY
assert_parse_success(<<~RUBY, "3.3.0")
def foo(&)
bar[&] = 1
bar[&] &&= 1
bar[&] ||= 1
bar[&] += 1
end
RUBY
end
# def test_keywords_latest
# assert_parse_failure(<<~RUBY)
# foo[bar: 1] = 1
# foo[bar: 1] &&= 1
# foo[bar: 1] ||= 1
# foo[bar: 1] += 1
# RUBY
# assert_parse_failure(<<~RUBY)
# def foo(**)
# bar[**] = 1
# bar[**] &&= 1
# bar[**] ||= 1
# bar[**] += 1
# end
# RUBY
# end
# def test_block_latest
# assert_parse_failure(<<~RUBY)
# foo[&bar] = 1
# foo[&bar] &&= 1
# foo[&bar] ||= 1
# foo[&bar] += 1
# RUBY
# assert_parse_failure(<<~RUBY)
# def foo(&)
# bar[&] = 1
# bar[&] &&= 1
# bar[&] ||= 1
# bar[&] += 1
# end
# RUBY
# end
private
def assert_parse_success(source, version = "latest")
assert Prism.parse_success?(source, version: version)
end
def assert_parse_failure(source, version = "latest")
assert Prism.parse_failure?(source, version: version)
end
end
end

File diff suppressed because it is too large Load Diff