class Minjs::ECMA262::StReturn

Base class of ECMA262 ReturnStatement element.

@see www.ecma-international.org/ecma-262 ECMA262 12.9

Attributes

exp[R]

Public Class Methods

new(exp = nil) click to toggle source
# File lib/minjs/ecma262/statement.rb, line 1089
def initialize(exp = nil)
  @exp = exp
end

Public Instance Methods

==(obj) click to toggle source

compare object

# File lib/minjs/ecma262/statement.rb, line 1124
def ==(obj)
  self.class == obj.class and @exp == obj.exp
end
add_paren() click to toggle source

add parenthesis if need

# File lib/minjs/ecma262/statement.rb, line 1147
def add_paren
  self
end
deep_dup() click to toggle source

duplicate object @see Base#deep_dup

# File lib/minjs/ecma262/statement.rb, line 1095
def deep_dup
  self.class.new(exp ? exp.deep_dup : nil)
end
remove_paren() click to toggle source

remove parenthesis if possible

# File lib/minjs/ecma262/statement.rb, line 1139
def remove_paren
  if @exp.kind_of? ExpParen
    @exp = @exp.val
  end
  self
end
replace(from, to) click to toggle source

Replaces children object. @see Base#replace

# File lib/minjs/ecma262/statement.rb, line 1101
def replace(from, to)
  if from .eql? @exp
    @exp = to
  end
end
to_js(options = {}) click to toggle source

Returns a ECMAScript string containg the representation of element. @see Base#to_js

# File lib/minjs/ecma262/statement.rb, line 1130
def to_js(options = {})
  if @exp
    concat options, :return, @exp, ";"
  else
    concat options, :return, ";"
  end
end
to_return() click to toggle source

Converts block to ‘return statement’ and returns it

# File lib/minjs/ecma262/statement.rb, line 1119
def to_return
  self
end
to_return?() click to toggle source

return true if statement can convert to return statement.

# File lib/minjs/ecma262/statement.rb, line 1114
def to_return?
  true
end
traverse(parent) { |parent, self| ... } click to toggle source

Traverses this children and itself with given block.

# File lib/minjs/ecma262/statement.rb, line 1108
def traverse(parent, &block)
  @exp.traverse(self, &block) if @exp
  yield parent, self
end