steep 1.7.0.dev.1 → 1.7.0.dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +13 -15
  3. data/Rakefile +5 -0
  4. data/gemfile_steep/Gemfile +1 -1
  5. data/gemfile_steep/Gemfile.lock +11 -13
  6. data/lib/steep/ast/types/helper.rb +4 -0
  7. data/lib/steep/ast/types/intersection.rb +7 -0
  8. data/lib/steep/ast/types/record.rb +7 -0
  9. data/lib/steep/ast/types/tuple.rb +7 -0
  10. data/lib/steep/ast/types/union.rb +7 -0
  11. data/lib/steep/drivers/stats.rb +2 -2
  12. data/lib/steep/drivers/validate.rb +4 -2
  13. data/lib/steep/expectations.rb +2 -2
  14. data/lib/steep/interface/builder.rb +336 -360
  15. data/lib/steep/interface/function.rb +69 -6
  16. data/lib/steep/interface/method_type.rb +3 -3
  17. data/lib/steep/interface/shape.rb +69 -18
  18. data/lib/steep/interface/substitution.rb +4 -0
  19. data/lib/steep/node_helper.rb +18 -1
  20. data/lib/steep/services/completion_provider.rb +19 -17
  21. data/lib/steep/services/signature_help_provider.rb +19 -20
  22. data/lib/steep/subtyping/check.rb +10 -16
  23. data/lib/steep/subtyping/result.rb +6 -0
  24. data/lib/steep/test.rb +9 -0
  25. data/lib/steep/type_construction.rb +13 -13
  26. data/lib/steep/type_inference/block_params.rb +11 -3
  27. data/lib/steep/type_inference/context.rb +1 -1
  28. data/lib/steep/type_inference/logic_type_interpreter.rb +1 -1
  29. data/lib/steep/version.rb +1 -1
  30. data/lib/steep.rb +11 -7
  31. data/sig/steep/ast/types/helper.rbs +2 -0
  32. data/sig/steep/ast/types/intersection.rbs +2 -0
  33. data/sig/steep/ast/types/name.rbs +4 -0
  34. data/sig/steep/ast/types/record.rbs +2 -0
  35. data/sig/steep/ast/types/tuple.rbs +2 -0
  36. data/sig/steep/ast/types/union.rbs +2 -0
  37. data/sig/steep/expectations.rbs +1 -1
  38. data/sig/steep/interface/block.rbs +2 -2
  39. data/sig/steep/interface/builder.rbs +94 -108
  40. data/sig/steep/interface/function.rbs +34 -29
  41. data/sig/steep/interface/shape.rbs +23 -4
  42. data/sig/steep/interface/substitution.rbs +2 -0
  43. data/sig/steep/node_helper.rbs +11 -0
  44. data/sig/steep/services/signature_help_provider.rbs +2 -0
  45. data/sig/steep/subtyping/check.rbs +2 -0
  46. data/sig/steep/subtyping/constraints.rbs +2 -2
  47. data/sig/steep/subtyping/result.rbs +5 -1
  48. data/sig/steep/type_construction.rbs +1 -1
  49. data/sig/steep/type_inference/block_params.rbs +2 -2
  50. data/sig/steep/type_inference/context.rbs +2 -0
  51. data/sig/steep.rbs +1 -1
  52. metadata +3 -3
  53. data/sig/steep/type_inference/branch.rbs +0 -15
@@ -878,6 +878,7 @@ module Steep
878
878
  if self_type && method_context!.method
879
879
  if super_def = method_context!.super_method
