Skip to content

Commit

Permalink
use weeder
Browse files Browse the repository at this point in the history
  • Loading branch information
kostmo committed Jul 17, 2024
1 parent 952b7b9 commit 57f9e49
Show file tree
Hide file tree
Showing 10 changed files with 172 additions and 23 deletions.
36 changes: 36 additions & 0 deletions .github/workflows/haskell-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ jobs:
mkdir -p unpacked
find sdist -maxdepth 1 -type f -name '*.tar.gz' -exec tar -C $GITHUB_WORKSPACE/unpacked -xzvf {} \;
- name: generate cabal.project
id: cabalvars
run: |
PKGDIR_swarm="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/swarm-[0-9.]*')"
echo "PKGDIR_swarm=${PKGDIR_swarm}" >> "$GITHUB_ENV"
Expand All @@ -203,6 +204,7 @@ jobs:
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any.$_ installed\n" unless /^(swarm)$/; }' >> cabal.project.local
cat cabal.project
cat cabal.project.local
echo "::set-output name=SWARM_PKGDIR::${PKGDIR_swarm}"
- name: dump install plan
run: |
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all
Expand All @@ -220,6 +222,40 @@ jobs:
- name: build
run: |
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --write-ghc-environment-files=always
- name: Karl1
run: |
echo "Karl 1 start"
pwd
echo "--------------------"
ls -a
echo "===================="
cd source
pwd
echo "--------------------"
ls -a
echo "--------------------"
cd -
echo "===================="
cd $PKGDIR_swarm
pwd
echo "--------------------"
ls -a
echo "--------------------"
cd -
echo "===================="
cd /__w/swarm
pwd
echo "--------------------"
find . -name .hie
echo "--------------------"
echo "Karl 1 end"
- name: weeder
if: matrix.compilerVersion == '9.6.5'
uses: freckle/weeder-action@v2
with:
ghc-version: ${{ matrix.compilerVersion }}
weeder-arguments: --config ${{ github.workspace }}/source/weeder.toml
working-directory: ${{ steps.cabalvars.outputs.SWARM_PKGDIR }}
- name: tests
run: |
$CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct
Expand Down
File renamed without changes.
File renamed without changes.
10 changes: 10 additions & 0 deletions scripts/validate/weeder.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@


# First, install Weeder:
# cabal install weeder

cabal clean
cabal build -O0 -j all

weeder -N

3 changes: 0 additions & 3 deletions src/swarm-engine/Swarm/Game/Scenario/Status.hs
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,6 @@ instance ToJSON ScenarioStatus where
toEncoding = genericToEncoding scenarioOptions
toJSON = genericToJSON scenarioOptions

seedLaunchParams :: Applicative f => Maybe Seed -> ParameterizableLaunchParams a f
seedLaunchParams s = LaunchParams (pure s) (pure Nothing)

emptyLaunchParams :: Applicative f => ParameterizableLaunchParams a f
emptyLaunchParams = LaunchParams (pure Nothing) (pure Nothing)

Expand Down
5 changes: 0 additions & 5 deletions src/swarm-scenario/Swarm/Game/Scenario/Objective/Graph.hs
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,6 @@ instance ToSample GraphInfo where
deriving instance Generic (BE.Signed ObjectiveLabel)
deriving instance ToJSON (BE.Signed ObjectiveLabel)

getConstFromSigned :: BE.Signed a -> a
getConstFromSigned = \case
BE.Positive x -> x
BE.Negative x -> x

getDistinctConstants :: (Ord a) => Prerequisite a -> Set (BE.Signed a)
getDistinctConstants = Set.fromList . BE.constants . toBoolExpr

