Skip to content

Commit 1645caf

Browse files
committed
Revert "make parsing of @deprecated with migration info an experimental feature"
This reverts commit 59c902c.
1 parent 1995eb1 commit 1645caf

14 files changed

+872
-89
lines changed

compiler/ml/builtin_attributes.ml

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,6 @@ let cat s1 s2 =
7575

7676
let rec deprecated_of_attrs = function
7777
| [] -> None
78-
| ( {txt = "deprecated"; _},
79-
PStr [{pstr_desc = Pstr_eval ({pexp_desc = Pexp_record _}, _)}] )
80-
:: _ ->
81-
(* Skip record payloads here. `deprecated_of_attrs_with_migrate` should be used if we want to
82-
parse record payloads. *)
83-
None
8478
| ({txt = "ocaml.deprecated" | "deprecated"; _}, p) :: _ ->
8579
Some (string_of_opt_payload p)
8680
| _ :: tl -> deprecated_of_attrs tl
@@ -132,18 +126,13 @@ let rec deprecated_of_attrs_with_migrate = function
132126
| _ :: tl -> deprecated_of_attrs_with_migrate tl
133127

134128
let check_deprecated ?deprecated_context loc attrs s =
135-
if Experimental_features.is_enabled DeprecatedMigrations then (
136-
match deprecated_of_attrs_with_migrate attrs with
137-
| None -> ()
138-
| Some (txt, migration_template, migration_in_pipe_chain_template) ->
139-
!Cmt_utils.record_deprecated_used
140-
?deprecated_context ?migration_template
141-
?migration_in_pipe_chain_template loc txt;
142-
Location.deprecated loc (cat s txt))
143-
else
144-
match deprecated_of_attrs attrs with
145-
| None -> ()
146-
| Some txt -> Location.deprecated loc (cat s txt)
129+
match deprecated_of_attrs_with_migrate attrs with
130+
| None -> ()
131+
| Some (txt, migration_template, migration_in_pipe_chain_template) ->
132+
!Cmt_utils.record_deprecated_used
133+
?deprecated_context ?migration_template ?migration_in_pipe_chain_template
134+
loc txt;
135+
Location.deprecated loc (cat s txt)
147136

148137
let check_deprecated_inclusion ~def ~use loc attrs1 attrs2 s =
149138
match (deprecated_of_attrs attrs1, deprecated_of_attrs attrs2) with

compiler/ml/experimental_features.ml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
type feature = LetUnwrap | DeprecatedMigrations
1+
type feature = LetUnwrap
22

33
let to_string (f : feature) : string =
44
match f with
55
| LetUnwrap -> "LetUnwrap"
6-
| DeprecatedMigrations -> "DeprecatedMigrations"
76

87
let from_string (s : string) : feature option =
98
match s with
109
| "LetUnwrap" -> Some LetUnwrap
11-
| "DeprecatedMigrations" -> Some DeprecatedMigrations
1210
| _ -> None
1311

1412
module FeatureSet = Set.Make (struct

compiler/ml/experimental_features.mli

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
type feature = LetUnwrap | DeprecatedMigrations
1+
type feature = LetUnwrap
22

33
val enable_from_string : string -> unit
44
val is_enabled : feature -> bool

docs/docson/build-schema.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -492,10 +492,6 @@
492492
"LetUnwrap": {
493493
"type": "boolean",
494494
"description": "Enable `let?` syntax."
495-
},
496-
"DeprecatedMigrations": {
497-
"type": "boolean",
498-
"description": "Enable parsing of the `@deprecated` attribute with migration information."
499495
}
500496
},
501497
"additionalProperties": false

rewatch/CompilerConfigurationSpec.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ An object of feature flags to enable experimental compiler behavior. Only suppor
122122
Currently supported features:
123123

124124
- LetUnwrap: Enable `let?` syntax.
125-
- DeprecatedMigrations: Enable parsing of the `@deprecated` attribute with migration information.
126125

127126
### Warnings
128127

