ed-precompiled_prism 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. checksums.yaml +7 -0
  2. data/BSDmakefile +58 -0
  3. data/CHANGELOG.md +723 -0
  4. data/CODE_OF_CONDUCT.md +76 -0
  5. data/CONTRIBUTING.md +58 -0
  6. data/LICENSE.md +7 -0
  7. data/Makefile +110 -0
  8. data/README.md +143 -0
  9. data/config.yml +4714 -0
  10. data/docs/build_system.md +119 -0
  11. data/docs/configuration.md +68 -0
  12. data/docs/cruby_compilation.md +27 -0
  13. data/docs/design.md +53 -0
  14. data/docs/encoding.md +121 -0
  15. data/docs/fuzzing.md +88 -0
  16. data/docs/heredocs.md +36 -0
  17. data/docs/javascript.md +118 -0
  18. data/docs/local_variable_depth.md +229 -0
  19. data/docs/mapping.md +117 -0
  20. data/docs/parser_translation.md +24 -0
  21. data/docs/parsing_rules.md +22 -0
  22. data/docs/releasing.md +98 -0
  23. data/docs/relocation.md +34 -0
  24. data/docs/ripper_translation.md +72 -0
  25. data/docs/ruby_api.md +44 -0
  26. data/docs/ruby_parser_translation.md +19 -0
  27. data/docs/serialization.md +233 -0
  28. data/docs/testing.md +55 -0
  29. data/ext/prism/api_node.c +6941 -0
  30. data/ext/prism/api_pack.c +276 -0
  31. data/ext/prism/extconf.rb +127 -0
  32. data/ext/prism/extension.c +1419 -0
  33. data/ext/prism/extension.h +19 -0
  34. data/include/prism/ast.h +8220 -0
  35. data/include/prism/defines.h +260 -0
  36. data/include/prism/diagnostic.h +456 -0
  37. data/include/prism/encoding.h +283 -0
  38. data/include/prism/node.h +129 -0
  39. data/include/prism/options.h +482 -0
  40. data/include/prism/pack.h +163 -0
  41. data/include/prism/parser.h +933 -0
  42. data/include/prism/prettyprint.h +34 -0
  43. data/include/prism/regexp.h +43 -0
  44. data/include/prism/static_literals.h +121 -0
  45. data/include/prism/util/pm_buffer.h +236 -0
  46. data/include/prism/util/pm_char.h +204 -0
  47. data/include/prism/util/pm_constant_pool.h +218 -0
  48. data/include/prism/util/pm_integer.h +130 -0
  49. data/include/prism/util/pm_list.h +103 -0
  50. data/include/prism/util/pm_memchr.h +29 -0
  51. data/include/prism/util/pm_newline_list.h +113 -0
  52. data/include/prism/util/pm_string.h +200 -0
  53. data/include/prism/util/pm_strncasecmp.h +32 -0
  54. data/include/prism/util/pm_strpbrk.h +46 -0
  55. data/include/prism/version.h +29 -0
  56. data/include/prism.h +408 -0
  57. data/lib/prism/compiler.rb +801 -0
  58. data/lib/prism/desugar_compiler.rb +392 -0
  59. data/lib/prism/dispatcher.rb +2210 -0
  60. data/lib/prism/dot_visitor.rb +4762 -0
  61. data/lib/prism/dsl.rb +1003 -0
  62. data/lib/prism/ffi.rb +570 -0
  63. data/lib/prism/inspect_visitor.rb +2392 -0
  64. data/lib/prism/lex_compat.rb +928 -0
  65. data/lib/prism/mutation_compiler.rb +772 -0
  66. data/lib/prism/node.rb +18816 -0
  67. data/lib/prism/node_ext.rb +511 -0
  68. data/lib/prism/pack.rb +230 -0
  69. data/lib/prism/parse_result/comments.rb +188 -0
  70. data/lib/prism/parse_result/errors.rb +66 -0
  71. data/lib/prism/parse_result/newlines.rb +155 -0
  72. data/lib/prism/parse_result.rb +911 -0
  73. data/lib/prism/pattern.rb +269 -0
  74. data/lib/prism/polyfill/append_as_bytes.rb +15 -0
  75. data/lib/prism/polyfill/byteindex.rb +13 -0
  76. data/lib/prism/polyfill/scan_byte.rb +14 -0
  77. data/lib/prism/polyfill/unpack1.rb +14 -0
  78. data/lib/prism/polyfill/warn.rb +36 -0
  79. data/lib/prism/reflection.rb +416 -0
  80. data/lib/prism/relocation.rb +505 -0
  81. data/lib/prism/serialize.rb +2398 -0
  82. data/lib/prism/string_query.rb +31 -0
  83. data/lib/prism/translation/parser/builder.rb +62 -0
  84. data/lib/prism/translation/parser/compiler.rb +2234 -0
  85. data/lib/prism/translation/parser/lexer.rb +820 -0
  86. data/lib/prism/translation/parser.rb +374 -0
  87. data/lib/prism/translation/parser33.rb +13 -0
  88. data/lib/prism/translation/parser34.rb +13 -0
  89. data/lib/prism/translation/parser35.rb +13 -0
  90. data/lib/prism/translation/parser_current.rb +24 -0
  91. data/lib/prism/translation/ripper/sexp.rb +126 -0
  92. data/lib/prism/translation/ripper/shim.rb +5 -0
  93. data/lib/prism/translation/ripper.rb +3474 -0
  94. data/lib/prism/translation/ruby_parser.rb +1929 -0
  95. data/lib/prism/translation.rb +16 -0
  96. data/lib/prism/visitor.rb +813 -0
  97. data/lib/prism.rb +97 -0
  98. data/prism.gemspec +174 -0
  99. data/rbi/prism/compiler.rbi +12 -0
  100. data/rbi/prism/dsl.rbi +524 -0
  101. data/rbi/prism/inspect_visitor.rbi +12 -0
  102. data/rbi/prism/node.rbi +8734 -0
  103. data/rbi/prism/node_ext.rbi +107 -0
  104. data/rbi/prism/parse_result.rbi +404 -0
  105. data/rbi/prism/reflection.rbi +58 -0
  106. data/rbi/prism/string_query.rbi +12 -0
  107. data/rbi/prism/translation/parser.rbi +11 -0
  108. data/rbi/prism/translation/parser33.rbi +6 -0
  109. data/rbi/prism/translation/parser34.rbi +6 -0
  110. data/rbi/prism/translation/parser35.rbi +6 -0
  111. data/rbi/prism/translation/ripper.rbi +15 -0
  112. data/rbi/prism/visitor.rbi +473 -0
  113. data/rbi/prism.rbi +66 -0
  114. data/sig/prism/compiler.rbs +9 -0
  115. data/sig/prism/dispatcher.rbs +19 -0
  116. data/sig/prism/dot_visitor.rbs +6 -0
  117. data/sig/prism/dsl.rbs +351 -0
  118. data/sig/prism/inspect_visitor.rbs +22 -0
  119. data/sig/prism/lex_compat.rbs +10 -0
  120. data/sig/prism/mutation_compiler.rbs +159 -0
  121. data/sig/prism/node.rbs +4028 -0
  122. data/sig/prism/node_ext.rbs +149 -0
  123. data/sig/prism/pack.rbs +43 -0
  124. data/sig/prism/parse_result/comments.rbs +38 -0
  125. data/sig/prism/parse_result.rbs +196 -0
  126. data/sig/prism/pattern.rbs +13 -0
  127. data/sig/prism/reflection.rbs +50 -0
  128. data/sig/prism/relocation.rbs +185 -0
  129. data/sig/prism/serialize.rbs +8 -0
  130. data/sig/prism/string_query.rbs +11 -0
  131. data/sig/prism/visitor.rbs +169 -0
  132. data/sig/prism.rbs +254 -0
  133. data/src/diagnostic.c +850 -0
  134. data/src/encoding.c +5235 -0
  135. data/src/node.c +8676 -0
  136. data/src/options.c +328 -0
  137. data/src/pack.c +509 -0
  138. data/src/prettyprint.c +8941 -0
  139. data/src/prism.c +23361 -0
  140. data/src/regexp.c +790 -0
  141. data/src/serialize.c +2268 -0
  142. data/src/static_literals.c +617 -0
  143. data/src/token_type.c +703 -0
  144. data/src/util/pm_buffer.c +357 -0
  145. data/src/util/pm_char.c +318 -0
  146. data/src/util/pm_constant_pool.c +342 -0
  147. data/src/util/pm_integer.c +670 -0
  148. data/src/util/pm_list.c +49 -0
  149. data/src/util/pm_memchr.c +35 -0
  150. data/src/util/pm_newline_list.c +125 -0
  151. data/src/util/pm_string.c +381 -0
  152. data/src/util/pm_strncasecmp.c +36 -0
  153. data/src/util/pm_strpbrk.c +206 -0
  154. metadata +195 -0