Expand Down
9 changes: 0 additions & 9 deletions src/swarm-topography/Swarm/Game/Location.hs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ module Swarm.Game.Location (
toDirection,
toAbsDirection,
nearestDirection,
fromDirection,
isCardinal,
north,
south,
Expand Down Expand Up @@ -192,14 +191,6 @@ nearestDirection coord =
index = round $ fromIntegral (length orderedDirs) * angle
orderedDirs = Util.enumerateNonEmpty

-- | Convert a 'Direction' into a corresponding 'Heading'. Note that
-- this only does something reasonable for 'DNorth', 'DSouth', 'DEast',
-- and 'DWest'---other 'Direction's return the zero vector.
fromDirection :: Direction -> Heading
fromDirection = \case
DAbsolute x -> toHeading x
_ -> zero

-- | Manhattan distance between world locations.
manhattan :: Location -> Location -> Int32
manhattan (Location x1 y1) (Location x2 y2) = abs (x1 - x2) + abs (y1 - y2)
Expand Down
3 changes: 0 additions & 3 deletions src/swarm-tui/Swarm/TUI/Editor/Model.hs
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,6 @@ toFacade = \case
Facade f -> f
Ref e -> mkFacade e

getEntityName :: EntityFacade -> E.EntityName
getEntityName (EntityFacade name _) = name

data MapEditingBounds = MapEditingBounds
{ _boundsRect :: Maybe (Cosmic BoundsRectangle)
-- ^ Upper-left and lower-right coordinates
Expand Down
59 changes: 56 additions & 3 deletions swarm.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,6 @@ common common
common stan-config
ghc-options:
-fwrite-ide-info
-hiedir=.hie

-- Harmless extensions from GHC2021
common ghc2021-extensions
Expand Down Expand Up @@ -199,6 +198,9 @@ library swarm-lang

build-depends: swarm:swarm-util
hs-source-dirs: src/swarm-lang
ghc-options:
-hiedir=.hie/src/swarm-lang

default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
Expand Down Expand Up @@ -253,6 +255,9 @@ library swarm-topography
swarm:swarm-util

hs-source-dirs: src/swarm-topography
ghc-options:
-hiedir=.hie/src/swarm-topography

default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
Expand Down Expand Up @@ -351,6 +356,9 @@ library swarm-scenario
swarm:swarm-util,

hs-source-dirs: src/swarm-scenario
ghc-options:
-hiedir=.hie/src/swarm-scenario

default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
Expand Down Expand Up @@ -451,6 +459,9 @@ library swarm-engine
swarm:swarm-util,

hs-source-dirs: src/swarm-engine
ghc-options:
-hiedir=.hie/src/swarm-engine

default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
Expand Down Expand Up @@ -497,6 +508,9 @@ library swarm-web
swarm:swarm-util,

hs-source-dirs: src/swarm-web
ghc-options:
-hiedir=.hie/src/swarm-web

default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
Expand Down Expand Up @@ -555,6 +569,9 @@ library swarm-tournament
swarm:swarm-util,

hs-source-dirs: src/swarm-tournament
ghc-options:
-hiedir=.hie/src/swarm-tournament

default-language: Haskell2010

library swarm-util
Expand Down Expand Up @@ -604,6 +621,9 @@ library swarm-util
yaml >=0.11 && <0.11.12.0,

hs-source-dirs: src/swarm-util
ghc-options:
-hiedir=.hie/src/swarm-util

default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
Expand Down Expand Up @@ -655,6 +675,9 @@ library swarm-doc
swarm:swarm-util,

hs-source-dirs: src/swarm-doc
ghc-options:
-hiedir=.hie/src/swarm-doc

default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
Expand Down Expand Up @@ -761,14 +784,17 @@ library swarm-tui
swarm:swarm-util,

hs-source-dirs: src/swarm-tui
ghc-options:
-hiedir=.hie/src/swarm-tui

default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
-- See discussion in #415
StrictData

executable swarm
import: stan-config, common
import: stan-config, common, ghc2021-extensions
main-is: Main.hs
other-modules: Swarm.App
build-depends:
Expand All @@ -789,7 +815,10 @@ executable swarm
vty,
vty-crossplatform >=0.4 && <0.5,

hs-source-dirs: app
hs-source-dirs: app/game
ghc-options:
-hiedir=.hie/app/game

default-language: Haskell2010
ghc-options: -threaded
default-extensions: ImportQualifiedPost
Expand All @@ -806,6 +835,9 @@ executable swarm-scene
swarm:swarm-topography,

hs-source-dirs: app/scene
ghc-options:
-hiedir=.hie/app/scene

default-language: Haskell2010
ghc-options: -threaded
default-extensions: ImportQualifiedPost
Expand All @@ -822,6 +854,9 @@ executable swarm-docs
text,

hs-source-dirs: app/doc
ghc-options:
-hiedir=.hie/app/doc

default-language: Haskell2010
ghc-options: -threaded
default-extensions: ImportQualifiedPost
Expand All @@ -842,6 +877,9 @@ executable swarm-host-tournament
swarm:swarm-tournament,

hs-source-dirs: app/tournament
ghc-options:
-hiedir=.hie/app/tournament

default-language: Haskell2010
ghc-options: -threaded
default-extensions: ImportQualifiedPost
Expand Down Expand Up @@ -899,6 +937,9 @@ test-suite swarm-unit
swarm:swarm-util,

hs-source-dirs: test/unit
ghc-options:
-hiedir=.hie/test/unit

default-language: Haskell2010
ghc-options: -threaded

Expand Down Expand Up @@ -931,6 +972,9 @@ test-suite swarm-integration
swarm:swarm-util,

hs-source-dirs: test/integration
ghc-options:
-hiedir=.hie/test/integration

default-language: Haskell2010
ghc-options: -threaded

Expand All @@ -954,6 +998,9 @@ test-suite tournament-host
swarm:swarm-tournament,

hs-source-dirs: test/tournament-host
ghc-options:
-hiedir=.hie/test/tournament-host

default-language: Haskell2010
ghc-options: -threaded

Expand Down Expand Up @@ -982,13 +1029,19 @@ test-suite standalone-topography
swarm:swarm-util,

hs-source-dirs: test/standalone-topography/src
ghc-options:
-hiedir=.hie/test/standalone-topography/src

default-language: Haskell2010
ghc-options: -threaded

benchmark benchmark
import: stan-config, common, ghc2021-extensions
main-is: Benchmark.hs
hs-source-dirs: test/bench
ghc-options:
-hiedir=.hie/test/bench

type: exitcode-stdio-1.0
build-depends:
base,
Expand Down
70 changes: 70 additions & 0 deletions weeder.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
roots = [
"^Main.main$",
"^Paths_.*",

# Workarounds for TH parsing:
# -------------------------------
"^Swarm.Language.Pipeline.QQ.tmQ$",
"^Swarm.Language.Parser.QQ.tyQ$",
"^Swarm.Util.Lens.makeLensesNoSigs$",
"^Swarm.Util.Lens.makeLensesExcluding$",

# Workarounds for type families:
# -------------------------------
"^Swarm.Game.World.Compile.NoFunParams$",

# True positives:
# =====================================
"^Main.prop_hittingSetMinimal$",
"^Main.printAllLogs$",
"^Control.Carrier.Accum.FixedStrict.execAccum$",
"^Swarm.App.demoWeb$",
"^Swarm.Effect.Unify.Common.dom$",
"^Swarm.Effect.Unify.Fast.@@$",
"^Swarm.Effect.Unify.Naive.runUnification$",
"^Swarm.Game.Entity.entityNameFor$",
"^Swarm.Game.Entity.singleton$",
"^Swarm.Game.Entity.Cosmetic.getBackground$",
"^Swarm.Game.Step.traceLogShow$",
"^Swarm.Game.World.Compile.compile$",
"^Swarm.Game.World.Compile.runCTerm$",
"^Swarm.Game.World.lookupTerrainM$",
"^Swarm.Language.Context.withBindings$",
"^Swarm.Language.Context.singleton$",
"^Swarm.Language.Parser.Util.showShortError$",
"^Swarm.Language.Pipeline.extractTCtx$",
"^Swarm.Language.Pretty.Prec$",
"^Swarm.Language.Pretty.appliedTermPrec$",
"^Swarm.Language.Requirements.Type.insert$",
"^Swarm.Language.Syntax.Pattern.UTerm$",
"^Swarm.Language.Syntax.Util.asTree$",
"^Swarm.Language.Syntax.Util.mapFreeS$",
"^Swarm.Util.replaceLast$",
"^Swarm.Util.reflow$",
"^Swarm.Util.isSuccessOr$",
"^Swarm.Util._NonEmpty$",

# True positives (unused lenses):
# -------------------------------
"^Swarm.Language.Typed.polytype$",
"^Swarm.Language.Typed.requires$",
"^Swarm.Language.Typed.value$",
"^Swarm.Language.Value.emptyEnv$",
"^Swarm.Game.Scenario.staticPlacements$",
"^Swarm.Game.Scenario.structureDefs$",
"^Swarm.Game.Scenario.Scoring.Best.scenarioBestByAstSize$",
"^Swarm.Game.Scenario.Scoring.Best.scenarioBestByCharCount$",
"^Swarm.Game.Scenario.Scoring.Best.scenarioBestByTicks$",
"^Swarm.Game.Scenario.Scoring.Best.scenarioBestByTime$",
"^Swarm.Game.ScenarioInfo._NotStarted$",
"^Swarm.Game.ScenarioInfo._Played$",
"^Swarm.Game.State.Robot._VCLocation$",
"^Swarm.Game.State.Robot._VCRobot$",
"^Swarm.Game.State.Substate._NoWinCondition$",
"^Swarm.Game.State.Substate._WinConditions$",

]

type-class-roots = true
unused-types = true

0 comments on commit 57f9e49

Please sign in to comment.