rewatch/src/config.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,6 @@ pub enum DeprecationWarning {
229229
#[derive(Debug, Clone, Eq, PartialEq, Hash)]
230230
pub enum ExperimentalFeature {
231231
LetUnwrap,
232-
DeprecatedMigrations,
233232
}
234233

235234
impl<'de> serde::Deserialize<'de> for ExperimentalFeature {
@@ -249,9 +248,8 @@ impl<'de> serde::Deserialize<'de> for ExperimentalFeature {
249248
{
250249
match v {
251250
"LetUnwrap" => Ok(ExperimentalFeature::LetUnwrap),
252-
"DeprecatedMigrations" => Ok(ExperimentalFeature::DeprecatedMigrations),
253251
other => {
254-
let available = ["LetUnwrap", "DeprecatedMigrations"].join(", ");
252+
let available = ["LetUnwrap"].join(", ");
255253
Err(DeError::custom(format!(
256254
"Unknown experimental feature '{}'. Available features: {}",
257255
other, available
@@ -551,7 +549,6 @@ impl Config {
551549
"-enable-experimental".to_string(),
552550
match feature {
553551
ExperimentalFeature::LetUnwrap => "LetUnwrap",
554-
ExperimentalFeature::DeprecatedMigrations => "DeprecatedMigrations",
555552
}
556553
.to_string(),
557554
]

rewatch/tests/snapshots/bs-dev-dependency-used-by-non-dev-source.txt

Lines changed: 66 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,69 @@
1-
Cleaned 0/115
2-
Parsed 2 source files
3-
Compiled 2 modules
1+
Cleaned 0/113
2+
Parsed 4 source files
3+
Compiled 3 modules
4+
5+
Warning number 3
6+
/packages/new-namespace/src/Other_module.res:1:17-22
7+
8+
1 │ let bla = () => Js.log("bla")
9+
2 │
10+
11+
deprecated: Js.log
12+
Use `Console.log` instead.
13+
14+
15+
Warning number 3
16+
/packages/dep02/src/Array.res:6:16-33
17+
18+
4 │ let at = get
19+
5 │
20+
6 │ let includes = Js.Array2.includes
21+
7 │
22+
8 │ let head = t => t->get(0)
23+
24+
deprecated: Js.Array2.includes
25+
Use `Array.includes` instead.
26+
27+
28+
Warning number 3
29+
/packages/dep02/src/Array.res:24:12-25
30+
31+
22 │ let flatMap = (t, fn) => t->map(fn)->concatMany
32+
23 │
33+
24 │ let mapi = Js.Array2.mapi
34+
25 │
35+
26 │ let flatten = t => t->flatMap(x => x)
36+
37+
deprecated: Js.Array2.mapi
38+
Use `Array.mapWithIndex` instead.
39+
40+
41+
Warning number 3
42+
/packages/dep02/src/Array.res:32:14-29
43+
44+
30 │ let findIndex = (t, fn) => Js.Array.findIndex(fn, t)
45+
31 │
46+
32 │ let filter = Js.Array2.filter
47+
33 │
48+
34 │ let reject = (t, fn) => t->filter(el => !fn(el))
49+
50+
deprecated: Js.Array2.filter
51+
Use `Array.filter` instead.
52+
53+
54+
Warning number 3
55+
/packages/dep02/src/Array.res:48:18-35
56+
57+
46 │
58+
47 │ module String = {
59+
48 │ let joinWith = Js.Array2.joinWith
60+
49 │ let join = joinWith(_, "")
61+
50 │ }
62+
63+
deprecated: Js.Array2.joinWith
64+
Use `Array.joinUnsafe` instead.
65+
66+
467

568
The field 'bs-dependencies' found in the package config of '@testrepo/deprecated-config' is deprecated and will be removed in a future version.
669
Use 'dependencies' instead.

rewatch/tests/snapshots/dependency-cycle.txt

Lines changed: 66 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,69 @@
1-
Cleaned 0/115
2-
Parsed 1 source files
3-
Compiled 0 modules
1+
Cleaned 0/110
2+
Parsed 6 source files
3+
Compiled 2 modules
4+
5+
Warning number 3
6+
/packages/new-namespace/src/Other_module.res:1:17-22
7+
8+
1 │ let bla = () => Js.log("bla")
9+
2 │
10+
11+
deprecated: Js.log
12+
Use `Console.log` instead.
13+
14+
15+
Warning number 3
16+
/packages/dep02/src/Array.res:6:16-33
17+
18+
4 │ let at = get
19+
5 │
20+
6 │ let includes = Js.Array2.includes
21+
7 │
22+
8 │ let head = t => t->get(0)
23+
24+
deprecated: Js.Array2.includes
25+
Use `Array.includes` instead.
26+
27+
28+
Warning number 3
29+
/packages/dep02/src/Array.res:24:12-25
30+
31+
22 │ let flatMap = (t, fn) => t->map(fn)->concatMany
32+
23 │
33+
24 │ let mapi = Js.Array2.mapi
34+
25 │
35+
26 │ let flatten = t => t->flatMap(x => x)
36+
37+
deprecated: Js.Array2.mapi
38+
Use `Array.mapWithIndex` instead.
39+
40+
41+
Warning number 3
42+
/packages/dep02/src/Array.res:32:14-29
43+
44+
30 │ let findIndex = (t, fn) => Js.Array.findIndex(fn, t)
45+
31 │
46+
32 │ let filter = Js.Array2.filter
47+
33 │
48+
34 │ let reject = (t, fn) => t->filter(el => !fn(el))
49+
50+
deprecated: Js.Array2.filter
51+
Use `Array.filter` instead.
52+
53+
54+
Warning number 3
55+
/packages/dep02/src/Array.res:48:18-35
56+
57+
46 │
58+
47 │ module String = {
59+
48 │ let joinWith = Js.Array2.joinWith
60+
49 │ let join = joinWith(_, "")
61+
50 │ }
62+
63+
deprecated: Js.Array2.joinWith
64+
Use `Array.joinUnsafe` instead.
65+
66+
467

568
The field 'bs-dependencies' found in the package config of '@testrepo/deprecated-config' is deprecated and will be removed in a future version.
669
Use 'dependencies' instead.
Lines changed: 100 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,111 @@
1-
Cleaned 1/115
2-
Parsed 0 source files
3-
Compiled 1 modules
1+
Cleaned 0/110
2+
Parsed 4 source files
3+
Compiled 5 modules
44

5-
The field 'bs-dependencies' found in the package config of '@testrepo/deprecated-config' is deprecated and will be removed in a future version.
6-
Use 'dependencies' instead.
5+
Warning number 3
6+
/packages/dep02/src/Array.res:6:16-33
77

8-
The field 'bs-dev-dependencies' found in the package config of '@testrepo/deprecated-config' is deprecated and will be removed in a future version.
9-
Use 'dev-dependencies' instead.
8+
4 │ let at = get
9+
5 │
10+
6 │ let includes = Js.Array2.includes
11+
7 │
12+
8 │ let head = t => t->get(0)
1013

11-
The field 'bsc-flags' found in the package config of '@testrepo/deprecated-config' is deprecated and will be removed in a future version.
12-
Use 'compiler-flags' instead.
14+
deprecated: Js.Array2.includes
15+
Use `Array.includes` instead.
16+
17+
18+
Warning number 3
19+
/packages/dep02/src/Array.res:24:12-25
20+
21+
22 │ let flatMap = (t, fn) => t->map(fn)->concatMany
22+
23 │
23+
24 │ let mapi = Js.Array2.mapi
24+
25 │
25+
26 │ let flatten = t => t->flatMap(x => x)
26+
27+
deprecated: Js.Array2.mapi
28+
Use `Array.mapWithIndex` instead.
29+
30+
31+
Warning number 3
32+
/packages/dep02/src/Array.res:32:14-29
33+
34+
30 │ let findIndex = (t, fn) => Js.Array.findIndex(fn, t)
35+
31 │
36+
32 │ let filter = Js.Array2.filter
37+
33 │
38+
34 │ let reject = (t, fn) => t->filter(el => !fn(el))
39+
40+
deprecated: Js.Array2.filter
41+
Use `Array.filter` instead.
42+
43+
44+
Warning number 3
45+
/packages/dep02/src/Array.res:48:18-35
46+
47+
46 │
48+
47 │ module String = {
49+
48 │ let joinWith = Js.Array2.joinWith
50+
49 │ let join = joinWith(_, "")
51+
50 │ }
52+
53+
deprecated: Js.Array2.joinWith
54+
Use `Array.joinUnsafe` instead.
55+
56+
57+
Warning number 3
58+
/packages/new-namespace/src/Other_module.res:1:17-22
1359

14-
We've found a bug for you!
15-
/packages/dep01/src/Dep01.res:3:9-17
60+
1 │ let bla = () => Js.log("bla")
61+
2 │
62+
63+
deprecated: Js.log
64+
Use `Console.log` instead.
65+
66+
67+
Warning number 3
68+
/packages/dep01/src/Dep01.res:2:9-14
1669

1770
1 │ let log = () => {
18-
2 │ Js.log("02")
19-
3 │ Dep02.log()
71+
2 │ Js.log("02")
72+
3 │ Dep02.log()
2073
4 │ }
74+
75+
deprecated: Js.log
76+
Use `Console.log` instead.
77+
78+
79+
Warning number 3
80+
/packages/main/src/Main.res:1:1-6
81+
82+
1 │ Js.log("01")
83+
2 │ Dep01.log()
84+
3 │
85+
86+
deprecated: Js.log
87+
Use `Console.log` instead.
88+
89+
90+
Warning number 3
91+
/packages/main/src/Main.res:4:1-6
92+
93+
2 │ Dep01.log()
94+
3 │
95+
4 │ Js.log(InternalDep.value)
2196
5 │
97+
6 │ module Array = Belt.Array
98+
99+
deprecated: Js.log
100+
Use `Console.log` instead.
101+
22102

23-
The module or file Dep02 can't be found.
24-
- If it's a third-party dependency:
25-
- Did you add it to the "dependencies" or "dev-dependencies" in rescript.json?
26-
- Did you include the file's directory to the "sources" in rescript.json?
27-
28103

104+
The field 'bs-dependencies' found in the package config of '@testrepo/deprecated-config' is deprecated and will be removed in a future version.
105+
Use 'dependencies' instead.
106+
107+
The field 'bs-dev-dependencies' found in the package config of '@testrepo/deprecated-config' is deprecated and will be removed in a future version.
108+
Use 'dev-dependencies' instead.
29109

30-
Incremental build failed. Error:  Failed to Compile. See Errors Above
110+
The field 'bsc-flags' found in the package config of '@testrepo/deprecated-config' is deprecated and will be removed in a future version.
111+
Use 'compiler-flags' instead.

0 commit comments

Comments
 (0)