@@ -0,0 +1,206 @@
1
+ #include "prism/util/pm_strpbrk.h"
2
+
3
+ /**
4
+ * Add an invalid multibyte character error to the parser.
5
+ */
6
+ static inline void
7
+ pm_strpbrk_invalid_multibyte_character(pm_parser_t *parser, const uint8_t *start, const uint8_t *end) {
8
+ pm_diagnostic_list_append_format(&parser->error_list, start, end, PM_ERR_INVALID_MULTIBYTE_CHARACTER, *start);
9
+ }
10
+
11
+ /**
12
+ * Set the explicit encoding for the parser to the current encoding.
13
+ */
14
+ static inline void
15
+ pm_strpbrk_explicit_encoding_set(pm_parser_t *parser, const uint8_t *source, size_t width) {
16
+ if (parser->explicit_encoding != NULL) {
17
+ if (parser->explicit_encoding == parser->encoding) {
18
+ // Okay, we already locked to this encoding.
19
+ } else if (parser->explicit_encoding == PM_ENCODING_UTF_8_ENTRY) {
20
+ // Not okay, we already found a Unicode escape sequence and this
21
+ // conflicts.
22
+ pm_diagnostic_list_append_format(&parser->error_list, source, source + width, PM_ERR_MIXED_ENCODING, parser->encoding->name);
23
+ } else {
24
+ // Should not be anything else.
25
+ assert(false && "unreachable");
26
+ }
27
+ }
28
+
29
+ parser->explicit_encoding = parser->encoding;
30
+ }
31
+
32
+ /**
33
+ * This is the default path.
34
+ */
35
+ static inline const uint8_t *
36
+ pm_strpbrk_utf8(pm_parser_t *parser, const uint8_t *source, const uint8_t *charset, size_t maximum, bool validate) {
37
+ size_t index = 0;
38
+
39
+ while (index < maximum) {
40
+ if (strchr((const char *) charset, source[index]) != NULL) {
41
+ return source + index;
42
+ }
43
+
44
+ if (source[index] < 0x80) {
45
+ index++;
46
+ } else {
47
+ size_t width = pm_encoding_utf_8_char_width(source + index, (ptrdiff_t) (maximum - index));
48
+
49
+ if (width > 0) {
50
+ index += width;
51
+ } else if (!validate) {
52
+ index++;
53
+ } else {
54
+ // At this point we know we have an invalid multibyte character.
55
+ // We'll walk forward as far as we can until we find the next
56
+ // valid character so that we don't spam the user with a ton of
57
+ // the same kind of error.
58
+ const size_t start = index;
59
+
60
+ do {
61
+ index++;
62
+ } while (index < maximum && pm_encoding_utf_8_char_width(source + index, (ptrdiff_t) (maximum - index)) == 0);
63
+
64
+ pm_strpbrk_invalid_multibyte_character(parser, source + start, source + index);
65
+ }
66
+ }
67
+ }
68
+
69
+ return NULL;
70
+ }
71
+
72
+ /**
73
+ * This is the path when the encoding is ASCII-8BIT.
74
+ */
75
+ static inline const uint8_t *
76
+ pm_strpbrk_ascii_8bit(pm_parser_t *parser, const uint8_t *source, const uint8_t *charset, size_t maximum, bool validate) {
77
+ size_t index = 0;
78
+
79
+ while (index < maximum) {
80
+ if (strchr((const char *) charset, source[index]) != NULL) {
81
+ return source + index;
82
+ }
83
+
84
+ if (validate && source[index] >= 0x80) pm_strpbrk_explicit_encoding_set(parser, source, 1);
85
+ index++;
86
+ }
87
+
88
+ return NULL;
89
+ }
90
+
91
+ /**
92
+ * This is the slow path that does care about the encoding.
93
+ */
94
+ static inline const uint8_t *
95
+ pm_strpbrk_multi_byte(pm_parser_t *parser, const uint8_t *source, const uint8_t *charset, size_t maximum, bool validate) {
96
+ size_t index = 0;
97
+ const pm_encoding_t *encoding = parser->encoding;
98
+
99
+ while (index < maximum) {
100
+ if (strchr((const char *) charset, source[index]) != NULL) {
101
+ return source + index;
102
+ }
103
+
104
+ if (source[index] < 0x80) {
105
+ index++;
106
+ } else {
107
+ size_t width = encoding->char_width(source + index, (ptrdiff_t) (maximum - index));
108
+ if (validate) pm_strpbrk_explicit_encoding_set(parser, source, width);
109
+
110
+ if (width > 0) {
111
+ index += width;
112
+ } else if (!validate) {
113
+ index++;
114
+ } else {
115
+ // At this point we know we have an invalid multibyte character.
116
+ // We'll walk forward as far as we can until we find the next
117
+ // valid character so that we don't spam the user with a ton of
118
+ // the same kind of error.
119
+ const size_t start = index;
120
+
121
+ do {
122
+ index++;
123
+ } while (index < maximum && encoding->char_width(source + index, (ptrdiff_t) (maximum - index)) == 0);
124
+
125
+ pm_strpbrk_invalid_multibyte_character(parser, source + start, source + index);
126
+ }
127
+ }
128
+ }
129
+
130
+ return NULL;
131
+ }
132
+
133
+ /**
134
+ * This is the fast path that does not care about the encoding because we know
135
+ * the encoding only supports single-byte characters.
136
+ */
137
+ static inline const uint8_t *
138
+ pm_strpbrk_single_byte(pm_parser_t *parser, const uint8_t *source, const uint8_t *charset, size_t maximum, bool validate) {
139
+ size_t index = 0;
140
+ const pm_encoding_t *encoding = parser->encoding;
141
+
142
+ while (index < maximum) {
143
+ if (strchr((const char *) charset, source[index]) != NULL) {
144
+ return source + index;
145
+ }
146
+
147
+ if (source[index] < 0x80 || !validate) {
148
+ index++;
149
+ } else {
150
+ size_t width = encoding->char_width(source + index, (ptrdiff_t) (maximum - index));
151
+ pm_strpbrk_explicit_encoding_set(parser, source, width);
152
+
153
+ if (width > 0) {
154
+ index += width;
155
+ } else {
156
+ // At this point we know we have an invalid multibyte character.
157
+ // We'll walk forward as far as we can until we find the next
158
+ // valid character so that we don't spam the user with a ton of
159
+ // the same kind of error.
160
+ const size_t start = index;
161
+
162
+ do {
163
+ index++;
164
+ } while (index < maximum && encoding->char_width(source + index, (ptrdiff_t) (maximum - index)) == 0);
165
+
166
+ pm_strpbrk_invalid_multibyte_character(parser, source + start, source + index);
167
+ }
168
+ }
169
+ }
170
+
171
+ return NULL;
172
+ }
173
+
174
+ /**
175
+ * Here we have rolled our own version of strpbrk. The standard library strpbrk
176
+ * has undefined behavior when the source string is not null-terminated. We want
177
+ * to support strings that are not null-terminated because pm_parse does not
178
+ * have the contract that the string is null-terminated. (This is desirable
179
+ * because it means the extension can call pm_parse with the result of a call to
180
+ * mmap).
181
+ *
182
+ * The standard library strpbrk also does not support passing a maximum length
183
+ * to search. We want to support this for the reason mentioned above, but we
184
+ * also don't want it to stop on null bytes. Ruby actually allows null bytes
185
+ * within strings, comments, regular expressions, etc. So we need to be able to
186
+ * skip past them.
187
+ *
188
+ * Finally, we want to support encodings wherein the charset could contain
189
+ * characters that are trailing bytes of multi-byte characters. For example, in
190
+ * Shift_JIS, the backslash character can be a trailing byte. In that case we
191
+ * need to take a slower path and iterate one multi-byte character at a time.
192
+ */
193
+ const uint8_t *
194
+ pm_strpbrk(pm_parser_t *parser, const uint8_t *source, const uint8_t *charset, ptrdiff_t length, bool validate) {
195
+ if (length <= 0) {
196
+ return NULL;
197
+ } else if (!parser->encoding_changed) {
198
+ return pm_strpbrk_utf8(parser, source, charset, (size_t) length, validate);
199
+ } else if (parser->encoding == PM_ENCODING_ASCII_8BIT_ENTRY) {
200
+ return pm_strpbrk_ascii_8bit(parser, source, charset, (size_t) length, validate);
201
+ } else if (parser->encoding->multibyte) {
202
+ return pm_strpbrk_multi_byte(parser, source, charset, (size_t) length, validate);
203
+ } else {
204
+ return pm_strpbrk_single_byte(parser, source, charset, (size_t) length, validate);
205
+ }
206
+ }
metadata ADDED
@@ -0,0 +1,195 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ed-precompiled_prism
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.5.2
5
+ platform: ruby
6
+ authors:
7
+ - Shopify
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies: []
12
+ email:
13
+ - ruby@shopify.com
14
+ executables: []
15
+ extensions:
16
+ - ext/prism/extconf.rb
17
+ extra_rdoc_files: []
18
+ files:
19
+ - BSDmakefile
20
+ - CHANGELOG.md
21
+ - CODE_OF_CONDUCT.md
22
+ - CONTRIBUTING.md
23
+ - LICENSE.md
24
+ - Makefile
25
+ - README.md
26
+ - config.yml
27
+ - docs/build_system.md
28
+ - docs/configuration.md
29
+ - docs/cruby_compilation.md
30
+ - docs/design.md
31
+ - docs/encoding.md
32
+ - docs/fuzzing.md
33
+ - docs/heredocs.md
34
+ - docs/javascript.md
35
+ - docs/local_variable_depth.md
36
+ - docs/mapping.md
37
+ - docs/parser_translation.md
38
+ - docs/parsing_rules.md
39
+ - docs/releasing.md
40
+ - docs/relocation.md
41
+ - docs/ripper_translation.md
42
+ - docs/ruby_api.md
43
+ - docs/ruby_parser_translation.md
44
+ - docs/serialization.md
45
+ - docs/testing.md
46
+ - ext/prism/api_node.c
47
+ - ext/prism/api_pack.c
48
+ - ext/prism/extconf.rb
49
+ - ext/prism/extension.c
50
+ - ext/prism/extension.h
51
+ - include/prism.h
52
+ - include/prism/ast.h
53
+ - include/prism/defines.h
54
+ - include/prism/diagnostic.h
55
+ - include/prism/encoding.h
56
+ - include/prism/node.h
57
+ - include/prism/options.h
58
+ - include/prism/pack.h
59
+ - include/prism/parser.h
60
+ - include/prism/prettyprint.h
61
+ - include/prism/regexp.h
62
+ - include/prism/static_literals.h
63
+ - include/prism/util/pm_buffer.h
64
+ - include/prism/util/pm_char.h
65
+ - include/prism/util/pm_constant_pool.h
66
+ - include/prism/util/pm_integer.h
67
+ - include/prism/util/pm_list.h
68
+ - include/prism/util/pm_memchr.h
69
+ - include/prism/util/pm_newline_list.h
70
+ - include/prism/util/pm_string.h
71
+ - include/prism/util/pm_strncasecmp.h
72
+ - include/prism/util/pm_strpbrk.h
73
+ - include/prism/version.h
74
+ - lib/prism.rb
75
+ - lib/prism/compiler.rb
76
+ - lib/prism/desugar_compiler.rb
77
+ - lib/prism/dispatcher.rb
78
+ - lib/prism/dot_visitor.rb
79
+ - lib/prism/dsl.rb
80
+ - lib/prism/ffi.rb
81
+ - lib/prism/inspect_visitor.rb
82
+ - lib/prism/lex_compat.rb
83
+ - lib/prism/mutation_compiler.rb
84
+ - lib/prism/node.rb
85
+ - lib/prism/node_ext.rb
86
+ - lib/prism/pack.rb
87
+ - lib/prism/parse_result.rb
88
+ - lib/prism/parse_result/comments.rb
89
+ - lib/prism/parse_result/errors.rb
90
+ - lib/prism/parse_result/newlines.rb
91
+ - lib/prism/pattern.rb
92
+ - lib/prism/polyfill/append_as_bytes.rb
93
+ - lib/prism/polyfill/byteindex.rb
94
+ - lib/prism/polyfill/scan_byte.rb
95
+ - lib/prism/polyfill/unpack1.rb
96
+ - lib/prism/polyfill/warn.rb
97
+ - lib/prism/reflection.rb
98
+ - lib/prism/relocation.rb
99
+ - lib/prism/serialize.rb
100
+ - lib/prism/string_query.rb
101
+ - lib/prism/translation.rb
102
+ - lib/prism/translation/parser.rb
103
+ - lib/prism/translation/parser/builder.rb
104
+ - lib/prism/translation/parser/compiler.rb
105
+ - lib/prism/translation/parser/lexer.rb
106
+ - lib/prism/translation/parser33.rb
107
+ - lib/prism/translation/parser34.rb
108
+ - lib/prism/translation/parser35.rb
109
+ - lib/prism/translation/parser_current.rb
110
+ - lib/prism/translation/ripper.rb
111
+ - lib/prism/translation/ripper/sexp.rb
112
+ - lib/prism/translation/ripper/shim.rb
113
+ - lib/prism/translation/ruby_parser.rb
114
+ - lib/prism/visitor.rb
115
+ - prism.gemspec
116
+ - rbi/prism.rbi
117
+ - rbi/prism/compiler.rbi
118
+ - rbi/prism/dsl.rbi
119
+ - rbi/prism/inspect_visitor.rbi
120
+ - rbi/prism/node.rbi
121
+ - rbi/prism/node_ext.rbi
122
+ - rbi/prism/parse_result.rbi
123
+ - rbi/prism/reflection.rbi
124
+ - rbi/prism/string_query.rbi
125
+ - rbi/prism/translation/parser.rbi
126
+ - rbi/prism/translation/parser33.rbi
127
+ - rbi/prism/translation/parser34.rbi
128
+ - rbi/prism/translation/parser35.rbi
129
+ - rbi/prism/translation/ripper.rbi
130
+ - rbi/prism/visitor.rbi
131
+ - sig/prism.rbs
132
+ - sig/prism/compiler.rbs
133
+ - sig/prism/dispatcher.rbs
134
+ - sig/prism/dot_visitor.rbs
135
+ - sig/prism/dsl.rbs
136
+ - sig/prism/inspect_visitor.rbs
137
+ - sig/prism/lex_compat.rbs
138
+ - sig/prism/mutation_compiler.rbs
139
+ - sig/prism/node.rbs
140
+ - sig/prism/node_ext.rbs
141
+ - sig/prism/pack.rbs
142
+ - sig/prism/parse_result.rbs
143
+ - sig/prism/parse_result/comments.rbs
144
+ - sig/prism/pattern.rbs
145
+ - sig/prism/reflection.rbs
146
+ - sig/prism/relocation.rbs
147
+ - sig/prism/serialize.rbs
148
+ - sig/prism/string_query.rbs
149
+ - sig/prism/visitor.rbs
150
+ - src/diagnostic.c
151
+ - src/encoding.c
152
+ - src/node.c
153
+ - src/options.c
154
+ - src/pack.c
155
+ - src/prettyprint.c
156
+ - src/prism.c
157
+ - src/regexp.c
158
+ - src/serialize.c
159
+ - src/static_literals.c
160
+ - src/token_type.c
161
+ - src/util/pm_buffer.c
162
+ - src/util/pm_char.c
163
+ - src/util/pm_constant_pool.c
164
+ - src/util/pm_integer.c
165
+ - src/util/pm_list.c
166
+ - src/util/pm_memchr.c
167
+ - src/util/pm_newline_list.c
168
+ - src/util/pm_string.c
169
+ - src/util/pm_strncasecmp.c
170
+ - src/util/pm_strpbrk.c
171
+ homepage: https://github.com/ruby/prism
172
+ licenses:
173
+ - MIT
174
+ metadata:
175
+ allowed_push_host: https://rubygems.org
176
+ source_code_uri: https://github.com/ruby/prism
177
+ changelog_uri: https://github.com/ruby/prism/blob/main/CHANGELOG.md
178
+ rdoc_options: []
179
+ require_paths:
180
+ - lib
181
+ required_ruby_version: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: 2.7.0
186
+ required_rubygems_version: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - ">="
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
191
+ requirements: []
192
+ rubygems_version: 3.6.7
193
+ specification_version: 4
194
+ summary: Prism Ruby parser
195
+ test_files: []