Sha256: 0c8537290dd8456df08a39f272030ecebc6acc1342ef2b619312b4a5aaeaf4fe
Contents?: true
Size: 1.89 KB
Versions: 4
Compression:
Stored size: 1.89 KB
Contents
module Steep module Interface class Method attr_reader :type_name attr_reader :name attr_reader :super_method attr_reader :types attr_reader :attributes def initialize(type_name:, name:, types:, super_method:, attributes:) @type_name = type_name @name = name @types = types @super_method = super_method @attributes = attributes end def ==(other) other.is_a?(Method) && other.type_name == type_name && other.name == name && other.types == types && other.super_method == super_method && other.attributes == attributes end def incompatible? attributes.include?(:incompatible) end def private? attributes.include?(:private) end def closed? types.all?(&:closed?) end def subst(s) self.class.new( type_name: type_name, name: name, types: types.map {|type| type.subst(s) }, super_method: super_method&.subst(s), attributes: attributes ) end def with_super(super_method) self.class.new( type_name: type_name, name: name, types: types, super_method: super_method, attributes: attributes ) end def with_types(types) self.class.new( type_name: type_name, name: name, types: types, super_method: super_method, attributes: attributes ) end def map_types with_types(types.map {|type| yield type }) end def include_in_chain?(method) (method.type_name == type_name && method.name == name && method.types == types && method.attributes == attributes) || super_method&.include_in_chain?(method) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
steep-0.11.1 | lib/steep/interface/method.rb |
steep-0.11.0 | lib/steep/interface/method.rb |
steep-0.10.0 | lib/steep/interface/method.rb |
steep-0.9.0 | lib/steep/interface/method.rb |