summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorSilvan Mosberger <contact@infinisil.com>2020-08-18 00:12:36 +0200
committerSilvan Mosberger <contact@infinisil.com>2020-08-18 00:12:36 +0200
commitd5700d626ceef8ba509f822ee6e3b0a41a5da89f (patch)
tree1fe45783e279055830046f02e01739ecf230efa7 /lib
parent1e3f09feaa5667be4ed6eca96a984b4642420b83 (diff)
downloadnixpkgs-d5700d626ceef8ba509f822ee6e3b0a41a5da89f.tar
nixpkgs-d5700d626ceef8ba509f822ee6e3b0a41a5da89f.tar.gz
nixpkgs-d5700d626ceef8ba509f822ee6e3b0a41a5da89f.tar.bz2
nixpkgs-d5700d626ceef8ba509f822ee6e3b0a41a5da89f.tar.lz
nixpkgs-d5700d626ceef8ba509f822ee6e3b0a41a5da89f.tar.xz
nixpkgs-d5700d626ceef8ba509f822ee6e3b0a41a5da89f.tar.zst
nixpkgs-d5700d626ceef8ba509f822ee6e3b0a41a5da89f.zip
lib/modules: Fix nonexistant option error
The refactoring in https://github.com/NixOS/nixpkgs/commit/fd75dc876586bde8cdb683a6952a41132e8db166
introduced a mistake in the error message that doesn't show the full
context anymore. E.g. with this module:

  options.foo.bar = lib.mkOption {
    type = lib.types.submodule {
      baz = 10;
    };
    default = {};
  };

You'd get the error

  The option `baz' defined in `/home/infinisil/src/nixpkgs/config.nix' does not exist.

instead of the previous

  The option `foo.bar.baz' defined in `/home/infinisil/src/nixpkgs/config.nix' does not exist.

This commit undoes this regression
Diffstat (limited to 'lib')
-rw-r--r--lib/modules.nix4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/modules.nix b/lib/modules.nix
index 55a53b3909a..9c308d347cf 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -115,8 +115,8 @@ rec {
 
       checkUnmatched =
         if config._module.check && config._module.freeformType == null && merged.unmatchedDefns != [] then
-          let inherit (head merged.unmatchedDefns) file prefix;
-          in throw "The option `${showOption prefix}' defined in `${file}' does not exist."
+          let firstDef = head merged.unmatchedDefns;
+          in throw "The option `${showOption (prefix ++ firstDef.prefix)}' defined in `${firstDef.file}' does not exist."
         else null;
 
       result = builtins.seq checkUnmatched {