docs: document unsafeGetAttrPos
Closes https://git.lix.systems/lix-project/lix/issues/770. See also https://github.com/NixOS/nix/pull/12760. Change-Id: Ibe7a9a41a84f749e3e9bedce8da28039fa6e6d2f
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
---
|
||||
name: unsafeGetAttrPos
|
||||
args: [s, attrset]
|
||||
---
|
||||
`unsafeGetAttrPos` returns the position of the original definition (possibly
|
||||
before operations like set merges) of the attribute named *s* from *attrset*.
|
||||
|
||||
If the position couldn't be determined (for example the set was produced by
|
||||
builtin functions like `mapAttrs`), `null` will be returned instead, otherwise
|
||||
a attrset will be returned, and it has the following attributes:
|
||||
|
||||
- `file` (string)
|
||||
- `line` (number)
|
||||
- `column` (number)
|
||||
|
||||
This is unsafe because it allows us to distinguish sets that compare equal but
|
||||
are defined at different locations.
|
||||
@@ -147,6 +147,7 @@ builtin_definitions = files(
|
||||
'builtins/tryEval.md',
|
||||
'builtins/typeOf.md',
|
||||
'builtins/unsafeDiscardOutputDependency.md',
|
||||
'builtins/unsafeGetAttrPos.md',
|
||||
'builtins/zipAttrsWith.md',
|
||||
# keep-sorted end
|
||||
)
|
||||
|
||||
@@ -1721,12 +1721,6 @@ static void prim_unsafeGetAttrPos(EvalState & state, const PosIdx pos, Value * *
|
||||
state.mkPos(v, i->pos);
|
||||
}
|
||||
|
||||
static RegisterPrimOp primop_unsafeGetAttrPos(PrimOp {
|
||||
.name = "__unsafeGetAttrPos",
|
||||
.arity = 2,
|
||||
.fun = prim_unsafeGetAttrPos,
|
||||
});
|
||||
|
||||
// access to exact position information (ie, line and colum numbers) is deferred
|
||||
// due to the cost associated with calculating that information and how rarely
|
||||
// it is used in practice. this is achieved by creating thunks to otherwise
|
||||
|
||||
Reference in New Issue
Block a user