Support only GHC 9.0 #357
|
@ -0,0 +1,30 @@
|
||||||
|
ARG UBUNTU_TAG=20.04
|
||||||
|
FROM ubuntu:"$UBUNTU_TAG"
|
||||||
|
|
||||||
|
ENV LANG=C.UTF-8
|
||||||
|
RUN \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install --assume-yes curl gcc git libgmp-dev libtinfo-dev make sudo
|
||||||
|
|
||||||
|
ARG GHCUP_VERSION=0.1.17.3
|
||||||
|
RUN \
|
||||||
|
curl --output /usr/local/bin/ghcup "https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/x86_64-linux-ghcup-$GHCUP_VERSION" && \
|
||||||
|
chmod +x /usr/local/bin/ghcup && \
|
||||||
|
ghcup --version
|
||||||
|
|
||||||
|
ARG USER_NAME=haskell
|
||||||
|
RUN \
|
||||||
|
useradd --create-home --shell "$( which bash )" "$USER_NAME" && \
|
||||||
|
echo "$USER_NAME ALL=(ALL) NOPASSWD: ALL" | tee "/etc/sudoers.d/$USER_NAME"
|
||||||
|
USER "$USER_NAME"
|
||||||
|
ENV PATH="/home/$USER_NAME/.cabal/bin:/home/$USER_NAME/.ghcup/bin:$PATH"
|
||||||
|
|
||||||
|
ARG GHC_VERSION=9.0.1
|
||||||
|
RUN \
|
||||||
|
ghcup install ghc "$GHC_VERSION" --set && \
|
||||||
|
ghc --version
|
||||||
|
|
||||||
|
ARG CABAL_VERSION=3.6.2.0
|
||||||
|
RUN \
|
||||||
|
ghcup install cabal "$CABAL_VERSION" --set && \
|
||||||
|
cabal --version
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "Dockerfile"
|
||||||
|
},
|
||||||
|
"postCreateCommand": "cabal update"
|
||||||
|
}
|
|
@ -2,38 +2,33 @@ name: CI
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- main
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- main
|
||||||
|
release:
|
||||||
|
types:
|
||||||
|
- created
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
|
||||||
- macos-10.15
|
|
||||||
- ubuntu-18.04
|
|
||||||
- windows-2019
|
|
||||||
ghc:
|
|
||||||
- 8.10.2
|
|
||||||
cabal:
|
|
||||||
- 3.2.0.0
|
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-18.04
|
- { os: macos-11, ghc: 9.0.1, cabal: 3.6.2.0 }
|
||||||
ghc: 8.8.4
|
- { os: ubuntu-20.04, ghc: 9.0.1, cabal: 3.6.2.0 }
|
||||||
cabal: 3.2.0.0
|
- { os: windows-2019, ghc: 9.0.1, cabal: 3.6.2.0, ext: .exe }
|
||||||
- os: ubuntu-18.04
|
|
||||||
ghc: 8.6.5
|
|
||||||
cabal: 3.2.0.0
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
- run: mkdir artifact
|
||||||
|
- run: mkdir artifact/${{ matrix.os }}
|
||||||
- id: setup-haskell
|
- id: setup-haskell
|
||||||
uses: actions/setup-haskell@v1
|
uses: haskell/actions/setup@v1
|
||||||
with:
|
with:
|
||||||
ghc-version: ${{ matrix.ghc }}
|
ghc-version: ${{ matrix.ghc }}
|
||||||
cabal-version: ${{ matrix.cabal }}
|
cabal-version: ${{ matrix.cabal }}
|
||||||
|
- run: cabal configure --enable-tests --flags pedantic --jobs
|
||||||
- run: cabal freeze
|
- run: cabal freeze
|
||||||
- run: cat cabal.project.freeze
|
- run: cat cabal.project.freeze
|
||||||
- uses: actions/cache@v2
|
- uses: actions/cache@v2
|
||||||
|
@ -43,24 +38,66 @@ jobs:
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ matrix.os }}-${{ matrix.ghc }}-${{ matrix.cabal }}-
|
${{ matrix.os }}-${{ matrix.ghc }}-${{ matrix.cabal }}-
|
||||||
${{ matrix.os }}-${{ matrix.ghc }}-
|
${{ matrix.os }}-${{ matrix.ghc }}-
|
||||||
|
- run: cabal build
|
||||||
|
- run: cabal install --installdir artifact/${{ matrix.os }} --install-method copy
|
||||||
- run: cabal test --test-show-details direct
|
- run: cabal test --test-show-details direct
|
||||||
- run: cabal install --installdir output --install-method copy
|
- run: cabal check
|
||||||
- run: strip output/brittany*
|
- run: cabal sdist --output-dir artifact/${{ matrix.os }}
|
||||||
|
- uses: svenstaro/upx-action@v2
|
||||||
|
with:
|
||||||
|
file: artifact/${{ matrix.os }}/brittany${{ matrix.ext }}
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
path: output/brittany*
|
path: artifact
|
||||||
name: brittany-${{ matrix.os }}-ghc-${{ matrix.ghc }}-${{ github.sha }}
|
name: brittany-${{ github.sha }}
|
||||||
- if: matrix.os == 'ubuntu-18.04' && matrix.ghc == '8.10.2'
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
path: dist-newstyle/sdist/brittany-*.tar.gz
|
|
||||||
name: brittany-${{ github.sha }}.tar.gz
|
|
||||||
- run: cabal check
|
|
||||||
|
|
||||||
|
release:
|
||||||
nix:
|
needs: build
|
||||||
runs-on: ubuntu-latest
|
if: github.event_name == 'release'
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: cachix/install-nix-action@v12
|
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- run: nix-build
|
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: brittany-${{ github.sha }}
|
||||||
|
path: artifact
|
||||||
|
|
||||||
|
- uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
asset_content_type: application/octet-stream
|
||||||
|
asset_name: brittany-${{ github.event.release.tag_name }}-ubuntu
|
||||||
|
asset_path: artifact/ubuntu-20.04/brittany
|
||||||
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
|
|
||||||
|
- uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
asset_content_type: application/octet-stream
|
||||||
|
asset_name: brittany-${{ github.event.release.tag_name }}-macos
|
||||||
|
asset_path: artifact/macos-11/brittany
|
||||||
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
|
|
||||||
|
- uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
asset_content_type: application/octet-stream
|
||||||
|
asset_name: brittany-${{ github.event.release.tag_name }}-windows.exe
|
||||||
|
asset_path: artifact/windows-2019/brittany.exe
|
||||||
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
|
|
||||||
|
- uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
asset_content_type: application/gzip
|
||||||
|
asset_name: brittany-${{ github.event.release.tag_name }}.tar.gz
|
||||||
|
asset_path: artifact/ubuntu-20.04/brittany-${{ github.event.release.tag_name }}.tar.gz
|
||||||
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
|
|
||||||
|
- run: cabal upload --publish --username '${{ secrets.HACKAGE_USERNAME }}' --password '${{ secrets.HACKAGE_PASSWORD }}' artifact/ubuntu-20.04/brittany-${{ github.event.release.tag_name }}.tar.gz
|
||||||
|
|
|
@ -8,9 +8,8 @@ dist/
|
||||||
dist-newstyle/
|
dist-newstyle/
|
||||||
local/
|
local/
|
||||||
.cabal-sandbox/
|
.cabal-sandbox/
|
||||||
.stack-work/
|
|
||||||
cabal.sandbox.config
|
cabal.sandbox.config
|
||||||
cabal.project.local
|
cabal.project.local*
|
||||||
|
cabal.project.freeze
|
||||||
.ghc.environment.*
|
.ghc.environment.*
|
||||||
result
|
result
|
||||||
.stack-work*
|
|
||||||
|
|
22
.hlint.yaml
22
.hlint.yaml
|
@ -5,20 +5,12 @@
|
||||||
# This file contains a template configuration file, which is typically
|
# This file contains a template configuration file, which is typically
|
||||||
# placed as .hlint.yaml in the root of your project
|
# placed as .hlint.yaml in the root of your project
|
||||||
|
|
||||||
# Specify additional command line arguments
|
- ignore: { name: 'Use :' }
|
||||||
|
- ignore: { name: Eta reduce }
|
||||||
- arguments:
|
- ignore: { name: Move brackets to avoid $ }
|
||||||
[ "--cpp-include=srcinc"
|
- ignore: { name: Redundant $ }
|
||||||
, "--language=GADTs"
|
- ignore: { name: Redundant bracket }
|
||||||
, "--language=LambdaCase"
|
- ignore: { name: Use newtype instead of data }
|
||||||
, "--language=MultiWayIf"
|
|
||||||
, "--language=KindSignatures"
|
|
||||||
, "--cross"
|
|
||||||
, "--threads=0"
|
|
||||||
]
|
|
||||||
|
|
||||||
- ignore: {name: "Use camelCase"}
|
|
||||||
- ignore: {name: "Redundant as"}
|
|
||||||
- ignore: {name: "Redundant do"}
|
- ignore: {name: "Redundant do"}
|
||||||
- ignore: {name: "Redundant return"}
|
- ignore: {name: "Redundant return"}
|
||||||
- ignore: {name: "Redundant guard", whithin: "lrdrNameToTextAnn"}
|
- ignore: {name: "Use camelCase"}
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
language: minimal
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
|||||||
|
{
|
||||||
![]()
Review
Unfortunately this doesn't really work. And it definitely won't work (for a while) if I upgrade to GHC 9.2. Unfortunately this doesn't really work. And it definitely won't work (for a while) if I upgrade to GHC 9.2.
|
|||||||
|
"recommendations": [
|
||||||
![]()
Review
Unfortunately this doesn't really work. And it definitely won't work (for a while) if I upgrade to GHC 9.2. Unfortunately this doesn't really work. And it definitely won't work (for a while) if I upgrade to GHC 9.2.
|
|||||||
|
"taylorfausak.purple-yolk"
|
||||||
![]()
Review
Unfortunately this doesn't really work. And it definitely won't work (for a while) if I upgrade to GHC 9.2. Unfortunately this doesn't really work. And it definitely won't work (for a while) if I upgrade to GHC 9.2.
|
|||||||
|
]
|
||||||
![]()
Review
Unfortunately this doesn't really work. And it definitely won't work (for a while) if I upgrade to GHC 9.2. Unfortunately this doesn't really work. And it definitely won't work (for a while) if I upgrade to GHC 9.2.
|
|||||||
|
}
|
||||||
![]()
Review
Unfortunately this doesn't really work. And it definitely won't work (for a while) if I upgrade to GHC 9.2. Unfortunately this doesn't really work. And it definitely won't work (for a while) if I upgrade to GHC 9.2.
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"purple-yolk.brittany.command": "cabal exec -- brittany --write-mode inplace",
|
||||||
|
"purple-yolk.ghci.command": "cabal repl --repl-options -ddump-json",
|
||||||
|
"purple-yolk.hlint.command": "false",
|
||||||
|
"purple-yolk.hlint.onSave": false
|
||||||
|
}
|
|
@ -1,5 +1,12 @@
|
||||||
# Revision history for brittany
|
# Revision history for brittany
|
||||||
|
|
||||||
|
## 0.14.0.0 -- November 2021
|
||||||
|
|
||||||
|
* #357: Added support for GHC 9.0. Dropped support for all other versions of GHC.
|
||||||
|
* ab59e9acc3069551ac4132321b285d000f5f5691: Removed runtime dependency on `ghc-paths`.
|
||||||
|
* fa8365a7fa9372043d5a1018f2f7669ce3853edd: Started providing pre-built binaries for Linux, MacOS, and Windows.
|
||||||
|
* Many other changes to Brittany's internals and exposed Haskell interface, but (hopefully) no changes to its command-line interface.
|
||||||
|
|
||||||
## 0.13.1.2 -- May 2021
|
## 0.13.1.2 -- May 2021
|
||||||
|
|
||||||
* #347: Allowed hspec 2.8. Thanks @felixonmars!
|
* #347: Allowed hspec 2.8. Thanks @felixonmars!
|
||||||
|
|
18
Makefile
18
Makefile
|
@ -1,18 +0,0 @@
|
||||||
.PHONY: test
|
|
||||||
test:
|
|
||||||
echo "test"
|
|
||||||
stack test
|
|
||||||
|
|
||||||
.PHONY: test-all
|
|
||||||
test-all:
|
|
||||||
$(MAKE) test test-8.8.4 test-8.6.5
|
|
||||||
|
|
||||||
.PHONY: test-8.8.4
|
|
||||||
test-8.8.4:
|
|
||||||
echo "test 8.8.4"
|
|
||||||
stack test --stack-yaml stack-8.8.4.yaml --work-dir .stack-work-8.8.4
|
|
||||||
|
|
||||||
.PHONY: test-8.6.5
|
|
||||||
test-8.6.5:
|
|
||||||
echo "test 8.6.5"
|
|
||||||
stack test --stack-yaml stack-8.6.5.yaml --work-dir .stack-work-8.6.5
|
|
23
README.md
23
README.md
|
@ -48,7 +48,7 @@ log the size of the input, but _not_ the full input/output of requests.)
|
||||||
|
|
||||||
# Other usage notes
|
# Other usage notes
|
||||||
|
|
||||||
- Supports GHC versions `8.6`, `8.8`, `8.10`.
|
- Supports GHC version `9.0.x`.
|
||||||
- included in stackage with lts>=10.0 (or nightlies dating to >=2017-11-15)
|
- included in stackage with lts>=10.0 (or nightlies dating to >=2017-11-15)
|
||||||
- config (file) documentation is lacking.
|
- config (file) documentation is lacking.
|
||||||
- some config values can not be configured via commandline yet.
|
- some config values can not be configured via commandline yet.
|
||||||
|
@ -65,14 +65,7 @@ log the size of the input, but _not_ the full input/output of requests.)
|
||||||
~~~~
|
~~~~
|
||||||
|
|
||||||
If you use an lts that includes brittany this should just work; otherwise
|
If you use an lts that includes brittany this should just work; otherwise
|
||||||
you may want to clone the repo and try again (there are several stack.yamls
|
you may want to clone the repo and try again.
|
||||||
included).
|
|
||||||
|
|
||||||
- via `nix`:
|
|
||||||
~~~.sh
|
|
||||||
nix build
|
|
||||||
nix-env -i ./result
|
|
||||||
~~~
|
|
||||||
|
|
||||||
- via `cabal`
|
- via `cabal`
|
||||||
|
|
||||||
|
@ -103,18 +96,6 @@ log the size of the input, but _not_ the full input/output of requests.)
|
||||||
|
|
||||||
# Development tips
|
# Development tips
|
||||||
|
|
||||||
## Run a hoogle server
|
|
||||||
|
|
||||||
To host a local Hoogle server with all of Brittany's dependencies run:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
echo brittany.cabal |
|
|
||||||
$(nix-build '<nixpkgs>' --no-link -A entr)/bin/entr -r -- \
|
|
||||||
sh -c "nix-shell --run 'hoogle server --local'"
|
|
||||||
```
|
|
||||||
|
|
||||||
This will watch `brittany.cabal` for changes and restart the server when new dependencies are added there.
|
|
||||||
|
|
||||||
# Editor Integration
|
# Editor Integration
|
||||||
|
|
||||||
#### Sublime text
|
#### Sublime text
|
||||||
|
|
396
brittany.cabal
396
brittany.cabal
|
@ -1,14 +1,15 @@
|
||||||
|
cabal-version: 2.2
|
||||||
|
|
||||||
name: brittany
|
name: brittany
|
||||||
version: 0.13.1.2
|
version: 0.14.0.0
|
||||||
synopsis: Haskell source code formatter
|
synopsis: Haskell source code formatter
|
||||||
description: {
|
description:
|
||||||
See <https://github.com/lspitzner/brittany/blob/master/README.md the README>.
|
See <https://github.com/lspitzner/brittany/blob/master/README.md the README>.
|
||||||
.
|
.
|
||||||
If you are interested in the implementation, have a look at <https://github.com/lspitzner/brittany/blob/master/doc/implementation/theory.md this document>;
|
If you are interested in the implementation, have a look at <https://github.com/lspitzner/brittany/blob/master/doc/implementation/theory.md this document>;
|
||||||
.
|
.
|
||||||
The implementation is documented in more detail <https://github.com/lspitzner/brittany/blob/master/doc/implementation/index.md here>.
|
The implementation is documented in more detail <https://github.com/lspitzner/brittany/blob/master/doc/implementation/index.md here>.
|
||||||
}
|
license: AGPL-3.0-only
|
||||||
license: AGPL-3
|
|
||||||
license-file: LICENSE
|
license-file: LICENSE
|
||||||
author: Lennart Spitzner
|
author: Lennart Spitzner
|
||||||
maintainer: Lennart Spitzner <hexagoxel@hexagoxel.de>
|
maintainer: Lennart Spitzner <hexagoxel@hexagoxel.de>
|
||||||
|
@ -16,326 +17,133 @@ copyright: Copyright (C) 2016-2019 Lennart Spitzner
|
||||||
Copyright (C) 2019 PRODA LTD
|
Copyright (C) 2019 PRODA LTD
|
||||||
category: Language
|
category: Language
|
||||||
build-type: Simple
|
build-type: Simple
|
||||||
cabal-version: 1.18
|
|
||||||
homepage: https://github.com/lspitzner/brittany/
|
homepage: https://github.com/lspitzner/brittany/
|
||||||
bug-reports: https://github.com/lspitzner/brittany/issues
|
bug-reports: https://github.com/lspitzner/brittany/issues
|
||||||
extra-doc-files: {
|
extra-doc-files:
|
||||||
ChangeLog.md
|
ChangeLog.md
|
||||||
README.md
|
README.md
|
||||||
doc/implementation/*.md
|
doc/implementation/*.md
|
||||||
}
|
extra-source-files:
|
||||||
extra-source-files: {
|
data/brittany.yaml
|
||||||
src-literatetests/*.blt
|
data/*.hs
|
||||||
srcinc/prelude.inc
|
|
||||||
}
|
|
||||||
|
|
||||||
source-repository head {
|
source-repository head
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/lspitzner/brittany.git
|
location: https://github.com/lspitzner/brittany.git
|
||||||
}
|
|
||||||
|
|
||||||
flag brittany-dev-lib
|
flag pedantic
|
||||||
description: set buildable false for anything but lib
|
|
||||||
default: False
|
default: False
|
||||||
|
description: Enables @-Werror@, which turns warnings into errors.
|
||||||
manual: True
|
manual: True
|
||||||
|
|
||||||
flag brittany-test-perf
|
common library
|
||||||
description: determines if performance test suite is enabled
|
build-depends:
|
||||||
default: False
|
, aeson ^>= 2.0.1
|
||||||
manual: True
|
, base ^>= 4.15.0
|
||||||
|
, butcher ^>= 1.3.3
|
||||||
|
, bytestring ^>= 0.10.12
|
||||||
|
, cmdargs ^>= 0.10.21
|
||||||
|
, containers ^>= 0.6.4
|
||||||
|
, czipwith ^>= 1.0.1
|
||||||
|
, data-tree-print ^>= 0.1.0
|
||||||
|
, deepseq ^>= 1.4.5
|
||||||
|
, directory ^>= 1.3.6
|
||||||
|
, extra ^>= 1.7.10
|
||||||
|
, filepath ^>= 1.4.2
|
||||||
|
, ghc ^>= 9.0.1
|
||||||
|
, ghc-boot ^>= 9.0.1
|
||||||
|
, ghc-boot-th ^>= 9.0.1
|
||||||
|
, ghc-exactprint ^>= 0.6.4
|
||||||
|
, monad-memo ^>= 0.5.3
|
||||||
|
, mtl ^>= 2.2.2
|
||||||
|
, multistate ^>= 0.8.0
|
||||||
|
, pretty ^>= 1.1.3
|
||||||
|
, random ^>= 1.2.1
|
||||||
|
, safe ^>= 0.3.19
|
||||||
|
, semigroups ^>= 0.19.2
|
||||||
|
, strict ^>= 0.4.0
|
||||||
|
, syb ^>= 0.7.2
|
||||||
|
, text ^>= 1.2.5
|
||||||
|
, transformers ^>= 0.5.6
|
||||||
|
, uniplate ^>= 1.6.13
|
||||||
|
, yaml ^>= 0.11.7
|
||||||
|
default-language: Haskell2010
|
||||||
|
ghc-options:
|
||||||
|
-Weverything
|
||||||
|
-Wno-all-missed-specialisations
|
||||||
|
-Wno-incomplete-uni-patterns
|
||||||
|
-Wno-missing-deriving-strategies
|
||||||
|
-Wno-missing-export-lists
|
||||||
|
-Wno-missing-import-lists
|
||||||
|
-Wno-missing-local-signatures
|
||||||
|
-Wno-missing-safe-haskell-mode
|
||||||
|
-Wno-monomorphism-restriction
|
||||||
|
-Wno-prepositive-qualified-module
|
||||||
|
-Wno-safe
|
||||||
|
-Wno-unsafe
|
||||||
|
|
||||||
library {
|
if flag(pedantic)
|
||||||
default-language:
|
ghc-options: -Werror
|
||||||
Haskell2010
|
|
||||||
hs-source-dirs:
|
common executable
|
||||||
src
|
import: library
|
||||||
include-dirs:
|
|
||||||
srcinc
|
build-depends: brittany
|
||||||
exposed-modules: {
|
ghc-options:
|
||||||
|
-rtsopts
|
||||||
|
-threaded
|
||||||
|
-Wno-implicit-prelude
|
||||||
|
-Wno-unused-packages
|
||||||
|
|
||||||
|
library
|
||||||
|
import: library
|
||||||
|
|
||||||
|
autogen-modules: Paths_brittany
|
||||||
|
hs-source-dirs: source/library
|
||||||
|
exposed-modules:
|
||||||
Language.Haskell.Brittany
|
Language.Haskell.Brittany
|
||||||
Language.Haskell.Brittany.Main
|
|
||||||
Language.Haskell.Brittany.Internal
|
Language.Haskell.Brittany.Internal
|
||||||
Language.Haskell.Brittany.Internal.Prelude
|
Language.Haskell.Brittany.Internal.Backend
|
||||||
Language.Haskell.Brittany.Internal.PreludeUtils
|
Language.Haskell.Brittany.Internal.BackendUtils
|
||||||
Language.Haskell.Brittany.Internal.Types
|
|
||||||
Language.Haskell.Brittany.Internal.Utils
|
|
||||||
Language.Haskell.Brittany.Internal.Config
|
Language.Haskell.Brittany.Internal.Config
|
||||||
Language.Haskell.Brittany.Internal.Config.Types
|
Language.Haskell.Brittany.Internal.Config.Types
|
||||||
Language.Haskell.Brittany.Internal.Config.Types.Instances
|
Language.Haskell.Brittany.Internal.Config.Types.Instances
|
||||||
Language.Haskell.Brittany.Internal.Obfuscation
|
|
||||||
Paths_brittany
|
|
||||||
}
|
|
||||||
other-modules: {
|
|
||||||
Language.Haskell.Brittany.Internal.LayouterBasics
|
|
||||||
Language.Haskell.Brittany.Internal.Backend
|
|
||||||
Language.Haskell.Brittany.Internal.BackendUtils
|
|
||||||
Language.Haskell.Brittany.Internal.ExactPrintUtils
|
Language.Haskell.Brittany.Internal.ExactPrintUtils
|
||||||
Language.Haskell.Brittany.Internal.Layouters.Type
|
Language.Haskell.Brittany.Internal.LayouterBasics
|
||||||
|
Language.Haskell.Brittany.Internal.Layouters.DataDecl
|
||||||
Language.Haskell.Brittany.Internal.Layouters.Decl
|
Language.Haskell.Brittany.Internal.Layouters.Decl
|
||||||
Language.Haskell.Brittany.Internal.Layouters.Expr
|
Language.Haskell.Brittany.Internal.Layouters.Expr
|
||||||
Language.Haskell.Brittany.Internal.Layouters.Stmt
|
|
||||||
Language.Haskell.Brittany.Internal.Layouters.Pattern
|
|
||||||
Language.Haskell.Brittany.Internal.Layouters.IE
|
Language.Haskell.Brittany.Internal.Layouters.IE
|
||||||
Language.Haskell.Brittany.Internal.Layouters.Import
|
Language.Haskell.Brittany.Internal.Layouters.Import
|
||||||
Language.Haskell.Brittany.Internal.Layouters.Module
|
Language.Haskell.Brittany.Internal.Layouters.Module
|
||||||
Language.Haskell.Brittany.Internal.Layouters.DataDecl
|
Language.Haskell.Brittany.Internal.Layouters.Pattern
|
||||||
|
Language.Haskell.Brittany.Internal.Layouters.Stmt
|
||||||
|
Language.Haskell.Brittany.Internal.Layouters.Type
|
||||||
|
Language.Haskell.Brittany.Internal.Obfuscation
|
||||||
|
Language.Haskell.Brittany.Internal.ParseModule
|
||||||
|
Language.Haskell.Brittany.Internal.Prelude
|
||||||
|
Language.Haskell.Brittany.Internal.PreludeUtils
|
||||||
Language.Haskell.Brittany.Internal.Transformations.Alt
|
Language.Haskell.Brittany.Internal.Transformations.Alt
|
||||||
Language.Haskell.Brittany.Internal.Transformations.Floating
|
|
||||||
Language.Haskell.Brittany.Internal.Transformations.Par
|
|
||||||
Language.Haskell.Brittany.Internal.Transformations.Columns
|
Language.Haskell.Brittany.Internal.Transformations.Columns
|
||||||
|
Language.Haskell.Brittany.Internal.Transformations.Floating
|
||||||
Language.Haskell.Brittany.Internal.Transformations.Indent
|
Language.Haskell.Brittany.Internal.Transformations.Indent
|
||||||
}
|
Language.Haskell.Brittany.Internal.Transformations.Par
|
||||||
ghc-options: {
|
Language.Haskell.Brittany.Internal.Types
|
||||||
-Wall
|
Language.Haskell.Brittany.Internal.Utils
|
||||||
-fno-warn-unused-imports
|
Language.Haskell.Brittany.Main
|
||||||
-fno-warn-redundant-constraints
|
Paths_brittany
|
||||||
}
|
|
||||||
build-depends:
|
|
||||||
{ base >=4.12 && <4.15
|
|
||||||
, ghc >=8.6.1 && <8.11
|
|
||||||
, ghc-paths >=0.1.0.9 && <0.2
|
|
||||||
, ghc-exactprint >=0.5.8 && <0.6.5
|
|
||||||
, transformers >=0.5.2.0 && <0.6
|
|
||||||
, containers >=0.5.7.1 && <0.7
|
|
||||||
, mtl >=2.2.1 && <2.3
|
|
||||||
, text >=1.2 && <1.3
|
|
||||||
, multistate >=0.7.1.1 && <0.9
|
|
||||||
, syb >=0.6 && <0.8
|
|
||||||
, data-tree-print
|
|
||||||
, pretty >=1.1.3.3 && <1.2
|
|
||||||
, bytestring >=0.10.8.1 && <0.11
|
|
||||||
, directory >=1.2.6.2 && <1.4
|
|
||||||
, butcher >=1.3.1 && <1.4
|
|
||||||
, yaml >=0.8.18 && <0.12
|
|
||||||
, aeson >=1.0.1.0 && <1.6
|
|
||||||
, extra >=1.4.10 && <1.8
|
|
||||||
, uniplate >=1.6.12 && <1.7
|
|
||||||
, strict >=0.3.2 && <0.5
|
|
||||||
, monad-memo >=0.4.1 && <0.6
|
|
||||||
, unsafe >=0.0 && <0.1
|
|
||||||
, safe >=0.3.9 && <0.4
|
|
||||||
, deepseq >=1.4.2.0 && <1.5
|
|
||||||
, semigroups >=0.18.2 && <0.20
|
|
||||||
, cmdargs >=0.10.14 && <0.11
|
|
||||||
, czipwith >=1.0.1.0 && <1.1
|
|
||||||
, ghc-boot-th >=8.6.1 && <8.11
|
|
||||||
, filepath >=1.4.1.0 && <1.5
|
|
||||||
, random >= 1.1 && <1.3
|
|
||||||
}
|
|
||||||
default-extensions: {
|
|
||||||
CPP
|
|
||||||
|
|
||||||
NoImplicitPrelude
|
|
||||||
|
|
||||||
GADTs
|
|
||||||
|
|
||||||
FlexibleContexts
|
|
||||||
FlexibleInstances
|
|
||||||
ScopedTypeVariables
|
|
||||||
MonadComprehensions
|
|
||||||
LambdaCase
|
|
||||||
MultiWayIf
|
|
||||||
KindSignatures
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
executable brittany
|
executable brittany
|
||||||
if flag(brittany-dev-lib) {
|
import: executable
|
||||||
buildable: False
|
|
||||||
} else {
|
hs-source-dirs: source/executable
|
||||||
buildable: True
|
|
||||||
}
|
|
||||||
main-is: Main.hs
|
main-is: Main.hs
|
||||||
hs-source-dirs: src-brittany
|
|
||||||
|
test-suite brittany-test-suite
|
||||||
|
import: executable
|
||||||
|
|
||||||
build-depends:
|
build-depends:
|
||||||
{ base
|
, hspec ^>= 2.8.3
|
||||||
, brittany
|
hs-source-dirs: source/test-suite
|
||||||
}
|
|
||||||
default-language: Haskell2010
|
|
||||||
ghc-options: {
|
|
||||||
-Wall
|
|
||||||
-fno-spec-constr
|
|
||||||
-fno-warn-unused-imports
|
|
||||||
-fno-warn-redundant-constraints
|
|
||||||
-rtsopts
|
|
||||||
-with-rtsopts "-M2G"
|
|
||||||
}
|
|
||||||
|
|
||||||
test-suite unittests
|
|
||||||
if flag(brittany-dev-lib) || !flag(brittany-test-perf) {
|
|
||||||
buildable: False
|
|
||||||
} else {
|
|
||||||
buildable: True
|
|
||||||
}
|
|
||||||
type: exitcode-stdio-1.0
|
|
||||||
default-language: Haskell2010
|
|
||||||
build-depends:
|
|
||||||
{ brittany
|
|
||||||
, base
|
|
||||||
, ghc
|
|
||||||
, ghc-paths
|
|
||||||
, ghc-exactprint
|
|
||||||
, transformers
|
|
||||||
, containers
|
|
||||||
, mtl
|
|
||||||
, text
|
|
||||||
, multistate
|
|
||||||
, syb
|
|
||||||
, data-tree-print
|
|
||||||
, pretty
|
|
||||||
, bytestring
|
|
||||||
, directory
|
|
||||||
, butcher
|
|
||||||
, yaml
|
|
||||||
, aeson
|
|
||||||
, extra
|
|
||||||
, uniplate
|
|
||||||
, strict
|
|
||||||
, monad-memo
|
|
||||||
, unsafe
|
|
||||||
, safe
|
|
||||||
, deepseq
|
|
||||||
, semigroups
|
|
||||||
, cmdargs
|
|
||||||
, czipwith
|
|
||||||
, ghc-boot-th
|
|
||||||
, hspec >=2.4.1 && <2.9
|
|
||||||
}
|
|
||||||
main-is: TestMain.hs
|
|
||||||
other-modules: TestUtils
|
|
||||||
AsymptoticPerfTests
|
|
||||||
hs-source-dirs: src-unittests
|
|
||||||
include-dirs: srcinc
|
|
||||||
default-extensions: {
|
|
||||||
CPP
|
|
||||||
|
|
||||||
NoImplicitPrelude
|
|
||||||
|
|
||||||
GADTs
|
|
||||||
|
|
||||||
FlexibleContexts
|
|
||||||
FlexibleInstances
|
|
||||||
ScopedTypeVariables
|
|
||||||
MonadComprehensions
|
|
||||||
LambdaCase
|
|
||||||
MultiWayIf
|
|
||||||
KindSignatures
|
|
||||||
}
|
|
||||||
ghc-options: {
|
|
||||||
-Wall
|
|
||||||
-fno-warn-unused-imports
|
|
||||||
-rtsopts
|
|
||||||
-with-rtsopts "-M2G"
|
|
||||||
-threaded
|
|
||||||
-- ^ threaded is not necessary at all, but our CI trusts on being able
|
|
||||||
-- to pass -N1, which is not possible without threaded :-/
|
|
||||||
-- (plus -no-threaded is not a thing, afaict)
|
|
||||||
}
|
|
||||||
|
|
||||||
test-suite littests
|
|
||||||
if flag(brittany-dev-lib) {
|
|
||||||
buildable: False
|
|
||||||
} else {
|
|
||||||
buildable: True
|
|
||||||
}
|
|
||||||
type: exitcode-stdio-1.0
|
|
||||||
default-language: Haskell2010
|
|
||||||
build-depends:
|
|
||||||
{ brittany
|
|
||||||
, base
|
|
||||||
, ghc
|
|
||||||
, ghc-paths
|
|
||||||
, ghc-exactprint
|
|
||||||
, transformers
|
|
||||||
, containers
|
|
||||||
, mtl
|
|
||||||
, text
|
|
||||||
, multistate
|
|
||||||
, syb
|
|
||||||
, data-tree-print
|
|
||||||
, pretty
|
|
||||||
, bytestring
|
|
||||||
, directory
|
|
||||||
, butcher
|
|
||||||
, yaml
|
|
||||||
, aeson
|
|
||||||
, extra
|
|
||||||
, uniplate
|
|
||||||
, strict
|
|
||||||
, monad-memo
|
|
||||||
, unsafe
|
|
||||||
, safe
|
|
||||||
, deepseq
|
|
||||||
, semigroups
|
|
||||||
, cmdargs
|
|
||||||
, czipwith
|
|
||||||
, ghc-boot-th
|
|
||||||
, hspec >=2.4.1 && <2.9
|
|
||||||
, filepath
|
|
||||||
, parsec >=3.1.11 && <3.2
|
|
||||||
}
|
|
||||||
main-is: Main.hs
|
main-is: Main.hs
|
||||||
other-modules:
|
|
||||||
hs-source-dirs: src-literatetests
|
|
||||||
include-dirs: srcinc
|
|
||||||
default-extensions: {
|
|
||||||
CPP
|
|
||||||
|
|
||||||
NoImplicitPrelude
|
|
||||||
|
|
||||||
GADTs
|
|
||||||
|
|
||||||
FlexibleContexts
|
|
||||||
FlexibleInstances
|
|
||||||
ScopedTypeVariables
|
|
||||||
MonadComprehensions
|
|
||||||
LambdaCase
|
|
||||||
MultiWayIf
|
|
||||||
KindSignatures
|
|
||||||
}
|
|
||||||
ghc-options: {
|
|
||||||
-Wall
|
|
||||||
-fno-warn-unused-imports
|
|
||||||
-threaded
|
|
||||||
-rtsopts
|
|
||||||
-with-rtsopts "-M2G -N"
|
|
||||||
}
|
|
||||||
|
|
||||||
test-suite libinterfacetests
|
|
||||||
if flag(brittany-dev-lib) {
|
|
||||||
buildable: False
|
|
||||||
} else {
|
|
||||||
buildable: True
|
|
||||||
}
|
|
||||||
type: exitcode-stdio-1.0
|
type: exitcode-stdio-1.0
|
||||||
default-language: Haskell2010
|
|
||||||
build-depends:
|
|
||||||
{ brittany
|
|
||||||
, base
|
|
||||||
, text
|
|
||||||
, transformers
|
|
||||||
, hspec >=2.4.1 && <2.9
|
|
||||||
}
|
|
||||||
main-is: Main.hs
|
|
||||||
other-modules:
|
|
||||||
hs-source-dirs: src-libinterfacetests
|
|
||||||
include-dirs: srcinc
|
|
||||||
default-extensions: {
|
|
||||||
FlexibleContexts
|
|
||||||
FlexibleInstances
|
|
||||||
ScopedTypeVariables
|
|
||||||
MonadComprehensions
|
|
||||||
LambdaCase
|
|
||||||
MultiWayIf
|
|
||||||
KindSignatures
|
|
||||||
}
|
|
||||||
ghc-options: {
|
|
||||||
-Wall
|
|
||||||
-fno-warn-unused-imports
|
|
||||||
-rtsopts
|
|
||||||
-with-rtsopts "-M2G"
|
|
||||||
-threaded
|
|
||||||
-- ^ threaded is not necessary at all, but our CI trusts on being able
|
|
||||||
-- to pass -N1, which is not possible without threaded :-/
|
|
||||||
-- (plus -no-threaded is not a thing, afaict)
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
conf_layout:
|
||||||
|
lconfig_columnAlignMode:
|
||||||
|
tag: ColumnAlignModeDisabled
|
||||||
|
lconfig_indentPolicy: IndentPolicyLeft
|
|
@ -0,0 +1,12 @@
|
||||||
|
packages: .
|
||||||
|
|
||||||
|
allow-newer:
|
||||||
|
, butcher:base
|
||||||
|
, data-tree-print:base
|
||||||
|
, multistate:base
|
||||||
|
|
||||||
|
-- https://github.com/lspitzner/czipwith/pull/2
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/mithrandi/czipwith
|
||||||
|
tag: b6245884ae83e00dd2b5261762549b37390179f8
|
|
@ -0,0 +1 @@
|
||||||
|
func :: a -> a
|
|
@ -0,0 +1,3 @@
|
||||||
|
func
|
||||||
|
:: lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
||||||
|
-> (lakjsdlkjasldkj -> lakjsdlkjasldkj)
|
|
@ -0,0 +1 @@
|
||||||
|
func = klajsdas klajsdas klajsdas
|
|
@ -0,0 +1,3 @@
|
||||||
|
func = lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
|
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
|
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
|
@ -0,0 +1,3 @@
|
||||||
|
func = lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd lakjsdlajsdljas
|
||||||
|
lakjsdlajsdljas
|
||||||
|
lakjsdlajsdljas
|
|
@ -0,0 +1 @@
|
||||||
|
func = (1 +)
|
|
@ -0,0 +1 @@
|
||||||
|
func = (+ 1)
|
|
@ -0,0 +1 @@
|
||||||
|
func = (1 `abc`)
|
|
@ -0,0 +1 @@
|
||||||
|
func = (`abc` 1)
|
|
@ -0,0 +1 @@
|
||||||
|
func = (abc, def)
|
|
@ -0,0 +1 @@
|
||||||
|
func = (abc, )
|
|
@ -0,0 +1 @@
|
||||||
|
func = (, abc)
|
|
@ -0,0 +1,3 @@
|
||||||
|
func
|
||||||
|
:: (lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd -> lakjsdlkjasldkj)
|
||||||
|
-> lakjsdlkjasldkj
|
|
@ -0,0 +1,6 @@
|
||||||
|
myTupleSection =
|
||||||
|
( verylaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaargefirstelement
|
||||||
|
,
|
||||||
|
, verylaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaargethirdelement
|
||||||
|
,
|
||||||
|
)
|
|
@ -0,0 +1,4 @@
|
||||||
|
func =
|
||||||
|
( lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
|
, lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
|
)
|
|
@ -0,0 +1,6 @@
|
||||||
|
foo = if True
|
||||||
|
then
|
||||||
|
-- iiiiii
|
||||||
|
"a "
|
||||||
|
else
|
||||||
|
"b "
|
|
@ -0,0 +1,5 @@
|
||||||
|
func = if cond
|
||||||
|
then pure 42
|
||||||
|
else do
|
||||||
|
-- test
|
||||||
|
abc
|
|
@ -0,0 +1,3 @@
|
||||||
|
func = case x of
|
||||||
|
False -> False
|
||||||
|
True -> True
|
|
@ -0,0 +1,7 @@
|
||||||
|
func =
|
||||||
|
case
|
||||||
|
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
|
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
|
of
|
||||||
|
False -> False
|
||||||
|
True -> True
|
|
@ -0,0 +1,7 @@
|
||||||
|
func = do
|
||||||
|
case
|
||||||
|
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
|
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
|
of
|
||||||
|
False -> False
|
||||||
|
True -> True
|
|
@ -0,0 +1 @@
|
||||||
|
func = case x of {}
|
|
@ -0,0 +1,5 @@
|
||||||
|
func =
|
||||||
|
case
|
||||||
|
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
|
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
|
of {}
|
|
@ -0,0 +1,5 @@
|
||||||
|
func = do
|
||||||
|
case
|
||||||
|
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
|
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
|
of {}
|
|
@ -0,0 +1,5 @@
|
||||||
|
func
|
||||||
|
:: ( lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
||||||
|
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
||||||
|
)
|
||||||
|
-> lakjsdlkjasldkj
|
|
@ -0,0 +1,3 @@
|
||||||
|
func = do
|
||||||
|
stmt
|
||||||
|
stmt
|
|
@ -0,0 +1,3 @@
|
||||||
|
func = do
|
||||||
|
x <- stmt
|
||||||
|
stmt x
|
|
@ -0,0 +1,3 @@
|
||||||
|
func = do
|
||||||
|
let x = 13
|
||||||
|
stmt x
|
|
@ -0,0 +1,7 @@
|
||||||
|
func =
|
||||||
|
foooooo
|
||||||
|
$ [ case
|
||||||
|
foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
|
||||||
|
of
|
||||||
|
_ -> True
|
||||||
|
]
|
|
@ -0,0 +1,4 @@
|
||||||
|
testMethod foo bar baz qux =
|
||||||
|
let x = undefined foo bar baz qux qux baz bar :: String
|
||||||
|
-- some comment explaining the in expression
|
||||||
|
in undefined foo x :: String
|
|
@ -0,0 +1,4 @@
|
||||||
|
testMethod foo bar baz qux =
|
||||||
|
let x = undefined :: String
|
||||||
|
-- some comment explaining the in expression
|
||||||
|
in undefined :: String
|
|
@ -0,0 +1,3 @@
|
||||||
|
testMethod foo bar baz qux =
|
||||||
|
-- some comment explaining the in expression
|
||||||
|
let x = undefined :: String in undefined :: String
|
|
@ -0,0 +1,6 @@
|
||||||
|
foo foo bar baz qux =
|
||||||
|
let a = 1
|
||||||
|
b = 2
|
||||||
|
c = 3
|
||||||
|
-- some comment explaining the in expression
|
||||||
|
in undefined :: String
|
|
@ -0,0 +1,6 @@
|
||||||
|
func =
|
||||||
|
foo
|
||||||
|
$ [ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
, bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
|
||||||
|
]
|
||||||
|
++ [ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc]
|
|
@ -0,0 +1 @@
|
||||||
|
module Main where
|
|
@ -0,0 +1,5 @@
|
||||||
|
func
|
||||||
|
:: ( ( lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
||||||
|
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
||||||
|
)
|
||||||
|
)
|
|
@ -0,0 +1 @@
|
||||||
|
module Main () where
|
|
@ -0,0 +1 @@
|
||||||
|
module Main (main) where
|
|
@ -0,0 +1 @@
|
||||||
|
module Main (main, test1, test2) where
|
|
@ -0,0 +1,12 @@
|
||||||
|
module Main
|
||||||
|
( main
|
||||||
|
, test1
|
||||||
|
, test2
|
||||||
|
, test3
|
||||||
|
, test4
|
||||||
|
, test5
|
||||||
|
, test6
|
||||||
|
, test7
|
||||||
|
, test8
|
||||||
|
, test9
|
||||||
|
) where
|
|
@ -0,0 +1,12 @@
|
||||||
|
module Main
|
||||||
|
( main
|
||||||
|
-- main
|
||||||
|
, test1
|
||||||
|
, test2
|
||||||
|
-- Test 3
|
||||||
|
, test3
|
||||||
|
, test4
|
||||||
|
-- Test 5
|
||||||
|
, test5
|
||||||
|
-- Test 6
|
||||||
|
) where
|
|
@ -0,0 +1 @@
|
||||||
|
module Main (Test(..)) where
|
|
@ -0,0 +1 @@
|
||||||
|
module Main (module Main) where
|
|
@ -0,0 +1 @@
|
||||||
|
module Main (Test(Test, a, b)) where
|
|
@ -0,0 +1,6 @@
|
||||||
|
-- comment1
|
||||||
|
module Main
|
||||||
|
( Test(Test, a, b)
|
||||||
|
, foo -- comment2
|
||||||
|
) -- comment3
|
||||||
|
where
|
|
@ -0,0 +1 @@
|
||||||
|
module Main (Test()) where
|
|
@ -0,0 +1 @@
|
||||||
|
func :: asd -> Either a b
|
|
@ -0,0 +1 @@
|
||||||
|
-- Intentionally left empty
|
|
@ -0,0 +1 @@
|
||||||
|
import Data.List
|
|
@ -0,0 +1 @@
|
||||||
|
import Data.List as L
|
|
@ -0,0 +1 @@
|
||||||
|
import qualified Data.List
|
|
@ -0,0 +1 @@
|
||||||
|
import qualified Data.List as L
|
|
@ -0,0 +1 @@
|
||||||
|
import safe Data.List as L
|
|
@ -0,0 +1 @@
|
||||||
|
import {-# SOURCE #-} Data.List ( )
|
|
@ -0,0 +1 @@
|
||||||
|
import safe qualified Data.List
|
|
@ -0,0 +1 @@
|
||||||
|
import {-# SOURCE #-} safe qualified Data.List
|
|
@ -0,0 +1 @@
|
||||||
|
import qualified "base" Data.List
|
|
@ -0,0 +1,5 @@
|
||||||
|
func
|
||||||
|
:: asd
|
||||||
|
-> Either
|
||||||
|
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
||||||
|
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
|
@ -0,0 +1,3 @@
|
||||||
|
import {-# SOURCE #-} safe qualified "base" Data.List as L
|
||||||
|
import {-# SOURCE #-} safe qualified "base" Data.List ( )
|
||||||
|
import {-# SOURCE #-} safe qualified Data.List hiding ( )
|
|
@ -0,0 +1 @@
|
||||||
|
import qualified Data.List ( )
|
|
@ -0,0 +1 @@
|
||||||
|
import Data.List ( nub )
|
|
@ -0,0 +1,4 @@
|
||||||
|
import Data.List ( foldl'
|
||||||
|
, indexElem
|
||||||
|
, nub
|
||||||
|
)
|
|
@ -0,0 +1,14 @@
|
||||||
|
import Test ( Long
|
||||||
|
, anymore
|
||||||
|
, fit
|
||||||
|
, items
|
||||||
|
, line
|
||||||
|
, list
|
||||||
|
, not
|
||||||
|
, onA
|
||||||
|
, quite
|
||||||
|
, single
|
||||||
|
, that
|
||||||
|
, will
|
||||||
|
, with
|
||||||
|
)
|
|
@ -0,0 +1,11 @@
|
||||||
|
import Test ( (+)
|
||||||
|
, (:!)(..)
|
||||||
|
, (:*)((:.), T7, t7)
|
||||||
|
, (:.)
|
||||||
|
, T
|
||||||
|
, T2()
|
||||||
|
, T3(..)
|
||||||
|
, T4(T4)
|
||||||
|
, T5(T5, t5)
|
||||||
|
, T6((<|>))
|
||||||
|
)
|
|
@ -0,0 +1,3 @@
|
||||||
|
import Test hiding ( )
|
||||||
|
import Test as T
|
||||||
|
hiding ( )
|
|
@ -0,0 +1,13 @@
|
||||||
|
import Prelude as X
|
||||||
|
hiding ( head
|
||||||
|
, init
|
||||||
|
, last
|
||||||
|
, maximum
|
||||||
|
, minimum
|
||||||
|
, pred
|
||||||
|
, read
|
||||||
|
, readFile
|
||||||
|
, succ
|
||||||
|
, tail
|
||||||
|
, undefined
|
||||||
|
)
|
|
@ -0,0 +1,3 @@
|
||||||
|
import TestJustAbitToLongModuleNameLikeThisOneIs
|
||||||
|
( )
|
||||||
|
import TestJustShortEnoughModuleNameLikeThisOne ( )
|
|
@ -0,0 +1,3 @@
|
||||||
|
import TestJustAbitToLongModuleNameLikeThisOneI
|
||||||
|
as T
|
||||||
|
import TestJustShortEnoughModuleNameLikeThisOn as T
|
|
@ -0,0 +1,6 @@
|
||||||
|
func
|
||||||
|
:: asd
|
||||||
|
-> Trither
|
||||||
|
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
||||||
|
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
||||||
|
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
|
@ -0,0 +1,3 @@
|
||||||
|
import TestJustAbitToLongModuleNameLikeTh
|
||||||
|
hiding ( )
|
||||||
|
import TestJustShortEnoughModuleNameLike hiding ( )
|
|
@ -0,0 +1,10 @@
|
||||||
|
import MoreThanSufficientlyLongModuleNameWithSome
|
||||||
|
( compact
|
||||||
|
, fit
|
||||||
|
, inA
|
||||||
|
, items
|
||||||
|
, layout
|
||||||
|
, not
|
||||||
|
, that
|
||||||
|
, will
|
||||||
|
)
|
|
@ -0,0 +1,11 @@
|
||||||
|
import TestJustAbitToLongModuleNameLikeTh
|
||||||
|
hiding ( abc
|
||||||
|
, def
|
||||||
|
, ghci
|
||||||
|
, jklm
|
||||||
|
)
|
||||||
|
import TestJustShortEnoughModuleNameLike hiding ( abc
|
||||||
|
, def
|
||||||
|
, ghci
|
||||||
|
, jklm
|
||||||
|
)
|
|
@ -0,0 +1,9 @@
|
||||||
|
import {-# SOURCE #-} safe qualified "qualifier" A hiding ( )
|
||||||
|
import {-# SOURCE #-} safe qualified "qualifiers" A
|
||||||
|
hiding ( )
|
||||||
|
import {-# SOURCE #-} safe qualified "qualifiers" AlsoAf as T
|
||||||
|
import {-# SOURCE #-} safe qualified "qualifiers" AlsoAff ( )
|
||||||
|
import {-# SOURCE #-} safe qualified "qualifiers" AlsoAff
|
||||||
|
as T
|
||||||
|
import {-# SOURCE #-} safe qualified "qualifiers" AlsoAffe
|
||||||
|
( )
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- Test
|
||||||
|
import Data.List ( nub ) -- Test
|
||||||
|
{- Test -}
|
||||||
|
import qualified Data.List as L
|
||||||
|
( foldl' ) {- Test -}
|
||||||
|
-- Test
|
||||||
|
import Test ( test )
|
|
@ -0,0 +1,4 @@
|
||||||
|
import Test ( abc
|
||||||
|
, def
|
||||||
|
-- comment
|
||||||
|
)
|
|
@ -0,0 +1,3 @@
|
||||||
|
import Test ( abc
|
||||||
|
-- comment
|
||||||
|
)
|
|
@ -0,0 +1,8 @@
|
||||||
|
import Test ( abc
|
||||||
|
-- comment
|
||||||
|
, def
|
||||||
|
, ghi
|
||||||
|
{- comment -}
|
||||||
|
, jkl
|
||||||
|
-- comment
|
||||||
|
)
|
|
@ -0,0 +1,2 @@
|
||||||
|
import Test ( -- comment
|
||||||
|
)
|
|
@ -0,0 +1,8 @@
|
||||||
|
import Test ( longbindingNameThatoverflowsColum
|
||||||
|
)
|
||||||
|
import Test ( Long
|
||||||
|
( List
|
||||||
|
, Of
|
||||||
|
, Things
|
||||||
|
)
|
||||||
|
)
|
|
@ -0,0 +1,6 @@
|
||||||
|
func
|
||||||
|
:: Trither
|
||||||
|
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
||||||
|
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
||||||
|
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
|
||||||
|
-> asd
|
|
@ -0,0 +1,18 @@
|
||||||
|
import Test ( Thing
|
||||||
|
( -- Comments
|
||||||
|
)
|
||||||
|
)
|
||||||
|
import Test ( Thing
|
||||||
|
( Item
|
||||||
|
-- and Comment
|
||||||
|
)
|
||||||
|
)
|
||||||
|
import Test ( Thing
|
||||||
|
( With
|
||||||
|
-- Comments
|
||||||
|
, and
|
||||||
|
-- also
|
||||||
|
, items
|
||||||
|
-- !
|
||||||
|
)
|
||||||
|
)
|
|
@ -0,0 +1,2 @@
|
||||||
|
import VeryLongModuleNameThatCouldEvenCauseAnEmptyBindingListToExpandIntoMultipleLine
|
||||||
|
( )
|
|
@ -0,0 +1,26 @@
|
||||||
|
{-# LANGUAGE BangPatterns #-}
|
||||||
|
{-
|
||||||
|
- Test module
|
||||||
|
-}
|
||||||
|
module Test
|
||||||
|
( test1
|
||||||
|
-- ^ test
|
||||||
|
, test2
|
||||||
|
-- | test
|
||||||
|
, test3
|
||||||
|
, test4
|
||||||
|
, test5
|
||||||
|
, test6
|
||||||
|
, test7
|
||||||
|
, test8
|
||||||
|
, test9
|
||||||
|
, test10
|
||||||
|
-- Test 10
|
||||||
|
) where
|
||||||
|
-- Test
|
||||||
|
import Data.List ( nub ) -- Test
|
||||||
|
{- Test -}
|
||||||
|
import qualified Data.List as L
|
||||||
|
( foldl' ) {- Test -}
|
||||||
|
-- Test
|
||||||
|
import Test ( test )
|
|
@ -0,0 +1,2 @@
|
||||||
|
import Aaa
|
||||||
|
import Baa
|
|
@ -0,0 +1,5 @@
|
||||||
|
import Zaa
|
||||||
|
import Zab
|
||||||
|
|
||||||
|
import Aaa
|
||||||
|
import Baa
|
|
@ -0,0 +1,2 @@
|
||||||
|
import Boo
|
||||||
|
import qualified Zoo
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Unfortunately this doesn't really work. And it definitely won't work (for a while) if I upgrade to GHC 9.2.
Unfortunately this doesn't really work. And it definitely won't work (for a while) if I upgrade to GHC 9.2.