ibex-runtime 0.2.0 → 0.4.0

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +100 -272
  3. data/lib/ibex/runtime/cst/green/node.rb +1 -1
  4. data/lib/ibex/runtime/cst/green/token.rb +1 -1
  5. data/lib/ibex/runtime/cst/green/trivia.rb +1 -1
  6. data/lib/ibex/runtime/cst/incremental/blender.rb +1 -1
  7. data/lib/ibex/runtime/cst/incremental/lexed_syntax.rb +2 -2
  8. data/lib/ibex/runtime/cst/incremental/parse_memo.rb +2 -2
  9. data/lib/ibex/runtime/cst/incremental/relexer.rb +3 -0
  10. data/lib/ibex/runtime/cst/incremental/session.rb +26 -2
  11. data/lib/ibex/runtime/cst/parse_result.rb +7 -7
  12. data/lib/ibex/runtime/cst/serialize.rb +6 -3
  13. data/lib/ibex/runtime/cst/syntax_node.rb +4 -4
  14. data/lib/ibex/runtime/cst/syntax_token.rb +5 -5
  15. data/lib/ibex/runtime/cst/typed_node.rb +1 -1
  16. data/lib/ibex/runtime/cst/validator.rb +40 -30
  17. data/lib/ibex/runtime/embedded_source.rb +98 -0
  18. data/lib/ibex/runtime/event.rb +7 -4
  19. data/lib/ibex/runtime/event_jsonl_tracer.rb +1 -1
  20. data/lib/ibex/runtime/event_sanitizer.rb +32 -26
  21. data/lib/ibex/runtime/generated_lexer.rb +23 -16
  22. data/lib/ibex/runtime/lexer_input.rb +1 -1
  23. data/lib/ibex/runtime/location_span.rb +15 -15
  24. data/lib/ibex/runtime/observation.rb +1 -1
  25. data/lib/ibex/runtime/parser.rb +309 -191
  26. data/lib/ibex/runtime/parser_sync_recovery.rb +19 -15
  27. data/lib/ibex/runtime/repair.rb +36 -5
  28. data/lib/ibex/runtime/repair_priority_queue.rb +10 -6
  29. data/lib/ibex/runtime/repair_search.rb +92 -29
  30. data/lib/ibex/runtime/syntax_repair.rb +490 -0
  31. data/lib/ibex/runtime/syntax_session.rb +416 -0
  32. data/lib/ibex/runtime/table_format.rb +1 -1
  33. data/lib/ibex/runtime/version.rb +1 -1
  34. data/lib/ibex/runtime.rb +2 -1
  35. data/lib/ibex/tables/compact.rb +16 -12
  36. data/lib/ibex/tables/compact_actions.rb +45 -33
  37. data/lib/ibex/tables/compact_productions.rb +18 -15
  38. data/sig/ibex/runtime/cst/green/node.rbs +2 -2
  39. data/sig/ibex/runtime/cst/green/token.rbs +2 -2
  40. data/sig/ibex/runtime/cst/green/trivia.rbs +2 -2
  41. data/sig/ibex/runtime/cst/incremental/blender.rbs +2 -2
  42. data/sig/ibex/runtime/cst/incremental/lexed_syntax.rbs +3 -3
  43. data/sig/ibex/runtime/cst/incremental/parse_memo.rbs +4 -4
  44. data/sig/ibex/runtime/cst/incremental/session.rbs +8 -2
  45. data/sig/ibex/runtime/cst/parse_result.rbs +9 -9
  46. data/sig/ibex/runtime/cst/serialize.rbs +8 -6
  47. data/sig/ibex/runtime/cst/syntax_node.rbs +6 -6
  48. data/sig/ibex/runtime/cst/syntax_token.rbs +10 -10
  49. data/sig/ibex/runtime/cst/typed_node.rbs +2 -2
  50. data/sig/ibex/runtime/cst/validator.rbs +46 -42
  51. data/sig/ibex/runtime/embedded_source.rbs +21 -0
  52. data/sig/ibex/runtime/event.rbs +7 -5
  53. data/sig/ibex/runtime/event_jsonl_tracer.rbs +1 -1
  54. data/sig/ibex/runtime/event_sanitizer.rbs +50 -44
  55. data/sig/ibex/runtime/generated_lexer.rbs +31 -24
  56. data/sig/ibex/runtime/lexer_input.rbs +2 -2
  57. data/sig/ibex/runtime/location_span.rbs +28 -28
  58. data/sig/ibex/runtime/observation.rbs +2 -2
  59. data/sig/ibex/runtime/parser.rbs +266 -252
  60. data/sig/ibex/runtime/parser_sync_recovery.rbs +15 -15
  61. data/sig/ibex/runtime/repair.rbs +28 -8
  62. data/sig/ibex/runtime/repair_priority_queue.rbs +9 -7
  63. data/sig/ibex/runtime/repair_search.rbs +38 -19
  64. data/sig/ibex/runtime/syntax_repair.rbs +177 -0
  65. data/sig/ibex/runtime/syntax_session.rbs +186 -0
  66. data/sig/ibex/tables/compact.rbs +12 -12
  67. data/sig/ibex/tables/compact_actions.rbs +10 -17
  68. data/sig/ibex/tables/compact_productions.rbs +19 -19
  69. metadata +12 -6
  70. data/lib/ibex/runtime/jsonl_tracer.rb +0 -75
  71. data/sig/ibex/runtime/jsonl_tracer.rbs +0 -42
