From 02de37ca072841559df7063d66a25b91d82f9538 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Mon, 7 Mar 2022 11:04:38 +0100 Subject: [PATCH] lib/modules.nix: Optimize optionSet legacy compat code It's still in the hot path. --- lib/modules.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/modules.nix b/lib/modules.nix index 79d54e4a5387..4c4d9f994dae 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -761,13 +761,13 @@ rec { options = opt.options or (throw "Option `${showOption loc}' has type optionSet but has no option attribute, in ${showFiles opt.declarations}."); f = tp: - let optionSetIn = type: (tp.name == type) && (tp.functor.wrapped.name == "optionSet"); - in if tp.name == "option set" || tp.name == "submodule" then throw "The option ${showOption loc} uses submodules without a wrapping type, in ${showFiles opt.declarations}." - else if optionSetIn "attrsOf" then types.attrsOf (types.submodule options) - else if optionSetIn "listOf" then types.listOf (types.submodule options) - else if optionSetIn "nullOr" then types.nullOr (types.submodule options) + else if (tp.functor.wrapped.name or null) == "optionSet" then + if tp.name == "attrsOf" then types.attrsOf (types.submodule options) + else if tp.name == "listOf" then types.listOf (types.submodule options) + else if tp.name == "nullOr" then types.nullOr (types.submodule options) + else tp else tp; in if opt.type.getSubModules or null == null