pub struct SourceMapper<'a> {
pub main_path: ModulePath,
pub resolver: &'a dyn Resolver,
pub mangler: &'a dyn Mangler,
pub sourcemap: RefCell<BasicSourceMap>,
}Expand description
Generate a SourceMap by keeping track of loaded files and mangled identifiers.
SourceMapper is a proxy that implements Mangler and Resolver. To record a
SourceMap, invoke the compiler with this instance as both the mangler and the
resolver. Call SourceMapper::finish to get the final SourceMap once finished
recording.
Fields§
§main_path: ModulePath§resolver: &'a dyn Resolver§mangler: &'a dyn Mangler§sourcemap: RefCell<BasicSourceMap>Implementations§
Source§impl<'a> SourceMapper<'a>
impl<'a> SourceMapper<'a>
Sourcepub fn new(
main_path: ModulePath,
resolver: &'a dyn Resolver,
mangler: &'a dyn Mangler,
) -> Self
pub fn new( main_path: ModulePath, resolver: &'a dyn Resolver, mangler: &'a dyn Mangler, ) -> Self
Create a new SourceMapper from a mangler and a resolver.
Sourcepub fn finish(self) -> BasicSourceMap
pub fn finish(self) -> BasicSourceMap
Consume this and return a BasicSourceMap.
Trait Implementations§
Source§impl<'a> Mangler for SourceMapper<'a>
impl<'a> Mangler for SourceMapper<'a>
Source§fn mangle(&self, path: &ModulePath, item: &str) -> String
fn mangle(&self, path: &ModulePath, item: &str) -> String
Turn an import path and item name into a mangled WGSL identifier.
Source§fn unmangle(&self, mangled: &str) -> Option<(ModulePath, String)>
fn unmangle(&self, mangled: &str) -> Option<(ModulePath, String)>
Reverse the
Mangler::mangle operation. Implementing this is optional.Source§fn mangle_types(
&self,
item: &str,
variant: u32,
types: &[TypeExpression],
) -> String
fn mangle_types( &self, item: &str, variant: u32, types: &[TypeExpression], ) -> String
Used for generics. Is experimental. Implementing is optional.
Source§impl<'a> Resolver for SourceMapper<'a>
impl<'a> Resolver for SourceMapper<'a>
Source§fn resolve_source(
&self,
path: &ModulePath,
) -> Result<Cow<'a, str>, ResolveError>
fn resolve_source( &self, path: &ModulePath, ) -> Result<Cow<'a, str>, ResolveError>
Try to resolve a source file identified by a module path.
Source§fn display_name(&self, path: &ModulePath) -> Option<String>
fn display_name(&self, path: &ModulePath) -> Option<String>
Get the display name of the module path. Implementing this is optional.
Source§fn fs_path(&self, path: &ModulePath) -> Result<PathBuf, ResolveError>
fn fs_path(&self, path: &ModulePath) -> Result<PathBuf, ResolveError>
Get the filesystem path of the module path. Implementing this is optional.
Source§fn canonical_path(&self, path: &ModulePath) -> ModulePath
fn canonical_path(&self, path: &ModulePath) -> ModulePath
Get the canonical form of a module path.
Source§fn module_path(&self, _fs_path: &Path) -> Result<ModulePath, ResolveError>
fn module_path(&self, _fs_path: &Path) -> Result<ModulePath, ResolveError>
Get the module path of the filesystem path. Implementing this is optional.
Auto Trait Implementations§
impl<'a> !Freeze for SourceMapper<'a>
impl<'a> !RefUnwindSafe for SourceMapper<'a>
impl<'a> !Send for SourceMapper<'a>
impl<'a> !Sync for SourceMapper<'a>
impl<'a> !UnwindSafe for SourceMapper<'a>
impl<'a> Unpin for SourceMapper<'a>
impl<'a> UnsafeUnpin for SourceMapper<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more