@@ -5,6 +5,10 @@ module Ibex
5
5
  # Converts application-owned values into bounded, data-only event summaries.
6
6
  # rubocop:disable Metrics/ModuleLength
7
7
  module EventSanitizer
8
+ type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
9
+
10
+ type sanitized_value = untyped
11
+
8
12
  MAX_DEPTH: Integer
9
13
 
10
14
  MAX_COLLECTION_ENTRIES: Integer
@@ -20,73 +24,75 @@ module Ibex
20
24
  # Copy a runtime payload into deeply frozen JSON data. Unknown objects are
21
25
  # summarized instead of being retained, so callers cannot smuggle mutable
22
26
  # application identities into an Event.
23
- # @rbs (Hash[untyped, untyped] input) -> Hash[String, untyped]
24
- def self.data: (Hash[untyped, untyped] input) -> Hash[String, untyped]
27
+ # @rbs (Hash[sanitized_value, sanitized_value] input) -> Hash[String, json_value]
28
+ def self.data: (Hash[sanitized_value, sanitized_value] input) -> Hash[String, json_value]
25
29
 
26
- # @rbs (untyped input) -> untyped
27
- def self.value: (untyped input) -> untyped
30
+ # @rbs (sanitized_value input) -> json_value
31
+ def self.value: (sanitized_value input) -> json_value
28
32
 
29
- # @rbs (untyped location) -> Hash[String, untyped]?
30
- def self.location: (untyped location) -> Hash[String, untyped]?
33
+ # @rbs (sanitized_value location) -> Hash[String, json_value]?
34
+ def self.location: (sanitized_value location) -> Hash[String, json_value]?
31
35
 
32
- # @rbs (untyped input) -> String
33
- def self.string: (untyped input) -> String
36
+ # @rbs (sanitized_value input) -> String
37
+ def self.string: (sanitized_value input) -> String
34
38
 
35
- # @rbs (untyped input) -> String
36
- def self.class_name: (untyped input) -> String
39
+ # @rbs (sanitized_value input) -> String
40
+ def self.class_name: (sanitized_value input) -> String
37
41
 
38
- # @rbs (untyped input, depth: Integer, seen: Hash[Integer, bool]) -> untyped
39
- private def self.summarize: (untyped input, depth: Integer, seen: Hash[Integer, bool]) -> untyped
42
+ # @rbs (sanitized_value input, depth: Integer, seen: Hash[Integer, bool]) -> json_value
43
+ private def self.summarize: (sanitized_value input, depth: Integer, seen: Hash[Integer, bool]) -> json_value
40
44
 
