Doug Beardsley
5b1117f6b9
Add test case for placeholder and get it passing
2018-12-05 08:43:31 -05:00
Doug Beardsley
23250a3433
Misc cleanup
2018-12-05 06:26:59 -05:00
Doug Beardsley
1748e7ce7a
Fix behavior of baseNameOf
2018-12-03 05:00:50 -05:00
Doug Beardsley
4b28407936
Fix eval-okay-context test failure
2018-12-03 00:48:15 -05:00
Félix Baylac
512a8e0f10
Change builtins.storeDir type to String
...
Co-authored-by: Basile Henry <bjm.henry@gmail.com>
2018-12-02 20:59:50 +00:00
Doug Beardsley
ab3fc101dd
Merge branch 'master' into remove-fromnix-text-instances
2018-11-29 10:36:03 -05:00
John Wiegley
83e5dc7aa3
Merge pull request #418 from haskell-nix/revert-xml-string-context
...
Revert "Merge pull request #413 from haskell-nix/xml-string-context"
2018-11-26 12:00:23 -08:00
Shea Levy
952e2603ea
Revert "Merge pull request #413 from haskell-nix/xml-string-context"
...
Let's try to find a way to avoid exporting the NixString constructors
first.
This reverts commit ed07384563
, reversing
changes made to 4bfe2cc60c
.
2018-11-25 08:03:30 -05:00
Domen Kožar
48fe67748b
Fix warnings
2018-11-25 10:08:17 +00:00
John Wiegley
ed07384563
Merge pull request #413 from haskell-nix/xml-string-context
...
Accumulate string context in builtins.toXML
2018-11-24 19:15:06 -08:00
John Wiegley
4bfe2cc60c
Merge pull request #408 from domenkozar/type-string-context
...
Distinguish string with or without context when revealing type
2018-11-24 19:12:42 -08:00
John Wiegley
a6565b62a4
Merge pull request #414 from domenkozar/issue-412
...
Make -v1 default for better usability on errors
2018-11-24 19:11:02 -08:00
John Wiegley
f7a370b53f
Correct an informational message
2018-11-24 19:09:28 -08:00
Doug Beardsley
a39a5518ea
Merge remote-tracking branch 'origin/pending' into remove-fromnix-text-instances
2018-11-24 15:22:54 -05:00
Doug Beardsley
81c649b96e
Fix comment
2018-11-24 15:22:02 -05:00
Domen Kožar
e0af60ef67
thunk loop -> infinite recursion
2018-11-24 14:22:46 +00:00
Domen Kožar
28bfc2cbe8
Make -v1 default for better usability on errors
2018-11-24 14:13:24 +00:00
Ken Micklas
1457362184
Accumulate string context in builtins.toXML
2018-11-23 12:48:44 -05:00
Ken Micklas
a43da72f9e
Expose internals of NixString
2018-11-23 12:48:44 -05:00
John Wiegley
e8a6fbab16
Merge branch 'master' into fix/freeVars
2018-11-22 09:49:22 -08:00
Domen Kožar
39ef69f2f9
Merge branch 'master' into type-string-context
2018-11-22 09:55:23 +00:00
Vaibhav Sagar
017ce7667a
Bump Megaparsec to 7.0.4
2018-11-22 01:16:11 -05:00
John Wiegley
5ff896f571
Merge pull request #388 from haskell-nix/prettyprinter
...
Switch to prettyprinter library from ansi-wl-pprint
2018-11-21 15:59:49 -08:00
Doug Beardsley
31c327c406
Rename back to hacky
2018-11-21 01:55:56 -05:00
Doug Beardsley
09d9919367
Fix misleading name
2018-11-21 01:54:15 -05:00
Doug Beardsley
9e11410f6e
Make note to fix toFile
2018-11-21 01:50:24 -05:00
Doug Beardsley
d87122a0f2
Fix context handling in replaceStrings
2018-11-21 01:21:53 -05:00
Domen Kožar
58a83622eb
GHC 8.6 support
2018-11-20 23:44:59 +00:00
John Ericson
f227911ce0
Merge remote-tracking branch 'origin/master' into prettyprinter
2018-11-20 18:23:15 -05:00
Domen Kožar
2cc20c045f
Distinguish string with or without context when revealing type
2018-11-20 12:20:16 +00:00
John Wiegley
ba5b23a6e3
Bump minimum supported version to GHC 8.4.4
2018-11-19 09:46:02 -08:00
Doug Beardsley
8a97be7250
Fix behavior of match to properly return nulls
2018-11-19 09:01:34 -05:00
Doug Beardsley
752ff745a8
Remove unnecessary cases
2018-11-19 07:13:19 -05:00
Doug Beardsley
a29a54b4f9
Merge remote-tracking branch 'origin/pending' into remove-fromnix-text-instances
2018-11-19 07:10:02 -05:00
Doug Beardsley
5dd3e2d7ce
Remove Text FromValue, ToValue, FromNix, and ToNix
...
This commit makes the handling of string context much more explicit and correct
throughout entire codebase.
2018-11-19 07:04:08 -05:00
Ryan Trinkle
0a82ab26ce
Merge remote-tracking branch 'origin/pending' into abstract-scopes
2018-11-18 15:04:30 -05:00
Doug Beardsley
602c673cba
Merge pull request #397 from haskell-nix/coerceToString-boolean-blindness
...
Create data types to avoid coerceToString boolean blindness
2018-11-17 19:00:29 -05:00
Ken Micklas
3beeaa6a79
Add and use fromStringNoContext
2018-11-17 18:40:22 -05:00
Ken Micklas
ff1166aba6
replace *StringIgnoreContextMaybe with more accurate *GetStringNoContext
2018-11-17 18:40:22 -05:00
Ken Micklas
340e97e8d3
Use principledStringIngoreContextMaybe for builtins.compareVersions
2018-11-17 18:40:22 -05:00
Ken Micklas
306d710527
Use principled* functions for builtins.splitVersion
2018-11-17 18:40:22 -05:00
Ken Micklas
a488e9aa5c
Add principledStringIgnoreContextMaybe
2018-11-17 18:40:22 -05:00
Ken Micklas
124f7165e4
Add principledStringMempty
2018-11-17 18:40:22 -05:00
Ken Micklas
a0a89248e9
Use principledMakeNixStringWithoutContext in assembleString
2018-11-17 18:40:22 -05:00
Ken Micklas
c9071db5bc
Use custom force for isDerivation instead of relying on valueEq
2018-11-17 18:40:22 -05:00
Ken Micklas
a7bdda4912
Ignore context when comparing strings
2018-11-17 18:40:22 -05:00
Ken Micklas
ff16557e34
Add principledStringIgnoreContext
2018-11-17 18:40:22 -05:00
Ken Micklas
8dc1762f8e
Use curry and LambdaCase for valueEq
2018-11-17 18:40:22 -05:00
Ken Micklas
a6ab1d4e27
Use principledMakeNixStringWithoutContext in Nix.Pretty
2018-11-17 18:40:22 -05:00
Ken Micklas
be8390ac79
Remove unused valueText and valueTextNoContext functions
2018-11-17 18:40:22 -05:00
Doug Beardsley
4edcda00e4
Create data types to avoid coerceToString boolean blindness
2018-11-17 18:26:10 -05:00
Doug Beardsley
5fb9dae34c
Merge pull request #393 from haskell-nix/coerceToString-returns-nix-string
...
Make coerceToString return NixString
2018-11-17 17:05:58 -05:00
Doug Beardsley
ba7fc3446d
Remove hackyModifyNixContents
2018-11-17 16:23:41 -05:00
Ryan Trinkle
d60130c566
Abstract Scopes
2018-11-17 16:21:03 -05:00
Doug Beardsley
cda7345647
Merge remote-tracking branch 'origin/pending' into coerceToString-returns-nix-string
2018-11-17 16:15:06 -05:00
Doug Beardsley
d949b9c1e1
Make coerceToString return NixString
2018-11-17 16:08:02 -05:00
Ken Micklas
f617e790a4
Make null and empty string not equal
...
Fixes #391 .
2018-11-17 16:02:27 -05:00
Ken Micklas
b7ad125c46
Remove hackyStringMappend
2018-11-17 13:52:15 -05:00
Ken Micklas
4018fd0ccf
Change the only use of hackyStringMConcat to principledStringMConcat
2018-11-17 13:51:47 -05:00
Doug Beardsley
f01ba97edf
Export principledStringMappend
2018-11-17 13:29:34 -05:00
Doug Beardsley
2d36ccbdf5
Issue #387 , hackyStringMappend
2018-11-17 13:04:08 -05:00
John Ericson
04abd357bd
Switch to prettyprinter
2018-11-17 12:02:26 -05:00
Ryan Trinkle
e6b189e69b
Eliminate MonadIO from MonadEffects instance for Lazy
2018-11-16 21:30:55 -05:00
Ryan Trinkle
c655bdb9f2
Factor out MonadIntrospect
2018-11-16 21:30:55 -05:00
Ryan Trinkle
32850cd23e
Factor out instantiate and exec
2018-11-16 21:30:51 -05:00
Ryan Trinkle
7f964f8d21
WIP: Eliminate pathExists in favor of doesFileExist
...
Needs approval from @gbwey9
TODO:
* Actually get rid of pathExists
2018-11-16 17:29:14 -05:00
Ryan Trinkle
5acd886aca
Factor out MonadEnv
2018-11-16 17:17:42 -05:00
Ryan Trinkle
c2be721454
Factor out HTTP requests
2018-11-16 17:17:38 -05:00
Ryan Trinkle
cc7a97b545
Factor out printing text
2018-11-16 17:17:34 -05:00
Ryan Trinkle
2884c4f918
Factor out filesystem functionality into MonadFile
2018-11-16 15:16:17 -05:00
Ryan Trinkle
02e057c5c0
Factor out addPath and toFile_ into MonadStore class
2018-11-16 14:50:58 -05:00
Ryan Trinkle
6d2daf0ecd
WIP: Refactor MonadVar to use ref-tf's MonadRef instead
...
TODO:
* Upstream GEq (STRef s)
* Eliminate shim functions
2018-11-16 14:11:37 -05:00
Ryan Trinkle
12d9924991
Make other implementations of MonadFile possible
2018-11-16 13:31:56 -05:00
Ryan Trinkle
15c33ac4c8
Whitespace
2018-11-16 13:29:31 -05:00
Ryan Trinkle
54d139d57b
Expose Nix.Pretty.valueToExpr
2018-11-16 13:29:20 -05:00
Silvan Mosberger
292d760b12
freeVars: Fix inherit's in rec sets and let in
...
Previously freeVars (rec { inherit y; }) would report nothing, when
really the `y` variable is free. The same for `let inherit y; in y`
2018-11-16 17:59:03 +01:00
John Wiegley
54492e3905
Merge branch 'master' into string_context_255
2018-10-15 12:45:05 -07:00
gb
411afaca51
remove deprecation warnings so travis will succeed
2018-10-06 18:35:56 -04:00
Patrick Hilhorst
2e330b4601
s/attribut /attribute /
2018-10-02 22:13:32 +02:00
gb
4baa4f7108
change Nix.NixString module to Nix.String
2018-09-23 16:03:44 -04:00
gb
be056b3dd7
builds with -Werror -Wno-deprecations
2018-09-16 16:30:24 -04:00
gb
0a5e692b1c
Merge branch 'string_context_255' of https://github.com/gbwey9/hnix into string_context_255
2018-09-16 15:22:53 -04:00
gb
cfa4824fb3
remove semigroup monoid and replace with nixstring methods
2018-09-16 14:02:02 -04:00
John Wiegley
dddf425a22
Merge branch 'master' into string_context_255
2018-09-15 22:35:13 -07:00
gb
ae6725871b
removed executable permissions
2018-09-15 20:32:38 -04:00
gb
dc940b8d04
fix windows line endings on these files
2018-09-15 20:16:35 -04:00
gb
6f1ed3c2e9
documented methods;added more methods with deprecation
2018-09-15 20:04:54 -04:00
Silvan Mosberger
f189b69f51
More precise freeVars
2018-09-11 05:23:58 +02:00
John Wiegley
bb26529c73
Merge pull request #360 from Infinisil/parser-exports
...
Parser exports
2018-09-10 11:57:54 -07:00
Georges Dubus
0e3ecd5ac3
Avoid corrupting the value being printed in Pretty.dethunk
2018-09-10 17:18:34 +02:00
Silvan Mosberger
08326ce34a
Parser: export symbol and whiteSpace
2018-09-10 05:10:35 +02:00
Silvan Mosberger
9a74e0cd99
Parser: Export useful partial parsers
2018-09-10 04:28:33 +02:00
Silvan Mosberger
c01fa83cb6
Parser: Unify parser names
2018-09-10 04:10:53 +02:00
Silvan Mosberger
67934d030a
Parser: Make Result Functior
2018-09-10 03:30:15 +02:00
gb
a57aa711df
tests run
2018-09-09 11:47:04 -04:00
gb
2fadbe3090
add new nixstring version with warnings
2018-09-09 11:01:09 -04:00
John Wiegley
833851392d
Merge remote-tracking branch 'origin/master' into pending
2018-09-07 13:16:28 -07:00
John Wiegley
99626e9ab9
The use of liftM2 (<|>) was executing too much of both arguments
...
This is demonstrated by the following example, courtesy of Ryan Trinkle:
let x = with x; with { a = 5; }; a; in x
Although the dynamic scopes visible at 'a' happen to be [<thunk: { a = 5; }>,
<thunk: x>], we were forcing each thunk before doing the M.lookup, and then
performing (<|>) on the M.lookup.
Fixes #347
2018-09-07 13:08:30 -07:00
Jude Taylor
a604a74af9
make mapAttrs take both arguments
2018-09-04 14:17:14 -07:00
Domen Kožar
4501319e81
<<loop>> is already GHC RTS error, tweak a bit
2018-09-03 21:17:50 +01:00
John Wiegley
7c9211d6e0
Merge pull request #352 from pikajude/path-tarball
...
Support tarballs in NIX_PATH and -I
2018-09-03 10:04:19 -07:00
John Wiegley
34054285e3
Merge pull request #332 from obsidiansystems/issue-327-fix
...
Fix missing parenthesis in pretty printing selector
2018-09-03 10:04:07 -07:00
John Wiegley
ed99b7ad18
Merge branch 'master' into mapattrs
2018-09-02 19:15:04 -07:00
John Wiegley
e31ad9cb30
Merge branch 'master' into issue-327-fix
2018-09-02 19:12:08 -07:00
Jude Taylor
84e0594139
fix ghc 8.2 build
2018-09-02 15:20:17 -07:00
Jude Taylor
368f7e038c
support tarballs in NIX_PATH and -I
2018-09-02 11:25:24 -07:00
John Wiegley
7d549d67c6
Merge remote-tracking branch 'origin/master' into pending
2018-08-23 21:08:12 -07:00
Jörg Thalheim
c890965bb4
add builtins.{bitAnd,bitOr,bitXor)
2018-08-20 17:04:55 -05:00
John Wiegley
0613d1d604
Finish implementation of cycle detection during normalization
2018-08-10 17:50:07 -04:00
John Wiegley
f0b6b6b223
Change NValueNF to use Free instead of Fix
...
This allows us to detect and report cycles during normalization.
See #348
2018-08-09 22:09:00 -04:00
Matthew Bauer
10fe907c50
Add builtins.mapAttrs
...
Fixes #341
2018-08-09 18:23:13 -04:00
Matthew Bauer
d538a96723
Fix missing parenthesis in pretty printing selector
...
Fixes #327
Another case of missing parenthesis. From the issue:
> prettyNix $ ("x" @@ "y") @. "z"
x y.z
When it should be:
(x y).z
Adding non-associative wrapParens seems to fix it. Not sure if this is
the best way but trying a few things & running the test suite still
seem to work.
2018-08-08 17:17:19 -04:00
John Wiegley
266793a287
Improve an error message
2018-08-07 14:06:50 -04:00
John Wiegley
456e0811bc
Merge remote-tracking branch 'origin/master' into pending
2018-08-06 16:15:14 -04:00
Domen Kožar
6033a49e6d
Implement addErrorContext as id
2018-08-06 21:09:30 +01:00
John Wiegley
b0541ebd24
Some minor refactoring
2018-08-05 16:12:04 -04:00
John Wiegley
023dbe55ea
Change tracing output from normalFormBy
2018-08-05 15:51:59 -04:00
John Wiegley
f262046f34
Change coerceToString to also take a coerceMore argument
2018-08-05 15:51:42 -04:00
John Wiegley
49584cbae5
Reformat a function body
2018-08-05 15:49:16 -04:00
John Wiegley
2e04e5a7b2
Change rendering of NormalLoop errors
2018-08-05 15:48:52 -04:00
John Wiegley
e8a7368a92
Some whitespace changes
2018-08-05 15:48:44 -04:00
John Wiegley
1af979e836
true and false shouldn't be in the reservedNames list
...
Fixes #343
2018-08-05 12:20:00 -04:00
John Wiegley
8e664631e2
If an exception occurs when forcing a thunk, cleanup the "active" bit
2018-08-05 12:00:43 -04:00
John Wiegley
edaf59b56a
Add a bogus MonadCatch instance for (Lint s)
2018-08-05 12:00:33 -04:00
John Wiegley
bef6db5beb
Minor reformatting
2018-08-05 10:40:28 -04:00
Daniel Krol
13f548c7af
Fix previous attempted cosmetic refactor which broke eval-okay-overrides test
2018-08-05 10:25:22 -04:00
John Wiegley
a2771e6f23
Merge remote-tracking branch 'origin/master' into pending
2018-08-05 09:54:08 -04:00
John Wiegley
6830d88523
Fix the way that rec { foo.bar = bar; } is desugared
...
Fixes #338
2018-08-05 09:53:20 -04:00
John Wiegley
7b2f66e59e
Improve the Expectation error
2018-08-04 19:05:01 -04:00
Daniel Krol
e8d75e4ab6
Change a lambda to an uncurry
2018-08-04 17:47:55 -04:00
John Wiegley
8bfec34901
Resolve a compiler warning
2018-08-04 16:40:17 -04:00
John Wiegley
50740972de
'import' should never carry over the lexical scope of its parent file
...
Fixes #334
2018-08-04 15:08:36 -04:00
John Wiegley
705d7c474d
Add --scopes option to print out scoping information
2018-08-04 14:40:04 -04:00
Jude Taylor
b42a6e1cfd
Catch InappropriateType error in pathExists
2018-08-01 20:09:26 -07:00
John Wiegley
1cf25fa26f
Merge branch 'master' into func-equal
2018-07-31 21:52:40 -04:00
Matthew Bauer
5709d52d60
Use non-associative for ‘or’ selector
...
When an expression looks like this:
a.b or (0 == 0)
The precedence wasn’t being applied correctly in the pretty printer.
The parenthesis were left off so that the pretty printer produced,
a.b or 0 == 0
While they look similar, without the parenthesis the expression would
take (a.b or 0) as one expression. This caused an error in the
Pretty/Parse Property tests. Disabling associativity for the (0 == 0)
part fixed this.
Fixes #305
2018-07-31 17:55:51 -04:00
gb
fd2bbb66e9
fixes to match latest master: tests ran
2018-07-28 15:32:15 -04:00
gb
9c3e5e995c
update fork from master contd
2018-07-28 14:17:37 -04:00
gb
ea3b675f28
update fork from master
2018-07-28 13:23:23 -04:00
Matthew Bauer
39100fa19e
Fix Nixpkgs evaluation on Functions
...
Nix says that { f = x: x; } == { g = y: y; }. The rule says to ignore
functions when comparing attribute sets or lists. This commit follows
this rule. However, it is still true that:
(x: x) /= (y: y)
I have also added some tests that check for these cases.
Fixes #323
2018-07-25 21:00:16 -04:00
Félix Baylac-Jacqué
e246bdd647
Add recursive NSelect reduction.
2018-06-26 10:28:33 +02:00
Félix Baylac-Jacqué
32fa31353c
Add missing sAttrPath base case.
2018-06-25 17:19:39 +02:00
Félix Baylac-Jacqué
cd90a9aff7
Add basic NSelect reduction strategy.
2018-06-25 17:19:29 +02:00
Félix Baylac-Jacqué
13cfce4e01
Documenting reductions behaviour.
2018-06-25 17:18:36 +02:00
Félix Baylac-Jacqué
d3cbcf791c
Builtins.div cannot divide by 0
...
Fixes #277 .
2018-06-12 21:54:28 +02:00
Dmitry Rets
3a096cc93b
Implement top-level __findFile.
...
Fixes https://github.com/haskell-nix/hnix/issues/248 .
2018-05-20 23:39:24 +02:00
John Wiegley
9617c90a9e
Change the name of TArr to :~>
2018-05-17 22:16:50 -07:00
John Wiegley
738ef09bf9
Make NUnaryOp and NBinaryOp both Enum and Bounded
2018-05-14 21:22:04 -07:00
John Wiegley
60231bd38a
Merge branch 'master' into master
2018-05-14 21:15:07 -07:00
hsloan
f7ff858ef9
add builtins.toFile
2018-05-14 22:54:34 -04:00
John Wiegley
7e8b0552a0
Fix to the pretty printing of @ names
2018-05-14 22:45:43 -04:00
John Wiegley
fd9b77c29b
Don't include Control.Applicative where not necessary
2018-05-14 22:45:43 -04:00
John Wiegley
6aa64760d1
Make use of lens-family to provide some utility lenses/traversals
2018-05-14 22:45:43 -04:00
Blair Archibald
b89cba0525
Fix #280 . unsafeGetAttrPos should return null.
...
According to the expected test output, unsafeGetAttrPos should fail silently and
return null if it can't find a position for the field (e.g when looking up
builtins).
2018-05-14 22:45:43 -04:00
Matthew Pickering
ce46f58b2c
Escape paths when used in a selector
...
./a."abc" gets parsed as App (./a.) "abc"
when pretty printing, it is necessary to escape the path to
${./a}."abc" so that it is then parsed correctly.
2018-05-14 22:45:43 -04:00
Matthew Pickering
ed089f57b8
Fix pretty printing of EscapedNewline
2018-05-14 22:45:43 -04:00
John Wiegley
45da41666b
Make use of attrsetGet in another place
2018-05-14 22:45:43 -04:00
John Wiegley
6b34ea3ee5
Add a Calling info frame
2018-05-14 22:45:43 -04:00
John Wiegley
7c0ba49ab1
Some very minor fixes to warnings
2018-05-14 22:45:43 -04:00
Doug Beardsley
d912441e3c
Changes for building hnix for GHCJS
2018-05-13 14:17:55 -07:00
John Wiegley
84ebf8d9ae
A fix to the way inherit is parsed
2018-05-13 14:10:02 -07:00
gb
0df2bb35d6
forgot to add NixString
2018-05-13 14:13:30 -04:00
John Wiegley
b60a15dc0d
Change the way that serialise is guarded from inclusion
...
Fixes #312
2018-05-11 12:15:18 -07:00
John Wiegley
35fb7dc974
Add instance Lift (Fix NExprF) for GHC 8.0
2018-05-10 15:35:53 -07:00
John Wiegley
e06ab95236
Allow NFData instances for NExpr and NExprLoc on GHC 8.0
2018-05-10 15:26:37 -07:00
John Wiegley
dbd8468862
In Builtins.hs, just include derivation.nix directly
2018-05-10 13:51:14 -07:00
John Wiegley
0d6b6e7807
Allow Nix quasi-patterns
...
For example:
foo [nix| 2 + 3 |] = ...
Is equivalent to pattern matching on the constructors that make up the parsed
version of the expression. This can make it much quicker to identify pattern
you're looking for in a parsed body of Nix code.
2018-05-10 01:18:28 -07:00
John Wiegley
13edc1da30
Allow Nix quasi-quoter to refer to and promote Haskell variables
2018-05-10 01:14:13 -07:00
John Wiegley
f59a17db72
Some refactoring and simplification in Eval.hs
2018-05-10 00:33:46 -07:00
John Wiegley
1d5c0370ae
Simplify definition of getAttr
2018-05-10 00:09:42 -07:00
John Wiegley
d805fa3627
Preserve attr name positions in attrSetAlter
2018-05-10 00:09:42 -07:00
John Wiegley
d5023ed3cf
Allow adding sets with outPath to strings
2018-05-09 22:17:32 -07:00
John Wiegley
8ebac49b95
Make builtins.toString much better behaved
2018-05-09 22:17:32 -07:00
John Wiegley
31f3dc0766
Desugar NSet binds as well as NRecSet, remove an always True parameter
...
Fixes #310
2018-05-09 15:03:11 -07:00
John Wiegley
b01b7449d4
Make the --trace output a little more readable
2018-05-09 14:39:27 -07:00
John Wiegley
bcadd1f89b
Tiny refactor
2018-05-09 14:39:21 -07:00
John Wiegley
b186e44174
--force was a needless duplicate of --strict
2018-05-09 13:52:34 -07:00
John Wiegley
e9006ff98b
Fix a problem with static processing of imports
2018-05-09 13:36:06 -07:00
John Wiegley
15baa5c8b8
Track attribute source positions in the binding, not the key name
2018-05-09 01:25:01 -07:00
John Wiegley
ba0dc19d2d
Work from mightybyte: Minimize deps required, for building with GHCJS
2018-05-08 16:41:15 -07:00
gb
43c145252d
NixString is in its own module hiding the constructors
2018-05-08 16:47:50 -04:00
John Wiegley
449d6611df
Remove the Uri type, it's just sugar
...
Fixes #308
2018-05-08 12:15:50 -07:00
gb
fbcb258eb4
Merge branch 'master' of https://github.com/haskell-nix/hnix into string_context_255
2018-05-08 14:44:47 -04:00
gb
82c0d917e9
add hashable import
2018-05-08 14:40:49 -04:00
John Wiegley
ce3b0d70e9
Move all of the parsing code into a single module, for optimization
2018-05-07 12:06:56 -07:00
John Wiegley
76a54f5580
Fix to the pretty printing of @ names
2018-05-06 22:14:01 -07:00
John Wiegley
f1faf50bcb
Merge branch 'master' into string_context_255
2018-05-06 10:47:23 -07:00
John Wiegley
b79a44bd95
Don't include Control.Applicative where not necessary
2018-05-06 10:43:43 -07:00
John Wiegley
e7a6456a35
Make use of lens-family to provide some utility lenses/traversals
2018-05-06 10:43:43 -07:00
John Wiegley
05088a9dbd
Merge pull request #302 from BlairArchibald/fix/280
...
Fix #280 . unsafeGetAttrPos should return null.
2018-05-06 10:41:38 -07:00
John Wiegley
b886e5825e
Merge pull request #229 from mpickering/quickcheck-expr
...
Add QuickCheck test for pretty printer and parser
2018-05-06 10:41:05 -07:00
Blair Archibald
aae7f13ab1
Fix #280 . unsafeGetAttrPos should return null.
...
According to the expected test output, unsafeGetAttrPos should fail silently and
return null if it can't find a position for the field (e.g when looking up
builtins).
2018-05-06 13:17:43 +01:00
Matthew Pickering
ae0167110d
Escape paths when used in a selector
...
./a."abc" gets parsed as App (./a.) "abc"
when pretty printing, it is necessary to escape the path to
${./a}."abc" so that it is then parsed correctly.
2018-05-06 10:31:52 +00:00
Matthew Pickering
34d0552517
Fix pretty printing of EscapedNewline
2018-05-06 10:31:52 +00:00
John Wiegley
9e50e9e069
Make use of attrsetGet in another place
2018-05-06 00:35:29 -07:00
John Wiegley
11a89d2b40
Add a Calling info frame
2018-05-06 00:35:21 -07:00
John Wiegley
888944ebff
Some very minor fixes to warnings
2018-05-06 00:34:38 -07:00
gb
8e7d9d32fa
add string context
2018-05-03 08:07:54 -04:00
John Wiegley
b1b027286b
Fix a warning in Builtins.hs
2018-05-02 21:39:23 -07:00
John Wiegley
a627d885e8
Implement builtins.fetchurl
...
Squashed commit of the following:
commit 15b10d898e0457237f07cda9e5e9525bac0e95f6
Author: John Wiegley <johnw@newartisans.com>
Date: Wed May 2 16:33:30 2018 -0700
Update Exec.hs
commit d4a886dccf2715f1c1790e01adc242c352e7f427
Merge: 02afb27 4caacc1
Author: John Wiegley <johnw@newartisans.com>
Date: Wed May 2 16:08:55 2018 -0700
Merge branch 'master' into http
commit 02afb275f2078c1184a901da3ea0262630fefeea
Author: John Wiegley <johnw@newartisans.com>
Date: Wed May 2 16:08:42 2018 -0700
Update Exec.hs
commit 3733ce5888adb7161d2f57a16204ab953e9c4d7d
Author: John Wiegley <johnw@newartisans.com>
Date: Wed May 2 16:07:08 2018 -0700
Update Builtins.hs
commit 4402be6d04ac34156d50f8ee29f9af300de75ce5
Merge: 2c60097 13f3ebd
Author: John Wiegley <johnw@newartisans.com>
Date: Wed May 2 15:06:28 2018 -0700
Merge branch 'master' into http
commit 2c600976bb3a5d9267a0f313487dd0ab1a6ce1f7
Merge: 4a9d1a5 555ce95
Author: John Wiegley <johnw@newartisans.com>
Date: Wed May 2 14:25:59 2018 -0700
Merge branch 'master' into http
commit 4a9d1a56d463567ad155a58fc39f5b24e2636120
Merge: 4dd46f2 431006f
Author: John Wiegley <johnw@newartisans.com>
Date: Wed May 2 14:20:57 2018 -0700
Merge branch 'master' into http
commit 4dd46f21e3f594c4f7ae5bee8412a7841e566d4c
Author: Ian-Woo Kim <ianwookim@gmail.com>
Date: Sun Apr 29 12:51:11 2018 -0700
generated hnix.cabal
commit c87ae993fb7dbb1117f03133862799e1549c4259
Author: Ian-Woo Kim <ianwookim@gmail.com>
Date: Sat Apr 28 16:55:11 2018 -0700
remove dep from hnix.cabal
commit 0bb8856c8759ad3c67a0b4eb1d26b6195da82667
Author: Ian-Woo Kim <ianwookim@gmail.com>
Date: Sat Apr 28 16:53:54 2018 -0700
remove http-client stuff from default.nix
commit d298756a2ba4376f8cb3c54fb723a00697e0821d
Author: Ian-Woo Kim <ianwookim@gmail.com>
Date: Sat Apr 28 15:49:59 2018 -0700
getURL is implemented for both http and https
commit a3d66c07a097aedb03f30bcc636fcb3d5717e1fe
Merge: c4cb48a a73eae5
Author: Ian-Woo Kim <ianwookim@gmail.com>
Date: Sat Apr 28 15:14:32 2018 -0700
Merge branch 'builtin2' into http
commit c4cb48a8a756e82fb7d389ff501b2a85001dba38
Author: Ian-Woo Kim <ianwookim@gmail.com>
Date: Sat Apr 28 15:13:25 2018 -0700
add getURL function
commit ff23fc18ed16075353a58725d7d08f41605a6070
Author: Ian-Woo Kim <ianwookim@gmail.com>
Date: Sat Apr 28 15:06:40 2018 -0700
use http-client-* instead of HTTP
commit fcbe40f3bea84607a9d7849a9f3d2fc3a6cb9bef
Author: Ian-Woo Kim <ianwookim@gmail.com>
Date: Sat Apr 28 14:58:07 2018 -0700
add HTTP
commit a73eae573a193dbb8361e03b584a6cd55e7c427a
Author: Ian-Woo Kim <ianwookim@gmail.com>
Date: Sat Apr 28 14:36:24 2018 -0700
implement fetchurl (as a copy of fetchTarball)
2018-05-02 21:38:39 -07:00
hsloan
c1561ea711
Implement builtins.currentTime
2018-05-02 21:32:00 -07:00
Alex Rozenshteyn
a355366f32
Add builtins.hasContext
2018-05-02 20:54:51 -07:00
John Wiegley
fe4629c3a4
More fixes to type inference
2018-05-02 15:08:53 -07:00
John Wiegley
a2e9334648
Factor out a staticImport function in Reduce.hs
2018-05-02 15:08:53 -07:00
John Wiegley
593992eb26
Merge branch 'master' into merge257
2018-05-02 14:24:57 -07:00
John Wiegley
555ce952ae
Merge pull request #285 from jwiegley/pending
...
Further corrections to type checking functions that take sets
2018-05-02 14:24:05 -07:00
John Wiegley
fe0357c572
Merge branch 'master' into merge257
2018-05-02 14:22:47 -07:00
John Wiegley
431006f524
Merge pull request #263 from gdevanla/master
...
add TopLevel placeHolder to builtins module
2018-05-02 14:19:10 -07:00
John Wiegley
0b74225bcb
Update Builtins.hs
2018-05-02 14:18:45 -07:00
gb
b07927a136
cleanup exec'
2018-05-02 14:10:49 -07:00
gb
6aeaba6209
adding builtins.exec
2018-05-02 13:58:56 -07:00
gb
d07888ed35
implemented builtins.trace
2018-05-02 13:58:30 -07:00
John Wiegley
18fc312112
Further corrections to type checking functions that take sets
2018-05-02 13:46:32 -07:00
John Wiegley
8538859230
Work on type inference for functions that take attr sets
2018-05-01 21:50:50 -04:00
John Wiegley
49e71222c3
Instead of EqConstOneOf, use TMany which is more fundamental
...
This allows both multiple function types, or a function that might return one
of many possible values, for example.
2018-05-01 21:04:10 -04:00
John Wiegley
ee8ba02dfd
Much more work on type inference; report multiple possible types
...
This is needed because of a function like this:
x: y: x + y
This is polymorphic, but over exactly four possibilities:
int -> int
int -> float
float -> int
float -> float
The "type" is really the combination of the four, since we don't yet have a
mechanism like type classes, which could have rendered this as a single type:
(Num a, Num b) => (x :: a): (y :: b): x + y
Going this route will require that we manage an implicit type classes
hierarchy, and perform unification on constraints as well as types. In the
interim, I just lifted the unification algorithm into the LogicT monad, and
use back-tracking search to find all the possible types an expression could
be.
The main problem with using LogicT, however, is that there are many types
it *couldn't* be, and in the case of a unification failure, it not yet clear
what the type should have been. For example:
"foo" + 2
Should the string have been a float or an integer or a path? Or should the
integer have been a string? So for now we report all the possibilities, since
it's not obvious which part of the expression is in error:
hnix: Type error: TypeInferenceErrors
[ UnificationFail (TCon "integer") (TCon "string")
, UnificationFail (TCon "string") (TCon "path")
, UnificationFail (TCon "string") (TCon "float")
, UnificationFail (TCon "string") (TCon "integer")
]
This is a case where enumerating types rather than trying to make them compact
using type classes might actually be an improvement, since the errors here
would have been only slightly less numerous:
string != Num a => a
string != path
integer != string
Clearly a better reporting mechanism is needed to clarify these problems. I
can imagine that in an IDE, there would be a squiggly under both sides of the
expression, each suggesting the type that was expected for that argument under
the assumption that the other argument (the one not be inspected) was the
correct one.
2018-05-01 20:49:10 -04:00
John Wiegley
18063e5acd
Importing Control.Monad.ST.Unsafe was not needed in Lint.hs
2018-05-01 20:34:48 -04:00
John Wiegley
acda2b3337
Use Exception rather than Frame, reduce constraints imposed by forceThunk
2018-05-01 20:34:41 -04:00
John Wiegley
f662d44c56
Hindley-Milner is close to working, just the MonadFix problem again
2018-04-30 21:52:25 -04:00
John Wiegley
45beddb7d7
Revise the arguments to MonadEval.evalString
2018-04-30 21:48:45 -04:00
John Wiegley
107dd82401
Weaken the constraints required by MonadEval
2018-04-30 21:48:45 -04:00
John Wiegley
f5038453ae
Add all of the Nix types to Nix.Type.Type
2018-04-30 21:48:45 -04:00
John Wiegley
a735d3ffb6
Add two new helper instances for Has
2018-04-30 21:48:45 -04:00
John Wiegley
3b738e3aa3
Relieve MonadEval of an unnecessary constraint
2018-04-30 21:48:45 -04:00
John Wiegley
b8307d2fb5
Initial version of the attribute finder, still needs tweaking
...
```
hnix -I nix=$PWD/data/nix/corepkgs --find \
--eval --expr "import $HOME/src/nix/nixpkgs {}" \
-A pkgs.haskellPackages
```
2018-04-30 21:48:45 -04:00
John Wiegley
fa25415cb7
When nix-instantiate fails, show the contents of stderr
2018-04-30 21:48:45 -04:00
John Wiegley
714c86adde
Make the thunk index parameter always available, if sometimes unused
2018-04-30 21:48:45 -04:00
John Wiegley
c934c690e3
Add attrsetGet helper function to Builtins.hs
2018-04-30 21:48:45 -04:00
John Wiegley
bdce698e36
Merge remote-tracking branch 'origin/pr/272'
2018-04-30 19:48:14 -04:00
John Wiegley
70acb77826
Merge branch 'master' into master
2018-04-29 18:02:46 -07:00
Guru Devanla
0268b5cf2b
remove extra spaces
2018-04-29 15:15:38 -07:00
Guru Devanla
eefc698bde
fix type of builtin.placeholder, add tests
2018-04-29 15:10:52 -07:00
Tim Sears
a49a424813
add builtins.mul, issue #250
2018-04-29 11:43:06 -07:00
Guru Devanla
2819ccbc8f
merged from origin
2018-04-29 10:37:16 -07:00
John Wiegley
005fe53733
Merge branch 'master' into easy-builtins
2018-04-29 10:28:13 -07:00
Alex Rozenshteyn
f3cad22e1e
Add builtins.true, builtins.false, and builtins.null
2018-04-29 10:07:37 -07:00
John Wiegley
829e0a63ab
Merge branch 'master' into master
2018-04-28 23:32:18 -07:00
John Wiegley
ab12d3bc83
Add a missing call to const
2018-04-28 18:39:56 -07:00
John Wiegley
6ddad11de5
Further guards against using ghc-datasize on GHC 8.4
2018-04-28 18:38:43 -07:00
John Wiegley
b78a44f1c7
Merge branch 'master' into simplify-builtins
2018-04-28 18:33:24 -07:00
John Wiegley
7f01cc8bb8
valueSize will not work with GHC 8.4 right now
...
ghc-heap-view hasn't been updated yet
2018-04-28 18:29:37 -07:00
John Wiegley
86b0dad65b
Define builtins.valueSize
2018-04-28 18:29:25 -07:00
John Wiegley
1cf1a5410e
Fix an hlint warning
2018-04-28 17:13:05 -07:00
John Wiegley
b24598b3a3
Add top-level __valueSize
...
Fixes #253
2018-04-28 17:12:32 -07:00
Shea Levy
674601ad39
builtins: Simplify generating the full builtins list.
2018-04-28 16:54:16 -07:00
John Wiegley
9f41a1938f
Merge branch 'master' into master
2018-04-28 16:35:10 -07:00
John Wiegley
0b6c52eb45
Remove all warnings
2018-04-28 16:26:32 -07:00
John Wiegley
a4f24f148f
Comment out a function not currently being used
2018-04-28 16:26:32 -07:00
John Wiegley
100c41db6d
Run the repl in the same MonadNix environment as Main.hs
...
Fixes #204
2018-04-28 16:26:32 -07:00
John Wiegley
1093c1ff6e
Merge pull request #261 from timsears/master
...
allow floating point values to be used with builtins.add. Fixes Issue…
2018-04-28 15:57:37 -07:00
Guru Devanla
dc384ee90f
Merge branch 'master' of https://github.com/haskell-nix/hnix
2018-04-28 15:36:38 -07:00
Guru Devanla
8ba302265b
add builtins.placeHolder to builtins
2018-04-28 15:35:01 -07:00
Alex Rozenshteyn
6734e3b73f
Add builtins.storeDir
2018-04-28 15:28:57 -07:00
Tim Sears
43bb8d0558
allow floating point values to be used with builtins.add. Fixes Issue #207 .
2018-04-28 15:22:28 -07:00
John Wiegley
1c5044da60
Finish builtins.genericClosure
...
Fixes #144
2018-04-28 15:18:45 -07:00
John Wiegley
3b304561f7
Make div dispatch on value types
2018-04-28 15:01:12 -07:00
John Wiegley
d0b5ccde77
Initial implementation of genericClosure
2018-04-28 14:56:20 -07:00
John Wiegley
49953737cc
Merge pull request #256 from wavewave/builtin
...
add div
2018-04-28 14:55:21 -07:00
Ian-Woo Kim
aa506e8555
add div
2018-04-28 14:01:14 -07:00
John Wiegley
f722639b01
Minor correction to the builtins list
2018-04-28 13:49:34 -07:00
John Wiegley
ec50146a25
Add a comment
2018-04-28 13:49:22 -07:00
John Wiegley
6946e713c0
For every builtin name, also an alias __name at toplevel
...
Relates to #243
2018-04-28 07:08:08 -07:00
John Wiegley
e68a94b955
Remove some commented out code
2018-04-28 06:57:46 -07:00
John Wiegley
7282d7c153
Define builtins.langVersion == 5 (integer), add a matching test with Nix
...
Fixes #235
2018-04-27 20:55:03 -07:00
John Wiegley
4947f05a14
Make builtins.nixPath a synonym for __nixPath
...
Fixes #238
2018-04-27 20:52:09 -07:00
John Wiegley
a9c9d8bb10
Create new renderExpr and renderValue helper functions
2018-04-27 20:36:38 -07:00
John Wiegley
0a21eb755c
A minor naming change for consistency
2018-04-27 20:08:47 -07:00
John Wiegley
ecdb798560
Show the position when an assertion fails
2018-04-27 16:36:24 -07:00
John Wiegley
1e2bd9eb2f
Silence a warning
2018-04-26 22:30:42 -07:00
John Wiegley
05b96eda5c
Anything any two objects to be compared for equality or inequality
2018-04-26 22:30:32 -07:00
John Wiegley
6c2149f767
Remove code TODOs, which have been changed into GitHub issues
2018-04-26 17:13:22 -07:00
John Wiegley
95c2ba52c9
Only gather thunk provenance if --thunks had been specified
2018-04-26 15:58:59 -07:00
John Wiegley
9cfd9f5781
Cache imports, to ensure they only happen once
...
This way, even if a function imports the same file multiple times, we only do
it once.
Note that the REPL will need a way to expunge things from this cache if they
are changed during the session, by listening to filesystem notifications.
2018-04-25 21:02:53 -07:00
John Wiegley
defc5ed66d
Add a new --values option for selectively displaying value provenance
2018-04-25 20:49:16 -07:00
John Wiegley
5f4a4096cf
Whitespace fix
2018-04-25 20:46:46 -07:00
John Wiegley
49eea12262
Use fromValue defensively wherever possible in Builtins.hs
2018-04-25 20:46:31 -07:00
John Wiegley
ee60ef6435
Fix printing of recursive thunks in Pretty.hs
2018-04-25 20:30:44 -07:00
John Wiegley
e8da0391e1
Fix an issue where evaluation was unintentionally too deep
...
Fixes #193
2018-04-25 20:23:10 -07:00
John Wiegley
56d72cacf9
Cleanup coerceToString and its use
2018-04-25 20:22:48 -07:00
John Wiegley
3ddba86a78
Add a comment about future work to Frame.hs
2018-04-25 20:22:40 -07:00
John Wiegley
7759d171e8
Add new convertNix function in Convert.hs
2018-04-25 20:22:31 -07:00
John Wiegley
bb361afa3c
Add an improvement to the reduction code for later
2018-04-25 14:58:16 -07:00
John Wiegley
05ca87a732
Several improvements to error reporting; add new --thunks option
2018-04-25 13:00:41 -07:00
John Wiegley
19973d7529
Drop inherit (null) ... during reduction; add a comment
2018-04-25 01:10:40 -07:00
John Wiegley
7af4c13455
Some minor improvements to evalSelect
2018-04-25 01:10:25 -07:00
John Wiegley
cfdb314f9e
Simplify foldl'_ a bit
2018-04-25 01:10:15 -07:00
John Wiegley
35b1071665
A few more provenance fixes, but more to come
2018-04-24 23:24:26 -07:00
John Wiegley
68d81dd57c
More work on provenance reporting
2018-04-24 23:09:43 -07:00
John Wiegley
b83ccb40f3
Add provenance to thunks, and allow provenance to stack
2018-04-24 21:41:23 -07:00
John Wiegley
2de8c7cf84
More fixes to error reporting
2018-04-24 12:25:40 -07:00
John Wiegley
01bcb86d3f
Further improvements to error rendering, but not all done yet
2018-04-24 11:12:20 -07:00
John Wiegley
9864a8c7a5
Rework the way that info frames and error are handled
...
There is still work to be done to render the new "typed frames", and to
convert all the current string based frame into typed frames. This will pave
the way forward to smarter error messages that can be browsed in intelligent
environments like Emacs and the browser.
2018-04-24 02:15:28 -07:00
John Wiegley
caf0a4a6a2
Add support for building with GHC 8.4.1, also on Travis
2018-04-23 16:39:37 -07:00
John Wiegley
2aa418d60a
Record contextual provenance more fully in some places
2018-04-23 10:18:47 -07:00
John Wiegley
596f2d160b
Merge pull request #191 from mightybyte/sort-builtins
...
Sort the builtins for easy comparison
2018-04-23 10:08:45 -07:00
John Wiegley
4ff0c483bf
Improve printing of provenance information, add more info
2018-04-23 10:06:49 -07:00
John Wiegley
3cf02e3902
Track value provenance during evaluation
2018-04-22 14:33:38 -07:00
John Wiegley
a63d3ac30d
Remove some commented out code
2018-04-22 14:33:38 -07:00
Doug Beardsley
26013d2e3b
Sort the builtins for easy comparison
2018-04-22 13:48:55 -04:00
John Wiegley
c7b6465016
Merge pull request #190 from domenkozar/pretty-tilde
2018-04-22 09:24:42 -07:00