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)