Skip to content

Warning is emitted in reverse #11269

@leana8959

Description

@leana8959

Describe the bug
When cabal emits field grammar parser warnings, it does so in reverse. That is, a line comes later in a file comes earlier in the warning. This is inconsistent with ghc's default behaviour.

To Reproduce

  • Write this to a cabal file

    cabal-version: 3.0
    name:          simple
    version:       0.1.0.0
    
    common a
      build-depends:
    
    library
      hs-source-dirs:     src
      exposed-modules:
        App
    
      import: a
      import: a
      import: a
      import: a
  • Run

    $ cabal build
    
  • The warning should be something like the following. Note how it goes from line 16 to 13.
    This is inconsistent with ghc's default behavior, for example.

    Resolving dependencies...
    Build profile: -w ghc-9.8.4 -O1
    In order, the following will be built (use -v for more details):
     - simple-0.1.0.0 (lib) (configuration changed)
    Warning: simple.cabal:16:3: Unknown field: import. Common stanza imports
    should be at the top of the enclosing section
    Warning: simple.cabal:15:3: Unknown field: import. Common stanza imports
    should be at the top of the enclosing section
    Warning: simple.cabal:14:3: Unknown field: import. Common stanza imports
    should be at the top of the enclosing section
    Warning: simple.cabal:13:3: Unknown field: import. Common stanza imports
    should be at the top of the enclosing section
    

Expected behavior
The warnings should be in the same order as the file.

System information

  • Linux 6.12.47, NixOS, 25.05 (Warbler), 872106a4
  • cabal-install version 3.17.0.0 (commit 0c8d69f, Mon Nov 3 19:17:29 2025 +0000)
    compiled using version 3.17.0.0 of the Cabal library (in-tree)

Additional context
Maybe someone forgot to flip the warnings accumulator?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions