From e931de58a2f724c3632b7c8a656fb47489ecc963 Mon Sep 17 00:00:00 2001 From: Silvan Mosberger Date: Mon, 16 Mar 2020 21:10:05 +0100 Subject: lib/modules: Fix type checks not being done before merging Co-Authored-By: Robert Hensing --- lib/modules.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'lib/modules.nix') diff --git a/lib/modules.nix b/lib/modules.nix index 22df89f360a..518f4047cc6 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -416,10 +416,9 @@ rec { # Type-check the remaining definitions, and merge them. Or throw if no definitions. mergedValue = if isDefined then - foldl' (res: def: - if type.check def.value then res - else throw "The option value `${showOption loc}' in `${def.file}' is not of type `${type.description}'." - ) (type.merge loc defsFinal) defsFinal + if all (def: type.check def.value) defsFinal then type.merge loc defsFinal + else let firstInvalid = findFirst (def: ! type.check def.value) null defsFinal; + in throw "The option value `${showOption loc}' in `${firstInvalid.file}' is not of type `${type.description}'." else # (nixos-option detects this specific error message and gives it special # handling. If changed here, please change it there too.) -- cgit 1.4.1