41
- # @rbs (untyped input, depth: Integer, seen: Hash[Integer, bool]) -> untyped
42
- private def self.json_data: (untyped input, depth: Integer, seen: Hash[Integer, bool]) -> untyped
45
+ # @rbs (sanitized_value input, depth: Integer, seen: Hash[Integer, bool]) -> json_value
46
+ private def self.json_data: (sanitized_value input, depth: Integer, seen: Hash[Integer, bool]) -> json_value
43
47
 
44
- # @rbs (Array[untyped] input, depth: Integer, seen: Hash[Integer, bool]) -> untyped
45
- private def self.summarize_array: (Array[untyped] input, depth: Integer, seen: Hash[Integer, bool]) -> untyped
48
+ # @rbs (Array[sanitized_value] input, depth: Integer, seen: Hash[Integer, bool]) -> json_value
49
+ private def self.summarize_array: (Array[sanitized_value] input, depth: Integer, seen: Hash[Integer, bool]) -> json_value
46
50
 
47
- # @rbs (Hash[untyped, untyped] input, depth: Integer, seen: Hash[Integer, bool]) -> untyped
48
- private def self.summarize_hash: (Hash[untyped, untyped] input, depth: Integer, seen: Hash[Integer, bool]) -> untyped
51
+ # @rbs (Hash[sanitized_value, sanitized_value] input, depth: Integer, seen: Hash[Integer, bool]) -> json_value
52
+ private def self.summarize_hash: (Hash[sanitized_value, sanitized_value] input, depth: Integer, seen: Hash[Integer, bool]) -> json_value
49
53
 
50
- # @rbs (Array[untyped] input, depth: Integer, seen: Hash[Integer, bool]) -> untyped
51
- private def self.json_array: (Array[untyped] input, depth: Integer, seen: Hash[Integer, bool]) -> untyped
54
+ # @rbs (Array[sanitized_value] input, depth: Integer, seen: Hash[Integer, bool]) -> json_value
55
+ private def self.json_array: (Array[sanitized_value] input, depth: Integer, seen: Hash[Integer, bool]) -> json_value
52
56
 
53
- # @rbs (Hash[untyped, untyped] input, depth: Integer, seen: Hash[Integer, bool]) -> untyped
54
- private def self.json_hash: (Hash[untyped, untyped] input, depth: Integer, seen: Hash[Integer, bool]) -> untyped
57
+ # @rbs (Hash[sanitized_value, sanitized_value] input, depth: Integer, seen: Hash[Integer, bool]) -> json_value
58
+ private def self.json_hash: (Hash[sanitized_value, sanitized_value] input, depth: Integer, seen: Hash[Integer, bool]) -> json_value
55
59
 
56
- # @rbs (Array[untyped] input, seen: Hash[Integer, bool])
57
- # { (untyped, Hash[Integer, bool]) -> untyped } -> untyped
58
- private def self.copy_array: (Array[untyped] input, seen: Hash[Integer, bool]) { (untyped, Hash[Integer, bool]) -> untyped } -> untyped
60
+ # @rbs (Array[sanitized_value] input, seen: Hash[Integer, bool])
61
+ # { (sanitized_value, Hash[Integer, bool]) -> json_value } -> json_value
62
+ private def self.copy_array: (Array[sanitized_value] input, seen: Hash[Integer, bool]) { (sanitized_value, Hash[Integer, bool]) -> json_value } -> json_value
59
63
 
60
- # @rbs (untyped input) -> bool
61
- private def self.primitive?: (untyped input) -> bool
64
+ # @rbs (sanitized_value input) -> bool
65
+ private def self.primitive?: (sanitized_value input) -> bool
62
66
 
63
- # @rbs (Integer input) -> untyped
64
- private def self.bounded_integer: (Integer input) -> untyped
67
+ # @rbs (Integer input) -> json_value
68
+ private def self.bounded_integer: (Integer input) -> json_value
65
69
 
66
- # @rbs (Float input) -> untyped
67
- private def self.finite_float: (Float input) -> untyped
70
+ # @rbs (Float input) -> json_value
71
+ private def self.finite_float: (Float input) -> json_value
68
72
 
69
- # @rbs (untyped input, Module type) -> bool
70
- private def self.core_type?: (untyped input, Module type) -> bool
73
+ # @rbs (sanitized_value input, Module type) -> bool
74
+ private def self.core_type?: (sanitized_value input, Module type) -> bool
71
75
 
72
- # @rbs (untyped key) -> String
73
- private def self.data_key: (untyped key) -> String
76
+ # @rbs (sanitized_value key) -> String
77
+ private def self.data_key: (sanitized_value key) -> String
74
78
 
75
79
  # @rbs (String input) -> String
76
80
  private def self.truncate_utf8: (String input) -> String
77
81
 
78
- # @rbs (untyped input) -> Integer
79
- private def self.object_identity: (untyped input) -> Integer
82
+ # @rbs (sanitized_value input) -> Integer
83
+ private def self.object_identity: (sanitized_value input) -> Integer
80
84
 
81
- # @rbs (untyped location, Symbol field) -> untyped
82
- private def self.location_field: (untyped location, Symbol field) -> untyped
85
+ # @rbs (sanitized_value location, Symbol field) -> sanitized_value
86
+ private def self.location_field: (sanitized_value location, Symbol field) -> sanitized_value
83
87
 
84
- # @rbs (String reason) -> Hash[String, untyped]
85
- private def self.unavailable: (String reason) -> Hash[String, untyped]
88
+ # @rbs (String reason) -> Hash[String, json_value]
89
+ private def self.unavailable: (String reason) -> Hash[String, json_value]
86
90
 
87
- # @rbs (Module owner, Symbol method_name, untyped receiver, *untyped args, **untyped keywords)
88
- # ?{ (*untyped) -> untyped } -> untyped
89
- private def self.core_call: (Module owner, Symbol method_name, untyped receiver, *untyped args, **untyped keywords) ?{ (*untyped) -> untyped } -> untyped
91
+ # Reflection deliberately erases the receiver's method signature; callers validate
92
+ # returned values at each sanitization boundary.
93
+ # @rbs (Module owner, Symbol method_name, sanitized_value receiver, *sanitized_value, **sanitized_value)
94
+ # ?{ (*sanitized_value) -> sanitized_value } -> sanitized_value
95
+ private def self.core_call: (Module owner, Symbol method_name, sanitized_value receiver, *sanitized_value, **sanitized_value) ?{ (*sanitized_value) -> sanitized_value } -> sanitized_value
90
96
  end
91
97
  end
92
98
  end
@@ -21,7 +21,7 @@ module Ibex
21
21
 
22
22
  @lexer_skip_requested: bool
23
23
 
24
- @lexer_emission: Object | Array[untyped]
24
+ @lexer_emission: Object | Array[Object?]
25
25
 
26
26
  @lexer_lexeme: String?
27
27
 
@@ -43,16 +43,23 @@ module Ibex
43
43
  # @rbs (String | IO | Fiber source, ?file: String) -> self
44
44
  def lex: (String | IO | Fiber source, ?file: String) -> self
45
45
 
46
- # Lex and parse one String, IO, or Fiber source.
47
- # @rbs (String | IO | Fiber source, ?file: String) -> untyped
48
- def parse: (String | IO | Fiber source, ?file: String) -> untyped
46
+ # Lex and semantically parse one String, IO, or Fiber source.
47
+ # Parser and generated lexer actions execute. Loading the generated file
48
+ # may also execute user sections; this trusted application path is not a
49
+ # sandbox.
50
+ # @rbs (String | IO | Fiber source, ?file: String) -> Object?
51
+ def parse: (String | IO | Fiber source, ?file: String) -> Object?
49
52
 
