Sha256: eb1e3721bf6b7a9cb0bc606803e228ddcf59571cc33a28ccef51610df8950889
Contents?: true
Size: 1.46 KB
Versions: 2
Compression:
Stored size: 1.46 KB
Contents
module Yoda module Typing class ConstantResolver # @abstract class Query class << self # @param node [AST::ConstantNode] # @param tracer [Inferencer::Tracer] def from_node(node, tracer: nil) case node.type when :cbase CbaseQuery.new when :empty RelativeBaseQuery.new else MemberQuery.new(parent: from_node(node.base, tracer: tracer), name: node.name.name.to_s, tracer: tracer && NodeTracer.new(node: node, tracer: tracer)) end end def from_string(string, parent: RelativeBaseQuery.new) base, child = string.split("::", 2) case base when nil parent when "" base_query = CbaseQuery.new if child.nil? base_query else from_string(child, parent: base_query) end else base_query = MemberQuery.new(parent: parent, name: base) if child.nil? base_query else from_string(child, parent: base_query) end end end end # @abstract # @return [Query, nil] def parent fail NotImplementedError end # @return [NodeTracer, nil] def tracer nil end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
yoda-language-server-0.9.0 | lib/yoda/typing/constant_resolver/query.rb |
yoda-language-server-0.8.0 | lib/yoda/typing/constant_resolver/query.rb |