• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ocaml / odoc / 3141
71%
master: 71%

Build:
Build:
LAST BUILD BRANCH: fix-1429
DEFAULT BRANCH: master
Ran 06 May 2026 12:10PM UTC
Jobs 1
Files 88
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 May 2026 11:48AM UTC coverage: 71.178%. First build
3141

push

github

Jon Ludlam's Agent
Fix assertion in resolved_signature_fragment for substituted module type

The assertion in [Subst.resolved_signature_fragment] at the
[`Root (`ModuleType p)] case assumed the named module type at the LHS
of a [subst] could never itself be substituted. That holds for
substitutions originating from source [with]-clauses on a non-removed
module type, but two code paths in odoc produce a [Subst.t] whose
[module_type_replacement] map binds X to a manifest:

  1. [Tools.apply_inner_substs] synthesises such a substitution to
     model a top-level destructive [module type X := ...] item, and
     applies it to the rest of the signature.
  2. [Tools.fragmap]'s [sub_of_removed] does the same for a regular
     [... with module type X := ...] expression, then applies it to
     the substituted signature.

In either case, any later item in that signature carrying a
[with]-clause that names X has its resolved [with]-clause fragment
walked by [Subst]; the [`Root (`ModuleType p)] arm sees that p is
exactly the substituted module type and trips [assert false].

Replace [assert false] with [raise Invalidated]: the standard
mechanism in this file for "this resolved form is no longer valid".
[Subst.type_fragment] / [Subst.module_fragment] /
[Subst.module_type_fragment] catch it, unresolve the fragment to its
syntactic [`Dot] form, and re-resolve it against the post-substitution
context (where the [include] / module-type expression has been
replaced with the manifest of X).

Promotes test/xref2/apply_inner_substs_module_type.t/run.t to reflect
the now clean output across all six trigger positions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

1 of 1 new or added line in 1 file covered. (100.0%)

10414 of 14631 relevant lines covered (71.18%)

5900.66 hits per line

Jobs
ID Job ID Ran Files Coverage
1 3141.1 06 May 2026 12:10PM UTC 88
71.18
GitHub Action Run
Source Files on build 3141
  • Tree
  • List 88
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 1f0f1587 on github
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc