diff options
author | Robert Hensing <robert@roberthensing.nl> | 2022-12-02 10:49:10 +0000 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2022-12-02 11:06:53 +0000 |
commit | 6110a6009fc77348e9c47e0801a9b884dc76c730 (patch) | |
tree | 40963b832551c478c0cb2c24d6364173cdd67dd2 /lib/modules.nix | |
parent | e76c78d20685a043d23f5f9e0ccd2203997f1fb1 (diff) | |
download | nixpkgs-6110a6009fc77348e9c47e0801a9b884dc76c730.tar nixpkgs-6110a6009fc77348e9c47e0801a9b884dc76c730.tar.gz nixpkgs-6110a6009fc77348e9c47e0801a9b884dc76c730.tar.bz2 nixpkgs-6110a6009fc77348e9c47e0801a9b884dc76c730.tar.lz nixpkgs-6110a6009fc77348e9c47e0801a9b884dc76c730.tar.xz nixpkgs-6110a6009fc77348e9c47e0801a9b884dc76c730.tar.zst nixpkgs-6110a6009fc77348e9c47e0801a9b884dc76c730.zip |
lib/modules: Add context to the "option does not exist" error
Add trace items that provide context for a failed definition that can not be caught within the Nix language. This also adds a test for the `tryEval` behavior of `showDefs`.
Diffstat (limited to 'lib/modules.nix')
-rw-r--r-- | lib/modules.nix | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/modules.nix b/lib/modules.nix index 204a2cc1ac1..23e531de5c3 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -284,7 +284,18 @@ rec { if config._module.check && config._module.freeformType == null && merged.unmatchedDefns != [] then let firstDef = head merged.unmatchedDefns; - baseMsg = "The option `${showOption (prefix ++ firstDef.prefix)}' does not exist. Definition values:${showDefs [ firstDef ]}"; + baseMsg = + let + optText = showOption (prefix ++ firstDef.prefix); + defText = + builtins.addErrorContext + "while evaluating the error message for definitions for `${optText}', which is an option that does not exist" + (builtins.addErrorContext + "while evaluating a definition from `${firstDef.file}'" + ( showDefs [ firstDef ]) + ); + in + "The option `${optText}' does not exist. Definition values:${defText}"; in if attrNames options == [ "_module" ] then |