prism 0.29.0 → 1.3.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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +115 -1
  3. data/CONTRIBUTING.md +0 -4
  4. data/Makefile +1 -1
  5. data/README.md +4 -0
  6. data/config.yml +920 -148
  7. data/docs/build_system.md +8 -11
  8. data/docs/fuzzing.md +1 -1
  9. data/docs/parsing_rules.md +4 -1
  10. data/docs/relocation.md +34 -0
  11. data/docs/ripper_translation.md +22 -0
  12. data/docs/serialization.md +3 -0
  13. data/ext/prism/api_node.c +2863 -2079
  14. data/ext/prism/extconf.rb +14 -37
  15. data/ext/prism/extension.c +241 -391
  16. data/ext/prism/extension.h +2 -2
  17. data/include/prism/ast.h +2156 -453
  18. data/include/prism/defines.h +58 -7
  19. data/include/prism/diagnostic.h +24 -6
  20. data/include/prism/node.h +0 -21
  21. data/include/prism/options.h +94 -3
  22. data/include/prism/parser.h +82 -40
  23. data/include/prism/regexp.h +18 -8
  24. data/include/prism/static_literals.h +3 -2
  25. data/include/prism/util/pm_char.h +1 -2
  26. data/include/prism/util/pm_constant_pool.h +0 -8
  27. data/include/prism/util/pm_integer.h +22 -15
  28. data/include/prism/util/pm_newline_list.h +11 -0
  29. data/include/prism/util/pm_string.h +28 -12
  30. data/include/prism/version.h +3 -3
  31. data/include/prism.h +47 -11
  32. data/lib/prism/compiler.rb +3 -0
  33. data/lib/prism/desugar_compiler.rb +111 -74
  34. data/lib/prism/dispatcher.rb +16 -1
  35. data/lib/prism/dot_visitor.rb +55 -34
  36. data/lib/prism/dsl.rb +660 -468
  37. data/lib/prism/ffi.rb +113 -8
  38. data/lib/prism/inspect_visitor.rb +296 -64
  39. data/lib/prism/lex_compat.rb +1 -1
  40. data/lib/prism/mutation_compiler.rb +11 -6
  41. data/lib/prism/node.rb +4262 -5023
  42. data/lib/prism/node_ext.rb +91 -14
  43. data/lib/prism/parse_result/comments.rb +0 -7
  44. data/lib/prism/parse_result/errors.rb +65 -0
  45. data/lib/prism/parse_result/newlines.rb +101 -11
  46. data/lib/prism/parse_result.rb +183 -6
  47. data/lib/prism/reflection.rb +12 -10
  48. data/lib/prism/relocation.rb +504 -0
  49. data/lib/prism/serialize.rb +496 -609
  50. data/lib/prism/string_query.rb +30 -0
  51. data/lib/prism/translation/parser/compiler.rb +185 -155
  52. data/lib/prism/translation/parser/lexer.rb +26 -4
  53. data/lib/prism/translation/parser.rb +9 -4
  54. data/lib/prism/translation/ripper.rb +23 -25
  55. data/lib/prism/translation/ruby_parser.rb +86 -17
  56. data/lib/prism/visitor.rb +3 -0
  57. data/lib/prism.rb +6 -8
  58. data/prism.gemspec +9 -5
  59. data/rbi/prism/dsl.rbi +521 -0
  60. data/rbi/prism/node.rbi +1115 -1120
  61. data/rbi/prism/parse_result.rbi +29 -0
  62. data/rbi/prism/string_query.rbi +12 -0
  63. data/rbi/prism/visitor.rbi +3 -0
  64. data/rbi/prism.rbi +36 -30
  65. data/sig/prism/dsl.rbs +190 -303
  66. data/sig/prism/mutation_compiler.rbs +1 -0
  67. data/sig/prism/node.rbs +678 -632
  68. data/sig/prism/parse_result.rbs +22 -0
  69. data/sig/prism/relocation.rbs +185 -0
  70. data/sig/prism/string_query.rbs +11 -0
  71. data/sig/prism/visitor.rbs +1 -0
  72. data/sig/prism.rbs +103 -64
  73. data/src/diagnostic.c +64 -28
  74. data/src/node.c +502 -1739
  75. data/src/options.c +76 -27
  76. data/src/prettyprint.c +188 -112
  77. data/src/prism.c +3376 -2293
  78. data/src/regexp.c +208 -71
  79. data/src/serialize.c +182 -50
  80. data/src/static_literals.c +64 -85
  81. data/src/token_type.c +4 -4
  82. data/src/util/pm_char.c +1 -1
  83. data/src/util/pm_constant_pool.c +0 -8
  84. data/src/util/pm_integer.c +53 -25
  85. data/src/util/pm_newline_list.c +29 -0
  86. data/src/util/pm_string.c +131 -80
  87. data/src/util/pm_strpbrk.c +32 -6
  88. metadata +11 -7
  89. data/include/prism/util/pm_string_list.h +0 -44
  90. data/lib/prism/debug.rb +0 -249
  91. data/lib/prism/translation/parser/rubocop.rb +0 -73
  92. data/src/util/pm_string_list.c +0 -28
