ruby_mod_kit 0.0.5 → 0.0.6

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 (108) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby_mod_kit.yml +1 -0
  3. data/.yardopts +3 -0
  4. data/examples/user.rb +4 -16
  5. data/lib/ruby_mod_kit/cli.rb +5 -0
  6. data/lib/ruby_mod_kit/config.rb +6 -1
  7. data/lib/ruby_mod_kit/core_ext/eval.rb +7 -0
  8. data/lib/ruby_mod_kit/core_ext/load.rb +10 -0
  9. data/lib/ruby_mod_kit/corrector.rb +5 -0
  10. data/lib/ruby_mod_kit/corrector_manager.rb +6 -0
  11. data/lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rb +4 -0
  12. data/lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rb +2 -0
  13. data/lib/ruby_mod_kit/feature/instance_variable_parameter.rb +2 -0
  14. data/lib/ruby_mod_kit/feature/overload/overload_mission.rb +42 -10
  15. data/lib/ruby_mod_kit/feature/overload.rb +1 -0
  16. data/lib/ruby_mod_kit/feature/type/check/arguments/add_arguments_checker_mission.rb +2 -0
  17. data/lib/ruby_mod_kit/feature/type/check/arguments.rb +2 -0
  18. data/lib/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rb +4 -0
  19. data/lib/ruby_mod_kit/feature/type/parameter_arrow_corrector.rb +14 -0
  20. data/lib/ruby_mod_kit/feature/type/rbs_inline/add_magic_comment_mission.rb +3 -0
  21. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_attr_mission.rb +2 -0
  22. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rb +2 -0
  23. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rb +2 -0
  24. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rb +2 -0
  25. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rb +2 -0
  26. data/lib/ruby_mod_kit/feature/type/rbs_inline.rb +1 -0
  27. data/lib/ruby_mod_kit/feature/type/return_value_colon_corrector.rb +4 -0
  28. data/lib/ruby_mod_kit/feature/type/type_attr_mission.rb +3 -0
  29. data/lib/ruby_mod_kit/feature/type/yard/type_parameter_mission.rb +2 -0
  30. data/lib/ruby_mod_kit/feature/type/yard/type_return_mission.rb +2 -0
  31. data/lib/ruby_mod_kit/feature/type/yard.rb +3 -0
  32. data/lib/ruby_mod_kit/feature/type.rb +2 -0
  33. data/lib/ruby_mod_kit/feature.rb +2 -0
  34. data/lib/ruby_mod_kit/generation.rb +54 -71
  35. data/lib/ruby_mod_kit/memo/def_parent_memo.rb +6 -0
  36. data/lib/ruby_mod_kit/memo/ivar_memo.rb +16 -8
  37. data/lib/ruby_mod_kit/memo/method_memo.rb +8 -1
  38. data/lib/ruby_mod_kit/memo/offset_memo.rb +4 -0
  39. data/lib/ruby_mod_kit/memo/overload_memo.rb +9 -1
  40. data/lib/ruby_mod_kit/memo/parameter_memo.rb +6 -1
  41. data/lib/ruby_mod_kit/memo_pad.rb +28 -0
  42. data/lib/ruby_mod_kit/mission.rb +2 -0
  43. data/lib/ruby_mod_kit/node/base_node.rb +32 -1
  44. data/lib/ruby_mod_kit/node/begin_node.rb +4 -0
  45. data/lib/ruby_mod_kit/node/call_node.rb +4 -0
  46. data/lib/ruby_mod_kit/node/def_node.rb +36 -0
  47. data/lib/ruby_mod_kit/node/def_parent_node.rb +10 -2
  48. data/lib/ruby_mod_kit/node/parameter_node.rb +5 -0
  49. data/lib/ruby_mod_kit/node/program_node.rb +3 -0
  50. data/lib/ruby_mod_kit/node/statements_node.rb +4 -0
  51. data/lib/ruby_mod_kit/node/symbol_node.rb +7 -2
  52. data/lib/ruby_mod_kit/node/untyped_node.rb +4 -0
  53. data/lib/ruby_mod_kit/node/wrap.rb +4 -0
  54. data/lib/ruby_mod_kit/offset_diff.rb +6 -0
  55. data/lib/ruby_mod_kit/version.rb +1 -1
  56. data/lib/ruby_mod_kit.rb +29 -3
  57. data/sig/generated/ruby_mod_kit/cli.rbs +5 -0
  58. data/sig/generated/ruby_mod_kit/config.rbs +7 -2
  59. data/sig/generated/ruby_mod_kit/core_ext/eval.rbs +7 -0
  60. data/sig/generated/ruby_mod_kit/core_ext/load.rbs +10 -0
  61. data/sig/generated/ruby_mod_kit/corrector.rbs +5 -0
  62. data/sig/generated/ruby_mod_kit/corrector_manager.rbs +6 -0
  63. data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rbs +4 -0
  64. data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rbs +2 -0
  65. data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter.rbs +2 -0
  66. data/sig/generated/ruby_mod_kit/feature/overload/overload_mission.rbs +3 -0
  67. data/sig/generated/ruby_mod_kit/feature/overload.rbs +1 -0
  68. data/sig/generated/ruby_mod_kit/feature/type/check/arguments/add_arguments_checker_mission.rbs +2 -0
  69. data/sig/generated/ruby_mod_kit/feature/type/check/arguments.rbs +2 -0
  70. data/sig/generated/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rbs +4 -0
  71. data/sig/generated/ruby_mod_kit/feature/type/parameter_arrow_corrector.rbs +14 -0
  72. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/add_magic_comment_mission.rbs +3 -0
  73. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_attr_mission.rbs +2 -0
  74. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rbs +2 -0
  75. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rbs +2 -0
  76. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rbs +2 -0
  77. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rbs +2 -0
  78. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline.rbs +1 -0
  79. data/sig/generated/ruby_mod_kit/feature/type/return_value_colon_corrector.rbs +4 -0
  80. data/sig/generated/ruby_mod_kit/feature/type/type_attr_mission.rbs +3 -0
  81. data/sig/generated/ruby_mod_kit/feature/type/yard/type_parameter_mission.rbs +2 -0
  82. data/sig/generated/ruby_mod_kit/feature/type/yard/type_return_mission.rbs +2 -0
  83. data/sig/generated/ruby_mod_kit/feature/type/yard.rbs +3 -0
  84. data/sig/generated/ruby_mod_kit/feature/type.rbs +2 -0
  85. data/sig/generated/ruby_mod_kit/feature.rbs +2 -0
  86. data/sig/generated/ruby_mod_kit/generation.rbs +31 -34
  87. data/sig/generated/ruby_mod_kit/memo/def_parent_memo.rbs +6 -0
  88. data/sig/generated/ruby_mod_kit/memo/ivar_memo.rbs +16 -8
  89. data/sig/generated/ruby_mod_kit/memo/method_memo.rbs +8 -1
  90. data/sig/generated/ruby_mod_kit/memo/offset_memo.rbs +4 -0
  91. data/sig/generated/ruby_mod_kit/memo/overload_memo.rbs +8 -0
  92. data/sig/generated/ruby_mod_kit/memo/parameter_memo.rbs +6 -1
  93. data/sig/generated/ruby_mod_kit/memo_pad.rbs +19 -0
  94. data/sig/generated/ruby_mod_kit/mission.rbs +2 -0
  95. data/sig/generated/ruby_mod_kit/node/base_node.rbs +31 -2
  96. data/sig/generated/ruby_mod_kit/node/begin_node.rbs +4 -0
  97. data/sig/generated/ruby_mod_kit/node/call_node.rbs +4 -0
  98. data/sig/generated/ruby_mod_kit/node/def_node.rbs +24 -0
  99. data/sig/generated/ruby_mod_kit/node/def_parent_node.rbs +11 -3
  100. data/sig/generated/ruby_mod_kit/node/parameter_node.rbs +5 -0
  101. data/sig/generated/ruby_mod_kit/node/program_node.rbs +3 -0
  102. data/sig/generated/ruby_mod_kit/node/statements_node.rbs +4 -0
  103. data/sig/generated/ruby_mod_kit/node/symbol_node.rbs +8 -3
  104. data/sig/generated/ruby_mod_kit/node/untyped_node.rbs +4 -0
  105. data/sig/generated/ruby_mod_kit/node/wrap.rbs +4 -0
  106. data/sig/generated/ruby_mod_kit/offset_diff.rbs +6 -0
  107. data/sig/generated/ruby_mod_kit.rbs +31 -6
  108. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e5888d6187dc2620b37315d72fddee6b134bbd14181277ff600e864eb9c06ca0
