diff --git a/spec/ameba/rule/style/redundant_begin_spec.cr b/spec/ameba/rule/style/redundant_begin_spec.cr index 80aae590..b9bb0617 100644 --- a/spec/ameba/rule/style/redundant_begin_spec.cr +++ b/spec/ameba/rule/style/redundant_begin_spec.cr @@ -241,6 +241,27 @@ module Ameba::Rule::Style CRYSTAL end + it "fails if there is a redundant block with string with inner quotes" do + source = expect_issue subject, <<-CRYSTAL + def method + begin + # ^^^^^ error: Redundant `begin` block detected + "'" + rescue + end + end + CRYSTAL + + expect_correction source, <<-CRYSTAL + def method + #{trailing_whitespace} + "'" + rescue + #{trailing_whitespace} + end + CRYSTAL + end + it "fails if there is top level redundant block in a method" do source = expect_issue subject, <<-CRYSTAL def method diff --git a/src/ameba/rule/style/redundant_begin.cr b/src/ameba/rule/style/redundant_begin.cr index 779e4aa8..1a5a7101 100644 --- a/src/ameba/rule/style/redundant_begin.cr +++ b/src/ameba/rule/style/redundant_begin.cr @@ -142,7 +142,7 @@ module Ameba::Rule::Style private def def_redundant_end_loc(lexer) end_loc = def_end_loc = nil - while !(token = lexer.next_token).type.eof? + Tokenizer.new(lexer).run do |token| next unless token.value == Crystal::Keyword::END end_loc, def_end_loc = def_end_loc, token.location