summaryrefslogtreecommitdiff
path: root/ext/ripper/test/check-event-arity.rb
blob: 00e1b98dbc906217d683b2942100972d52582ea7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def main
  invalid = false
  table = {}
  ARGF.each do |line|
    next if /\A\#\s*define\s+s?dispatch\d/ === line
    next if /ripper_dispatch\d/ === line
    line.scan(/dispatch(\d)\((\w+)/) do |num, ev|
      num = num.to_i
      if data = table[ev]
        locations, arity = data
        unless num == arity
          invalid = true
          puts "arity differ [#{ev}]: #{ARGF.lineno}->#{num}; #{locations.join(',')}->#{arity}"
        end
        locations.push ARGF.lineno
      else
        table[ev] = [[ARGF.lineno], num.to_i]
      end
    end
  end
  exit 1 if invalid
end

main