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
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
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