Sha256: 310e3ad1e460a11c6d49c27d4e8cf5fd260eae77c855e0ffcbb1a9b0a4881ca8
Contents?: true
Size: 1020 Bytes
Versions: 4
Compression:
Stored size: 1020 Bytes
Contents
require 'forwardable' module Yoda module Services class Evaluator extend Forwardable # @return [AST::Vnode] attr_reader :ast # @return [Model::Environment] attr_reader :environment # @return [Typing::Inferencer] attr_reader :inferencer delegate %i(type context_variable_types receiver_type method_candidates node_info) => :tracer # @param ast [::Parser::AST::Node] # @param registry [Model::Environment] def initialize(ast:, environment:) @ast = ast @environment = environment @inferencer = Typing::Inferencer.create_for_root(environment: environment) @lock = Concurrent::ReadWriteLock.new end # @return [void] def evaluate tracer end # @return [Typing::Inferencer::Tracer] def tracer @lock.with_write_lock do @tracer ||= begin inferencer.infer(ast) inferencer.tracer end end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems