* Add backwards index overload for `[]` for JsonNode
* Add since
Co-authored-by: flywind <43030857+xflywind@users.noreply.github.com>
* Add docs, example, and changelog
Co-authored-by: flywind <43030857+xflywind@users.noreply.github.com>
* add sequtils to prelude
i would argue that sequtils is used just as often as the other imports in prelude, and it'd be nice for it to be included.
* updated doc comment to add sequtils
* added sequtils import to changelog
* O(1) concatenation of singly- and doubly linked lists.
There is also new `toSinglyLinkedList` and `toDoublyLinkedList`
functions for conversion from `openArray`s, similarly
to `toHashSet` or `toTable`.
* Add `sequtils` import to runnable examples with `toSeq`.
* Added missing call to runnable examples.
* Add .since annotation, changelog, and tests.
* Rename `lists.concat` as an overload to `lists.append`.
* Renamed `append` to `add` in lists.
* Remove faulty `add` for `DoublyLinkedList`s.
* Improved tests for lists.
* `lists.add` moves the second list; added `lists.copy` for shallow copy.
* More tests for `lists.add` and `lists.copy`.
* More compact tests for lists with templates.
* List concatenation with copying (`add`) and moving (tentatively `addMove`)
* Renamed `addMove` to `addMoved`; renamed arguments according to the style guide.
* Added extended example to `lists.copy`.
* Corrected .since annotations to 1.6
* Add .since annotation, changelog, and tests.
* Rename `lists.concat` as an overload to `lists.append`.
* Renamed `append` to `add` in lists.
* Remove faulty `add` for `DoublyLinkedList`s.
* `lists.add` moves the second list; added `lists.copy` for shallow copy.
* More tests for `lists.add` and `lists.copy`.
* List concatenation with copying (`add`) and moving (tentatively `addMove`)
* Renamed `addMove` to `addMoved`; renamed arguments according to the style guide.
* Since declarations changed to (1,5,1).
* Add .since annotation, changelog, and tests.
* Rename `lists.concat` as an overload to `lists.append`.
* Renamed `append` to `add` in lists.
* Remove faulty `add` for `DoublyLinkedList`s.
* `lists.add` moves the second list; added `lists.copy` for shallow copy.
* More tests for `lists.add` and `lists.copy`.
* List concatenation with copying (`add`) and moving (tentatively `addMove`)
* Renamed `addMove` to `addMoved`; renamed arguments according to the style guide.
* Changelog update.
* Fix rebasing errors.
* Self-adding with `lists.addMove` results in a cycle now.
Added some extra tests.
* Make 'echo' raise IOError when fwrite/fflush fail
* Fix fwrite return value comparison
* Add test for echo raising error and don't fail to release locks in echo
* Fix exitcode expectation
* Make 'echo' raise IOError on Windows if it fails
* Add nimLegacyEchoNoRaise for prior no-IOError echo behavior
* Use checkErrMaybe template
* fix#15939, fix#15464 VM now supports `addr(mystring[ind])` (index + index assignment), var char return etc
* cleanups
* cstring tests
* add test for bug #15464
* improve test coverage
* ORC: prepare for another patent-pending optimization
* bugfix
* '=copy' for refs can take a cyclic parameter for more ORC optimizations
* ORC: exploit the common 'it = it.next' pattern
* can't hurt to check for nil
* use an algorithm that is not obviously broken
* restore the test case
* final cleanups for --gc:orc
* doAssertRaises now correctly handles foreign exceptions; now shows which exception is raised on mismatch
* nimscript now handles `Exception as e`
* remove catch-all doAssertRaises overload from this PR
Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* new: `nim -i cmd`
* rename -i to -e (for eval); consistent with majority of other programing languages
* `nim e -e:cmd` now works; bugfix: `echo cmd | nim e -` now works
* honor --betterRun
* address comments
* --eval alias for -e (replaces undocumented --eval which was a noop)
* --eval now defaults to e (nimscript) instead of r
* address comment: remove -e, only keep --eval
* address comment
* fixup
* Update compiler/nimconf.nim
Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
Add a macro `enumLen` which is used to determine the number of items in
an enumeration type to the `typetraits.nim` module. Also, add unit tests
for it in the `ttypetraits.nim` module.
Related to nimlang/Nim#15824
Make `requiresInit` pragma to work for distinct types in addition to
objects. Tagging of distinct types with `requiresInit` pragma was
already supported, but its impact wasn't applied. Now its behavior when
applied on distinct types is as follows.
Given the following distinct type definitions:
```nim
type
DistinctObject {.requiresInit, borrow: `.`.} = distinct MyObject
DistinctString {.requiresInit.} = distinct string
```
The following code blocks will fail to compile:
```nim
var foo: DistinctFoo
foo.x = "test"
doAssert foo.x == "test"
```
```nim
var s: DistinctString
s = "test"
doAssert s == "test"
```
But these ones will compile successfully:
```nim
let foo = DistinctFoo(Foo(x: "test"))
doAssert foo.x == "test"
```
```nim
let s = "test"
doAssert s == "test"
```
* add parseEnumRange
* fix runnable example
* update changelog
* use parseEnumRange in compiler
* reorganise code
* add changelog, make single normalizer argument
* * Add handle to dup and dup2 posix as duplicate and duplicateTo in std/ioutils.
* Added small test & changelog entry
* Fixed import in tioutils
removed when isMainModule
* * Nest test inside block. Rename proc var -> let in captureStdout
* Renamed tmpfile to iotuils.txt
* Added block: # duplicate, duplicateTo
* Improved docstring
* Clean non-idiomatic code
* Added runnable examples
* rm 2 trailing space in expected output
* Made syntax prettier
* Runnable example: file in getTempDir()
* Tmp -> Temp
* Fixed runnableExamples on windows