summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2026-03-07 10:39:46 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2026-03-07 10:39:46 +0900
commit55694ad7efc3f8dc6d5c7aefa60ded4c303ed6cf (patch)
treeb242ac448c84eccf336add2fcae6656c19443c8e /parse.y
parentb324803732c8568738a4484be495dcae56997086 (diff)
[Bug #21945] Correctly handle `and?` and similar
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y3
1 files changed, 3 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index b91b141cc6..bcff7918bf 100644
--- a/parse.y
+++ b/parse.y
@@ -6978,6 +6978,9 @@ peek_word_at(struct parser_params *p, const char *str, size_t len, int at)
if (lex_eol_ptr_n_p(p, ptr, len-1)) return false;
if (memcmp(ptr, str, len)) return false;
if (lex_eol_ptr_n_p(p, ptr, len)) return true;
+ switch (ptr[len]) {
+ case '!': case '?': return false;
+ }
return !is_identchar(p, ptr+len, p->lex.pend, p->enc);
}