Struct Module

Source
pub struct Module<T> {
    pub name: String,
    pub file_path: PathBuf,
    pub ast: Ast<T>,
    pub exports: TypeScope,
    pub imports: Vec<(String, String)>,
}

Fields§

§name: String§file_path: PathBuf

The absolute path of this module in the file system.

§ast: Ast<T>§exports: TypeScope

A TypeScope containing all exported members of this module.

§imports: Vec<(String, String)>

A list of imported module. The first item in each tuple is the path under which imported module is specified in this module, the second item specifies the absolute path of the imported module in the file system. This is used to convert absolute modules to relative imports.

Implementations§

Source§

impl<T> Module<T>

Source

pub fn resolve(&self, var_name: &impl ToString) -> String

Resolve a variable name from this module.

Source

pub fn convert_imports_to_local_names( &self, modules: &Modules<()>, ) -> Modules<()>

Convert the modules currently stored with their absolute path to modules stored with a relative path (relative to this module). This is needed to determine the correct module to import while typechecking.

Source§

impl Module<()>

Source

pub fn type_check( &self, other_modules: &Modules<()>, ) -> Result<Module<TypeInfo>, Box<dyn Error>>

Trait Implementations§

Source§

impl<T: Clone> Clone for Module<T>

Source§

fn clone(&self) -> Module<T>

Returns a duplicate of the value. Read more
1.0.0 · Source§

const fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for Module<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: Default> Default for Module<T>

Source§

fn default() -> Module<T>

Returns the “default value” for a type. Read more
Source§

impl<T: PartialEq> PartialEq for Module<T>

Source§

fn eq(&self, other: &Module<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

const fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: Eq> Eq for Module<T>

Source§

impl<T> StructuralPartialEq for Module<T>

Auto Trait Implementations§

§

impl<T> Freeze for Module<T>

§

impl<T> !RefUnwindSafe for Module<T>

§

impl<T> !Send for Module<T>

§

impl<T> !Sync for Module<T>

§

impl<T> Unpin for Module<T>
where T: Unpin,

§

impl<T> !UnwindSafe for Module<T>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.