ruby_mod_kit 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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