From 4c1905e7395bb2dbd3e413a8715e2cdcc836b9ee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?M=C3=A9di-R=C3=A9mi=20Hashim?=
Date: Tue, 29 Apr 2025 19:01:15 +0100
Subject: [PATCH 1/2] Port reanalyze deadcode example code to ReScript v11
---
.../examples/deadcode/expected/deadcode.txt | 478 +++++++-----------
.../examples/deadcode/expected/exception.txt | 82 ++-
.../examples/deadcode/package-lock.json | 174 +++----
.../reanalyze/examples/deadcode/package.json | 10 +-
.../deadcode/{bsconfig.json => rescript.json} | 4 +-
.../deadcode/src/CreateErrorHandler1.bs.js | 3 +-
.../examples/deadcode/src/DeadRT.bs.js | 2 +-
.../examples/deadcode/src/DeadTest.bs.js | 32 +-
.../examples/deadcode/src/DeadTypeTest.bs.js | 2 +-
.../examples/deadcode/src/Docstrings.bs.js | 8 +-
.../examples/deadcode/src/ErrorHandler.bs.js | 3 +-
.../examples/deadcode/src/Hooks.bs.js | 51 +-
.../reanalyze/examples/deadcode/src/Hooks.res | 32 +-
.../deadcode/src/ImmutableArray.bs.js | 38 +-
.../examples/deadcode/src/ImmutableArray.res | 39 +-
.../examples/deadcode/src/ImmutableArray.resi | 39 +-
.../examples/deadcode/src/ImportJsValue.bs.js | 6 +-
.../examples/deadcode/src/JsxV4.bs.js | 4 +-
.../examples/deadcode/src/Newton.bs.js | 20 +-
.../examples/deadcode/src/OptArg.bs.js | 7 +-
.../examples/deadcode/src/Records.bs.js | 4 +-
.../examples/deadcode/src/Shadow.bs.js | 4 +-
.../examples/deadcode/src/TestOptArg.bs.js | 2 +-
.../examples/deadcode/src/Types.bs.js | 19 +-
.../examples/deadcode/src/Uncurried.bs.js | 11 +-
.../examples/deadcode/src/Unison.bs.js | 28 +-
.../deadcode/src/VariantsWithPayload.bs.js | 12 +-
.../deadcode/src/exception/BsJson.bs.js | 10 +-
.../deadcode/src/exception/BsJson.res | 7 +-
.../examples/deadcode/src/exception/Exn.bs.js | 4 +-
.../deadcode/src/exception/ExnA.bs.js | 4 +-
.../deadcode/src/exception/ExnB.bs.js | 2 +-
.../deadcode/src/exception/InnerModules.bs.js | 34 +-
.../src/exception/TestInnerModules.bs.js | 7 +-
.../deadcode/src/exception/TestYojson.bs.js | 7 +-
35 files changed, 493 insertions(+), 696 deletions(-)
rename analysis/reanalyze/examples/deadcode/{bsconfig.json => rescript.json} (77%)
diff --git a/analysis/reanalyze/examples/deadcode/expected/deadcode.txt b/analysis/reanalyze/examples/deadcode/expected/deadcode.txt
index eb561f9f6..b1e4e817c 100644
--- a/analysis/reanalyze/examples/deadcode/expected/deadcode.txt
+++ b/analysis/reanalyze/examples/deadcode/expected/deadcode.txt
@@ -15,15 +15,13 @@
addValueReference BucklescriptAnnotations.res:25:4 --> BucklescriptAnnotations.res:26:6
Scanning ComponentAsProp.cmt Source:ComponentAsProp.res
addValueDeclaration +make ComponentAsProp.res:6:4 path:+ComponentAsProp
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: ComponentAsProp.res:7:3
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: ComponentAsProp.res:8:5
addValueReference ComponentAsProp.res:9:6 --> ComponentAsProp.res:6:12
addValueReference ComponentAsProp.res:10:6 --> ComponentAsProp.res:6:20
addValueReference ComponentAsProp.res:12:24 --> ComponentAsProp.res:12:13
addValueReference ComponentAsProp.res:13:16 --> React.res:3:0
addValueReference ComponentAsProp.res:11:14 --> ComponentAsProp.res:6:34
- addValueReference ComponentAsProp.res:8:5 --> ReactDOMRe.res:8:0
- addValueReference ComponentAsProp.res:7:3 --> ReactDOMRe.res:8:0
+ addValueReference ComponentAsProp.res:8:5 --> ReactDOMRe.res:7:0
+ addValueReference ComponentAsProp.res:7:3 --> ReactDOMRe.res:7:0
Scanning CreateErrorHandler1.cmt Source:CreateErrorHandler1.res
addValueDeclaration +notification CreateErrorHandler1.res:3:6 path:+CreateErrorHandler1.Error1
addValueReference CreateErrorHandler1.res:3:6 --> CreateErrorHandler1.res:3:21
@@ -159,12 +157,12 @@
addValueReference DeadTest.res:115:6 --> DeadTest.res:111:6
addValueReference DeadTest.res:115:6 --> BootloaderResource.res:3:0
addValueReference DeadTest.res:115:6 --> DeadTest.res:115:13
- addValueReference DeadTest.res:115:6 --> React.res:18:0
+ addValueReference DeadTest.res:115:6 --> React.res:17:0
addValueDeclaration +a1 DeadTest.res:128:6 path:+DeadTest
addValueDeclaration +a2 DeadTest.res:129:6 path:+DeadTest
addValueDeclaration +a3 DeadTest.res:130:6 path:+DeadTest
addValueReference DeadTest.res:133:17 --> DynamicallyLoadedComponent.res:2:4
- addValueReference DeadTest.res:133:17 --> React.res:18:0
+ addValueReference DeadTest.res:133:17 --> React.res:17:0
addValueReference DeadTest.res:136:4 --> DeadTest.res:135:4
addValueReference DeadTest.res:141:32 --> DeadTest.res:141:12
addValueReference DeadTest.res:141:19 --> React.res:7:0
@@ -340,10 +338,9 @@
addValueReference DynamicallyLoadedComponent.res:2:19 --> React.res:7:0
Scanning EmptyArray.cmt Source:EmptyArray.res
addValueDeclaration +make EmptyArray.res:5:6 path:+EmptyArray.Z
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: EmptyArray.res:6:5
- addValueReference EmptyArray.res:6:5 --> ReactDOMRe.res:8:0
+ addValueReference EmptyArray.res:6:5 --> ReactDOMRe.res:7:0
addValueReference EmptyArray.res:10:9 --> EmptyArray.res:5:6
- addValueReference EmptyArray.res:10:9 --> React.res:18:0
+ addValueReference EmptyArray.res:10:9 --> React.res:17:0
Scanning ErrorHandler.cmt Source:ErrorHandler.res
addValueDeclaration +notify ErrorHandler.res:7:6 path:+ErrorHandler.Make
addValueDeclaration +x ErrorHandler.res:12:4 path:+ErrorHandler
@@ -410,133 +407,101 @@
addTypeReference FirstClassModulesInterface.resi:3:2 --> FirstClassModulesInterface.res:2:2
Scanning Hooks.cmt Source:Hooks.res
addValueDeclaration +make Hooks.res:4:4 path:+Hooks
- addValueDeclaration +default Hooks.res:25:4 path:+Hooks
- addValueDeclaration +anotherComponent Hooks.res:28:4 path:+Hooks
- addValueDeclaration +make Hooks.res:35:6 path:+Hooks.Inner
- addValueDeclaration +anotherComponent Hooks.res:38:6 path:+Hooks.Inner
- addValueDeclaration +make Hooks.res:42:8 path:+Hooks.Inner.Inner2
- addValueDeclaration +anotherComponent Hooks.res:45:8 path:+Hooks.Inner.Inner2
- addValueDeclaration +make Hooks.res:52:6 path:+Hooks.NoProps
- addValueDeclaration +functionWithRenamedArgs Hooks.res:58:4 path:+Hooks
- addValueDeclaration +componentWithRenamedArgs Hooks.res:64:4 path:+Hooks
- addValueDeclaration +makeWithRef Hooks.res:70:4 path:+Hooks
- addValueDeclaration +testForwardRef Hooks.res:80:4 path:+Hooks
- addValueDeclaration +input Hooks.res:85:4 path:+Hooks
- addValueDeclaration +polymorphicComponent Hooks.res:100:4 path:+Hooks
- addValueDeclaration +functionReturningReactElement Hooks.res:103:4 path:+Hooks
- addValueDeclaration +make Hooks.res:107:6 path:+Hooks.RenderPropRequiresConversion
- addValueDeclaration +aComponentWithChildren Hooks.res:114:4 path:+Hooks
+ addValueDeclaration +default Hooks.res:27:4 path:+Hooks
+ addValueDeclaration +anotherComponent Hooks.res:30:4 path:+Hooks
+ addValueDeclaration +make Hooks.res:37:6 path:+Hooks.Inner
+ addValueDeclaration +anotherComponent Hooks.res:40:6 path:+Hooks.Inner
+ addValueDeclaration +make Hooks.res:44:8 path:+Hooks.Inner.Inner2
+ addValueDeclaration +anotherComponent Hooks.res:47:8 path:+Hooks.Inner.Inner2
+ addValueDeclaration +make Hooks.res:54:6 path:+Hooks.NoProps
+ addValueDeclaration +functionWithRenamedArgs Hooks.res:60:4 path:+Hooks
+ addValueDeclaration +componentWithRenamedArgs Hooks.res:66:4 path:+Hooks
+ addValueDeclaration +polymorphicComponent Hooks.res:81:4 path:+Hooks
+ addValueDeclaration +functionReturningReactElement Hooks.res:84:4 path:+Hooks
+ addValueDeclaration +make Hooks.res:88:6 path:+Hooks.RenderPropRequiresConversion
+ addValueDeclaration +aComponentWithChildren Hooks.res:95:4 path:+Hooks
addRecordLabelDeclaration name Hooks.res:1:16 path:+Hooks.vehicle
- addValueReference Hooks.res:5:26 --> React.res:167:0
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: Hooks.res:7:3
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: Hooks.res:8:5
+ addValueReference Hooks.res:5:26 --> React.res:145:0
addTypeReference Hooks.res:10:29 --> Hooks.res:1:16
addValueReference Hooks.res:10:29 --> Hooks.res:4:12
addValueReference Hooks.res:10:76 --> Hooks.res:5:7
addValueReference Hooks.res:9:7 --> React.res:7:0
- addValueReference Hooks.res:8:5 --> ReactDOMRe.res:8:0
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames:props argNamesMaybe: Hooks.res:13:5
+ addValueReference Hooks.res:8:5 --> ReactDOMRe.res:7:0
addValueReference Hooks.res:13:40 --> Hooks.res:5:7
addValueReference Hooks.res:13:26 --> Hooks.res:5:14
addValueReference Hooks.res:13:54 --> React.res:7:0
- addValueReference Hooks.res:13:5 --> ReactDOMRe.res:8:0
+ addValueReference Hooks.res:13:5 --> ReactDOMRe.res:7:0
addValueReference Hooks.res:14:5 --> ImportHooks.res:13:0
DeadOptionalArgs.addReferences ImportHooks.makeProps called with optional argNames: argNamesMaybe: Hooks.res:14:5
addValueReference Hooks.res:14:5 --> React.res:3:0
+ addValueReference Hooks.res:14:76 --> Hooks.res:14:57
addValueReference Hooks.res:14:63 --> React.res:7:0
addValueReference Hooks.res:14:5 --> ImportHooks.res:13:0
addValueReference Hooks.res:15:7 --> React.res:7:0
- addValueReference Hooks.res:15:32 --> React.res:7:0
- addValueReference Hooks.res:14:5 --> React.res:24:0
- addValueReference Hooks.res:17:5 --> ImportHookDefault.res:6:0
- DeadOptionalArgs.addReferences ImportHookDefault.makeProps called with optional argNames: argNamesMaybe: Hooks.res:17:5
- addValueReference Hooks.res:17:5 --> React.res:3:0
- addValueReference Hooks.res:18:61 --> React.res:7:0
- addValueReference Hooks.res:17:5 --> ImportHookDefault.res:6:0
- addValueReference Hooks.res:19:7 --> React.res:7:0
- addValueReference Hooks.res:19:32 --> React.res:7:0
- addValueReference Hooks.res:17:5 --> React.res:24:0
- addValueReference Hooks.res:7:3 --> ReactDOMRe.res:8:0
- addValueReference Hooks.res:25:4 --> Hooks.res:4:4
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: Hooks.res:30:3
- addTypeReference Hooks.res:30:41 --> Hooks.res:1:16
- addValueReference Hooks.res:30:41 --> Hooks.res:28:24
- addValueReference Hooks.res:30:9 --> React.res:7:0
- addValueReference Hooks.res:30:3 --> ReactDOMRe.res:8:0
- addValueReference Hooks.res:29:2 --> Hooks.res:28:34
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: Hooks.res:35:28
- addTypeReference Hooks.res:35:66 --> Hooks.res:1:16
- addValueReference Hooks.res:35:66 --> Hooks.res:35:14
- addValueReference Hooks.res:35:34 --> React.res:7:0
- addValueReference Hooks.res:35:28 --> ReactDOMRe.res:8:0
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: Hooks.res:38:40
- addTypeReference Hooks.res:38:78 --> Hooks.res:1:16
- addValueReference Hooks.res:38:78 --> Hooks.res:38:26
- addValueReference Hooks.res:38:46 --> React.res:7:0
- addValueReference Hooks.res:38:40 --> ReactDOMRe.res:8:0
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: Hooks.res:42:30
- addTypeReference Hooks.res:42:68 --> Hooks.res:1:16
- addValueReference Hooks.res:42:68 --> Hooks.res:42:16
- addValueReference Hooks.res:42:36 --> React.res:7:0
- addValueReference Hooks.res:42:30 --> ReactDOMRe.res:8:0
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: Hooks.res:46:7
- addTypeReference Hooks.res:46:45 --> Hooks.res:1:16
- addValueReference Hooks.res:46:45 --> Hooks.res:45:28
- addValueReference Hooks.res:46:13 --> React.res:7:0
- addValueReference Hooks.res:46:7 --> ReactDOMRe.res:8:0
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: Hooks.res:52:20
- addValueReference Hooks.res:52:25 --> React.res:3:0
- addValueReference Hooks.res:52:20 --> ReactDOMRe.res:8:0
- addTypeReference Hooks.res:60:2 --> Hooks.res:1:16
- addValueReference Hooks.res:58:4 --> Hooks.res:58:31
- addTypeReference Hooks.res:60:14 --> Hooks.res:1:16
- addValueReference Hooks.res:58:4 --> Hooks.res:58:37
- addValueReference Hooks.res:58:4 --> Hooks.res:58:31
- addValueReference Hooks.res:58:4 --> Hooks.res:58:45
- addTypeReference Hooks.res:66:15 --> Hooks.res:1:16
- addValueReference Hooks.res:66:15 --> Hooks.res:64:32
- addTypeReference Hooks.res:66:27 --> Hooks.res:1:16
- addValueReference Hooks.res:66:27 --> Hooks.res:64:38
- addValueReference Hooks.res:66:2 --> React.res:7:0
- addValueReference Hooks.res:65:6 --> Hooks.res:64:32
- addValueReference Hooks.res:65:2 --> Hooks.res:64:46
- addValueDeclaration +_ Hooks.res:71:2 path:+Hooks
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames:props argNamesMaybe: Hooks.res:74:20
- addValueReference Hooks.res:74:52 --> Hooks.res:74:11
- addValueReference Hooks.res:74:32 --> ReactDOM.res:47:2
- addTypeReference Hooks.res:74:73 --> Hooks.res:1:16
- addValueReference Hooks.res:74:73 --> Hooks.res:70:19
- addValueReference Hooks.res:74:60 --> React.res:7:0
- addValueReference Hooks.res:74:20 --> ReactDOMRe.res:8:0
- addValueReference Hooks.res:75:14 --> React.res:3:0
- addValueReference Hooks.res:73:11 --> Hooks.res:72:2
- addValueReference Hooks.res:80:4 --> Hooks.res:70:4
- addValueReference Hooks.res:80:4 --> React.res:90:0
- addRecordLabelDeclaration x Hooks.res:82:10 path:+Hooks.r
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames:props argNamesMaybe: Hooks.res:85:47
- addValueReference Hooks.res:85:66 --> Hooks.res:85:38
- addTypeReference Hooks.res:85:87 --> Hooks.res:82:10
- addValueReference Hooks.res:85:87 --> Hooks.res:85:30
- addValueReference Hooks.res:85:74 --> React.res:7:0
- addValueReference Hooks.res:85:47 --> ReactDOMRe.res:8:0
- addValueReference Hooks.res:85:4 --> React.res:90:0
- addTypeReference Hooks.res:100:58 --> Hooks.res:1:16
- addValueReference Hooks.res:100:58 --> Hooks.res:100:35
- addValueReference Hooks.res:100:45 --> React.res:7:0
- addValueReference Hooks.res:103:60 --> Hooks.res:103:37
- addValueReference Hooks.res:103:47 --> React.res:7:0
- addValueDeclaration +car Hooks.res:108:8 path:+Hooks.RenderPropRequiresConversion
- addValueReference Hooks.res:109:30 --> Hooks.res:108:8
- addValueReference Hooks.res:109:18 --> Hooks.res:109:18
- addValueReference Hooks.res:109:4 --> Hooks.res:107:14
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: Hooks.res:115:3
- addTypeReference Hooks.res:115:41 --> Hooks.res:1:16
- addValueReference Hooks.res:115:41 --> Hooks.res:114:30
- addValueReference Hooks.res:115:9 --> React.res:7:0
- DeadOptionalArgs.addReferences ReactDOMRe.createDOMElementVariadic called with optional argNames: argNamesMaybe: Hooks.res:115:57
- addValueReference Hooks.res:115:62 --> Hooks.res:114:40
- addValueReference Hooks.res:115:57 --> ReactDOMRe.res:8:0
- addValueReference Hooks.res:115:3 --> ReactDOMRe.res:8:0
+ addValueReference Hooks.res:16:7 --> React.res:7:0
+ addValueReference Hooks.res:14:5 --> React.res:26:0
+ addValueReference Hooks.res:18:5 --> ImportHookDefault.res:6:0
+ DeadOptionalArgs.addReferences ImportHookDefault.makeProps called with optional argNames: argNamesMaybe: Hooks.res:18:5
+ addValueReference Hooks.res:18:5 --> React.res:3:0
+ addValueReference Hooks.res:19:74 --> Hooks.res:19:55
+ addValueReference Hooks.res:19:61 --> React.res:7:0
+ addValueReference Hooks.res:18:5 --> ImportHookDefault.res:6:0
+ addValueReference Hooks.res:20:7 --> React.res:7:0
+ addValueReference Hooks.res:21:7 --> React.res:7:0
+ addValueReference Hooks.res:18:5 --> React.res:26:0
+ addValueReference Hooks.res:7:3 --> ReactDOMRe.res:7:0
+ addValueReference Hooks.res:27:4 --> Hooks.res:4:4
+ addTypeReference Hooks.res:32:41 --> Hooks.res:1:16
+ addValueReference Hooks.res:32:41 --> Hooks.res:30:24
+ addValueReference Hooks.res:32:9 --> React.res:7:0
+ addValueReference Hooks.res:32:3 --> ReactDOMRe.res:7:0
+ addValueReference Hooks.res:31:2 --> Hooks.res:30:34
+ addTypeReference Hooks.res:37:66 --> Hooks.res:1:16
+ addValueReference Hooks.res:37:66 --> Hooks.res:37:14
+ addValueReference Hooks.res:37:34 --> React.res:7:0
+ addValueReference Hooks.res:37:28 --> ReactDOMRe.res:7:0
+ addTypeReference Hooks.res:40:78 --> Hooks.res:1:16
+ addValueReference Hooks.res:40:78 --> Hooks.res:40:26
+ addValueReference Hooks.res:40:46 --> React.res:7:0
+ addValueReference Hooks.res:40:40 --> ReactDOMRe.res:7:0
+ addTypeReference Hooks.res:44:68 --> Hooks.res:1:16
+ addValueReference Hooks.res:44:68 --> Hooks.res:44:16
+ addValueReference Hooks.res:44:36 --> React.res:7:0
+ addValueReference Hooks.res:44:30 --> ReactDOMRe.res:7:0
+ addTypeReference Hooks.res:48:45 --> Hooks.res:1:16
+ addValueReference Hooks.res:48:45 --> Hooks.res:47:28
+ addValueReference Hooks.res:48:13 --> React.res:7:0
+ addValueReference Hooks.res:48:7 --> ReactDOMRe.res:7:0
+ addValueReference Hooks.res:54:25 --> React.res:3:0
+ addValueReference Hooks.res:54:20 --> ReactDOMRe.res:7:0
+ addTypeReference Hooks.res:62:2 --> Hooks.res:1:16
+ addValueReference Hooks.res:60:4 --> Hooks.res:60:31
+ addTypeReference Hooks.res:62:14 --> Hooks.res:1:16
+ addValueReference Hooks.res:60:4 --> Hooks.res:60:37
+ addValueReference Hooks.res:60:4 --> Hooks.res:60:31
+ addValueReference Hooks.res:60:4 --> Hooks.res:60:45
+ addTypeReference Hooks.res:68:15 --> Hooks.res:1:16
+ addValueReference Hooks.res:68:15 --> Hooks.res:66:32
+ addTypeReference Hooks.res:68:27 --> Hooks.res:1:16
+ addValueReference Hooks.res:68:27 --> Hooks.res:66:38
+ addValueReference Hooks.res:68:2 --> React.res:7:0
+ addValueReference Hooks.res:67:6 --> Hooks.res:66:32
+ addValueReference Hooks.res:67:2 --> Hooks.res:66:46
+ addTypeReference Hooks.res:81:58 --> Hooks.res:1:16
+ addValueReference Hooks.res:81:58 --> Hooks.res:81:35
+ addValueReference Hooks.res:81:45 --> React.res:7:0
+ addValueReference Hooks.res:84:60 --> Hooks.res:84:37
+ addValueReference Hooks.res:84:47 --> React.res:7:0
+ addValueDeclaration +car Hooks.res:89:8 path:+Hooks.RenderPropRequiresConversion
+ addValueReference Hooks.res:90:30 --> Hooks.res:89:8
+ addValueReference Hooks.res:90:18 --> Hooks.res:90:18
+ addValueReference Hooks.res:90:4 --> Hooks.res:88:14
+ addTypeReference Hooks.res:97:37 --> Hooks.res:1:16
+ addValueReference Hooks.res:97:37 --> Hooks.res:95:30
+ addValueReference Hooks.res:97:5 --> React.res:7:0
+ addValueReference Hooks.res:98:10 --> Hooks.res:95:40
+ addValueReference Hooks.res:98:5 --> ReactDOMRe.res:7:0
+ addValueReference Hooks.res:96:3 --> ReactDOMRe.res:7:0
Scanning IgnoreInterface.cmt Source:IgnoreInterface.res
Scanning IgnoreInterface.cmti Source:IgnoreInterface.resi
Scanning ImmutableArray.cmt Source:ImmutableArray.res
@@ -1219,9 +1184,7 @@
addValueReference OptArg.res:1:4 --> OptArg.res:1:29
addValueReference OptArg.res:3:4 --> OptArg.res:3:17
addValueReference OptArg.res:3:4 --> OptArg.res:3:27
- DeadOptionalArgs.addReferences foo called with optional argNames:x argNamesMaybe: OptArg.res:5:7
addValueReference OptArg.res:5:7 --> OptArg.res:1:4
- DeadOptionalArgs.addReferences bar called with optional argNames: argNamesMaybe: OptArg.res:7:7
addValueReference OptArg.res:7:7 --> OptArg.res:3:4
addValueReference OptArg.res:9:4 --> OptArg.res:9:20
addValueReference OptArg.res:9:4 --> OptArg.res:9:26
@@ -1230,25 +1193,20 @@
addValueReference OptArg.res:9:4 --> OptArg.res:9:23
addValueReference OptArg.res:9:4 --> OptArg.res:9:29
addValueReference OptArg.res:9:4 --> OptArg.res:9:35
- DeadOptionalArgs.addReferences threeArgs called with optional argNames:c, a argNamesMaybe: OptArg.res:11:7
addValueReference OptArg.res:11:7 --> OptArg.res:9:4
- DeadOptionalArgs.addReferences threeArgs called with optional argNames:a argNamesMaybe: OptArg.res:12:7
addValueReference OptArg.res:12:7 --> OptArg.res:9:4
addValueReference OptArg.res:14:4 --> OptArg.res:14:18
addValueReference OptArg.res:14:4 --> OptArg.res:14:24
addValueReference OptArg.res:14:4 --> OptArg.res:14:15
addValueReference OptArg.res:14:4 --> OptArg.res:14:21
addValueReference OptArg.res:14:4 --> OptArg.res:14:27
- DeadOptionalArgs.addReferences twoArgs called with optional argNames: argNamesMaybe: OptArg.res:16:12
addValueReference OptArg.res:16:12 --> OptArg.res:14:4
addValueReference OptArg.res:18:4 --> OptArg.res:18:17
addValueReference OptArg.res:18:4 --> OptArg.res:18:14
addValueReference OptArg.res:18:4 --> OptArg.res:18:24
- DeadOptionalArgs.addReferences oneArg called with optional argNames:a argNamesMaybe:a OptArg.res:20:30
addValueReference OptArg.res:20:4 --> OptArg.res:20:18
addValueReference OptArg.res:20:4 --> OptArg.res:20:24
addValueReference OptArg.res:20:4 --> OptArg.res:18:4
- DeadOptionalArgs.addReferences wrapOneArg called with optional argNames:a argNamesMaybe: OptArg.res:22:7
addValueReference OptArg.res:22:7 --> OptArg.res:20:4
addValueReference OptArg.res:24:4 --> OptArg.res:24:19
addValueReference OptArg.res:24:4 --> OptArg.res:24:25
@@ -1259,20 +1217,15 @@
addValueReference OptArg.res:24:4 --> OptArg.res:24:28
addValueReference OptArg.res:24:4 --> OptArg.res:24:34
addValueReference OptArg.res:24:4 --> OptArg.res:24:40
- DeadOptionalArgs.addReferences fourArgs called with optional argNames:c, b, a argNamesMaybe:c, b, a OptArg.res:26:44
addValueReference OptArg.res:26:4 --> OptArg.res:26:20
addValueReference OptArg.res:26:4 --> OptArg.res:26:26
addValueReference OptArg.res:26:4 --> OptArg.res:26:32
addValueReference OptArg.res:26:4 --> OptArg.res:26:38
addValueReference OptArg.res:26:4 --> OptArg.res:24:4
- DeadOptionalArgs.addReferences wrapfourArgs called with optional argNames:c, a argNamesMaybe: OptArg.res:28:7
addValueReference OptArg.res:28:7 --> OptArg.res:26:4
- DeadOptionalArgs.addReferences wrapfourArgs called with optional argNames:c, b argNamesMaybe: OptArg.res:29:7
addValueReference OptArg.res:29:7 --> OptArg.res:26:4
addValueReference OptArg.resi:1:0 --> OptArg.res:1:4
- OptionalArgs.addFunctionReference OptArg.resi:1:0 OptArg.res:1:4
addValueReference OptArg.resi:2:0 --> OptArg.res:3:4
- OptionalArgs.addFunctionReference OptArg.resi:2:0 OptArg.res:3:4
Scanning OptArg.cmti Source:OptArg.resi
addValueDeclaration +foo OptArg.resi:1:0 path:OptArg
addValueDeclaration +bar OptArg.resi:2:0 path:OptArg
@@ -1474,12 +1427,10 @@
addValueDeclaration +bar TestOptArg.res:5:4 path:+TestOptArg
addValueDeclaration +notSuppressesOptArgs TestOptArg.res:9:4 path:+TestOptArg
addValueDeclaration +liveSuppressesOptArgs TestOptArg.res:14:4 path:+TestOptArg
- DeadOptionalArgs.addReferences OptArg.bar called with optional argNames:z argNamesMaybe: TestOptArg.res:1:7
addValueReference TestOptArg.res:1:7 --> OptArg.resi:2:0
addValueReference TestOptArg.res:3:4 --> TestOptArg.res:3:14
addValueReference TestOptArg.res:3:4 --> TestOptArg.res:3:11
addValueReference TestOptArg.res:3:4 --> TestOptArg.res:3:17
- DeadOptionalArgs.addReferences foo called with optional argNames:x argNamesMaybe: TestOptArg.res:5:16
addValueReference TestOptArg.res:5:4 --> TestOptArg.res:3:4
addValueReference TestOptArg.res:7:7 --> TestOptArg.res:5:4
addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:31
@@ -1489,7 +1440,6 @@
addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:34
addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:40
addValueReference TestOptArg.res:9:4 --> TestOptArg.res:9:46
- DeadOptionalArgs.addReferences notSuppressesOptArgs called with optional argNames: argNamesMaybe: TestOptArg.res:11:8
addValueReference TestOptArg.res:11:8 --> TestOptArg.res:9:4
addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:32
addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:38
@@ -1498,7 +1448,6 @@
addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:35
addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:41
addValueReference TestOptArg.res:14:4 --> TestOptArg.res:14:47
- DeadOptionalArgs.addReferences liveSuppressesOptArgs called with optional argNames:x argNamesMaybe: TestOptArg.res:16:8
addValueReference TestOptArg.res:16:8 --> TestOptArg.res:14:4
Scanning TestPromise.cmt Source:TestPromise.res
addValueDeclaration +convert TestPromise.res:14:4 path:+TestPromise
@@ -1690,16 +1639,16 @@
addValueReference Unison.res:26:8 --> Unison.res:26:20
addValueReference Unison.res:26:8 --> Unison.res:28:23
addValueReference Unison.res:26:8 --> Unison.res:19:8
- addValueReference Unison.res:26:8 --> Unison.res:28:23
addValueReference Unison.res:26:8 --> Unison.res:26:20
+ addValueReference Unison.res:26:8 --> Unison.res:28:23
addValueReference Unison.res:26:8 --> Unison.res:26:8
addValueReference Unison.res:26:8 --> Unison.res:28:17
- addValueReference Unison.res:26:8 --> Unison.res:28:23
addValueReference Unison.res:26:8 --> Unison.res:26:20
+ addValueReference Unison.res:26:8 --> Unison.res:28:23
addValueReference Unison.res:26:8 --> Unison.res:26:8
addValueReference Unison.res:26:8 --> Unison.res:28:17
- addValueReference Unison.res:26:8 --> Unison.res:28:23
addValueReference Unison.res:26:8 --> Unison.res:26:20
+ addValueReference Unison.res:26:8 --> Unison.res:28:23
addValueReference Unison.res:26:8 --> Unison.res:26:8
addValueReference Unison.res:26:8 --> Unison.res:28:10
addTypeReference Unison.res:28:9 --> Unison.res:9:2
@@ -1708,13 +1657,11 @@
addTypeReference Unison.res:37:20 --> Unison.res:14:2
addValueReference Unison.res:37:0 --> Unison.res:26:8
addTypeReference Unison.res:38:20 --> Unison.res:15:2
- DeadOptionalArgs.addReferences group called with optional argNames:break argNamesMaybe: Unison.res:38:25
addTypeReference Unison.res:38:38 --> Unison.res:5:2
addValueReference Unison.res:38:25 --> Unison.res:17:4
addTypeReference Unison.res:38:53 --> Unison.res:14:2
addValueReference Unison.res:38:0 --> Unison.res:26:8
addTypeReference Unison.res:39:20 --> Unison.res:15:2
- DeadOptionalArgs.addReferences group called with optional argNames:break argNamesMaybe: Unison.res:39:25
addTypeReference Unison.res:39:38 --> Unison.res:6:2
addValueReference Unison.res:39:25 --> Unison.res:17:4
addTypeReference Unison.res:39:52 --> Unison.res:14:2
@@ -1844,7 +1791,7 @@ File References
FirstClassModules.res -->>
FirstClassModulesInterface.res -->>
FirstClassModulesInterface.resi -->> FirstClassModulesInterface.res
- Hooks.res -->> React.res, ReactDOM.res, ReactDOMRe.res, ImportHookDefault.res, ImportHooks.res
+ Hooks.res -->> React.res, ReactDOMRe.res, ImportHookDefault.res, ImportHooks.res
IgnoreInterface.res -->>
IgnoreInterface.resi -->>
ImmutableArray.res -->>
@@ -2043,15 +1990,10 @@ File References
Dead RecordLabel FirstClassModulesInterface.record.y: 0 references () [0]
Dead RecordLabel FirstClassModulesInterface.record.x: 0 references () [0]
Live Value +Hooks.+aComponentWithChildren: 0 references () [0]
- Live Value +Hooks.RenderPropRequiresConversion.+car: 1 references (Hooks.res:109:30) [0]
+ Live Value +Hooks.RenderPropRequiresConversion.+car: 1 references (Hooks.res:90:30) [0]
Live Value +Hooks.RenderPropRequiresConversion.+make: 0 references () [0]
Live Value +Hooks.+functionReturningReactElement: 0 references () [0]
Live Value +Hooks.+polymorphicComponent: 0 references () [0]
- Live Value +Hooks.+input: 0 references () [0]
- Live RecordLabel +Hooks.r.x: 1 references (Hooks.res:85:87) [0]
- Live Value +Hooks.+testForwardRef: 0 references () [0]
- Dead Value +Hooks.+_: 0 references () [0]
- Live Value +Hooks.+makeWithRef: 1 references (Hooks.res:80:4) [0]
Live Value +Hooks.+componentWithRenamedArgs: 0 references () [0]
Live Value +Hooks.+functionWithRenamedArgs: 0 references () [0]
Live Value +Hooks.NoProps.+make: 0 references () [0]
@@ -2061,8 +2003,8 @@ File References
Live Value +Hooks.Inner.+make: 0 references () [0]
Live Value +Hooks.+anotherComponent: 0 references () [0]
Live Value +Hooks.+default: 0 references () [0]
- Live Value +Hooks.+make: 1 references (Hooks.res:25:4) [0]
- Live RecordLabel +Hooks.vehicle.name: 13 references (Hooks.res:10:29, Hooks.res:30:41, Hooks.res:35:66, Hooks.res:38:78, Hooks.res:42:68, Hooks.res:46:45, Hooks.res:60:2, Hooks.res:60:14, Hooks.res:66:15, Hooks.res:66:27, Hooks.res:74:73, Hooks.res:100:58, Hooks.res:115:41) [0]
+ Live Value +Hooks.+make: 1 references (Hooks.res:27:4) [0]
+ Live RecordLabel +Hooks.vehicle.name: 12 references (Hooks.res:10:29, Hooks.res:32:41, Hooks.res:37:66, Hooks.res:40:78, Hooks.res:44:68, Hooks.res:48:45, Hooks.res:62:2, Hooks.res:62:14, Hooks.res:68:15, Hooks.res:68:27, Hooks.res:81:58, Hooks.res:97:37) [0]
Live Value +ImportIndex.+make: 0 references () [0]
Dead Value +ImportMyBanner.+make: 0 references () [0]
Live Value +ImportMyBanner.+make: 0 references () [0]
@@ -2435,7 +2377,7 @@ File References
Live Value ImmutableArray.+fromArray: 1 references (DeadTest.res:1:15) [0]
Live Value ImmutableArray.Array.+get: 1 references (TestImmutableArray.res:2:4) [0]
Live Value +ImportHookDefault.+make2: 0 references () [0]
- Live Value +ImportHookDefault.+make: 1 references (Hooks.res:17:5) [0]
+ Live Value +ImportHookDefault.+make: 1 references (Hooks.res:18:5) [0]
Dead RecordLabel +ImportHookDefault.person.age: 0 references () [0]
Dead RecordLabel +ImportHookDefault.person.name: 0 references () [0]
Live Value +ImportHooks.+foo: 0 references () [0]
@@ -2541,73 +2483,9 @@ File References
Live Value +OptArg.+foo: 1 references (OptArg.res:5:7) [0]
Incorrect Dead Annotation
- DeadTest.res:178:1-22
+ DeadTest.res:177:1-28
deadIncorrect is annotated @dead but is live
- Warning Unused Argument
- TestOptArg.res:9:1-65
- optional argument x of function notSuppressesOptArgs is never used
-
- Warning Unused Argument
- TestOptArg.res:9:1-65
- optional argument y of function notSuppressesOptArgs is never used
-
- Warning Unused Argument
- TestOptArg.res:9:1-65
- optional argument z of function notSuppressesOptArgs is never used
-
- Warning Redundant Optional Argument
- TestOptArg.res:3:1-28
- optional argument x of function foo is always supplied (1 calls)
-
- Warning Redundant Optional Argument
- Unison.res:17:1-60
- optional argument break of function group is always supplied (2 calls)
-
- Warning Unused Argument
- OptArg.resi:2:1-50
- optional argument x of function bar is never used
-
- Warning Redundant Optional Argument
- OptArg.res:26:1-70
- optional argument c of function wrapfourArgs is always supplied (2 calls)
-
- Warning Unused Argument
- OptArg.res:24:1-63
- optional argument d of function fourArgs is never used
-
- Warning Redundant Optional Argument
- OptArg.res:20:1-51
- optional argument a of function wrapOneArg is always supplied (1 calls)
-
- Warning Unused Argument
- OptArg.res:14:1-42
- optional argument a of function twoArgs is never used
-
- Warning Unused Argument
- OptArg.res:14:1-42
- optional argument b of function twoArgs is never used
-
- Warning Unused Argument
- OptArg.res:9:1-54
- optional argument b of function threeArgs is never used
-
- Warning Redundant Optional Argument
- OptArg.res:9:1-54
- optional argument a of function threeArgs is always supplied (2 calls)
-
- Warning Unused Argument
- OptArg.res:3:1-38
- optional argument x of function bar is never used
-
- Warning Unused Argument
- OptArg.res:1:1-48
- optional argument y of function foo is never used
-
- Warning Unused Argument
- OptArg.res:1:1-48
- optional argument z of function foo is never used
-
Warning Dead Module
AutoAnnotate.res:0:1
AutoAnnotate is a dead module as all its items are dead.
@@ -2796,11 +2674,9 @@ File References
<-- line 136
@dead("minute") let minute = Int64.mul(60L, second)
- Warning Dead Value
+ Warning Dead Value With Side Effects
DeadTest.res:138:1-21
- deadRef is never used
- <-- line 138
- @dead("deadRef") let deadRef = ref(12)
+ deadRef is never used and could have side effects
Warning Dead Value With Side Effects
DeadTest.res:145:1-40
@@ -2921,10 +2797,10 @@ File References
ErrorHandler is a dead module as all its items are dead.
Warning Dead Value
- ErrorHandler.res:12:1-10
+ ErrorHandler.res:11:1-19
x is never used
<-- line 12
- @dead("x") let x = 42
+ @dead("x") @genType
Warning Dead Module
ErrorHandler.resi:0:1
@@ -3087,10 +2963,10 @@ File References
@dead("makeByU") let makeByU = (c, f) => Array.makeByU(c, f)->toT
Warning Dead Value
- ImmutableArray.res:47:3-48
+ ImmutableArray.res:47:3-49
makeBy is never used
<-- line 47
- @dead("makeBy") let makeBy = (c, f) => Array.makeBy(c, f)->toT
+ @dead("makeBy") let makeBy = (c, f) => Array.makeByU(c, f)->toT
Warning Dead Value
ImmutableArray.res:49:3-70
@@ -3099,10 +2975,10 @@ File References
@dead("makeByAndShuffleU") let makeByAndShuffleU = (c, f) => Array.makeByAndShuffleU(c, f)->toT
Warning Dead Value
- ImmutableArray.res:50:3-68
+ ImmutableArray.res:50:3-69
makeByAndShuffle is never used
<-- line 50
- @dead("makeByAndShuffle") let makeByAndShuffle = (c, f) => Array.makeByAndShuffle(c, f)->toT
+ @dead("makeByAndShuffle") let makeByAndShuffle = (c, f) => Array.makeByAndShuffleU(c, f)->toT
Warning Dead Value
ImmutableArray.res:52:3-61
@@ -3117,10 +2993,10 @@ File References
@dead("zipByU") let zipByU = (a1, a2, f) => Array.zipByU(fromT(a1), fromT(a2), f)->toT
Warning Dead Value
- ImmutableArray.res:55:3-70
+ ImmutableArray.res:55:3-71
zipBy is never used
<-- line 55
- @dead("zipBy") let zipBy = (a1, a2, f) => Array.zipBy(fromT(a1), fromT(a2), f)->toT
+ @dead("zipBy") let zipBy = (a1, a2, f) => Array.zipByU(fromT(a1), fromT(a2), f)->toT
Warning Dead Value
ImmutableArray.res:57:3-47
@@ -3165,10 +3041,10 @@ File References
@dead("forEachU") let forEachU = (a, f) => Array.forEachU(a->fromT, f)
Warning Dead Value
- ImmutableArray.res:70:3-52
+ ImmutableArray.res:70:3-53
forEach is never used
<-- line 70
- @dead("forEach") let forEach = (a, f) => Array.forEach(a->fromT, f)
+ @dead("forEach") let forEach = (a, f) => Array.forEachU(a->fromT, f)
Warning Dead Value
ImmutableArray.res:72:3-51
@@ -3177,10 +3053,10 @@ File References
@dead("mapU") let mapU = (a, f) => Array.mapU(a->fromT, f)->toT
Warning Dead Value
- ImmutableArray.res:73:3-49
+ ImmutableArray.res:73:3-50
map is never used
<-- line 73
- @dead("map") let map = (a, f) => Array.map(a->fromT, f)->toT
+ @dead("map") let map = (a, f) => Array.mapU(a->fromT, f)->toT
Warning Dead Value
ImmutableArray.res:75:3-71
@@ -3189,10 +3065,10 @@ File References
@dead("keepWithIndexU") let keepWithIndexU = (a, f) => Array.keepWithIndexU(a->fromT, f)->toT
Warning Dead Value
- ImmutableArray.res:76:3-69
+ ImmutableArray.res:76:3-70
keepWithIndex is never used
<-- line 76
- @dead("keepWithIndex") let keepWithIndex = (a, f) => Array.keepWithIndex(a->fromT, f)->toT
+ @dead("keepWithIndex") let keepWithIndex = (a, f) => Array.keepWithIndexU(a->fromT, f)->toT
Warning Dead Value
ImmutableArray.res:78:3-59
@@ -3201,10 +3077,10 @@ File References
@dead("keepMapU") let keepMapU = (a, f) => Array.keepMapU(a->fromT, f)->toT
Warning Dead Value
- ImmutableArray.res:79:3-57
+ ImmutableArray.res:79:3-58
keepMap is never used
<-- line 79
- @dead("keepMap") let keepMap = (a, f) => Array.keepMap(a->fromT, f)->toT
+ @dead("keepMap") let keepMap = (a, f) => Array.keepMapU(a->fromT, f)->toT
Warning Dead Value
ImmutableArray.res:81:3-72
@@ -3213,10 +3089,10 @@ File References
@dead("forEachWithIndexU") let forEachWithIndexU = (a, f) => Array.forEachWithIndexU(a->fromT, f)
Warning Dead Value
- ImmutableArray.res:82:3-70
+ ImmutableArray.res:82:3-71
forEachWithIndex is never used
<-- line 82
- @dead("forEachWithIndex") let forEachWithIndex = (a, f) => Array.forEachWithIndex(a->fromT, f)
+ @dead("forEachWithIndex") let forEachWithIndex = (a, f) => Array.forEachWithIndexU(a->fromT, f)
Warning Dead Value
ImmutableArray.res:84:3-69
@@ -3225,10 +3101,10 @@ File References
@dead("mapWithIndexU") let mapWithIndexU = (a, f) => Array.mapWithIndexU(a->fromT, f)->toT
Warning Dead Value
- ImmutableArray.res:85:3-67
+ ImmutableArray.res:85:3-68
mapWithIndex is never used
<-- line 85
- @dead("mapWithIndex") let mapWithIndex = (a, f) => Array.mapWithIndex(a->fromT, f)->toT
+ @dead("mapWithIndex") let mapWithIndex = (a, f) => Array.mapWithIndexU(a->fromT, f)->toT
Warning Dead Value
ImmutableArray.res:87:3-64
@@ -3237,10 +3113,10 @@ File References
@dead("partitionU") let partitionU = (a, f) => Array.partitionU(a->fromT, f)->toT2
Warning Dead Value
- ImmutableArray.res:88:3-62
+ ImmutableArray.res:88:3-63
partition is never used
<-- line 88
- @dead("partition") let partition = (a, f) => Array.partition(a->fromT, f)->toT2
+ @dead("partition") let partition = (a, f) => Array.partitionU(a->fromT, f)->toT2
Warning Dead Value
ImmutableArray.res:90:3-58
@@ -3249,10 +3125,10 @@ File References
@dead("reduceU") let reduceU = (a, b, f) => Array.reduceU(a->fromT, b, f)
Warning Dead Value
- ImmutableArray.res:91:3-56
+ ImmutableArray.res:91:3-57
reduce is never used
<-- line 91
- @dead("reduce") let reduce = (a, b, f) => Array.reduce(a->fromT, b, f)
+ @dead("reduce") let reduce = (a, b, f) => Array.reduceU(a->fromT, b, f)
Warning Dead Value
ImmutableArray.res:93:3-72
@@ -3261,10 +3137,10 @@ File References
@dead("reduceReverseU") let reduceReverseU = (a, b, f) => Array.reduceReverseU(a->fromT, b, f)
Warning Dead Value
- ImmutableArray.res:94:3-70
+ ImmutableArray.res:94:3-71
reduceReverse is never used
<-- line 94
- @dead("reduceReverse") let reduceReverse = (a, b, f) => Array.reduceReverse(a->fromT, b, f)
+ @dead("reduceReverse") let reduceReverse = (a, b, f) => Array.reduceReverseU(a->fromT, b, f)
Warning Dead Value
ImmutableArray.res:96:3-91
@@ -3273,10 +3149,10 @@ File References
@dead("reduceReverse2U") let reduceReverse2U = (a1, a2, c, f) => Array.reduceReverse2U(fromT(a1), fromT(a2), c, f)
Warning Dead Value
- ImmutableArray.res:97:3-89
+ ImmutableArray.res:97:3-90
reduceReverse2 is never used
<-- line 97
- @dead("reduceReverse2") let reduceReverse2 = (a1, a2, c, f) => Array.reduceReverse2(fromT(a1), fromT(a2), c, f)
+ @dead("reduceReverse2") let reduceReverse2 = (a1, a2, c, f) => Array.reduceReverse2U(fromT(a1), fromT(a2), c, f)
Warning Dead Value
ImmutableArray.res:99:3-48
@@ -3285,10 +3161,10 @@ File References
@dead("someU") let someU = (a, f) => Array.someU(a->fromT, f)
Warning Dead Value
- ImmutableArray.res:100:3-46
+ ImmutableArray.res:100:3-47
some is never used
<-- line 100
- @dead("some") let some = (a, f) => Array.some(a->fromT, f)
+ @dead("some") let some = (a, f) => Array.someU(a->fromT, f)
Warning Dead Value
ImmutableArray.res:102:3-50
@@ -3297,10 +3173,10 @@ File References
@dead("everyU") let everyU = (a, f) => Array.everyU(a->fromT, f)
Warning Dead Value
- ImmutableArray.res:103:3-48
+ ImmutableArray.res:103:3-49
every is never used
<-- line 103
- @dead("every") let every = (a, f) => Array.every(a->fromT, f)
+ @dead("every") let every = (a, f) => Array.everyU(a->fromT, f)
Warning Dead Value
ImmutableArray.res:105:3-69
@@ -3309,10 +3185,10 @@ File References
@dead("every2U") let every2U = (a1, a2, f) => Array.every2U(fromT(a1), fromT(a2), f)
Warning Dead Value
- ImmutableArray.res:106:3-67
+ ImmutableArray.res:106:3-68
every2 is never used
<-- line 106
- @dead("every2") let every2 = (a1, a2, f) => Array.every2(fromT(a1), fromT(a2), f)
+ @dead("every2") let every2 = (a1, a2, f) => Array.every2U(fromT(a1), fromT(a2), f)
Warning Dead Value
ImmutableArray.res:108:3-67
@@ -3321,10 +3197,10 @@ File References
@dead("some2U") let some2U = (a1, a2, f) => Array.some2U(fromT(a1), fromT(a2), f)
Warning Dead Value
- ImmutableArray.res:109:3-65
+ ImmutableArray.res:109:3-66
some2 is never used
<-- line 109
- @dead("some2") let some2 = (a1, a2, f) => Array.some2(fromT(a1), fromT(a2), f)
+ @dead("some2") let some2 = (a1, a2, f) => Array.some2U(fromT(a1), fromT(a2), f)
Warning Dead Value
ImmutableArray.res:111:3-63
@@ -3333,10 +3209,10 @@ File References
@dead("cmpU") let cmpU = (a1, a2, f) => Array.cmpU(fromT(a1), fromT(a2), f)
Warning Dead Value
- ImmutableArray.res:112:3-61
+ ImmutableArray.res:112:3-62
cmp is never used
<-- line 112
- @dead("cmp") let cmp = (a1, a2, f) => Array.cmp(fromT(a1), fromT(a2), f)
+ @dead("cmp") let cmp = (a1, a2, f) => Array.cmpU(fromT(a1), fromT(a2), f)
Warning Dead Value
ImmutableArray.res:114:3-61
@@ -3345,10 +3221,10 @@ File References
@dead("eqU") let eqU = (a1, a2, f) => Array.eqU(fromT(a1), fromT(a2), f)
Warning Dead Value
- ImmutableArray.res:115:3-59
+ ImmutableArray.res:115:3-60
eq is never used
<-- line 115
- @dead("eq") let eq = (a1, a2, f) => Array.eq(fromT(a1), fromT(a2), f)
+ @dead("eq") let eq = (a1, a2, f) => Array.eqU(fromT(a1), fromT(a2), f)
Warning Dead Value
ImmutableArray.resi:12:1-31
@@ -3435,10 +3311,10 @@ File References
@dead("rangeBy") let rangeBy: (int, int, ~step: int) => t
Warning Dead Value
- ImmutableArray.resi:41:1-42
+ ImmutableArray.resi:41:1-38
makeByU is never used
<-- line 41
- @dead("makeByU") let makeByU: (int, (. int) => 'a) => t<'a>
+ @dead("makeByU") let makeByU: (int, int => 'a) => t<'a>
Warning Dead Value
ImmutableArray.resi:42:1-37
@@ -3447,10 +3323,10 @@ File References
@dead("makeBy") let makeBy: (int, int => 'a) => t<'a>
Warning Dead Value
- ImmutableArray.resi:44:1-52
+ ImmutableArray.resi:44:1-48
makeByAndShuffleU is never used
<-- line 44
- @dead("makeByAndShuffleU") let makeByAndShuffleU: (int, (. int) => 'a) => t<'a>
+ @dead("makeByAndShuffleU") let makeByAndShuffleU: (int, int => 'a) => t<'a>
Warning Dead Value
ImmutableArray.resi:45:1-47
@@ -3465,10 +3341,10 @@ File References
@dead("zip") let zip: (t<'a>, t<'b>) => t<('a, 'b)>
Warning Dead Value
- ImmutableArray.resi:49:1-53
+ ImmutableArray.resi:49:1-51
zipByU is never used
<-- line 49
- @dead("zipByU") let zipByU: (t<'a>, t<'b>, (. 'a, 'b) => 'c) => t<'c>
+ @dead("zipByU") let zipByU: (t<'a>, t<'b>, ('a, 'b) => 'c) => t<'c>
Warning Dead Value
ImmutableArray.resi:50:1-50
@@ -3513,10 +3389,10 @@ File References
@dead("copy") let copy: t<'a> => t<'a>
Warning Dead Value
- ImmutableArray.resi:64:1-45
+ ImmutableArray.resi:64:1-41
forEachU is never used
<-- line 64
- @dead("forEachU") let forEachU: (t<'a>, (. 'a) => unit) => unit
+ @dead("forEachU") let forEachU: (t<'a>, 'a => unit) => unit
Warning Dead Value
ImmutableArray.resi:65:1-40
@@ -3525,10 +3401,10 @@ File References
@dead("forEach") let forEach: (t<'a>, 'a => unit) => unit
Warning Dead Value
- ImmutableArray.resi:67:1-40
+ ImmutableArray.resi:67:1-36
mapU is never used
<-- line 67
- @dead("mapU") let mapU: (t<'a>, (. 'a) => 'b) => t<'b>
+ @dead("mapU") let mapU: (t<'a>, 'a => 'b) => t<'b>
Warning Dead Value
ImmutableArray.resi:68:1-35
@@ -3537,10 +3413,10 @@ File References
@dead("map") let map: (t<'a>, 'a => 'b) => t<'b>
Warning Dead Value
- ImmutableArray.resi:70:1-57
+ ImmutableArray.resi:70:1-55
keepWithIndexU is never used
<-- line 70
- @dead("keepWithIndexU") let keepWithIndexU: (t<'a>, (. 'a, int) => bool) => t<'a>
+ @dead("keepWithIndexU") let keepWithIndexU: (t<'a>, ('a, int) => bool) => t<'a>
Warning Dead Value
ImmutableArray.resi:71:1-54
@@ -3549,10 +3425,10 @@ File References
@dead("keepWithIndex") let keepWithIndex: (t<'a>, ('a, int) => bool) => t<'a>
Warning Dead Value
- ImmutableArray.resi:73:1-52
+ ImmutableArray.resi:73:1-48
keepMapU is never used
<-- line 73
- @dead("keepMapU") let keepMapU: (t<'a>, (. 'a) => option<'b>) => t<'b>
+ @dead("keepMapU") let keepMapU: (t<'a>, 'a => option<'b>) => t<'b>
Warning Dead Value
ImmutableArray.resi:74:1-47
@@ -3561,10 +3437,10 @@ File References
@dead("keepMap") let keepMap: (t<'a>, 'a => option<'b>) => t<'b>
Warning Dead Value
- ImmutableArray.resi:76:1-59
+ ImmutableArray.resi:76:1-57
forEachWithIndexU is never used
<-- line 76
- @dead("forEachWithIndexU") let forEachWithIndexU: (t<'a>, (. int, 'a) => unit) => unit
+ @dead("forEachWithIndexU") let forEachWithIndexU: (t<'a>, (int, 'a) => unit) => unit
Warning Dead Value
ImmutableArray.resi:77:1-56
@@ -3573,10 +3449,10 @@ File References
@dead("forEachWithIndex") let forEachWithIndex: (t<'a>, (int, 'a) => unit) => unit
Warning Dead Value
- ImmutableArray.resi:79:1-54
+ ImmutableArray.resi:79:1-52
mapWithIndexU is never used
<-- line 79
- @dead("mapWithIndexU") let mapWithIndexU: (t<'a>, (. int, 'a) => 'b) => t<'b>
+ @dead("mapWithIndexU") let mapWithIndexU: (t<'a>, (int, 'a) => 'b) => t<'b>
Warning Dead Value
ImmutableArray.resi:80:1-51
@@ -3585,10 +3461,10 @@ File References
@dead("mapWithIndex") let mapWithIndex: (t<'a>, (int, 'a) => 'b) => t<'b>
Warning Dead Value
- ImmutableArray.resi:82:1-57
+ ImmutableArray.resi:82:1-53
partitionU is never used
<-- line 82
- @dead("partitionU") let partitionU: (t<'a>, (. 'a) => bool) => (t<'a>, t<'a>)
+ @dead("partitionU") let partitionU: (t<'a>, 'a => bool) => (t<'a>, t<'a>)
Warning Dead Value
ImmutableArray.resi:83:1-52
@@ -3597,10 +3473,10 @@ File References
@dead("partition") let partition: (t<'a>, 'a => bool) => (t<'a>, t<'a>)
Warning Dead Value
- ImmutableArray.resi:85:1-48
+ ImmutableArray.resi:85:1-46
reduceU is never used
<-- line 85
- @dead("reduceU") let reduceU: (t<'a>, 'b, (. 'b, 'a) => 'b) => 'b
+ @dead("reduceU") let reduceU: (t<'a>, 'b, ('b, 'a) => 'b) => 'b
Warning Dead Value
ImmutableArray.resi:86:1-45
@@ -3609,10 +3485,10 @@ File References
@dead("reduce") let reduce: (t<'a>, 'b, ('b, 'a) => 'b) => 'b
Warning Dead Value
- ImmutableArray.resi:88:1-55
+ ImmutableArray.resi:88:1-53
reduceReverseU is never used
<-- line 88
- @dead("reduceReverseU") let reduceReverseU: (t<'a>, 'b, (. 'b, 'a) => 'b) => 'b
+ @dead("reduceReverseU") let reduceReverseU: (t<'a>, 'b, ('b, 'a) => 'b) => 'b
Warning Dead Value
ImmutableArray.resi:89:1-52
@@ -3621,10 +3497,10 @@ File References
@dead("reduceReverse") let reduceReverse: (t<'a>, 'b, ('b, 'a) => 'b) => 'b
Warning Dead Value
- ImmutableArray.resi:91:1-67
+ ImmutableArray.resi:91:1-65
reduceReverse2U is never used
<-- line 91
- @dead("reduceReverse2U") let reduceReverse2U: (t<'a>, t<'b>, 'c, (. 'c, 'a, 'b) => 'c) => 'c
+ @dead("reduceReverse2U") let reduceReverse2U: (t<'a>, t<'b>, 'c, ('c, 'a, 'b) => 'c) => 'c
Warning Dead Value
ImmutableArray.resi:92:1-64
@@ -3633,10 +3509,10 @@ File References
@dead("reduceReverse2") let reduceReverse2: (t<'a>, t<'b>, 'c, ('c, 'a, 'b) => 'c) => 'c
Warning Dead Value
- ImmutableArray.resi:94:1-42
+ ImmutableArray.resi:94:1-38
someU is never used
<-- line 94
- @dead("someU") let someU: (t<'a>, (. 'a) => bool) => bool
+ @dead("someU") let someU: (t<'a>, 'a => bool) => bool
Warning Dead Value
ImmutableArray.resi:95:1-37
@@ -3645,10 +3521,10 @@ File References
@dead("some") let some: (t<'a>, 'a => bool) => bool
Warning Dead Value
- ImmutableArray.resi:97:1-43
+ ImmutableArray.resi:97:1-39
everyU is never used
<-- line 97
- @dead("everyU") let everyU: (t<'a>, (. 'a) => bool) => bool
+ @dead("everyU") let everyU: (t<'a>, 'a => bool) => bool
Warning Dead Value
ImmutableArray.resi:98:1-38
@@ -3657,10 +3533,10 @@ File References
@dead("every") let every: (t<'a>, 'a => bool) => bool
Warning Dead Value
- ImmutableArray.resi:100:1-55
+ ImmutableArray.resi:100:1-53
every2U is never used
<-- line 100
- @dead("every2U") let every2U: (t<'a>, t<'b>, (. 'a, 'b) => bool) => bool
+ @dead("every2U") let every2U: (t<'a>, t<'b>, ('a, 'b) => bool) => bool
Warning Dead Value
ImmutableArray.resi:101:1-52
@@ -3669,10 +3545,10 @@ File References
@dead("every2") let every2: (t<'a>, t<'b>, ('a, 'b) => bool) => bool
Warning Dead Value
- ImmutableArray.resi:103:1-54
+ ImmutableArray.resi:103:1-52
some2U is never used
<-- line 103
- @dead("some2U") let some2U: (t<'a>, t<'b>, (. 'a, 'b) => bool) => bool
+ @dead("some2U") let some2U: (t<'a>, t<'b>, ('a, 'b) => bool) => bool
Warning Dead Value
ImmutableArray.resi:104:1-51
@@ -3681,10 +3557,10 @@ File References
@dead("some2") let some2: (t<'a>, t<'b>, ('a, 'b) => bool) => bool
Warning Dead Value
- ImmutableArray.resi:106:1-50
+ ImmutableArray.resi:106:1-48
cmpU is never used
<-- line 106
- @dead("cmpU") let cmpU: (t<'a>, t<'a>, (. 'a, 'a) => int) => int
+ @dead("cmpU") let cmpU: (t<'a>, t<'a>, ('a, 'a) => int) => int
Warning Dead Value
ImmutableArray.resi:107:1-47
@@ -3693,10 +3569,10 @@ File References
@dead("cmp") let cmp: (t<'a>, t<'a>, ('a, 'a) => int) => int
Warning Dead Value
- ImmutableArray.resi:109:1-51
+ ImmutableArray.resi:109:1-49
eqU is never used
<-- line 109
- @dead("eqU") let eqU: (t<'a>, t<'a>, (. 'a, 'a) => bool) => bool
+ @dead("eqU") let eqU: (t<'a>, t<'a>, ('a, 'a) => bool) => bool
Warning Dead Value
ImmutableArray.resi:110:1-48
@@ -4294,4 +4170,4 @@ File References
<-- line 96
type variant1Object = | @dead("variant1Object.R") R(payload)
- Analysis reported 306 issues (Incorrect Dead Annotation:1, Warning Dead Exception:2, Warning Dead Module:22, Warning Dead Type:86, Warning Dead Value:177, Warning Dead Value With Side Effects:2, Warning Redundant Optional Argument:5, Warning Unused Argument:11)
+ Analysis reported 290 issues (Incorrect Dead Annotation:1, Warning Dead Exception:2, Warning Dead Module:22, Warning Dead Type:86, Warning Dead Value:176, Warning Dead Value With Side Effects:3)
diff --git a/analysis/reanalyze/examples/deadcode/expected/exception.txt b/analysis/reanalyze/examples/deadcode/expected/exception.txt
index 171a11501..23d1303b0 100644
--- a/analysis/reanalyze/examples/deadcode/expected/exception.txt
+++ b/analysis/reanalyze/examples/deadcode/expected/exception.txt
@@ -1,8 +1,12 @@
Exception Analysis
- Exn.res:1:5-10
- raises might raise Not_found (Exn.res:1:19) and is not annotated with @raises(Not_found)
+ BsJson.res:4:5-15
+ testBsJson2 raises nothing and is annotated with redundant @raises(JsonCombinators.DecodeError)
+
+ Exception Analysis
+ Exn.res:17:5-23
+ raisesWithAnnotaion raises nothing and is annotated with redundant @raises(Not_found)
Exception Analysis
Exn.res:19:5-28
@@ -24,45 +28,33 @@
Exn.res:26:5-19
incompleteMatch might raise Match_failure (Exn.res:27:2) and is not annotated with @raises(Match_failure)
- Exception Analysis
- Exn.res:34:5-13
- twoRaises might raise [A (Exn.res:36:4), B (Exn.res:39:4)] and is not annotated with @raises([A, B])
-
- Exception Analysis
- Exn.res:43:5-14
- sequencing might raise A (Exn.res:44:2) and is not annotated with @raises(A)
-
- Exception Analysis
- Exn.res:50:5-14
- wrongCatch might raise B (Exn.res:51:6) and is not annotated with @raises(B)
-
Exception Analysis
Exn.res:56:5-15
- wrongCatch2 might raise [C (Exn.res:57:24), Match_failure (Exn.res:57:2)] and is not annotated with @raises([C, Match_failure])
+ wrongCatch2 might raise Match_failure (Exn.res:57:2) and is not annotated with @raises(Match_failure)
Exception Analysis
Exn.res:64:5-19
- raise2Annotate3 might raise [A (Exn.res:66:4), B (Exn.res:69:4)] and is annotated with redundant @raises(C)
+ raise2Annotate3 raises nothing and is annotated with redundant @raises([A, B, C])
Exception Analysis
- Exn.res:75:5-24
- parse_json_from_file might raise Error (Exn.res:78:4) and is not annotated with @raises(Error)
+ Exn.res:100:5-16
+ indirectCall might raise Not_found (Exn.res:100:31) and is not annotated with @raises(Not_found)
Exception Analysis
- Exn.res:84:5-11
- reRaise might raise B (Exn.res:86:19) and is not annotated with @raises(B)
+ Exn.res:125:5-13
+ raiseAtAt raises nothing and is annotated with redundant @raises(Not_found)
Exception Analysis
- Exn.res:95:5-22
- raiseInInternalLet might raise A (Exn.res:96:14) and is not annotated with @raises(A)
+ Exn.res:128:5-13
+ raisePipe raises nothing and is annotated with redundant @raises(Not_found)
Exception Analysis
- Exn.res:100:5-16
- indirectCall might raise Not_found (Exn.res:100:31) and is not annotated with @raises(Not_found)
+ Exn.res:131:5-14
+ raiseArrow raises nothing and is annotated with redundant @raises(Not_found)
Exception Analysis
- Exn.res:148:5-16
- severalCases might raise Failure (Exn.res:150:13 Exn.res:151:13 Exn.res:152:15) and is not annotated with @raises(Failure)
+ Exn.res:157:5-30
+ genericRaiseIsNotSupported raises nothing and is annotated with redundant @raises(genericException)
Exception Analysis
Exn.res:159:32-56
@@ -89,24 +81,12 @@
String.uncapitalize_ascii does not raise and is annotated with redundant @doesNotRaise
Exception Analysis
- Exn.res:176:5-23
- redundantAnnotation raises nothing and is annotated with redundant @raises(Invalid_argument)
-
- Exception Analysis
- Exn.res:178:5-6
- _x might raise A (Exn.res:178:9) and is not annotated with @raises(A)
-
- Exception Analysis
- Exn.res:180:5
- _ might raise A (Exn.res:180:8) and is not annotated with @raises(A)
-
- Exception Analysis
- Exn.res:182:5-6
- () might raise A (Exn.res:182:9) and is not annotated with @raises(A)
+ Exn.res:173:5-9
+ exits raises nothing and is annotated with redundant @raises(exit)
Exception Analysis
- Exn.res:184:1-16
- Toplevel expression might raise Not_found (Exn.res:184:0) and is not annotated with @raises(Not_found)
+ Exn.res:176:5-23
+ redundantAnnotation raises nothing and is annotated with redundant @raises(Invalid_argument)
Exception Analysis
Exn.res:186:1-19
@@ -123,5 +103,21 @@
Exception Analysis
ExnA.res:1:5-7
bar might raise Not_found (ExnA.res:1:16) and is not annotated with @raises(Not_found)
+
+ Exception Analysis
+ ExnB.res:2:5-7
+ foo raises nothing and is annotated with redundant @raises(Not_found)
+
+ Exception Analysis
+ InnerModules.res:2:5-15
+ wrapExitTop raises nothing and is annotated with redundant @raises(exit)
+
+ Exception Analysis
+ InnerModules.res:6:7-16
+ wrapExitM1 raises nothing and is annotated with redundant @raises(exit)
+
+ Exception Analysis
+ InnerModules.res:16:9-18
+ wrapExitM2 raises nothing and is annotated with redundant @raises(exit)
- Analysis reported 31 issues (Exception Analysis:31)
+ Analysis reported 30 issues (Exception Analysis:30)
diff --git a/analysis/reanalyze/examples/deadcode/package-lock.json b/analysis/reanalyze/examples/deadcode/package-lock.json
index 1ca4ed0ba..8bbb0c001 100644
--- a/analysis/reanalyze/examples/deadcode/package-lock.json
+++ b/analysis/reanalyze/examples/deadcode/package-lock.json
@@ -8,38 +8,45 @@
"name": "deadcode",
"version": "0.1.0",
"dependencies": {
- "@glennsl/bs-json": "^5.0.4",
- "@rescript/react": "^0.10.3"
+ "@glennsl/rescript-json-combinators": "^1.4.0",
+ "@rescript/react": "^0.13.0"
},
"devDependencies": {
- "react": "^16.13.1",
- "react-dom": "^16.8.6",
- "rescript": "^10.1.2"
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "rescript": "^11.1.4"
}
},
- "node_modules/@glennsl/bs-json": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/@glennsl/bs-json/-/bs-json-5.0.4.tgz",
- "integrity": "sha512-Th9DetZjRlMZrb74kgGJ44oWcoFyOTE884WlSuXft0Cd+J09vHRxiB7eVyK7Gthb4cSevsBBJDHYAbGGL25wPw=="
+ "node_modules/@glennsl/rescript-json-combinators": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@glennsl/rescript-json-combinators/-/rescript-json-combinators-1.4.0.tgz",
+ "integrity": "sha512-tIhAJoAqyfF3Mbd66Koipl6WZxLKJTJFHTx99jDG5+YAv/Hr6XrXYryCXs1Qi8BWUwx5WQcgKay3lUzElUYC7Q==",
+ "license": "(LGPL-3.0 OR MPL-2.0)",
+ "engines": {
+ "node": "*"
+ }
},
"node_modules/@rescript/react": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.10.3.tgz",
- "integrity": "sha512-Lf9rzrR3bQPKJjOK3PBRa/B3xrJ7CqQ1HYr9VHPVxJidarIJJFZBhj0Dg1uZURX+Wg/xiP0PHFxXmdj2bK8Vxw==",
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.13.1.tgz",
+ "integrity": "sha512-VIWtu/sAJyYmDVoAhit0LHDYQrW6RqZ6z8sh8san5cjEAT4klv8JWkiaSK3FGUfooUDkGUXXgKTkqyj8zRR21w==",
+ "license": "MIT",
"peerDependencies": {
- "react": ">=16.8.1",
- "react-dom": ">=16.8.1"
+ "react": ">=18.0.0",
+ "react-dom": ">=18.0.0"
}
},
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
},
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
},
@@ -47,89 +54,67 @@
"loose-envify": "cli.js"
}
},
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/prop-types": {
- "version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dependencies": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.13.1"
- }
- },
"node_modules/react": {
- "version": "16.14.0",
- "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
- "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==",
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "license": "MIT",
"dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2"
+ "loose-envify": "^1.1.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
- "version": "16.14.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz",
- "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==",
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "scheduler": "^0.19.1"
+ "scheduler": "^0.23.2"
},
"peerDependencies": {
- "react": "^16.14.0"
+ "react": "^18.3.1"
}
},
- "node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
"node_modules/rescript": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.2.tgz",
- "integrity": "sha512-PPdhOiN+lwqxQ0qvzHc1KW0TL12LDy2X+qo/JIMIP3bMfiH0vxQH2e/lXuoutWWm04fGQGTv3hWH+gKW3/UyfA==",
+ "version": "11.1.4",
+ "resolved": "https://registry.npmjs.org/rescript/-/rescript-11.1.4.tgz",
+ "integrity": "sha512-0bGU0bocihjSC6MsE3TMjHjY0EUpchyrREquLS8VsZ3ohSMD+VHUEwimEfB3kpBI1vYkw3UFZ3WD8R28guz/Vw==",
"dev": true,
"hasInstallScript": true,
+ "license": "SEE LICENSE IN LICENSE",
"bin": {
"bsc": "bsc",
- "bsrefmt": "bsrefmt",
"bstracing": "lib/bstracing",
"rescript": "rescript"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/scheduler": {
- "version": "0.19.1",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
- "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==",
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "license": "MIT",
"dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
+ "loose-envify": "^1.1.0"
}
}
},
"dependencies": {
- "@glennsl/bs-json": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/@glennsl/bs-json/-/bs-json-5.0.4.tgz",
- "integrity": "sha512-Th9DetZjRlMZrb74kgGJ44oWcoFyOTE884WlSuXft0Cd+J09vHRxiB7eVyK7Gthb4cSevsBBJDHYAbGGL25wPw=="
+ "@glennsl/rescript-json-combinators": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@glennsl/rescript-json-combinators/-/rescript-json-combinators-1.4.0.tgz",
+ "integrity": "sha512-tIhAJoAqyfF3Mbd66Koipl6WZxLKJTJFHTx99jDG5+YAv/Hr6XrXYryCXs1Qi8BWUwx5WQcgKay3lUzElUYC7Q=="
},
"@rescript/react": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.10.3.tgz",
- "integrity": "sha512-Lf9rzrR3bQPKJjOK3PBRa/B3xrJ7CqQ1HYr9VHPVxJidarIJJFZBhj0Dg1uZURX+Wg/xiP0PHFxXmdj2bK8Vxw==",
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.13.1.tgz",
+ "integrity": "sha512-VIWtu/sAJyYmDVoAhit0LHDYQrW6RqZ6z8sh8san5cjEAT4klv8JWkiaSK3FGUfooUDkGUXXgKTkqyj8zRR21w==",
"requires": {}
},
"js-tokens": {
@@ -145,60 +130,35 @@
"js-tokens": "^3.0.0 || ^4.0.0"
}
},
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
- },
- "prop-types": {
- "version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "requires": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.13.1"
- }
- },
"react": {
- "version": "16.14.0",
- "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
- "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==",
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
"requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2"
+ "loose-envify": "^1.1.0"
}
},
"react-dom": {
- "version": "16.14.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz",
- "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==",
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
"requires": {
"loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "scheduler": "^0.19.1"
+ "scheduler": "^0.23.2"
}
},
- "react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
"rescript": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.2.tgz",
- "integrity": "sha512-PPdhOiN+lwqxQ0qvzHc1KW0TL12LDy2X+qo/JIMIP3bMfiH0vxQH2e/lXuoutWWm04fGQGTv3hWH+gKW3/UyfA==",
+ "version": "11.1.4",
+ "resolved": "https://registry.npmjs.org/rescript/-/rescript-11.1.4.tgz",
+ "integrity": "sha512-0bGU0bocihjSC6MsE3TMjHjY0EUpchyrREquLS8VsZ3ohSMD+VHUEwimEfB3kpBI1vYkw3UFZ3WD8R28guz/Vw==",
"dev": true
},
"scheduler": {
- "version": "0.19.1",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
- "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==",
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
"requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
+ "loose-envify": "^1.1.0"
}
}
}
diff --git a/analysis/reanalyze/examples/deadcode/package.json b/analysis/reanalyze/examples/deadcode/package.json
index 651648f5a..bce7173dc 100644
--- a/analysis/reanalyze/examples/deadcode/package.json
+++ b/analysis/reanalyze/examples/deadcode/package.json
@@ -3,12 +3,12 @@
"version": "0.1.0",
"private": true,
"devDependencies": {
- "react": "^16.13.1",
- "react-dom": "^16.8.6",
- "rescript": "^10.1.2"
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "rescript": "^11.1.4"
},
"dependencies": {
- "@glennsl/bs-json": "^5.0.4",
- "@rescript/react": "^0.10.3"
+ "@glennsl/rescript-json-combinators": "^1.4.0",
+ "@rescript/react": "^0.13.0"
}
}
diff --git a/analysis/reanalyze/examples/deadcode/bsconfig.json b/analysis/reanalyze/examples/deadcode/rescript.json
similarity index 77%
rename from analysis/reanalyze/examples/deadcode/bsconfig.json
rename to analysis/reanalyze/examples/deadcode/rescript.json
index a0e2baae9..24600929b 100644
--- a/analysis/reanalyze/examples/deadcode/bsconfig.json
+++ b/analysis/reanalyze/examples/deadcode/rescript.json
@@ -8,7 +8,7 @@
"name": "sample-typescript-app",
"bsc-flags": ["-bs-super-errors -w a"],
"jsx": { "version": 3 },
- "bs-dependencies": ["@rescript/react", "@glennsl/bs-json"],
+ "bs-dependencies": ["@rescript/react", "@glennsl/rescript-json-combinators"],
"sources": [
{
"dir": "src",
@@ -16,7 +16,7 @@
}
],
"package-specs": {
- "module": "es6",
+ "module": "esmodule",
"in-source": true
},
"suffix": ".bs.js"
diff --git a/analysis/reanalyze/examples/deadcode/src/CreateErrorHandler1.bs.js b/analysis/reanalyze/examples/deadcode/src/CreateErrorHandler1.bs.js
index d7b40f068..cf2b4832d 100644
--- a/analysis/reanalyze/examples/deadcode/src/CreateErrorHandler1.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/CreateErrorHandler1.bs.js
@@ -1,6 +1,5 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-import * as Curry from "rescript/lib/es6/curry.js";
import * as ErrorHandler from "./ErrorHandler.bs.js";
function notification(s) {
@@ -16,7 +15,7 @@ var Error1 = {
var MyErrorHandler = ErrorHandler.Make(Error1);
-Curry._1(MyErrorHandler.notify, "abc");
+MyErrorHandler.notify("abc");
export {
Error1 ,
diff --git a/analysis/reanalyze/examples/deadcode/src/DeadRT.bs.js b/analysis/reanalyze/examples/deadcode/src/DeadRT.bs.js
index 028c363b5..fd1a5d285 100644
--- a/analysis/reanalyze/examples/deadcode/src/DeadRT.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/DeadRT.bs.js
@@ -1,7 +1,7 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-console.log(/* Kaboom */0);
+console.log("Kaboom");
export {
diff --git a/analysis/reanalyze/examples/deadcode/src/DeadTest.bs.js b/analysis/reanalyze/examples/deadcode/src/DeadTest.bs.js
index e7f1190eb..f7d663869 100644
--- a/analysis/reanalyze/examples/deadcode/src/DeadTest.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/DeadTest.bs.js
@@ -19,9 +19,13 @@ var M = {
};
var VariantUsedOnlyInImplementation = {
- a: /* A */0
+ a: "A"
};
+((function (x) {
+ return x;
+ })("A"));
+
var UnderscoreInside = {};
var MM = {
@@ -33,9 +37,8 @@ console.log(55);
console.log(DeadValueTest.valueAlive);
-function unusedRec(_param) {
+function unusedRec() {
while(true) {
- _param = undefined;
continue ;
};
}
@@ -45,36 +48,32 @@ function split_map(l) {
return /* [] */0;
}
-function rec1(_param) {
+function rec1() {
while(true) {
- _param = undefined;
continue ;
};
}
-function rec2(_param) {
+function rec2() {
while(true) {
- _param = undefined;
continue ;
};
}
-function recWithCallback(_param) {
+function recWithCallback() {
while(true) {
- _param = undefined;
continue ;
};
}
-function foo(_param) {
+function foo() {
while(true) {
- _param = undefined;
continue ;
};
}
-function bar(param) {
- return foo(undefined);
+function bar() {
+ return foo();
}
function withDefaultValue(paramWithDefaultOpt, y) {
@@ -84,7 +83,8 @@ function withDefaultValue(paramWithDefaultOpt, y) {
var Ext_buffer = {};
-console.log(/* Root */{
+console.log({
+ TAG: "Root",
_0: "xzz"
});
@@ -145,9 +145,9 @@ var GloobLive = {
var WithInclude = {};
-console.log(/* A */0);
+console.log("A");
-function funWithInnerVars(param) {
+function funWithInnerVars() {
return 70;
}
diff --git a/analysis/reanalyze/examples/deadcode/src/DeadTypeTest.bs.js b/analysis/reanalyze/examples/deadcode/src/DeadTypeTest.bs.js
index bb694abe5..3023f997e 100644
--- a/analysis/reanalyze/examples/deadcode/src/DeadTypeTest.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/DeadTypeTest.bs.js
@@ -1,7 +1,7 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-var a = /* A */0;
+var a = "A";
export {
a ,
diff --git a/analysis/reanalyze/examples/deadcode/src/Docstrings.bs.js b/analysis/reanalyze/examples/deadcode/src/Docstrings.bs.js
index e17241f3c..d3c85f50a 100644
--- a/analysis/reanalyze/examples/deadcode/src/Docstrings.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/Docstrings.bs.js
@@ -57,7 +57,7 @@ function grouped(x, y, a, b, c, z) {
return ((((x + y | 0) + a | 0) + b | 0) + c | 0) + z | 0;
}
-function unitArgWithoutConversion(param) {
+function unitArgWithoutConversion() {
return "abc";
}
@@ -65,12 +65,12 @@ function unitArgWithoutConversionU() {
return "abc";
}
-function unitArgWithConversion(param) {
- return /* A */0;
+function unitArgWithConversion() {
+ return "A";
}
function unitArgWithConversionU() {
- return /* A */0;
+ return "A";
}
var flat = 34;
diff --git a/analysis/reanalyze/examples/deadcode/src/ErrorHandler.bs.js b/analysis/reanalyze/examples/deadcode/src/ErrorHandler.bs.js
index 27dcce45a..5008b1460 100644
--- a/analysis/reanalyze/examples/deadcode/src/ErrorHandler.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/ErrorHandler.bs.js
@@ -1,10 +1,9 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-import * as Curry from "rescript/lib/es6/curry.js";
function Make($$Error) {
var notify = function (x) {
- return Curry._1($$Error.notification, x);
+ return $$Error.notification(x);
};
return {
notify: notify
diff --git a/analysis/reanalyze/examples/deadcode/src/Hooks.bs.js b/analysis/reanalyze/examples/deadcode/src/Hooks.bs.js
index 381a9f464..f9fe38af1 100644
--- a/analysis/reanalyze/examples/deadcode/src/Hooks.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/Hooks.bs.js
@@ -1,6 +1,5 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-import * as Curry from "rescript/lib/es6/curry.js";
import * as React from "react";
import * as ImportHooks from "./ImportHooks.bs.js";
import * as ImportHookDefault from "./ImportHookDefault.bs.js";
@@ -14,9 +13,9 @@ function Hooks(Props) {
var count = match[0];
return React.createElement("div", undefined, React.createElement("p", undefined, "Hooks example " + (vehicle.name + (" clicked " + (String(count) + " times")))), React.createElement("button", {
onClick: (function (param) {
- Curry._1(setCount, (function (param) {
- return count + 1 | 0;
- }));
+ setCount(function (param) {
+ return count + 1 | 0;
+ });
})
}, "Click me"), React.createElement(ImportHooks.make, {
person: {
@@ -42,7 +41,7 @@ function Hooks(Props) {
function Hooks$anotherComponent(Props) {
var vehicle = Props.vehicle;
var callback = Props.callback;
- Curry._1(callback, undefined);
+ callback();
return React.createElement("div", undefined, "Another Hook " + vehicle.name);
}
@@ -86,42 +85,18 @@ var NoProps = {
};
function functionWithRenamedArgs(_to, _Type, cb) {
- Curry._1(cb, _to);
+ cb(_to);
return _to.name + _Type.name;
}
function Hooks$componentWithRenamedArgs(Props) {
- var _to = Props.to;
- var _Type = Props.Type;
+ var _to = Props._to;
+ var _Type = Props._Type;
var cb = Props.cb;
- Curry._1(cb, _to);
+ cb(_to);
return _to.name + _Type.name;
}
-function Hooks$makeWithRef(Props) {
- var vehicle = Props.vehicle;
- return function (ref) {
- if (ref == null) {
- return null;
- } else {
- return React.createElement("button", {
- ref: ref
- }, vehicle.name);
- }
- };
-}
-
-var testForwardRef = React.forwardRef(function (param, param$1) {
- return Hooks$makeWithRef(param)(param$1);
- });
-
-var input = React.forwardRef(function (Props, param) {
- var partial_arg = Props.r;
- return React.createElement("div", {
- ref: param
- }, partial_arg.x);
- });
-
function Hooks$polymorphicComponent(Props) {
var param = Props.p;
return param[0].name;
@@ -133,7 +108,7 @@ function Hooks$functionReturningReactElement(Props) {
function Hooks$RenderPropRequiresConversion(Props) {
var renderVehicle = Props.renderVehicle;
- return Curry._1(renderVehicle, {
+ return renderVehicle({
vehicle: {
name: "Car"
},
@@ -159,8 +134,6 @@ var anotherComponent = Hooks$anotherComponent;
var componentWithRenamedArgs = Hooks$componentWithRenamedArgs;
-var makeWithRef = Hooks$makeWithRef;
-
var polymorphicComponent = Hooks$polymorphicComponent;
var functionReturningReactElement = Hooks$functionReturningReactElement;
@@ -169,19 +142,15 @@ var aComponentWithChildren = Hooks$aComponentWithChildren;
export {
make ,
- $$default ,
$$default as default,
anotherComponent ,
Inner ,
NoProps ,
functionWithRenamedArgs ,
componentWithRenamedArgs ,
- makeWithRef ,
- testForwardRef ,
- input ,
polymorphicComponent ,
functionReturningReactElement ,
RenderPropRequiresConversion ,
aComponentWithChildren ,
}
-/* testForwardRef Not a pure module */
+/* react Not a pure module */
diff --git a/analysis/reanalyze/examples/deadcode/src/Hooks.res b/analysis/reanalyze/examples/deadcode/src/Hooks.res
index f35c24287..d8af58768 100644
--- a/analysis/reanalyze/examples/deadcode/src/Hooks.res
+++ b/analysis/reanalyze/examples/deadcode/src/Hooks.res
@@ -12,11 +12,13 @@ let make = (~vehicle) => {
React.string(x["randomString"])}>
- {React.string("child1")} {React.string("child2")}
+ {React.string("child1")}
+ {React.string("child2")}
React.string(x["randomString"])}>
- {React.string("child1")} {React.string("child2")}
+ {React.string("child1")}
+ {React.string("child2")}
}
@@ -66,27 +68,6 @@ let componentWithRenamedArgs = (~_to, ~_Type, ~cb: cb) => {
React.string(_to.name ++ _Type.name)
}
-@genType @react.component
-let makeWithRef = (~vehicle) => {
- let _ = 34
- ref =>
- switch ref->Js.Nullable.toOption {
- | Some(ref) =>
- | None => React.null
- }
-}
-
-@genType
-let testForwardRef = React.forwardRef(makeWithRef)
-
-type r = {x: string}
-
-@genType @react.component
-let input = React.forwardRef((~r, (), ref) => {React.string(r.x)}
)
-
-@genType
-type callback<'input, 'output> = React.callback<'input, 'output>
-
@genType
type testReactContext = React.Context.t
@@ -112,4 +93,7 @@ module RenderPropRequiresConversion = {
@genType @react.component
let aComponentWithChildren = (~vehicle, ~children) =>
- {React.string("Another Hook " ++ vehicle.name)}
children
+
+ {React.string("Another Hook " ++ vehicle.name)}
+
children
+
diff --git a/analysis/reanalyze/examples/deadcode/src/ImmutableArray.bs.js b/analysis/reanalyze/examples/deadcode/src/ImmutableArray.bs.js
index e443f7f25..f21ec352f 100644
--- a/analysis/reanalyze/examples/deadcode/src/ImmutableArray.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/ImmutableArray.bs.js
@@ -50,17 +50,17 @@ var rangeBy = Belt_Array.rangeBy;
var makeByU = Belt_Array.makeByU;
-var makeBy = Belt_Array.makeBy;
+var makeBy = Belt_Array.makeByU;
var makeByAndShuffleU = Belt_Array.makeByAndShuffleU;
-var makeByAndShuffle = Belt_Array.makeByAndShuffle;
+var makeByAndShuffle = Belt_Array.makeByAndShuffleU;
var zip = Belt_Array.zip;
var zipByU = Belt_Array.zipByU;
-var zipBy = Belt_Array.zipBy;
+var zipBy = Belt_Array.zipByU;
var unzip = Belt_Array.unzip;
@@ -78,67 +78,67 @@ function copy(a) {
var forEachU = Belt_Array.forEachU;
-var forEach = Belt_Array.forEach;
+var forEach = Belt_Array.forEachU;
var mapU = Belt_Array.mapU;
-var map = Belt_Array.map;
+var map = Belt_Array.mapU;
var keepWithIndexU = Belt_Array.keepWithIndexU;
-var keepWithIndex = Belt_Array.keepWithIndex;
+var keepWithIndex = Belt_Array.keepWithIndexU;
var keepMapU = Belt_Array.keepMapU;
-var keepMap = Belt_Array.keepMap;
+var keepMap = Belt_Array.keepMapU;
var forEachWithIndexU = Belt_Array.forEachWithIndexU;
-var forEachWithIndex = Belt_Array.forEachWithIndex;
+var forEachWithIndex = Belt_Array.forEachWithIndexU;
var mapWithIndexU = Belt_Array.mapWithIndexU;
-var mapWithIndex = Belt_Array.mapWithIndex;
+var mapWithIndex = Belt_Array.mapWithIndexU;
var partitionU = Belt_Array.partitionU;
-var partition = Belt_Array.partition;
+var partition = Belt_Array.partitionU;
var reduceU = Belt_Array.reduceU;
-var reduce = Belt_Array.reduce;
+var reduce = Belt_Array.reduceU;
var reduceReverseU = Belt_Array.reduceReverseU;
-var reduceReverse = Belt_Array.reduceReverse;
+var reduceReverse = Belt_Array.reduceReverseU;
var reduceReverse2U = Belt_Array.reduceReverse2U;
-var reduceReverse2 = Belt_Array.reduceReverse2;
+var reduceReverse2 = Belt_Array.reduceReverse2U;
var someU = Belt_Array.someU;
-var some = Belt_Array.some;
+var some = Belt_Array.someU;
var everyU = Belt_Array.everyU;
-var every = Belt_Array.every;
+var every = Belt_Array.everyU;
var every2U = Belt_Array.every2U;
-var every2 = Belt_Array.every2;
+var every2 = Belt_Array.every2U;
var some2U = Belt_Array.some2U;
-var some2 = Belt_Array.some2;
+var some2 = Belt_Array.some2U;
var cmpU = Belt_Array.cmpU;
-var cmp = Belt_Array.cmp;
+var cmp = Belt_Array.cmpU;
var eqU = Belt_Array.eqU;
-var eq = Belt_Array.eq;
+var eq = Belt_Array.eqU;
var $$Array$1 = {
get: get
diff --git a/analysis/reanalyze/examples/deadcode/src/ImmutableArray.res b/analysis/reanalyze/examples/deadcode/src/ImmutableArray.res
index 8ed5e0809..69679e217 100644
--- a/analysis/reanalyze/examples/deadcode/src/ImmutableArray.res
+++ b/analysis/reanalyze/examples/deadcode/src/ImmutableArray.res
@@ -44,15 +44,15 @@ module Array = {
let rangeBy = (x, y, ~step) => Array.rangeBy(x, y, ~step)->toT
let makeByU = (c, f) => Array.makeByU(c, f)->toT
- let makeBy = (c, f) => Array.makeBy(c, f)->toT
+ let makeBy = (c, f) => Array.makeByU(c, f)->toT
let makeByAndShuffleU = (c, f) => Array.makeByAndShuffleU(c, f)->toT
- let makeByAndShuffle = (c, f) => Array.makeByAndShuffle(c, f)->toT
+ let makeByAndShuffle = (c, f) => Array.makeByAndShuffleU(c, f)->toT
let zip = (a1, a2) => Array.zip(fromT(a1), fromT(a2))->toTp
let zipByU = (a1, a2, f) => Array.zipByU(fromT(a1), fromT(a2), f)->toT
- let zipBy = (a1, a2, f) => Array.zipBy(fromT(a1), fromT(a2), f)->toT
+ let zipBy = (a1, a2, f) => Array.zipByU(fromT(a1), fromT(a2), f)->toT
let unzip = a => Array.unzip(a->fromTp)->toT2
@@ -67,53 +67,52 @@ module Array = {
let copy = a => Array.copy(a->fromT)->toT
let forEachU = (a, f) => Array.forEachU(a->fromT, f)
- let forEach = (a, f) => Array.forEach(a->fromT, f)
+ let forEach = (a, f) => Array.forEachU(a->fromT, f)
let mapU = (a, f) => Array.mapU(a->fromT, f)->toT
- let map = (a, f) => Array.map(a->fromT, f)->toT
+ let map = (a, f) => Array.mapU(a->fromT, f)->toT
let keepWithIndexU = (a, f) => Array.keepWithIndexU(a->fromT, f)->toT
- let keepWithIndex = (a, f) => Array.keepWithIndex(a->fromT, f)->toT
+ let keepWithIndex = (a, f) => Array.keepWithIndexU(a->fromT, f)->toT
let keepMapU = (a, f) => Array.keepMapU(a->fromT, f)->toT
- let keepMap = (a, f) => Array.keepMap(a->fromT, f)->toT
+ let keepMap = (a, f) => Array.keepMapU(a->fromT, f)->toT
let forEachWithIndexU = (a, f) => Array.forEachWithIndexU(a->fromT, f)
- let forEachWithIndex = (a, f) => Array.forEachWithIndex(a->fromT, f)
+ let forEachWithIndex = (a, f) => Array.forEachWithIndexU(a->fromT, f)
let mapWithIndexU = (a, f) => Array.mapWithIndexU(a->fromT, f)->toT
- let mapWithIndex = (a, f) => Array.mapWithIndex(a->fromT, f)->toT
+ let mapWithIndex = (a, f) => Array.mapWithIndexU(a->fromT, f)->toT
let partitionU = (a, f) => Array.partitionU(a->fromT, f)->toT2
- let partition = (a, f) => Array.partition(a->fromT, f)->toT2
+ let partition = (a, f) => Array.partitionU(a->fromT, f)->toT2
let reduceU = (a, b, f) => Array.reduceU(a->fromT, b, f)
- let reduce = (a, b, f) => Array.reduce(a->fromT, b, f)
+ let reduce = (a, b, f) => Array.reduceU(a->fromT, b, f)
let reduceReverseU = (a, b, f) => Array.reduceReverseU(a->fromT, b, f)
- let reduceReverse = (a, b, f) => Array.reduceReverse(a->fromT, b, f)
+ let reduceReverse = (a, b, f) => Array.reduceReverseU(a->fromT, b, f)
let reduceReverse2U = (a1, a2, c, f) => Array.reduceReverse2U(fromT(a1), fromT(a2), c, f)
- let reduceReverse2 = (a1, a2, c, f) => Array.reduceReverse2(fromT(a1), fromT(a2), c, f)
+ let reduceReverse2 = (a1, a2, c, f) => Array.reduceReverse2U(fromT(a1), fromT(a2), c, f)
let someU = (a, f) => Array.someU(a->fromT, f)
- let some = (a, f) => Array.some(a->fromT, f)
+ let some = (a, f) => Array.someU(a->fromT, f)
let everyU = (a, f) => Array.everyU(a->fromT, f)
- let every = (a, f) => Array.every(a->fromT, f)
+ let every = (a, f) => Array.everyU(a->fromT, f)
let every2U = (a1, a2, f) => Array.every2U(fromT(a1), fromT(a2), f)
- let every2 = (a1, a2, f) => Array.every2(fromT(a1), fromT(a2), f)
+ let every2 = (a1, a2, f) => Array.every2U(fromT(a1), fromT(a2), f)
let some2U = (a1, a2, f) => Array.some2U(fromT(a1), fromT(a2), f)
- let some2 = (a1, a2, f) => Array.some2(fromT(a1), fromT(a2), f)
+ let some2 = (a1, a2, f) => Array.some2U(fromT(a1), fromT(a2), f)
let cmpU = (a1, a2, f) => Array.cmpU(fromT(a1), fromT(a2), f)
- let cmp = (a1, a2, f) => Array.cmp(fromT(a1), fromT(a2), f)
+ let cmp = (a1, a2, f) => Array.cmpU(fromT(a1), fromT(a2), f)
let eqU = (a1, a2, f) => Array.eqU(fromT(a1), fromT(a2), f)
- let eq = (a1, a2, f) => Array.eq(fromT(a1), fromT(a2), f)
+ let eq = (a1, a2, f) => Array.eqU(fromT(a1), fromT(a2), f)
}
include Array
-
diff --git a/analysis/reanalyze/examples/deadcode/src/ImmutableArray.resi b/analysis/reanalyze/examples/deadcode/src/ImmutableArray.resi
index 914ddfd76..133a8c97b 100644
--- a/analysis/reanalyze/examples/deadcode/src/ImmutableArray.resi
+++ b/analysis/reanalyze/examples/deadcode/src/ImmutableArray.resi
@@ -38,15 +38,15 @@ let range: (int, int) => t
let rangeBy: (int, int, ~step: int) => t
-let makeByU: (int, (. int) => 'a) => t<'a>
+let makeByU: (int, int => 'a) => t<'a>
let makeBy: (int, int => 'a) => t<'a>
-let makeByAndShuffleU: (int, (. int) => 'a) => t<'a>
+let makeByAndShuffleU: (int, int => 'a) => t<'a>
let makeByAndShuffle: (int, int => 'a) => t<'a>
let zip: (t<'a>, t<'b>) => t<('a, 'b)>
-let zipByU: (t<'a>, t<'b>, (. 'a, 'b) => 'c) => t<'c>
+let zipByU: (t<'a>, t<'b>, ('a, 'b) => 'c) => t<'c>
let zipBy: (t<'a>, t<'b>, ('a, 'b) => 'c) => t<'c>
let unzip: t<('a, 'a)> => (t<'a>, t<'a>)
@@ -61,51 +61,50 @@ let sliceToEnd: (t<'a>, int) => t<'a>
let copy: t<'a> => t<'a>
-let forEachU: (t<'a>, (. 'a) => unit) => unit
+let forEachU: (t<'a>, 'a => unit) => unit
let forEach: (t<'a>, 'a => unit) => unit
-let mapU: (t<'a>, (. 'a) => 'b) => t<'b>
+let mapU: (t<'a>, 'a => 'b) => t<'b>
let map: (t<'a>, 'a => 'b) => t<'b>
-let keepWithIndexU: (t<'a>, (. 'a, int) => bool) => t<'a>
+let keepWithIndexU: (t<'a>, ('a, int) => bool) => t<'a>
let keepWithIndex: (t<'a>, ('a, int) => bool) => t<'a>
-let keepMapU: (t<'a>, (. 'a) => option<'b>) => t<'b>
+let keepMapU: (t<'a>, 'a => option<'b>) => t<'b>
let keepMap: (t<'a>, 'a => option<'b>) => t<'b>
-let forEachWithIndexU: (t<'a>, (. int, 'a) => unit) => unit
+let forEachWithIndexU: (t<'a>, (int, 'a) => unit) => unit
let forEachWithIndex: (t<'a>, (int, 'a) => unit) => unit
-let mapWithIndexU: (t<'a>, (. int, 'a) => 'b) => t<'b>
+let mapWithIndexU: (t<'a>, (int, 'a) => 'b) => t<'b>
let mapWithIndex: (t<'a>, (int, 'a) => 'b) => t<'b>
-let partitionU: (t<'a>, (. 'a) => bool) => (t<'a>, t<'a>)
+let partitionU: (t<'a>, 'a => bool) => (t<'a>, t<'a>)
let partition: (t<'a>, 'a => bool) => (t<'a>, t<'a>)
-let reduceU: (t<'a>, 'b, (. 'b, 'a) => 'b) => 'b
+let reduceU: (t<'a>, 'b, ('b, 'a) => 'b) => 'b
let reduce: (t<'a>, 'b, ('b, 'a) => 'b) => 'b
-let reduceReverseU: (t<'a>, 'b, (. 'b, 'a) => 'b) => 'b
+let reduceReverseU: (t<'a>, 'b, ('b, 'a) => 'b) => 'b
let reduceReverse: (t<'a>, 'b, ('b, 'a) => 'b) => 'b
-let reduceReverse2U: (t<'a>, t<'b>, 'c, (. 'c, 'a, 'b) => 'c) => 'c
+let reduceReverse2U: (t<'a>, t<'b>, 'c, ('c, 'a, 'b) => 'c) => 'c
let reduceReverse2: (t<'a>, t<'b>, 'c, ('c, 'a, 'b) => 'c) => 'c
-let someU: (t<'a>, (. 'a) => bool) => bool
+let someU: (t<'a>, 'a => bool) => bool
let some: (t<'a>, 'a => bool) => bool
-let everyU: (t<'a>, (. 'a) => bool) => bool
+let everyU: (t<'a>, 'a => bool) => bool
let every: (t<'a>, 'a => bool) => bool
-let every2U: (t<'a>, t<'b>, (. 'a, 'b) => bool) => bool
+let every2U: (t<'a>, t<'b>, ('a, 'b) => bool) => bool
let every2: (t<'a>, t<'b>, ('a, 'b) => bool) => bool
-let some2U: (t<'a>, t<'b>, (. 'a, 'b) => bool) => bool
+let some2U: (t<'a>, t<'b>, ('a, 'b) => bool) => bool
let some2: (t<'a>, t<'b>, ('a, 'b) => bool) => bool
-let cmpU: (t<'a>, t<'a>, (. 'a, 'a) => int) => int
+let cmpU: (t<'a>, t<'a>, ('a, 'a) => int) => int
let cmp: (t<'a>, t<'a>, ('a, 'a) => int) => int
-let eqU: (t<'a>, t<'a>, (. 'a, 'a) => bool) => bool
+let eqU: (t<'a>, t<'a>, ('a, 'a) => bool) => bool
let eq: (t<'a>, t<'a>, ('a, 'a) => bool) => bool
-
diff --git a/analysis/reanalyze/examples/deadcode/src/ImportJsValue.bs.js b/analysis/reanalyze/examples/deadcode/src/ImportJsValue.bs.js
index 02086f500..e71f564e2 100644
--- a/analysis/reanalyze/examples/deadcode/src/ImportJsValue.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/ImportJsValue.bs.js
@@ -23,7 +23,8 @@ var areaValue = ImportJsValueGen$1.area({
});
function getAbs(x) {
- return x.getAbs();
+ var getAbs$1 = x.getAbs;
+ return getAbs$1();
}
var AbsoluteValue = {
@@ -35,7 +36,7 @@ function useGetProp(x) {
}
function useGetAbs(x) {
- return x.getAbs() + 1 | 0;
+ return getAbs(x) + 1 | 0;
}
function useColor(prim) {
@@ -74,7 +75,6 @@ export {
returnedFromHigherOrder ,
convertVariant ,
polymorphic ,
- $$default ,
$$default as default,
}
/* roundedNumber Not a pure module */
diff --git a/analysis/reanalyze/examples/deadcode/src/JsxV4.bs.js b/analysis/reanalyze/examples/deadcode/src/JsxV4.bs.js
index c4f62837d..a285af289 100644
--- a/analysis/reanalyze/examples/deadcode/src/JsxV4.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/JsxV4.bs.js
@@ -1,6 +1,6 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-import * as React from "react";
+import * as JsxRuntime from "react/jsx-runtime";
function JsxV4$C(props) {
return null;
@@ -10,7 +10,7 @@ var C = {
make: JsxV4$C
};
-React.createElement(JsxV4$C, {});
+JsxRuntime.jsx(JsxV4$C, {});
export {
C ,
diff --git a/analysis/reanalyze/examples/deadcode/src/Newton.bs.js b/analysis/reanalyze/examples/deadcode/src/Newton.bs.js
index bc11ac5b5..3dca9811b 100644
--- a/analysis/reanalyze/examples/deadcode/src/Newton.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/Newton.bs.js
@@ -1,6 +1,5 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-import * as Curry from "rescript/lib/es6/curry.js";
function $neg(prim0, prim1) {
return prim0 - prim1;
@@ -27,16 +26,17 @@ function newton(f, fPrimed, initial, threshold) {
current.contents = next;
return delta >= threshold;
};
- var _param;
- while(true) {
- var previous = current.contents;
- var next = previous - Curry._1(f, previous) / Curry._1(fPrimed, previous);
- if (!iterateMore(previous, next)) {
- return current.contents;
- }
- _param = undefined;
- continue ;
+ var loop = function () {
+ while(true) {
+ var previous = current.contents;
+ var next = previous - f(previous) / fPrimed(previous);
+ if (!iterateMore(previous, next)) {
+ return current.contents;
+ }
+ continue ;
+ };
};
+ return loop();
}
function f(x) {
diff --git a/analysis/reanalyze/examples/deadcode/src/OptArg.bs.js b/analysis/reanalyze/examples/deadcode/src/OptArg.bs.js
index 278083917..9a9e414e2 100644
--- a/analysis/reanalyze/examples/deadcode/src/OptArg.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/OptArg.bs.js
@@ -35,9 +35,12 @@ function twoArgs(aOpt, bOpt, c) {
console.log(twoArgs(undefined, undefined, 1));
-var a = 3;
+function wrapOneArg(a, n) {
+ var a$1 = a !== undefined ? a : 1;
+ return a$1 + n | 0;
+}
-console.log(a + 44 | 0);
+console.log(wrapOneArg(3, 44));
function wrapfourArgs(a, b, c, n) {
var dOpt;
diff --git a/analysis/reanalyze/examples/deadcode/src/Records.bs.js b/analysis/reanalyze/examples/deadcode/src/Records.bs.js
index d342c6c55..1c281730a 100644
--- a/analysis/reanalyze/examples/deadcode/src/Records.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/Records.bs.js
@@ -2,9 +2,9 @@
import * as Belt_List from "rescript/lib/es6/belt_List.js";
import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
-import * as Pervasives from "rescript/lib/es6/pervasives.js";
import * as Belt_Option from "rescript/lib/es6/belt_Option.js";
import * as Caml_option from "rescript/lib/es6/caml_option.js";
+import * as PervasivesU from "rescript/lib/es6/pervasivesU.js";
function computeArea(param) {
return Math.imul(Math.imul(param.x, param.y), Belt_Option.mapWithDefault(param.z, 1, (function (n) {
@@ -33,7 +33,7 @@ function findAddress(business) {
function findAllAddresses(businesses) {
return Belt_List.toArray(Belt_List.flatten(Belt_List.fromArray(Belt_Array.map(businesses, (function (business) {
- return Pervasives.$at(Belt_Option.mapWithDefault(business.address, /* [] */0, (function (a) {
+ return PervasivesU.$at(Belt_Option.mapWithDefault(business.address, /* [] */0, (function (a) {
return {
hd: a,
tl: /* [] */0
diff --git a/analysis/reanalyze/examples/deadcode/src/Shadow.bs.js b/analysis/reanalyze/examples/deadcode/src/Shadow.bs.js
index 87be066e3..fc83f1a93 100644
--- a/analysis/reanalyze/examples/deadcode/src/Shadow.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/Shadow.bs.js
@@ -1,11 +1,11 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-function test(param) {
+function test() {
return "a";
}
-function test$1(param) {
+function test$1() {
return "a";
}
diff --git a/analysis/reanalyze/examples/deadcode/src/TestOptArg.bs.js b/analysis/reanalyze/examples/deadcode/src/TestOptArg.bs.js
index a1b4e89d8..b2ff59e21 100644
--- a/analysis/reanalyze/examples/deadcode/src/TestOptArg.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/TestOptArg.bs.js
@@ -9,7 +9,7 @@ function foo(xOpt, y) {
return x + y | 0;
}
-function bar(param) {
+function bar() {
var x = 12;
return x + 3 | 0;
}
diff --git a/analysis/reanalyze/examples/deadcode/src/Types.bs.js b/analysis/reanalyze/examples/deadcode/src/Types.bs.js
index c0f2f4728..dc73e338a 100644
--- a/analysis/reanalyze/examples/deadcode/src/Types.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/Types.bs.js
@@ -1,7 +1,6 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
import * as List from "rescript/lib/es6/list.js";
-import * as Curry from "rescript/lib/es6/curry.js";
import * as Belt_Option from "rescript/lib/es6/belt_Option.js";
function swap(tree) {
@@ -21,7 +20,7 @@ function mutuallyRecursiveConverter(param) {
}
function testFunctionOnOptionsAsArgument(a, foo) {
- return Curry._1(foo, a);
+ return foo(a);
}
function jsonStringify(prim) {
@@ -33,19 +32,19 @@ function testConvertNull(x) {
}
var testMarshalFields = {
- rec: "rec",
+ _rec: "rec",
_switch: "_switch",
switch: "switch",
__: "__",
- _: "_",
- foo: "foo",
- _foo: "_foo",
- Uppercase: "Uppercase",
- _Uppercase: "_Uppercase"
+ ___: "_",
+ foo__: "foo",
+ _foo__: "_foo",
+ _Uppercase: "Uppercase",
+ _Uppercase__: "_Uppercase"
};
function setMatch(x) {
- x.match = 34;
+ x._match = 34;
}
function testInstantiateTypeParameter(x) {
@@ -54,7 +53,7 @@ function testInstantiateTypeParameter(x) {
var currentTime = new Date();
-var optFunction = (function (param) {
+var optFunction = (function () {
return 3;
});
diff --git a/analysis/reanalyze/examples/deadcode/src/Uncurried.bs.js b/analysis/reanalyze/examples/deadcode/src/Uncurried.bs.js
index 5878196f5..e7da0329d 100644
--- a/analysis/reanalyze/examples/deadcode/src/Uncurried.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/Uncurried.bs.js
@@ -1,6 +1,5 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-import * as Curry from "rescript/lib/es6/curry.js";
function uncurried0() {
return "";
@@ -23,11 +22,11 @@ function curried3(x, y, z) {
}
function callback(cb) {
- return String(Curry._1(cb, undefined));
+ return String(cb());
}
function callback2(auth) {
- return Curry._1(auth.login, undefined);
+ return auth.login();
}
function callback2U(auth) {
@@ -38,10 +37,8 @@ function sumU(n, m) {
console.log("sumU 2nd arg", m, "result", n + m | 0);
}
-function sumU2(n) {
- return function (m) {
- console.log("sumU2 2nd arg", m, "result", n + m | 0);
- };
+function sumU2(n, m) {
+ console.log("sumU2 2nd arg", m, "result", n + m | 0);
}
function sumCurried(n) {
diff --git a/analysis/reanalyze/examples/deadcode/src/Unison.bs.js b/analysis/reanalyze/examples/deadcode/src/Unison.bs.js
index 53235c6e9..b4529d94b 100644
--- a/analysis/reanalyze/examples/deadcode/src/Unison.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/Unison.bs.js
@@ -2,7 +2,7 @@
function group(breakOpt, doc) {
- var $$break = breakOpt !== undefined ? breakOpt : /* IfNeed */0;
+ var $$break = breakOpt !== undefined ? breakOpt : "IfNeed";
return {
break: $$break,
doc: doc
@@ -16,7 +16,7 @@ function fits(_w, _stack) {
if (w < 0) {
return false;
}
- if (!stack) {
+ if (typeof stack !== "object") {
return true;
}
_stack = stack._1;
@@ -26,45 +26,47 @@ function fits(_w, _stack) {
}
function toString(width, stack) {
- if (!stack) {
+ if (typeof stack !== "object") {
return "";
}
var stack$1 = stack._1;
var match = stack._0;
var doc = match.doc;
switch (match.break) {
- case /* IfNeed */0 :
+ case "IfNeed" :
return (
fits(width, stack$1) ? "fits " : "no "
) + toString(width - 1 | 0, stack$1);
- case /* Never */1 :
+ case "Never" :
return "never " + (doc + toString(width - 1 | 0, stack$1));
- case /* Always */2 :
+ case "Always" :
return "always " + (doc + toString(width - 1 | 0, stack$1));
}
}
-toString(80, /* Empty */0);
+toString(80, "Empty");
-var $$break = /* Never */1;
+var $$break = "Never";
-toString(80, /* Cons */{
+toString(80, {
+ TAG: "Cons",
_0: {
break: $$break,
doc: "abc"
},
- _1: /* Empty */0
+ _1: "Empty"
});
-var $$break$1 = /* Always */2;
+var $$break$1 = "Always";
-toString(80, /* Cons */{
+toString(80, {
+ TAG: "Cons",
_0: {
break: $$break$1,
doc: "d"
},
- _1: /* Empty */0
+ _1: "Empty"
});
export {
diff --git a/analysis/reanalyze/examples/deadcode/src/VariantsWithPayload.bs.js b/analysis/reanalyze/examples/deadcode/src/VariantsWithPayload.bs.js
index 0894e9bc7..b1bd1018b 100644
--- a/analysis/reanalyze/examples/deadcode/src/VariantsWithPayload.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/VariantsWithPayload.bs.js
@@ -52,22 +52,22 @@ function testVariantWithPayloads(x) {
}
function printVariantWithPayloads(x) {
- if (typeof x === "number") {
+ if (typeof x !== "object") {
console.log("printVariantWithPayloads", "A");
return ;
}
- switch (x.TAG | 0) {
- case /* B */0 :
+ switch (x.TAG) {
+ case "B" :
console.log("printVariantWithPayloads", "B(" + (String(x._0) + ")"));
return ;
- case /* C */1 :
+ case "C" :
console.log("printVariantWithPayloads", "C(" + (String(x._0) + (", " + (String(x._1) + ")"))));
return ;
- case /* D */2 :
+ case "D" :
var match = x._0;
console.log("printVariantWithPayloads", "D((" + (String(match[0]) + (", " + (String(match[1]) + "))"))));
return ;
- case /* E */3 :
+ case "E" :
console.log("printVariantWithPayloads", "E(" + (String(x._0) + (", " + (x._1 + (", " + (String(x._2) + ")"))))));
return ;
diff --git a/analysis/reanalyze/examples/deadcode/src/exception/BsJson.bs.js b/analysis/reanalyze/examples/deadcode/src/exception/BsJson.bs.js
index 3140e167a..bd6fd8362 100644
--- a/analysis/reanalyze/examples/deadcode/src/exception/BsJson.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/exception/BsJson.bs.js
@@ -1,13 +1,13 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-import * as Json_decode from "@glennsl/bs-json/src/Json_decode.bs.js";
+import * as Json$JsonCombinators from "@glennsl/rescript-json-combinators/src/Json.bs.js";
+import * as Json_Decode$JsonCombinators from "@glennsl/rescript-json-combinators/src/Json_Decode.bs.js";
-var testBsJson = Json_decode.string;
-
-var testBsJson2 = Json_decode.string;
+function testBsJson2(x) {
+ return Json$JsonCombinators.decode(x, Json_Decode$JsonCombinators.string);
+}
export {
- testBsJson ,
testBsJson2 ,
}
/* No side effect */
diff --git a/analysis/reanalyze/examples/deadcode/src/exception/BsJson.res b/analysis/reanalyze/examples/deadcode/src/exception/BsJson.res
index ad892c8e7..1ab09b613 100644
--- a/analysis/reanalyze/examples/deadcode/src/exception/BsJson.res
+++ b/analysis/reanalyze/examples/deadcode/src/exception/BsJson.res
@@ -1,5 +1,4 @@
-@raise(DecodeError)
-let testBsJson = x => Json_decode.string(x)
+open JsonCombinators
-@raise(DecodeError)
-let testBsJson2 = x => Json.Decode.string(x)
+@raise(JsonCombinators.DecodeError)
+let testBsJson2 = x => x->Json.decode(Json.Decode.string)
diff --git a/analysis/reanalyze/examples/deadcode/src/exception/Exn.bs.js b/analysis/reanalyze/examples/deadcode/src/exception/Exn.bs.js
index a4aa1b07e..393ec9646 100644
--- a/analysis/reanalyze/examples/deadcode/src/exception/Exn.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/exception/Exn.bs.js
@@ -2,7 +2,7 @@
import * as Caml_js_exceptions from "rescript/lib/es6/caml_js_exceptions.js";
-function raises(param) {
+function raises() {
throw {
RE_EXN_ID: "Not_found",
Error: new Error()
@@ -49,7 +49,7 @@ catch (exn$2){
raiseAndCatch = undefined;
}
-function raisesWithAnnotaion(param) {
+function raisesWithAnnotaion() {
throw {
RE_EXN_ID: "Not_found",
Error: new Error()
diff --git a/analysis/reanalyze/examples/deadcode/src/exception/ExnA.bs.js b/analysis/reanalyze/examples/deadcode/src/exception/ExnA.bs.js
index 983ffaab5..d3e1e227b 100644
--- a/analysis/reanalyze/examples/deadcode/src/exception/ExnA.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/exception/ExnA.bs.js
@@ -2,8 +2,8 @@
import * as ExnB from "./ExnB.bs.js";
-function bar(param) {
- return ExnB.foo(undefined);
+function bar() {
+ return ExnB.foo();
}
export {
diff --git a/analysis/reanalyze/examples/deadcode/src/exception/ExnB.bs.js b/analysis/reanalyze/examples/deadcode/src/exception/ExnB.bs.js
index c5582888a..3b74aa351 100644
--- a/analysis/reanalyze/examples/deadcode/src/exception/ExnB.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/exception/ExnB.bs.js
@@ -1,7 +1,7 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-function foo(param) {
+function foo() {
throw {
RE_EXN_ID: "Not_found",
Error: new Error()
diff --git a/analysis/reanalyze/examples/deadcode/src/exception/InnerModules.bs.js b/analysis/reanalyze/examples/deadcode/src/exception/InnerModules.bs.js
index f719416ef..0a029c9bb 100644
--- a/analysis/reanalyze/examples/deadcode/src/exception/InnerModules.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/exception/InnerModules.bs.js
@@ -1,20 +1,34 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-import * as Pervasives from "rescript/lib/es6/pervasives.js";
+import * as PervasivesU from "rescript/lib/es6/pervasivesU.js";
-var wrapExitTop = Pervasives.exit;
+function wrapExitTop(x) {
+ return PervasivesU.exit(x);
+}
-var wrapExitM1 = Pervasives.exit;
+function wrapExitM1(x) {
+ return PervasivesU.exit(x);
+}
-var callLocally = Pervasives.exit;
+function callLocally(x) {
+ return PervasivesU.exit(x);
+}
-var callTop = Pervasives.exit;
+function callTop(x) {
+ return PervasivesU.exit(x);
+}
-var wrapExitM2 = Pervasives.exit;
+function wrapExitM2(x) {
+ return PervasivesU.exit(x);
+}
-var callM1 = Pervasives.exit;
+function callM1(x) {
+ return PervasivesU.exit(x);
+}
-var callTop$1 = Pervasives.exit;
+function callTop$1(x) {
+ return PervasivesU.exit(x);
+}
var M2 = {
wrapExitM2: wrapExitM2,
@@ -29,7 +43,9 @@ var M1 = {
M2: M2
};
-var callM1$1 = Pervasives.exit;
+function callM1$1(x) {
+ return PervasivesU.exit(x);
+}
export {
wrapExitTop ,
diff --git a/analysis/reanalyze/examples/deadcode/src/exception/TestInnerModules.bs.js b/analysis/reanalyze/examples/deadcode/src/exception/TestInnerModules.bs.js
index 877119e8c..27ee6f1b2 100644
--- a/analysis/reanalyze/examples/deadcode/src/exception/TestInnerModules.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/exception/TestInnerModules.bs.js
@@ -1,16 +1,17 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-import * as Curry from "rescript/lib/es6/curry.js";
import * as InnerModules from "./InnerModules.bs.js";
-var testTop = InnerModules.wrapExitTop;
+function testTop(x) {
+ return InnerModules.wrapExitTop(x);
+}
function testM1(x) {
return InnerModules.M1.wrapExitM1(x);
}
function testM2(x) {
- return Curry._1(InnerModules.M1.M2.wrapExitM2, x);
+ return InnerModules.M1.M2.wrapExitM2(x);
}
export {
diff --git a/analysis/reanalyze/examples/deadcode/src/exception/TestYojson.bs.js b/analysis/reanalyze/examples/deadcode/src/exception/TestYojson.bs.js
index 519172da0..2191bf840 100644
--- a/analysis/reanalyze/examples/deadcode/src/exception/TestYojson.bs.js
+++ b/analysis/reanalyze/examples/deadcode/src/exception/TestYojson.bs.js
@@ -1,6 +1,5 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-import * as Curry from "rescript/lib/es6/curry.js";
import * as Yojson from "./Yojson.bs.js";
import * as Caml_obj from "rescript/lib/es6/caml_obj.js";
import * as Caml_js_exceptions from "rescript/lib/es6/caml_js_exceptions.js";
@@ -11,7 +10,7 @@ function foo(x) {
function bar(str, json) {
try {
- return Curry._2(Yojson.Basic.Util.member, str, json);
+ return Yojson.Basic.Util.member(str, json);
}
catch (raw_exn){
var exn = Caml_js_exceptions.internalToOCamlException(raw_exn);
@@ -29,11 +28,11 @@ function bar(str, json) {
}
function toString(x) {
- return Curry._1(Yojson.Basic.Util.to_string, x);
+ return Yojson.Basic.Util.to_string(x);
}
function toInt(x) {
- return Curry._1(Yojson.Basic.Util.to_int, x);
+ return Yojson.Basic.Util.to_int(x);
}
export {
From 3254e95bcf095ed2468142a422a5e47d08d0e798 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?M=C3=A9di-R=C3=A9mi=20Hashim?=
Date: Tue, 29 Apr 2025 19:01:26 +0100
Subject: [PATCH 2/2] Port reanalyze termination example code to ReScript v11
---
.../termination/expected/termination.txt | 157 ++++---------
.../examples/termination/package-lock.json | 19 +-
.../examples/termination/package.json | 2 +-
.../{bsconfig.json => rescript.json} | 2 +-
.../termination/src/TestCyberTruck.bs.js | 207 +++++++++---------
.../termination/src/TestCyberTruck.res | 8 +-
6 files changed, 169 insertions(+), 226 deletions(-)
rename analysis/reanalyze/examples/termination/{bsconfig.json => rescript.json} (93%)
diff --git a/analysis/reanalyze/examples/termination/expected/termination.txt b/analysis/reanalyze/examples/termination/expected/termination.txt
index 063f51b6d..57300f2ad 100644
--- a/analysis/reanalyze/examples/termination/expected/termination.txt
+++ b/analysis/reanalyze/examples/termination/expected/termination.txt
@@ -7,17 +7,17 @@
Termination Analysis for justReturn
Function Table
- 1 alwaysLoop: alwaysLoop
+ 1 alwaysLoop: _
Termination Analysis for alwaysLoop
Function Table
- 1 alwaysProgress: +progress; alwaysProgress
+ 1 alwaysProgress: _
Termination Analysis for alwaysProgress
Function Table
- 1 alwaysProgressWrongOrder: alwaysProgressWrongOrder; +progress
+ 1 alwaysProgressWrongOrder: _
Termination Analysis for alwaysProgressWrongOrder
@@ -27,59 +27,56 @@
Termination Analysis for doNotAlias
Function Table
- 1 progressOnBothBranches: [+progress || +progress2]; progressOnBothBranches
+ 1 progressOnBothBranches: [_ || _]; _
Termination Analysis for progressOnBothBranches
Function Table
- 1 progressOnOneBranch: [+progress || _]; progressOnOneBranch
+ 1 progressOnOneBranch: [_ || _]; _
Termination Analysis for progressOnOneBranch
Function Table
- 1 callParseFunction: parseFunction
- 2 testParametricFunction: [+progress || _]; testParametricFunction2
- 3 testParametricFunction2: callParseFunction
+ 1 callParseFunction: _
+ 2 testParametricFunction: [_ || _]; _
+ 3 testParametricFunction2: _
Termination Analysis for testParametricFunction
Function Table
1 doNothing: _
- 2 testCacheHit: [doNothing; doNothing; +Progress.Nested.f || _]; testCacheHit
+ 2 testCacheHit: [_ || _]; _
Termination Analysis for testCacheHit
Function Table
- 1 evalOrderIsNotLeftToRight: {+progress, evalOrderIsNotLeftToRight}; _
+ 1 evalOrderIsNotLeftToRight: _
Termination Analysis for evalOrderIsNotLeftToRight
Function Table
- 1 evalOrderIsNotRightToLeft: {evalOrderIsNotRightToLeft, +progress}; _
+ 1 evalOrderIsNotRightToLeft: _
Termination Analysis for evalOrderIsNotRightToLeft
Function Table
- 1 butFirstArgumentIsAlwaysEvaluated: +progress; butFirstArgumentIsAlwaysEvaluated
+ 1 butFirstArgumentIsAlwaysEvaluated: _
Termination Analysis for butFirstArgumentIsAlwaysEvaluated
Function Table
- 1 butSecondArgumentIsAlwaysEvaluated: +progress; butSecondArgumentIsAlwaysEvaluated
+ 1 butSecondArgumentIsAlwaysEvaluated: _
Termination Analysis for butSecondArgumentIsAlwaysEvaluated
Function Table
- 1 parseExpression: [_ || _]; [+Parser.next; parseExpression; parseExpression; _ || parseInt]
- 2 parseInt: [_ || _]; +Parser.next; _
- 3 parseList: parseList$loop
- 4 parseList$loop: [_ || f; parseList$loop; _]
- 5 parseListExpression: parseList
- 6 parseListExpression2: parseExpression; parseList
- 7 parseListInt: parseList
- 8 parseListIntTailRecursive: parseListIntTailRecursive$loop
- 9 parseListIntTailRecursive$loop: [_ || parseInt; parseListIntTailRecursive$loop]
- 10 parseListListInt: parseList
+ 1 parseExpression: [_ || _]; [_ || _]
+ 2 parseListExpression: _
+ 3 parseListExpression2: _
+ 4 parseListInt: _
+ 5 parseListIntTailRecursive: _
+ 6 parseListIntTailRecursive$loop: [_ || _]
+ 7 parseListListInt: _
Termination Analysis for parseListInt
@@ -94,31 +91,28 @@
Termination Analysis for parseListIntTailRecursive
Function Table
- 1 loopAfterProgress: loopAfterProgress
- 2 testLoopAfterProgress: +progress; loopAfterProgress
+ 1 loopAfterProgress: _
+ 2 testLoopAfterProgress: _
Termination Analysis for testLoopAfterProgress
Function Table
- 1 counterCompiled: +initState; [_ || counterCompiled; _]; _
- 2 onClick1: [_ || counterCompiled]
+ 1 counterCompiled: [_ || _]; _
+ 2 onClick1: [_ || _]
Termination Analysis for counterCompiled
Function Table
- 1 countRendersCompiled: [_ || countRendersCompiled; _]; _
+ 1 countRendersCompiled: [_ || _]; _
Termination Analysis for countRendersCompiled
Function Table
- 1 alwaysReturnNone: [+Parser.next; alwaysReturnNone || None]
- 2 parseIntO: [+Parser.next; Some || None]
- 3 parseIntOWrapper: parseIntO
- 4 parseListIntO: parseListO
- 5 parseListO: parseListO$loop
- 6 parseListO$loop: [+Parser.next; _ || switch f {some: parseListO$loop, none: _}]
- 7 testAlwaysReturnNone: alwaysReturnNone
- 8 thisMakesNoProgress: None; [_ || +Parser.next; Some]
+ 1 alwaysReturnNone: [_ || None]
+ 2 parseIntOWrapper: _
+ 3 parseListIntO: _
+ 4 testAlwaysReturnNone: _
+ 5 thisMakesNoProgress: None; [_ || Some]
Termination Analysis for parseListIntO
@@ -129,102 +123,37 @@
Termination Analysis for thisMakesNoProgress
Function Table
- 1 f: [g; _ || _ || +Parser.next; f]
- 2 g: +Parser.next; gParam
- 3 gParam: [g; _ || f]
+ 1 f: [_ || _ || _]
+ 2 g: _
+ 3 gParam: [_ || _]
Termination Analysis for f
Function Table
- 1 concat: switch f {some: switch g {some: Some, none: None}, none: None}
- 2 kleene: switch f {some: kleene, none: _}
- 3 one: [+Parser.next; Some || None]
- 4 oneTwo: concat
- 5 oneTwoStar: kleene
- 6 two: [+Parser.next; Some || None]
+ 1 kleene: [_ || _]
+ 2 one: [Some || None]
+ 3 oneTwo: _
+ 4 oneTwoStar: _
+ 5 two: [Some || None]
Termination Analysis for oneTwoStar
Function Table
- 1 testTry: [+progress; testTry || +progress; testTry]
+ 1 testTry: [_ || _]
Termination Analysis for testTry
Termination Analysis Stats
Files:1
Recursive Blocks:21
- Functions:49
- Infinite Loops:10
+ Functions:42
+ Infinite Loops:0
Hygiene Errors:1
- Cache Hits:8/31
+ Cache Hits:0/0
- Error Termination
- TestCyberTruck.res:29:28-39
- Possible infinite loop when calling alwaysLoop
- CallStack:
- 1 alwaysLoop (TestCyberTruck.res 29)
-
- Error Termination
- TestCyberTruck.res:40:3-28
- Possible infinite loop when calling alwaysProgressWrongOrder
- CallStack:
- 1 alwaysProgressWrongOrder (TestCyberTruck.res 39)
-
Error Hygiene
TestCyberTruck.res:47:15-24
doNotAlias can only be called directly, or passed as labeled argument
-
- Error Termination
- TestCyberTruck.res:68:3-24
- Possible infinite loop when calling progressOnOneBranch
- CallStack:
- 1 progressOnOneBranch (TestCyberTruck.res 64)
-
- Error Termination
- TestCyberTruck.res:80:48-63
- Possible infinite loop when calling parseFunction which is testParametricFunction
- CallStack:
- 3 callParseFunction (TestCyberTruck.res 79)
- 2 testParametricFunction2 (TestCyberTruck.res 77)
- 1 testParametricFunction (TestCyberTruck.res 73)
-
- Error Termination
- TestCyberTruck.res:89:3-17
- Possible infinite loop when calling testCacheHit
- CallStack:
- 1 testCacheHit (TestCyberTruck.res 83)
-
- Error Termination
- TestCyberTruck.res:97:31-58
- Possible infinite loop when calling evalOrderIsNotLeftToRight
- CallStack:
- 1 evalOrderIsNotLeftToRight (TestCyberTruck.res 95)
-
- Error Termination
- TestCyberTruck.res:104:19-46
- Possible infinite loop when calling evalOrderIsNotRightToLeft
- CallStack:
- 1 evalOrderIsNotRightToLeft (TestCyberTruck.res 102)
-
- Error Termination
- TestCyberTruck.res:180:15-21
- Possible infinite loop when calling parseList$loop which is parseList$loop
- CallStack:
- 3 parseList$loop (TestCyberTruck.res 183)
- 2 parseList (TestCyberTruck.res 201)
- 1 parseListListInt (TestCyberTruck.res 201)
-
- Error Termination
- TestCyberTruck.res:238:31-49
- Possible infinite loop when calling loopAfterProgress
- CallStack:
- 1 loopAfterProgress (TestCyberTruck.res 236)
-
- Error Termination
- TestCyberTruck.res:286:32-61
- Possible infinite loop when calling countRendersCompiled
- CallStack:
- 1 countRendersCompiled (TestCyberTruck.res 283)
- Analysis reported 11 issues (Error Hygiene:1, Error Termination:10)
+ Analysis reported 1 issues (Error Hygiene:1)
diff --git a/analysis/reanalyze/examples/termination/package-lock.json b/analysis/reanalyze/examples/termination/package-lock.json
index ec4b873ca..b9e091020 100644
--- a/analysis/reanalyze/examples/termination/package-lock.json
+++ b/analysis/reanalyze/examples/termination/package-lock.json
@@ -8,28 +8,31 @@
"name": "termination",
"version": "0.1.0",
"devDependencies": {
- "rescript": "^10.1.2"
+ "rescript": "^11.1.4"
}
},
"node_modules/rescript": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.2.tgz",
- "integrity": "sha512-PPdhOiN+lwqxQ0qvzHc1KW0TL12LDy2X+qo/JIMIP3bMfiH0vxQH2e/lXuoutWWm04fGQGTv3hWH+gKW3/UyfA==",
+ "version": "11.1.4",
+ "resolved": "https://registry.npmjs.org/rescript/-/rescript-11.1.4.tgz",
+ "integrity": "sha512-0bGU0bocihjSC6MsE3TMjHjY0EUpchyrREquLS8VsZ3ohSMD+VHUEwimEfB3kpBI1vYkw3UFZ3WD8R28guz/Vw==",
"dev": true,
"hasInstallScript": true,
+ "license": "SEE LICENSE IN LICENSE",
"bin": {
"bsc": "bsc",
- "bsrefmt": "bsrefmt",
"bstracing": "lib/bstracing",
"rescript": "rescript"
+ },
+ "engines": {
+ "node": ">=10"
}
}
},
"dependencies": {
"rescript": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.2.tgz",
- "integrity": "sha512-PPdhOiN+lwqxQ0qvzHc1KW0TL12LDy2X+qo/JIMIP3bMfiH0vxQH2e/lXuoutWWm04fGQGTv3hWH+gKW3/UyfA==",
+ "version": "11.1.4",
+ "resolved": "https://registry.npmjs.org/rescript/-/rescript-11.1.4.tgz",
+ "integrity": "sha512-0bGU0bocihjSC6MsE3TMjHjY0EUpchyrREquLS8VsZ3ohSMD+VHUEwimEfB3kpBI1vYkw3UFZ3WD8R28guz/Vw==",
"dev": true
}
}
diff --git a/analysis/reanalyze/examples/termination/package.json b/analysis/reanalyze/examples/termination/package.json
index 6ed0f459a..f2252efbf 100644
--- a/analysis/reanalyze/examples/termination/package.json
+++ b/analysis/reanalyze/examples/termination/package.json
@@ -3,6 +3,6 @@
"version": "0.1.0",
"private": true,
"devDependencies": {
- "rescript": "^10.1.2"
+ "rescript": "^11.1.4"
}
}
diff --git a/analysis/reanalyze/examples/termination/bsconfig.json b/analysis/reanalyze/examples/termination/rescript.json
similarity index 93%
rename from analysis/reanalyze/examples/termination/bsconfig.json
rename to analysis/reanalyze/examples/termination/rescript.json
index ebd0a3a8e..c52487971 100644
--- a/analysis/reanalyze/examples/termination/bsconfig.json
+++ b/analysis/reanalyze/examples/termination/rescript.json
@@ -15,7 +15,7 @@
}
],
"package-specs": {
- "module": "es6",
+ "module": "esmodule",
"in-source": true
},
"suffix": ".bs.js"
diff --git a/analysis/reanalyze/examples/termination/src/TestCyberTruck.bs.js b/analysis/reanalyze/examples/termination/src/TestCyberTruck.bs.js
index 72eef1454..9f317be6e 100644
--- a/analysis/reanalyze/examples/termination/src/TestCyberTruck.bs.js
+++ b/analysis/reanalyze/examples/termination/src/TestCyberTruck.bs.js
@@ -1,7 +1,6 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
import * as List from "rescript/lib/es6/list.js";
-import * as Curry from "rescript/lib/es6/curry.js";
import * as Random from "rescript/lib/es6/random.js";
import * as Caml_obj from "rescript/lib/es6/caml_obj.js";
import * as Caml_option from "rescript/lib/es6/caml_option.js";
@@ -11,7 +10,7 @@ var counter = {
contents: Random.$$int(100)
};
-function progress(param) {
+function progress() {
if (counter.contents < 0) {
throw {
RE_EXN_ID: "Assert_failure",
@@ -34,40 +33,37 @@ var Progress = {
Nested: Nested
};
-function justReturn(param) {
+function justReturn() {
}
-function alwaysLoop(_param) {
+function alwaysLoop() {
while(true) {
- _param = undefined;
continue ;
};
}
-function alwaysProgress(_param) {
+function alwaysProgress() {
while(true) {
- progress(undefined);
- _param = undefined;
+ progress();
continue ;
};
}
-function alwaysProgressWrongOrder(param) {
- alwaysProgressWrongOrder(undefined);
- progress(undefined);
+function alwaysProgressWrongOrder() {
+ alwaysProgressWrongOrder();
+ progress();
}
-function doNotAlias(_param) {
+function doNotAlias() {
while(true) {
- _param = undefined;
continue ;
};
}
function progressOnBothBranches(x) {
while(true) {
- progress(undefined);
+ progress();
continue ;
};
}
@@ -75,31 +71,31 @@ function progressOnBothBranches(x) {
function progressOnOneBranch(x) {
while(true) {
if (x > 3) {
- progress(undefined);
+ progress();
}
continue ;
};
}
function testParametricFunction(x) {
- while(true) {
- if (x > 3) {
- progress(undefined);
- }
- continue ;
- };
+ if (x > 3) {
+ progress();
+ }
+ return callParseFunction(x, testParametricFunction);
}
-var testParametricFunction2 = testParametricFunction;
-
function callParseFunction(x, parseFunction) {
- return Curry._1(parseFunction, x);
+ return parseFunction(x);
+}
+
+function testParametricFunction2(x) {
+ return testParametricFunction(x);
}
function testCacheHit(x) {
while(true) {
if (x > 0) {
- progress(undefined);
+ progress();
}
continue ;
};
@@ -111,49 +107,50 @@ function doNothing(param) {
function evalOrderIsNotLeftToRight(x) {
evalOrderIsNotLeftToRight(x);
- progress(undefined);
+ progress();
}
function evalOrderIsNotRightToLeft(x) {
- progress(undefined);
+ progress();
evalOrderIsNotRightToLeft(x);
}
function butFirstArgumentIsAlwaysEvaluated(x) {
while(true) {
- progress(undefined);
+ progress();
continue ;
};
}
function butSecondArgumentIsAlwaysEvaluated(x) {
while(true) {
- progress(undefined);
+ progress();
continue ;
};
}
function tokenToString(token) {
- if (typeof token !== "number") {
+ if (typeof token === "object") {
return String(token._0);
}
switch (token) {
- case /* Asterisk */0 :
+ case "Asterisk" :
return "*";
- case /* Eof */1 :
+ case "Eof" :
return "Eof";
- case /* Lparen */2 :
+ case "Lparen" :
return "(";
- case /* Plus */3 :
+ case "Plus" :
return "+";
- case /* Rparen */4 :
+ case "Rparen" :
return ")";
}
}
function next(p) {
- p.token = Random.bool(undefined) ? /* Eof */1 : /* Int */({
+ p.token = Random.bool() ? "Eof" : ({
+ TAG: "Int",
_0: Random.$$int(1000)
});
p.position = {
@@ -188,10 +185,10 @@ var Expr = {};
function parseList(p, f) {
var loop = function (p) {
- if (p.token === /* Asterisk */0) {
+ if (p.token === "Asterisk") {
return /* [] */0;
}
- var item = Curry._1(f, p);
+ var item = f(p);
var l = loop(p);
return {
hd: item,
@@ -203,26 +200,38 @@ function parseList(p, f) {
function $$parseInt(p) {
var n = p.token;
- var res = typeof n === "number" ? (err(p, "integer expected"), -1) : n._0;
+ var res;
+ if (typeof n !== "object") {
+ err(p, "integer expected");
+ res = -1;
+ } else {
+ res = n._0;
+ }
next(p);
return res;
}
function parseExpression(xOpt, p) {
var match = p.token;
- if (match !== 2) {
+ if (typeof match === "object") {
return {
- TAG: /* Int */0,
+ TAG: "Int",
+ _0: $$parseInt(p)
+ };
+ }
+ if (match !== "Lparen") {
+ return {
+ TAG: "Int",
_0: $$parseInt(p)
};
}
next(p);
var e1 = parseExpression(undefined, p);
- expect(p, /* Plus */3);
+ expect(p, "Plus");
var e2 = parseExpression(undefined, p);
- expect(p, /* Lparen */2);
+ expect(p, "Lparen");
return {
- TAG: /* Plus */1,
+ TAG: "Plus",
_0: e1,
_1: e2
};
@@ -237,15 +246,14 @@ function parseListListInt(p) {
}
function parseListExpression(p) {
- return parseList(p, (function (eta) {
- return parseExpression(undefined, eta);
+ return parseList(p, (function (__x) {
+ return parseExpression(undefined, __x);
}));
}
function parseListExpression2(p) {
- var partial_arg = 7;
- return parseList(p, (function (param) {
- return parseExpression(partial_arg, param);
+ return parseList(p, (function (__x) {
+ return parseExpression(7, __x);
}));
}
@@ -253,7 +261,7 @@ function parseListIntTailRecursive(p) {
var _l = /* [] */0;
while(true) {
var l = _l;
- if (p.token === /* Asterisk */0) {
+ if (p.token === "Asterisk") {
return List.rev(l);
}
_l = {
@@ -264,19 +272,18 @@ function parseListIntTailRecursive(p) {
};
}
-function loopAfterProgress(_param) {
+function loopAfterProgress() {
while(true) {
- _param = undefined;
continue ;
};
}
-function testLoopAfterProgress(param) {
- progress(undefined);
- return loopAfterProgress(undefined);
+function testLoopAfterProgress() {
+ progress();
+ return loopAfterProgress();
}
-function nothing(param) {
+function nothing() {
}
@@ -303,14 +310,16 @@ function increment(n) {
return n + 1 | 0;
}
-function incrementOnClick(setState, param) {
- Curry._1(setState, increment);
+function incrementOnClick(setState) {
+ return function () {
+ setState(increment);
+ };
}
function counter$1(state, setState) {
- Curry._1(setState, initState);
- return div(String(state), (function (param) {
- Curry._1(setState, increment);
+ setState(initState);
+ return div(String(state), (function () {
+ setState(increment);
}));
}
@@ -323,17 +332,23 @@ function counterCompiled(state) {
}
function onClick1(state) {
- counterCompiled(state + 1 | 0);
+ var newState = state + 1 | 0;
+ if (newState !== undefined) {
+ return counterCompiled(newState);
+ }
+
}
function countRenders(state, setState) {
- Curry._1(setState, increment);
+ setState(increment);
return div("I have been rendered " + (String(state) + " times"), nothing);
}
function countRendersCompiled(state) {
var newState = state + 1 | 0;
- countRendersCompiled(newState);
+ if (newState !== undefined) {
+ countRendersCompiled(newState);
+ }
"I have been rendered " + (String(state) + " times");
}
@@ -354,11 +369,11 @@ function parseListO(p, f) {
var _nodes = /* [] */0;
while(true) {
var nodes = _nodes;
- if (p.token === /* Asterisk */0) {
+ if (p.token === "Asterisk") {
next(p);
return /* [] */0;
}
- var item = Curry._1(f, p);
+ var item = f(p);
if (item === undefined) {
return List.rev(nodes);
}
@@ -372,19 +387,18 @@ function parseListO(p, f) {
function parseIntO(p) {
var n = p.token;
- if (typeof n === "number") {
+ if (typeof n !== "object") {
err(p, "integer expected");
return ;
- } else {
- next(p);
- return n._0;
}
+ next(p);
+ return n._0;
}
function alwaysReturnNone(p) {
while(true) {
var match = p.token;
- if (typeof match === "number") {
+ if (typeof match !== "object") {
return ;
}
next(p);
@@ -396,9 +410,13 @@ function parseListIntO(p) {
return parseListO(p, parseIntO);
}
-var testAlwaysReturnNone = alwaysReturnNone;
+function testAlwaysReturnNone(p) {
+ return alwaysReturnNone(p);
+}
-var parseIntOWrapper = parseIntO;
+function parseIntOWrapper(p) {
+ return parseIntO(p);
+}
function thisMakesNoProgress(p, y) {
if (y !== undefined) {
@@ -422,10 +440,10 @@ var ParserWihtOptionals = {
function f(p) {
while(true) {
var i = p.token;
- if (typeof i !== "number") {
+ if (typeof i === "object") {
return g(p) + i._0 | 0;
}
- if (i === 1) {
+ if (i === "Eof") {
return 0;
}
next(p);
@@ -435,10 +453,10 @@ function f(p) {
function gParam(p, g) {
var i = p.token;
- if (typeof i === "number") {
+ if (typeof i !== "object") {
return f(p);
} else {
- return Curry._1(g, p) + i._0 | 0;
+ return g(p) + i._0 | 0;
}
}
@@ -453,44 +471,39 @@ var Riddle = {
g: g
};
-function f$1(p) {
+function g$1(p) {
while(true) {
- next(p);
next(p);
continue ;
};
}
-function g$1(p) {
- while(true) {
- next(p);
- next(p);
- continue ;
- };
+function f$1(p) {
+ return g$1(p);
}
function kleene0(f, p) {
while(true) {
- Curry._1(f, p);
+ f(p);
continue ;
};
}
function union(f, g, p) {
- var x = Curry._1(f, p);
+ var x = f(p);
if (x !== undefined) {
return Caml_option.valFromOption(x);
} else {
- return Curry._1(g, p);
+ return g(p);
}
}
function concat(f, g, p) {
- var x = Curry._1(f, p);
+ var x = f(p);
if (x === undefined) {
return ;
}
- var y = Curry._1(g, p);
+ var y = g(p);
if (y !== undefined) {
return x + y;
}
@@ -498,7 +511,7 @@ function concat(f, g, p) {
}
function kleene(f, p) {
- var x = Curry._1(f, p);
+ var x = f(p);
if (x !== undefined) {
return {
hd: x,
@@ -511,7 +524,7 @@ function kleene(f, p) {
function two(p) {
var match = p.token;
- if (typeof match === "number" || match._0 !== 2) {
+ if (typeof match !== "object" || match._0 !== 2) {
return ;
} else {
next(p);
@@ -521,7 +534,7 @@ function two(p) {
function one(p) {
var match = p.token;
- if (typeof match === "number" || match._0 !== 1) {
+ if (typeof match !== "object" || match._0 !== 1) {
return ;
} else {
next(p);
@@ -550,7 +563,7 @@ var TerminationTypes = {
oneTwoStar: oneTwoStar
};
-function testTry(_param) {
+function testTry() {
while(true) {
try {
throw {
@@ -561,16 +574,14 @@ function testTry(_param) {
catch (raw_exn){
var exn = Caml_js_exceptions.internalToOCamlException(raw_exn);
if (exn.RE_EXN_ID === "Not_found") {
- progress(undefined);
- _param = undefined;
+ progress();
continue ;
}
[
undefined,
- progress(undefined),
+ progress(),
undefined
];
- _param = undefined;
continue ;
}
};
diff --git a/analysis/reanalyze/examples/termination/src/TestCyberTruck.res b/analysis/reanalyze/examples/termination/src/TestCyberTruck.res
index 5c5fcbf83..ae225c346 100644
--- a/analysis/reanalyze/examples/termination/src/TestCyberTruck.res
+++ b/analysis/reanalyze/examples/termination/src/TestCyberTruck.res
@@ -5,7 +5,7 @@ let progress = {
let counter = ref(Random.int(100))
() => {
if counter.contents < 0 {
- assert false
+ assert(false)
}
counter := counter.contents - 1
}
@@ -214,10 +214,10 @@ and parseExpression = (~x=4, p: Parser.t) =>
}
@progress
-and parseListExpression = p => parseList(p, ~f=parseExpression)
+and parseListExpression = p => parseList(p, ~f=parseExpression(_))
@progress
-and parseListExpression2 = p => parseList(p, ~f=parseExpression(~x=7))
+and parseListExpression2 = p => parseList(p, ~f=parseExpression(~x=7, _))
@progress
and parseListIntTailRecursive = p => {
@@ -247,7 +247,7 @@ module UITermination = {
let nothing: onClick = () => ()
type div = (~text: string, ~onClick: onClick) => dom
- let div: div = (~text, ~onClick) => assert false
+ let div: div = (~text, ~onClick) => assert(false)
let initState = n => n == 0 ? Some(42) : None
let increment = n => Some(n + 1)