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

Qiskit / qiskit / 35916544778
88%
main: 88%

Build:
Build:
LAST BUILD BRANCH: bump-min-python
DEFAULT BRANCH: main
Ran 23 Sep 2026 09:02PM UTC
Jobs 1
Files 975
Run time 2min
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

23 Sep 2026 08:31PM UTC coverage: 88.044% (+0.03%) from 88.014%
35916544778

push

github

web-flow
Add call nodes to QuantumFunction (#16931)

* Add call instructions, so a program can hold several functions

A call instruction names a function by `FunctionId` and computes nothing itself, so one
stored body serves however many sites invoke it. `InstructionRole::Call` is the fourth role,
and the only one besides the two boundary roles that carries no `ProgramOp`.

A call may only name a function defined before the one holding it. The call graph is
therefore acyclic structurally, with nothing to traverse, and a callee is in bounds without
a separate check. A function has no identifier until a program holds it, so `add_call` takes
the callee's signature from its caller and checks the operands against it, and
`QuantumProgram::new` verifies the recorded types against the function actually named.
Nothing about the callee is stored: a call instruction's operand types and its own result
types are the contract as it was checked. Every function the program holds is verified, not
only those the entry point reaches, so evaluation resolves a call with no error path of its
own. A function the entry point cannot reach is accepted, and removing one is a pass rather
than a validity rule.

Both checks compare a declared type against an offered one, which `TensorType::admits`
answers: it is `Tensor::matches` with a type in place of the tensor, so a bounded axis
admits any size within its bound. The per-axis rule the two share moves onto `Dim::admits`.
A result a call declares must admit what its callee produces, because the instructions
reading that result were type-checked against the declared type.

A call instruction reports no built-in implementation, so a function holding one is not
locally evaluable by itself, and the program-level question walks the reachable functions
instead. `QuantumProgram::eval` settles that for every reachable function before anything
runs, then resolves each call against the program's functions as it walks. A function
reached through a ... (continued)

618 of 637 new or added lines in 4 files covered. (97.02%)

23 existing lines in 2 files now uncovered.

121301 of 137773 relevant lines covered (88.04%)

950451.89 hits per line

Uncovered Changes

Lines Coverage ∆ File
13
96.83
0.56% crates/providers/src/program/quantum_program.rs
6
95.33
1.21% crates/providers/src/program/program_function.rs

Coverage Regressions

Lines Coverage ∆ File
18
95.78
-1.41% crates/qasm2/src/parse.rs
5
92.54
-0.26% crates/qasm2/src/lex.rs
Jobs
ID Job ID Ran Files Coverage
1 35916544778.1 23 Sep 2026 09:02PM UTC 975
88.04
GitHub Action Run
Source Files on build 35916544778
  • Tree
  • List 975
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35916544778
  • ed4cf355 on github
  • Prev Build on gh-readonly-queue/main/pr-16924-33bca5c06d8f7b04f6fbe5fc5a57804452c02078 (#35916542228)
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