@@ -1,4 +1,8 @@
1
1
  module Prism
2
+ interface _CodeUnitsCache
3
+ def []: (Integer byte_offset) -> Integer
4
+ end
5
+
2
6
  class Source
3
7
  attr_reader source: String
4
8
  attr_reader start_line: Integer
@@ -16,13 +20,22 @@ module Prism
16
20
  def character_offset: (Integer byte_offset) -> Integer
17
21
  def character_column: (Integer byte_offset) -> Integer
18
22
  def code_units_offset: (Integer byte_offset, Encoding encoding) -> Integer
23
+ def code_units_cache: (Encoding encoding) -> _CodeUnitsCache
19
24
  def code_units_column: (Integer byte_offset, Encoding encoding) -> Integer
25
+
26
+ def self.for: (String source) -> Source
27
+ end
28
+
29
+ class CodeUnitsCache
30
+ def initialize: (String source, Encoding encoding) -> void
31
+ def []: (Integer byte_offset) -> Integer
20
32
  end
21
33
 
22
34
  class ASCIISource < Source
23
35
  def character_offset: (Integer byte_offset) -> Integer
24
36
  def character_column: (Integer byte_offset) -> Integer
25
37
  def code_units_offset: (Integer byte_offset, Encoding encoding) -> Integer
38
+ def code_units_cache: (Encoding encoding) -> _CodeUnitsCache
26
39
  def code_units_column: (Integer byte_offset, Encoding encoding) -> Integer
27
40
  end
28
41
 
@@ -43,15 +56,23 @@ module Prism
43
56
  def slice: () -> String
44
57
  def slice_lines: () -> String
45
58
  def start_character_offset: () -> Integer
59
+ def start_code_units_offset: (Encoding encoding) -> Integer
60
+ def cached_start_code_units_offset: (_CodeUnitsCache cache) -> Integer
46
61
  def end_offset: () -> Integer
47
62
  def end_character_offset: () -> Integer
63
+ def end_code_units_offset: (Encoding encoding) -> Integer
64
+ def cached_end_code_units_offset: (_CodeUnitsCache cache) -> Integer
48
65
  def start_line: () -> Integer
49
66
  def start_line_slice: () -> String
50
67
  def end_line: () -> Integer
51
68
  def start_column: () -> Integer
52
69
  def start_character_column: () -> Integer
70
+ def start_code_units_column: (Encoding encoding) -> Integer
71
+ def cached_start_code_units_column: (_CodeUnitsCache cache) -> Integer
53
72
  def end_column: () -> Integer
54
73
  def end_character_column: () -> Integer
74
+ def end_code_units_column: (Encoding encoding) -> Integer
75
+ def cached_end_code_units_column: (_CodeUnitsCache cache) -> Integer
55
76
  def deconstruct_keys: (Array[Symbol]? keys) -> Hash[Symbol, untyped]
56
77
  def pretty_print: (untyped q) -> untyped
57
78
  def join: (Location other) -> Location
@@ -123,6 +144,7 @@ module Prism
123
144
  def deconstruct_keys: (Array[Symbol]? keys) -> Hash[Symbol, untyped]
124
145
  def success?: () -> bool
125
146
  def failure?: () -> bool
147
+ def code_units_cache: (Encoding encoding) -> _CodeUnitsCache
126
148
  end
127
149
 
128
150
  class ParseResult < Result
@@ -0,0 +1,185 @@
1
+ module Prism
2
+ module Relocation
3
+ interface _Value
4
+ def start_line: () -> Integer
5
+ def end_line: () -> Integer
6
+ def start_offset: () -> Integer
7
+ def end_offset: () -> Integer
8
+ def start_character_offset: () -> Integer
9
+ def end_character_offset: () -> Integer
10
+ def cached_start_code_units_offset: (_CodeUnitsCache cache) -> Integer
11
+ def cached_end_code_units_offset: (_CodeUnitsCache cache) -> Integer
12
+ def start_column: () -> Integer
13
+ def end_column: () -> Integer
14
+ def start_character_column: () -> Integer
15
+ def end_character_column: () -> Integer
16
+ def cached_start_code_units_column: (_CodeUnitsCache cache) -> Integer
17
+ def cached_end_code_units_column: (_CodeUnitsCache cache) -> Integer
18
+ def leading_comments: () -> Array[Comment]
19
+ def trailing_comments: () -> Array[Comment]
20
+ end
21
+
22
+ interface _Field
23
+ def fields: (_Value value) -> entry_values
24
+ end
25
+
26
+ type entry_value = untyped
27
+ type entry_values = Hash[Symbol, entry_value]
28
+
29
+ class Entry
30
+ class MissingValueError < StandardError
31
+ end
32
+
33
+ def initialize: (Repository repository) -> void
34
+
35
+ def filepath: () -> String
36
+
37
+ def start_line: () -> Integer
38
+ def end_line: () -> Integer
39
+
40
+ def start_offset: () -> Integer
41
+ def end_offset: () -> Integer
42
+ def start_character_offset: () -> Integer
43
+ def end_character_offset: () -> Integer
44
+ def start_code_units_offset: () -> Integer
45
+ def end_code_units_offset: () -> Integer
46
+
47
+ def start_column: () -> Integer
48
+ def end_column: () -> Integer
49
+ def start_character_column: () -> Integer
50
+ def end_character_column: () -> Integer
51
+ def start_code_units_column: () -> Integer
52
+ def end_code_units_column: () -> Integer
53
+
54
+ def leading_comments: () -> Array[CommentsField::Comment]
55
+ def trailing_comments: () -> Array[CommentsField::Comment]
56
+ def comments: () -> Array[CommentsField::Comment]
57
+
58
+ private
59
+
60
+ def fetch_value: (Symbol name) -> entry_value
61
+ def values: () -> entry_values
62
+ end
63
+
64
+ class Source
65
+ attr_reader value: untyped
66
+
67
+ def initialize: (untyped value) -> void
68
+
69
+ def result: () -> ParseResult
70
+ def code_units_cache: (Encoding encoding) -> _CodeUnitsCache
71
+ end
72
+
73
+ class SourceFilepath < Source
74
+ def result: () -> ParseResult
75
+ end
76
+
77
+ class SourceString < Source
78
+ def result: () -> ParseResult
79
+ end
80
+
81
+ class FilepathField
82
+ attr_reader value: String
83
+
84
+ def initialize: (String value) -> void
85
+
86
+ def fields: (_Value value) -> entry_values
87
+ end
88
+
89
+ class LinesField
90
+ def fields: (_Value value) -> entry_values
91
+ end
92
+
93
+ class OffsetsField
94
+ def fields: (_Value value) -> entry_values
95
+ end
96
+
97
+ class CharacterOffsetsField
98
+ def fields: (_Value value) -> entry_values
99
+ end
100
+
101
+ class CodeUnitOffsetsField
102
+ attr_reader repository: Repository
103
+ attr_reader encoding: Encoding
104
+
105
+ def initialize: (Repository repository, Encoding encoding) -> void
106
+ def fields: (_Value value) -> entry_values
107
+
108
+ private
109
+
110
+ def cache: () -> _CodeUnitsCache
111
+ end
112
+
113
+ class ColumnsField
114
+ def fields: (_Value value) -> entry_values
115
+ end
116
+
117
+ class CharacterColumnsField
118
+ def fields: (_Value value) -> entry_values
119
+ end
120
+
121
+ class CodeUnitColumnsField
122
+ attr_reader repository: Repository
123
+ attr_reader encoding: Encoding
124
+
125
+ def initialize: (Repository repository, Encoding encoding) -> void
126
+ def fields: (_Value value) -> entry_values
127
+
128
+ private
129
+
130
+ def cache: () -> _CodeUnitsCache
131
+ end
132
+
133
+ class CommentsField
134
+ class Comment
135
+ attr_reader slice: String
136
+
137
+ def initialize: (String slice) -> void
138
+ end
139
+
140
+ private
141
+
142
+ def comments: (entry_value value) -> Array[Comment]
143
+ end
144
+
145
+ class LeadingCommentsField < CommentsField
146
+ def fields: (_Value value) -> entry_values
147
+ end
148
+
149
+ class TrailingCommentsField < CommentsField
150
+ def fields: (_Value value) -> entry_values
151
+ end
152
+
153
+ class Repository
154
+ class ConfigurationError < StandardError
155
+ end
156
+
157
+ attr_reader source: Source
158
+ attr_reader fields: Hash[Symbol, _Field]
159
+ attr_reader entries: Hash[Integer, Hash[Symbol, Entry]]
160
+
161
+ def initialize: (Source source) -> void
162
+
163
+ def code_units_cache: (Encoding encoding) -> _CodeUnitsCache
164
+
165
+ def filepath: () -> self
166
+ def lines: () -> self
167
+ def offsets: () -> self
168
+ def character_offsets: () -> self
169
+ def code_unit_offsets: (Encoding encoding) -> self
170
+ def columns: () -> self
171
+ def character_columns: () -> self
172
+ def code_unit_columns: (Encoding encoding) -> self
173
+ def leading_comments: () -> self
174
+ def trailing_comments: () -> self
175
+ def comments: () -> self
176
+
177
+ private
178
+
179
+ def field: (Symbol name, _Field) -> self
180
+ end
181
+
182
+ def self.filepath: (String value) -> Repository
183
+ def self.string: (String value) -> Repository
184
+ end
185
+ end
@@ -0,0 +1,11 @@
1
+ module Prism
2
+ class StringQuery
3
+ attr_reader string: String
4
+
5
+ def initialize: (String string) -> void
6
+
7
+ def local?: () -> bool
8
+ def constant?: () -> bool
9
+ def method_name?: () -> bool
10
+ end
11
+ end
@@ -97,6 +97,7 @@ module Prism
97
97
  def visit_interpolated_string_node: (InterpolatedStringNode) -> void
