Sha256: 1189e010a929b97264cf24ce9d2b85a76b537637bcd614afe26163950afccf7a

Contents?: true

Size: 1.14 KB

Versions: 12

Compression:

Stored size: 1.14 KB

Contents

module Steep
  module TypeInference
    class ConstantEnv
      attr_reader :context
      attr_reader :factory
      attr_reader :resolver

      def initialize(factory:, context:, resolver:)
        @cache = {}
        @factory = factory
        @context = context
        @resolver = resolver
      end

      def resolve(name)
        decompose_constant(
          resolver.resolve(name, context: context)
        )
      end

      def toplevel(name)
        decompose_constant(
          resolver.table.toplevel[name]
        )
      end

      def constants
        resolver.constants(context).transform_values {|c| decompose_constant(c) }
      end

      def resolve_child(module_name, constant_name)
        decompose_constant(
          resolver.resolve_child(module_name, constant_name)
        )
      end

      def children(module_name)
        resolver.children(module_name).transform_values {|c| decompose_constant(c) }
      end

      def decompose_constant(constant)
        if constant
          [
            factory.type(constant.type),
            constant.name,
            constant.entry
          ]
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
steep-1.3.2 lib/steep/type_inference/constant_env.rb
steep-1.3.1 lib/steep/type_inference/constant_env.rb
steep-1.4.0.dev.1 lib/steep/type_inference/constant_env.rb
steep-1.3.0 lib/steep/type_inference/constant_env.rb
steep-1.3.0.pre.2 lib/steep/type_inference/constant_env.rb
steep-1.3.0.pre.1 lib/steep/type_inference/constant_env.rb
steep-1.2.1 lib/steep/type_inference/constant_env.rb
steep-1.2.0 lib/steep/type_inference/constant_env.rb
steep-1.2.0.pre.1 lib/steep/type_inference/constant_env.rb
steep-1.1.1 lib/steep/type_inference/constant_env.rb
steep-1.1.0 lib/steep/type_inference/constant_env.rb
steep-1.1.0.pre.1 lib/steep/type_inference/constant_env.rb