mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-29 14:54:47 +00:00
Make provides a Collection
This commit is contained in:
parent
d67b6c50b1
commit
df89fe7dd6
4 changed files with 14 additions and 17 deletions
|
@ -2642,7 +2642,7 @@ fn parse_header<'a>(
|
||||||
opt_shorthand,
|
opt_shorthand,
|
||||||
header_src,
|
header_src,
|
||||||
packages,
|
packages,
|
||||||
exposes: header.provides.into_bump_slice(),
|
exposes: header.provides.items,
|
||||||
imports: header.imports.items,
|
imports: header.imports.items,
|
||||||
to_platform: Some(header.to.value.clone()),
|
to_platform: Some(header.to.value.clone()),
|
||||||
};
|
};
|
||||||
|
@ -3410,7 +3410,7 @@ fn fabricate_pkg_config_module<'a>(
|
||||||
module_timing: ModuleTiming,
|
module_timing: ModuleTiming,
|
||||||
) -> (ModuleId, Msg<'a>) {
|
) -> (ModuleId, Msg<'a>) {
|
||||||
let provides: &'a [Located<ExposesEntry<'a, &'a str>>] =
|
let provides: &'a [Located<ExposesEntry<'a, &'a str>>] =
|
||||||
header.provides.clone().into_bump_slice();
|
header.provides.items;
|
||||||
|
|
||||||
let info = PlatformHeaderInfo {
|
let info = PlatformHeaderInfo {
|
||||||
filename,
|
filename,
|
||||||
|
|
|
@ -83,7 +83,7 @@ pub struct AppHeader<'a> {
|
||||||
pub name: Loc<StrLiteral<'a>>,
|
pub name: Loc<StrLiteral<'a>>,
|
||||||
pub packages: Collection<'a, Loc<PackageEntry<'a>>>,
|
pub packages: Collection<'a, Loc<PackageEntry<'a>>>,
|
||||||
pub imports: Collection<'a, Loc<ImportsEntry<'a>>>,
|
pub imports: Collection<'a, Loc<ImportsEntry<'a>>>,
|
||||||
pub provides: Vec<'a, Loc<ExposesEntry<'a, &'a str>>>,
|
pub provides: Collection<'a, Loc<ExposesEntry<'a, &'a str>>>,
|
||||||
pub to: Loc<To<'a>>,
|
pub to: Loc<To<'a>>,
|
||||||
|
|
||||||
// Potential comments and newlines - these will typically all be empty.
|
// Potential comments and newlines - these will typically all be empty.
|
||||||
|
@ -148,7 +148,7 @@ pub struct PlatformHeader<'a> {
|
||||||
pub exposes: Vec<'a, Loc<ExposesEntry<'a, ModuleName<'a>>>>,
|
pub exposes: Vec<'a, Loc<ExposesEntry<'a, ModuleName<'a>>>>,
|
||||||
pub packages: Collection<'a, Loc<PackageEntry<'a>>>,
|
pub packages: Collection<'a, Loc<PackageEntry<'a>>>,
|
||||||
pub imports: Collection<'a, Loc<ImportsEntry<'a>>>,
|
pub imports: Collection<'a, Loc<ImportsEntry<'a>>>,
|
||||||
pub provides: Vec<'a, Loc<ExposesEntry<'a, &'a str>>>,
|
pub provides: Collection<'a, Loc<ExposesEntry<'a, &'a str>>>,
|
||||||
pub effects: Effects<'a>,
|
pub effects: Effects<'a>,
|
||||||
|
|
||||||
// Potential comments and newlines - these will typically all be empty.
|
// Potential comments and newlines - these will typically all be empty.
|
||||||
|
|
|
@ -270,7 +270,7 @@ fn platform_header<'a>() -> impl Parser<'a, PlatformHeader<'a>, EHeader<'a>> {
|
||||||
let (_, ((before_imports, after_imports), imports), state) =
|
let (_, ((before_imports, after_imports), imports), state) =
|
||||||
specialize(EHeader::Imports, imports()).parse(arena, state)?;
|
specialize(EHeader::Imports, imports()).parse(arena, state)?;
|
||||||
|
|
||||||
let (_, ((before_provides, after_provides), (provides, provides_final_comments)), state) =
|
let (_, ((before_provides, after_provides), provides), state) =
|
||||||
specialize(EHeader::Provides, provides_without_to()).parse(arena, state)?;
|
specialize(EHeader::Provides, provides_without_to()).parse(arena, state)?;
|
||||||
|
|
||||||
let (_, effects, state) = specialize(EHeader::Effects, effects()).parse(arena, state)?;
|
let (_, effects, state) = specialize(EHeader::Effects, effects()).parse(arena, state)?;
|
||||||
|
@ -303,7 +303,7 @@ fn platform_header<'a>() -> impl Parser<'a, PlatformHeader<'a>, EHeader<'a>> {
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct ProvidesTo<'a> {
|
struct ProvidesTo<'a> {
|
||||||
entries: Vec<'a, Located<ExposesEntry<'a, &'a str>>>,
|
entries: Collection<'a, Located<ExposesEntry<'a, &'a str>>>,
|
||||||
to: Located<To<'a>>,
|
to: Located<To<'a>>,
|
||||||
|
|
||||||
before_provides_keyword: &'a [CommentOrNewline<'a>],
|
before_provides_keyword: &'a [CommentOrNewline<'a>],
|
||||||
|
@ -342,7 +342,7 @@ fn provides_to<'a>() -> impl Parser<'a, ProvidesTo<'a>, EProvides<'a>> {
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|(
|
|(
|
||||||
((before_provides_keyword, after_provides_keyword), (entries, final_comments)),
|
((before_provides_keyword, after_provides_keyword), entries),
|
||||||
((before_to_keyword, after_to_keyword), to),
|
((before_to_keyword, after_to_keyword), to),
|
||||||
)| {
|
)| {
|
||||||
ProvidesTo {
|
ProvidesTo {
|
||||||
|
@ -362,10 +362,7 @@ fn provides_without_to<'a>() -> impl Parser<
|
||||||
'a,
|
'a,
|
||||||
(
|
(
|
||||||
(&'a [CommentOrNewline<'a>], &'a [CommentOrNewline<'a>]),
|
(&'a [CommentOrNewline<'a>], &'a [CommentOrNewline<'a>]),
|
||||||
(
|
Collection<'a, Located<ExposesEntry<'a, &'a str>>>,
|
||||||
Vec<'a, Located<ExposesEntry<'a, &'a str>>>,
|
|
||||||
&'a [CommentOrNewline<'a>],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
EProvides<'a>,
|
EProvides<'a>,
|
||||||
> {
|
> {
|
||||||
|
|
|
@ -3078,7 +3078,7 @@ mod test_parse {
|
||||||
let arena = Bump::new();
|
let arena = Bump::new();
|
||||||
let packages = Collection::empty();
|
let packages = Collection::empty();
|
||||||
let imports = Collection::empty();
|
let imports = Collection::empty();
|
||||||
let provides = Vec::new_in(&arena);
|
let provides = Collection::empty();
|
||||||
let module_name = StrLiteral::PlainLine("test-app");
|
let module_name = StrLiteral::PlainLine("test-app");
|
||||||
let header = AppHeader {
|
let header = AppHeader {
|
||||||
name: Located::new(0, 0, 4, 14, module_name),
|
name: Located::new(0, 0, 4, 14, module_name),
|
||||||
|
@ -3118,7 +3118,7 @@ mod test_parse {
|
||||||
let arena = Bump::new();
|
let arena = Bump::new();
|
||||||
let packages = Collection::empty();
|
let packages = Collection::empty();
|
||||||
let imports = Collection::empty();
|
let imports = Collection::empty();
|
||||||
let provides = Vec::new_in(&arena);
|
let provides = Collection::empty();
|
||||||
let module_name = StrLiteral::PlainLine("test-app");
|
let module_name = StrLiteral::PlainLine("test-app");
|
||||||
let header = AppHeader {
|
let header = AppHeader {
|
||||||
before_header: &[],
|
before_header: &[],
|
||||||
|
@ -3170,7 +3170,7 @@ mod test_parse {
|
||||||
let loc_import = Located::new(2, 2, 14, 25, import);
|
let loc_import = Located::new(2, 2, 14, 25, import);
|
||||||
let imports = Collection::with_items(arena.alloc([loc_import]));
|
let imports = Collection::with_items(arena.alloc([loc_import]));
|
||||||
let provide_entry = Located::new(3, 3, 15, 24, Exposed("quicksort"));
|
let provide_entry = Located::new(3, 3, 15, 24, Exposed("quicksort"));
|
||||||
let provides = bumpalo::vec![in &arena; provide_entry];
|
let provides = Collection::with_items(arena.alloc([provide_entry]));
|
||||||
let module_name = StrLiteral::PlainLine("quicksort");
|
let module_name = StrLiteral::PlainLine("quicksort");
|
||||||
|
|
||||||
let header = AppHeader {
|
let header = AppHeader {
|
||||||
|
@ -3255,7 +3255,7 @@ mod test_parse {
|
||||||
let loc_import = Located::new(2, 6, 14, 5, import);
|
let loc_import = Located::new(2, 6, 14, 5, import);
|
||||||
let imports = Collection::with_items(arena.alloc([loc_import]));
|
let imports = Collection::with_items(arena.alloc([loc_import]));
|
||||||
let provide_entry = Located::new(7, 7, 15, 24, Exposed("quicksort"));
|
let provide_entry = Located::new(7, 7, 15, 24, Exposed("quicksort"));
|
||||||
let provides = bumpalo::vec![in &arena; provide_entry];
|
let provides = Collection::with_items(arena.alloc([provide_entry]));
|
||||||
let module_name = StrLiteral::PlainLine("quicksort");
|
let module_name = StrLiteral::PlainLine("quicksort");
|
||||||
|
|
||||||
let header = AppHeader {
|
let header = AppHeader {
|
||||||
|
@ -3343,7 +3343,7 @@ mod test_parse {
|
||||||
exposes: Vec::new_in(&arena),
|
exposes: Vec::new_in(&arena),
|
||||||
packages: Collection::empty(),
|
packages: Collection::empty(),
|
||||||
imports: Collection::empty(),
|
imports: Collection::empty(),
|
||||||
provides: Vec::new_in(&arena),
|
provides: Collection::empty(),
|
||||||
effects,
|
effects,
|
||||||
after_platform_keyword: &[],
|
after_platform_keyword: &[],
|
||||||
before_requires: &[],
|
before_requires: &[],
|
||||||
|
@ -3387,7 +3387,7 @@ mod test_parse {
|
||||||
let packages = Collection::with_items(arena.alloc([loc_pkg_entry]));
|
let packages = Collection::with_items(arena.alloc([loc_pkg_entry]));
|
||||||
let imports = Collection::empty();
|
let imports = Collection::empty();
|
||||||
let provide_entry = Located::new(5, 5, 15, 26, Exposed("mainForHost"));
|
let provide_entry = Located::new(5, 5, 15, 26, Exposed("mainForHost"));
|
||||||
let provides = bumpalo::vec![in &arena; provide_entry];
|
let provides = Collection::with_items(arena.alloc([provide_entry]));
|
||||||
let effects = Effects {
|
let effects = Effects {
|
||||||
effect_type_name: "Effect",
|
effect_type_name: "Effect",
|
||||||
effect_shortname: "fx",
|
effect_shortname: "fx",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue