diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-06-29 14:13:15 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-29 14:13:15 +0900 |
commit | 685efac05983dee44ce2d96c24f2fcb96a0aebe2 (patch) | |
tree | c1129d340dd7c4c669a3ed22c9a7dcce5cbc9fee | |
parent | 5e1c18290089889c89465ff22cd777a5b6c80fe6 (diff) |
[Bug #18884] `class` cannot be just followed by modifiers
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6064
Merged-By: nobu <nobu@ruby-lang.org>
-rw-r--r-- | parse.y | 2 | ||||
-rw-r--r-- | test/ruby/test_parse.rb | 7 |
2 files changed, 8 insertions, 1 deletions
@@ -9235,7 +9235,7 @@ parse_ident(struct parser_params *p, int c, int cmd_state) return keyword_do_block; return keyword_do; } - if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED))) + if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS))) return kw->id[0]; else { if (kw->id[0] != kw->id[1]) diff --git a/test/ruby/test_parse.rb b/test/ruby/test_parse.rb index 2841e20f6d..1d756441f8 100644 --- a/test/ruby/test_parse.rb +++ b/test/ruby/test_parse.rb @@ -1359,6 +1359,13 @@ x = __ENCODING__ end; end + def test_if_after_class + assert_valid_syntax('module if true; Object end::Kernel; end') + assert_valid_syntax('module while true; break Object end::Kernel; end') + assert_valid_syntax('class if true; Object end::Kernel; end') + assert_valid_syntax('class while true; break Object end::Kernel; end') + end + =begin def test_past_scope_variable assert_warning(/past scope/) {catch {|tag| eval("BEGIN{throw tag}; tap {a = 1}; a")}} |