Class: Prism::Serialize::Loader
Do not use. This class is for internal use only.
| Relationships & Source Files | |
| Namespace Children | |
|
Classes:
| |
| Inherits: | Object |
| Defined in: | lib/prism/serialize.rb |
Constant Summary
-
DIAGNOSTIC_TYPES =
private
# File 'lib/prism/serialize.rb', line 127[ :alias_argument, :alias_argument_numbered_reference, :ampampeq_multi_assign, :argument_after_block, :argument_after_forwarding_ellipses, :, :argument_block_forwarding, :argument_block_multi, :argument_conflict_ampersand, :argument_conflict_star, :argument_conflict_star_star, :argument_formal_class, :argument_formal_constant, :argument_formal_global, :argument_formal_ivar, :argument_forwarding_unbound, :argument_in, :argument_no_forwarding_ampersand, :argument_no_forwarding_ellipses, :argument_no_forwarding_star, :argument_no_forwarding_star_star, :argument_splat_after_assoc_splat, :argument_splat_after_splat, :argument_term_paren, :argument_unexpected_block, :array_element, :array_expression, :array_expression_after_star, :array_separator, :array_term, :begin_lonely_else, :begin_term, :begin_upcase_brace, :begin_upcase_term, :begin_upcase_toplevel, :block_param_local_variable, :block_param_pipe_term, :block_term_brace, :block_term_end, :cannot_parse_expression, :cannot_parse_string_part, :case_expression_after_case, :case_expression_after_when, :case_match_missing_predicate, :case_missing_conditions, :case_term, :class_in_method, :class_name, :class_superclass, :class_term, :class_unexpected_end, :, :conditional_elsif_predicate, :conditional_if_predicate, :conditional_predicate_term, :conditional_term, :conditional_term_else, :conditional_unless_predicate, :conditional_until_predicate, :conditional_while_predicate, :constant_path_colon_colon_constant, :def_endless, :def_endless_setter, :def_name, :def_params_term, :def_params_term_paren, :def_receiver, :def_receiver_term, :def_term, :defined_expression, :embdoc_term, :embexpr_end, :embvar_invalid, :end_upcase_brace, :end_upcase_term, :escape_invalid_control, :escape_invalid_control_repeat, :escape_invalid_hexadecimal, :, :, :escape_invalid_unicode, :escape_invalid_unicode_cm_flags, :escape_invalid_unicode_literal, :escape_invalid_unicode_long, :escape_invalid_unicode_term, :expect_argument, :expect_eol_after_statement, :expect_expression_after_ampampeq, :expect_expression_after_comma, :expect_expression_after_equal, :expect_expression_after_less_less, :expect_expression_after_lparen, :expect_expression_after_operator, :expect_expression_after_pipepipeeq, :expect_expression_after_question, :expect_expression_after_splat, :expect_expression_after_splat_hash, :expect_expression_after_star, :expect_ident_req_parameter, :expect_in_delimiter, :expect_lparen_req_parameter, :, :expect_rbracket, :expect_rparen, :expect_rparen_after_multi, :expect_rparen_req_parameter, :expect_string_content, :expect_when_delimiter, :, :expression_not_writable, :expression_not_writable_encoding, :expression_not_writable_false, :expression_not_writable_file, :expression_not_writable_line, :expression_not_writable_nil, :expression_not_writable_numbered, :expression_not_writable_self, :expression_not_writable_true, :float_parse, :for_collection, :for_in, :for_index, :for_term, :, :hash_expression_after_label, :hash_key, :hash_rocket, :hash_term, :hash_value, :heredoc_identifier, :heredoc_term, :incomplete_question_mark, :incomplete_variable_class, :incomplete_variable_class_3_3, :incomplete_variable_instance, :incomplete_variable_instance_3_3, :, :invalid_block_exit, :invalid_character, :invalid_encoding_magic_comment, :invalid_escape_character, :invalid_float_exponent, :invalid_local_variable_read, :invalid_local_variable_write, :invalid_multibyte_char, :invalid_multibyte_character, :invalid_multibyte_escape, :invalid_number_binary, :invalid_number_decimal, :invalid_number_fraction, :invalid_number_hexadecimal, :invalid_number_octal, :invalid_number_underscore_inner, :invalid_number_underscore_trailing, :invalid_percent, :invalid_percent_eof, :invalid_printable_character, :invalid_retry_after_else, :invalid_retry_after_ensure, :invalid_retry_without_rescue, :invalid_symbol, :invalid_variable_global, :invalid_variable_global_3_3, :invalid_yield, :it_not_allowed_numbered, :it_not_allowed_ordinary, :lambda_open, :lambda_term_brace, :lambda_term_end, :list_i_lower_element, :list_i_lower_term, :list_i_upper_element, :list_i_upper_term, :list_w_lower_element, :list_w_lower_term, :list_w_upper_element, :list_w_upper_term, :malloc_failed, :mixed_encoding, :module_in_method, :module_name, :module_term, :multi_assign_multi_splats, :multi_assign_unexpected_rest, :no_local_variable, :not_expression, :number_literal_underscore, :numbered_parameter_inner_block, :numbered_parameter_it, :numbered_parameter_ordinary, :numbered_parameter_outer_block, :operator_multi_assign, :operator_write_arguments, :operator_write_block, :parameter_assoc_splat_multi, :parameter_block_multi, :parameter_circular, :parameter_forwarding_after_rest, :parameter_method_name, :parameter_name_duplicated, :parameter_no_default, :parameter_no_default_kw, :parameter_numbered_reserved, :parameter_order, :parameter_splat_multi, :parameter_star, :parameter_unexpected_fwd, :parameter_unexpected_no_kw, :parameter_wild_loose_comma, :pattern_array_multiple_rests, :pattern_capture_duplicate, :pattern_expression_after_bracket, :pattern_expression_after_comma, :pattern_expression_after_hrocket, :pattern_expression_after_in, :pattern_expression_after_key, :pattern_expression_after_paren, :pattern_expression_after_pin, :pattern_expression_after_pipe, :pattern_expression_after_range, :pattern_expression_after_rest, :pattern_find_missing_inner, :pattern_hash_implicit, :pattern_hash_key, :pattern_hash_key_duplicate, :pattern_hash_key_interpolated, :pattern_hash_key_label, :pattern_hash_key_locals, :pattern_ident_after_hrocket, :pattern_label_after_comma, :pattern_rest, :pattern_term_brace, :pattern_term_bracket, :pattern_term_paren, :pipepipeeq_multi_assign, :regexp_encoding_option_mismatch, :regexp_incompat_char_encoding, :regexp_invalid_unicode_range, :regexp_non_escaped_mbc, :regexp_parse_error, :regexp_term, :, :regexp_utf8_char_non_utf8_regexp, :rescue_expression, :rescue_modifier_value, :rescue_term, :rescue_variable, :return_invalid, :script_not_found, :singleton_for_literals, :statement_alias, :statement_postexe_end, :statement_preexe_begin, :statement_undef, :string_concatenation, :string_interpolated_term, :string_literal_eof, :string_literal_term, :symbol_invalid, :symbol_term_dynamic, :symbol_term_interpolated, :ternary_colon, :ternary_expression_false, :ternary_expression_true, :unary_disallowed, :unary_receiver, :undef_argument, :unexpected_block_argument, :unexpected_index_block, :unexpected_index_keywords, :unexpected_multi_write, :unexpected_range_operator, :, :unexpected_token_close_context, :unexpected_token_ignore, :until_term, :void_expression, :while_term, :write_target_in_method, :write_target_readonly, :write_target_unexpected, :xstring_term, :ambiguous_binary_operator, :ambiguous_first_argument_minus, :ambiguous_first_argument_plus, :ambiguous_prefix_ampersand, :ambiguous_prefix_star, :ambiguous_prefix_star_star, :ambiguous_slash, :comparison_after_comparison, :dot_dot_dot_eol, :equal_in_conditional, :equal_in_conditional_3_3, :end_in_method, :duplicated_hash_key, :duplicated_when_clause, :float_out_of_range, :ignored_frozen_string_literal, :indentation_mismatch, :integer_in_flip_flop, :invalid_character, :invalid_magic_comment_value, :invalid_numbered_reference, :keyword_eol, :literal_in_condition_default, :literal_in_condition_verbose, :shareable_constant_value_line, :shebang_carriage_return, :unexpected_carriage_return, :unreachable_statement, :unused_local_variable, :void_statement, ].freeze
Class Method Summary
- .new(source, serialized) ⇒ Loader constructor
Instance Attribute Summary
- #constant_pool readonly
- #constant_pool_offset readonly
- #encoding readonly
- #input readonly
- #io readonly
- #serialized readonly
- #source readonly
- #start_line readonly
Instance Method Summary
- #load_comments
- #load_encoding
- #load_header
- #load_line_offsets
- #load_metadata
- #load_nodes
- #load_result
- #load_start_line
- #load_tokens
- #load_tokens_result
- #define_load_node_lambdas private
- #load_constant(index) private
- #load_double private
- #load_embedded_string private
- #load_error_level private
- #load_integer private
- #load_location private
- #load_location_object private
-
#load_node
private
See additional method definition at line 637.
- #load_optional_constant private
- #load_optional_location private
- #load_optional_location_object private
- #load_optional_node private
- #load_required_constant private
- #load_string private
- #load_uint32 private
- #load_varsint private
-
#load_varuint
private
variable-length integer using https://en.wikipedia.org/wiki/LEB128 This is also what protobuf uses: https://protobuf.dev/programming-guides/encoding/#varints.
- #load_warning_level private
Constructor Details
.new(source, serialized) ⇒ Loader
# File 'lib/prism/serialize.rb', line 80
def initialize(source, serialized) @encoding = Encoding::UTF_8 @input = source.source.dup raise unless serialized.encoding == Encoding::BINARY @serialized = serialized @io = FastStringIO.new(serialized) @constant_pool_offset = nil @constant_pool = nil @source = source define_load_node_lambdas unless RUBY_ENGINE == "ruby" end
Instance Attribute Details
#constant_pool (readonly)
[ GitHub ]# File 'lib/prism/serialize.rb', line 77
attr_reader :constant_pool_offset, :constant_pool, :source
#constant_pool_offset (readonly)
[ GitHub ]# File 'lib/prism/serialize.rb', line 77
attr_reader :constant_pool_offset, :constant_pool, :source
#encoding (readonly)
[ GitHub ]# File 'lib/prism/serialize.rb', line 76
attr_reader :encoding, :input, :serialized, :io
#input (readonly)
[ GitHub ]# File 'lib/prism/serialize.rb', line 76
attr_reader :encoding, :input, :serialized, :io
#io (readonly)
[ GitHub ]# File 'lib/prism/serialize.rb', line 76
attr_reader :encoding, :input, :serialized, :io
#serialized (readonly)
[ GitHub ]#source (readonly)
[ GitHub ]# File 'lib/prism/serialize.rb', line 77
attr_reader :constant_pool_offset, :constant_pool, :source
#start_line (readonly)
[ GitHub ]# File 'lib/prism/serialize.rb', line 78
attr_reader :start_line
Instance Method Details
#define_load_node_lambdas (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 954
def define_load_node_lambdas @load_node_lambdas = [ nil, #=> { node_id = load_varuint location = load_location AliasGlobalVariableNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) }, #=> { node_id = load_varuint location = load_location AliasMethodNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) }, #=> { node_id = load_varuint location = load_location AlternationPatternNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) }, #=> { node_id = load_varuint location = load_location AndNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) }, #=> { node_id = load_varuint location = load_location ArgumentsNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }) }, #=> { node_id = load_varuint location = load_location ArrayNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location) }, #=> { node_id = load_varuint location = load_location ArrayPatternNode.new(source, node_id, location, load_varuint, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location) }, #=> { node_id = load_varuint location = load_location AssocNode.new(source, node_id, location, load_varuint, load_node, load_node, load_optional_location) }, #=> { node_id = load_varuint location = load_location AssocSplatNode.new(source, node_id, location, load_varuint, load_optional_node, load_location) }, #=> { node_id = load_varuint location = load_location BackReferenceReadNode.new(source, node_id, location, load_varuint, load_required_constant) }, #=> { node_id = load_varuint location = load_location BeginNode.new(source, node_id, location, load_varuint, load_optional_location, load_optional_node, load_optional_node, load_optional_node, load_optional_node, load_optional_location) }, #=> { node_id = load_varuint location = load_location BlockArgumentNode.new(source, node_id, location, load_varuint, load_optional_node, load_location) }, #=> { node_id = load_varuint location = load_location BlockLocalVariableNode.new(source, node_id, location, load_varuint, load_required_constant) }, #=> { node_id = load_varuint location = load_location BlockNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_required_constant }, load_optional_node, load_optional_node, load_location, load_location) }, #=> { node_id = load_varuint location = load_location BlockParameterNode.new(source, node_id, location, load_varuint, load_optional_constant, load_optional_location, load_location) }, #=> { node_id = load_varuint location = load_location BlockParametersNode.new(source, node_id, location, load_varuint, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location) }, #=> { node_id = load_varuint location = load_location BreakNode.new(source, node_id, location, load_varuint, load_optional_node, load_location) }, #=> { node_id = load_varuint location = load_location CallAndWriteNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_optional_location, load_required_constant, load_required_constant, load_location, load_node) }, #=> { node_id = load_varuint location = load_location CallNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_required_constant, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node) }, #=> { node_id = load_varuint location = load_location CallOperatorWriteNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_optional_location, load_required_constant, load_required_constant, load_required_constant, load_location, load_node) }, #=> { node_id = load_varuint location = load_location CallOrWriteNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_optional_location, load_required_constant, load_required_constant, load_location, load_node) }, #=> { node_id = load_varuint location = load_location CallTargetNode.new(source, node_id, location, load_varuint, load_node, load_location, load_required_constant, load_location) }, #=> { node_id = load_varuint location = load_location CapturePatternNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) }, #=> { node_id = load_varuint location = load_location CaseMatchNode.new(source, node_id, location, load_varuint, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, load_location, load_location) }, #=> { node_id = load_varuint location = load_location CaseNode.new(source, node_id, location, load_varuint, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, load_location, load_location) }, #=> { node_id = load_varuint location = load_location ClassNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_required_constant }, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_location, load_required_constant) }, #=> { node_id = load_varuint location = load_location ClassVariableAndWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) }, #=> { node_id = load_varuint location = load_location ClassVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node, load_required_constant) }, #=> { node_id = load_varuint location = load_location ClassVariableOrWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) }, #=> { node_id = load_varuint location = load_location ClassVariableReadNode.new(source, node_id, location, load_varuint, load_required_constant) }, #=> { node_id = load_varuint location = load_location ClassVariableTargetNode.new(source, node_id, location, load_varuint, load_required_constant) }, #=> { node_id = load_varuint location = load_location ClassVariableWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_node, load_location) }, #=> { node_id = load_varuint location = load_location ConstantAndWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) }, #=> { node_id = load_varuint location = load_location ConstantOperatorWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node, load_required_constant) }, #=> { node_id = load_varuint location = load_location ConstantOrWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) }, #=> { node_id = load_varuint location = load_location ConstantPathAndWriteNode.new(source, node_id, location, load_varuint, load_node, load_location, load_node) }, #=> { node_id = load_varuint location = load_location ConstantPathNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_constant, load_location, load_location) }, #=> { node_id = load_varuint location = load_location ConstantPathOperatorWriteNode.new(source, node_id, location, load_varuint, load_node, load_location, load_node, load_required_constant) }, #=> { node_id = load_varuint location = load_location ConstantPathOrWriteNode.new(source, node_id, location, load_varuint, load_node, load_location, load_node) }, #=> { node_id = load_varuint location = load_location ConstantPathTargetNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_constant, load_location, load_location) }, #=> { node_id = load_varuint location = load_location ConstantPathWriteNode.new(source, node_id, location, load_varuint, load_node, load_location, load_node) }, #=> { node_id = load_varuint location = load_location ConstantReadNode.new(source, node_id, location, load_varuint, load_required_constant) }, #=> { node_id = load_varuint location = load_location ConstantTargetNode.new(source, node_id, location, load_varuint, load_required_constant) }, #=> { node_id = load_varuint location = load_location ConstantWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_node, load_location) }, #=> { node_id = load_varuint location = load_location load_uint32 DefNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varuint) { load_required_constant }, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location) }, #=> { node_id = load_varuint location = load_location DefinedNode.new(source, node_id, location, load_varuint, load_optional_location, load_node, load_optional_location, load_location) }, #=> { node_id = load_varuint location = load_location ElseNode.new(source, node_id, location, load_varuint, load_location, load_optional_node, load_optional_location) }, #=> { node_id = load_varuint location = load_location EmbeddedStatementsNode.new(source, node_id, location, load_varuint, load_location, load_optional_node, load_location) }, #=> { node_id = load_varuint location = load_location EmbeddedVariableNode.new(source, node_id, location, load_varuint, load_location, load_node) }, #=> { node_id = load_varuint location = load_location EnsureNode.new(source, node_id, location, load_varuint, load_location, load_optional_node, load_location) }, #=> { node_id = load_varuint location = load_location FalseNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location FindPatternNode.new(source, node_id, location, load_varuint, load_optional_node, load_node, Array.new(load_varuint) { load_node }, load_node, load_optional_location, load_optional_location) }, #=> { node_id = load_varuint location = load_location FlipFlopNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_node, load_location) }, #=> { node_id = load_varuint location = load_location FloatNode.new(source, node_id, location, load_varuint, load_double) }, #=> { node_id = load_varuint location = load_location ForNode.new(source, node_id, location, load_varuint, load_node, load_node, load_optional_node, load_location, load_location, load_optional_location, load_location) }, #=> { node_id = load_varuint location = load_location ForwardingArgumentsNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location ForwardingParameterNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location ForwardingSuperNode.new(source, node_id, location, load_varuint, load_optional_node) }, #=> { node_id = load_varuint location = load_location GlobalVariableAndWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) }, #=> { node_id = load_varuint location = load_location GlobalVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node, load_required_constant) }, #=> { node_id = load_varuint location = load_location GlobalVariableOrWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) }, #=> { node_id = load_varuint location = load_location GlobalVariableReadNode.new(source, node_id, location, load_varuint, load_required_constant) }, #=> { node_id = load_varuint location = load_location GlobalVariableTargetNode.new(source, node_id, location, load_varuint, load_required_constant) }, #=> { node_id = load_varuint location = load_location GlobalVariableWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_node, load_location) }, #=> { node_id = load_varuint location = load_location HashNode.new(source, node_id, location, load_varuint, load_location, Array.new(load_varuint) { load_node }, load_location) }, #=> { node_id = load_varuint location = load_location HashPatternNode.new(source, node_id, location, load_varuint, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, load_optional_location, load_optional_location) }, #=> { node_id = load_varuint location = load_location IfNode.new(source, node_id, location, load_varuint, load_optional_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_optional_location) }, #=> { node_id = load_varuint location = load_location ImaginaryNode.new(source, node_id, location, load_varuint, load_node) }, #=> { node_id = load_varuint location = load_location ImplicitNode.new(source, node_id, location, load_varuint, load_node) }, #=> { node_id = load_varuint location = load_location ImplicitRestNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location InNode.new(source, node_id, location, load_varuint, load_node, load_optional_node, load_location, load_optional_location) }, #=> { node_id = load_varuint location = load_location IndexAndWriteNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_location, load_node) }, #=> { node_id = load_varuint location = load_location IndexOperatorWriteNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_required_constant, load_location, load_node) }, #=> { node_id = load_varuint location = load_location IndexOrWriteNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_location, load_node) }, #=> { node_id = load_varuint location = load_location IndexTargetNode.new(source, node_id, location, load_varuint, load_node, load_location, load_optional_node, load_location, load_optional_node) }, #=> { node_id = load_varuint location = load_location InstanceVariableAndWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) }, #=> { node_id = load_varuint location = load_location InstanceVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node, load_required_constant) }, #=> { node_id = load_varuint location = load_location InstanceVariableOrWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) }, #=> { node_id = load_varuint location = load_location InstanceVariableReadNode.new(source, node_id, location, load_varuint, load_required_constant) }, #=> { node_id = load_varuint location = load_location InstanceVariableTargetNode.new(source, node_id, location, load_varuint, load_required_constant) }, #=> { node_id = load_varuint location = load_location InstanceVariableWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_node, load_location) }, #=> { node_id = load_varuint location = load_location IntegerNode.new(source, node_id, location, load_varuint, load_integer) }, #=> { node_id = load_varuint location = load_location InterpolatedMatchLastLineNode.new(source, node_id, location, load_varuint, load_location, Array.new(load_varuint) { load_node }, load_location) }, #=> { node_id = load_varuint location = load_location InterpolatedRegularExpressionNode.new(source, node_id, location, load_varuint, load_location, Array.new(load_varuint) { load_node }, load_location) }, #=> { node_id = load_varuint location = load_location InterpolatedStringNode.new(source, node_id, location, load_varuint, load_optional_location, Array.new(load_varuint) { load_node }, load_optional_location) }, #=> { node_id = load_varuint location = load_location InterpolatedSymbolNode.new(source, node_id, location, load_varuint, load_optional_location, Array.new(load_varuint) { load_node }, load_optional_location) }, #=> { node_id = load_varuint location = load_location InterpolatedXStringNode.new(source, node_id, location, load_varuint, load_location, Array.new(load_varuint) { load_node }, load_location) }, #=> { node_id = load_varuint location = load_location ItLocalVariableReadNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location ItParametersNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location KeywordHashNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }) }, #=> { node_id = load_varuint location = load_location KeywordRestParameterNode.new(source, node_id, location, load_varuint, load_optional_constant, load_optional_location, load_location) }, #=> { node_id = load_varuint location = load_location LambdaNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_required_constant }, load_location, load_location, load_location, load_optional_node, load_optional_node) }, #=> { node_id = load_varuint location = load_location LocalVariableAndWriteNode.new(source, node_id, location, load_varuint, load_location, load_location, load_node, load_required_constant, load_varuint) }, #=> { node_id = load_varuint location = load_location LocalVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_location, load_location, load_node, load_required_constant, load_required_constant, load_varuint) }, #=> { node_id = load_varuint location = load_location LocalVariableOrWriteNode.new(source, node_id, location, load_varuint, load_location, load_location, load_node, load_required_constant, load_varuint) }, #=> { node_id = load_varuint location = load_location LocalVariableReadNode.new(source, node_id, location, load_varuint, load_required_constant, load_varuint) }, #=> { node_id = load_varuint location = load_location LocalVariableTargetNode.new(source, node_id, location, load_varuint, load_required_constant, load_varuint) }, #=> { node_id = load_varuint location = load_location LocalVariableWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_varuint, load_location, load_node, load_location) }, #=> { node_id = load_varuint location = load_location MatchLastLineNode.new(source, node_id, location, load_varuint, load_location, load_location, load_location, load_string) }, #=> { node_id = load_varuint location = load_location MatchPredicateNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) }, #=> { node_id = load_varuint location = load_location MatchRequiredNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) }, #=> { node_id = load_varuint location = load_location MatchWriteNode.new(source, node_id, location, load_varuint, load_node, Array.new(load_varuint) { load_node }) }, #=> { node_id = load_varuint location = load_location MissingNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location ModuleNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_required_constant }, load_location, load_node, load_optional_node, load_location, load_required_constant) }, #=> { node_id = load_varuint location = load_location MultiTargetNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location) }, #=> { node_id = load_varuint location = load_location MultiWriteNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, load_location, load_node) }, #=> { node_id = load_varuint location = load_location NextNode.new(source, node_id, location, load_varuint, load_optional_node, load_location) }, #=> { node_id = load_varuint location = load_location NilNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location NoKeywordsParameterNode.new(source, node_id, location, load_varuint, load_location, load_location) }, #=> { node_id = load_varuint location = load_location NumberedParametersNode.new(source, node_id, location, load_varuint, io.getbyte) }, #=> { node_id = load_varuint location = load_location NumberedReferenceReadNode.new(source, node_id, location, load_varuint, load_varuint) }, #=> { node_id = load_varuint location = load_location OptionalKeywordParameterNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_node) }, #=> { node_id = load_varuint location = load_location OptionalParameterNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) }, #=> { node_id = load_varuint location = load_location OrNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) }, #=> { node_id = load_varuint location = load_location ParametersNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, Array.new(load_varuint) { load_node }, load_optional_node, load_optional_node) }, #=> { node_id = load_varuint location = load_location ParenthesesNode.new(source, node_id, location, load_varuint, load_optional_node, load_location, load_location) }, #=> { node_id = load_varuint location = load_location PinnedExpressionNode.new(source, node_id, location, load_varuint, load_node, load_location, load_location, load_location) }, #=> { node_id = load_varuint location = load_location PinnedVariableNode.new(source, node_id, location, load_varuint, load_node, load_location) }, #=> { node_id = load_varuint location = load_location PostExecutionNode.new(source, node_id, location, load_varuint, load_optional_node, load_location, load_location, load_location) }, #=> { node_id = load_varuint location = load_location PreExecutionNode.new(source, node_id, location, load_varuint, load_optional_node, load_location, load_location, load_location) }, #=> { node_id = load_varuint location = load_location ProgramNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_required_constant }, load_node) }, #=> { node_id = load_varuint location = load_location RangeNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_node, load_location) }, #=> { node_id = load_varuint location = load_location RationalNode.new(source, node_id, location, load_varuint, load_integer, load_integer) }, #=> { node_id = load_varuint location = load_location RedoNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location RegularExpressionNode.new(source, node_id, location, load_varuint, load_location, load_location, load_location, load_string) }, #=> { node_id = load_varuint location = load_location RequiredKeywordParameterNode.new(source, node_id, location, load_varuint, load_required_constant, load_location) }, #=> { node_id = load_varuint location = load_location RequiredParameterNode.new(source, node_id, location, load_varuint, load_required_constant) }, #=> { node_id = load_varuint location = load_location RescueModifierNode.new(source, node_id, location, load_varuint, load_node, load_location, load_node) }, #=> { node_id = load_varuint location = load_location RescueNode.new(source, node_id, location, load_varuint, load_location, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node) }, #=> { node_id = load_varuint location = load_location RestParameterNode.new(source, node_id, location, load_varuint, load_optional_constant, load_optional_location, load_location) }, #=> { node_id = load_varuint location = load_location RetryNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location ReturnNode.new(source, node_id, location, load_varuint, load_location, load_optional_node) }, #=> { node_id = load_varuint location = load_location SelfNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location ShareableConstantNode.new(source, node_id, location, load_varuint, load_node) }, #=> { node_id = load_varuint location = load_location SingletonClassNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_required_constant }, load_location, load_location, load_node, load_optional_node, load_location) }, #=> { node_id = load_varuint location = load_location SourceEncodingNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location SourceFileNode.new(source, node_id, location, load_varuint, load_string) }, #=> { node_id = load_varuint location = load_location SourceLineNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location SplatNode.new(source, node_id, location, load_varuint, load_location, load_optional_node) }, #=> { node_id = load_varuint location = load_location StatementsNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }) }, #=> { node_id = load_varuint location = load_location StringNode.new(source, node_id, location, load_varuint, load_optional_location, load_location, load_optional_location, load_string) }, #=> { node_id = load_varuint location = load_location SuperNode.new(source, node_id, location, load_varuint, load_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node) }, #=> { node_id = load_varuint location = load_location SymbolNode.new(source, node_id, location, load_varuint, load_optional_location, load_optional_location, load_optional_location, load_string) }, #=> { node_id = load_varuint location = load_location TrueNode.new(source, node_id, location, load_varuint) }, #=> { node_id = load_varuint location = load_location UndefNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }, load_location) }, #=> { node_id = load_varuint location = load_location UnlessNode.new(source, node_id, location, load_varuint, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_optional_location) }, #=> { node_id = load_varuint location = load_location UntilNode.new(source, node_id, location, load_varuint, load_location, load_optional_location, load_node, load_optional_node) }, #=> { node_id = load_varuint location = load_location WhenNode.new(source, node_id, location, load_varuint, load_location, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_node) }, #=> { node_id = load_varuint location = load_location WhileNode.new(source, node_id, location, load_varuint, load_location, load_optional_location, load_node, load_optional_node) }, #=> { node_id = load_varuint location = load_location XStringNode.new(source, node_id, location, load_varuint, load_location, load_location, load_location, load_string) }, #=> { node_id = load_varuint location = load_location YieldNode.new(source, node_id, location, load_varuint, load_location, load_optional_location, load_optional_node, load_optional_location) }, ] end
#load_comments
[ GitHub ]# File 'lib/prism/serialize.rb', line 118
def load_comments Array.new(load_varuint) do case load_varuint when 0 then InlineComment.new(load_location_object) when 1 then EmbDocComment.new(load_location_object) end end end
#load_constant(index) (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 578
def load_constant(index) constant = constant_pool[index] unless constant offset = constant_pool_offset + index * 8 start = @serialized.unpack1("L", offset: offset) length = @serialized.unpack1("L", offset: offset + 4) constant = if start.nobits?(1 << 31) input.byteslice(start, length).force_encoding(@encoding).to_sym else @serialized.byteslice(start & ((1 << 31) - 1), length).force_encoding(@encoding).to_sym end constant_pool[index] = constant end constant end
#load_double (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 531
def load_double io.read(8).unpack1("D") end
#load_embedded_string (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 546
def io.read(load_varuint).force_encoding(encoding) end
#load_encoding
[ GitHub ]# File 'lib/prism/serialize.rb', line 104
def load_encoding @encoding = Encoding.find(io.read(load_varuint)) @input = input.force_encoding(@encoding).freeze @encoding end
#load_error_level (private)
[ GitHub ]#load_header
[ GitHub ]# File 'lib/prism/serialize.rb', line 95
def load_header raise "Invalid serialization" if io.read(5) != "PRISM" raise "Invalid serialization" if io.read(3).unpack("C3") != [MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION] only_semantic_fields = io.getbyte unless only_semantic_fields == 0 raise "Invalid serialization (location fields must be included but are not)" end end
#load_integer (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 520
def load_integer negative = io.getbyte != 0 length = load_varuint value = 0 length.times { |index| value |= (load_varuint << (index * 32)) } value = -value if negative value end
#load_line_offsets
[ GitHub ]# File 'lib/prism/serialize.rb', line 114
def load_line_offsets source.instance_variable_set :@offsets, Array.new(load_varuint) { load_varuint } end
#load_location (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 562
def load_location (load_varuint << 32) | load_varuint end
#load_location_object (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 566
def load_location_object Location.new(source, load_varuint, load_varuint) end
#load_metadata
[ GitHub ]# File 'lib/prism/serialize.rb', line 444
def comments = load_comments magic_comments = Array.new(load_varuint) { MagicComment.new(load_location_object, load_location_object) } data_loc = load_optional_location_object errors = Array.new(load_varuint) { ParseError.new(DIAGNOSTIC_TYPES.fetch(load_varuint), , load_location_object, load_error_level) } warnings = Array.new(load_varuint) { ParseWarning.new(DIAGNOSTIC_TYPES.fetch(load_varuint), , load_location_object, load_warning_level) } [comments, magic_comments, data_loc, errors, warnings] end
#load_node (private)
See additional method definition at line 637.
# File 'lib/prism/serialize.rb', line 949
def load_node type = io.getbyte node_id = load_varuint location = load_location case type when 1 then AliasGlobalVariableNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) when 2 then AliasMethodNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) when 3 then AlternationPatternNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) when 4 then AndNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) when 5 then ArgumentsNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }) when 6 then ArrayNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location) when 7 then ArrayPatternNode.new(source, node_id, location, load_varuint, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location) when 8 then AssocNode.new(source, node_id, location, load_varuint, load_node, load_node, load_optional_location) when 9 then AssocSplatNode.new(source, node_id, location, load_varuint, load_optional_node, load_location) when 10 then BackReferenceReadNode.new(source, node_id, location, load_varuint, load_required_constant) when 11 then BeginNode.new(source, node_id, location, load_varuint, load_optional_location, load_optional_node, load_optional_node, load_optional_node, load_optional_node, load_optional_location) when 12 then BlockArgumentNode.new(source, node_id, location, load_varuint, load_optional_node, load_location) when 13 then BlockLocalVariableNode.new(source, node_id, location, load_varuint, load_required_constant) when 14 then BlockNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_required_constant }, load_optional_node, load_optional_node, load_location, load_location) when 15 then BlockParameterNode.new(source, node_id, location, load_varuint, load_optional_constant, load_optional_location, load_location) when 16 then BlockParametersNode.new(source, node_id, location, load_varuint, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location) when 17 then BreakNode.new(source, node_id, location, load_varuint, load_optional_node, load_location) when 18 then CallAndWriteNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_optional_location, load_required_constant, load_required_constant, load_location, load_node) when 19 then CallNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_required_constant, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node) when 20 then CallOperatorWriteNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_optional_location, load_required_constant, load_required_constant, load_required_constant, load_location, load_node) when 21 then CallOrWriteNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_optional_location, load_required_constant, load_required_constant, load_location, load_node) when 22 then CallTargetNode.new(source, node_id, location, load_varuint, load_node, load_location, load_required_constant, load_location) when 23 then CapturePatternNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) when 24 then CaseMatchNode.new(source, node_id, location, load_varuint, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, load_location, load_location) when 25 then CaseNode.new(source, node_id, location, load_varuint, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, load_location, load_location) when 26 then ClassNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_required_constant }, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_location, load_required_constant) when 27 then ClassVariableAndWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) when 28 then ClassVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node, load_required_constant) when 29 then ClassVariableOrWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) when 30 then ClassVariableReadNode.new(source, node_id, location, load_varuint, load_required_constant) when 31 then ClassVariableTargetNode.new(source, node_id, location, load_varuint, load_required_constant) when 32 then ClassVariableWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_node, load_location) when 33 then ConstantAndWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) when 34 then ConstantOperatorWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node, load_required_constant) when 35 then ConstantOrWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) when 36 then ConstantPathAndWriteNode.new(source, node_id, location, load_varuint, load_node, load_location, load_node) when 37 then ConstantPathNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_constant, load_location, load_location) when 38 then ConstantPathOperatorWriteNode.new(source, node_id, location, load_varuint, load_node, load_location, load_node, load_required_constant) when 39 then ConstantPathOrWriteNode.new(source, node_id, location, load_varuint, load_node, load_location, load_node) when 40 then ConstantPathTargetNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_constant, load_location, load_location) when 41 then ConstantPathWriteNode.new(source, node_id, location, load_varuint, load_node, load_location, load_node) when 42 then ConstantReadNode.new(source, node_id, location, load_varuint, load_required_constant) when 43 then ConstantTargetNode.new(source, node_id, location, load_varuint, load_required_constant) when 44 then ConstantWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_node, load_location) when 45 then load_uint32 DefNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varuint) { load_required_constant }, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location) when 46 then DefinedNode.new(source, node_id, location, load_varuint, load_optional_location, load_node, load_optional_location, load_location) when 47 then ElseNode.new(source, node_id, location, load_varuint, load_location, load_optional_node, load_optional_location) when 48 then EmbeddedStatementsNode.new(source, node_id, location, load_varuint, load_location, load_optional_node, load_location) when 49 then EmbeddedVariableNode.new(source, node_id, location, load_varuint, load_location, load_node) when 50 then EnsureNode.new(source, node_id, location, load_varuint, load_location, load_optional_node, load_location) when 51 then FalseNode.new(source, node_id, location, load_varuint) when 52 then FindPatternNode.new(source, node_id, location, load_varuint, load_optional_node, load_node, Array.new(load_varuint) { load_node }, load_node, load_optional_location, load_optional_location) when 53 then FlipFlopNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_node, load_location) when 54 then FloatNode.new(source, node_id, location, load_varuint, load_double) when 55 then ForNode.new(source, node_id, location, load_varuint, load_node, load_node, load_optional_node, load_location, load_location, load_optional_location, load_location) when 56 then ForwardingArgumentsNode.new(source, node_id, location, load_varuint) when 57 then ForwardingParameterNode.new(source, node_id, location, load_varuint) when 58 then ForwardingSuperNode.new(source, node_id, location, load_varuint, load_optional_node) when 59 then GlobalVariableAndWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) when 60 then GlobalVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node, load_required_constant) when 61 then GlobalVariableOrWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) when 62 then GlobalVariableReadNode.new(source, node_id, location, load_varuint, load_required_constant) when 63 then GlobalVariableTargetNode.new(source, node_id, location, load_varuint, load_required_constant) when 64 then GlobalVariableWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_node, load_location) when 65 then HashNode.new(source, node_id, location, load_varuint, load_location, Array.new(load_varuint) { load_node }, load_location) when 66 then HashPatternNode.new(source, node_id, location, load_varuint, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, load_optional_location, load_optional_location) when 67 then IfNode.new(source, node_id, location, load_varuint, load_optional_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_optional_location) when 68 then ImaginaryNode.new(source, node_id, location, load_varuint, load_node) when 69 then ImplicitNode.new(source, node_id, location, load_varuint, load_node) when 70 then ImplicitRestNode.new(source, node_id, location, load_varuint) when 71 then InNode.new(source, node_id, location, load_varuint, load_node, load_optional_node, load_location, load_optional_location) when 72 then IndexAndWriteNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_location, load_node) when 73 then IndexOperatorWriteNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_required_constant, load_location, load_node) when 74 then IndexOrWriteNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_location, load_node) when 75 then IndexTargetNode.new(source, node_id, location, load_varuint, load_node, load_location, load_optional_node, load_location, load_optional_node) when 76 then InstanceVariableAndWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) when 77 then InstanceVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node, load_required_constant) when 78 then InstanceVariableOrWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) when 79 then InstanceVariableReadNode.new(source, node_id, location, load_varuint, load_required_constant) when 80 then InstanceVariableTargetNode.new(source, node_id, location, load_varuint, load_required_constant) when 81 then InstanceVariableWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_node, load_location) when 82 then IntegerNode.new(source, node_id, location, load_varuint, load_integer) when 83 then InterpolatedMatchLastLineNode.new(source, node_id, location, load_varuint, load_location, Array.new(load_varuint) { load_node }, load_location) when 84 then InterpolatedRegularExpressionNode.new(source, node_id, location, load_varuint, load_location, Array.new(load_varuint) { load_node }, load_location) when 85 then InterpolatedStringNode.new(source, node_id, location, load_varuint, load_optional_location, Array.new(load_varuint) { load_node }, load_optional_location) when 86 then InterpolatedSymbolNode.new(source, node_id, location, load_varuint, load_optional_location, Array.new(load_varuint) { load_node }, load_optional_location) when 87 then InterpolatedXStringNode.new(source, node_id, location, load_varuint, load_location, Array.new(load_varuint) { load_node }, load_location) when 88 then ItLocalVariableReadNode.new(source, node_id, location, load_varuint) when 89 then ItParametersNode.new(source, node_id, location, load_varuint) when 90 then KeywordHashNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }) when 91 then KeywordRestParameterNode.new(source, node_id, location, load_varuint, load_optional_constant, load_optional_location, load_location) when 92 then LambdaNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_required_constant }, load_location, load_location, load_location, load_optional_node, load_optional_node) when 93 then LocalVariableAndWriteNode.new(source, node_id, location, load_varuint, load_location, load_location, load_node, load_required_constant, load_varuint) when 94 then LocalVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_location, load_location, load_node, load_required_constant, load_required_constant, load_varuint) when 95 then LocalVariableOrWriteNode.new(source, node_id, location, load_varuint, load_location, load_location, load_node, load_required_constant, load_varuint) when 96 then LocalVariableReadNode.new(source, node_id, location, load_varuint, load_required_constant, load_varuint) when 97 then LocalVariableTargetNode.new(source, node_id, location, load_varuint, load_required_constant, load_varuint) when 98 then LocalVariableWriteNode.new(source, node_id, location, load_varuint, load_required_constant, load_varuint, load_location, load_node, load_location) when 99 then MatchLastLineNode.new(source, node_id, location, load_varuint, load_location, load_location, load_location, load_string) when 100 then MatchPredicateNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) when 101 then MatchRequiredNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) when 102 then MatchWriteNode.new(source, node_id, location, load_varuint, load_node, Array.new(load_varuint) { load_node }) when 103 then MissingNode.new(source, node_id, location, load_varuint) when 104 then ModuleNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_required_constant }, load_location, load_node, load_optional_node, load_location, load_required_constant) when 105 then MultiTargetNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location) when 106 then MultiWriteNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, load_location, load_node) when 107 then NextNode.new(source, node_id, location, load_varuint, load_optional_node, load_location) when 108 then NilNode.new(source, node_id, location, load_varuint) when 109 then NoKeywordsParameterNode.new(source, node_id, location, load_varuint, load_location, load_location) when 110 then NumberedParametersNode.new(source, node_id, location, load_varuint, io.getbyte) when 111 then NumberedReferenceReadNode.new(source, node_id, location, load_varuint, load_varuint) when 112 then OptionalKeywordParameterNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_node) when 113 then OptionalParameterNode.new(source, node_id, location, load_varuint, load_required_constant, load_location, load_location, load_node) when 114 then OrNode.new(source, node_id, location, load_varuint, load_node, load_node, load_location) when 115 then ParametersNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, Array.new(load_varuint) { load_node }, load_optional_node, load_optional_node) when 116 then ParenthesesNode.new(source, node_id, location, load_varuint, load_optional_node, load_location, load_location) when 117 then PinnedExpressionNode.new(source, node_id, location, load_varuint, load_node, load_location, load_location, load_location) when 118 then PinnedVariableNode.new(source, node_id, location, load_varuint, load_node, load_location) when 119 then PostExecutionNode.new(source, node_id, location, load_varuint, load_optional_node, load_location, load_location, load_location) when 120 then PreExecutionNode.new(source, node_id, location, load_varuint, load_optional_node, load_location, load_location, load_location) when 121 then ProgramNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_required_constant }, load_node) when 122 then RangeNode.new(source, node_id, location, load_varuint, load_optional_node, load_optional_node, load_location) when 123 then RationalNode.new(source, node_id, location, load_varuint, load_integer, load_integer) when 124 then RedoNode.new(source, node_id, location, load_varuint) when 125 then RegularExpressionNode.new(source, node_id, location, load_varuint, load_location, load_location, load_location, load_string) when 126 then RequiredKeywordParameterNode.new(source, node_id, location, load_varuint, load_required_constant, load_location) when 127 then RequiredParameterNode.new(source, node_id, location, load_varuint, load_required_constant) when 128 then RescueModifierNode.new(source, node_id, location, load_varuint, load_node, load_location, load_node) when 129 then RescueNode.new(source, node_id, location, load_varuint, load_location, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node) when 130 then RestParameterNode.new(source, node_id, location, load_varuint, load_optional_constant, load_optional_location, load_location) when 131 then RetryNode.new(source, node_id, location, load_varuint) when 132 then ReturnNode.new(source, node_id, location, load_varuint, load_location, load_optional_node) when 133 then SelfNode.new(source, node_id, location, load_varuint) when 134 then ShareableConstantNode.new(source, node_id, location, load_varuint, load_node) when 135 then SingletonClassNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_required_constant }, load_location, load_location, load_node, load_optional_node, load_location) when 136 then SourceEncodingNode.new(source, node_id, location, load_varuint) when 137 then SourceFileNode.new(source, node_id, location, load_varuint, load_string) when 138 then SourceLineNode.new(source, node_id, location, load_varuint) when 139 then SplatNode.new(source, node_id, location, load_varuint, load_location, load_optional_node) when 140 then StatementsNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }) when 141 then StringNode.new(source, node_id, location, load_varuint, load_optional_location, load_location, load_optional_location, load_string) when 142 then SuperNode.new(source, node_id, location, load_varuint, load_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node) when 143 then SymbolNode.new(source, node_id, location, load_varuint, load_optional_location, load_optional_location, load_optional_location, load_string) when 144 then TrueNode.new(source, node_id, location, load_varuint) when 145 then UndefNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node }, load_location) when 146 then UnlessNode.new(source, node_id, location, load_varuint, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_optional_location) when 147 then UntilNode.new(source, node_id, location, load_varuint, load_location, load_optional_location, load_node, load_optional_node) when 148 then WhenNode.new(source, node_id, location, load_varuint, load_location, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_node) when 149 then WhileNode.new(source, node_id, location, load_varuint, load_location, load_optional_location, load_node, load_optional_node) when 150 then XStringNode.new(source, node_id, location, load_varuint, load_location, load_location, load_location, load_string) when 151 then YieldNode.new(source, node_id, location, load_varuint, load_location, load_optional_location, load_optional_node, load_optional_location) end end
#load_nodes
[ GitHub ]# File 'lib/prism/serialize.rb', line 478
def load_nodes load_header load_encoding load_start_line load_line_offsets comments, magic_comments, data_loc, errors, warnings = @constant_pool_offset = load_uint32 @constant_pool = Array.new(load_varuint, nil) [load_node, comments, magic_comments, data_loc, errors, warnings] end
#load_optional_constant (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 603
def load_optional_constant index = load_varuint load_constant(index - 1) if index != 0 end
#load_optional_location (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 570
def load_optional_location load_location if io.getbyte != 0 end
#load_optional_location_object (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 574
def load_optional_location_object load_location_object if io.getbyte != 0 end
#load_optional_node (private)
[ GitHub ]#load_required_constant (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 599
def load_required_constant load_constant(load_varuint - 1) end
#load_result
[ GitHub ]# File 'lib/prism/serialize.rb', line 492
def load_result node, comments, magic_comments, data_loc, errors, warnings = load_nodes ParseResult.new(node, comments, magic_comments, data_loc, errors, warnings, @source) end
#load_start_line
[ GitHub ]# File 'lib/prism/serialize.rb', line 110
def load_start_line source.instance_variable_set :@start_line, load_varsint end
#load_string (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 550
def load_string type = io.getbyte case type when 1 input.byteslice(load_varuint, load_varuint).force_encoding(encoding) when 2 else raise "Unknown serialized string type: #{type}" end end
#load_tokens
[ GitHub ]# File 'lib/prism/serialize.rb', line 453
def load_tokens tokens = [] while type = TOKEN_TYPES.fetch(load_varuint) start = load_varuint length = load_varuint lex_state = load_varuint location = Location.new(@source, start, length) tokens << [Token.new(source, type, location.slice, location), lex_state] end tokens end
#load_tokens_result
[ GitHub ]# File 'lib/prism/serialize.rb', line 466
def load_tokens_result tokens = load_tokens encoding = load_encoding load_start_line load_line_offsets comments, magic_comments, data_loc, errors, warnings = tokens.each { |token,| token.value.force_encoding(encoding) } raise "Expected to consume all bytes while deserializing" unless @io.eof? LexResult.new(tokens, comments, magic_comments, data_loc, errors, warnings, @source) end
#load_uint32 (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 535
def load_uint32 io.read(4).unpack1("L") end
#load_varsint (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 515
def load_varsint n = load_varuint (n >> 1) ^ (-(n & 1)) end
#load_varuint (private)
variable-length integer using https://en.wikipedia.org/wiki/LEB128 This is also what protobuf uses: https://protobuf.dev/programming-guides/encoding/#varints
#load_warning_level (private)
[ GitHub ]# File 'lib/prism/serialize.rb', line 623
def load_warning_level level = io.getbyte case level when 0 :default when 1 :verbose else raise "Unknown level: #{level}" end end