New package header syntax

Implements the new package header syntax as discussed in Zulip [1].

package [Csv] {
    parser: "../parser/main.roc"
}

Old headers still parse and are automatically upgraded to the new
syntax by the formatter.

[1] 418444862
This commit is contained in:
Agus Zubiaga 2024-03-04 19:58:22 -03:00
parent 8dedd9f03c
commit e3b600c282
No known key found for this signature in database
16 changed files with 169 additions and 132 deletions

View file

@ -1 +1 @@
package "rtfeldman/blah" exposes [] packages {}
package [] {}

View file

@ -2,26 +2,10 @@ Module {
comments: [],
header: Package(
PackageHeader {
before_name: [],
name: @8-24 PackageName(
"rtfeldman/blah",
),
exposes: KeywordItem {
keyword: Spaces {
before: [],
item: ExposesKeyword,
after: [],
},
item: [],
},
packages: KeywordItem {
keyword: Spaces {
before: [],
item: PackagesKeyword,
after: [],
},
item: [],
},
before_exposes: [],
exposes: [],
before_packages: [],
packages: @11-13 [],
},
),
}

View file

@ -1 +1 @@
package "rtfeldman/blah" exposes [] packages {}
package [] {}

View file

@ -1,3 +1,3 @@
package "foo/barbaz"
exposes [Foo, Bar]
packages { foo: "./foo" }
package [Foo, Bar] {
foo: "./foo",
}

View file

@ -2,46 +2,36 @@ Module {
comments: [],
header: Package(
PackageHeader {
before_name: [],
name: @8-20 PackageName(
"foo/barbaz",
),
exposes: KeywordItem {
keyword: Spaces {
before: [
before_exposes: [],
exposes: [
@9-12 ModuleName(
"Foo",
),
@14-17 ModuleName(
"Bar",
),
],
before_packages: [],
packages: @19-39 [
@25-37 SpaceBefore(
SpaceAfter(
PackageEntry {
shorthand: "foo",
spaces_after_shorthand: [],
platform_marker: None,
package_name: @30-37 PackageName(
"./foo",
),
},
[
Newline,
],
),
[
Newline,
],
item: ExposesKeyword,
after: [],
},
item: [
@34-37 ModuleName(
"Foo",
),
@39-42 ModuleName(
"Bar",
),
],
},
packages: KeywordItem {
keyword: Spaces {
before: [
Newline,
],
item: PackagesKeyword,
after: [],
},
item: [
@59-71 PackageEntry {
shorthand: "foo",
spaces_after_shorthand: [],
platform_marker: None,
package_name: @64-71 PackageName(
"./foo",
),
},
],
},
),
],
},
),
}

View file

@ -1,3 +1,3 @@
package "foo/barbaz"
exposes [Foo, Bar]
packages { foo: "./foo" }
package [Foo, Bar] {
foo: "./foo"
}

View file

@ -4840,6 +4840,28 @@ mod test_fmt {
);
}
#[test]
fn old_style_package_header_is_upgraded() {
module_formats_to(
indoc!(
"
package \"csv\"
exposes [Csv]
packages {
parser: \"parser/main.roc\"
}
"
),
indoc!(
"
package [Csv] {
parser: \"parser/main.roc\",
}
"
),
);
}
#[test]
fn single_line_app() {
module_formats_same(indoc!(