50
53
  # Parse one generated-lexer source and return its semantic and syntax results.
54
+ # Parser and generated lexer actions execute. This trusted application
55
+ # path is not a sandbox.
51
56
  # @rbs (String | IO | Fiber source, ?file: String) -> CST::ParseResult
52
57
  def parse_with_syntax: (String | IO | Fiber source, ?file: String) -> CST::ParseResult
53
58
 
54
59
  # Parse without executing parser production actions.
55
- # Lexer actions still run because they define tokenization and lexer state.
60
+ # Generated lexer actions still run because they define tokenization and
61
+ # lexer state. Loading user sections and running lexer actions are trusted
62
+ # application boundaries, so this method is not a no-user-code sandbox.
56
63
  # @rbs (String source, ?file: String) -> CST::SyntaxResult
57
64
  def parse_syntax: (String source, ?file: String) -> CST::SyntaxResult
58
65
 
@@ -65,8 +72,8 @@ module Ibex
65
72
  def lexer_state=: (Symbol | String state) -> Symbol
66
73
 
67
74
  # Pull one token using longest match and declaration-order tie breaking.
68
- # @rbs () -> [untyped, untyped, Hash[Symbol, untyped]]
69
- def next_token: () -> [ untyped, untyped, Hash[Symbol, untyped] ]
75
+ # @rbs () -> [Object?, Object?, Hash[Symbol, Object?]]
76
+ def next_token: () -> [ Object?, Object?, Hash[Symbol, Object?] ]
70
77
 
71
78
  private
72
79
 
@@ -77,14 +84,14 @@ module Ibex
77
84
  # @rbs (CST::SourceText source_text, CST::NodeCache cache) -> CST::LexedSyntax
78
85
  def scan_syntax_with_cache: (CST::SourceText source_text, CST::NodeCache cache) -> CST::LexedSyntax
79
86
 
80
- # @rbs (Integer token_id, untyped value, untyped location, CST::NodeCache cache) -> CST::GreenToken
81
- def scanned_green_token: (Integer token_id, untyped value, untyped location, CST::NodeCache cache) -> CST::GreenToken
87
+ # @rbs (Integer token_id, Object? value, Object? location, CST::NodeCache cache) -> CST::GreenToken
88
+ def scanned_green_token: (Integer token_id, Object? value, Object? location, CST::NodeCache cache) -> CST::GreenToken
82
89
 
83
- # @rbs (Array[CST::GreenToken] tokens, untyped location, CST::NodeCache cache) -> void
84
- def replace_previous_scanned_trailing: (Array[CST::GreenToken] tokens, untyped location, CST::NodeCache cache) -> void
90
+ # @rbs (Array[CST::GreenToken] tokens, Object? location, CST::NodeCache cache) -> void
91
+ def replace_previous_scanned_trailing: (Array[CST::GreenToken] tokens, Object? location, CST::NodeCache cache) -> void
85
92
 
86
- # @rbs (untyped location, Symbol key) -> Array[CST::GreenTrivia]
87
- def scanned_green_trivia: (untyped location, Symbol key) -> Array[CST::GreenTrivia]
93
+ # @rbs (Object? location, Symbol key) -> Array[CST::GreenTrivia]
94
+ def scanned_green_trivia: (Object? location, Symbol key) -> Array[CST::GreenTrivia]
88
95
 
89
96
  # @rbs (LexerInput input) -> bool
90
97
  def ensure_lexer_data?: (LexerInput input) -> bool
@@ -102,13 +109,13 @@ module Ibex
102
109
  # @rbs (LexerInput input, String lexeme) -> Hash[Symbol, untyped]
103
110
  def consume_lexer_match: (LexerInput input, String lexeme) -> Hash[Symbol, untyped]
104
111
 
