Skip to content

Commit

Permalink
lib/types: use elemTypeFunctor for types.listOf
Browse files Browse the repository at this point in the history
  • Loading branch information
hsjobeki committed Jan 6, 2025
1 parent 047fcc7 commit 7679fed
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion lib/types.nix
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,26 @@ let
let pos = builtins.unsafeGetAttrPos name v; in
if pos == null then "" else " at ${pos.file}:${toString pos.line}:${toString pos.column}";

# Internal functor to help for migrating functor.wrapped to functor.payload.elemType
# Note that individual attributes can be overriden if needed.
elemTypeFunctor = name: { elemType, ... }@payload: {
inherit name payload;
type = outer_types.types.${name};
binOp = a: b:
let
merged = a.elemType.typeMerge b.elemType.functor;
in
if merged == null
then
null
else
{ elemType = merged; };
wrappedDeprecationMessage = { loc }: lib.warn ''
The deprecated `type.functor.wrapped` attribute of the option `${showOption loc}` is accessed, use `type.nestedTypes.elemType` instead.
'' payload.elemType;
};


outer_types =
rec {
isType = type: x: (x._type or "") == type;
Expand Down Expand Up @@ -580,7 +600,9 @@ rec {
getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["*"]);
getSubModules = elemType.getSubModules;
substSubModules = m: listOf (elemType.substSubModules m);
functor = (defaultFunctor name) // { wrapped = elemType; };
functor = (elemTypeFunctor name { inherit elemType; }) // {
type = payload: types.listOf payload.elemType;
};
nestedTypes.elemType = elemType;
};

Expand Down

0 comments on commit 7679fed

Please sign in to comment.