class Dhallish::Ast::OptionalNode

Attributes

expression[RW]

expression should be a some value for prefix “Some” or a Type for prefix “None”

Public Class Methods

new(prefix, expression) click to toggle source
# File lib/ast.rb, line 328
def initialize(prefix, expression)
        @isSome = (prefix == "Some")
        @expression = expression
end

Public Instance Methods

compute_type(ctx) click to toggle source
# File lib/ast.rb, line 333
def compute_type(ctx)
        if @isSome
                elem_type = @expression.compute_type ctx
        else
                type_type = @expression.compute_type ctx
                assert ("Expression after \"None\" not a type") { type_type.is_a? Types::Type }
                elem_type = type_type.metadata
        end
        Types::Optional.new elem_type
end
evaluate(ctx) click to toggle source
# File lib/ast.rb, line 344
def evaluate(ctx)
        if @isSome
                @expression.evaluate(ctx)
        else
                nil
        end
end