prism 1.1.0 → 1.2.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.
@@ -40,10 +40,21 @@ class Prism::Source
40
40
  sig { params(byte_offset: Integer, encoding: Encoding).returns(Integer) }
41
41
  def code_units_offset(byte_offset, encoding); end
42
42
 
43
+ sig { params(encoding: Encoding).returns(T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer))) }
44
+ def code_units_cache(encoding); end
45
+
43
46
  sig { params(byte_offset: Integer, encoding: Encoding).returns(Integer) }
44
47
  def code_units_column(byte_offset, encoding); end
45
48
  end
46
49
 
50
+ class Prism::CodeUnitsCache
51
+ sig { params(source: String, encoding: Encoding).void }
52
+ def initialize(source, encoding); end
53
+
54
+ sig { params(byte_offset: Integer).returns(Integer) }
55
+ def [](byte_offset); end
56
+ end
57
+
47
58
  class Prism::ASCIISource < Prism::Source
48
59
  sig { params(byte_offset: Integer).returns(Integer) }
49
60
  def character_offset(byte_offset); end
@@ -54,6 +65,9 @@ class Prism::ASCIISource < Prism::Source
54
65
  sig { params(byte_offset: Integer, encoding: Encoding).returns(Integer) }
55
66
  def code_units_offset(byte_offset, encoding); end
56
67
 
68
+ sig { params(encoding: Encoding).returns(T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer))) }
69
+ def code_units_cache(encoding); end
70
+
57
71
  sig { params(byte_offset: Integer, encoding: Encoding).returns(Integer) }
58
72
  def code_units_column(byte_offset, encoding); end
59
73
  end
@@ -107,6 +121,9 @@ class Prism::Location
107
121
  sig { params(encoding: Encoding).returns(Integer) }
108
122
  def start_code_units_offset(encoding = Encoding::UTF_16LE); end
109
123
 
124
+ sig { params(cache: T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer))).returns(Integer) }
125
+ def cached_start_code_units_offset(cache); end
126
+
110
127
  sig { returns(Integer) }
111
128
  def end_offset; end
112
129
 
@@ -116,6 +133,9 @@ class Prism::Location
116
133
  sig { params(encoding: Encoding).returns(Integer) }
117
134
  def end_code_units_offset(encoding = Encoding::UTF_16LE); end
118
135
 
136
+ sig { params(cache: T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer))).returns(Integer) }
137
+ def cached_end_code_units_offset(cache); end
138
+
119
139
  sig { returns(Integer) }
120
140
  def start_line; end
121
141
 
@@ -134,6 +154,9 @@ class Prism::Location
134
154
  sig { params(encoding: Encoding).returns(Integer) }
135
155
  def start_code_units_column(encoding = Encoding::UTF_16LE); end
136
156
 
157
+ sig { params(cache: T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer))).returns(Integer) }
158
+ def cached_start_code_units_column(cache); end
159
+
137
160
  sig { returns(Integer) }
138
161
  def end_column; end
139
162
 
@@ -143,6 +166,9 @@ class Prism::Location
143
166
  sig { params(encoding: Encoding).returns(Integer) }
144
167
  def end_code_units_column(encoding = Encoding::UTF_16LE); end
145
168
 
169
+ sig { params(cache: T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer))).returns(Integer) }
170
+ def cached_end_code_units_column(cache); end
171
+
146
172
  sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) }
147
173
  def deconstruct_keys(keys); end
148
174
 
@@ -296,6 +322,9 @@ class Prism::Result
296
322
 
297
323
  sig { returns(T::Boolean) }
298
324
  def failure?; end
325
+
326
+ sig { params(encoding: Encoding).returns(T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer))) }
327
+ def code_units_cache(encoding); end
299
328
  end
300
329
 
301
330
  class Prism::ParseResult < Prism::Result
data/rbi/prism.rbi CHANGED
@@ -1,17 +1,17 @@
1
1
  # typed: strict
2
2
 
