summaryrefslogtreecommitdiff
path: root/test/ruby/test_parse.rb
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-05-28 21:39:13 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-05-29 00:00:26 +0900
commitc730c25354a18e99b9147c30ecc8f986d6a172f1 (patch)
tree669fc29e3ed575fae33144331ab48ab8427a21fa /test/ruby/test_parse.rb
parentfb568fe724b0c8b2582263ed859ad10f0bd90d38 (diff)
parse.y: warn escaped whitespace
* parse.y (warn_space_char_code): warn whitespace characters escaped with meta/control prefix.
Diffstat (limited to 'test/ruby/test_parse.rb')
-rw-r--r--test/ruby/test_parse.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/ruby/test_parse.rb b/test/ruby/test_parse.rb
index 11a77bacd8..fca8d7484a 100644
--- a/test/ruby/test_parse.rb
+++ b/test/ruby/test_parse.rb
@@ -548,6 +548,19 @@ class TestParse < Test::Unit::TestCase
assert_equal("\x81", eval('"\C-\M-a"'))
assert_equal("\177", eval('"\c?"'))
+
+ assert_warning(/use \\C-\\s/) {assert_equal("\x00", eval('"\C- "'))}
+ assert_warning(/use \\M-\\s/) {assert_equal("\xa0", eval('"\M- "'))}
+ assert_warning(/use \\M-\\C-\\s/) {assert_equal("\x80", eval('"\M-\C- "'))}
+ assert_warning(/use \\C-\\M-\\s/) {assert_equal("\x80", eval('"\C-\M- "'))}
+ assert_warning(/use \\t/) {assert_equal("\x09", eval("\"\\C-\t\""))}
+ assert_warning(/use \\M-\\t/) {assert_equal("\x89", eval("\"\\M-\t\""))}
+ assert_warning(/use \\M-\\t/) {assert_equal("\x89", eval("\"\\M-\\C-\t\""))}
+ assert_warning(/use \\M-\\t/) {assert_equal("\x89", eval("\"\\C-\\M-\t\""))}
+ assert_syntax_error("\"\\C-\x01\"", 'Invalid escape character syntax')
+ assert_syntax_error("\"\\M-\x01\"", 'Invalid escape character syntax')
+ assert_syntax_error("\"\\M-\\C-\x01\"", 'Invalid escape character syntax')
+ assert_syntax_error("\"\\C-\\M-\x01\"", 'Invalid escape character syntax')
end
def test_question
@@ -565,6 +578,19 @@ class TestParse < Test::Unit::TestCase
assert_equal("\u{1234}", eval('?\u1234'))
e = assert_syntax_error('"#{?\u123}"', 'invalid Unicode escape')
assert_not_match(/end-of-input/, e.message)
+
+ assert_warning(/use ?\\C-\\s/) {assert_equal("\x00", eval('?\C- '))}
+ assert_warning(/use ?\\M-\\s/) {assert_equal("\xa0", eval('?\M- '))}
+ assert_warning(/use ?\\M-\\C-\\s/) {assert_equal("\x80", eval('?\M-\C- '))}
+ assert_warning(/use ?\\C-\\M-\\s/) {assert_equal("\x80", eval('?\C-\M- '))}
+ assert_warning(/use ?\\t/) {assert_equal("\x09", eval("?\\C-\t"))}
+ assert_warning(/use ?\\M-\\t/) {assert_equal("\x89", eval("?\\M-\t"))}
+ assert_warning(/use ?\\M-\\t/) {assert_equal("\x89", eval("?\\M-\\C-\t"))}
+ assert_warning(/use ?\\M-\\t/) {assert_equal("\x89", eval("?\\C-\\M-\t"))}
+ assert_syntax_error("?\\C-\x01", 'Invalid escape character syntax')
+ assert_syntax_error("?\\M-\x01", 'Invalid escape character syntax')
+ assert_syntax_error("?\\M-\\C-\x01", 'Invalid escape character syntax')
+ assert_syntax_error("?\\C-\\M-\x01", 'Invalid escape character syntax')
end
def test_percent