Files
Nim/compiler
araq f48efa4b1f IC: record that the lazy interfHidden conversion does not work yet
Tried it. The shape is easy and it is not the problem: `modulegraphs`
already imports `ast2nif` so no callback hook is needed, every read of
`interfHidden` goes through `interfSelect`, and its four call sites all
have the graph and the module to hand.

It builds, and it keeps privacy — a plain `import` still rejects a
private symbol under both `--ic:on` and `--ic:off`. But `import x {.all.}`
then fails under `--ic:on` with "undeclared identifier", where it works
today and works under `--ic:off`. Silent, and entangled with the driver's
discovery loop: the module is not in `DecodeContext.mods` when the lookup
asks, on a cold cache and on a warm one alike.

Three fixes tried, none of them it, recorded in `bnode.nim` so nobody
re-guesses them: clearing `hiddenPending` only on success (necessary, not
sufficient — one early miss otherwise costs the module its hidden symbols
for the whole process); loading the module inside the lazy builder rather
than assuming the caller did; and building into a local `TStrTable` in
case the `var` alias into `g.ifaces` was being invalidated by the seq
growing underneath it. After all three, `ensureHiddenIface` still reports
the module missing on every one of its 19 calls.

So the next attempt starts by instrumenting `moduleId`'s FileIndex
against `moduleFromNifFile`'s — whatever sets `hiddenPending` and
whatever fills `c.mods` are not agreeing about which module they mean —
before any more of the mechanism gets written. The 1.05s is still there
and still worth having.

Comment-only. ic 41/41.
2026-08-31 19:00:48 +02:00
..
2026-06-11 14:10:42 +02:00
2026-02-10 13:21:35 +01:00
2026-06-25 23:20:34 +02:00
2026-08-27 19:35:11 +02:00
2017-01-07 22:35:09 +01:00
2026-08-17 15:02:49 +02:00
2026-08-17 15:02:49 +02:00
2025-12-11 18:22:38 +01:00
2025-12-11 18:22:38 +01:00
2026-08-27 19:35:11 +02:00
2026-07-03 15:52:41 +02:00
2026-07-04 10:13:39 +02:00
2025-11-25 12:49:23 +01:00
2026-08-17 15:02:49 +02:00
2024-12-27 19:42:18 +01:00
2026-06-14 22:35:06 +02:00
2026-08-17 15:02:49 +02:00
2025-12-11 18:22:38 +01:00
2026-04-02 07:19:43 +02:00
2026-06-14 22:35:06 +02:00
2026-06-25 23:20:34 +02:00
2021-01-12 09:36:51 +01:00
2026-01-09 13:10:04 +01:00
2026-06-14 22:35:06 +02:00
2026-08-17 15:02:49 +02:00
2026-07-03 15:52:41 +02:00
2026-08-27 19:35:11 +02:00
2026-06-24 21:58:51 +02:00
2025-12-11 18:22:38 +01:00
2026-08-17 15:02:49 +02:00
2026-06-14 22:35:06 +02:00
2026-08-17 15:02:49 +02:00
2026-02-10 13:21:35 +01:00
2026-08-17 15:02:49 +02:00
2023-07-02 22:36:05 +02:00
2026-08-17 15:02:49 +02:00
2026-08-17 15:02:49 +02:00
2026-08-17 15:02:49 +02:00
2026-08-11 22:27:49 +02:00
2025-12-11 18:22:38 +01:00
2026-08-17 15:02:49 +02:00
2025-12-11 18:22:38 +01:00
2026-08-27 19:35:11 +02:00
2026-08-17 15:02:49 +02:00
2025-12-11 18:22:38 +01:00
2026-08-17 15:02:49 +02:00
2026-08-17 15:02:49 +02:00
2026-08-17 15:02:49 +02:00
2026-06-24 21:58:51 +02:00
2026-08-17 15:02:49 +02:00
2026-08-17 15:02:49 +02:00
2026-08-17 15:02:49 +02:00
2026-08-17 15:02:49 +02:00
2023-12-25 07:12:54 +01:00

Nim Compiler

  • This directory contains the Nim compiler written in Nim.
  • Note that this code has been translated from a bootstrapping version written in Pascal.
  • So the code is not a poster child of good Nim code.

See Internals of the Nim Compiler for more information.