Commit Graph

121 Commits

Author SHA1 Message Date
Zahary Karadjov 03e9469b1d
Rename stew/errorhandling to stew/eh 2020-05-23 20:18:42 +03:00
Zahary Karadjov 8e1755c4e1
Add support for Result types; Implement Try and either 2020-05-23 20:18:42 +03:00
Zahary Karadjov 8fd43269dc
Teach chk about Result 2020-05-23 20:18:41 +03:00
Zahary Karadjov 12a6cc2027
Initial work on the error handling proposal
The commit also adds a facility for writing the generated macro
output to a file. It also introduces a new module named `results`
that should eventually replace all usages of `import result`.
2020-05-23 20:18:41 +03:00
Zahary Karadjov 9a2a542b9f
Add dumpMacroResults 2020-05-23 20:18:20 +03:00
Zahary Karadjov f003557674
typedParams will now handle parameters with pragmas 2020-05-23 20:12:56 +03:00
Zahary Karadjov a695d9e7bd
Add shims/macros.getCustomPragmaFixed 2020-05-20 13:42:29 +03:00
andri lim 10e39dcfe5
Merge pull request #39 from rockcavera/master
fixes for `-d:swapBytesBuiltin --cc:vcc`
2020-05-20 10:23:28 +07:00
rockcavera 2218717cf6
fixes for `-d:swapBytesBuiltin --cc:vcc`
renamed the `builtin_bswapT` procedures of the vcc compiler to `swapBytesBuiltin`, to then work correctly with `-d:swapBytesBuiltin --cc:vcc`
2020-05-19 21:58:46 -03:00
Zahary Karadjov d0f5be4971
Fix a compilation error when using a 32-bit varint parser 2020-05-12 22:59:46 +03:00
Zahary Karadjov c500d3dda1
Some renames to cater to the latest FastStreams API 2020-05-12 15:02:06 +03:00
Giovanni Petrantoni 5fa6bb2742 Add a note about compiler crash with raises pragma (results) 2020-05-12 19:37:15 +09:00
Jacek Sieka 21bcf97e26
Remove `ranges` from readme
deprecated
2020-05-08 21:15:01 +02:00
Jacek Sieka f125f6e8d1 space 2020-05-08 18:54:36 +03:00
Jacek Sieka 2d9226464d heterogenous `or`
Useful for translating `error` results
2020-05-08 18:54:36 +03:00
Jacek Sieka 638e7acc8e
deprecate ranges (#31)
Without lifetime tracking, ranges pose a number of issues with regards
to memory safety - use openArray instead which is limited but safe.

In its present form, ranges take a copy of whatever is passed to them
which obscures the copies that they take, leading to misleading and slow
code.

If openArray is not applicable, simply do a seq copy - it's fine and
really doesn't matter in 95% of all cases, then profile and use other
techniques where needed.
2020-05-07 07:11:43 +02:00
Jacek Sieka 720f1a254d
byteutils: compile-time to/fromBytes (#35) 2020-05-06 15:51:07 +02:00
Jacek Sieka 8065e36c5a
results: fix non-void [] overload 2020-04-23 06:46:10 +02:00
Zahary Karadjov df7f2e7ed5
Fix a typo [skip ci] 2020-04-22 16:39:37 +03:00
Zahary Karadjov 1eed7a72b7
Make any accidental "run-time" usage of declval an error 2020-04-22 16:34:11 +03:00
Zahary Karadjov 4acc3866ed
Adds results.Opt
It turned out that Nim's Option type is broken for `not nil` and
`requiresInit` types. It will report an udesired warning due to
the way `none` is defined. The `Result` type doesn't suffer from
this problem, so I've transitioned some APIs in NBC to use the
new `results.Opt[T]` type (alias of `Result[T, void]`).

Perhaps we should renamed `Result` to `Res` to make the naming
more consistent and to allow the code to more easily fit in the
80 character per-line budget.
2020-04-22 15:43:26 +03:00
Zahary Karadjov 9a0cded592
Add objects.declval 2020-04-22 15:41:42 +03:00
Jacek Sieka ff755bbf75
change get/[] to always raise Defect and tryGet to do eh bridge mode (#30)
* also sprinkle mixin randomly across the codebase
2020-04-16 18:23:12 +02:00
Zahary Karadjov 8528ce28b4
Writing to FastStreams can have side-effects 2020-04-14 19:36:15 +03:00
Jacek Sieka 805ef4f1b2
result: cleanups
* fix defect raising without `$`
* doc updates
* better `?` that doesn't cause raises effect (it should, because of
FieldError but...)
2020-04-11 16:22:37 +02:00
Jacek Sieka 5512e89d4c a few more cleanups
* add raises to endians2, bitops2 since they sometimes call C functions
2020-04-10 22:40:00 +03:00
Jacek Sieka 87ccf8e66b hex byte: raise instead of assert on hex-to-byte odd lengths 2020-04-10 22:40:00 +03:00
Zahary Karadjov 3e1fa974a4
Use a simpler recursion in recordFields as it's no longer an iterator 2020-04-09 20:39:02 +03:00
Jacek Sieka b06a5b6e32
result -> results (#27) 2020-04-07 11:43:07 +02:00
Jacek Sieka 55c2ec8977 result: more performance notes 2020-04-06 15:53:53 +03:00
Jacek Sieka 4d20b25c02 result: fix and/or template evaluation, add perf notes 2020-04-06 15:53:53 +03:00
Jacek Sieka 9414202d53 result: `and` can deal with heterogenous values 2020-04-04 00:28:46 +03:00
Jacek Sieka 86739f99c4
Use defect for normal errors, document exception bridge mode (#20)
Co-authored-by: Zahary Karadjov <zahary@gmail.com>
2020-04-02 11:39:11 +02:00
Jacek Sieka 4201f46750
Update README.md 2020-04-01 14:22:21 +02:00
Jacek Sieka fe074766f1
Update README.md 2020-04-01 14:22:04 +02:00
Jacek Sieka 7287fffebe
result: add `expect` helper (#23)
* result: add `expect` helper

* result: use explicit conversion in mapConvert
2020-04-01 14:16:20 +02:00
Jacek Sieka d622c07a08
result: cleanups (#22)
* fix ResultError type
* add/fix documentation
* clean up raises (in preparation for better Defect handling)
* fix toException mixin
* work around compiler bug with more explicit types
* fix capture exception type
* fix result type on `?`
2020-03-30 22:49:13 +02:00
Ștefan Talpalaru 4477f45c40
Merge branch 'basetype' 2020-03-30 19:56:37 +02:00
Ștefan Talpalaru 09e55cd375
stew/objects: add baseType() 2020-03-29 17:34:45 +02:00
Zahary Karadjov 989c33a82b
Take advantage of fixes in Nim 1.2 2020-03-25 17:52:09 +02:00
Jacek Sieka 76beeb769e
fix fromBytes for zero length arrays 2020-03-07 23:29:46 +01:00
Jacek Sieka ca8fb7ebd0 add slice assignment for openarray 2020-03-05 12:11:25 +02:00
Jacek Sieka 598fe151f8 non-cast implementation of toBytes, add fromBytes 2020-03-05 12:11:25 +02:00
Zahary Karadjov 50562b515a
Add bitseqs.bitsLen(openarray) 2020-01-29 02:42:50 +02:00
Jacek Sieka f5be0ab63a
add nim-result 2020-01-23 17:35:30 +01:00
Jacek Sieka 1edeabb453
Renames (#17)
* renames and warning fixes
* gitignore: nimcache
2019-12-20 13:23:30 +01:00
Jacek Sieka 898f4f47e3
Merge pull request #13 from status-im/bitsetting
set, clear, toggle and change bits
2019-12-20 12:55:41 +01:00
Jacek Sieka a36df61d2b
set, clear, toggle and change bits
* use standard bit manipulation naming
* fix signed overflow on large shifts
* add toggle
* add smoke tests
* branch-free changeBit
2019-12-20 12:49:20 +01:00
Jacek Sieka d8c2a64055
Merge pull request #16 from status-im/comparebyte
byteutils: lexicographical less than
2019-12-20 12:48:10 +01:00
Jacek Sieka 9c18a1cc55
byteutils: lexicographical less than 2019-12-19 13:29:38 +01:00