Unverified Commit a9f3a867 authored by Silvan Mosberger's avatar Silvan Mosberger Committed by GitHub
Browse files

Merge pull request #249923 from hercules-ci/modules-catch-bare-type-better

parents 84ffd8ca 5ad01f1b
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -633,7 +633,7 @@ let
          optionDecls = filter
            (m: m.options?_type
                && (m.options._type == "option"
                    || throwDeclarationTypeError loc m.options._type
                    || throwDeclarationTypeError loc m.options._type m._file
                )
            )
            decls;
@@ -698,14 +698,14 @@ let
          ) unmatchedDefnsByName);
    };

  throwDeclarationTypeError = loc: actualTag:
  throwDeclarationTypeError = loc: actualTag: file:
    let
      name = lib.strings.escapeNixIdentifier (lib.lists.last loc);
      path = showOption loc;
      depth = length loc;

      paragraphs = [
        "Expected an option declaration at option path `${path}` but got an attribute set with type ${actualTag}"
        "In module ${file}: expected an option declaration at option path `${path}` but got an attribute set with type ${actualTag}"
      ] ++ optional (actualTag == "option-type") ''
          When declaring an option, you must wrap the type in a `mkOption` call. It should look somewhat like:
              ${comment}
+3 −3
Original line number Diff line number Diff line
@@ -394,9 +394,9 @@ checkConfigError \
  ./declare-set.nix ./declare-enable-nested.nix

# Options: accidental use of an option-type instead of option (or other tagged type; unlikely)
checkConfigError 'Expected an option declaration at option path .result. but got an attribute set with type option-type' config.result ./options-type-error-typical.nix
checkConfigError 'Expected an option declaration at option path .result.here. but got an attribute set with type option-type' config.result.here ./options-type-error-typical-nested.nix
checkConfigError 'Expected an option declaration at option path .result. but got an attribute set with type configuration' config.result ./options-type-error-configuration.nix
checkConfigError 'In module .*/options-type-error-typical.nix: expected an option declaration at option path .result. but got an attribute set with type option-type' config.result ./options-type-error-typical.nix
checkConfigError 'In module .*/options-type-error-typical-nested.nix: expected an option declaration at option path .result.here. but got an attribute set with type option-type' config.result.here ./options-type-error-typical-nested.nix
checkConfigError 'In module .*/options-type-error-configuration.nix: expected an option declaration at option path .result. but got an attribute set with type configuration' config.result ./options-type-error-configuration.nix

# Check that that merging of option collisions doesn't depend on type being set
checkConfigError 'The option .group..*would be a parent of the following options, but its type .<no description>. does not support nested options.\n\s*- option.s. with prefix .group.enable..*' config.group.enable ./merge-typeless-option.nix