Skip to content

Commit 6d7477d

Browse files
committed
Add example for dead code elimination for JSX v4.
DCE does not seem to be working: probably JSC call does not use proper location for the make function.
1 parent e14fda6 commit 6d7477d

File tree

3 files changed

+41
-1
lines changed

3 files changed

+41
-1
lines changed

analysis/reanalyze/examples/deadcode/expected/deadcode.txt

+16-1
Original file line numberDiff line numberDiff line change
@@ -1101,6 +1101,9 @@
11011101
addRecordLabelDeclaration text ImportMyBanner.res:5:16 path:+ImportMyBanner.message
11021102
addValueReference ImportMyBanner.res:12:4 --> ImportMyBanner.res:7:0
11031103
Scanning JSResource.cmt Source:JSResource.res
1104+
Scanning JsxV4.cmt Source:JsxV4.res
1105+
addValueDeclaration +make JsxV4.res:4:23 path:+JsxV4.C
1106+
addValueReference JsxV4.res:4:36 --> React.res:3:0
11041107
Scanning LetPrivate.cmt Source:LetPrivate.res
11051108
addValueDeclaration +y LetPrivate.res:7:4 path:+LetPrivate
11061109
addValueDeclaration +x LetPrivate.res:3:6 path:+LetPrivate.local_1
@@ -1887,6 +1890,7 @@ File References
18871890
ImportJsValue.res -->>
18881891
ImportMyBanner.res -->>
18891892
JSResource.res -->>
1893+
JsxV4.res -->> React.res
18901894
LetPrivate.res -->>
18911895
ModuleAliases.res -->>
18921896
ModuleAliases2.res -->>
@@ -2121,6 +2125,7 @@ File References
21212125
Dead Value +ImportMyBanner.+make: 0 references () [0]
21222126
Live Value +ImportMyBanner.+make: 0 references () [0]
21232127
Dead RecordLabel +ImportMyBanner.message.text: 0 references () [0]
2128+
Dead Value +JsxV4.C.+make: 0 references () [0]
21242129
Live Value +LetPrivate.+y: 0 references () [0]
21252130
Live Value +LetPrivate.local_1.+x: 1 references (LetPrivate.res:7:4) [0]
21262131
Live Value +ModuleAliases.+testInner2: 0 references () [0]
@@ -3981,6 +3986,16 @@ File References
39813986
<-- line 12
39823987
@dead("make") let make = make
39833988

3989+
Warning Dead Module
3990+
File "JsxV4.res", line 3, characters 8-62
3991+
JsxV4.C is a dead module as all its items are dead.
3992+
3993+
Warning Dead Value
3994+
File "JsxV4.res", line 4, characters 20-47
3995+
C.make is never used
3996+
<-- line 4
3997+
@react.component @dead("C.make") let make = () => React.null
3998+
39843999
Warning Dead Module
39854000
File "ModuleAliases.res", line 2, characters 10-57
39864001
ModuleAliases.Outer.Inner is a dead module as all its items are dead.
@@ -4505,4 +4520,4 @@ File References
45054520
<-- line 96
45064521
type variant1Object = | @dead("variant1Object.R") R(payload)
45074522

4508-
Analysis reported 334 issues (Incorrect Dead Annotation:1, Warning Dead Exception:2, Warning Dead Module:25, Warning Dead Type:89, Warning Dead Value:199, Warning Dead Value With Side Effects:2, Warning Redundant Optional Argument:5, Warning Unused Argument:11)
4523+
Analysis reported 336 issues (Incorrect Dead Annotation:1, Warning Dead Exception:2, Warning Dead Module:26, Warning Dead Type:89, Warning Dead Value:200, Warning Dead Value With Side Effects:2, Warning Redundant Optional Argument:5, Warning Unused Argument:11)

analysis/reanalyze/examples/deadcode/src/JsxV4.bs.js

+18
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
@@jsxConfig({version: 4})
2+
3+
module C = {
4+
@react.component let make = () => React.null
5+
}
6+
7+
let _ = <C />

0 commit comments

Comments
 (0)