Module: RaceGuard::SharedState::MemoScanner

Defined in:
lib/race_guard/shared_state/memo_scanner.rb

Overview

Finds @ivar ||= rhs (Parser :or_asgn with :ivasgn LHS) for Epic 6.4.

Defined Under Namespace

Classes: MemoSite

Class Method Summary collapse

Class Method Details

.scan_file(path) ⇒ Object



21
22
23
24
25
# File 'lib/race_guard/shared_state/memo_scanner.rb', line 21

def scan_file(path)
  scan_source(File.read(path, encoding: 'UTF-8'), path: path.to_s)
rescue Errno::ENOENT, ArgumentError
  []
end

.scan_source(source, path: '(eval)') ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/race_guard/shared_state/memo_scanner.rb', line 12

def scan_source(source, path: '(eval)')
  ast = Parser::CurrentRuby.parse(source)
  sites = []
  walk(ast, path, sites)
  sites
rescue Parser::SyntaxError
  []
end