diff options
author | James McCoy <jamessan@jamessan.com> | 2017-05-12 11:41:35 -0400 |
---|---|---|
committer | James McCoy <jamessan@jamessan.com> | 2017-05-12 17:07:25 -0400 |
commit | 901c8fbcdb113173dd7e11adf35d193f6d4b3986 (patch) | |
tree | e40d0e7b020605af5275d5725d2b4d0ef40f38b9 /test/functional/legacy/036_regexp_character_classes_spec.lua | |
parent | 5ec72aadbf51a729969cb7f9f06cf573fc77da59 (diff) | |
download | rneovim-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.lua | 12 |
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) |