pub enum ReferenceKind {
Local,
TopLevel(QualName),
Foreign(QualName, PackageName, usize),
Constructor(Constructor),
Specialised(usize),
InstanceMember(Box<InstanceMember>),
}Expand description
Which of the things a Reference names: a name bound in the declaration, a
declaration of this module, one of another, or a constructor — and, once specialise
has run, a specialisation or an instance’s member, which are what a name that
asked for an instance becomes.
Variants§
Local
A parameter of the enclosing declaration, or a name one of its patterns bound. It is in scope for that declaration alone.
TopLevel(QualName)
A declaration of the module being compiled, named in full.
Foreign(QualName, PackageName, usize)
A declaration of another module, named in full: a named import of whatever that module emitted.
The typer checks it against the type that module’s interface declares. The
PackageName is the package that declares the module, which is where the
import is read from: a module’s name says which file it is within its package,
and the package says which package’s directory holds that file.
The usize is the declaration’s arity, read from the same interface
(Interface::arities): the count a call has
to supply to be a direct call, exactly as Declaration::arity is for a
TopLevel name. A module exports each declaration as the
plain n-ary function it emitted, so an importer needs the arity to call it.
Constructor(Constructor)
A union constructor: it builds a tagged value rather than reading a binding.
Specialised(usize)
A Specialisation of this module: a place in Module::specialisations. What
specialise makes of a reference to a constrained declaration, and of a class
member whose instance has a context.
InstanceMember(Box<InstanceMember>)
A member of an instance that has no context (InstanceMember). What
specialise makes of a class member used at a type that has one.
Boxed: it names a class, a head and a module in full, and would make every other kind of reference as large.
Trait Implementations§
Source§impl Clone for ReferenceKind
impl Clone for ReferenceKind
Source§fn clone(&self) -> ReferenceKind
fn clone(&self) -> ReferenceKind
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more