@@ -2075,7 +2075,7 @@ def test_it_with_ordinary_parameter
2075
2075
source = "proc { || it }"
2076
2076
errors = [ [ "`it` is not allowed when an ordinary parameter is defined" , 10 ..12 ] ]
2077
2077
2078
- assert_errors expression ( source ) , source , errors
2078
+ assert_errors expression ( source ) , source , errors , check_valid_syntax : RUBY_VERSION >= "3.4.0"
2079
2079
end
2080
2080
2081
2081
def test_regular_expression_with_unknown_regexp_options
@@ -2170,47 +2170,56 @@ def test_assignment_to_literal_in_conditionals
2170
2170
2171
2171
def test_duplicate_pattern_capture
2172
2172
source = <<~RUBY
2173
- () => [a, a]
2174
- () => [a, *a]
2175
- () => {a: a, b: a}
2176
- () => {a: a, **a}
2177
- () => [a, {a:}]
2178
- () => [a, {a: {a: {a: [a]}}}]
2179
- () => a => a
2180
- () => [A => a, {a: b => a}]
2173
+ case (); in [a, a]; end
2174
+ case (); in [a, *a]; end
2175
+ case (); in {a: a, b: a}; end
2176
+ case (); in {a: a, **a}; end
2177
+ case (); in [a, {a:}]; end
2178
+ case (); in [a, {a: {a: {a: [a]}}}]; end
2179
+ case (); in a => a; end
2180
+ case (); in [A => a, {a: b => a}]; end
2181
2181
RUBY
2182
2182
2183
2183
assert_error_messages source , Array . new ( source . lines . length , "duplicated variable name" )
2184
+ refute_error_messages "case (); in [_a, _a]; end"
2184
2185
end
2185
2186
2186
2187
def test_duplicate_pattern_hash_key
2187
- assert_error_messages "() => {a:, a:}" , [ "duplicated key name" , "duplicated variable name" ]
2188
- assert_error_messages "() => {a:1, a:2}" , [ "duplicated key name" ]
2188
+ assert_error_messages "case (); in {a:, a:}; end " , [ "duplicated key name" , "duplicated variable name" ]
2189
+ assert_error_messages "case (); in {a:1, a:2}; end " , [ "duplicated key name" ]
2189
2190
refute_error_messages "case (); in [{a:1}, {a:2}]; end"
2190
2191
end
2191
2192
2192
2193
private
2193
2194
2194
- def check_syntax ( source )
2195
- $VERBOSE, previous = nil , $VERBOSE
2195
+ if RUBY_ENGINE == "ruby"
2196
+ def check_syntax ( source )
2197
+ $VERBOSE, previous = nil , $VERBOSE
2196
2198
2197
- begin
2198
- RubyVM ::InstructionSequence . compile ( source )
2199
- ensure
2200
- $VERBOSE = previous
2199
+ begin
2200
+ RubyVM ::InstructionSequence . compile ( source )
2201
+ ensure
2202
+ $VERBOSE = previous
2203
+ end
2201
2204
end
2202
- end
2203
2205
2204
- def assert_valid_syntax ( source )
2205
- check_syntax ( source )
2206
- end
2206
+ def assert_valid_syntax ( source )
2207
+ check_syntax ( source )
2208
+ end
2207
2209
2208
- def refute_valid_syntax ( source )
2209
- assert_raise ( SyntaxError ) { check_syntax ( source ) }
2210
+ def refute_valid_syntax ( source )
2211
+ assert_raise ( SyntaxError ) { check_syntax ( source ) }
2212
+ end
2213
+ else
2214
+ def assert_valid_syntax ( source )
2215
+ end
2216
+
2217
+ def refute_valid_syntax ( source )
2218
+ end
2210
2219
end
2211
2220
2212
- def assert_errors ( expected , source , errors )
2213
- refute_valid_syntax ( source ) if RUBY_ENGINE == "ruby"
2221
+ def assert_errors ( expected , source , errors , check_valid_syntax : true )
2222
+ refute_valid_syntax ( source ) if check_valid_syntax
2214
2223
2215
2224
result = Prism . parse ( source )
2216
2225
node = result . value . statements . body . last
@@ -2220,13 +2229,13 @@ def assert_errors(expected, source, errors)
2220
2229
end
2221
2230
2222
2231
def assert_error_messages ( source , errors )
2223
- refute_valid_syntax ( source ) if RUBY_ENGINE == "ruby"
2232
+ refute_valid_syntax ( source )
2224
2233
result = Prism . parse ( source )
2225
2234
assert_equal ( errors , result . errors . map ( &:message ) )
2226
2235
end
2227
2236
2228
2237
def refute_error_messages ( source )
2229
- assert_valid_syntax ( source ) if RUBY_ENGINE == "ruby"
2238
+ assert_valid_syntax ( source )
2230
2239
assert Prism . parse_success? ( source )
2231
2240
end
2232
2241
0 commit comments