prism 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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";
|