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