-
-
Notifications
You must be signed in to change notification settings - Fork 50
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
Consider this simple nix file:
with (import <nixpkgs> { }).lib; with builtins; generators.toPretty { } "asdf"It evaluates fine:
# nix eval -f repro-with-builtins.nix
"\"asdf\""But nixd displays an "unused with expression" warning:
When removing the expression, the warning goes away:
with builtins; generators.toPretty { } "asdf"However, builtins doesn't contain generators at all, that's from lib!
# nix eval -f repro-with-builtins.nix
error:
… while evaluating the file '/Users/feuh/repos/experiments/nixd-repro/repro-with-builtins.nix':
error: undefined variable 'generators'
at /Users/feuh/repos/experiments/nixd-repro/repro-with-builtins.nix:1:16:
1| with builtins; generators.toPretty { } "asdf"
| ^
2|So it seems this is a bug that somehow causes with builtins; to be treated as if it imports the exact same names as with lib; would.
Logs (Required)
V[11:07:37.154] 93541: <<< {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///Users/feuh/repos/experiments/nixd-repro/repro-with-builtins.nix","version":61},"contentChanges":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"rangeLength":0,"text":"with (import <nixpkgs> { }).lib;"}]}}
I[11:07:37.154] 93541: <-- textDocument/didChange
I[11:07:37.154] 93541: --> notify textDocument/publishDiagnostics
V[11:07:37.154] 93541: >>> {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"sema-extra-with","message":"unused `with` expression (fix available)","range":{"end":{"character":4,"line":0},"start":{"character":0,"line":0}},"relatedInformation":[],"severity":2,"source":"nixf"}],"uri":"file:///Users/feuh/repos/experiments/nixd-repro/repro-with-builtins.nix","version":61}}
V[11:07:37.182] 93541: <<< {"jsonrpc":"2.0","id":46,"method":"textDocument/inlayHint","params":{"textDocument":{"uri":"file:///Users/feuh/repos/experiments/nixd-repro/repro-with-builtins.nix"},"range":{"start":{"line":0,"character":0},"end":{"line":4,"character":0}}}}
I[11:07:37.182] 93541: <-- textDocument/inlayHint(46)
I[11:07:37.182] 93541: --> reply:textDocument/inlayHint(46)
V[11:07:37.182] 93541: >>> {"id":46,"jsonrpc":"2.0","result":[]}
V[11:07:37.414] 93541: <<< {"jsonrpc":"2.0","id":47,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/feuh/repos/experiments/nixd-repro/repro-with-builtins.nix"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":4}},"message":"unused `with` expression (fix available)","code":"sema-extra-with","severity":2,"relatedInformation":[],"source":"nixf"}],"triggerKind":2}}}
I[11:07:37.414] 93541: <-- textDocument/codeAction(47)
I[11:07:37.414] 93541: --> reply:textDocument/codeAction(47)
V[11:07:37.414] 93541: >>> {"id":47,"jsonrpc":"2.0","result":[{"edit":{"changes":{"file:///Users/feuh/repos/experiments/nixd-repro/repro-with-builtins.nix":[{"newText":"","range":{"end":{"character":4,"line":0},"start":{"character":0,"line":0}}},{"newText":"","range":{"end":{"character":32,"line":0},"start":{"character":31,"line":0}}},{"newText":"","range":{"end":{"character":31,"line":0},"start":{"character":5,"line":0}}}]}},"kind":"quickfix","title":"remove `with` expression"}]}
V[11:07:37.454] 93541: <<< {"jsonrpc":"2.0","id":48,"method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///Users/feuh/repos/experiments/nixd-repro/repro-with-builtins.nix"}}}
I[11:07:37.454] 93541: <-- textDocument/semanticTokens/full(48)
I[11:07:37.454] 93541: --> reply:textDocument/semanticTokens/full(48)
V[11:07:37.454] 93541: >>> {"id":48,"jsonrpc":"2.0","result":{"data":[0,6,6,4,1,0,22,3,3,0,0,10,8,4,1,0,10,10,6,4,0,11,8,3,0,0,13,6,1,0],"resultId":""}}
V[11:07:37.505] 93541: <<< {"jsonrpc":"2.0","id":49,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///Users/feuh/repos/experiments/nixd-repro/repro-with-builtins.nix"}}}
I[11:07:37.505] 93541: <-- textDocument/documentSymbol(49)
I[11:07:37.505] 93541: --> reply:textDocument/documentSymbol(49)
V[11:07:37.505] 93541: >>> {"id":49,"jsonrpc":"2.0","result":[{"detail":"identifier","kind":24,"name":"import","range":{"end":{"character":12,"line":0},"start":{"character":6,"line":0}},"selectionRange":{"end":{"character":12,"line":0},"start":{"character":6,"line":0}}},{"detail":"attribute name","kind":7,"name":"lib","range":{"end":{"character":31,"line":0},"start":{"character":28,"line":0}},"selectionRange":{"end":{"character":31,"line":0},"start":{"character":28,"line":0}}},{"detail":"identifier","kind":24,"name":"builtins","range":{"end":{"character":46,"line":0},"start":{"character":38,"line":0}},"selectionRange":{"end":{"character":46,"line":0},"start":{"character":38,"line":0}}},{"detail":"identifier","kind":13,"name":"generators","range":{"end":{"character":58,"line":0},"start":{"character":48,"line":0}},"selectionRange":{"end":{"character":58,"line":0},"start":{"character":48,"line":0}}},{"detail":"attribute name","kind":7,"name":"toPretty","range":{"end":{"character":67,"line":0},"start":{"character":59,"line":0}},"selectionRange":{"end":{"character":67,"line":0},"start":{"character":59,"line":0}}},{"detail":"string","kind":15,"name":"asdf","range":{"end":{"character":78,"line":0},"start":{"character":72,"line":0}},"selectionRange":{"end":{"character":78,"line":0},"start":{"character":72,"line":0}}}]}
V[11:07:37.511] 93541: <<< {"jsonrpc":"2.0","id":50,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///Users/feuh/repos/experiments/nixd-repro/repro-with-builtins.nix"}}}
I[11:07:37.511] 93541: <-- textDocument/documentSymbol(50)
I[11:07:37.511] 93541: --> reply:textDocument/documentSymbol(50)
V[11:07:37.511] 93541: >>> {"id":50,"jsonrpc":"2.0","result":[{"detail":"identifier","kind":24,"name":"import","range":{"end":{"character":12,"line":0},"start":{"character":6,"line":0}},"selectionRange":{"end":{"character":12,"line":0},"start":{"character":6,"line":0}}},{"detail":"attribute name","kind":7,"name":"lib","range":{"end":{"character":31,"line":0},"start":{"character":28,"line":0}},"selectionRange":{"end":{"character":31,"line":0},"start":{"character":28,"line":0}}},{"detail":"identifier","kind":24,"name":"builtins","range":{"end":{"character":46,"line":0},"start":{"character":38,"line":0}},"selectionRange":{"end":{"character":46,"line":0},"start":{"character":38,"line":0}}},{"detail":"identifier","kind":13,"name":"generators","range":{"end":{"character":58,"line":0},"start":{"character":48,"line":0}},"selectionRange":{"end":{"character":58,"line":0},"start":{"character":48,"line":0}}},{"detail":"attribute name","kind":7,"name":"toPretty","range":{"end":{"character":67,"line":0},"start":{"character":59,"line":0}},"selectionRange":{"end":{"character":67,"line":0},"start":{"character":59,"line":0}}},{"detail":"string","kind":15,"name":"asdf","range":{"end":{"character":78,"line":0},"start":{"character":72,"line":0}},"selectionRange":{"end":{"character":78,"line":0},"start":{"character":72,"line":0}}}]}
V[11:07:37.956] 93541: <<< {"jsonrpc":"2.0","id":51,"method":"textDocument/inlayHint","params":{"textDocument":{"uri":"file:///Users/feuh/repos/experiments/nixd-repro/repro-with-builtins.nix"},"range":{"start":{"line":0,"character":0},"end":{"line":4,"character":0}}}}
I[11:07:37.956] 93541: <-- textDocument/inlayHint(51)
I[11:07:37.959] 93541: --> reply:textDocument/inlayHint(51)
V[11:07:37.959] 93541: >>> {"id":51,"jsonrpc":"2.0","result":[]}
V[11:07:38.156] 93541: <<< {"jsonrpc":"2.0","id":52,"method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///Users/feuh/repos/experiments/nixd-repro/repro-with-builtins.nix"}}}
I[11:07:38.158] 93541: <-- textDocument/documentLink(52)
I[11:07:38.158] 93541: --> reply:textDocument/documentLink(52)
V[11:07:38.158] 93541: >>> {"id":52,"jsonrpc":"2.0","result":[]}
Configuration
If you have some custom configuration, please paste it here.
To Reproduce
- Create a file with the content
with (import <nixpkgs> { }).lib; with builtins; generators.toPretty { } "asdf" - Run nixd
- Observe the incorrect warning
Expected behavior
I would expect nixd to correctly determine that some names from with lib; are used that are not available in with builtins;
Screenshots
See above.
Additional context
None.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working

