prism 0.29.0 → 1.3.0

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