diff --git a/src/ameba/ast/util.cr b/src/ameba/ast/util.cr index 065439fe6..53e1fec61 100644 --- a/src/ameba/ast/util.cr +++ b/src/ameba/ast/util.cr @@ -149,9 +149,7 @@ module Ameba::AST::Util flow_expressions? [node.whens, node.else].flatten, in_loop when Crystal::ExceptionHandler flow_expressions? [node.else || node.body, node.rescues].flatten, in_loop - when Crystal::While, Crystal::Until - flow_expression? node.body, in_loop - when Crystal::Rescue, Crystal::When + when Crystal::While, Crystal::Until, Crystal::Rescue, Crystal::When flow_expression? node.body, in_loop when Crystal::Expressions node.expressions.any? { |exp| flow_expression? exp, in_loop } diff --git a/src/ameba/ast/variabling/assignment.cr b/src/ameba/ast/variabling/assignment.cr index ece19b804..21e6dfdcd 100644 --- a/src/ameba/ast/variabling/assignment.cr +++ b/src/ameba/ast/variabling/assignment.cr @@ -61,9 +61,8 @@ module Ameba::AST # Returns the target node of the variable in this assignment. def target_node case assign = node - when Crystal::Assign then assign.target - when Crystal::OpAssign then assign.target - when Crystal::UninitializedVar then assign.var + when Crystal::UninitializedVar then assign.var + when Crystal::Assign, Crystal::OpAssign then assign.target when Crystal::MultiAssign assign.targets.find(node) do |target| target.is_a?(Crystal::Var) && target.name == variable.name diff --git a/src/ameba/ast/variabling/variable.cr b/src/ameba/ast/variabling/variable.cr index 8b513948c..0affad787 100644 --- a/src/ameba/ast/variabling/variable.cr +++ b/src/ameba/ast/variabling/variable.cr @@ -137,10 +137,10 @@ module Ameba::AST # `false` otherwise. def target_of?(assign) case assign - when Crystal::Assign then eql?(assign.target) - when Crystal::OpAssign then eql?(assign.target) - when Crystal::MultiAssign then assign.targets.any? { |target| eql?(target) } - when Crystal::UninitializedVar then eql?(assign.var) + when Crystal::UninitializedVar then eql?(assign.var) + when Crystal::Assign, Crystal::OpAssign then eql?(assign.target) + when Crystal::MultiAssign + assign.targets.any? { |target| eql?(target) } else false end diff --git a/src/ameba/ast/visitors/scope_visitor.cr b/src/ameba/ast/visitors/scope_visitor.cr index 3ed161d5d..74a336d6b 100644 --- a/src/ameba/ast/visitors/scope_visitor.cr +++ b/src/ameba/ast/visitors/scope_visitor.cr @@ -167,19 +167,19 @@ module Ameba::AST # :nodoc: def visit(node : Crystal::Call) scope = @current_scope - case - when (scope.top_level? || scope.type_definition?) && record_macro?(node) - return false - when scope.type_definition? && accessor_macro?(node) - return false + when (scope.top_level? || scope.type_definition?) && record_macro?(node), + scope.type_definition? && accessor_macro?(node) + false when scope.def? && special_node?(node) scope.arguments.each do |arg| ref = arg.variable.reference(scope) ref.explicit = false end + true + else + true end - true end private def special_node?(node) diff --git a/src/ameba/severity.cr b/src/ameba/severity.cr index 52dd74550..febe52721 100644 --- a/src/ameba/severity.cr +++ b/src/ameba/severity.cr @@ -27,7 +27,7 @@ module Ameba def color : Colorize::Color case self in Error then Colorize::ColorANSI::Red - in Warning then Colorize::ColorANSI::Red + in Warning then Colorize::ColorANSI::Red # ameba:disable Lint/DuplicateBranch in Convention then Colorize::ColorANSI::Blue end end diff --git a/src/ameba/tokenizer.cr b/src/ameba/tokenizer.cr index 86f6aa3bb..a5def1b0e 100644 --- a/src/ameba/tokenizer.cr +++ b/src/ameba/tokenizer.cr @@ -73,11 +73,9 @@ module Ameba block.call token case token.type - when .delimiter_end? - break when .interpolation_start? run_normal_state lexer, break_on_rcurly: true, &block - when .eof? + when .delimiter_end?, .eof? break end end @@ -89,9 +87,7 @@ module Ameba block.call token case token.type - when .string_array_end? - break - when .eof? + when .string_array_end?, .eof? break end end