Diagnostic and cause
LinkImport after non-import item
- Family
- topaz
- Phase
- parse
- Code
TPZ2010
Cause and conditions
Every top-level import precedes every non-import top-level item.
Related rule: Trigger and repairResponse
Move all imports before the module's declarations and free statements.
Source evidence
- compiler/crates/topaz_diag/src/explain.rs at
151141d7bb44· 301-309 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1197-1197 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1187-1203 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1339-1354 - TPZ2010 at
151141d7bb44
Compiler phase: parse.
Compiler explanation: An import appears after a top-level item that ends the import prologue.
Message templates. The marker ⟨value⟩ stands for text computed for the reported program.
- imports form a prologue: every
importprecedes all other top-level items Source
Observed for the candidate in Topaz 5.21.3. Execution
- error[TPZ2010]: imports form a prologue: every
importprecedes all other top-level items
An import follows a non-import top-level item. That item ended the import prologue.
Trigger and repair
Every top-level import precedes every non-import top-level item.
Source evidence
- compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1187-1203 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1339-1354 - TPZ2010 at
151141d7bb44
Response
LinkMove all imports before the module's declarations and free statements.
Reproduction and verification
LinkRejected program
Linklet value = 1import lib
No stdout.
export let exported = 1
Expected result
The expected diagnostic, cause, source location, and accompanying diagnostics are specified below. The verification status records whether this program has been run.
Source evidence
- compiler/crates/topaz_diag/src/explain.rs at
151141d7bb44· 301-309 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1197-1197 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1187-1203 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1339-1354 - TPZ2010 at
151141d7bb44
Corrected program
Linkimport liblet value = 1
export let exported = 1
Expected result
Expected result
Checking accepts the program. Exit code 0.
This program applies the repair described above. The verification status records whether it has been run.
Source evidence
- compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1187-1203 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1339-1354 - TPZ2010 at
151141d7bb44