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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -1
- data/config.yml +2 -1
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +1 -1
- data/include/prism/diagnostic.h +1 -0
- data/include/prism/parser.h +25 -12
- data/include/prism/version.h +2 -2
- data/lib/prism/node.rb +1 -1
- data/lib/prism/parse_result.rb +140 -3
- data/lib/prism/serialize.rb +13 -1
- data/lib/prism/translation/parser.rb +3 -3
- data/lib/prism/translation/ripper.rb +1 -5
- data/lib/prism/translation/ruby_parser.rb +2 -2
- data/prism.gemspec +1 -1
- data/rbi/prism/node.rbi +5777 -1701
- data/rbi/prism/parse_result.rbi +29 -0
- data/rbi/prism.rbi +34 -34
- data/sig/prism/node.rbs +1 -90
- data/sig/prism/parse_result.rbs +20 -0
- data/src/diagnostic.c +3 -1
- data/src/prism.c +223 -115
- metadata +2 -2
data/rbi/prism/parse_result.rbi
CHANGED
@@ -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 `
|
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
|
data/sig/prism/parse_result.rbs
CHANGED
@@ -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
|
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";
|