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.
- checksums.yaml +4 -4
- data/README.md +100 -272
- data/lib/ibex/runtime/cst/green/node.rb +1 -1
- data/lib/ibex/runtime/cst/green/token.rb +1 -1
- data/lib/ibex/runtime/cst/green/trivia.rb +1 -1
- data/lib/ibex/runtime/cst/incremental/blender.rb +1 -1
- data/lib/ibex/runtime/cst/incremental/lexed_syntax.rb +2 -2
- data/lib/ibex/runtime/cst/incremental/parse_memo.rb +2 -2
- data/lib/ibex/runtime/cst/incremental/relexer.rb +3 -0
- data/lib/ibex/runtime/cst/incremental/session.rb +26 -2
- data/lib/ibex/runtime/cst/parse_result.rb +7 -7
- data/lib/ibex/runtime/cst/serialize.rb +6 -3
- data/lib/ibex/runtime/cst/syntax_node.rb +4 -4
- data/lib/ibex/runtime/cst/syntax_token.rb +5 -5
- data/lib/ibex/runtime/cst/typed_node.rb +1 -1
- data/lib/ibex/runtime/cst/validator.rb +40 -30
- data/lib/ibex/runtime/embedded_source.rb +98 -0
- data/lib/ibex/runtime/event.rb +7 -4
- data/lib/ibex/runtime/event_jsonl_tracer.rb +1 -1
- data/lib/ibex/runtime/event_sanitizer.rb +32 -26
- data/lib/ibex/runtime/generated_lexer.rb +23 -16
- data/lib/ibex/runtime/lexer_input.rb +1 -1
- data/lib/ibex/runtime/location_span.rb +15 -15
- data/lib/ibex/runtime/observation.rb +1 -1
- data/lib/ibex/runtime/parser.rb +309 -191
- data/lib/ibex/runtime/parser_sync_recovery.rb +19 -15
- data/lib/ibex/runtime/repair.rb +36 -5
- data/lib/ibex/runtime/repair_priority_queue.rb +10 -6
- data/lib/ibex/runtime/repair_search.rb +92 -29
- data/lib/ibex/runtime/syntax_repair.rb +490 -0
- data/lib/ibex/runtime/syntax_session.rb +416 -0
- data/lib/ibex/runtime/table_format.rb +1 -1
- data/lib/ibex/runtime/version.rb +1 -1
- data/lib/ibex/runtime.rb +2 -1
- data/lib/ibex/tables/compact.rb +16 -12
- data/lib/ibex/tables/compact_actions.rb +45 -33
- data/lib/ibex/tables/compact_productions.rb +18 -15
- data/sig/ibex/runtime/cst/green/node.rbs +2 -2
- data/sig/ibex/runtime/cst/green/token.rbs +2 -2
- data/sig/ibex/runtime/cst/green/trivia.rbs +2 -2
- data/sig/ibex/runtime/cst/incremental/blender.rbs +2 -2
- data/sig/ibex/runtime/cst/incremental/lexed_syntax.rbs +3 -3
- data/sig/ibex/runtime/cst/incremental/parse_memo.rbs +4 -4
- data/sig/ibex/runtime/cst/incremental/session.rbs +8 -2
- data/sig/ibex/runtime/cst/parse_result.rbs +9 -9
- data/sig/ibex/runtime/cst/serialize.rbs +8 -6
- data/sig/ibex/runtime/cst/syntax_node.rbs +6 -6
- data/sig/ibex/runtime/cst/syntax_token.rbs +10 -10
- data/sig/ibex/runtime/cst/typed_node.rbs +2 -2
- data/sig/ibex/runtime/cst/validator.rbs +46 -42
- data/sig/ibex/runtime/embedded_source.rbs +21 -0
- data/sig/ibex/runtime/event.rbs +7 -5
- data/sig/ibex/runtime/event_jsonl_tracer.rbs +1 -1
- data/sig/ibex/runtime/event_sanitizer.rbs +50 -44
- data/sig/ibex/runtime/generated_lexer.rbs +31 -24
- data/sig/ibex/runtime/lexer_input.rbs +2 -2
- data/sig/ibex/runtime/location_span.rbs +28 -28
- data/sig/ibex/runtime/observation.rbs +2 -2
- data/sig/ibex/runtime/parser.rbs +266 -252
- data/sig/ibex/runtime/parser_sync_recovery.rbs +15 -15
- data/sig/ibex/runtime/repair.rbs +28 -8
- data/sig/ibex/runtime/repair_priority_queue.rbs +9 -7
- data/sig/ibex/runtime/repair_search.rbs +38 -19
- data/sig/ibex/runtime/syntax_repair.rbs +177 -0
- data/sig/ibex/runtime/syntax_session.rbs +186 -0
- data/sig/ibex/tables/compact.rbs +12 -12
- data/sig/ibex/tables/compact_actions.rbs +10 -17
- data/sig/ibex/tables/compact_productions.rbs +19 -19
- metadata +12 -6
- data/lib/ibex/runtime/jsonl_tracer.rb +0 -75
- 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[
|
|
24
|
-
def self.data: (Hash[
|
|
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 (
|
|
27
|
-
def self.value: (
|
|
30
|
+
# @rbs (sanitized_value input) -> json_value
|
|
31
|
+
def self.value: (sanitized_value input) -> json_value
|
|
28
32
|
|
|
29
|
-
# @rbs (
|
|
30
|
-
def self.location: (
|
|
33
|
+
# @rbs (sanitized_value location) -> Hash[String, json_value]?
|
|
34
|
+
def self.location: (sanitized_value location) -> Hash[String, json_value]?
|
|
31
35
|
|
|
32
|
-
# @rbs (
|
|
33
|
-
def self.string: (
|
|
36
|
+
# @rbs (sanitized_value input) -> String
|
|
37
|
+
def self.string: (sanitized_value input) -> String
|
|
34
38
|
|
|
35
|
-
# @rbs (
|
|
36
|
-
def self.class_name: (
|
|
39
|
+
# @rbs (sanitized_value input) -> String
|
|
40
|
+
def self.class_name: (sanitized_value input) -> String
|
|
37
41
|
|
|
38
|
-
# @rbs (
|
|
39
|
-
private def self.summarize: (
|
|
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 (
|
|
42
|
-
private def self.json_data: (
|
|
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[
|
|
45
|
-
private def self.summarize_array: (Array[
|
|
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[
|
|
48
|
-
private def self.summarize_hash: (Hash[
|
|
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[
|
|
51
|
-
private def self.json_array: (Array[
|
|
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[
|
|
54
|
-
private def self.json_hash: (Hash[
|
|
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[
|
|
57
|
-
# { (
|
|
58
|
-
private def self.copy_array: (Array[
|
|
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 (
|
|
61
|
-
private def self.primitive?: (
|
|
64
|
+
# @rbs (sanitized_value input) -> bool
|
|
65
|
+
private def self.primitive?: (sanitized_value input) -> bool
|
|
62
66
|
|
|
63
|
-
# @rbs (Integer input) ->
|
|
64
|
-
private def self.bounded_integer: (Integer input) ->
|
|
67
|
+
# @rbs (Integer input) -> json_value
|
|
68
|
+
private def self.bounded_integer: (Integer input) -> json_value
|
|
65
69
|
|
|
66
|
-
# @rbs (Float input) ->
|
|
67
|
-
private def self.finite_float: (Float input) ->
|
|
70
|
+
# @rbs (Float input) -> json_value
|
|
71
|
+
private def self.finite_float: (Float input) -> json_value
|
|
68
72
|
|
|
69
|
-
# @rbs (
|
|
70
|
-
private def self.core_type?: (
|
|
73
|
+
# @rbs (sanitized_value input, Module type) -> bool
|
|
74
|
+
private def self.core_type?: (sanitized_value input, Module type) -> bool
|
|
71
75
|
|
|
72
|
-
# @rbs (
|
|
73
|
-
private def self.data_key: (
|
|
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 (
|
|
79
|
-
private def self.object_identity: (
|
|
82
|
+
# @rbs (sanitized_value input) -> Integer
|
|
83
|
+
private def self.object_identity: (sanitized_value input) -> Integer
|
|
80
84
|
|
|
81
|
-
# @rbs (
|
|
82
|
-
private def self.location_field: (
|
|
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,
|
|
85
|
-
private def self.unavailable: (String reason) -> Hash[String,
|
|
88
|
+
# @rbs (String reason) -> Hash[String, json_value]
|
|
89
|
+
private def self.unavailable: (String reason) -> Hash[String, json_value]
|
|
86
90
|
|
|
87
|
-
#
|
|
88
|
-
#
|
|
89
|
-
|
|
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[
|
|
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
|
-
#
|
|
48
|
-
|
|
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
|
-
#
|
|
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 () -> [
|
|
69
|
-
def next_token: () -> [
|
|
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,
|
|
81
|
-
def scanned_green_token: (Integer token_id,
|
|
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,
|
|
84
|
-
def replace_previous_scanned_trailing: (Array[CST::GreenToken] tokens,
|
|
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 (
|
|
87
|
-
def scanned_green_trivia: (
|
|
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,
|
|
106
|
-
# [
|
|
107
|
-
def apply_lexer_rule: (Hash[Symbol, untyped] rule, String lexeme, Hash[Symbol,
|
|
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 (
|
|
111
|
-
def emit: (
|
|
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,
|
|
122
|
-
def retain_cst_trivia: (String text, Hash[Symbol,
|
|
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,
|
|
125
|
-
def attach_cst_trivia: (Hash[Symbol,
|
|
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,
|
|
163
|
-
def lexer_zero_width_location: () -> Hash[Symbol,
|
|
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) ->
|
|
38
|
-
def resume_fiber: (Fiber source) ->
|
|
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:
|
|
11
|
+
attr_reader start: Object?
|
|
12
12
|
|
|
13
|
-
attr_reader finish:
|
|
13
|
+
attr_reader finish: Object?
|
|
14
14
|
|
|
15
|
-
# @rbs (start:
|
|
16
|
-
def initialize: (start:
|
|
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[
|
|
22
|
-
def self.for_reduction: (Array[
|
|
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 () ->
|
|
29
|
-
def file: () ->
|
|
28
|
+
# @rbs () -> Object?
|
|
29
|
+
def file: () -> Object?
|
|
30
30
|
|
|
31
|
-
# @rbs () ->
|
|
32
|
-
def line: () ->
|
|
31
|
+
# @rbs () -> Object?
|
|
32
|
+
def line: () -> Object?
|
|
33
33
|
|
|
34
|
-
# @rbs () ->
|
|
35
|
-
def column: () ->
|
|
34
|
+
# @rbs () -> Object?
|
|
35
|
+
def column: () -> Object?
|
|
36
36
|
|
|
37
|
-
# @rbs () ->
|
|
38
|
-
def source_line: () ->
|
|
37
|
+
# @rbs () -> Object?
|
|
38
|
+
def source_line: () -> Object?
|
|
39
39
|
|
|
40
|
-
# @rbs () ->
|
|
41
|
-
def end_file: () ->
|
|
40
|
+
# @rbs () -> Object?
|
|
41
|
+
def end_file: () -> Object?
|
|
42
42
|
|
|
43
|
-
# @rbs () ->
|
|
44
|
-
def end_line: () ->
|
|
43
|
+
# @rbs () -> Object?
|
|
44
|
+
def end_line: () -> Object?
|
|
45
45
|
|
|
46
|
-
# @rbs () ->
|
|
47
|
-
def end_column: () ->
|
|
46
|
+
# @rbs () -> Object?
|
|
47
|
+
def end_column: () -> Object?
|
|
48
48
|
|
|
49
|
-
# @rbs () -> Hash[Symbol,
|
|
50
|
-
def to_h: () -> Hash[Symbol,
|
|
49
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
50
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
51
51
|
|
|
52
|
-
# @rbs (
|
|
53
|
-
private def self.boundary_start: (
|
|
52
|
+
# @rbs (Object? location) -> Object?
|
|
53
|
+
private def self.boundary_start: (Object? location) -> Object?
|
|
54
54
|
|
|
55
|
-
# @rbs (
|
|
56
|
-
private def self.boundary_finish: (
|
|
55
|
+
# @rbs (Object? location) -> Object?
|
|
56
|
+
private def self.boundary_finish: (Object? location) -> Object?
|
|
57
57
|
|
|
58
58
|
private
|
|
59
59
|
|
|
60
|
-
# @rbs (
|
|
61
|
-
def location_value: (
|
|
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[
|
|
26
|
-
def emit_runtime_event: (Symbol type, Hash[
|
|
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]?
|