xfrp/typecheck

XFRP type checking and type environments.

Types

FuncType = tuple[argTypes: seq[XfrpType], retType: XfrpType]
  Source Edit
XfrpTypeEnv = object
  fenv: XfrpFuncTypeEnv
  venv: XfrpVarTypeEnv
  Source Edit

Procs

proc initXfrpTypeEnv(): XfrpTypeEnv {...}{.raises: [], tags: [].}
  Source Edit
proc addFunc(typeEnv: var XfrpTypeEnv; id: XfrpId; argTypes: seq[XfrpType];
             retType: XfrpType) {...}{.raises: [], tags: [].}
  Source Edit
proc addVar(typeEnv: var XfrpTypeEnv; id: XfrpId; ty: XfrpType) {...}{.raises: [],
    tags: [].}
  Source Edit
proc hasVarOrAdd(typeEnv: var XfrpTypeEnv; id: XfrpId; ty: XfrpType): bool {...}{.
    raises: [], tags: [].}
  Source Edit
proc getFuncType(typeEnv: XfrpTypeEnv; id: XfrpId): FuncType {...}{.
    raises: [KeyError], tags: [].}
  Source Edit
proc getVarType(typeEnv: XfrpTypeEnv; id: XfrpId): XfrpType {...}{.
    raises: [KeyError], tags: [].}
  Source Edit
proc `$`(typeEnv: XfrpTypeEnv): string {...}{.raises: [], tags: [].}
  Source Edit
proc xfrpTypeOf(env: XfrpTypeEnv; lit: WithCodeInfo[XfrpLiteral]): XfrpType {...}{.
    raises: [], tags: [].}
  Source Edit
proc xfrpTypeOf(env: XfrpTypeEnv; exp: WithCodeInfo[XfrpExpr]): XfrpType {...}{.
    raises: [XfrpTypeError, KeyError], tags: [].}
  Source Edit
proc makeTypeEnvironmentFromEnvironment(env: XfrpEnv): XfrpTypeEnv {...}{.
    raises: [KeyError, XfrpTypeError], tags: [].}
  Source Edit