Merge branch 'main' into typecheck-module-params

This commit is contained in:
Agus Zubiaga 2024-08-12 22:27:16 -03:00
commit b451e69b20
No known key found for this signature in database
53 changed files with 1814 additions and 1790 deletions

View file

@ -1,8 +1,8 @@
use bumpalo::Bump;
use roc_fmt::{annotation::Formattable, module::fmt_module};
use roc_fmt::{annotation::Formattable, header::fmt_header};
use roc_parse::{
ast::{Defs, Expr, Malformed, Module},
module::parse_module_defs,
ast::{Defs, Expr, FullAst, Header, Malformed, SpacesBefore},
header::parse_module_defs,
parser::{Parser, SyntaxError},
remove_spaces::RemoveSpaces,
state::State,
@ -70,16 +70,13 @@ impl InputOwned {
/// Output AST of a successful parse
#[derive(Debug, Clone)]
pub enum Output<'a> {
Header(Module<'a>),
Header(SpacesBefore<'a, Header<'a>>),
ModuleDefs(Defs<'a>),
Expr(Expr<'a>),
Full {
header: Module<'a>,
module_defs: Defs<'a>,
},
Full(FullAst<'a>),
}
impl<'a> Output<'a> {
@ -88,7 +85,7 @@ impl<'a> Output<'a> {
let mut buf = Buf::new_in(&arena);
match self {
Output::Header(header) => {
fmt_module(&mut buf, header);
fmt_header(&mut buf, header);
buf.fmt_end_of_file();
InputOwned::Header(buf.as_str().to_string())
}
@ -101,12 +98,9 @@ impl<'a> Output<'a> {
expr.format(&mut buf, 0);
InputOwned::Expr(buf.as_str().to_string())
}
Output::Full {
header,
module_defs,
} => {
fmt_module(&mut buf, header);
module_defs.format(&mut buf, 0);
Output::Full(full) => {
fmt_header(&mut buf, &full.header);
full.defs.format(&mut buf, 0);
buf.fmt_end_of_file();
InputOwned::Full(buf.as_str().to_string())
}
@ -129,10 +123,7 @@ impl<'a> Malformed for Output<'a> {
Output::Header(header) => header.is_malformed(),
Output::ModuleDefs(defs) => defs.is_malformed(),
Output::Expr(expr) => expr.is_malformed(),
Output::Full {
header,
module_defs,
} => header.is_malformed() || module_defs.is_malformed(),
Output::Full(full) => full.is_malformed(),
}
}
}
@ -143,13 +134,7 @@ impl<'a> RemoveSpaces<'a> for Output<'a> {
Output::Header(header) => Output::Header(header.remove_spaces(arena)),
Output::ModuleDefs(defs) => Output::ModuleDefs(defs.remove_spaces(arena)),
Output::Expr(expr) => Output::Expr(expr.remove_spaces(arena)),
Output::Full {
header,
module_defs,
} => Output::Full {
header: header.remove_spaces(arena),
module_defs: module_defs.remove_spaces(arena),
},
Output::Full(full) => Output::Full(full.remove_spaces(arena)),
}
}
}
@ -185,18 +170,19 @@ impl<'a> Input<'a> {
let state = State::new(input.as_bytes());
let min_indent = 0;
let (_, header, state) = roc_parse::module::header()
let (_, header, state) = roc_parse::header::header()
.parse(arena, state.clone(), min_indent)
.map_err(|(_, fail)| SyntaxError::Header(fail))?;
let (header, defs) = header.upgrade_header_imports(arena);
let (new_header, defs) = header.item.upgrade_header_imports(arena);
let header = SpacesBefore {
before: header.before,
item: new_header,
};
let module_defs = parse_module_defs(arena, state, defs)?;
let defs = parse_module_defs(arena, state, defs)?;
Ok(Output::Full {
header,
module_defs,
})
Ok(Output::Full(FullAst { header, defs }))
}
}
}

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: App(
SpacesBefore {
before: [],
item: App(
AppHeader {
before_provides: [],
provides: [],

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Hosted(
SpacesBefore {
before: [],
item: Hosted(
HostedHeader {
before_name: [],
name: @7-10 ModuleName(

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Module(
SpacesBefore {
before: [],
item: Module(
ModuleHeader {
after_keyword: [],
params: None,

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Package(
SpacesBefore {
before: [],
item: Package(
PackageHeader {
before_exposes: [],
exposes: [],

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Platform(
SpacesBefore {
before: [],
item: Platform(
PlatformHeader {
before_name: [],
name: @9-25 PackageName(

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: App(
SpacesBefore {
before: [],
item: App(
AppHeader {
before_provides: [],
provides: [

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: App(
SpacesBefore {
before: [],
item: App(
AppHeader {
before_provides: [],
provides: [

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Platform(
SpacesBefore {
before: [],
item: Platform(
PlatformHeader {
before_name: [],
name: @9-14 PackageName(

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: App(
SpacesBefore {
before: [],
item: App(
AppHeader {
before_provides: [],
provides: [],

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Module(
SpacesBefore {
before: [],
item: Module(
ModuleHeader {
after_keyword: [],
params: None,

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Module(
SpacesBefore {
before: [],
item: Module(
ModuleHeader {
after_keyword: [],
params: Some(

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Module(
SpacesBefore {
before: [],
item: Module(
ModuleHeader {
after_keyword: [],
params: None,

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Module(
SpacesBefore {
before: [],
item: Module(
ModuleHeader {
after_keyword: [],
params: Some(

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Module(
SpacesBefore {
before: [],
item: Module(
ModuleHeader {
after_keyword: [],
params: Some(

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Module(
SpacesBefore {
before: [],
item: Module(
ModuleHeader {
after_keyword: [],
params: Some(

View file

@ -1,81 +1,83 @@
Full {
header: Module {
comments: [],
header: App(
AppHeader {
before_provides: [],
provides: [
@5-9 ExposedName(
"main",
),
],
before_packages: [],
packages: @11-134 [
@13-132 SpaceAfter(
PackageEntry {
shorthand: "pf",
spaces_after_shorthand: [
Full(
FullAst {
header: SpacesBefore {
before: [],
item: App(
AppHeader {
before_provides: [],
provides: [
@5-9 ExposedName(
"main",
),
],
before_packages: [],
packages: @11-134 [
@13-132 SpaceAfter(
PackageEntry {
shorthand: "pf",
spaces_after_shorthand: [
Newline,
],
platform_marker: None,
package_name: @17-132 PackageName(
"https://github.com/roc-lang/basic-cli/releases/download/0.12.0/Lb8EgiejTUzbggO2HVVuPJFkwvvsfW6LojkLR20kTVE.tar.br",
),
},
[
Newline,
],
platform_marker: None,
package_name: @17-132 PackageName(
"https://github.com/roc-lang/basic-cli/releases/download/0.12.0/Lb8EgiejTUzbggO2HVVuPJFkwvvsfW6LojkLR20kTVE.tar.br",
),
},
),
],
old_imports: None,
old_provides_to_new_package: None,
},
),
},
defs: Defs {
tags: [
Index(2147483648),
],
regions: [
@136-183,
],
space_before: [
Slice(start = 0, length = 2),
],
space_after: [
Slice(start = 2, length = 1),
],
spaces: [
Newline,
Newline,
Newline,
],
type_defs: [],
value_defs: [
Body(
@136-140 Identifier {
ident: "main",
},
@147-183 SpaceBefore(
Apply(
@147-158 Var {
module_name: "Stdout",
ident: "line",
},
[
@159-183 Str(
PlainLine(
"I'm a Roc application!",
),
),
],
Space,
),
[
Newline,
],
),
],
old_imports: None,
old_provides_to_new_package: None,
},
),
},
module_defs: Defs {
tags: [
Index(2147483648),
],
regions: [
@136-183,
],
space_before: [
Slice(start = 0, length = 2),
],
space_after: [
Slice(start = 2, length = 1),
],
spaces: [
Newline,
Newline,
Newline,
],
type_defs: [],
value_defs: [
Body(
@136-140 Identifier {
ident: "main",
},
@147-183 SpaceBefore(
Apply(
@147-158 Var {
module_name: "Stdout",
ident: "line",
},
[
@159-183 Str(
PlainLine(
"I'm a Roc application!",
),
),
],
Space,
),
[
Newline,
],
),
),
],
],
},
},
}
)

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Hosted(
SpacesBefore {
before: [],
item: Hosted(
HostedHeader {
before_name: [],
name: @7-10 ModuleName(

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Package(
SpacesBefore {
before: [],
item: Package(
PackageHeader {
before_exposes: [],
exposes: [

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Platform(
SpacesBefore {
before: [],
item: Platform(
PlatformHeader {
before_name: [],
name: @9-21 PackageName(

View file

@ -1,117 +1,119 @@
Full {
header: Module {
comments: [],
header: App(
AppHeader {
before_provides: [
Newline,
],
provides: [
@143-147 ExposedName(
"main",
),
],
before_packages: [
Newline,
],
packages: @20-88 Collection {
items: [
@44-81 SpaceBefore(
PackageEntry {
shorthand: "cli",
spaces_after_shorthand: [],
platform_marker: Some(
[],
),
package_name: @49-81 PackageName(
"../basic-cli/platform/main.roc",
),
},
[
Newline,
],
),
],
final_comments: [
Full(
FullAst {
header: SpacesBefore {
before: [],
item: App(
AppHeader {
before_provides: [
Newline,
],
},
old_imports: None,
old_provides_to_new_package: None,
},
),
},
module_defs: Defs {
tags: [
Index(2147483648),
Index(2147483649),
],
regions: [
@111-121,
@157-187,
],
space_before: [
Slice(start = 0, length = 3),
Slice(start = 6, length = 2),
],
space_after: [
Slice(start = 3, length = 3),
Slice(start = 8, length = 2),
],
spaces: [
Newline,
Newline,
Newline,
Newline,
Newline,
Newline,
Newline,
Newline,
Newline,
Newline,
],
type_defs: [],
value_defs: [
ModuleImport(
ModuleImport {
before_name: [],
name: @111-121 ImportedModuleName {
package: Some(
"cli",
provides: [
@143-147 ExposedName(
"main",
),
name: ModuleName(
"Stdout",
),
},
params: None,
alias: None,
exposed: None,
},
),
Body(
@157-161 Identifier {
ident: "main",
},
@168-187 SpaceBefore(
Apply(
@168-179 Var {
module_name: "Stdout",
ident: "line",
},
[
@180-187 Str(
PlainLine(
"hello",
),
],
before_packages: [
Newline,
],
packages: @20-88 Collection {
items: [
@44-81 SpaceBefore(
PackageEntry {
shorthand: "cli",
spaces_after_shorthand: [],
platform_marker: Some(
[],
),
package_name: @49-81 PackageName(
"../basic-cli/platform/main.roc",
),
},
[
Newline,
],
),
],
Space,
),
[
Newline,
],
),
final_comments: [
Newline,
],
},
old_imports: None,
old_provides_to_new_package: None,
},
),
],
},
defs: Defs {
tags: [
Index(2147483648),
Index(2147483649),
],
regions: [
@111-121,
@157-187,
],
space_before: [
Slice(start = 0, length = 3),
Slice(start = 6, length = 2),
],
space_after: [
Slice(start = 3, length = 3),
Slice(start = 8, length = 2),
],
spaces: [
Newline,
Newline,
Newline,
Newline,
Newline,
Newline,
Newline,
Newline,
Newline,
Newline,
],
type_defs: [],
value_defs: [
ModuleImport(
ModuleImport {
before_name: [],
name: @111-121 ImportedModuleName {
package: Some(
"cli",
),
name: ModuleName(
"Stdout",
),
},
params: None,
alias: None,
exposed: None,
},
),
Body(
@157-161 Identifier {
ident: "main",
},
@168-187 SpaceBefore(
Apply(
@168-179 Var {
module_name: "Stdout",
ident: "line",
},
[
@180-187 Str(
PlainLine(
"hello",
),
),
],
Space,
),
[
Newline,
],
),
),
],
},
},
}
)

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Module(
SpacesBefore {
before: [],
item: Module(
ModuleHeader {
after_keyword: [],
params: None,

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: App(
SpacesBefore {
before: [],
item: App(
AppHeader {
before_provides: [],
provides: [

View file

@ -1,6 +1,6 @@
Module {
comments: [],
header: Platform(
SpacesBefore {
before: [],
item: Platform(
PlatformHeader {
before_name: [],
name: @9-21 PackageName(

View file

@ -1,71 +1,73 @@
Full {
header: Module {
comments: [],
header: App(
AppHeader {
before_provides: [],
provides: [
@6-10 ExposedName(
"main",
),
],
before_packages: [],
packages: @13-37 [
@15-35 PackageEntry {
shorthand: "pf",
spaces_after_shorthand: [],
platform_marker: Some(
[],
),
package_name: @29-35 PackageName(
"path",
),
},
],
old_imports: None,
old_provides_to_new_package: None,
},
),
},
module_defs: Defs {
tags: [
Index(2147483648),
],
regions: [
@39-65,
],
space_before: [
Slice(start = 0, length = 2),
],
space_after: [
Slice(start = 2, length = 1),
],
spaces: [
Newline,
Newline,
Newline,
],
type_defs: [],
value_defs: [
Body(
@39-43 Identifier {
ident: "main",
},
@46-65 Apply(
@46-57 Var {
module_name: "Stdout",
ident: "line",
},
[
@58-65 Str(
PlainLine(
"Hello",
),
Full(
FullAst {
header: SpacesBefore {
before: [],
item: App(
AppHeader {
before_provides: [],
provides: [
@6-10 ExposedName(
"main",
),
],
Space,
),
before_packages: [],
packages: @13-37 [
@15-35 PackageEntry {
shorthand: "pf",
spaces_after_shorthand: [],
platform_marker: Some(
[],
),
package_name: @29-35 PackageName(
"path",
),
},
],
old_imports: None,
old_provides_to_new_package: None,
},
),
],
},
defs: Defs {
tags: [
Index(2147483648),
],
regions: [
@39-65,
],
space_before: [
Slice(start = 0, length = 2),
],
space_after: [
Slice(start = 2, length = 1),
],
spaces: [
Newline,
Newline,
Newline,
],
type_defs: [],
value_defs: [
Body(
@39-43 Identifier {
ident: "main",
},
@46-65 Apply(
@46-57 Var {
module_name: "Stdout",
ident: "line",
},
[
@58-65 Str(
PlainLine(
"Hello",
),
),
],
Space,
),
),
],
},
},
}
)

View file

@ -1,209 +1,211 @@
Full {
header: Module {
comments: [],
header: App(
AppHeader {
before_provides: [],
provides: [
@5-9 ExposedName(
"main",
),
],
before_packages: [],
packages: @11-55 Collection {
items: [
@15-52 SpaceBefore(
PackageEntry {
shorthand: "cli",
spaces_after_shorthand: [],
platform_marker: None,
package_name: @20-52 PackageName(
"../basic-cli/platform/main.roc",
),
},
[
Newline,
],
Full(
FullAst {
header: SpacesBefore {
before: [],
item: App(
AppHeader {
before_provides: [],
provides: [
@5-9 ExposedName(
"main",
),
],
final_comments: [
Newline,
],
},
old_imports: None,
old_provides_to_new_package: None,
},
),
},
module_defs: Defs {
tags: [
Index(2147483648),
Index(2147483649),
],
regions: [
@57-74,
@76-220,
],
space_before: [
Slice(start = 0, length = 2),
Slice(start = 2, length = 2),
],
space_after: [
Slice(start = 2, length = 0),
Slice(start = 4, length = 2),
],
spaces: [
Newline,
Newline,
Newline,
Newline,
Newline,
Newline,
],
type_defs: [],
value_defs: [
ModuleImport(
ModuleImport {
before_name: [],
name: @64-74 ImportedModuleName {
package: Some(
"cli",
),
name: ModuleName(
"Stdout",
),
},
params: None,
alias: None,
exposed: None,
},
),
Body(
@76-80 Identifier {
ident: "main",
},
@120-220 SpaceBefore(
Defs(
Defs {
tags: [
Index(2147483648),
Index(2147483649),
],
regions: [
@120-133,
@162-205,
],
space_before: [
Slice(start = 0, length = 0),
Slice(start = 0, length = 3),
],
space_after: [
Slice(start = 0, length = 0),
Slice(start = 3, length = 0),
],
spaces: [
Newline,
Newline,
LineComment(
" what about this?",
),
],
type_defs: [],
value_defs: [
Stmt(
@120-133 BinOps(
[
(
@120-125 Str(
PlainLine(
"Foo",
),
),
@126-128 Pizza,
),
],
@129-132 TaskAwaitBang(
Var {
module_name: "A",
ident: "x",
},
),
before_packages: [],
packages: @11-55 Collection {
items: [
@15-52 SpaceBefore(
PackageEntry {
shorthand: "cli",
spaces_after_shorthand: [],
platform_marker: None,
package_name: @20-52 PackageName(
"../basic-cli/platform/main.roc",
),
),
Stmt(
@162-205 BinOps(
[
(
@162-167 Str(
PlainLine(
"Bar",
),
),
@168-170 Pizza,
),
],
@171-205 Apply(
@171-174 TaskAwaitBang(
Var {
module_name: "B",
ident: "y",
},
),
[
@185-205 SpaceBefore(
Record(
[
@187-203 RequiredValue(
@187-193 "config",
[],
@195-203 Str(
PlainLine(
"config",
),
),
),
],
),
[
Newline,
],
),
],
Space,
),
),
),
],
},
@211-220 SpaceBefore(
Apply(
@211-214 Var {
module_name: "C",
ident: "z",
},
[
@215-220 Str(
PlainLine(
"Bar",
Newline,
],
),
],
final_comments: [
Newline,
],
},
old_imports: None,
old_provides_to_new_package: None,
},
),
},
defs: Defs {
tags: [
Index(2147483648),
Index(2147483649),
],
regions: [
@57-74,
@76-220,
],
space_before: [
Slice(start = 0, length = 2),
Slice(start = 2, length = 2),
],
space_after: [
Slice(start = 2, length = 0),
Slice(start = 4, length = 2),
],
spaces: [
Newline,
Newline,
Newline,
Newline,
Newline,
Newline,
],
type_defs: [],
value_defs: [
ModuleImport(
ModuleImport {
before_name: [],
name: @64-74 ImportedModuleName {
package: Some(
"cli",
),
name: ModuleName(
"Stdout",
),
},
params: None,
alias: None,
exposed: None,
},
),
Body(
@76-80 Identifier {
ident: "main",
},
@120-220 SpaceBefore(
Defs(
Defs {
tags: [
Index(2147483648),
Index(2147483649),
],
regions: [
@120-133,
@162-205,
],
space_before: [
Slice(start = 0, length = 0),
Slice(start = 0, length = 3),
],
space_after: [
Slice(start = 0, length = 0),
Slice(start = 3, length = 0),
],
spaces: [
Newline,
Newline,
LineComment(
" what about this?",
),
],
type_defs: [],
value_defs: [
Stmt(
@120-133 BinOps(
[
(
@120-125 Str(
PlainLine(
"Foo",
),
),
@126-128 Pizza,
),
],
@129-132 TaskAwaitBang(
Var {
module_name: "A",
ident: "x",
},
),
),
),
Stmt(
@162-205 BinOps(
[
(
@162-167 Str(
PlainLine(
"Bar",
),
),
@168-170 Pizza,
),
],
@171-205 Apply(
@171-174 TaskAwaitBang(
Var {
module_name: "B",
ident: "y",
},
),
[
@185-205 SpaceBefore(
Record(
[
@187-203 RequiredValue(
@187-193 "config",
[],
@195-203 Str(
PlainLine(
"config",
),
),
),
],
),
[
Newline,
],
),
],
Space,
),
),
),
],
Space,
},
@211-220 SpaceBefore(
Apply(
@211-214 Var {
module_name: "C",
ident: "z",
},
[
@215-220 Str(
PlainLine(
"Bar",
),
),
],
Space,
),
[
Newline,
Newline,
],
),
[
Newline,
Newline,
],
),
[
Newline,
LineComment(
" is this a valid statement?",
),
],
),
[
Newline,
LineComment(
" is this a valid statement?",
),
],
),
),
],
],
},
},
}
)

View file

@ -1,131 +1,133 @@
Full {
header: Module {
comments: [],
header: App(
AppHeader {
before_provides: [
Newline,
],
provides: [
@74-78 ExposedName(
"main",
),
],
before_packages: [
Newline,
],
packages: @6-44 Collection {
items: [
@30-37 SpaceBefore(
PackageEntry {
shorthand: "cli",
spaces_after_shorthand: [],
platform_marker: Some(
[],
),
package_name: @35-37 PackageName(
"",
),
},
[
Newline,
],
),
],
final_comments: [
Full(
FullAst {
header: SpacesBefore {
before: [],
item: App(
AppHeader {
before_provides: [
Newline,
],
},
old_imports: None,
old_provides_to_new_package: None,
},
),
},
module_defs: Defs {
tags: [
Index(2147483648),
],
regions: [
@88-202,
],
space_before: [
Slice(start = 0, length = 2),
],
space_after: [
Slice(start = 2, length = 1),
],
spaces: [
Newline,
Newline,
Newline,
],
type_defs: [],
value_defs: [
Body(
@88-92 Identifier {
ident: "main",
},
@100-202 SpaceBefore(
BinOps(
[
(
@100-114 SpaceAfter(
Str(
PlainLine(
"jq --version",
),
provides: [
@74-78 ExposedName(
"main",
),
],
before_packages: [
Newline,
],
packages: @6-44 Collection {
items: [
@30-37 SpaceBefore(
PackageEntry {
shorthand: "cli",
spaces_after_shorthand: [],
platform_marker: Some(
[],
),
[
Newline,
],
),
@123-125 Pizza,
),
(
@126-133 SpaceAfter(
Var {
module_name: "Cmd",
ident: "new",
},
[
Newline,
],
),
@142-144 Pizza,
),
(
@145-155 SpaceAfter(
Var {
module_name: "Cmd",
ident: "status",
},
[
Newline,
],
),
@164-166 Pizza,
package_name: @35-37 PackageName(
"",
),
},
[
Newline,
],
),
],
@167-202 Apply(
@167-178 TaskAwaitBang(
Var {
module_name: "Task",
ident: "mapErr",
},
),
final_comments: [
Newline,
],
},
old_imports: None,
old_provides_to_new_package: None,
},
),
},
defs: Defs {
tags: [
Index(2147483648),
],
regions: [
@88-202,
],
space_before: [
Slice(start = 0, length = 2),
],
space_after: [
Slice(start = 2, length = 1),
],
spaces: [
Newline,
Newline,
Newline,
],
type_defs: [],
value_defs: [
Body(
@88-92 Identifier {
ident: "main",
},
@100-202 SpaceBefore(
BinOps(
[
@180-202 Tag(
"UnableToCheckJQVersion",
(
@100-114 SpaceAfter(
Str(
PlainLine(
"jq --version",
),
),
[
Newline,
],
),
@123-125 Pizza,
),
(
@126-133 SpaceAfter(
Var {
module_name: "Cmd",
ident: "new",
},
[
Newline,
],
),
@142-144 Pizza,
),
(
@145-155 SpaceAfter(
Var {
module_name: "Cmd",
ident: "status",
},
[
Newline,
],
),
@164-166 Pizza,
),
],
Space,
@167-202 Apply(
@167-178 TaskAwaitBang(
Var {
module_name: "Task",
ident: "mapErr",
},
),
[
@180-202 Tag(
"UnableToCheckJQVersion",
),
],
Space,
),
),
[
Newline,
],
),
[
Newline,
],
),
),
],
],
},
},
}
)

View file

@ -5,10 +5,10 @@ extern crate indoc;
mod test_fmt {
use bumpalo::Bump;
use roc_fmt::def::fmt_defs;
use roc_fmt::module::fmt_module;
use roc_fmt::header::fmt_header;
use roc_fmt::Buf;
use roc_parse::ast::{Defs, Module};
use roc_parse::module::{self, parse_module_defs};
use roc_parse::ast::{Defs, Header, SpacesBefore};
use roc_parse::header::{self, parse_module_defs};
use roc_parse::state::State;
use roc_test_utils::assert_multiline_str_eq;
use roc_test_utils_dir::workspace_root;
@ -32,11 +32,11 @@ mod test_fmt {
fn fmt_module_and_defs<'a>(
arena: &Bump,
src: &str,
module: &Module<'a>,
header: &SpacesBefore<'a, Header<'a>>,
state: State<'a>,
buf: &mut Buf<'_>,
) {
fmt_module(buf, module);
fmt_header(buf, header);
match parse_module_defs(arena, state, Defs::default()) {
Ok(loc_defs) => {
@ -61,7 +61,7 @@ mod test_fmt {
let src = src.trim();
let expected = expected.trim();
match module::parse_header(&arena, State::new(src.as_bytes())) {
match header::parse_header(&arena, State::new(src.as_bytes())) {
Ok((actual, state)) => {
use roc_parse::remove_spaces::RemoveSpaces;
@ -71,7 +71,7 @@ mod test_fmt {
let output = buf.as_str().trim();
let (reparsed_ast, state) = module::parse_header(&arena, State::new(output.as_bytes())).unwrap_or_else(|err| {
let (reparsed_ast, state) = header::parse_header(&arena, State::new(output.as_bytes())).unwrap_or_else(|err| {
panic!(
"After formatting, the source code no longer parsed!\n\nParse error was: {err:?}\n\nThe code that failed to parse:\n\n{output}\n\n"
);