class TypeProf::Core::AST::ArrayPatternNode
Attributes
posts[R]
requireds[R]
rest[R]
rest_pattern[R]
Public Class Methods
new(raw_node, lenv)
click to toggle source
Calls superclass method
TypeProf::Core::AST::Node::new
# File typeprof-0.30.1/lib/typeprof/core/ast/pattern.rb, line 4 def initialize(raw_node, lenv) super(raw_node, lenv) @requireds = raw_node.requireds.map {|raw_pat| AST.create_pattern_node(raw_pat, lenv) } @rest = !!raw_node.rest @rest_pattern = raw_node.rest && raw_node.rest.expression ? AST.create_pattern_node(raw_node.rest.expression, lenv) : nil @posts = raw_node.posts.map {|raw_pat| AST.create_pattern_node(raw_pat, lenv) } end
Public Instance Methods
attrs(= { rest: })
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/pattern.rb, line 14 def attrs = { rest: } def subnodes = { requireds:, rest_pattern:, posts: } def install0(genv) @requireds.each do |pat| pat.install(genv) end @rest_pattern.install(genv) if @rest_pattern @posts.each do |pat| pat.install(genv) end end end class HashPatternNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @keys = raw_node.elements.map {|raw_assoc| raw_assoc.key.value.to_sym } @values = raw_node.elements.map {|raw_assoc| AST.create_pattern_node(raw_assoc.value, lenv) } @rest = !!raw_node.rest @rest_pattern = raw_node.rest && raw_node.rest.value ? AST.create_pattern_node(raw_node.rest.value, lenv) : nil end attr_reader :keys, :values, :rest, :rest_pattern def attrs = { keys:, rest: } def subnodes = { values:, rest_pattern: } def install0(genv) @values.each do |pat| pat.install(genv) end @rest_pattern.install(genv) if @rest_pattern end end class FindPatternNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @left = raw_node.left ? AST.create_pattern_node(raw_node.left.expression, lenv) : nil @requireds = raw_node.requireds.map {|raw_elem| AST.create_pattern_node(raw_elem, lenv) } @right = raw_node.right ? AST.create_pattern_node(raw_node.right.expression, lenv) : nil end attr_reader :left, :requireds, :right def subnodes = { left:, requireds:, right: } def install0(genv) @left.install(genv) if @left @requireds.each do |pat| pat.install(genv) end @right.install(genv) if @right end end class AltPatternNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @left = AST.create_pattern_node(raw_node.left, lenv) @right = AST.create_pattern_node(raw_node.right, lenv) end attr_reader :left, :right def subnodes = { left:, right: } def install0(genv) @left.install(genv) @right.install(genv) end end class CapturePatternNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @value = AST.create_pattern_node(raw_node.value, lenv) @target = AST.create_pattern_node(raw_node.target, lenv) end attr_reader :value, :target def subnodes = { value:, target: } def install0(genv) @value.install(genv) @target.install(genv) end end class IfPatternNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @cond = AST.create_node(raw_node.predicate, lenv) raise if raw_node.statements.type != :statements_node raise if raw_node.statements.body.size != 1 @body = AST.create_pattern_node(raw_node.statements.body[0], lenv) raise if raw_node.subsequent end attr_reader :cond, :body def subnodes = { cond:, body: } def install0(genv) @cond.install(genv) @body.install(genv) end end class PinnedPatternNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @expr = AST.create_node(raw_node.type == :pinned_variable_node ? raw_node.variable : raw_node.expression, lenv) end attr_reader :expr def subnodes = { expr: } def install0(genv) @expr.install(genv
install0(genv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/pattern.rb, line 17 def install0(genv) @requireds.each do |pat| pat.install(genv) end @rest_pattern.install(genv) if @rest_pattern @posts.each do |pat| pat.install(genv) end end
subnodes(= { requireds:, rest_pattern:, posts: })
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/pattern.rb, line 15 def subnodes = { requireds:, rest_pattern:, posts: } def install0(genv) @requireds.each do |pat| pat.install(genv) end @rest_pattern.install(genv) if @rest_pattern @posts.each do |pat| pat.install(genv) end end end