105
- # @rbs (Hash[Symbol, untyped] rule, String lexeme, Hash[Symbol, untyped] location) ->
106
- # [untyped, untyped, Hash[Symbol, untyped]]?
107
- def apply_lexer_rule: (Hash[Symbol, untyped] rule, String lexeme, Hash[Symbol, untyped] location) -> [ untyped, untyped, Hash[Symbol, untyped] ]?
112
+ # @rbs (Hash[Symbol, untyped] rule, String lexeme, Hash[Symbol, Object?] location) ->
113
+ # [Object?, Object?, Hash[Symbol, Object?]]?
114
+ def apply_lexer_rule: (Hash[Symbol, untyped] rule, String lexeme, Hash[Symbol, Object?] location) -> [ Object?, Object?, Hash[Symbol, Object?] ]?
108
115
 
109
116
  # Emit a token from a lexer action.
110
- # @rbs (untyped token, ?untyped value) -> untyped
111
- def emit: (untyped token, ?untyped value) -> untyped
117
+ # @rbs (Object? token, ?Object? value) -> Object?
118
+ def emit: (Object? token, ?Object? value) -> Object?
112
119
 
113
120
  # Suppress the current match from a lexer action.
114
121
  # @rbs () -> nil
@@ -118,11 +125,11 @@ module Ibex
118
125
  # @rbs () -> String?
119
126
  def lexeme: () -> String?
120
127
 
121
- # @rbs (String text, Hash[Symbol, untyped] location) -> void
122
- def retain_cst_trivia: (String text, Hash[Symbol, untyped] location) -> void
128
+ # @rbs (String text, Hash[Symbol, Object?] location) -> void
129
+ def retain_cst_trivia: (String text, Hash[Symbol, Object?] location) -> void
123
130
 
124
- # @rbs (Hash[Symbol, untyped] location) -> Hash[Symbol, untyped]
125
- def attach_cst_trivia: (Hash[Symbol, untyped] location) -> Hash[Symbol, untyped]
131
+ # @rbs (Hash[Symbol, Object?] location) -> Hash[Symbol, Object?]
132
+ def attach_cst_trivia: (Hash[Symbol, Object?] location) -> Hash[Symbol, Object?]
126
133
 
127
134
  # @rbs () -> Symbol
128
135
  def cst_trivia_policy: () -> Symbol
@@ -159,8 +166,8 @@ module Ibex
159
166
  # @rbs () -> Hash[Symbol, Integer]
160
167
  def lexer_position: () -> Hash[Symbol, Integer]
161
168
 
162
- # @rbs () -> Hash[Symbol, untyped]
163
- def lexer_zero_width_location: () -> Hash[Symbol, untyped]
169
+ # @rbs () -> Hash[Symbol, Object?]
170
+ def lexer_zero_width_location: () -> Hash[Symbol, Object?]
164
171
 
165
172
  # @rbs (String lexeme) -> void
166
173
  def advance_lexer_position: (String lexeme) -> void
@@ -34,8 +34,8 @@ module Ibex
34
34
  # @rbs () -> void
35
35
  def read_chunk: () -> void
36
36
 
37
- # @rbs (Fiber source) -> untyped
38
- def resume_fiber: (Fiber source) -> untyped
37
+ # @rbs (Fiber source) -> Object?
38
+ def resume_fiber: (Fiber source) -> Object?
39
39
 
40
40
  # @rbs (String chunk) -> void
41
41
  def append: (String chunk) -> void
@@ -8,57 +8,57 @@ module Ibex
8
8
  # supplied by the lexer. A reduction wraps the outer boundaries in this
9
9
  # immutable value so actions can distinguish synthesized spans.
10
10
  class LocationSpan
11
- attr_reader start: untyped
11
+ attr_reader start: Object?
12
12
 
13
- attr_reader finish: untyped
13
+ attr_reader finish: Object?
14
14
 
15
- # @rbs (start: untyped, finish: untyped, ?empty: bool) -> void
16
- def initialize: (start: untyped, finish: untyped, ?empty: bool) -> void
15
+ # @rbs (start: Object?, finish: Object?, ?empty: bool) -> void
16
+ def initialize: (start: Object?, finish: Object?, ?empty: bool) -> void
17
17
 