4
- data.tar.gz: 7ffb4ec96c231e6122eeaa7d47601f67a28620951ed08e9d3b3888e9fa684fbc
3
+ metadata.gz: 7d1688dd299feefd22167740d43d09a691ba4e01359edbdfdcb81462ec7c4d47
4
+ data.tar.gz: 1ea7711fddb58f15c1257fb8a63595d300a7c45483af595f4defc48c5a842466
5
5
  SHA512:
6
- metadata.gz: 3c2e632593d2d0a7061f8a71a7e65131a1b72434ac3853467024503d13c57328abe88ade105b2532baf94d44bd428bd02b4eae9e0c50462d4dca6bebc767d4f9
7
- data.tar.gz: 81b17d66702c1fc89c77bc3270f74608fca6ed8e9a12f26c04ea69f7d0bdceb4b91b104bfa45b0f944e5ba5dae79e789de720b8a5605df0d4ac4bb4e48e62d6d
6
+ metadata.gz: fa6c821537ec79c43ed5b092f2a0044126c0b925bff381c33971c2462a0578e92b0f681d313d3053c0fbc688f13907a6b10180738fa075bc192e1b582c843479
7
+ data.tar.gz: a84c961311ae15bc60b8db3594a1f412ca7b1a71d4922707d271c7d3eba9338e91338c69f2414a04907c1bc1e2b76581d1298a3effd22706913d4731fe93b084
data/.ruby_mod_kit.yml CHANGED
@@ -3,3 +3,4 @@ features:
3
3
  - overload
