mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-26 13:29:12 +00:00
Merge pull request #6708 from roc-lang/module-params-syntax
Parse and format module params
This commit is contained in:
commit
e5ea6dc461
46 changed files with 989 additions and 162 deletions
|
@ -11,8 +11,9 @@ use roc_parse::{
|
|||
WhenBranch,
|
||||
},
|
||||
header::{
|
||||
AppHeader, ExposedName, HostedHeader, ImportsEntry, ModuleHeader, ModuleName, PackageEntry,
|
||||
PackageHeader, PackageName, PlatformHeader, PlatformRequires, ProvidesTo, To, TypedIdent,
|
||||
AppHeader, ExposedName, HostedHeader, ImportsEntry, ModuleHeader, ModuleName, ModuleParams,
|
||||
PackageEntry, PackageHeader, PackageName, PlatformHeader, PlatformRequires, ProvidesTo, To,
|
||||
TypedIdent,
|
||||
},
|
||||
ident::{Accessor, UppercaseIdent},
|
||||
};
|
||||
|
@ -213,12 +214,41 @@ impl IterTokens for Header<'_> {
|
|||
impl IterTokens for ModuleHeader<'_> {
|
||||
fn iter_tokens<'a>(&self, arena: &'a Bump) -> BumpVec<'a, Loc<Token>> {
|
||||
let Self {
|
||||
before_exposes: _,
|
||||
after_keyword: _,
|
||||
params,
|
||||
exposes,
|
||||
interface_imports: _,
|
||||
} = self;
|
||||
|
||||
exposes.iter_tokens(arena)
|
||||
params
|
||||
.iter_tokens(arena)
|
||||
.into_iter()
|
||||
.chain(exposes.iter_tokens(arena))
|
||||
.collect_in(arena)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> IterTokens for Option<T>
|
||||
where
|
||||
T: IterTokens,
|
||||
{
|
||||
fn iter_tokens<'a>(&self, arena: &'a Bump) -> BumpVec<'a, Loc<Token>> {
|
||||
match self {
|
||||
Some(params) => params.iter_tokens(arena),
|
||||
None => bumpvec![in arena;],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl IterTokens for ModuleParams<'_> {
|
||||
fn iter_tokens<'a>(&self, arena: &'a Bump) -> BumpVec<'a, Loc<Token>> {
|
||||
let Self {
|
||||
params,
|
||||
before_arrow: _,
|
||||
after_arrow: _,
|
||||
} = self;
|
||||
|
||||
params.iter_tokens(arena)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue