Class: Y2R::AST::YCP::Const

Inherits:
Node
  • Object
show all
Defined in:
lib/y2r/ast/ycp.rb

Instance Method Summary collapse

Methods inherited from Node

#always_returns?, #compile_as_copy_if_needed, #compile_statements, #compile_statements_inside_block, #compile_statements_with_whitespace, #creates_local_scope?, #needs_copy?, #optimize_last_statement, #optimize_next, #optimize_return, #remove_duplicate_imports, transfers_comments

Instance Method Details

#compile(context) ⇒ Object



1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
# File 'lib/y2r/ast/ycp.rb', line 1086

def compile(context)
  case type
    when :void
      Ruby::Literal.new(:value => nil)
    when :bool
      case value
        when "true"
          Ruby::Literal.new(:value => true)
        when "false"
          Ruby::Literal.new(:value => false)
        else
          raise "Unknown boolean value: #{value.inspect}."
      end
    when :int
      Ruby::Literal.new(:value => value.to_i)
    when :float
      Ruby::Literal.new(:value => value.sub(/\.$/, ".0").to_f)
    when :symbol
      Ruby::Literal.new(:value => value.to_sym)
    when :string
      Ruby::Literal.new(:value => value)
    when :path
      Ruby::MethodCall.new(
        :receiver => nil,
        :name     => "path",
        :args     => [Ruby::Literal.new(:value => value)],
        :block    => nil,
        :parens   => true
      )
    else
      raise "Unknown const type: #{type.inspect}."
  end
end

#never_nil?Boolean

Returns:

  • (Boolean)


1122
1123
1124
# File 'lib/y2r/ast/ycp.rb', line 1122

def never_nil?
  return type != :void
end