You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This appears to be affecting Bisect_ppx (the coverage tool) in aantron/bisect_ppx#377 (comment). Here is a smaller example than in the issue:
let()=iftruethen
(() : unit)
else()
with OCaml 4.12.0 and Bisect_ppx master (or any recent version), this gets instrumented as
Note the lack of point on the expression in the then branch, which is suppressed by having () wrapped in a constraint expression. This is because Bisect currently deliberately avoids instrumenting expressions with ghost locations. If the contraint expression is removed, the remaining () will be instrumented, as expected by users, and as shown by the else branch.
Essentially, why are they ghost? Is this a bug?
This appears to be affecting Bisect_ppx (the coverage tool) in aantron/bisect_ppx#377 (comment). Here is a smaller example than in the issue:
with OCaml 4.12.0 and Bisect_ppx
master
(or any recent version), this gets instrumented asNote the lack of point on the expression in the
then
branch, which is suppressed by having()
wrapped in a constraint expression. This is because Bisect currently deliberately avoids instrumenting expressions with ghost locations. If the contraint expression is removed, the remaining()
will be instrumented, as expected by users, and as shown by theelse
branch.The uninstrumented AST for this program:
The
ghost
on the location of thePexp_constraint
is in question in this issue.I see a potentially related discussion in #1850.
cc @gkaracha @dorranh
The text was updated successfully, but these errors were encountered: