class Dhall::TypeChecker::RecordProjectionByExpression

Public Class Methods

new(projection) click to toggle source
# File lib/dhall/typecheck.rb, line 661
def initialize(projection)
        @selector = projection.selector.normalize
        @project_by_expression = projection
        @project_by_keys = Dhall::RecordProjection.for(
                @project_by_expression.record,
                @selector.keys
        )
end

Public Instance Methods

annotate(context) click to toggle source
# File lib/dhall/typecheck.rb, line 670
def annotate(context)
        TypeChecker.assert @selector, Dhall::RecordType,
                           "RecordProjectionByExpression on #{@selector.class}"

        TypeChecker.assert_type @project_by_keys, @selector,
                                "Type doesn't match #{@selector}",
                                context: context

        Dhall::TypeAnnotation.new(
                value: @project_by_expression,
                type:  @selector
        )
end