4
4
  - type
5
5
  - type/rbs_inline
6
+ - type/yard
data/.yardopts ADDED
@@ -0,0 +1,3 @@
1
+ --tag rbs:rbs
2
+ --exclude lib/ruby_mod_kit/core_ext.rb
3
+ --exclude lib/internal/
data/examples/user.rb CHANGED
@@ -50,25 +50,13 @@ class Pos
50
50
  # | (Integer) -> Pos
51
51
  def *(*args)
52
52
  case args
53
- in [Pos]
54
- _mul__overload0(*args)
55
- in [Integer]
56
- _mul__overload1(*args)
53
+ in [Pos => other]
54
+ (@x * other.x) + (@y * other.y) + (@z * other.z)
55
+ in [Integer => n]
56
+ Pos.new(@x * n, @y * n, @z * n)
57
57
  end
58
58
  end
59
59
 
60
- # @rbs other: Pos
61
- # @rbs return: Integer
62
- def _mul__overload0(other)
63
- (@x * other.x) + (@y * other.y) + (@z * other.z)
64
- end
65
-
66
- # @rbs n: Integer
67
- # @rbs return: Pos
68
- def _mul__overload1(n)
69
- Pos.new(@x * n, @y * n, @z * n)
70
- end
71
-
72
60
  # @rbs return: String
73
61
  def to_s
74
62
  "#<Pos: (#{@x}, #{@y}, #{@z})>"
@@ -11,6 +11,8 @@ module RubyModKit
11
11
  desc "exec", "execute rbm file"
12
12
  # @rbs *args: String
13
13
  # @rbs return: void
14
+ # @param args [String]
15
+ # @return [void]
14
16
  def exec(*args)
15
17
  RubyModKit.execute_file(*args, config: config)
16
18
  end
@@ -19,6 +21,8 @@ module RubyModKit
19
21
  method_option :output, type: :string
20
22
  # @rbs *args: String
21
23
  # @rbs return: void
24
+ # @param args [String]
25
+ # @return [void]
22
26
  def transpile(*args)
23
27
  output = case options[:output]
24
28
  when nil, "-", "/dev/stdout"
@@ -37,6 +41,7 @@ module RubyModKit
37
41
  private
38
42
 
39
43
  # @rbs return: Config | nil
44
+ # @return [Config, nil]
40
45
  def config
41
46
  if options[:config]
42
47
  config_path = options[:config]
@@ -15,6 +15,8 @@ module RubyModKit
15
15
 
16
16
  # @rbs features: Array[String]
17
17
  # @rbs return: void
18
+ # @param features [Array<String>]
19
+ # @return [void]
18
20
  def initialize(features: DEFAULT_FEATURES)
19
21
  @features = features.sort.map do |feature_name|
20
22
  raise ArgumentError, "invalid feature: #{feature_name}" if feature_name.include?(".")
@@ -29,8 +31,11 @@ module RubyModKit
29
31
 
30
32
  class << self
31
33
  # @rbs path: String
32
- # @rbs if_none: nil | Symbol
34
+ # @rbs if_none: Symbol | nil
33
35
  # @rbs return: Config | nil
36
+ # @param path [String]
37
+ # @param if_none [Symbol, nil]
38
+ # @return [Config, nil]
34
39
  def load(path, if_none: nil)
