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

source-academy / py-slang / 31150017757
86%

Build:
DEFAULT BRANCH: main
Ran 07 Aug 2026 05:33AM UTC
Jobs 1
Files 138
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

07 Aug 2026 05:15AM UTC coverage: 86.202% (+0.07%) from 86.137%
31150017757

push

github

web-flow
Stepper: pop-ups for module functions, imported and generated (#406, #407) (#412)

* Stepper: give §2 library functions a real Function definition popup

llist_ref (and map, filter, reduce, append, ... and their _-prefixed
helpers) never showed a hover popup, unlike a user-defined function.
The mystery: they're written in lists.ts as lambda/def AST templates,
but that's an implementation detail internal to applyLibrary -- a
call dispatches through BUILTIN_FUNCTIONS as a one-step JS-native
expansion (confirmed: calling llist_ref shows "Running llist_ref" /
"Ran llist_ref" as a single contraction, then the substituted body
continues stepping normally). The template itself never becomes an
actual ArrowFunctionExpression/FunctionDeclaration node anywhere in
the displayed tree, so functionValues (which already gives every
user-defined function its mu-term + popup) has nothing to attach to.

This is the opposite problem from #404 (a true builtin has no body to
show at all, so it gets a fixed-text popup instead) -- and needed a
different fix: teach getSteps.ts's existing display-time relabeling
pass (markBuiltins, from #409) to distinguish the two. Generalized
markBuiltins to take a resolver (name) => StepNode | undefined instead
of a plain boolean predicate:

- builtins.ts's new resolveBuiltinDisplayValue checks
  lists.ts's newly-exported getListLibraryTemplate(name) first (the
  real template, for map/_map/llist_ref/...), falling back to the
  existing Builtin+hoverText node for a true native builtin.
- markBuiltins now recognises when the resolved node is a real
  function-value shape (ArrowFunctionExpression/FunctionDeclaration):
  it tags it with a name marker and recurses into its own body too
  (own name+params added to the shadowing-safety `bound` set, exactly
  like the existing cases), so a library function used as a bare
  value collapses to a mu-term with the real "Function definition"
  popup, and any *other* library name it references (e.g. _m... (continued)

4789 of 5993 branches covered (79.91%)

Branch coverage included in aggregate %.

16 of 17 new or added lines in 2 files covered. (94.12%)

10698 of 11973 relevant lines covered (89.35%)

164710.95 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
79.04
8.38% src/conductor/stepper/moduleInterop.ts
Jobs
ID Job ID Ran Files Coverage
1 31150017757.1 07 Aug 2026 05:33AM UTC 138
86.2
GitHub Action Run
Source Files on build 31150017757
  • Tree
  • List 138
  • Changed 3
  • Source Changed 3
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #31150017757
  • e479724a on github
  • Prev Build on main (#31143071608)
  • Next Build on main (#31155376990)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc