Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ghc-hslua-packaging for 
openSUSE:Factory checked in at 2022-02-11 23:09:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-hslua-packaging (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-hslua-packaging.new.1956 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-hslua-packaging"

Fri Feb 11 23:09:08 2022 rev:2 rq:953481 version:2.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-hslua-packaging/ghc-hslua-packaging.changes  
2021-11-11 21:37:55.656954536 +0100
+++ 
/work/SRC/openSUSE:Factory/.ghc-hslua-packaging.new.1956/ghc-hslua-packaging.changes
        2022-02-11 23:11:03.059230827 +0100
@@ -1,0 +2,9 @@
+Sat Jan 29 10:08:02 UTC 2022 - Peter Simons <[email protected]>
+
+- Update hslua-packaging to version 2.1.0.
+  Upstream has edited the change log file since the last release in
+  a non-trivial way, i.e. they did more than just add a new entry
+  at the top. You can review the file at:
+  http://hackage.haskell.org/package/hslua-packaging-2.1.0/src/CHANGELOG.md
+
+-------------------------------------------------------------------

Old:
----
  hslua-packaging-2.0.0.tar.gz

New:
----
  hslua-packaging-2.1.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-hslua-packaging.spec ++++++
--- /var/tmp/diff_new_pack.LnL2jP/_old  2022-02-11 23:11:03.523232169 +0100
+++ /var/tmp/diff_new_pack.LnL2jP/_new  2022-02-11 23:11:03.527232181 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package ghc-hslua-packaging
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %global pkg_name hslua-packaging
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        2.0.0
+Version:        2.1.0
 Release:        0
 Summary:        Utilities to build Lua modules
 License:        MIT

++++++ hslua-packaging-2.0.0.tar.gz -> hslua-packaging-2.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hslua-packaging-2.0.0/CHANGELOG.md 
new/hslua-packaging-2.1.0/CHANGELOG.md
--- old/hslua-packaging-2.0.0/CHANGELOG.md      2001-09-09 03:46:40.000000000 
+0200
+++ new/hslua-packaging-2.1.0/CHANGELOG.md      2001-09-09 03:46:40.000000000 
+0200
@@ -1,22 +1,75 @@
-## Changelog
+# Changelog
 
-`hslua-packaging` uses [PVP Versioning](https://pvp.haskell.org).
+`hslua-packaging` uses [PVP Versioning][].
 
-### hslua-packaging 2.0.0
+## hslua-packaging-2.1.0
 
-Release pending.
+Released 29-01-2022.
 
-- Initially created. Contains modules previously found in the
-  modules `Foreign.Lua.Call` and `Foreign.Lua.Module` from
-  `hslua-1.3`.
+-   Added function `documentation`: The documented function
+    `documentation` is added and exported from module
+    `HsLua.Packaging.Documentation`. It allows to retrieve the
+    documentation of a given Lua object.
 
-- Moved module hierarchy from Foreign.Lua to HsLua.
+    This replaces `pushDocumentationFunction`, which was removed.
 
-- Added support for a "since" tag on documented functions; allows
-  to mark the library version when a function was introduced in
-  its present form.
+-   Cleanup of Function module:
 
-- Improved syntax for the creation of documented functions.
+    -   `docsField` was moved to module Documentation.
+    -   `pushDocumentation` is renamed to `getdocumentation` and
+        moved to the Documentation module. It now returns the Lua
+        type of the retrieved documentation value.
 
-- Documentation for functions is now stored in Lua; a method to
-  access it is available as a HaskellFunction.
+-   Function `registerDocumentation` was changed: the documentation
+    is no longer passed in but must be at the top of the stack.
+
+-   New functions `pushModuleDoc`, and `pushFunctionDoc`, pushing
+    structured documentation objects for models and functions,
+    respectively.
+
+-   Provide function `opt` to make a parameter optional. The
+    function `optionalParameter` is deprecated, use `opt
+    (parameter ...)` instead.
+
+-   Added function `udresult`; it defines a function result and is
+    analogous to the existing `udparam` function.
+
+-   Added module `Convenience`, which defines many functions to
+    make the definition of parameters and results easier for
+    the most common types.
+
+-   Pushing a documented module now also registers the module's
+    documentation.
+
+-   The module HsLua.Packaging.Rendering has been deprecated. It
+    is no longer exported as part of HsLua.Packaging and must be
+    imported explicitly if needed. It may be removed in the
+    future. Use Lua objects retrievable with `getdocumentation`
+    together with a custom renderer instead.
+
+-   Update to hslua-objectorientation-2.1.0. Lists are now
+    writable. This entails a change to `deftype'`. See the
+    changelog of hslua-objectorientation for details.
+
+-   Update to hslua-core 2.1.0 and hslua-marshalling 2.1.0.
+
+## hslua-packaging-2.0.0
+
+Released 2021-10-21.
+
+-   Initially created. Contains modules previously found in the
+    modules `Foreign.Lua.Call` and `Foreign.Lua.Module` from
+    `hslua-1.3`.
+
+-   Moved module hierarchy from Foreign.Lua to HsLua.
+
+-   Added support for a ???since??? tag on documented functions;
+    allows to mark the library version when a function was
+    introduced in its present form.
+
+-   Improved syntax for the creation of documented functions.
+
+-   Documentation for functions is now stored in Lua; a method to
+    access it is available as a HaskellFunction.
+
+  [PVP Versioning]: https://pvp.haskell.org
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hslua-packaging-2.0.0/LICENSE 
new/hslua-packaging-2.1.0/LICENSE
--- old/hslua-packaging-2.0.0/LICENSE   2001-09-09 03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/LICENSE   2001-09-09 03:46:40.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright ?? 2019-2021 Albert Krewinkel
+Copyright ?? 2019-2022 Albert Krewinkel
 
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hslua-packaging-2.0.0/hslua-packaging.cabal 
new/hslua-packaging-2.1.0/hslua-packaging.cabal
--- old/hslua-packaging-2.0.0/hslua-packaging.cabal     2001-09-09 
03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/hslua-packaging.cabal     2001-09-09 
03:46:40.000000000 +0200
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                hslua-packaging
-version:             2.0.0
+version:             2.1.0
 synopsis:            Utilities to build Lua modules.
 description:         Utilities to package up Haskell functions and
                      values into a Lua module.
@@ -14,7 +14,7 @@
 license-file:        LICENSE
 author:              Albert Krewinkel
 maintainer:          [email protected]
-copyright:           ?? 2019-2021 Albert Krewinkel
+copyright:           ?? 2019-2022 Albert Krewinkel
 category:            Foreign
 extra-source-files:  README.md
                    , CHANGELOG.md
@@ -25,6 +25,7 @@
                    , GHC == 8.8.4
                    , GHC == 8.10.3
                    , GHC == 9.0.1
+                   , GHC == 9.2.1
 
 source-repository head
   type:                git
@@ -34,11 +35,11 @@
 common common-options
   default-language:    Haskell2010
   build-depends:       base                    >= 4.8    && < 5
-                     , hslua-core              >= 2.0    && < 2.1
-                     , hslua-marshalling       >= 2.0    && < 2.1
-                     , hslua-objectorientation >= 2.0    && < 2.1
+                     , hslua-core              >= 2.1    && < 2.2
+                     , hslua-marshalling       >= 2.1    && < 2.2
+                     , hslua-objectorientation >= 2.1    && < 2.2
                      , mtl                     >= 2.2    && < 2.3
-                     , text                    >= 1.0    && < 1.3
+                     , text                    >= 1.2    && < 2.1
   ghc-options:         -Wall
                        -Wincomplete-record-updates
                        -Wnoncanonical-monad-instances
@@ -55,6 +56,8 @@
 library
   import:              common-options
   exposed-modules:     HsLua.Packaging
+                     , HsLua.Packaging.Convenience
+                     , HsLua.Packaging.Documentation
                      , HsLua.Packaging.Function
                      , HsLua.Packaging.Module
                      , HsLua.Packaging.Rendering
@@ -62,6 +65,7 @@
                      , HsLua.Packaging.UDType
   hs-source-dirs:      src
   default-extensions:  LambdaCase
+                     , StrictData
   other-extensions:    DeriveFunctor
                      , OverloadedStrings
   build-depends:       containers              >= 0.5.9    && < 0.7
@@ -73,6 +77,7 @@
   hs-source-dirs:      test
   ghc-options:         -threaded
   other-modules:       HsLua.PackagingTests
+                     , HsLua.Packaging.DocumentationTests
                      , HsLua.Packaging.FunctionTests
                      , HsLua.Packaging.ModuleTests
                      , HsLua.Packaging.RenderingTests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hslua-packaging-2.0.0/src/HsLua/Packaging/Convenience.hs 
new/hslua-packaging-2.1.0/src/HsLua/Packaging/Convenience.hs
--- old/hslua-packaging-2.0.0/src/HsLua/Packaging/Convenience.hs        
1970-01-01 01:00:00.000000000 +0100
+++ new/hslua-packaging-2.1.0/src/HsLua/Packaging/Convenience.hs        
2001-09-09 03:46:40.000000000 +0200
@@ -0,0 +1,74 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-|
+Module      : HsLua.Packaging.Convenience
+Copyright   : ?? 2021-2022 Albert Krewinkel
+License     : MIT
+Maintainer  : Albert Krewinkel <[email protected]>
+
+Convenience functions for common parameter and result types.
+-}
+module HsLua.Packaging.Convenience
+where
+
+import Data.Text (Text)
+import HsLua.Marshalling
+import HsLua.Packaging.Function
+
+-- * Parameters
+
+-- | Defines a function parameter of type 'Bool'.
+boolParam :: Text -- ^ parameter name
+          -> Text -- ^ parameter description
+          -> Parameter e Bool
+boolParam = parameter peekBool "boolean"
+{-# INLINE boolParam #-}
+
+-- | Defines a function parameter for an integral type.
+integralParam :: (Read a, Integral a)
+              => Text -- ^ parameter name
+              -> Text -- ^ parameter description
+              -> Parameter e a
+integralParam = parameter peekIntegral "integer"
+{-# INLINE integralParam #-}
+
+-- | Defines a function parameter of type 'String'.
+stringParam :: Text -- ^ parameter name
+            -> Text -- ^ parameter description
+            -> Parameter e String
+stringParam = parameter peekString "string"
+{-# INLINE stringParam #-}
+
+-- | Defines a function parameter of type 'Text'.
+textParam :: Text -- ^ parameter name
+          -> Text -- ^ parameter description
+          -> Parameter e Text
+textParam = parameter peekText "string"
+{-# INLINE textParam #-}
+
+
+-- * Results
+
+-- | Defines a function result of type 'Bool'.
+boolResult :: Text -- ^ result description
+           -> FunctionResults e Bool
+boolResult = functionResult pushBool "boolean"
+{-# INLINE boolResult #-}
+
+-- | Defines a function result for an integral type.
+integralResult :: (Integral a, Show a)
+               => Text -- ^ result description
+               -> FunctionResults e a
+integralResult = functionResult pushIntegral "integer|string"
+{-# INLINE integralResult #-}
+
+-- | Defines a function result of type 'Text'.
+stringResult :: Text -- ^ result description
+             -> FunctionResults e String
+stringResult = functionResult pushString "string"
+{-# INLINE stringResult #-}
+
+-- | Defines a function result of type 'Text'.
+textResult :: Text -- ^ result description
+           -> FunctionResults e Text
+textResult = functionResult pushText "string"
+{-# INLINE textResult #-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hslua-packaging-2.0.0/src/HsLua/Packaging/Documentation.hs 
new/hslua-packaging-2.1.0/src/HsLua/Packaging/Documentation.hs
--- old/hslua-packaging-2.0.0/src/HsLua/Packaging/Documentation.hs      
1970-01-01 01:00:00.000000000 +0100
+++ new/hslua-packaging-2.1.0/src/HsLua/Packaging/Documentation.hs      
2001-09-09 03:46:40.000000000 +0200
@@ -0,0 +1,159 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-|
+Module      : HsLua.Packaging.Documentation
+Copyright   : ?? 2020-2022 Albert Krewinkel
+License     : MIT
+Maintainer  : Albert Krewinkel <[email protected]>
+
+Provides a function to print documentation if available.
+-}
+module HsLua.Packaging.Documentation
+  ( documentation
+  , getdocumentation
+  , registerDocumentation
+  , pushModuleDoc
+  , pushFunctionDoc
+  , pushFieldDoc
+  , docsField
+  ) where
+
+import Data.Version (showVersion)
+import HsLua.Core as Lua
+import HsLua.Marshalling
+import HsLua.Packaging.Types
+
+-- | Function that retrieves documentation.
+documentation :: LuaError e => DocumentedFunction e
+documentation =
+  DocumentedFunction
+  { callFunction = documentationHaskellFunction
+  , functionName = "documentation"
+  , functionDoc = FunctionDoc
+    { functionDescription =
+      "Retrieves the documentation of the given object."
+    , parameterDocs =
+      [ ParameterDoc
+        { parameterName = "value"
+        , parameterType = "any"
+        , parameterDescription = "documented object"
+        , parameterIsOptional = False
+        }
+      ]
+    , functionResultsDocs =  ResultsDocList
+      [ ResultValueDoc "string|nil" "docstring" ]
+    , functionSince = Nothing
+    }
+  }
+
+-- | Function that returns the documentation of a given object, or @nil@
+-- if no documentation is available.
+documentationHaskellFunction :: LuaError e => LuaE e NumResults
+documentationHaskellFunction = isnoneornil (nthBottom 1) >>= \case
+  True -> failLua "expected a non-nil value as argument 1"
+  _ -> NumResults 1 <$ getdocumentation top
+
+-- | Pushes the documentation for the element at the given stack index.
+-- Returns the type of the documentation object.
+getdocumentation :: LuaError e => StackIndex -> LuaE e Lua.Type
+getdocumentation idx = do
+  idx' <- absindex idx
+  pushDocumentationTable
+  pushvalue idx'
+  rawget (nth 2) <* Lua.remove (nth 2)  -- remove documentation table
+
+-- | Registers the object at the top of the stack as documentation for
+-- the object at index @idx@. Pops the documentation of the stack.
+registerDocumentation :: LuaError e
+                      => StackIndex  -- ^ @idx@
+                      -> LuaE e ()
+registerDocumentation idx = do
+  checkstack' 10 "registerDocumentation"  -- keep some buffer
+  idx' <- absindex idx
+  pushDocumentationTable
+  pushvalue idx'    -- the documented object
+  pushvalue (nth 3) -- documentation object
+  rawset (nth 3)    -- add to docs table
+  pop 2             -- docs table and documentation object
+
+-- | Pushes the documentation table that's stored in the registry to the
+-- top of the stack, creating it if necessary. The documentation table
+-- is indexed by the documented objects, like module tables and
+-- functions, and contains documentation strings as values.
+--
+-- The table is an ephemeron table, i.e., an entry gets garbage
+-- collected if the key is no longer reachable.
+pushDocumentationTable :: LuaError e => LuaE e ()
+pushDocumentationTable = Lua.getfield registryindex docsField >>= \case
+  Lua.TypeTable -> return () -- documentation table already initialized
+  _ -> do
+    pop 1            -- pop non-table value
+    newtable         -- create documentation table
+    pushstring "k"   -- Make it an "ephemeron table" and..
+    setfield (nth 2) "__mode"  -- collect docs if documented object is GCed
+    pushvalue top    -- add copy of table to registry
+    setfield registryindex docsField
+
+-- | Name of the registry field holding the documentation table. The
+-- documentation table is indexed by the documented objects, like module
+-- tables and functions, and contains documentation strings as values.
+--
+-- The table is an ephemeron table, i.e., an entry gets garbage
+-- collected if the key is no longer reachable.
+docsField :: Name
+docsField = "HsLua docs"
+
+-- | Pushes the documentation of a module as a table with string fields
+-- @name@ and @description@.
+pushModuleDoc :: LuaError e => Pusher e (Module e)
+pushModuleDoc = pushAsTable
+  [ ("name", pushName . moduleName)
+  , ("description", pushText . moduleDescription)
+  , ("fields", pushList pushFieldDoc . moduleFields)
+  , ("functions", pushList pushFunctionDoc . moduleFunctions)
+  ]
+
+-- | Pushes the documentation of a field as a table with string fields
+-- @name@ and @description@.
+pushFieldDoc :: LuaError e => Pusher e (Field e)
+pushFieldDoc = pushAsTable
+  [ ("name", pushText . fieldName)
+  , ("description", pushText . fieldDescription)
+  ]
+
+-- | Pushes the documentation of a function as a table with string
+-- fields, @name@, @description@, and @since@, sequence field
+-- @parameters@, and sequence or string field @results@.
+pushFunctionDoc :: LuaError e => Pusher e (DocumentedFunction e)
+pushFunctionDoc fun = pushAsTable
+  [ ("name", pushName . const (functionName fun))
+  , ("description", pushText . functionDescription)
+  , ("parameters", pushList pushParameterDoc . parameterDocs)
+  , ("results", pushResultsDoc . functionResultsDocs)
+  , ("since", maybe pushnil (pushString . showVersion) . functionSince)
+  ] (functionDoc fun)
+
+-- | Pushes the documentation of a parameter as a table with boolean
+-- field @optional@ and string fields @name@, @type@, and @description.
+pushParameterDoc :: LuaError e => Pusher e ParameterDoc
+pushParameterDoc = pushAsTable
+  [ ("name", pushText . parameterName)
+  , ("type", pushText . parameterType)
+  , ("description", pushText . parameterDescription)
+  , ("optional", pushBool . parameterIsOptional)
+  ]
+
+-- | Pushes a the documentation for a function's return values as either
+-- a simple string, or as a sequence of tables with @type@ and
+-- @description@ fields.
+pushResultsDoc :: LuaError e => Pusher e ResultsDoc
+pushResultsDoc = \case
+  ResultsDocMult desc -> pushText desc
+  ResultsDocList resultDocs -> pushList pushResultValueDoc resultDocs
+
+-- | Pushes the documentation of a single result value as a table with
+-- fields @type@ and @description@.
+pushResultValueDoc :: LuaError e => Pusher e ResultValueDoc
+pushResultValueDoc = pushAsTable
+  [ ("type", pushText . resultValueType)
+  , ("description", pushText . resultValueDescription)
+  ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hslua-packaging-2.0.0/src/HsLua/Packaging/Function.hs 
new/hslua-packaging-2.1.0/src/HsLua/Packaging/Function.hs
--- old/hslua-packaging-2.0.0/src/HsLua/Packaging/Function.hs   2001-09-09 
03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/src/HsLua/Packaging/Function.hs   2001-09-09 
03:46:40.000000000 +0200
@@ -4,7 +4,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-|
 Module      : HsLua.Packaging.Function
-Copyright   : ?? 2020-2021 Albert Krewinkel
+Copyright   : ?? 2020-2022 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <[email protected]>
 Stability   : alpha
@@ -19,7 +19,9 @@
   , lambda
   , applyParameter
   , returnResult
+  , returnResults
   , returnResultsOnStack
+  , updateFunctionDescription
   , liftPure
   , liftPure2
   , liftPure3
@@ -40,14 +42,13 @@
   , since
     -- * Pushing to Lua
   , pushDocumentedFunction
-    -- * Accessing documentation in Lua
-  , docsField
-  , pushDocumentation
     -- * Convenience functions
   , parameter
+  , opt
   , optionalParameter
   , functionResult
     -- * Internal
+  , HsFnPrecursor
   , toHsFnPrecursor
   ) where
 
@@ -57,7 +58,7 @@
 import Data.Version (Version)
 import HsLua.Core
 import HsLua.Marshalling
-import HsLua.Packaging.Rendering (renderFunction)
+import HsLua.Packaging.Documentation
 import HsLua.Packaging.Types
 import qualified HsLua.Core as Lua
 import qualified HsLua.Core.Utf8 as Utf8
@@ -162,7 +163,7 @@
   let i = hsFnMaxParameterIdx bldr + 1
   let context = Name . Utf8.fromText $ "function argument " <>
         (parameterName . parameterDoc) param
-  let nextAction f = withContext context $ do
+  let nextAction f = retrieving context $ do
         !x <- parameterPeeker param i
         return $ f x
   bldr
@@ -287,52 +288,15 @@
 -- Push to Lua
 --
 
--- | Name of the registry field holding the documentation table. The
--- documentation table is indexed by the documented objects, like module
--- tables and functions, and contains documentation strings as values.
---
--- The table is an ephemeron table, i.e., an entry gets garbage
--- collected if the key is no longer reachable.
-docsField :: Name
-docsField = "HsLua docs"
-
 -- | Pushes a documented Haskell function to the Lua stack, making it
 -- usable as a normal function in Lua. At the same time, the function
 -- docs are registered in the documentation table.
 pushDocumentedFunction :: LuaError e
                        => DocumentedFunction e -> LuaE e ()
 pushDocumentedFunction fn = do
-  -- push function
-  Lua.pushHaskellFunction $ callFunction fn
-
-  -- store documentation
-  Lua.getfield registryindex docsField >>= \case
-    TypeTable -> return () -- already have the documentation table
-    _ -> do
-      Lua.pop 1            -- pop non-table value
-      Lua.newtable         -- create documentation table
-      Lua.pushstring "k"   -- Make it an "ephemeron table" and..
-      Lua.setfield (nth 2) "__mode"  -- collect docs if function is GCed
-      Lua.pushvalue top    -- add copy of table to registry
-      Lua.setfield registryindex docsField
-  Lua.pushvalue (nth 2)  -- the function
-  pushText $ renderFunction fn
-  Lua.rawset (nth 3)
-  Lua.pop 1              -- pop doc table, leave function on stack
-
--- | Pushes the documentation of the object at the given index to the
--- stack, or just *nil* if no documentation is available.
-pushDocumentation :: LuaError e => StackIndex -> LuaE e NumResults
-pushDocumentation idx = do
-  idx' <- Lua.absindex idx
-  Lua.getfield registryindex docsField >>= \case
-    TypeTable -> do
-      Lua.pushvalue idx'
-      Lua.rawget (nth 2)
-    _ -> do -- no documentation table available
-      Lua.pop 1    -- pop contents of docsField
-      Lua.pushnil
-  return (NumResults 1)
+  Lua.pushHaskellFunction $ callFunction fn  -- push function
+  pushFunctionDoc fn                         -- function documentation
+  registerDocumentation (Lua.nth 2)          -- store documentation
 
 --
 -- Convenience functions
@@ -354,22 +318,26 @@
     }
   }
 
+-- | Makes a parameter optional.
+opt :: Parameter e a -> Parameter e (Maybe a)
+opt p = Parameter
+  { parameterPeeker = \idx ->
+      (Nothing <$ peekNoneOrNil idx) <|>
+      (Just <$!> parameterPeeker p idx)
+  , parameterDoc = (parameterDoc p){ parameterIsOptional = True }
+  }
+
 -- | Creates an optional parameter.
+--
+-- DEPRECATED: Use @opt (parameter ...)@ instead.
 optionalParameter :: Peeker e a   -- ^ method to retrieve the value from Lua
                   -> Text         -- ^ expected Lua type
                   -> Text         -- ^ parameter name
                   -> Text         -- ^ parameter description
                   -> Parameter e (Maybe a)
-optionalParameter peeker type_ name desc = Parameter
-  { parameterPeeker = \idx -> (Nothing <$ peekNoneOrNil idx)
-                          <|> (Just <$!> peeker idx)
-  , parameterDoc = ParameterDoc
-    { parameterName = name
-    , parameterDescription = desc
-    , parameterType = type_
-    , parameterIsOptional = True
-    }
-  }
+optionalParameter peeker type_ name desc = opt $
+  parameter peeker type_ name desc
+{-# DEPRECATED optionalParameter "Use `opt (parameter ...)` instead." #-}
 
 -- | Creates a function result.
 functionResult :: Pusher e a      -- ^ method to push the Haskell result to Lua
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hslua-packaging-2.0.0/src/HsLua/Packaging/Module.hs 
new/hslua-packaging-2.1.0/src/HsLua/Packaging/Module.hs
--- old/hslua-packaging-2.0.0/src/HsLua/Packaging/Module.hs     2001-09-09 
03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/src/HsLua/Packaging/Module.hs     2001-09-09 
03:46:40.000000000 +0200
@@ -1,7 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-|
 Module      : HsLua.Packaging.Module
-Copyright   : ?? 2019-2021 Albert Krewinkel
+Copyright   : ?? 2019-2022 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <[email protected]>
 Stability   : alpha
@@ -23,10 +23,11 @@
 
 import Control.Monad (forM_)
 import HsLua.Core
-import HsLua.Marshalling (pushName, pushText)
+import HsLua.Marshalling (pushAsTable, pushList, pushName, pushText)
 import HsLua.ObjectOrientation.Operation (Operation (..), metamethodName)
+import HsLua.Packaging.Documentation
 import HsLua.Packaging.Types
-import qualified HsLua.Packaging.Function as Call
+import qualified HsLua.Packaging.Function as Fun
 
 -- | Create a new module (i.e., a Lua table).
 create :: LuaE e ()
@@ -36,7 +37,7 @@
 -- the stack.
 registerModule :: LuaError e => Module e -> LuaE e ()
 registerModule mdl =
-  requirehs (moduleName mdl) (pushModule mdl)
+  requirehs (moduleName mdl) (const (pushModule mdl))
 
 -- | Add the module under a different name to the table of preloaded
 -- packages.
@@ -54,11 +55,43 @@
 -- | Pushes a documented module to the Lua stack.
 pushModule :: LuaError e => Module e -> LuaE e ()
 pushModule mdl = do
-  create
-  forM_ (moduleFunctions mdl) $ \fn -> do
+  checkstack' 10 "pushModule"
+  pushAsTable
+    [ ("name", pushName . moduleName)
+    , ("description", pushText . moduleDescription)
+    , ("fields", pushList pushFieldDoc . moduleFields)
+    ] mdl
+  create        -- module table
+  pushvalue (nth 2)              -- push documentation object
+  registerDocumentation (nth 2)  -- set and pop doc
+
+  -- # Functions
+  --
+  -- module table now on top
+  -- documentation table in pos 2
+  newtable -- function documention
+  pushName "functions"
+  pushvalue (nth 2)
+  rawset (nth 5)
+  -- function documentation table now on top
+  -- module table in position 2
+  -- module documentation table in pos 3
+  forM_ (zip [1..] (moduleFunctions mdl)) $ \(i, fn) -> do
+    -- push documented function, thereby registering the function docs
+    Fun.pushDocumentedFunction fn
+    -- add function to module
     pushName (functionName fn)
-    Call.pushDocumentedFunction fn
-    rawset (nth 3)
+    pushvalue (nth 2) -- C function
+    rawset (nth 5)    -- module table
+    -- set documentation
+    _ <- getdocumentation top
+    rawseti (nth 3) i
+    pop 1 -- C Function
+  pop 1 -- function documentation table
+  remove (nth 2) -- module documentation table
+
+  -- # Fields
+  --
   forM_ (moduleFields mdl) $ \field -> do
     pushText (fieldName field)
     fieldPushValue field
@@ -70,6 +103,6 @@
       newtable
       forM_ ops $ \(op, fn) -> do
         pushName $ metamethodName op
-        Call.pushDocumentedFunction $ Call.setName "" fn
+        Fun.pushDocumentedFunction $ Fun.setName "" fn
         rawset (nth 3)
       setmetatable (nth 2)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hslua-packaging-2.0.0/src/HsLua/Packaging/Rendering.hs 
new/hslua-packaging-2.1.0/src/HsLua/Packaging/Rendering.hs
--- old/hslua-packaging-2.0.0/src/HsLua/Packaging/Rendering.hs  2001-09-09 
03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/src/HsLua/Packaging/Rendering.hs  2001-09-09 
03:46:40.000000000 +0200
@@ -3,7 +3,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-|
 Module      : HsLua.Packaging.Rendering
-Copyright   : ?? 2020-2021 Albert Krewinkel
+Copyright   : ?? 2020-2022 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <[email protected]>
 Stability   : alpha
@@ -12,6 +12,7 @@
 Render function and module documentation.
 -}
 module HsLua.Packaging.Rendering
+  {-# DEPRECATED "Use getdocumentation with a custom renderer." #-}
   ( -- * Documentation
     render
   , renderModule
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hslua-packaging-2.0.0/src/HsLua/Packaging/Types.hs 
new/hslua-packaging-2.1.0/src/HsLua/Packaging/Types.hs
--- old/hslua-packaging-2.0.0/src/HsLua/Packaging/Types.hs      2001-09-09 
03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/src/HsLua/Packaging/Types.hs      2001-09-09 
03:46:40.000000000 +0200
@@ -1,6 +1,6 @@
 {-|
 Module      : HsLua.Packaging.Types
-Copyright   : ?? 2020-2021 Albert Krewinkel
+Copyright   : ?? 2020-2022 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <[email protected]>
 Stability   : alpha
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hslua-packaging-2.0.0/src/HsLua/Packaging/UDType.hs 
new/hslua-packaging-2.1.0/src/HsLua/Packaging/UDType.hs
--- old/hslua-packaging-2.0.0/src/HsLua/Packaging/UDType.hs     2001-09-09 
03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/src/HsLua/Packaging/UDType.hs     2001-09-09 
03:46:40.000000000 +0200
@@ -1,6 +1,6 @@
 {-|
 Module      : HsLua.Packaging.UDType
-Copyright   : ?? 2020-2021 Albert Krewinkel
+Copyright   : ?? 2020-2022 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <[email protected]>
 
@@ -25,6 +25,7 @@
   , peekUD
   , pushUD
   , udparam
+  , udresult
     -- * Helper types for building
   , Member
   , Operation (..)
@@ -87,3 +88,10 @@
         -> Text            -- ^ parameter description
         -> Parameter e a
 udparam ty = parameter (peekUD ty) (Utf8.toText . fromName $ udName ty)
+
+-- | Defines a function result of the given type.
+udresult :: LuaError e
+         => DocumentedTypeWithList e a itemtype -- ^ result type
+         -> Text           -- ^ result description
+         -> FunctionResults e a
+udresult ty = functionResult (pushUD ty) (Utf8.toText . fromName $ udName ty)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hslua-packaging-2.0.0/src/HsLua/Packaging.hs 
new/hslua-packaging-2.1.0/src/HsLua/Packaging.hs
--- old/hslua-packaging-2.0.0/src/HsLua/Packaging.hs    2001-09-09 
03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/src/HsLua/Packaging.hs    2001-09-09 
03:46:40.000000000 +0200
@@ -1,25 +1,27 @@
 {-|
 Module      : HsLua.Packaging
-Copyright   : ?? 2019-2021 Albert Krewinkel
+Copyright   : ?? 2019-2022 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <[email protected]>
 
-Tools to create Lua modules.
+Tools to create documented Lua functions and modules.
 -}
 module HsLua.Packaging
   ( -- * Modules
     module HsLua.Packaging.Module
   , module HsLua.Packaging.Function
+  , module HsLua.Packaging.Convenience
     -- * Object oriented marshalling
   , module HsLua.Packaging.UDType
-    -- * Create documentation
-  , module HsLua.Packaging.Rendering
+    -- * Register and access docs in Lua
+  , module HsLua.Packaging.Documentation
     -- * Types
   , module HsLua.Packaging.Types
   ) where
 
+import HsLua.Packaging.Convenience
+import HsLua.Packaging.Documentation
 import HsLua.Packaging.Function
 import HsLua.Packaging.Module
-import HsLua.Packaging.Rendering
 import HsLua.Packaging.UDType
 import HsLua.Packaging.Types
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hslua-packaging-2.0.0/test/HsLua/Packaging/DocumentationTests.hs 
new/hslua-packaging-2.1.0/test/HsLua/Packaging/DocumentationTests.hs
--- old/hslua-packaging-2.0.0/test/HsLua/Packaging/DocumentationTests.hs        
1970-01-01 01:00:00.000000000 +0100
+++ new/hslua-packaging-2.1.0/test/HsLua/Packaging/DocumentationTests.hs        
2001-09-09 03:46:40.000000000 +0200
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeApplications #-}
+{-|
+Module      : HsLua.Packaging.DocumentationTests
+Copyright   : ?? 2021-2022 Albert Krewinkel
+License     : MIT
+Maintainer  : Albert Krewinkel <[email protected]>
+
+Tests for calling exposed Haskell functions.
+-}
+module HsLua.Packaging.DocumentationTests (tests) where
+
+import Data.Version (makeVersion)
+import HsLua.Core (top, Status (OK), Type (TypeNil, TypeString))
+import HsLua.Packaging.Documentation
+import HsLua.Packaging.Function
+import HsLua.Marshalling (forcePeek, peekIntegral, pushIntegral, peekText)
+import Test.Tasty.HsLua ((=:), shouldBeResultOf)
+import Test.Tasty (TestTree, testGroup)
+
+import qualified HsLua.Core as Lua
+
+-- | Calling Haskell functions from Lua.
+tests :: TestTree
+tests = testGroup "Documentation"
+  [ testGroup "Function docs"
+    [ "retrieves function docs" =:
+      "factorial" `shouldBeResultOf` do
+        pushDocumentedFunction factorial
+        Lua.setglobal (functionName factorial)
+        pushDocumentedFunction documentation
+        Lua.setglobal "documentation"
+        OK <- Lua.dostring "return documentation(factorial)"
+        TypeString <- Lua.getfield top "name"
+        forcePeek $ peekText top
+
+    , "returns nil for undocumented function" =:
+      TypeNil `shouldBeResultOf` do
+        pushDocumentedFunction documentation
+        Lua.setglobal "documentation"
+        OK <- Lua.dostring "return documentation(function () return 1 end)"
+        Lua.ltype top
+    ]
+  ]
+
+factorial :: DocumentedFunction Lua.Exception
+factorial = defun "factorial" (liftPure $ \n -> product [1..n])
+  <#> parameter (peekIntegral @Integer) "integer" "n" ""
+  =#> functionResult pushIntegral "integer or string" "factorial"
+  #? "Calculates the factorial of a positive integer."
+  `since` makeVersion [1,0,0]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hslua-packaging-2.0.0/test/HsLua/Packaging/FunctionTests.hs 
new/hslua-packaging-2.1.0/test/HsLua/Packaging/FunctionTests.hs
--- old/hslua-packaging-2.0.0/test/HsLua/Packaging/FunctionTests.hs     
2001-09-09 03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/test/HsLua/Packaging/FunctionTests.hs     
2001-09-09 03:46:40.000000000 +0200
@@ -2,7 +2,7 @@
 {-# LANGUAGE TypeApplications #-}
 {-|
 Module      : HsLua.Packaging.FunctionTests
-Copyright   : ?? 2020-2021 Albert Krewinkel
+Copyright   : ?? 2020-2022 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <[email protected]>
 
@@ -13,16 +13,17 @@
 import Data.Maybe (fromMaybe)
 import Data.Version (makeVersion)
 import HsLua.Core (StackIndex, top)
+import HsLua.Packaging.Convenience
+import HsLua.Packaging.Documentation (getdocumentation)
 import HsLua.Packaging.Function
 import HsLua.Packaging.Types
 import HsLua.Marshalling
   ( forcePeek, peekIntegral, peekRealFloat, peekText
   , pushIntegral, pushRealFloat)
-import Test.Tasty.HsLua ((=:), shouldBeResultOf, shouldHoldForResultOf)
+import Test.Tasty.HsLua ((=:), shouldBeResultOf)
 import Test.Tasty (TestTree, testGroup)
 import Test.Tasty.HUnit ((@=?))
 
-import qualified Data.Text as T
 import qualified HsLua.Core as Lua
 
 -- | Calling Haskell functions from Lua.
@@ -85,19 +86,24 @@
     ]
 
   , testGroup "documentation access"
-    [ "pushDocumentation" =:
-      ("factorial (n)\n" `T.isPrefixOf`) `shouldHoldForResultOf` do
+    [ "pushDocumentedFunction pushes one value" =:
+      1 `shouldBeResultOf` do
+        oldtop <- Lua.gettop
         pushDocumentedFunction (factLuaAtIndex 0)
-        numres <- pushDocumentation top
-        Lua.liftIO $ numres @=? Lua.NumResults 1
-        forcePeek $ peekText top
+        newtop <- Lua.gettop
+        pure (newtop - oldtop)
+
+    , "getdocumentation" =:
+      "factorial" `shouldBeResultOf` do
+        pushDocumentedFunction (factLuaAtIndex 0)
+        Lua.TypeTable <- getdocumentation top
+        Lua.TypeString <- Lua.getfield top "name"
+        forcePeek (peekText top)
 
     , "undocumented value" =:
       Lua.TypeNil `shouldBeResultOf` do
         Lua.pushboolean True
-        numres <- pushDocumentation top
-        Lua.liftIO $ numres @=? Lua.NumResults 1
-        Lua.ltype top
+        getdocumentation top
     ]
 
   , testGroup "helpers"
@@ -112,7 +118,7 @@
         parameterDoc
           (parameter @Lua.Exception peekText "string" "test" "test param")
       )
-    , "optionalParameter doc" =:
+    , "optional parameter doc" =:
       ( ParameterDoc
         { parameterName = "test"
         , parameterDescription = "test param"
@@ -121,7 +127,7 @@
         }
         @=?
         parameterDoc
-          (optionalParameter @Lua.Exception peekText "string" "test" "test 
param")
+          (opt (textParam @Lua.Exception "test" "test param"))
       )
     , "functionResult doc" =:
       ( [ ResultValueDoc
@@ -169,7 +175,7 @@
 nroot = defun "nroot"
   ### liftPure2 nroot'
   <#> parameter (peekRealFloat @Double) "number" "x" ""
-  <#> optionalParameter (peekIntegral @Int) "integer" "n" ""
+  <#> opt (integralParam @Int "n" "")
   =#> functionResult pushRealFloat "number" "nth root"
   where
     nroot' :: Double -> Maybe Int -> Double
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hslua-packaging-2.0.0/test/HsLua/Packaging/ModuleTests.hs 
new/hslua-packaging-2.1.0/test/HsLua/Packaging/ModuleTests.hs
--- old/hslua-packaging-2.0.0/test/HsLua/Packaging/ModuleTests.hs       
2001-09-09 03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/test/HsLua/Packaging/ModuleTests.hs       
2001-09-09 03:46:40.000000000 +0200
@@ -2,7 +2,7 @@
 {-# LANGUAGE TypeApplications #-}
 {-|
 Module      : HsLua.Packaging.ModuleTests
-Copyright   : ?? 2019-2021 Albert Krewinkel
+Copyright   : ?? 2019-2022 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <[email protected]>
 Stability   : alpha
@@ -12,11 +12,14 @@
 -}
 module HsLua.Packaging.ModuleTests (tests) where
 
+import HsLua.Core
 import HsLua.Marshalling
-  (Result (Success), peekIntegral, peekString, pushIntegral, pushText, runPeek)
+  ( forcePeek, peekFieldRaw, peekIntegral, peekString
+  , pushIntegral, pushText)
+import HsLua.Packaging.Documentation
 import HsLua.Packaging.Function
 import HsLua.Packaging.Module
-import Test.Tasty.HsLua ((=:), pushLuaExpr, shouldBeResultOf)
+import Test.Tasty.HsLua ((=:), shouldBeResultOf)
 import Test.Tasty (TestTree, testGroup)
 
 import qualified HsLua.Core as Lua
@@ -24,43 +27,7 @@
 -- | Specifications for Attributes parsing functions.
 tests :: TestTree
 tests = testGroup "Module"
-  [ testGroup "requirehs"
-    [ "pushes module to stack" =:
-      1 `shouldBeResultOf` do
-        Lua.openlibs
-        old <- Lua.gettop
-        Lua.requirehs "foo" (Lua.pushnumber 5.0)
-        new <- Lua.gettop
-        return (new - old)
-
-    , "module can be loaded with `require`" =:
-      let testModule = "string as a module"
-      in Just testModule `shouldBeResultOf` do
-        Lua.openlibs
-        Lua.requirehs "test.module" (Lua.pushstring testModule)
-        pushLuaExpr "require 'test.module'"
-        Lua.tostring Lua.top
-    ]
-
-  , testGroup "preloadhs"
-    [ "does not modify the stack" =:
-      0 `shouldBeResultOf` do
-        Lua.openlibs
-        old <- Lua.gettop
-        Lua.preloadhs "foo" (1 <$ Lua.pushnumber 5.0)
-        new <- Lua.gettop
-        return (new - old)
-
-    , "module can be loaded with `require`" =:
-      let testModule = "string as a module"
-      in Just testModule `shouldBeResultOf` do
-        Lua.openlibs
-        Lua.preloadhs "test.module" (1 <$ Lua.pushstring testModule)
-        pushLuaExpr "require 'test.module'"
-        Lua.tostring Lua.top
-    ]
-
-  , testGroup "creation helpers"
+  [ testGroup "creation helpers"
     [ "create produces a table" =:
       Lua.TypeTable `shouldBeResultOf` do
         Lua.newtable
@@ -76,22 +43,62 @@
         return (new - old)
 
     , "call module function" =:
-      Success 24 `shouldBeResultOf` do
+      24 `shouldBeResultOf` do
         Lua.openlibs
         registerModule mymath
         _ <- Lua.dostring $ mconcat
              [ "local mymath = require 'mymath'\n"
              , "return mymath.factorial(4)"
              ]
-        runPeek $ peekIntegral @Integer Lua.top
+        forcePeek $ peekIntegral @Prelude.Integer Lua.top
 
     , "call module as function" =:
-      Success "call me maybe" `shouldBeResultOf` do
+      "call me maybe" `shouldBeResultOf` do
         Lua.openlibs
         registerModule mymath
         _ <- Lua.dostring "return (require 'mymath')()"
-        runPeek $ peekString Lua.top
+        forcePeek $ peekString Lua.top
+
+    , "access name in docs" =:
+      "mymath" `shouldBeResultOf` do
+        Lua.openlibs
+        registerModule mymath
+        TypeTable <- getdocumentation top
+        forcePeek $ peekFieldRaw peekString "name" Lua.top
+
+    , "first function name in docs" =:
+      "factorial" `shouldBeResultOf` do
+        Lua.openlibs
+        registerModule mymath
+        TypeTable <- getdocumentation top
+        TypeTable <- getfield top "functions"
+        TypeTable <- rawgeti top 1
+        forcePeek $ peekFieldRaw peekString "name" Lua.top
 
+    , "function doc is shared" =:
+      True `shouldBeResultOf` do
+        Lua.openlibs
+        registerModule mymath
+        pushvalue top
+        setglobal "mymath"
+        -- get doc table via module docs
+        TypeTable <- getdocumentation top
+        TypeTable <- getfield top "functions"
+        TypeTable <- rawgeti top 1
+        -- get doc table via function
+        OK <- dostring "return mymath.factorial"
+        TypeTable <- getdocumentation top
+        -- must be the same
+        rawequal (nth 1) (nth 3)
+
+    , "first field name in docs" =:
+      "unit" `shouldBeResultOf` do
+        Lua.openlibs
+        registerModule mymath
+        TypeTable <- getdocumentation top
+        TypeTable <- getfield top "fields"
+        TypeTable <- rawgeti top 1
+        forcePeek $ peekFieldRaw peekString "name" Lua.top
     ]
   ]
 
@@ -99,7 +106,9 @@
 mymath = Module
   { moduleName = "mymath"
   , moduleDescription = "A math module."
-  , moduleFields = []
+  , moduleFields = [
+      Field "unit" "additive unit" (pushinteger 1)
+    ]
   , moduleFunctions = [factorial]
   , moduleOperations =
     [ (,) Call $ lambda
@@ -115,12 +124,11 @@
   <#> factorialParam
   =#> factorialResult
 
-factorialParam :: Parameter Lua.Exception Integer
+factorialParam :: Parameter Lua.Exception Prelude.Integer
 factorialParam =
-  parameter (peekIntegral @Integer) "integer"
+  parameter peekIntegral "integer"
     "n"
     "number for which the factorial is computed"
 
-factorialResult :: FunctionResults Lua.Exception Integer
-factorialResult =
-  functionResult (pushIntegral @Integer) "integer" "factorial"
+factorialResult :: FunctionResults Lua.Exception Prelude.Integer
+factorialResult = functionResult pushIntegral "integer" "factorial"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hslua-packaging-2.0.0/test/HsLua/Packaging/RenderingTests.hs 
new/hslua-packaging-2.1.0/test/HsLua/Packaging/RenderingTests.hs
--- old/hslua-packaging-2.0.0/test/HsLua/Packaging/RenderingTests.hs    
2001-09-09 03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/test/HsLua/Packaging/RenderingTests.hs    
2001-09-09 03:46:40.000000000 +0200
@@ -1,8 +1,9 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TypeApplications #-}
+{-# OPTIONS_GHC -Wno-warnings-deprecations #-}
 {-|
 Module      : HsLua.Packaging.RenderingTests
-Copyright   : ?? 2020-2021 Albert Krewinkel
+Copyright   : ?? 2020-2022 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <[email protected]>
 
@@ -12,6 +13,7 @@
 
 import Data.Maybe (fromMaybe)
 import Data.Version (makeVersion)
+import HsLua.Packaging.Convenience
 import HsLua.Packaging.Function
 import HsLua.Packaging.Module
 import HsLua.Packaging.Rendering
@@ -91,7 +93,7 @@
 nroot :: DocumentedFunction Lua.Exception
 nroot = defun "nroot" (liftPure2 nroot')
   <#> parameter (peekRealFloat @Double) "number" "x" ""
-  <#> optionalParameter (peekIntegral @Int) "integer" "n" ""
+  <#> opt (integralParam @Int "n" "")
   =#> functionResult pushRealFloat "number" "nth root"
   where
     nroot' :: Double -> Maybe Int -> Double
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hslua-packaging-2.0.0/test/HsLua/Packaging/UDTypeTests.hs 
new/hslua-packaging-2.1.0/test/HsLua/Packaging/UDTypeTests.hs
--- old/hslua-packaging-2.0.0/test/HsLua/Packaging/UDTypeTests.hs       
2001-09-09 03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/test/HsLua/Packaging/UDTypeTests.hs       
2001-09-09 03:46:40.000000000 +0200
@@ -3,7 +3,7 @@
 {-# LANGUAGE TypeApplications #-}
 {-|
 Module      : HsLua.Packaging.UDTypeTests
-Copyright   : ?? 2020-2021 Albert Krewinkel
+Copyright   : ?? 2020-2022 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <[email protected]>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hslua-packaging-2.0.0/test/HsLua/PackagingTests.hs 
new/hslua-packaging-2.1.0/test/HsLua/PackagingTests.hs
--- old/hslua-packaging-2.0.0/test/HsLua/PackagingTests.hs      2001-09-09 
03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/test/HsLua/PackagingTests.hs      2001-09-09 
03:46:40.000000000 +0200
@@ -1,6 +1,6 @@
 {-|
 Module      : HsLua.PackagingTests
-Copyright   : ?? 2020-2021 Albert Krewinkel
+Copyright   : ?? 2020-2022 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <[email protected]>
 
@@ -9,6 +9,7 @@
 module HsLua.PackagingTests (tests) where
 
 import Test.Tasty (TestTree, testGroup)
+import qualified HsLua.Packaging.DocumentationTests
 import qualified HsLua.Packaging.FunctionTests
 import qualified HsLua.Packaging.ModuleTests
 import qualified HsLua.Packaging.RenderingTests
@@ -21,4 +22,5 @@
   , HsLua.Packaging.ModuleTests.tests
   , HsLua.Packaging.RenderingTests.tests
   , HsLua.Packaging.UDTypeTests.tests
+  , HsLua.Packaging.DocumentationTests.tests
   ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hslua-packaging-2.0.0/test/test-hslua-packaging.hs 
new/hslua-packaging-2.1.0/test/test-hslua-packaging.hs
--- old/hslua-packaging-2.0.0/test/test-hslua-packaging.hs      2001-09-09 
03:46:40.000000000 +0200
+++ new/hslua-packaging-2.1.0/test/test-hslua-packaging.hs      2001-09-09 
03:46:40.000000000 +0200
@@ -1,6 +1,6 @@
 {-|
 Module      : Main
-Copyright   : ?? 2020-2021 Albert Krewinkel
+Copyright   : ?? 2020-2022 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <[email protected]>
 

Reply via email to