query
On this page

mergeUniqueOption

lib.options.mergeUniqueOption

Docs pulled from | This Revision | about 2 hours ago


Require a single definition.

NOTE: When the type is not checked completely by check, pass a merge function for further checking (of sub-attributes, etc).

Inputs

loc

2. Function argument

defs

3. Function argument


Noogle detected

Aliases

Implementation

The following is the current implementation of this function.

mergeUniqueOption = args@{
      message,
      # WARNING: the default merge function assumes that the definition is a valid (option) value. You MUST pass a merge function if the return value needs to be
      #   - type checked beyond what .check does (which should be very litte; only on the value head; not attribute values, etc)
      #   - if you want attribute values to be checked, or list items
      #   - if you want coercedTo-like behavior to work
      merge ? loc: defs: (head defs).value }:
    loc: defs:
      if length defs == 1
      then merge loc defs
      else
        assert length defs > 1;
        throw "The option `${showOption loc}' is defined multiple times while it's expected to be unique.\n${message}\nDefinition values:${showDefs defs}\n${prioritySuggestion}";