aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/value-to-json.cc
AgeCommit message (Collapse)Author
2022-03-30libexpr: Throw the correct error in toJSONDaniel Pauls
BaseError::addTrace(...) returns a BaseError, but we want to throw a TypeError instead. Fixes #6336.
2021-11-25Support range-based for loop over list valuesEelco Dolstra
2021-10-27toJSON: improve pos accuracy, add traceShay Bergmann
2021-10-26toJSON: pass pos in case of a list as wellShay Bergmann
2021-10-25toJSON: report error position for fancier outputShay Bergmann
Given flake: ```nix { description = "nix json error provenance"; inputs = {}; outputs = { self }: { jsonFunction = _: "function"; json = builtins.toJSON (_: "function"); }; } ``` - Before: ```console ❯ nix eval --json .#jsonFunction error: cannot convert a function to JSON ``` - After: ```console ❯ nix eval --json .#jsonFunction error: cannot convert a function to JSON at /nix/store/b7imf1c2j4jnkg3ys7fsfbj02s5j0i4f-source/testflake/flake.nix:4:5: 3| outputs = { self }: { 4| jsonFunction = _: "function"; | ^ 5| json = builtins.toJSON (_: "function"); ```
2020-12-17Rename Value::normalType() -> Value::type()Silvan Mosberger
2020-12-12Use Value::normalType on all forced values instead of Value::typeSilvan Mosberger
2020-04-21remove 'format' from Error constructor callsBen Burdette
2019-10-27builtins.toJSON: fix __toString usageRobin Gloster
2016-08-29nix path-info: Add --json flagEelco Dolstra
Also, factor out JSON generation from value-to-json.{cc,hh}, and support producing indented JSON.
2016-01-05First hit at providing support for floats in the language.Christian Theune
2015-07-23Optimize small listsEelco Dolstra
The value pointers of lists with 1 or 2 elements are now stored in the list value itself. In particular, this makes the "concatMap (x: if cond then [(f x)] else [])" idiom cheaper.
2015-07-17OCD: foreach -> C++11 ranged forEelco Dolstra
2014-12-02Make all ExternalValueBase functions constShea Levy
2014-12-02Allow external code using libnixexpr to add typesShea Levy
Code that links to libnixexpr (e.g. plugins loaded with importNative, or nix-exec) may want to provide custom value types and operations on values of those types. For example, nix-exec is currently using sets where a custom IO value type would be more appropriate. This commit provides a generic hook for such types in the form of tExternal and the ExternalBase virtual class, which contains all functions necessary for libnixexpr's type-polymorphic functions (e.g. `showType`) to be implemented.
2014-09-30Support control characters in JSON outputEelco Dolstra
2013-11-19Refactor JSON outputEelco Dolstra
2013-11-19Add a toJSON primopEelco Dolstra