Skip to content

Commit 10edf2c

Browse files
authored
Rewatch: warn about deprecated package specs es6/es6-global (#8146)
* Rewatch: warn about deprecated package specs es6/es6-global * Fix tests * Use "esmodule" in (most) rewatch tests * fix test * CHANGELOG # Conflicts: # CHANGELOG.md
1 parent e60b5cd commit 10edf2c

File tree

16 files changed

+104
-21
lines changed

16 files changed

+104
-21
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
- Fix rewatch swallowing parse warnings (%todo). https://github.com/rescript-lang/rescript/pull/8135
2727
- Rewatch: log errors and warnings to `stderr`. https://github.com/rescript-lang/rescript/pull/8147 https://github.com/rescript-lang/rescript/pull/8148
28+
- Rewatch: warn about deprecated package specs `es6`/`es6-global`. https://github.com/rescript-lang/rescript/pull/8146
2829

2930
#### :memo: Documentation
3031

rewatch/src/build.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,12 @@ fn log_config_warnings(build_state: &BuildCommandState) {
428428
config::DeprecationWarning::BscFlags => {
429429
log_deprecated_config_field(&package.name, "bsc-flags", "compiler-flags");
430430
}
431+
config::DeprecationWarning::PackageSpecsEs6 => {
432+
log_deprecated_package_specs_module("es6");
433+
}
434+
config::DeprecationWarning::PackageSpecsEs6Global => {
435+
log_deprecated_package_specs_module("es6-global");
436+
}
431437
},
432438
);
433439

@@ -454,6 +460,11 @@ fn log_deprecated_config_field(package_name: &str, field_name: &str, new_field_n
454460
eprintln!("\n{}", style(warning).yellow());
455461
}
456462

463+
fn log_deprecated_package_specs_module(module_name: &str) {
464+
let warning = format!("deprecated: Option \"{module_name}\" is deprecated. Use \"esmodule\" instead.");
465+
eprintln!("\n{}", style(warning).yellow());
466+
}
467+
457468
fn log_unsupported_config_field(package_name: &str, field_name: &str) {
458469
let warning = format!(
459470
"The field '{field_name}' found in the package config of '{package_name}' is not supported by ReScript 12's new build system."

rewatch/src/config.rs

Lines changed: 74 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,8 @@ pub enum DeprecationWarning {
224224
BsDependencies,
225225
BsDevDependencies,
226226
BscFlags,
227+
PackageSpecsEs6,
228+
PackageSpecsEs6Global,
227229
}
228230

229231
#[derive(Debug, Clone, Eq, PartialEq, Hash)]
@@ -746,6 +748,23 @@ impl Config {
746748
self.deprecation_warnings.push(DeprecationWarning::BscFlags);
747749
}
748750

751+
let (has_es6, has_es6_global) = match &self.package_specs {
752+
None => (false, false),
753+
Some(OneOrMore::Single(spec)) => (spec.module == "es6", spec.module == "es6-global"),
754+
Some(OneOrMore::Multiple(specs)) => (
755+
specs.iter().any(|spec| spec.module == "es6"),
756+
specs.iter().any(|spec| spec.module == "es6-global"),
757+
),
758+
};
759+
if has_es6 {
760+
self.deprecation_warnings
761+
.push(DeprecationWarning::PackageSpecsEs6);
762+
}
763+
if has_es6_global {
764+
self.deprecation_warnings
765+
.push(DeprecationWarning::PackageSpecsEs6Global);
766+
}
767+
749768
Ok(())
750769
}
751770
}
@@ -992,7 +1011,7 @@ pub mod tests {
9921011
},
9931012
"package-specs": [
9941013
{
995-
"module": "es6",
1014+
"module": "esmodule",
9961015
"in-source": true
9971016
}
9981017
],
@@ -1017,7 +1036,7 @@ pub mod tests {
10171036
},
10181037
"package-specs": [
10191038
{
1020-
"module": "es6",
1039+
"module": "esmodule",
10211040
"in-source": true
10221041
}
10231042
],
@@ -1042,7 +1061,7 @@ pub mod tests {
10421061
},
10431062
"package-specs": [
10441063
{
1045-
"module": "es6",
1064+
"module": "esmodule",
10461065
"in-source": true
10471066
}
10481067
],
@@ -1067,7 +1086,7 @@ pub mod tests {
10671086
},
10681087
"package-specs": [
10691088
{
1070-
"module": "es6",
1089+
"module": "esmodule",
10711090
"in-source": true
10721091
}
10731092
],
@@ -1081,6 +1100,55 @@ pub mod tests {
10811100
assert!(config.get_deprecations().is_empty());
10821101
}
10831102