98
98
  def visit_interpolated_symbol_node: (InterpolatedSymbolNode) -> void
99
99
  def visit_interpolated_x_string_node: (InterpolatedXStringNode) -> void
100
+ def visit_it_local_variable_read_node: (ItLocalVariableReadNode) -> void
100
101
  def visit_it_parameters_node: (ItParametersNode) -> void
101
102
  def visit_keyword_hash_node: (KeywordHashNode) -> void
102
103
  def visit_keyword_rest_parameter_node: (KeywordRestParameterNode) -> void
data/sig/prism.rbs CHANGED
@@ -10,90 +10,110 @@ module Prism
10
10
 
11
11
  def self.parse: (
12
12
  String source,
13
+ ?encoding: Encoding | false,
13
14
  ?filepath: String,
15
+ ?frozen_string_literal: bool,
14
16
  ?line: Integer,
17
+ ?main_script: bool,
15
18
  ?offset: Integer,
16
- ?encoding: Encoding,
17
- ?frozen_string_literal: bool,
18
- ?verbose: bool,
19
- ?scopes: Array[Array[Symbol]]
19
+ ?scopes: Array[Array[Symbol]],
20
+ ?verbose: bool
20
21
  ) -> ParseResult
21
22
 
22
- def self.lex: (
23
+ def self.profile: (
23
24
  String source,
25
+ ?encoding: Encoding | false,
24
26
  ?filepath: String,
27
+ ?frozen_string_literal: bool,
25
28
  ?line: Integer,
29
+ ?main_script: bool,
26
30
  ?offset: Integer,
27
- ?encoding: Encoding,
31
+ ?scopes: Array[Array[Symbol]],
32
+ ?verbose: bool
33
+ ) -> nil
34
+
35
+ def self.lex: (
36
+ String source,
37
+ ?encoding: Encoding | false,
38
+ ?filepath: String,
28
39
  ?frozen_string_literal: bool,
29
- ?verbose: bool,
30
- ?scopes: Array[Array[Symbol]]
40
+ ?line: Integer,
41
+ ?main_script: bool,
42
+ ?offset: Integer,
43
+ ?scopes: Array[Array[Symbol]],
44
+ ?verbose: bool
31
45
  ) -> LexResult
32
46
 
33
47
  def self.lex_compat: (
34
48
  String source,
49
+ ?encoding: Encoding | false,
35
50
  ?filepath: String,
51
+ ?frozen_string_literal: bool,
36
52
  ?line: Integer,
53
+ ?main_script: bool,
37
54
  ?offset: Integer,
38
- ?encoding: Encoding,
39
- ?frozen_string_literal: bool,
40
- ?verbose: bool,
41
- ?scopes: Array[Array[Symbol]]
55
+ ?scopes: Array[Array[Symbol]],
56
+ ?verbose: bool
42
57
  ) -> LexCompat::Result
43
58
 
44
59
  def self.parse_lex: (
45
60
  String source,
61
+ ?encoding: Encoding | false,
46
62
  ?filepath: String,
63
+ ?frozen_string_literal: bool,
47
64
  ?line: Integer,
65
+ ?main_script: bool,
48
66
  ?offset: Integer,
49
- ?encoding: Encoding,
50
- ?frozen_string_literal: bool,
51
- ?verbose: bool,
52
- ?scopes: Array[Array[Symbol]]
67
+ ?scopes: Array[Array[Symbol]],
68
+ ?verbose: bool
53
69
  ) -> ParseLexResult
54
70
 
55
71
  def self.dump: (
56
72
  String source,
73
+ ?encoding: Encoding | false,
57
74
  ?filepath: String,
75
+ ?frozen_string_literal: bool,
58
76
  ?line: Integer,
77
+ ?main_script: bool,
59
78
  ?offset: Integer,
60
- ?encoding: Encoding,
61
- ?frozen_string_literal: bool,
62
- ?verbose: bool,
63
- ?scopes: Array[Array[Symbol]]
79
+ ?scopes: Array[Array[Symbol]],
80
+ ?verbose: bool
64
81
  ) -> String
65
82
 
66
83
  def self.parse_comments: (
67
84
  String source,
85
+ ?encoding: Encoding | false,
68
86
  ?filepath: String,
87
+ ?frozen_string_literal: bool,
69
88
  ?line: Integer,
89
+ ?main_script: bool,
70
90
  ?offset: Integer,
71
- ?encoding: Encoding,
72
- ?frozen_string_literal: bool,
73
- ?verbose: bool,
74
- ?scopes: Array[Array[Symbol]]
91
+ ?scopes: Array[Array[Symbol]],
92
+ ?verbose: bool
75
93
  ) -> Array[comment]
76
94
 
77
95
  def self.parse_success?: (
78
96
  String source,
97
+ ?encoding: Encoding | false,
79
98
  ?filepath: String,
99
+ ?frozen_string_literal: bool,
80
100
  ?line: Integer,
101
+ ?main_script: bool,
81
102
  ?offset: Integer,
82
- ?encoding: Encoding,
83
- ?frozen_string_literal: bool,
84
- ?verbose: bool,
85
- ?scopes: Array[Array[Symbol]]
103
+ ?scopes: Array[Array[Symbol]],
104
+ ?verbose: bool
86
105
  ) -> bool
87
106
 
88
107
  def self.parse_failure?: (
89
108
  String source,
109
+ ?encoding: Encoding | false,
90
110
  ?filepath: String,
111
+ ?frozen_string_literal: bool,
91
112
  ?line: Integer,
113
+ ?main_script: bool,
92
114
  ?offset: Integer,
93
- ?encoding: Encoding,
94
- ?frozen_string_literal: bool,
95
- ?verbose: bool,
96
- ?scopes: Array[Array[Symbol]]
115
+ ?scopes: Array[Array[Symbol]],
116
+ ?verbose: bool
97
117
  ) -> bool
98
118
 
99
119
  def self.load: (
@@ -109,72 +129,90 @@ module Prism
109
129
 
110
130
  def self.parse_file: (
111
131
  String filepath,
132
+ ?encoding: Encoding | false,
133
+ ?frozen_string_literal: bool,
112
134
  ?line: Integer,
135
+ ?main_script: bool,
113
136
  ?offset: Integer,
114
- ?encoding: Encoding,
115
- ?frozen_string_literal: bool,
116
- ?verbose: bool,
117
- ?scopes: Array[Array[Symbol]]
137
+ ?scopes: Array[Array[Symbol]],
138
+ ?verbose: bool
118
139
  ) -> ParseResult
119
140
 
120
- def self.lex_file: (
141
+ def self.profile_file: (
121
142
  String filepath,
143
+ ?encoding: Encoding | false,
144
+ ?frozen_string_literal: bool,
122
145
  ?line: Integer,
146
+ ?main_script: bool,
123
147
  ?offset: Integer,
124
- ?encoding: Encoding,
148
+ ?scopes: Array[Array[Symbol]],
149
+ ?verbose: bool
150
+ ) -> nil
151
+
152
+ def self.lex_file: (
153
+ String filepath,
154
+ ?encoding: Encoding | false,
125
155
  ?frozen_string_literal: bool,
126
- ?verbose: bool,
127
- ?scopes: Array[Array[Symbol]]
156
+ ?line: Integer,
157
+ ?main_script: bool,
158
+ ?offset: Integer,
159
+ ?scopes: Array[Array[Symbol]],
160
+ ?verbose: bool
128
161
  ) -> LexResult
129
162
 
130
163
  def self.parse_lex_file: (
131
164
  String filepath,
165
+ ?encoding: Encoding | false,
166
+ ?frozen_string_literal: bool,
132
167
  ?line: Integer,
168
+ ?main_script: bool,
133
169
  ?offset: Integer,
134
- ?encoding: Encoding,
135
- ?frozen_string_literal: bool,
136
- ?verbose: bool,
137
- ?scopes: Array[Array[Symbol]]
170
+ ?scopes: Array[Array[Symbol]],
171
+ ?verbose: bool
138
172
  ) -> ParseLexResult
139
173
 
140
174
  def self.dump_file: (
141
175
  String filepath,
176
+ ?encoding: Encoding | false,
177
+ ?frozen_string_literal: bool,
142
178
  ?line: Integer,
179
+ ?main_script: bool,
143
180
  ?offset: Integer,
144
- ?encoding: Encoding,
145
- ?frozen_string_literal: bool,
146
- ?verbose: bool,
147
- ?scopes: Array[Array[Symbol]]
181
+ ?scopes: Array[Array[Symbol]],
182
+ ?verbose: bool
148
183
  ) -> String
149
184
 
150
185
  def self.parse_file_comments: (
151
186
  String filepath,
187
+ ?encoding: Encoding | false,
188
+ ?frozen_string_literal: bool,
152
189
  ?line: Integer,
190
+ ?main_script: bool,
153
191
  ?offset: Integer,
154
- ?encoding: Encoding,
155
- ?frozen_string_literal: bool,
156
- ?verbose: bool,
157
- ?scopes: Array[Array[Symbol]]
192
+ ?scopes: Array[Array[Symbol]],
193
+ ?verbose: bool
158
194
  ) -> Array[comment]
159
195
 
160
196
  def self.parse_file_success?: (
161
197
  String filepath,
198
+ ?encoding: Encoding | false,
199
+ ?frozen_string_literal: bool,
162
200
  ?line: Integer,
201
+ ?main_script: bool,
163
202
  ?offset: Integer,
164
- ?encoding: Encoding,
165
- ?frozen_string_literal: bool,
166
- ?verbose: bool,
167
- ?scopes: Array[Array[Symbol]]
203
+ ?scopes: Array[Array[Symbol]],
204
+ ?verbose: bool
168
205
  ) -> bool
169
206
 
170
207
  def self.parse_file_failure?: (
171
208
  String filepath,
209
+ ?encoding: Encoding | false,
210
+ ?frozen_string_literal: bool,
172
211
  ?line: Integer,
212
+ ?main_script: bool,
173
213
  ?offset: Integer,
174
- ?encoding: Encoding,
175
- ?frozen_string_literal: bool,
176
- ?verbose: bool,
177
- ?scopes: Array[Array[Symbol]]
214
+ ?scopes: Array[Array[Symbol]],
215
+ ?verbose: bool
178
216
  ) -> bool
179
217
 
180
218
  interface _Stream
@@ -183,12 +221,13 @@ module Prism
183
221
 
184
222
  def self.parse_stream: (
185
223
  _Stream stream,
224
+ ?encoding: Encoding | false,
186
225
  ?filepath: String,
226
+ ?frozen_string_literal: bool,
187
227
  ?line: Integer,
228
+ ?main_script: bool,
188
229
  ?offset: Integer,
189
- ?encoding: Encoding,
190
- ?frozen_string_literal: bool,
191
- ?verbose: bool,
192
- ?scopes: Array[Array[Symbol]]
230
+ ?scopes: Array[Array[Symbol]],
231
+ ?verbose: bool
193
232
  ) -> ParseResult
194
233
  end