#lang typed/racket/base
(require "arity-structs.rkt"
         "expression-structs.rkt"
         "lexical-structs.rkt"
         "kernel-primitives.rkt"
	 "il-structs.rkt")
(provide (all-defined-out))
(define-type CompileTimeEnvironment (Listof CompileTimeEnvironmentEntry))
(define-type CompileTimeEnvironmentEntry 
  (U '?               Prefix           StaticallyKnownLam          ModuleVariable              PrimitiveKernelValue
     Const
     ))
(define-struct: StaticallyKnownLam ([name : (U Symbol LamPositionalName)]
                                    [entry-point : Symbol]
                                    [arity : Arity]) #:transparent)
(define-struct: Analysis ([ht : (HashTable Expression CompileTimeEnvironmentEntry)]))
(: empty-analysis (-> Analysis))
(define (empty-analysis)
  (make-Analysis (make-hash)))