From ba2d4d359cdbf2ada43914a35e5091f45f387f41 Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Tue, 7 Dec 2021 15:53:24 +0100 Subject: [PATCH] Switch to GHC 9.2.1 to use native OverloadedRecordDot GHC 9.2.1 also enables Template Haskell to attach Haddock documentation, which can be used to attach documentation from the Wayland XML specifications to their generated Haskell APIs. --- default.nix | 3 ++- flake.lock | 6 +++--- quasar-wayland.cabal | 24 +++--------------------- src/Quasar/Wayland/Protocol/Core.hs | 3 ++- 4 files changed, 10 insertions(+), 26 deletions(-) diff --git a/default.nix b/default.nix index 1dfac40..82a6921 100644 --- a/default.nix +++ b/default.nix @@ -1,7 +1,8 @@ { pkgs ? import <nixpkgs> {}, haskellPackages ? pkgs.haskellPackages, args ? {} }: let - quasar-wayland = haskellPackages.callCabal2nix "quasar-wayland" ./. args; + #quasar-wayland = haskellPackages.callCabal2nix "quasar-wayland" ./. args; + quasar-wayland = pkgs.haskell.packages.ghc921.callCabal2nix "quasar-wayland" ./. args; in if pkgs.lib.inNixShell then quasar-wayland.env else quasar-wayland diff --git a/flake.lock b/flake.lock index 599e5db..d7a8003 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1635403963, - "narHash": "sha256-0actzfzBAXvvDJ/EvPSGbtCPXUwSObQrcq0RpsPWZgA=", + "lastModified": 1638110343, + "narHash": "sha256-hQaow8sGPyUrXgrqgDRsfA+73uR0vms2goTQNxIAaRQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2deb07f3ac4eeb5de1c12c4ba2911a2eb1f6ed61", + "rev": "942eb9a335b4cd22fa6a7be31c494e53e76f5637", "type": "github" }, "original": { diff --git a/quasar-wayland.cabal b/quasar-wayland.cabal index 2acb8c1..1c5bdc3 100644 --- a/quasar-wayland.cabal +++ b/quasar-wayland.cabal @@ -41,6 +41,7 @@ common shared-properties MultiParamTypeClasses NamedFieldPuns NoImplicitPrelude + OverloadedRecordDot OverloadedStrings PolyKinds RankNTypes @@ -52,23 +53,13 @@ common shared-properties TypeFamilies TypeOperators ViewPatterns - -- Required for the record-dot-preprocessor plugin - DuplicateRecordFields - TypeApplications - FlexibleContexts - DataKinds - MultiParamTypeClasses - TypeSynonymInstances - FlexibleInstances - UndecidableInstances - GADTs default-language: Haskell2010 ghc-options: - -fplugin=RecordDotPreprocessor -Weverything -Wno-all-missed-specialisations - -Wno-missing-safe-haskell-mode -Wno-missing-import-lists + -Wno-missing-kind-signatures + -Wno-missing-safe-haskell-mode -Wno-unsafe -Werror=incomplete-patterns -Werror=missing-fields @@ -107,9 +98,6 @@ library utf8-string, stm, xml, - -- required for record-dot-preprocessor - record-dot-preprocessor, - record-hasfield, hs-source-dirs: src @@ -118,9 +106,6 @@ executable quasar-wayland-example build-depends: quasar, quasar-wayland, - -- required for record-dot-preprocessor - record-dot-preprocessor, - record-hasfield, main-is: Main.hs hs-source-dirs: example @@ -133,9 +118,6 @@ test-suite quasar-wayland-test --QuickCheck, hspec, --quasar-wayland, - -- required for record-dot-preprocessor - record-dot-preprocessor, - record-hasfield, main-is: Spec.hs other-modules: --Quasar.TemplateSpec diff --git a/src/Quasar/Wayland/Protocol/Core.hs b/src/Quasar/Wayland/Protocol/Core.hs index 8668bee..e4cff7c 100644 --- a/src/Quasar/Wayland/Protocol/Core.hs +++ b/src/Quasar/Wayland/Protocol/Core.hs @@ -1,4 +1,5 @@ {-# LANGUAGE DeriveLift #-} +{-# LANGUAGE UndecidableInstances #-} module Quasar.Wayland.Protocol.Core ( ObjectId, @@ -600,7 +601,7 @@ sendMessage object message = do putWord32host $ (fromIntegral msgSize `shiftL` 16) .|. fromIntegral opcode objectSendMessage :: forall s i. IsInterfaceSide s i => Object s i -> WireUp s i -> STM () -objectSendMessage object message = runProtocolM (objectProtocol object) $ sendMessage object message +objectSendMessage object message = runProtocolM object.objectProtocol $ sendMessage object message receiveMessages :: IsSide s => ProtocolM s () -- GitLab