prism 0.19.0 → 0.20.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 +29 -1
- data/Makefile +5 -0
- data/README.md +8 -6
- data/config.yml +236 -38
- data/docs/build_system.md +19 -2
- data/docs/cruby_compilation.md +27 -0
- data/docs/parser_translation.md +34 -0
- data/docs/parsing_rules.md +19 -0
- data/docs/releasing.md +3 -3
- data/docs/ruby_api.md +1 -1
- data/docs/serialization.md +17 -5
- data/ext/prism/api_node.c +101 -81
- data/ext/prism/extension.c +74 -11
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +1699 -504
- data/include/prism/defines.h +8 -0
- data/include/prism/diagnostic.h +39 -2
- data/include/prism/encoding.h +10 -0
- data/include/prism/options.h +40 -14
- data/include/prism/parser.h +33 -17
- data/include/prism/util/pm_buffer.h +9 -0
- data/include/prism/util/pm_constant_pool.h +7 -0
- data/include/prism/util/pm_newline_list.h +0 -11
- data/include/prism/version.h +2 -2
- data/include/prism.h +19 -2
- data/lib/prism/debug.rb +11 -5
- data/lib/prism/dot_visitor.rb +36 -14
- data/lib/prism/dsl.rb +22 -22
- data/lib/prism/ffi.rb +2 -2
- data/lib/prism/node.rb +1020 -737
- data/lib/prism/node_ext.rb +2 -2
- data/lib/prism/parse_result.rb +17 -9
- data/lib/prism/serialize.rb +53 -29
- data/lib/prism/translation/parser/compiler.rb +1831 -0
- data/lib/prism/translation/parser/lexer.rb +335 -0
- data/lib/prism/translation/parser/rubocop.rb +37 -0
- data/lib/prism/translation/parser.rb +163 -0
- data/lib/prism/translation.rb +11 -0
- data/lib/prism.rb +1 -0
- data/prism.gemspec +12 -5
- data/rbi/prism.rbi +150 -88
- data/rbi/prism_static.rbi +15 -3
- data/sig/prism.rbs +996 -961
- data/sig/prism_static.rbs +123 -46
- data/src/diagnostic.c +259 -219
- data/src/encoding.c +4 -8
- data/src/node.c +2 -6
- data/src/options.c +24 -5
- data/src/prettyprint.c +174 -42
- data/src/prism.c +1136 -328
- data/src/serialize.c +12 -9
- data/src/token_type.c +353 -4
- data/src/util/pm_buffer.c +11 -0
- data/src/util/pm_constant_pool.c +12 -11
- data/src/util/pm_newline_list.c +2 -14
- metadata +10 -3
- data/docs/building.md +0 -29
data/lib/prism/dsl.rb
CHANGED
@@ -103,18 +103,18 @@ module Prism
|
|
103
103
|
end
|
104
104
|
|
105
105
|
# Create a new BlockLocalVariableNode node
|
106
|
-
def BlockLocalVariableNode(name, location = Location())
|
107
|
-
BlockLocalVariableNode.new(name, location)
|
106
|
+
def BlockLocalVariableNode(flags, name, location = Location())
|
107
|
+
BlockLocalVariableNode.new(flags, name, location)
|
108
108
|
end
|
109
109
|
|
110
110
|
# Create a new BlockNode node
|
111
|
-
def BlockNode(locals,
|
112
|
-
BlockNode.new(locals,
|
111
|
+
def BlockNode(locals, parameters, body, opening_loc, closing_loc, location = Location())
|
112
|
+
BlockNode.new(locals, parameters, body, opening_loc, closing_loc, location)
|
113
113
|
end
|
114
114
|
|
115
115
|
# Create a new BlockParameterNode node
|
116
|
-
def BlockParameterNode(name, name_loc, operator_loc, location = Location())
|
117
|
-
BlockParameterNode.new(name, name_loc, operator_loc, location)
|
116
|
+
def BlockParameterNode(flags, name, name_loc, operator_loc, location = Location())
|
117
|
+
BlockParameterNode.new(flags, name, name_loc, operator_loc, location)
|
118
118
|
end
|
119
119
|
|
120
120
|
# Create a new BlockParametersNode node
|
@@ -263,8 +263,8 @@ module Prism
|
|
263
263
|
end
|
264
264
|
|
265
265
|
# Create a new DefNode node
|
266
|
-
def DefNode(name, name_loc, receiver, parameters, body, locals,
|
267
|
-
DefNode.new(name, name_loc, receiver, parameters, body, locals,
|
266
|
+
def DefNode(name, name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc, location = Location())
|
267
|
+
DefNode.new(name, name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc, location)
|
268
268
|
end
|
269
269
|
|
270
270
|
# Create a new DefinedNode node
|
@@ -483,13 +483,13 @@ module Prism
|
|
483
483
|
end
|
484
484
|
|
485
485
|
# Create a new KeywordRestParameterNode node
|
486
|
-
def KeywordRestParameterNode(name, name_loc, operator_loc, location = Location())
|
487
|
-
KeywordRestParameterNode.new(name, name_loc, operator_loc, location)
|
486
|
+
def KeywordRestParameterNode(flags, name, name_loc, operator_loc, location = Location())
|
487
|
+
KeywordRestParameterNode.new(flags, name, name_loc, operator_loc, location)
|
488
488
|
end
|
489
489
|
|
490
490
|
# Create a new LambdaNode node
|
491
|
-
def LambdaNode(locals,
|
492
|
-
LambdaNode.new(locals,
|
491
|
+
def LambdaNode(locals, operator_loc, opening_loc, closing_loc, parameters, body, location = Location())
|
492
|
+
LambdaNode.new(locals, operator_loc, opening_loc, closing_loc, parameters, body, location)
|
493
493
|
end
|
494
494
|
|
495
495
|
# Create a new LocalVariableAndWriteNode node
|
@@ -588,13 +588,13 @@ module Prism
|
|
588
588
|
end
|
589
589
|
|
590
590
|
# Create a new OptionalKeywordParameterNode node
|
591
|
-
def OptionalKeywordParameterNode(name, name_loc, value, location = Location())
|
592
|
-
OptionalKeywordParameterNode.new(name, name_loc, value, location)
|
591
|
+
def OptionalKeywordParameterNode(flags, name, name_loc, value, location = Location())
|
592
|
+
OptionalKeywordParameterNode.new(flags, name, name_loc, value, location)
|
593
593
|
end
|
594
594
|
|
595
595
|
# Create a new OptionalParameterNode node
|
596
|
-
def OptionalParameterNode(name, name_loc, operator_loc, value, location = Location())
|
597
|
-
OptionalParameterNode.new(name, name_loc, operator_loc, value, location)
|
596
|
+
def OptionalParameterNode(flags, name, name_loc, operator_loc, value, location = Location())
|
597
|
+
OptionalParameterNode.new(flags, name, name_loc, operator_loc, value, location)
|
598
598
|
end
|
599
599
|
|
600
600
|
# Create a new OrNode node
|
@@ -658,13 +658,13 @@ module Prism
|
|
658
658
|
end
|
659
659
|
|
660
660
|
# Create a new RequiredKeywordParameterNode node
|
661
|
-
def RequiredKeywordParameterNode(name, name_loc, location = Location())
|
662
|
-
RequiredKeywordParameterNode.new(name, name_loc, location)
|
661
|
+
def RequiredKeywordParameterNode(flags, name, name_loc, location = Location())
|
662
|
+
RequiredKeywordParameterNode.new(flags, name, name_loc, location)
|
663
663
|
end
|
664
664
|
|
665
665
|
# Create a new RequiredParameterNode node
|
666
|
-
def RequiredParameterNode(name, location = Location())
|
667
|
-
RequiredParameterNode.new(name, location)
|
666
|
+
def RequiredParameterNode(flags, name, location = Location())
|
667
|
+
RequiredParameterNode.new(flags, name, location)
|
668
668
|
end
|
669
669
|
|
670
670
|
# Create a new RescueModifierNode node
|
@@ -678,8 +678,8 @@ module Prism
|
|
678
678
|
end
|
679
679
|
|
680
680
|
# Create a new RestParameterNode node
|
681
|
-
def RestParameterNode(name, name_loc, operator_loc, location = Location())
|
682
|
-
RestParameterNode.new(name, name_loc, operator_loc, location)
|
681
|
+
def RestParameterNode(flags, name, name_loc, operator_loc, location = Location())
|
682
|
+
RestParameterNode.new(flags, name, name_loc, operator_loc, location)
|
683
683
|
end
|
684
684
|
|
685
685
|
# Create a new RetryNode node
|
data/lib/prism/ffi.rb
CHANGED
@@ -296,7 +296,7 @@ module Prism
|
|
296
296
|
values << 0
|
297
297
|
end
|
298
298
|
|
299
|
-
template << "
|
299
|
+
template << "l"
|
300
300
|
values << options.fetch(:line, 1)
|
301
301
|
|
302
302
|
template << "L"
|
@@ -312,7 +312,7 @@ module Prism
|
|
312
312
|
values << (options.fetch(:frozen_string_literal, false) ? 1 : 0)
|
313
313
|
|
314
314
|
template << "C"
|
315
|
-
values <<
|
315
|
+
values << { nil => 0, "3.3.0" => 1, "latest" => 0 }.fetch(options[:version])
|
316
316
|
|
317
317
|
template << "L"
|
318
318
|
if (scopes = options[:scopes])
|