@@ -44,7 +44,7 @@ def preprocess(msg)
4444 def assert_error_message ( klass , expected_msg , &blk )
4545 omit unless klass < ErrorHighlight ::CoreExt
4646 err = assert_raise ( klass , &blk )
47- unless klass == ArgumentError && err . message =~ /\A (?:wrong number of arguments|missing keyword|unknown keyword|no keywords accepted)\b /
47+ unless klass == ArgumentError && err . message =~ /\A (?:wrong number of arguments|missing keyword[s]? |unknown keyword[s]? |no keywords accepted)\b /
4848 spot = ErrorHighlight . spot ( err )
4949 if spot
5050 assert_kind_of ( Integer , spot [ :first_lineno ] )
@@ -1502,6 +1502,27 @@ def test_missing_keyword
15021502 end
15031503 end
15041504
1505+ def test_missing_keywords # multiple missing keywords
1506+ lineno = __LINE__
1507+ assert_error_message ( ArgumentError , <<~END ) do
1508+ missing keywords: :kw2, :kw3 (ArgumentError)
1509+
1510+ caller: #{ __FILE__ } :#{ lineno + 16 }
1511+ | keyword_test(kw1: 1)
1512+ ^^^^^^^^^^^^
1513+ callee: #{ __FILE__ } :#{ KEYWORD_TEST_LINENO }
1514+ #{
1515+ MethodDefLocationSupported ?
1516+ "| def keyword_test(kw1:, kw2:, kw3:)
1517+ ^^^^^^^^^^^^" :
1518+ "(cannot highlight method definition; try Ruby 3.5 or later)"
1519+ }
1520+ END
1521+
1522+ keyword_test ( kw1 : 1 )
1523+ end
1524+ end
1525+
15051526 def test_unknown_keyword
15061527 lineno = __LINE__
15071528 assert_error_message ( ArgumentError , <<~END ) do
@@ -1523,6 +1544,27 @@ def test_unknown_keyword
15231544 end
15241545 end
15251546
1547+ def test_unknown_keywords
1548+ lineno = __LINE__
1549+ assert_error_message ( ArgumentError , <<~END ) do
1550+ unknown keywords: :kw4, :kw5 (ArgumentError)
1551+
1552+ caller: #{ __FILE__ } :#{ lineno + 16 }
1553+ | keyword_test(kw1: 1, kw2: 2, kw3: 3, kw4: 4, kw5: 5)
1554+ ^^^^^^^^^^^^
1555+ callee: #{ __FILE__ } :#{ KEYWORD_TEST_LINENO }
1556+ #{
1557+ MethodDefLocationSupported ?
1558+ "| def keyword_test(kw1:, kw2:, kw3:)
1559+ ^^^^^^^^^^^^" :
1560+ "(cannot highlight method definition; try Ruby 3.5 or later)"
1561+ }
1562+ END
1563+
1564+ keyword_test ( kw1 : 1 , kw2 : 2 , kw3 : 3 , kw4 : 4 , kw5 : 5 )
1565+ end
1566+ end
1567+
15261568 WRONG_NUBMER_OF_ARGUMENTS_TEST2_LINENO = __LINE__ + 1
15271569 def wrong_number_of_arguments_test2 (
15281570 long_argument_name_x ,
0 commit comments