Skip to main content
Next (unreleased) · docs c218d875 · core f63c1e69 · built 2026-10-26 22:39 UTC

root::/super:: are rejected in expression position when the target is declared directly in that module

Limitation​

reference/spec/modules.md lists root and super as path roots and says a fully-qualified path is valid anywhere a name is expected. Reproduced against current develop: root::helper(), called from a submodule where helper is declared directly at the root, fails with T0003 undefined name root::helper``. The same root path through a further submodule (root::parser::make) resolves correctly, and self::f() also works. The symptom is consistent with path normalization handling a multi-segment root path but not the one-segment case where the root module is also the declaring module.

Impact​

A program cannot call a root- or parent-module item by its fully-qualified path from a submodule unless it goes through an intermediate module segment; the spec gives no such exception. The workaround is an explicit import.

Affects​

Resolution​

None yet; tracked as metel-core#1221.