Skip to main content

ScopeI

export interface ScopeI {
  allowShadowing: boolean
  assertAllUsed(onlyIfStrict?: boolean): void
  get(
    name: string | Word,
    dryRun?: boolean
  ): EvalEntity | ScopeI
  getBuiltinNamespace(name: Word): undefined | EvalEntity & {
    asNamed: Named
    name: string
    path: string
  } & {
    asNamespace: Namespace
    namespaceMembers: NamespaceMembers
  }
  getScope(name: Word):  | ScopeI
  has(name: Word): boolean
  isStrict: boolean
  isUsed(name: Word): boolean
  loopTypes(callback: (
    name: string,
    type: Type
  ) => void): void
  remove(name: Word): void
  set(
    name: Word,
    value: EvalEntity | ScopeI
  ): void
  values: [Word, EvalEntity | ScopeI, boolean]
}

Properties

allowShadowing

allowShadowing: boolean

assertAllUsed

assertAllUsed(onlyIfStrict?: boolean): void
Asserts that all named values are used. Throws an error if some are unused, unless they start with "_" Check is only run if we are in strict mode

get

get(
  name: string | Word,
  dryRun?: boolean
): EvalEntity | ScopeI

getBuiltinNamespace

getBuiltinNamespace(name: Word): undefined | EvalEntity & {
  asNamed: Named
  name: string
  path: string
} & {
  asNamespace: Namespace
  namespaceMembers: NamespaceMembers
}

getScope

getScope(name: Word):  | ScopeI

has

has(name: Word): boolean
Checks if scope contains a name

isStrict

isStrict: boolean

isUsed

isUsed(name: Word): boolean

loopTypes

loopTypes(callback: (
  name: string,
  type: Type
) => void): void

remove

remove(name: Word): void

set

set(
  name: Word,
  value: EvalEntity | ScopeI
): void
Sets a named value. Throws an error if not unique

values

values: [Word, EvalEntity | ScopeI, boolean]
Used by top-scope to loop over all the statements