3
3
  module Prism
4
- sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(String) }
5
- def self.dump(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
4
+ sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(String) }
5
+ def self.dump(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
6
6
 
7
- sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(String) }
8
- def self.dump_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
7
+ sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(String) }
8
+ def self.dump_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
9
9
 
10
- sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::LexResult) }
11
- def self.lex(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
10
+ sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::LexResult) }
11
+ def self.lex(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
12
12
 
13
- sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::LexResult) }
14
- def self.lex_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
13
+ sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::LexResult) }
14
+ def self.lex_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
15
15
 
16
16
  sig { params(source: String, options: T::Hash[Symbol, T.untyped]).returns(Prism::LexCompat::Result) }
17
17
  def self.lex_compat(source, **options); end
@@ -22,42 +22,42 @@ module Prism
22
22
  sig { params(source: String, serialized: String).returns(Prism::ParseResult) }
23
23
  def self.load(source, serialized); end
24
24
 
25
- sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseResult) }
26
- def self.parse(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
25
+ sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseResult) }
26
+ def self.parse(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
27
27
 
28
- sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseResult) }
29
- def self.parse_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
28
+ sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseResult) }
29
+ def self.parse_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
30
30
 
31
- sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).void }
32
- def self.profile(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
31
+ sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).void }
32
+ def self.profile(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
33
33
 
34
- sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).void }
35
- def self.profile_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
34
+ sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).void }
35
+ def self.profile_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
36
36
 
