lspitzner / lspitzner/brittany

ParallelListComp leads to syntactically invalid result

Open
#372 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug language extension support
Dominant language
Haskell
Stars
686
Forks
69
PR merge metrics
No merged PRs in 30d

Description

This Haskell file compiles just fine with ghc 8.10.

{-# LANGUAGE ParallelListComp #-}

         main = undefined
         b = undefined
         c = undefined
         d = undefined
         e = undefined

         a      =  [ b
                            |  c
                            | d <- e
                           ]
        

But running brittany 0.13.1.1 on it causes it to print an error: ERROR: brittany pretty printer returned syntactically invalid result.
Running with --output-on-errors produces this output

{-# LANGUAGE ParallelListComp #-}

main = undefined
b = undefined
c = undefined
d = undefined
e = undefined

a = [ b | c d <- e ]


brittany.yaml
conf_debug:
  dconf_roundtrip_exactprint_only: false
  dconf_dump_bridoc_simpl_par: false
  dconf_dump_ast_unknown: false
  dconf_dump_bridoc_simpl_floating: false
  dconf_dump_config: false
  dconf_dump_bridoc_raw: false
  dconf_dump_bridoc_final: false
  dconf_dump_bridoc_simpl_alt: false
  dconf_dump_bridoc_simpl_indent: false
  dconf_dump_annotations: false
  dconf_dump_bridoc_simpl_columns: false
  dconf_dump_ast_full: false
conf_forward:
  options_ghc:
  - -XBangPatterns
  - -XBlockArguments
  - -XExplicitForAll
  - -XExplicitNamespaces
  - -XGADTs
  - -XImplicitParams
  - -XLambdaCase
  - -XMultiWayIf
  - -XNumericUnderscores
  - -XParallelListComp
  - -XPatternGuards
  - -XQuasiQuotes
  - -XRecursiveDo
  - -XTemplateHaskell
  - -XTupleSections
  - -XTypeApplications
  - -XViewPatterns
conf_errorHandling:
  econf_ExactPrintFallback: ExactPrintFallbackModeInline
  econf_Werror: false
  econf_omit_output_valid_check: false
  econf_produceOutputOnErrors: false
conf_preprocessor:
  ppconf_CPPMode: CPPModeAbort
  ppconf_hackAroundIncludes: false
conf_version: 1
conf_layout:
  lconfig_altChooser:
    tag: AltChooserBoundedSearch
    contents: 3
  lconfig_importColumn: 50
  lconfig_alignmentLimit: 30
  lconfig_indentListSpecial: true
  lconfig_indentAmount: 2
  lconfig_alignmentBreakOnMultiline: true
  lconfig_cols: 80
  lconfig_indentPolicy: IndentPolicyFree
  lconfig_indentWhereSpecial: true
  lconfig_columnAlignMode:
    tag: ColumnAlignModeMajority
    contents: 0.7

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running brittany 0.13.1.1 on the supplied Haskell example with ParallelListComp enabled, then compile both the input and formatted output with GHC. Trace the formatter path for parallel list comprehensions; done means the formatted result remains syntactically valid and preserves the parallel comprehension structure.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.