35
40
  return load(File.join(path, ".ruby_mod_kit.yml"), if_none: if_none) if File.directory?(path)
36
41
 
@@ -6,6 +6,7 @@ require "ruby_mod_kit"
6
6
 
7
7
  # Define RubyMotKit.eval
8
8
  module RubyModKit
9
+ # the namespace for language core extensions
9
10
  module CoreExt
10
11
  # the extension for eval
11
12
  module Eval
@@ -17,6 +18,12 @@ module RubyModKit
17
18
  # @rbs lineno: Integer
18
19
  # @rbs transpile: bool
19
20
  # @rbs return: Object
21
+ # @param expr [String]
22
+ # @param binding [Binding]
23
+ # @param fname [String]
24
+ # @param lineno [Integer]
25
+ # @param transpile [Boolean]
26
+ # @return [Object]
20
27
  def eval(expr, binding = TOPLEVEL_BINDING, fname = "(eval)", lineno = 1, transpile: true)
21
28
  expr = RubyModKit.transpile(expr, filename: fname) if transpile
22
29
 
@@ -17,6 +17,9 @@ module RubyModKit
17
17
  # @rbs path: String
18
18
  # @rbs wrap: bool
19
19
  # @rbs return: bool
20
+ # @param path [String]
21
+ # @param wrap [Boolean]
22
+ # @return [Boolean]
20
23
  def load(path, wrap = false) # rubocop:disable Style/OptionalBooleanParameter
21
24
  return super unless path.end_with?(".rbm")
22
25
 
@@ -27,6 +30,8 @@ module RubyModKit
27
30
 
28
31
  # @rbs path: String
29
32
  # @rbs return: bool
33
+ # @param path [String]
34
+ # @return [Boolean]
30
35
  def require(path)
31
36
  require_path = Load.require_path(path)
32
37
  return super unless require_path&.end_with?(".rbm")
@@ -39,11 +44,13 @@ module RubyModKit
39
44
 
40
45
  class << self
41
46
  # @rbs return: Array[String]
47
+ # @return [Array<String>]
42
48
  def loaded_features
43
49
  $LOADED_FEATURES
44
50
  end
45
51
 
46
52
  # @rbs return: Array[String]
53
+ # @return [Array<String>]
47
54
  def load_path
48
55
  $LOAD_PATH
49
56
  end
@@ -51,6 +58,9 @@ module RubyModKit
51
58
  # @rbs path: String
52
59
  # @rbs expanded: bool
53
60
  # @rbs return: String | nil
61
+ # @param path [String]
62
+ # @param expanded [Boolean]
63
+ # @return [String, nil]
54
64
  def require_path(path, expanded: false)
55
65
  if !expanded && !File.absolute_path?(path)
56
66
  return load_path.each.lazy.map { require_path(File.join(_1, path), expanded: true) }.find(&:itself)
@@ -6,6 +6,7 @@ module RubyModKit
6
6
  # the base class of corrector
7
7
  class Corrector
8
8
  # @rbs return: Array[Symbol]
9
+ # @return [Array<Symbol>]
9
10
  def correctable_error_types
10
11
  []
11
12
  end
@@ -13,11 +14,15 @@ module RubyModKit
13
14
  # @rbs _parse_error: Prism::ParseError
14
15
  # @rbs _generation: Generation
15
16
  # @rbs return: void
17
+ # @param _parse_error [Prism::ParseError]
18
+ # @param _generation [Generation]
19
+ # @return [void]
16
20
  def correct(_parse_error, _generation)
17
21
  raise RubyModKit::Error, "Unexpected type #{self.class}"
18
22
  end
19
23
 
20
24
  # @rbs return: void
25
+ # @return [void]
21
26
  def setup; end
22
27
  end
23
28
  end
@@ -10,6 +10,8 @@ module RubyModKit
10
10
 
11
11
  # @rbs features: Array[Feature]
12
12
  # @rbs return: void
13
+ # @param features [Array<Feature>]
14
+ # @return [void]
13
15
  def initialize(features)
14
16
  @previous_source = +""
15
17
  @correctors_error_map = {}
@@ -24,6 +26,8 @@ module RubyModKit
24
26
 
25
27
  # @rbs generation: Generation
26
28
  # @rbs return: bool
29
+ # @param generation [Generation]
30
+ # @return [Boolean]
27
31
  def perform(generation)
28
32
  return true if generation.errors.empty?
29
33
 
@@ -46,6 +50,8 @@ module RubyModKit
46
50
 
47
51
  # @rbs generation: Generation
48
52
  # @rbs return: void
53
+ # @param generation [Generation]
54
+ # @return [void]
49
55
  def check_prev_errors(generation)
50
56
  return if @previous_source.empty?
51
57
  return if generation.errors.empty?
@@ -8,6 +8,7 @@ module RubyModKit
8
8
  # the class to correct `def foo(@bar) ...` -> `def foo(bar) ...`
9
9
  class InstanceVariableParameterCorrector < Corrector
10
10
  # @rbs return: Array[Symbol]
11
+ # @return [Array<Symbol>]
11
12
  def correctable_error_types
12
13
  %i[argument_formal_ivar]
13
14
  end
@@ -15,6 +16,9 @@ module RubyModKit
15
16
  # @rbs parse_error: Prism::ParseError
16
17
  # @rbs generation: Generation
17
18
  # @rbs return: void
19
+ # @param parse_error [Prism::ParseError]
20
+ # @param generation [Generation]
21
+ # @return [void]
18
22
  def correct(parse_error, generation)
19
23
  src_offset = parse_error.location.start_offset
20
24
 
@@ -9,6 +9,8 @@ module RubyModKit
9
9
  class InstanceVariableParameterMission < Mission
10
10
  # @rbs generation: Generation
11
11
  # @rbs return: bool
12
+ # @param generation [Generation]
13
+ # @return [Boolean]
12
14
  def perform(generation)
13
15
  generation.memo_pad.each_parameter_memo do |parameter_memo|
14
16
  next unless parameter_memo.ivar_parameter
@@ -7,6 +7,7 @@ module RubyModKit
7
7
  # namespace for instance_variable parameter feature
8
8
  class InstanceVariableParameter < Feature
9
9
  # @rbs return: Array[Corrector]
10
+ # @return [Array<Corrector>]
10
11
  def create_correctors
