aboutsummaryrefslogtreecommitdiff
path: root/test/functional/legacy/036_regexp_character_classes_spec.lua
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2017-05-12 11:41:35 -0400
committerJames McCoy <jamessan@jamessan.com>2017-05-12 17:07:25 -0400
commit901c8fbcdb113173dd7e11adf35d193f6d4b3986 (patch)
treee40d0e7b020605af5275d5725d2b4d0ef40f38b9 /test/functional/legacy/036_regexp_character_classes_spec.lua
parent5ec72aadbf51a729969cb7f9f06cf573fc77da59 (diff)
downloadrneovim-901c8fbcdb113173dd7e11adf35d193f6d4b3986.tar.gz
rneovim-901c8fbcdb113173dd7e11adf35d193f6d4b3986.tar.bz2
rneovim-901c8fbcdb113173dd7e11adf35d193f6d4b3986.zip
regexp_nfa: Fix invalid fallthrough in character class detection
When the end character in a range matches a different standard range (e.g., [0-z]), the range would be incorrectly detected as the class of the end character (CLASS_az). Instead of using a fallthrough, immediately FAIL when the end character doesn't match the expected range.
Diffstat (limited to 'test/functional/legacy/036_regexp_character_classes_spec.lua')
-rw-r--r--test/functional/legacy/036_regexp_character_classes_spec.lua12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/functional/legacy/036_regexp_character_classes_spec.lua b/test/functional/legacy/036_regexp_character_classes_spec.lua
index 110f7dd852..38e8145d1c 100644
--- a/test/functional/legacy/036_regexp_character_classes_spec.lua
+++ b/test/functional/legacy/036_regexp_character_classes_spec.lua
@@ -275,4 +275,16 @@ describe('character classes in regexp', function()
diff(sixlines(string.sub(punct1, 1)..digits..punct2..upper..punct3..
lower..punct4..ctrl2..iso_text))
end)
+ it('does not convert character class ranges to an incorrect class', function()
+ source([[
+ 1 s/\%#=0[0-z]//g
+ 2 s/\%#=1[0-z]//g
+ 3 s/\%#=2[0-z]//g
+ 4 s/\%#=0[^0-z]//g
+ 5 s/\%#=1[^0-z]//g
+ 6 s/\%#=2[^0-z]//g
+ ]])
+ diff(string.rep(ctrl1..punct1..punct4..ctrl2..iso_text..'\n', 3)
+ ..string.rep(digits..punct2..upper..punct3..lower..'\n', 3))
+ end)
end)