summaryrefslogtreecommitdiff
path: root/test/prism/index_write_test.rb
blob: 1c6f7bce89742eeaa21f417c3d4f39b91d832607 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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