11
12
  [
12
13
  InstanceVariableParameterCorrector.new,
@@ -14,6 +15,7 @@ module RubyModKit
14
15
  end
15
16
 
16
17
  # @rbs return: Array[Mission]
18
+ # @return [Array<Mission>]
17
19
  def create_missions
18
20
  [
19
21
  InstanceVariableParameterMission.new,
@@ -14,6 +14,7 @@ module RubyModKit
14
14
  }.freeze #: Hash[Symbol, String]
15
15
 
16
16
  # @rbs return: void
17
+ # @return [void]
17
18
  def initialize
18
19
  super
19
20
  @modified = false
@@ -21,8 +22,19 @@ module RubyModKit
21
22
 
22
23
  # @rbs generation: Generation
23
24
  # @rbs return: bool
25
+ # @param generation [Generation]
26
+ # @return [Boolean]
24
27
  def perform(generation)
25
- return true if @modified
28
+ if @modified
29
+ generation.memo_pad.overloads_memo.each_value do |overload_memo|
30
+ overload_memo.correct_offset(generation.root_node)
31
+ def_node = generation.root_node.def_node_at(overload_memo.offset)
32
+ raise RubyModKit::Error unless def_node.is_a?(Node::DefNode)
33
+
34
+ generation[def_node.end_offset, 0] = "\n" if def_node.parent.children[-1].offset > def_node.end_offset
35
+ end
36
+ return true
37
+ end
26
38
 
27
39
  method_memo_groups = generation.memo_pad.methods_memo.each_value.group_by do |method_memo|
28
40
  [generation.root_node.def_parent_node_at(method_memo.offset), method_memo.name]
@@ -50,18 +62,38 @@ module RubyModKit
50
62
  end
51
63
 
52
64
  script << "def #{name}(*args)\n case args\n"
53
- overload_prefix = +"#{OVERLOAD_METHOD_MAP[name] || name}_"
54
- method_memos.each_with_index do |method_memo, i|
55
- overload_name = "#{overload_prefix}_overload#{i}"
65
+ method_memos.each do |method_memo|
56
66
  def_node = generation.root_node.def_node_at(method_memo.offset)
57
- raise RubyModKit::Error if !def_node || !def_node.is_a?(Node::DefNode)
67
+ body_node = def_node&.body_node
68
+ raise RubyModKit::Error unless def_node
69
+
70
+ def_start_offset = generation.line_offset(def_node) || raise(RubyModKit::Error)
71
+ def_end_offset = generation.end_line_offset(def_node) || raise(RubyModKit::Error)
72
+ def_end_offset += generation[def_end_offset..][/.*\n*/]&.size || 0
73
+ generation[def_start_offset, def_end_offset - def_start_offset] = ""
74
+ generation.memo_pad.delete(method_memo)
75
+
76
+ params = method_memo.parameters.map { |param| "#{param.type} => #{param.name}" }
77
+ script << " in [#{params.join(", ")}]\n"
78
+
79
+ body = nil
80
+ case body_node
81
+ when Node::StatementsNode
82
+ src_indent = generation.line_indent(body_node)
83
+ body = "#{src_indent}#{body_node.slice}\n".gsub(/^#{src_indent}/, " ")
84
+ when Node::BeginNode
85
+ src_indent = generation.line_indent(body_node)
86
+ src_line_offset = generation.line_offset(body_node.children[0]) || raise(RubyModKit::Error)
87
+ body = body_node.slice[(src_line_offset - body_node.offset)..]
88
+ body = "#{src_indent}begin\n#{body}\n".gsub(/^#{src_indent}/, " ")
89
+ when nil
90
+ body = ""
91
+ end
92
+ raise RubyModKit::Error unless body
58
93
 
59
- name_loc = def_node.name_loc
60
- generation[name_loc.start_offset, name_loc.length] = overload_name
61
- script << " in [#{method_memo.parameters.map(&:type).join(", ")}]\n"
62
- script << " #{overload_name}(*args)\n"
94
+ script << body
63
95
  end
64
- script << " end\nend\n\n"
96
+ script << " end\nend\n"
65
97
 
66
98
  script.gsub!(/^(?=.)/, indent)
67
99
  generation[src_offset, 0] = script
@@ -7,6 +7,7 @@ module RubyModKit
7
7
  # namespace for overload feature
8
8
  class Overload < Feature
9
9
  # @rbs return: Array[Mission]
10
+ # @return [Array<Mission>]
10
11
  def create_missions
11
12
  [
12
13
  OverloadMission.new,
@@ -10,6 +10,8 @@ module RubyModKit
10
10
  class AddArgumentsCheckerMission < Mission
11
11
  # @rbs generation: Generation
12
12
  # @rbs return: bool
13
+ # @param generation [Generation]
14
+ # @return [Boolean]
13
15
  def perform(generation)
14
16
  # reload if line break is added
15
17
  line_break_added = false
@@ -5,10 +5,12 @@
5
5
  module RubyModKit
6
6
  class Feature
7
7
  class Type
8
+ # namespace for type checker
8
9
  module Check
9
10
  # namespace for arguments type checker
10
11
  class Arguments < Feature
11
12
  # @rbs return: Array[Mission]
13
+ # @return [Array<Mission>]
12
14
  def create_missions
13
15
  [
14
16
  AddArgumentsCheckerMission.new,
@@ -12,6 +12,7 @@ module RubyModKit
12
12
  REGEXP = /(\A\s*)(?:(#{VISIBILITIES.join("|")}) )?(?:(#{ATTR_PATTERNS.join("|")}) )?@(\w*)\s*:\s*(.*)\n(\n+)?/.freeze #: Regexp
13
13
 
14
14
  # @rbs return: Array[Symbol]
15
+ # @return [Array<Symbol>]
15
16
  def correctable_error_types
16
17
  %i[unexpected_token_ignore]
17
18
  end
@@ -19,6 +20,9 @@ module RubyModKit
19
20
  # @rbs parse_error: Prism::ParseError
20
21
  # @rbs generation: Generation
21
22
  # @rbs return: void
23
+ # @param parse_error [Prism::ParseError]
24
+ # @param generation [Generation]
25
+ # @return [void]
22
26
  def correct(parse_error, generation)
23
27
  return if parse_error.location.slice != ":"
24
28
 
@@ -10,11 +10,13 @@ module RubyModKit
10
10
  # @rbs @last_parameter_offsets: Set[Integer]
11
11
 
12
12
  # @rbs return: Array[Symbol]
13
+ # @return [Array<Symbol>]
13
14
  def correctable_error_types
14
15
  %i[unexpected_token_ignore def_params_term_paren argument_formal_constant]
15
16
  end
16
17
 
17
18
  # @rbs return: void
19
+ # @return [void]
18
20
  def setup
19
21
  super
20
22
  @last_parameter_offsets = Set.new
@@ -23,6 +25,9 @@ module RubyModKit
23
25
  # @rbs parse_error: Prism::ParseError
24
26
  # @rbs generation: Generation
25
27
  # @rbs return: void
28
+ # @param parse_error [Prism::ParseError]
29
+ # @param generation [Generation]
30
+ # @return [void]
26
31
  def correct(parse_error, generation)
27
32
  case parse_error.type
28
33
  when :unexpected_token_ignore
@@ -39,6 +44,9 @@ module RubyModKit
39
44
  # @rbs parse_error: Prism::ParseError
40
45
  # @rbs generation: Generation
41
46
  # @rbs return: void
47
+ # @param parse_error [Prism::ParseError]
48
+ # @param generation [Generation]
49
+ # @return [void]
42
50
  def remove_arrow_before_parameter(parse_error, generation)
43
51
  def_node = generation.root_node.def_node_at(parse_error.location.start_offset) || return
44
52
  def_parent_node = def_node.parent
@@ -71,6 +79,9 @@ module RubyModKit
71
79
  # @rbs parse_error: Prism::ParseError
72
80
  # @rbs generation: Generation
73
81
  # @rbs return: void
82
+ # @param parse_error [Prism::ParseError]
83
+ # @param generation [Generation]
84
+ # @return [void]
74
85
  def remove_arrow_after_quailifier(parse_error, generation)
75
86
  column = parse_error.location.start_column - 1
76
87
  return if column < 0
@@ -93,6 +104,9 @@ module RubyModKit
93
104
  # @rbs parse_error: Prism::ParseError
94
105
  # @rbs generation: Generation
95
106
  # @rbs return: void
107
+ # @param parse_error [Prism::ParseError]
108
+ # @param generation [Generation]
109
+ # @return [void]
96
110
  def wrap_parameter_type_for_next_parse(parse_error, generation)
97
111
  line = generation.line(parse_error)
98
112
  line = line[parse_error.location.start_column..] || return
@@ -11,6 +11,7 @@ module RubyModKit
11
11
  # @rbs @reloaded: bool
12
12
 
13
13
  # @rbs return: void
14
+ # @return [void]
14
15
  def initialize
15
16
  super
16
17
  @reloaded = false
@@ -18,6 +19,8 @@ module RubyModKit
18
19
 
19
20
  # @rbs generation: Generation
20
21
  # @rbs return: bool
22
+ # @param generation [Generation]
23
+ # @return [Boolean]
21
24
  def perform(generation)
22
25
  return true unless generation.memo_pad.flags[:rbs_annotated]
23
26
 
@@ -10,6 +10,8 @@ module RubyModKit
10
10
  class TypeAttrMission < Mission
11
11
  # @rbs generation: Generation
12
12
  # @rbs return: bool
13
+ # @param generation [Generation]
14
+ # @return [Boolean]
13
15
  def perform(generation)
14
16
  generation.memo_pad.def_parents_memo.each_value do |def_parent_memo|
15
17
  ivars_memo = def_parent_memo.ivars_memo.dup
@@ -10,6 +10,8 @@ module RubyModKit
10
10
  class TypeInstanceVariableMission < Mission
11
11
  # @rbs generation: Generation
12
12
  # @rbs return: bool
13
+ # @param generation [Generation]
14
+ # @return [Boolean]
13
15
  def perform(generation)
14
16
  generation.memo_pad.def_parents_memo.each_value do |def_parent_memo|
15
17
  def_parent_memo.ivars_memo.each do |name, ivar_memo|
@@ -10,6 +10,8 @@ module RubyModKit
10
10
  class TypeOverloadMission < Mission
11
11
  # @rbs generation: Generation
12
12
  # @rbs return: bool
13
+ # @param generation [Generation]
14
+ # @return [Boolean]
13
15
  def perform(generation)
14
16
  generation.memo_pad.overloads_memo.each_value do |overload_memo|
15
17
  overload_memo.correct_offset(generation.root_node)
@@ -10,6 +10,8 @@ module RubyModKit
10
10
  class TypeParameterMission < Mission
11
11
  # @rbs generation: Generation
12
12
  # @rbs return: bool
13
+ # @param generation [Generation]
14
+ # @return [Boolean]
13
15
  def perform(generation)
14
16
  generation.memo_pad.each_parameter_memo do |parameter_memo|
15
17
  next if parameter_memo.untyped?
@@ -10,6 +10,8 @@ module RubyModKit
10
10
  class TypeReturnMission < Mission
11
11
  # @rbs generation: Generation
12
12
  # @rbs return: bool
13
+ # @param generation [Generation]
14
+ # @return [Boolean]
13
15
  def perform(generation)
14
16
  generation.memo_pad.methods_memo.each do |offset, method_memo|
15
17
  def_node = generation.root_node.def_node_at(offset)
@@ -8,6 +8,7 @@ module RubyModKit
8
8
  # namespace for type with rbs-line feature
9
9
  class RbsInline < Feature
10
10
  # @rbs return: Array[Mission]
11
+ # @return [Array<Mission>]
11
12
  def create_missions
12
13
  [
13
14
  TypeInstanceVariableMission.new,
@@ -8,6 +8,7 @@ module RubyModKit
8
8
  # the class to correct `def foo: Some ...` -> `def foo ...`
9
9
  class ReturnValueColonCorrector < Corrector
10
10
  # @rbs return: Array[Symbol]
11
+ # @return [Array<Symbol>]
11
12
  def correctable_error_types
12
13
  %i[unexpected_token_ignore]
13
14
  end
@@ -15,6 +16,9 @@ module RubyModKit
15
16
  # @rbs parse_error: Prism::ParseError
16
17
  # @rbs generation: Generation
17
18
  # @rbs return: void
19
+ # @param parse_error [Prism::ParseError]
20
+ # @param generation [Generation]
21
+ # @return [void]
18
22
  def correct(parse_error, generation)
19
23
  return if parse_error.location.slice != ":"
20
24
 
@@ -10,6 +10,7 @@ module RubyModKit
10
10
  # @rbs @modified: bool
11
11
 
12
12
  # @rbs return: void
13
+ # @return [void]
13
14
  def initialize
14
15
  super
15
16
  @modified = false
@@ -17,6 +18,8 @@ module RubyModKit
17
18
 
18
19
  # @rbs generation: Generation
19
20
  # @rbs return: bool
21
+ # @param generation [Generation]
22
+ # @return [Boolean]
20
23
  def perform(generation)
21
24
  return true if @modified
22
25
 
@@ -10,6 +10,8 @@ module RubyModKit
10
10
  class TypeParameterMission < Mission
11
11
  # @rbs generation: Generation
12
12
  # @rbs return: bool
13
+ # @param generation [Generation]
14
+ # @return [Boolean]
13
15
  def perform(generation)
14
16
  generation.memo_pad.each_parameter_memo do |parameter_memo|
15
17
  next if parameter_memo.untyped?
@@ -10,6 +10,8 @@ module RubyModKit
10
10
  class TypeReturnMission < Mission
11
11
  # @rbs generation: Generation
12
12
  # @rbs return: bool
13
+ # @param generation [Generation]
14
+ # @return [Boolean]
13
15
  def perform(generation)
14
16
  generation.memo_pad.methods_memo.each do |offset, method_memo|
15
17
  def_node = generation.root_node.def_node_at(offset)
@@ -8,6 +8,7 @@ module RubyModKit
8
8
  # namespace for type with rbs-line feature
9
9
  class Yard < Feature
10
10
  # @rbs return: Array[Mission]
11
+ # @return [Array<Mission>]
11
12
  def create_missions
12
13
  [
13
14
  TypeParameterMission.new,
@@ -18,6 +19,8 @@ module RubyModKit
18
19
  class << self
19
20
  # @rbs type: String
20
21
  # @rbs return: String
22
+ # @param type [String]
23
+ # @return [String]
21
24
  def rbs2yard(type)
22
25
  type.gsub(/\s*\|\s*/, ", ").tr("[]", "<>").gsub(/(?<=^|\W)bool(?=$|\W)/, "Boolean")
23
26
  end
@@ -7,6 +7,7 @@ module RubyModKit
7
7
  # namespace for type feature
8
8
  class Type < Feature
9
9
  # @rbs return: Array[Corrector]
10
+ # @return [Array<Corrector>]
10
11
  def create_correctors
11
12
  [
12
13
  InstanceVariableColonCorrector.new,
@@ -16,6 +17,7 @@ module RubyModKit
16
17
  end
17
18
 
18
19
  # @rbs return: Array[Mission]
20
+ # @return [Array<Mission>]
19
21
  def create_missions
20
22
  [
21
23
  TypeAttrMission.new,
@@ -6,11 +6,13 @@ module RubyModKit
6
6
  # the base class of feature
7
7
  class Feature
8
8
  # @rbs return: Array[Corrector]
9
+ # @return [Array<Corrector>]
9
10
  def create_correctors
10
11
  []
11
12
  end
12
13
 
13
14
  # @rbs return: Array[Mission]
15
+ # @return [Array<Mission>]
14
16
  def create_missions
15
17
  []
16
18
  end