18
18
  # Build a span for an LR reduction. Nonempty reductions cover the first
19
19
  # through last located RHS entry. Empty reductions are zero-width at the
20
20
  # current lookahead location.
21
- # @rbs (Array[untyped] locations, lookahead: untyped) -> LocationSpan?
22
- def self.for_reduction: (Array[untyped] locations, lookahead: untyped) -> LocationSpan?
21
+ # @rbs (Array[Object?] locations, lookahead: Object?) -> LocationSpan?
22
+ def self.for_reduction: (Array[Object?] locations, lookahead: Object?) -> LocationSpan?
23
23
 
24
24
  # Whether this is the zero-width span of an empty production.
25
25
  # @rbs () -> bool
26
26
  def empty?: () -> bool
27
27
 
28
- # @rbs () -> untyped
29
- def file: () -> untyped
28
+ # @rbs () -> Object?
29
+ def file: () -> Object?
30
30
 
31
- # @rbs () -> untyped
32
- def line: () -> untyped
31
+ # @rbs () -> Object?
32
+ def line: () -> Object?
33
33
 
34
- # @rbs () -> untyped
35
- def column: () -> untyped
34
+ # @rbs () -> Object?
35
+ def column: () -> Object?
36
36
 
37
- # @rbs () -> untyped
38
- def source_line: () -> untyped
37
+ # @rbs () -> Object?
38
+ def source_line: () -> Object?
39
39
 
40
- # @rbs () -> untyped
41
- def end_file: () -> untyped
40
+ # @rbs () -> Object?
41
+ def end_file: () -> Object?
42
42
 
43
- # @rbs () -> untyped
44
- def end_line: () -> untyped
43
+ # @rbs () -> Object?
44
+ def end_line: () -> Object?
45
45
 
46
- # @rbs () -> untyped
47
- def end_column: () -> untyped
46
+ # @rbs () -> Object?
47
+ def end_column: () -> Object?
48
48
 
49
- # @rbs () -> Hash[Symbol, untyped]
50
- def to_h: () -> Hash[Symbol, untyped]
49
+ # @rbs () -> Hash[Symbol, Object?]
50
+ def to_h: () -> Hash[Symbol, Object?]
51
51
 
52
- # @rbs (untyped location) -> untyped
53
- private def self.boundary_start: (untyped location) -> untyped
52
+ # @rbs (Object? location) -> Object?
53
+ private def self.boundary_start: (Object? location) -> Object?
54
54
 
55
- # @rbs (untyped location) -> untyped
56
- private def self.boundary_finish: (untyped location) -> untyped
55
+ # @rbs (Object? location) -> Object?
56
+ private def self.boundary_finish: (Object? location) -> Object?
57
57
 
58
58
  private
59
59
 
60
- # @rbs (untyped location, Symbol key) -> untyped
61
- def location_value: (untyped location, Symbol key) -> untyped
60
+ # @rbs (Object? location, Symbol key) -> Object?
61
+ def location_value: (Object? location, Symbol key) -> Object?
62
62
  end
63
63
  end
64
64
  end
@@ -22,8 +22,8 @@ module Ibex
22
22
 
23
23
  private
24
24
 
25
- # @rbs (Symbol type, Hash[untyped, untyped] data, ?observers: Array[Proc]?) -> void
26
- def emit_runtime_event: (Symbol type, Hash[untyped, untyped] data, ?observers: Array[Proc]?) -> void
25
+ # @rbs (Symbol type, Hash[Object?, Object?] data, ?observers: Array[Proc]?) -> void
26
+ def emit_runtime_event: (Symbol type, Hash[Object?, Object?] data, ?observers: Array[Proc]?) -> void
27
27
 
28
28
  # @rbs () -> Array[Proc]?
29
29
  def runtime_observer_snapshot: () -> Array[Proc]?