880
880
  super_method = Interface::Shape::Entry.new(
881
+ private_method: true,
881
882
  method_types: super_def.defs.map {|type_def|
882
883
  decl = TypeInference::MethodCall::MethodDecl.new(
883
884
  method_name: InstanceMethodName.new(
@@ -1812,7 +1813,7 @@ module Steep
1812
1813
  .for_branch(right_node)
1813
1814
  .synthesize(right_node, hint: left_truthy.type, condition: true).to_ary
1814
1815
 
1815
- right_truthy, right_falsy = interpreter.eval(env: left_falsy.env, node: right_node)
1816
+ right_truthy, right_falsy = interpreter.eval(env: right_context.type_env, node: right_node)
1816
1817
 
1817
1818
  case
1818
1819
  when left_falsy.unreachable
@@ -2611,6 +2612,7 @@ module Steep
2611
2612
  end
2612
2613
  end
2613
2614
  rescue RBS::BaseError => exn
2615
+ Steep.logger.warn("hello")
2614
2616
  Steep.logger.warn { "Unexpected RBS error: #{exn.message}" }
2615
2617
  exn.backtrace&.each {|loc| Steep.logger.warn " #{loc}" }
2616
2618
  typing.add_error(Diagnostic::Ruby::UnexpectedError.new(node: node, error: exn))
@@ -3431,16 +3433,16 @@ module Steep
3431
3433
  self_type: self_type,
3432
3434
  class_type: module_context.module_type,
3433
3435
  instance_type: module_context.instance_type,
3434
- variable_bounds: variable_context.upper_bounds
3436
+ variable_bounds: context.variable_context.upper_bounds
3435
3437
  )
3436
3438
  end
3437
3439
 
3438
3440
  def calculate_interface(type, method_name = nil, private:)
3439
- shape = checker.builder.shape(
3440
- type,
3441
- public_only: !private,
3442
- config: builder_config
3443
- )
3441
+ shape = checker.builder.shape(type, builder_config)
3442
+
3443
+ unless private
3444
+ shape = shape&.public_shape
3445
+ end
3444
3446
 
3445
3447
  if method_name
3446
3448
  if shape
@@ -3622,10 +3624,6 @@ module Steep
3622
3624
  end
3623
3625
  end
3624
3626
 
3625
- def inspect
3626
- "#<#{self.class}>"
3627
- end
3628
-
3629
3627
  def with_child_typing(range:)
3630
3628
  constr = with_new_typing(typing.new_child(range))
3631
3629
 
@@ -4353,7 +4351,7 @@ module Steep
4353
4351
  def for_block(body_node, block_params:, block_param_hint:, block_type_hint:, block_block_hint:, block_annotations:, node_type_hint:, block_self_hint:)
4354
4352
  block_param_pairs = block_param_hint && block_params.zip(block_param_hint, block_block_hint, factory: checker.factory)
4355
4353
 
4356
- # @type var param_types_hash: Hash[Symbol, AST::Types::t]
4354
+ # @type var param_types_hash: Hash[Symbol?, AST::Types::t]
4357
4355
  param_types_hash = {}
4358
4356
  if block_param_pairs
4359
4357
  block_param_pairs.each do |param, type|
@@ -4388,10 +4386,12 @@ module Steep
4388
4386
  end
4389
4387
  end
4390
4388
 
4391
- param_types_hash.delete_if {|name, _| SPECIAL_LVAR_NAMES.include?(name) }
4389
+ param_types_hash.delete_if {|name, _| name && SPECIAL_LVAR_NAMES.include?(name) }
4392
4390
 
4393
4391
  param_types = param_types_hash.each.with_object({}) do |pair, hash| #$ Hash[Symbol, [AST::Types::t, AST::Types::t?]]
4394
4392
  name, type = pair
4393
+ # skip unamed arguments `*`, `**` and `&`
4394
+ next if name.nil?
4395
4395
  hash[name] = [type, nil]
4396
4396
  end
4397
4397
 
@@ -57,8 +57,9 @@ module Steep
57
57
 
58
58
  def variable_types
59
59
  each_param.with_object({}) do |param, hash|
60
+ var_name = param.var || next
60
61
  # @type var hash: Hash[Symbol, AST::Types::t?]
61
- hash[param.var] = param.type
62
+ hash[var_name] = param.type
62
63
  end
63
64
  end
64
65
 
@@ -133,10 +134,17 @@ module Steep
133
134
  else
134
135
  var = arg.children[0]
135
136
  type = annotations.var_type(lvar: var)
136
-
137
137
  case arg.type
138
- when :arg, :procarg0
138
+ when :arg
139
139
  default_params << Param.new(var: var, type: type, value: nil, node: arg)
140
+ when :procarg0
141
+ var = arg.children[0]
142
+ if var.is_a?(Symbol)
143
+ default_params << Param.new(var: var, type: type, value: nil, node: arg)
144
+ else
145
+ var = var.children[0]
146
+ default_params << Param.new(var: var, type: type, value: nil, node: arg)
147
+ end
140
148
  when :optarg
141
149
  default_params = trailing_params
142
150
  optional_params << Param.new(var: var, type: type, value: arg.children.last, node: arg)
@@ -125,7 +125,7 @@ module Steep
125
125
  end
126
126
 
127
127
  def upper_bounds
128
- table.each_value.with_object({}) do |type_param, bounds|
128
+ @upper_bounds ||= table.each_value.with_object({}) do |type_param, bounds|
129
129
  if type_param.upper_bound
130
130
  bounds[type_param.name] = type_param.upper_bound
131
131
  end
@@ -593,7 +593,7 @@ module Steep
593
593
  end
594
594
 
595
595
  def try_convert(type, method)
596
- if shape = subtyping.builder.shape(type, public_only: true, config: config)
596
+ if shape = subtyping.builder.shape(type, config)
597
597
  if entry = shape.methods[method]
598
598
  method_type = entry.method_types.find do |method_type|
599
599
  method_type.type.params.optional?
data/lib/steep/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Steep
2
- VERSION = "1.7.0.dev.1"
2
+ VERSION = "1.7.0.dev.3"
3
3
  end
data/lib/steep.rb CHANGED
@@ -186,15 +186,19 @@ module Steep
186
186
  @ui_logger = nil
187
187
  self.log_output = STDERR
188
188
 
189
- def self.measure(message, level: :warn)
189
+ def self.measure(message, level: :warn, threshold: 0.0)
190
190
  start = Time.now
191
- yield
192
- ensure
193
- time = Time.now - start
194
- if level.is_a?(Symbol)
195
- level = Logger.const_get(level.to_s.upcase)
191
+ begin
192
+ yield
193
+ ensure
194
+ time = Time.now - start
195
+ if level.is_a?(Symbol)
196
+ level = Logger.const_get(level.to_s.upcase)
197
+ end
198
+ if time > threshold
199
+ self.logger.log(level) { "#{message} took #{time} seconds" }
200
+ end
196
201
  end
197
- self.logger.log(level) { "#{message} took #{time} seconds" }
198
202
  end
199
203
 
200
204
  def self.log_error(exn, message: "Unexpected error: #{exn.inspect}")
@@ -15,6 +15,8 @@ module Steep
15
15
  module NoChild
16
16
  def each_child: () { (t) -> void } -> void
17
17
  | () -> Enumerator[t, void]
18
+
19
+ def map_type: () { (t) -> t } -> self
18
20
  end
19
21
  end
20
22
  end
@@ -29,6 +29,8 @@ module Steep
29
29
  def each_child: () { (t) -> void } -> void
30
30
  | () -> Enumerator[t, void]
31
31
 
32
+ def map_type: () { (t) -> t } -> t
33
+
32
34
  def level: () -> Array[Integer]
33
35
 
34
36
  def with_location: (untyped new_location) -> Intersection
@@ -51,6 +51,7 @@ module Steep
51
51
  def map_type: () { (t) -> t } -> self
52
52
  end
53
53
 
54
+ # Singleton of a class/module
54
55
  class Singleton < Base
55
56
  def ==: (untyped other) -> bool
56
57
 
@@ -65,13 +66,16 @@ module Steep
65
66
  include Helper::NoChild
66
67
  end
67
68
 
69
+ # An instance of a class/module
68
70
  class Instance < Applying
69
71
  def to_module: () -> Singleton
70
72
  end
71
73
 
74
+ # An interface type
72
75
  class Interface < Applying
73
76
  end
74
77
 
78
+ # Type alias
75
79
  class Alias < Applying
76
80
  end
77
81
  end
@@ -28,6 +28,8 @@ module Steep
28
28
  def each_child: () { (t) -> void } -> void
29
29
  | () -> Enumerator[t, void]
30
30
 
31
+ def map_type: () { (t) -> t } -> Record
32
+
31
33
  def level: () -> Array[Integer]
32
34
 
33
35
  def with_location: (untyped new_location) -> Record
@@ -26,6 +26,8 @@ module Steep
26
26
  def each_child: () { (t) -> void } -> void
27
27
  | () -> Enumerator[t, void]
28
28
 
29
+ def map_type: () { (t) -> t } -> Tuple
30
+
29
31
  def level: () -> Array[Integer]
30
32
 
31
33
  def with_location: (untyped new_location) -> Tuple
@@ -27,6 +27,8 @@ module Steep
27
27
  def each_child: () { (t) -> void } -> void
28
28
  | () -> Enumerator[t, void]
29
29
 
30
+ def map_type: () { (t) -> t } -> t
31
+
30
32
  include Helper::ChildrenLevel
31
33
 
32
34
  def level: () -> Array[Integer]
@@ -19,7 +19,7 @@ module Steep
19
19
 
20
20
  def initialize: (start_position: position, end_position: position, severity: Steep::Diagnostic::LSPFormatter::severity, message: String, code: String) -> void
21
21
 
22
- def self.from_hash: (untyped) -> instance
22
+ def self.from_hash: (untyped) -> Diagnostic
23
23
 
24
24
  def self.from_lsp: (untyped) -> Diagnostic
25
25
 
@@ -25,9 +25,9 @@ module Steep
25
25
 
26
26
  def subst: (Substitution s) -> Block
27
27
 
28
- @fvs: Set[Symbol]
28
+ @fvs: Set[AST::Types::variable]
29
29
 
30
- def free_variables: () -> Set[Symbol]
30
+ def free_variables: () -> Set[AST::Types::variable]
31
31
 
32
32
  def to_s: () -> ::String
33
33
 
@@ -6,161 +6,147 @@ module Steep
6
6
  class Config
7
7
  # Type of `self` type included immediately in the type expression
8
8
  #
9
- attr_reader self_type: AST::Types::t
9
+ attr_reader self_type: AST::Types::t?
10
10
 
11
11
  # Type of `class` type included immediately in the type expression
12
12
  #
13
- attr_reader class_type: AST::Types::t | nil
13
+ attr_reader class_type: AST::Types::t?
14
14
 
15
15
  # Type of `instance` type included immediately in the type expression
16
16
  #
17
- attr_reader instance_type: AST::Types::t | nil
17
+ attr_reader instance_type: AST::Types::t?
18
18
 
19
- # Resolves `self` types included in shape members
20
- #
21
- # * `false` only when the type expression is `self`
22
- #
23
- attr_reader resolve_self: bool
19
+ # Upper bounds of type variables
20
+ attr_reader variable_bounds: Hash[Symbol, AST::Types::t?]
24
21
 
25
- # Resolves `class` types included in shape members
26
- #
27
- # * `false` only when the type expression is `class`
28
- #
29
- attr_reader resolve_class: bool
22
+ def initialize: (self_type: AST::Types::t?, variable_bounds: Hash[Symbol, AST::Types::t?]) -> void
23
+ | (self_type: AST::Types::t?, class_type: AST::Types::t, instance_type: AST::Types::t, variable_bounds: Hash[Symbol, AST::Types::t?]) -> void
30
24
 
31
- # Resolves `instance` types included in shape members
32
- #
33
- # * `false` only when the type expression is `instance`
34
- #
35
- attr_reader resolve_instance: bool
25
+ def subst: () -> Substitution?
36
26
 
37
- attr_reader variable_bounds: Hash[Symbol, AST::Types::t?]
27
+ def self.empty: () -> Config
38
28
 
39
- def initialize: (
40
- self_type: AST::Types::t,
41
- class_type: AST::Types::t | nil,
42
- instance_type: AST::Types::t | nil,
43
- ?resolve_self: bool,
44
- ?resolve_class: bool,
45
- ?resolve_instance: bool,
46
- variable_bounds: Hash[Symbol, AST::Types::t?]
47
- ) -> void
29
+ def upper_bound: (Symbol) -> AST::Types::t?
48
30
 
49
- def update: (
50
- ?self_type: AST::Types::t,
51
- ?class_type: AST::Types::t | nil,
52
- ?instance_type: AST::Types::t | nil,
53
- ?resolve_self: bool,
54
- ?resolve_class: bool,
55
- ?resolve_instance: bool,
56
- ?variable_bounds: Hash[Symbol, AST::Types::t?]
57
- ) -> self
31
+ private
58
32
 
59
- @no_resolve: self?
60
- def no_resolve: () -> self
33
+ def validate: () -> self
61
34
 
62
- def resolve?: () -> bool
35
+ def validate_fvs: (Symbol name, AST::Types::t?) -> void
36
+ end
63
37
 
64
- def ==: (untyped) -> bool
38
+ attr_reader factory: AST::Types::Factory
65
39
 
66
- alias eql? ==
40
+ # # No type application (if generic), no self-instance-module resolution
41
+ attr_reader object_shape_cache: Hash[TypeName, Shape?]
67
42
 
68
- def hash: () -> Integer
43
+ attr_reader union_shape_cache: Hash[AST::Types::Union, Shape?]
69
44
 
70
- @subst: Substitution
45
+ attr_reader singleton_shape_cache: Hash[TypeName, Shape?]
71
46
 
72
- # Substitution for immediate type expressions
73
- def subst: () -> Substitution
47
+ def initialize: (AST::Types::Factory) -> void
74
48
 
75
- # Returns `self_type`, or `nil` when it is `Types::Self`
76
- #
77
- def self_type?: () -> AST::Types::t?
49
+ def fetch_cache: [KEY] (Hash[KEY, Shape?], KEY) { () -> Shape? } -> Shape?
78
50
 
79
- # Returns `class_type`, or `nil` when it is `Types::Class`
80
- #
81
- def class_type?: () -> AST::Types::t?
51
+ # Returns a shape of given type with respect to Config
52
+ #
53
+ # * If `self` occurs in the given type, it returns types with `self`
54
+ # * If `self` doesn't occur in the given type, it returns type withohut `self`, that is resolved to `config.self_type`
55
+ #
56
+ def shape: (AST::Types::t, Config) -> Shape?
82
57
 
83
- # Returns `instanc_type`, or `nil` when it is `Types::Instance`
84
- #
85
- def instance_type?: () -> AST::Types::t?
86
- end
58
+ # Returns a shape of given type with respect to Config
59
+ #
60
+ # The `self` types included in the returned Shape is the `self` type in the top level
61
+ #
62
+ # * `raw_shape(<self>)` -> may return a shape with `self`
63
+ # * `raw_shape(<Array[self]>) -> returns a shape that returns `self` from `#first` method
64
+ #
65
+ def raw_shape: (AST::Types::t, Config) -> Shape?
87
66
 
88
- attr_reader factory: AST::Types::Factory
67
+ def self_shape: (AST::Types::t, Config) -> Shape?
89
68
 
90
- type cache_key = [
91
- AST::Types::t, # type
92
- bool, # public_only
93
- AST::Types::t | nil, # self_type
94
- AST::Types::t | nil, # class_type
95
- AST::Types::t | nil, # instance_type
96
- bool, bool, bool, # resolve_self, resolve_class, resolve_instance
97
- Hash[Symbol, AST::Types::t?]? # variable_bounds
98
- ]
99
- attr_reader cache: Hash[cache_key, Shape?]
69
+ private
100
70
 
101
- # No type application (if generic), no self-instance-module resolution
102
- attr_reader raw_instance_object_shape_cache: Hash[[TypeName, bool], Shape]
71
+ def object_shape: (RBS::TypeName) -> Shape
103
72
 
104
- attr_reader raw_singleton_object_shape_cache: Hash[[TypeName, bool], Shape]
73
+ def singleton_shape: (RBS::TypeName) -> Shape
105
74
 
106
- attr_reader raw_interface_object_shape_cache: Hash[[TypeName, bool], Shape]
75
+ def union_shape: (AST::Types::t, Array[Shape]) -> Shape?
107
76
 
108
- def initialize: (AST::Types::Factory) -> void
77
+ def intersection_shape: (AST::Types::t, Array[Shape]) -> Shape?
109
78
 
110
- # Calculates the shape of given class, based on `public_only` and Config
111
- #
112
- # Returns `nil` if a type that cannot calculate Shape is given.
113
- #
114
- # * `public_only`: If false, returns a shape with private methods.
79
+ def proc_shape: (AST::Types::Proc, Shape) -> Shape
80
+
81
+ def tuple_shape: (AST::Types::Tuple) { (AST::Types::Name::Instance) -> Shape? } -> Shape?
82
+
83
+ def record_shape: (AST::Types::Record) { (AST::Types::Name::Instance) -> Shape? } -> Shape?
84
+
85
+ # Substitution for `self`/`instance`/`class` types, built from the name of given type
115
86
  #
116
- def shape: (AST::Types::t, public_only: bool, config: Config) -> Shape?
87
+ def class_subst: (AST::Types::Name::Instance | AST::Types::Name::Singleton) -> Substitution
117
88
 
118
- private
89
+ def interface_subst: (AST::Types::Name::Interface) -> Substitution
90
+
91
+ # Substitution for type application of class instance, type alias, or interface types
92
+ def app_subst: (AST::Types::Name::Instance | AST::Types::Name::Alias | AST::Types::Name::Interface) -> Substitution
93
+
94
+ def method_name_for: (RBS::Definition::Method::TypeDef, Symbol name) -> method_name
95
+
96
+ def replace_primitive_method: (method_name, RBS::Definition::Method::TypeDef, MethodType) -> MethodType
97
+
98
+ # # Calculates the shape of given class, based on `public_only` and Config
99
+ # #
100
+ # # Returns `nil` if a type that cannot calculate Shape is given.
101
+ # #
102
+ # # * `public_only`: If false, returns a shape with private methods.
103
+ # #
104
+ # def shape: (AST::Types::t, public_only: bool, config: Config) -> Shape?
105
+
106
+ # private
119
107
 
120
108
  @subtyping: Subtyping::Check?
121
109
 
122
110
  def subtyping: () -> Subtyping::Check
123
111
 
124
- # Fetch and update cache
125
- #
126
- # Cache if given type is cacheable:
127
- #
128
- # * `self`, `instance`, `class` is not cacheable
129
- # * Type variables are not cacheable
130
- #
131
- def fetch_cache: (AST::Types::t, bool public_only, Config) { () -> Shape? } -> Shape?
112
+ # # Fetch and update cache
113
+ # #
114
+ # # Cache if given type is cacheable:
115
+ # #
116
+ # # * `self`, `instance`, `class` is not cacheable
117
+ # # * Type variables are not cacheable
118
+ # #
119
+ # def fetch_cache: (AST::Types::t, bool public_only, Config) { () -> Shape? } -> Shape?
132
120
 
133
- def include_self?: (AST::Types::t) -> bool
121
+ # def include_self?: (AST::Types::t) -> bool
134
122
 
135
- def definition_builder: () -> RBS::DefinitionBuilder
123
+ # def definition_builder: () -> RBS::DefinitionBuilder
136
124
 
137
- def object_shape: (
138
- AST::Types::Name::Instance | AST::Types::Name::Singleton | AST::Types::Name::Interface,
139
- bool public_only,
140
- boolish keep_self,
141
- boolish keep_instance,
142
- boolish keep_singleton
143
- ) -> Shape
125
+ # def object_shape: (
126
+ # AST::Types::Name::Instance | AST::Types::Name::Singleton | AST::Types::Name::Interface,
127
+ # bool public_only,
128
+ # boolish keep_self,
129
+ # boolish keep_instance,
130
+ # boolish keep_singleton
131
+ # ) -> Shape
144
132
 
145
- def raw_object_shape: (
146
- AST::Types::Name::Instance | AST::Types::Name::Singleton | AST::Types::Name::Interface,
147
- bool public_only,
148
- Substitution subst
149
- ) -> Shape
133
+ # def raw_object_shape: (
134
+ # AST::Types::Name::Instance | AST::Types::Name::Singleton | AST::Types::Name::Interface,
135
+ # bool public_only,
136
+ # Substitution subst
137
+ # ) -> Shape
150
138
 
151
- def union_shape: (AST::Types::t, Array[Shape], bool public_only) -> Shape
139
+ # def union_shape: (AST::Types::t, Array[Shape], bool public_only) -> Shape
152
140
 
153
- def intersection_shape: (AST::Types::t, Array[Shape], bool public_only) -> Shape
141
+ # def intersection_shape: (AST::Types::t, Array[Shape], bool public_only) -> Shape
154
142
 
155
- def tuple_shape: (AST::Types::Tuple, bool public_only, Config) -> Shape
143
+ # def tuple_shape: (AST::Types::Tuple, bool public_only, Config) -> Shape
156
144
 
157
- def record_shape: (AST::Types::Record, bool public_only, Config) -> Shape?
145
+ # def record_shape: (AST::Types::Record, bool public_only, Config) -> Shape?
158
146
 
159
- def proc_shape: (AST::Types::Proc, bool public_only, Config) -> Shape?
147
+ # def proc_shape: (AST::Types::Proc, bool public_only, Config) -> Shape?
160
148
 
161
- def replace_primitive_method: (method_name, RBS::Definition::Method::TypeDef, MethodType) -> MethodType
162
149
 
163
- def method_name_for: (RBS::Definition::Method::TypeDef, Symbol name) -> method_name
164
150
  end
165
151
  end
166
152
  end