37
- sig { params(stream: T.any(IO, StringIO), command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseResult) }
38
- def self.parse_stream(stream, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
37
+ sig { params(stream: T.any(IO, StringIO), command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseResult) }
38
+ def self.parse_stream(stream, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
39
39
 
40
- sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(String, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Array[Prism::Comment]) }
41
- def self.parse_comments(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
40
+ sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(String, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Array[Prism::Comment]) }
41
+ def self.parse_comments(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
42
42
 
43
- sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Array[Prism::Comment]) }
44
- def self.parse_file_comments(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
43
+ sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Array[Prism::Comment]) }
44
+ def self.parse_file_comments(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
45
45
 
46
- sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseLexResult) }
47
- def self.parse_lex(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
46
+ sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseLexResult) }
47
+ def self.parse_lex(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
48
48
 
49
- sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseLexResult) }
50
- def self.parse_lex_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
49
+ sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(Prism::ParseLexResult) }
50
+ def self.parse_lex_file(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
51
51
 
52
- sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
53
- def self.parse_success?(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
52
+ sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
53
+ def self.parse_success?(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
54
54
 
55
- sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
56
- def self.parse_failure?(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
55
+ sig { params(source: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), filepath: T.nilable(String), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
56
+ def self.parse_failure?(source, command_line: nil, encoding: nil, filepath: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
57
57
 
58
- sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
59
- def self.parse_file_success?(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
58
+ sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
59
+ def self.parse_file_success?(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
60
60
 
61
- sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
62
- def self.parse_file_failure?(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, scopes: nil, version: nil); end
61
+ sig { params(filepath: String, command_line: T.nilable(String), encoding: T.nilable(T.any(FalseClass, Encoding)), frozen_string_literal: T.nilable(T::Boolean), line: T.nilable(Integer), main_script: T.nilable(T::Boolean), partial_script: T.nilable(T::Boolean), scopes: T.nilable(T::Array[T::Array[Symbol]]), version: T.nilable(String)).returns(T::Boolean) }
62
+ def self.parse_file_failure?(filepath, command_line: nil, encoding: nil, frozen_string_literal: nil, line: nil, main_script: nil, partial_script: nil, scopes: nil, version: nil); end
63
63
  end
data/sig/prism/node.rbs CHANGED
@@ -138,13 +138,9 @@ module Prism
138
138
  include _Node
139
139
 
140
140
  def contains_forwarding?: () -> bool
141
-
142
141
  def contains_keywords?: () -> bool
143
-
144
142
  def contains_keyword_splat?: () -> bool
145
-
146
143
  def contains_splat?: () -> bool
147
-
148
144
  def contains_multiple_splats?: () -> bool
149
145
 
150
146
  attr_reader arguments: Array[Prism::node]
@@ -435,11 +431,8 @@ module Prism
435
431
  include _Node
436
432
 
437
433
  def safe_navigation?: () -> bool
438
-
439
434
  def variable_call?: () -> bool
440
-
441
435
  def attribute_write?: () -> bool
442
-
443
436
  def ignore_visibility?: () -> bool
444
437
 
445
438
  attr_reader receiver: Prism::node?
@@ -484,11 +477,8 @@ module Prism
484
477
  include _Node
485
478
 
486
479
  def safe_navigation?: () -> bool
487
-
488
480
  def variable_call?: () -> bool
489
-
490
481
  def attribute_write?: () -> bool
491
-
492
482
  def ignore_visibility?: () -> bool
493
483
 
494
484
  attr_reader receiver: Prism::node?
@@ -520,11 +510,8 @@ module Prism
520
510
  include _Node
521
511
 
522
512
  def safe_navigation?: () -> bool
523
-
524
513
  def variable_call?: () -> bool
525
-
526
514
  def attribute_write?: () -> bool
527
-
528
515
  def ignore_visibility?: () -> bool
529
516
 
530
517
  attr_reader receiver: Prism::node?
@@ -554,11 +541,8 @@ module Prism
554
541
  include _Node
555
542
 
556
543
  def safe_navigation?: () -> bool
557
-
558
544
  def variable_call?: () -> bool
559
-
560
545
  def attribute_write?: () -> bool
561
-
562
546
  def ignore_visibility?: () -> bool
563
547
 
564
548
  attr_reader receiver: Prism::node?
@@ -596,11 +580,8 @@ module Prism
596
580
  include _Node
597
581
 
598
582
  def safe_navigation?: () -> bool
599
-
600
583
  def variable_call?: () -> bool
601
-
602
584
  def attribute_write?: () -> bool
603
-
604
585
  def ignore_visibility?: () -> bool
605
586
 
606
587
  attr_reader receiver: Prism::node
@@ -1678,11 +1659,8 @@ module Prism
1678
1659
  include _Node
1679
1660
 
1680
1661
  def safe_navigation?: () -> bool
1681
-
1682
1662
  def variable_call?: () -> bool
1683
-
1684
1663
  def attribute_write?: () -> bool
1685
-
1686
1664
  def ignore_visibility?: () -> bool
1687
1665
 
1688
1666
  attr_reader receiver: Prism::node?
@@ -1714,11 +1692,8 @@ module Prism
1714
1692
  include _Node
1715
1693
 
1716
1694
  def safe_navigation?: () -> bool
1717
-
1718
1695
  def variable_call?: () -> bool
1719
-
1720
1696
  def attribute_write?: () -> bool
1721
-
1722
1697
  def ignore_visibility?: () -> bool
1723
1698
 
1724
1699
  attr_reader receiver: Prism::node?
@@ -1750,11 +1725,8 @@ module Prism
1750
1725
  include _Node
1751
1726
 
1752
1727
  def safe_navigation?: () -> bool
1753
-
1754
1728
  def variable_call?: () -> bool
1755
-
1756
1729
  def attribute_write?: () -> bool
1757
-
1758
1730
  def ignore_visibility?: () -> bool
1759
1731
 
1760
1732
  attr_reader receiver: Prism::node?
@@ -1794,11 +1766,8 @@ module Prism
1794
1766
  include _Node
1795
1767
 
1796
1768
  def safe_navigation?: () -> bool
1797
-
1798
1769
  def variable_call?: () -> bool
1799
-
1800
1770
  def attribute_write?: () -> bool
1801
-
1802
1771
  def ignore_visibility?: () -> bool
1803
1772
 
1804
1773
  attr_reader receiver: Prism::node
@@ -1943,11 +1912,8 @@ module Prism
1943
1912
  include _Node
1944
1913
 
1945
1914
  def binary?: () -> bool
1946
-
1947
1915
  def decimal?: () -> bool
1948
-
1949
1916
  def octal?: () -> bool
1950
-
1951
1917
  def hexadecimal?: () -> bool
1952
1918
 
1953
1919
  attr_reader value: Integer
@@ -1968,25 +1934,15 @@ module Prism
1968
1934
  include _Node
1969
1935
 
1970
1936
  def ignore_case?: () -> bool
1971
-
1972
1937
  def extended?: () -> bool
1973
-
1974
1938
  def multi_line?: () -> bool
1975
-
1976
1939
  def once?: () -> bool
1977
-
1978
1940
  def euc_jp?: () -> bool
1979
-
1980
1941
  def ascii_8bit?: () -> bool
1981
-
1982
1942
  def windows_31j?: () -> bool
1983
-
1984
1943
  def utf_8?: () -> bool
1985
-
1986
1944
  def forced_utf8_encoding?: () -> bool
1987
-
1988
1945
  def forced_binary_encoding?: () -> bool
1989
-
1990
1946
  def forced_us_ascii_encoding?: () -> bool
1991
1947
 
1992
1948
  attr_reader opening_loc: Location
@@ -2011,25 +1967,15 @@ module Prism
2011
1967
  include _Node
2012
1968
 
2013
1969
  def ignore_case?: () -> bool
2014
-
2015
1970
  def extended?: () -> bool
2016
-
2017
1971
  def multi_line?: () -> bool
2018
-
2019
1972
  def once?: () -> bool
2020
-
2021
1973
  def euc_jp?: () -> bool
2022
-
2023
1974
  def ascii_8bit?: () -> bool
2024
-
2025
1975
  def windows_31j?: () -> bool
2026
-
2027
1976
  def utf_8?: () -> bool
2028
-
2029
1977
  def forced_utf8_encoding?: () -> bool
2030
-
2031
1978
  def forced_binary_encoding?: () -> bool
2032
-
2033
1979
  def forced_us_ascii_encoding?: () -> bool
2034
1980
 
2035
1981
  attr_reader opening_loc: Location
@@ -2054,7 +2000,6 @@ module Prism
2054
2000
  include _Node
2055
2001
 
2056
2002
  def frozen?: () -> bool
2057
-
2058
2003
  def mutable?: () -> bool
2059
2004
 
2060
2005
  attr_reader opening_loc: Location?
@@ -2344,25 +2289,15 @@ module Prism
2344
2289
  include _Node
2345
2290
 
2346
2291
  def ignore_case?: () -> bool
2347
-
2348
2292
  def extended?: () -> bool
2349
-
2350
2293
  def multi_line?: () -> bool
2351
-
2352
2294
  def once?: () -> bool
2353
-
2354
2295
  def euc_jp?: () -> bool
2355
-
2356
2296
  def ascii_8bit?: () -> bool
2357
-
2358
2297
  def windows_31j?: () -> bool
2359
-
2360
2298
  def utf_8?: () -> bool
2361
-
2362
2299
  def forced_utf8_encoding?: () -> bool
2363
-
2364
2300
  def forced_binary_encoding?: () -> bool
2365
-
2366
2301
  def forced_us_ascii_encoding?: () -> bool
2367
2302
 
2368
2303
  attr_reader opening_loc: Location
@@ -2867,11 +2802,8 @@ module Prism
2867
2802
  include _Node
2868
2803
 
2869
2804
  def binary?: () -> bool
2870
-
2871
2805
  def decimal?: () -> bool
2872
-
2873
2806
  def octal?: () -> bool
2874
-
2875
2807
  def hexadecimal?: () -> bool
2876
2808
 
2877
2809
  attr_reader numerator: Integer
@@ -2909,25 +2841,15 @@ module Prism
2909
2841
  include _Node
2910
2842
 
2911
2843
  def ignore_case?: () -> bool
2912
-
2913
2844
  def extended?: () -> bool
2914
-
2915
2845
  def multi_line?: () -> bool
2916
-
2917
2846
  def once?: () -> bool
2918
-
2919
2847
  def euc_jp?: () -> bool
2920
-
2921
2848
  def ascii_8bit?: () -> bool
2922
-
2923
2849
  def windows_31j?: () -> bool
2924
-
2925
2850
  def utf_8?: () -> bool
2926
-
2927
2851
  def forced_utf8_encoding?: () -> bool
2928
-
2929
2852
  def forced_binary_encoding?: () -> bool
2930
-
2931
2853
  def forced_us_ascii_encoding?: () -> bool
2932
2854
 
2933
2855
  attr_reader opening_loc: Location
@@ -3015,7 +2937,7 @@ module Prism
3015
2937
  # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3016
2938
  # end
3017
2939
  #
3018
- # `Foo, *splat, Bar` are in the `exceptions` field. `ex` is in the `exception` field.
2940
+ # `Foo, *splat, Bar` are in the `exceptions` field. `ex` is in the `reference` field.
3019
2941
  class RescueNode < Node
3020
2942
  include _Node
3021
2943
 
@@ -3119,9 +3041,7 @@ module Prism
3119
3041
  include _Node
3120
3042
 
3121
3043
  def literal?: () -> bool
3122
-
3123
3044
  def experimental_everything?: () -> bool
3124
-
3125
3045
  def experimental_copy?: () -> bool
3126
3046
 
3127
3047
  attr_reader write: ConstantWriteNode | ConstantAndWriteNode | ConstantOrWriteNode | ConstantOperatorWriteNode | ConstantPathWriteNode | ConstantPathAndWriteNode | ConstantPathOrWriteNode | ConstantPathOperatorWriteNode
@@ -3183,11 +3103,8 @@ module Prism
3183
3103
  include _Node
3184
3104
 
3185
3105
  def forced_utf8_encoding?: () -> bool
3186
-
3187
3106
  def forced_binary_encoding?: () -> bool
3188
-
3189
3107
  def frozen?: () -> bool
3190
-
3191
3108
  def mutable?: () -> bool
3192
3109
 
3193
3110
  attr_reader filepath: String
@@ -3266,11 +3183,8 @@ module Prism
3266
3183
  include _Node
3267
3184
 
3268
3185
  def forced_utf8_encoding?: () -> bool
3269
-
3270
3186
  def forced_binary_encoding?: () -> bool
3271
-
3272
3187
  def frozen?: () -> bool
3273
-
3274
3188
  def mutable?: () -> bool
3275
3189
 
3276
3190
  attr_reader opening_loc: Location?
@@ -3327,9 +3241,7 @@ module Prism
3327
3241
  include _Node
3328
3242
 
3329
3243
  def forced_utf8_encoding?: () -> bool
3330
-
3331
3244
  def forced_binary_encoding?: () -> bool
3332
-
3333
3245
  def forced_us_ascii_encoding?: () -> bool
3334
3246
 
3335
3247
  attr_reader opening_loc: Location?
@@ -3497,7 +3409,6 @@ module Prism
3497
3409
  include _Node
3498
3410
 
3499
3411
  def forced_utf8_encoding?: () -> bool
3500
-
3501
3412
  def forced_binary_encoding?: () -> bool
3502
3413
 
3503
3414
  attr_reader opening_loc: Location
@@ -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,15 +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
20
25
 
21
26
  def self.for: (String source) -> Source
22
27
  end
23
28
 
29
+ class CodeUnitsCache
30
+ def initialize: (String source, Encoding encoding) -> void
31
+ def []: (Integer byte_offset) -> Integer
32
+ end
33
+
24
34
  class ASCIISource < Source
25
35
  def character_offset: (Integer byte_offset) -> Integer
26
36
  def character_column: (Integer byte_offset) -> Integer
27
37
  def code_units_offset: (Integer byte_offset, Encoding encoding) -> Integer
38
+ def code_units_cache: (Encoding encoding) -> _CodeUnitsCache
28
39
  def code_units_column: (Integer byte_offset, Encoding encoding) -> Integer
29
40
  end
30
41
 
@@ -45,15 +56,23 @@ module Prism
45
56
  def slice: () -> String
46
57
  def slice_lines: () -> String
47
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
48
61
  def end_offset: () -> Integer
49
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
50
65
  def start_line: () -> Integer
51
66
  def start_line_slice: () -> String
52
67
  def end_line: () -> Integer
53
68
  def start_column: () -> Integer
54
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
55
72
  def end_column: () -> Integer
56
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
57
76
  def deconstruct_keys: (Array[Symbol]? keys) -> Hash[Symbol, untyped]
58
77
  def pretty_print: (untyped q) -> untyped
59
78
  def join: (Location other) -> Location
@@ -125,6 +144,7 @@ module Prism
125
144
  def deconstruct_keys: (Array[Symbol]? keys) -> Hash[Symbol, untyped]
126
145
  def success?: () -> bool
127
146
  def failure?: () -> bool
147
+ def code_units_cache: (Encoding encoding) -> _CodeUnitsCache
128
148
  end
129
149
 
130
150
  class ParseResult < Result
data/src/diagnostic.c CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  #include "prism/diagnostic.h"
10
10
 
11
- #define PM_DIAGNOSTIC_ID_MAX 318
11
+ #define PM_DIAGNOSTIC_ID_MAX 319
12
12
 
13
13
  /** This struct holds the data for each diagnostic. */
14
14
  typedef struct {
@@ -231,6 +231,7 @@ static const pm_diagnostic_data_t diagnostic_messages[PM_DIAGNOSTIC_ID_MAX] = {
231
231
  [PM_ERR_INCOMPLETE_VARIABLE_INSTANCE] = { "'%.*s' is not allowed as an instance variable name", PM_ERROR_LEVEL_SYNTAX },
232
232
  [PM_ERR_INSTANCE_VARIABLE_BARE] = { "'@' without identifiers is not allowed as an instance variable name", PM_ERROR_LEVEL_SYNTAX },
233
233
  [PM_ERR_INVALID_BLOCK_EXIT] = { "Invalid %s", PM_ERROR_LEVEL_SYNTAX },
234
+ [PM_ERR_INVALID_COMMA] = { "invalid comma", PM_ERROR_LEVEL_SYNTAX },
234
235
  [PM_ERR_INVALID_ESCAPE_CHARACTER] = { "Invalid escape character syntax", PM_ERROR_LEVEL_SYNTAX },
235
236
  [PM_ERR_INVALID_FLOAT_EXPONENT] = { "invalid exponent", PM_ERROR_LEVEL_SYNTAX },
236
237
  [PM_ERR_INVALID_LOCAL_VARIABLE_READ] = { "identifier %.*s is not valid to get", PM_ERROR_LEVEL_SYNTAX },
@@ -558,6 +559,7 @@ pm_diagnostic_id_human(pm_diagnostic_id_t diag_id) {
558
559
  case PM_ERR_INSTANCE_VARIABLE_BARE: return "instance_variable_bare";
559
560
  case PM_ERR_INVALID_BLOCK_EXIT: return "invalid_block_exit";
560
561
  case PM_ERR_INVALID_CHARACTER: return "invalid_character";
562
+ case PM_ERR_INVALID_COMMA: return "invalid_comma";
561
563
  case PM_ERR_INVALID_ENCODING_MAGIC_COMMENT: return "invalid_encoding_magic_comment";
562
564
  case PM_ERR_INVALID_ESCAPE_CHARACTER: return "invalid_escape_character";
563
565
  case PM_ERR_INVALID_FLOAT_EXPONENT: return "invalid_float_exponent";