Sha256: eeac7f1800bfddf8b3509dea3e09df04b843273c1e6668c886bc84bbafcc94f1
Contents?: true
Size: 1.5 KB
Versions: 3
Compression:
Stored size: 1.5 KB
Contents
# frozen_string_literal: true require "parser/builders/default" require_relative "meta" module Parser # Add RubyNext specific builder methods module Builders::Next def method_ref(receiver, dot_t, selector_t) n(:meth_ref, [ receiver, value(selector_t).to_sym ], send_map(receiver, dot_t, selector_t, nil, [], nil)) end def def_endless_method(def_t, name_t, args, assignment_t, body) n(:def_e, [ value(name_t).to_sym, args, body ], endless_definition_map(def_t, nil, name_t, assignment_t, body)) end def def_endless_singleton(def_t, definee, dot_t, name_t, args, assignment_t, body) return unless validate_definee(definee) n(:defs_e, [ definee, value(name_t).to_sym, args, body ], endless_definition_map(def_t, dot_t, name_t, assignment_t, body)) end def endless_definition_map(keyword_t, operator_t, name_t, assignment_t, body_e) body_l = body_e.loc.expression Source::Map::EndlessDefinition.new(loc(keyword_t), loc(operator_t), loc(name_t), loc(assignment_t), body_l) end private def validate_definee(definee) case definee.type when :int, :str, :dstr, :sym, :dsym, :regexp, :array, :hash diagnostic :error, :singleton_literal, nil, definee.loc.expression false else true end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ruby-next-parser-2.8.0.3 | lib/parser/ruby-next/builder.rb |
ruby-next-parser-2.8.0.2 | lib/parser/ruby-next/builder.rb |
ruby-next-parser-2.8.0.1 | lib/parser/ruby-next/builder.rb |