Crate mun_hir[][src]

HIR provides high-level, object-oriented access to Mun code. It is constructed by first parsing Mun code with the mun_syntax crate and then it is lowered into HIR constructs, names are resolved, and type checking is performed. HIR is the input for both the compiler as well as the language server.

Re-exports

pub use salsa;
pub use crate::diagnostics::Diagnostic;
pub use crate::diagnostics::DiagnosticSink;

Modules

diagnostics
fixture
line_index
semantics

Semantics provides the means to get semantic information from syntax trees that are not necessarily part of the compilation process. This is useful when you want to extract information from a modified source file in the context of the current state.

with_fixture

Macros

name
ty_app

Structs

ApplicationTy

A nominal type with (maybe 0) type parameters. This might be a primitive type like bool, a struct, tuple, function pointer, reference or several other things.

AstDatabaseStorage

Representative struct for the query group.

Body

The body of an item (function, const etc.).

DefDatabaseStorage

Representative struct for the query group.

ExprScopes
Field

A field of a Struct.

FileId

FileId is an integer which uniquely identifies a file. File paths are messy and system-dependent, so most of the code should work directly with FileId, without inspecting the path. The mapping between FileId and path and SourceRoot is constant. A file rename is represented as a pair of deletion/creation.

FloatTy
Function
FunctionData
HirDatabaseStorage

Representative struct for the query group.

InFile

InFile<T> stores a value of T inside a particular file/syntax tree.

InferenceResult

The result of type inference: A mapping from expressions and patterns to types.

IntTy
InternDatabaseStorage

Representative struct for the query group.

ItemLoc
Module
ModuleId

Represents an id of a module inside a package.

Name

Name is a wrapper around string, which is used in hir for both references and declarations.

Package

A Package describes a single package.

PackageId

Represents the id of a single package, all packages have a unique id, the main package and all dependent packages.

PackageSet

Represents information about a set of packages in a compilation

Path
PerNs
RecordLitField
Resolver
SourceDatabaseStorage

Representative struct for the query group.

SourceRoot
SourceRootId

Files are grouped into source roots. A source root is a directory on the file systems which is watched for changes. Typically it corresponds to a single library.

Struct
TypeAlias

Enums

ArithOp
BinaryOp
CallableDef
CmpOp
Expr
FloatBitness
IntBitness
Literal
LogicOp
ModuleDef
Ordering
Pat

Similar to ast::PatKind

PathKind
Signedness
Statement
StructMemoryKind

Represents the kind of memory management a struct uses.

Ty

This should be cheap to clone.

TypeCtor

A type constructor or type name: this might be something like the primitive type bool, a struct like Vec, or things like function pointers or tuples.

TypeNs
UnaryOp
ValueNs
Visibility

Visibility of an item, modules resolved.

Traits

AstDatabase

The AstDatabase provides queries that transform text from the SourceDatabase into an Abstract Syntax Tree (AST).

DefDatabase
HasSource

A trait implemented for items that can be related back to their source. The HasSource::source method returns the source location of its instance.

HasVisibility
HirDatabase
HirDisplay
InternDatabase

The InternDatabase maps certain datastructures to ids. These ids refer to instances of concepts like a Function, Struct or TypeAlias in a semi-stable way.

ResolveBitness
SourceDatabase

Database which stores all significant input facts: source code and project model.

Upcast

Functions

resolver_for_expr

Returns a resolver applicable to the specified expression

resolver_for_scope

Type Definitions

ExprId
PatId