Class: Collie::Linter::Rules::RightRecursion
- Defined in:
- lib/collie/linter/rules/right_recursion.rb
Overview
Detects right recursion and suggests left recursion conversion
Instance Method Summary collapse
Methods inherited from Base
#autocorrectable?, #initialize
Constructor Details
This class inherits a constructor from Collie::Linter::Base
Instance Method Details
#check(ast, _context = {}) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/collie/linter/rules/right_recursion.rb', line 13 def check(ast, _context = {}) analyzer = Analyzer::Recursion.new(ast) result = analyzer.analyze result[:right_recursive].each do |rule_name| rule = ast.rules.find { |r| r.name == rule_name } next unless rule add_offense( rule, message: "Rule '#{rule_name}' uses right recursion " \ "(consider left recursion for better LR parser performance)" ) end @offenses end |