1103+
#[test]
1104+
fn test_package_specs_es6_global_deprecation() {
1105+
let json = r#"
1106+
{
1107+
"name": "testrepo",
1108+
"sources": {
1109+
"dir": "src",
1110+
"subdirs": true
1111+
},
1112+
"package-specs": [
1113+
{
1114+
"module": "es6-global",
1115+
"in-source": true
1116+
}
1117+
],
1118+
"suffix": ".mjs"
1119+
}
1120+
"#;
1121+
1122+
let config = Config::new_from_json_string(json).expect("a valid json string");
1123+
assert_eq!(
1124+
config.get_deprecations(),
1125+
[DeprecationWarning::PackageSpecsEs6Global]
1126+
);
1127+
}
1128+
1129+
#[test]
1130+
fn test_package_specs_es6_deprecation() {
1131+
let json = r#"
1132+
{
1133+
"name": "testrepo",
1134+
"sources": {
1135+
"dir": "src",
1136+
"subdirs": true
1137+
},
1138+
"package-specs": [
1139+
{
1140+
"module": "es6",
1141+
"in-source": true
1142+
}
1143+
],
1144+
"suffix": ".mjs"
1145+
}
1146+
"#;
1147+
1148+
let config = Config::new_from_json_string(json).expect("a valid json string");
1149+
assert_eq!(config.get_deprecations(), [DeprecationWarning::PackageSpecsEs6]);
1150+
}
1151+
10841152
#[test]
10851153
fn test_unknown_fields_are_collected() {
10861154
let json = r#"
@@ -1150,7 +1218,7 @@ pub mod tests {
11501218
},
11511219
"package-specs": [
11521220
{
1153-
"module": "es6",
1221+
"module": "esmodule",
11541222
"in-source": true
11551223
}
11561224
],
@@ -1185,7 +1253,7 @@ pub mod tests {
11851253
},
11861254
"package-specs": [
11871255
{
1188-
"module": "es6",
1256+
"module": "esmodule",
11891257
"in-source": true
11901258
}
11911259
],

rewatch/testrepo/packages/dep01/rescript.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"subdirs": true
66
},
77
"package-specs": {
8-
"module": "es6",
8+
"module": "esmodule",
99
"in-source": true
1010
},
1111
"suffix": ".bs.js",

rewatch/testrepo/packages/dep02/rescript.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"subdirs": true
66
},
77
"package-specs": {
8-
"module": "es6",
8+
"module": "esmodule",
99
"in-source": true
1010
},
1111
"suffix": ".bs.js",

rewatch/testrepo/packages/deprecated-config/rescript.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"subdirs": true
77
},
88
"package-specs": {
9-
"module": "es6",
9+
"module": "esmodule",
1010
"in-source": true
1111
},
1212
"suffix": ".mjs",

rewatch/testrepo/packages/file-casing-no-namespace/rescript.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
],
99
"package-specs": [
1010
{
11-
"module": "es6",
11+
"module": "esmodule",
1212
"in-source": true
1313
}
1414
],

rewatch/testrepo/packages/file-casing/rescript.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
],
1010
"package-specs": [
1111
{
12-
"module": "es6",
12+
"module": "esmodule",
1313
"in-source": true
1414
}
1515
],

rewatch/testrepo/packages/namespace-casing/rescript.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
],
1010
"package-specs": [
1111
{
12-
"module": "es6",
12+
"module": "esmodule",
1313
"in-source": true
1414
}
1515
],

rewatch/testrepo/packages/new-namespace/rescript.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"subdirs": true
88
},
99
"package-specs": {
10-
"module": "es6",
10+
"module": "esmodule",
1111
"in-source": true
1212
},
1313
"dependencies": ["@testrepo/dep01"],

0 commit comments

Comments
 (0)