summary refs log tree commit diff stats
path: root/lib/core
Commit message (Collapse)AuthorAgeFilesLines
* deprecate `owner` from `std/macros` (#23828)ringabout2024-07-121-1/+1
|
* fixes #23556; typeinfo.extendSeq generates random values in ORC (#23557)ringabout2024-05-031-2/+5
| | | | | fixes #23556 It should somehow handle default fields in the future
* fix spurious indent and newlines in rendering of nkRecList (#23121)metagn2023-12-241-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rendering of `nkRecList` produces an indent and adds a new line at the end. However for things like case object `of`/`else` branches or `when` branches this is already done, so this produces 2 indents and an extra new line. Instead, just add an indent in the place where the indent that `nkRecList` produces is needed, for the rendering of the final node of `nkObjectTy`. There doesn't seem to be a need to add the newline. Before: ```nim case x*: bool of true: y*: int of false: nil ``` After: ```nim case x*: bool of true: y*: int of false: nil ```
* allow non var deinit for locks and conds: alternative way (#23099)ringabout2023-12-192-3/+3
| | | alternative to https://github.com/nim-lang/Nim/pull/23092
* Mark `macros.error` as `.noreturn.` (#23081)Jake Leahy2023-12-171-1/+6
| | | | | | | | | | | | | | | Closes #14329 Marks `macros.error` as `.noreturn` so that it can be used in expressions. This also fixes the issue that occurred in #19659 where a stmt that could be an expression (Due to having `discardable` procs at the end of other branches) would believe a `noreturn` proc is returning the same type e.g. ```nim proc bar(): int {.discardable.} = discard if true: bar() else: quit(0) # Says that quit is of type `int` and needs to be used/discarded except it actually has no return type ```
* complete std prefixes for stdlib (#22887)ringabout2023-10-301-1/+1
| | | | follow up https://github.com/nim-lang/Nim/pull/22851 follow up https://github.com/nim-lang/Nim/pull/22873
* Markdown code blocks migration part 9 (#22506)Amjad Ben Hedhili2023-08-191-14/+14
| | | | | * Markdown code blocks migration part 9 * fix [skip ci]
* `BackwardsIndex` overload for `CacheSeq.[]` (#22043)Jake Leahy2023-06-101-0/+13
| | | | | | | | | * Add `BackwardsIndex` support for `CacheSeq` * Add changelog entry --------- Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* just set CallNodes = nnkCallKinds, follows up #21829 (#21833)metagn2023-05-111-2/+1
| | | These sets are now equal
* Add nnkHiddenCallConv to nnkCallKinds (#21781) (#21829)Matt Wilson2023-05-111-1/+3
|
* macros: Extend treeTraverse intVal range to nnkUInt64Lit (#21597)chmod2222023-04-011-0/+2
| | | | | | | | | * Extend intVal range to nnkUInt64Lit Fixes #21593 * Properly cast intVal as unsigned * Add testcase for #21593
* Add `contains` to `std/macrocache` (#21304)Jake Leahy2023-02-011-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add test cases * Implement contains for CacheSeq * Implement contains for CacheTable * Fix implementation of hasKey * Remove contains for CacheSeq Fix runnable examples I was accidently using --doccmd:skip so I didn't spot the failure locally * Implement hasKey as a VM callback instead of magic * Implement suggestions from PR Co-Authored-By: ringabout <ringabout@users.noreply.github.com> * Update lib/core/macrocache.nim --------- Co-authored-by: ringabout <ringabout@users.noreply.github.com> Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com>
* Fix getting custom pragma from generic object (#20481)Jake Leahy2023-01-111-1/+1
| | | | | | | | | | | * Merge devel Add another test case * Fix test Use getCustomPragmaVal instead of hasCustomPragma Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>
* docgen: implement cross-document links (#20990)Andrey Makarov2023-01-041-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * docgen: implement cross-document links Fully implements https://github.com/nim-lang/RFCs/issues/125 Follow-up of: https://github.com/nim-lang/Nim/pull/18642 (for internal links) and https://github.com/nim-lang/Nim/issues/20127. Overview -------- Explicit import-like directive is required, called `.. importdoc::`. (the syntax is % RST, Markdown will use it for a while). Then one can reference any symbols/headings/anchors, as if they were in the local file (but they will be prefixed with a module name or markup document in link text). It's possible to reference anything from anywhere (any direction in `.nim`/`.md`/`.rst` files). See `doc/docgen.md` for full description. Working is based on `.idx` files, hence one needs to generate all `.idx` beforehand. A dedicated option `--index:only` is introduced (and a separate stage for `--index:only` is added to `kochdocs.nim`). Performance note ---------------- Full run for `./koch docs` now takes 185% of the time before this PR. (After: 315 s, before: 170 s on my PC). All the time seems to be spent on `--index:only` run, which takes almost as much (85%) of normal doc run -- it seems that most time is spent on file parsing, turning off HTML generation phase has not helped much. (One could avoid it by specifying list of files that can be referenced and pre-processing only them. But it can become error-prone and I assume that these linke will be **everywhere** in the repository anyway, especially considering https://github.com/nim-lang/RFCs/issues/478. So every `.nim`/`.md` file is processed for `.idx` first). But that's all without significant part of repository converted to cross-module auto links. To estimate impact I checked the time for `doc`ing a few files (after all indexes have been generated), and everywhere difference was **negligible**. E.g. for `lib/std/private/osfiles.nim` that `importdoc`s large `os.idx` and hence should have been a case with relatively large performance impact, but: * After: 0.59 s. * Before: 0.59 s. So Nim compiler works so slow that doc part basically does not matter :-) Testing ------- 1) added `extlinks` test to `nimdoc/` 2) checked that `theindex.html` is still correct 2) fixed broken auto-links for modules that were derived from `os.nim` by adding appropriate ``importdoc`` Implementation note ------------------- Parsing and formating of `.idx` entries is moved into a dedicated `rstidx.nim` module from `rstgen.nim`. `.idx` file format changed: * fields are not escaped in most cases because we need original strings for referencing, not HTML ones (the exception is linkTitle for titles and headings). Escaping happens later -- on the stage of `rstgen` buildIndex, etc. * all lines have fixed number of columns 6 * added discriminator tag as a first column, it always allows distinguish Nim/markup entries, titles/headings, etc. `rstgen` does not rely any more (in most cases) on ad-hoc logic to determine what type each entry is. * there is now always a title entry added at the first line. * add a line number as 6th column * linkTitle (4th) column has a different format: before it was like `module: funcName()`, now it's `proc funcName()`. (This format is also propagated to `theindex.html` and search results, I kept it that way since I like it more though it's discussible.) This column is what used for Nim symbols resolution. * also changed details on column format for headings and titles: "keyword" is original, "linkTitle" is HTML one * fix paths on Windows + more clear code * Update compiler/docgen.nim Co-authored-by: Andreas Rumpf <rumpf_a@web.de> * Handle .md and .nim paths uniformly in findRefFile * handle titles better + more comments * don't allow markup overwrite index title for .nim files Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* remove legacy code (#21134)ringabout2022-12-261-5/+4
| | | | | * remove legacy code * fixes
* Implement setLineInfo (#21153)Peter Munch-Ellingsen2022-12-221-0/+16
| | | | | * Implement setLineInfo * Add tests
* fix #12122 (#21096)Bung2022-12-161-2/+2
|
* macros.customPragmaNode: walk brackets on brackets (#21040)Emery Hemingway2022-12-081-5/+3
|
* move threads out of system (#20674)ringabout2022-10-292-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * move syslocks first * progress * clean up * go on * clean up * clean up * add imports syslocks * remove documentation * public deallocOsPages * fixes genode * fixes more * fixes boehmGC * cover more cases * fixes cyclic deps * fixes genode * cleanup * unpublic fields * cleanup * clean up
* fixes #20572 (#20585)Andreas Rumpf2022-10-171-1/+2
| | | | | * fixes #20572 * added a test case
* 'lock levels' are deprecated, now a noop (#20539)ringabout2022-10-111-2/+2
| | | | | * 'lock levels' are deprecated, now a noop * fixes tests
* out parameters: enforce that 'out' is only used as a parameter (#20510)Andreas Rumpf2022-10-071-1/+4
| | | | | | | * out parameters: enforce that 'out' is only used as a parameter * make tables.nim use 'out' parameters * better backwards compat
* moderate system cleanup & refactor (#20355)metagn2022-09-281-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * system refactor, move out 600 lines * compilation, slice, backwardsindex, misc_num moved out of system * some procs/types moved into arithmetics, basic_types * system no longer depends on syncio * some procs moved around to fit with their surroundings * make exceptions an import, old ops to misc_num * move instantiationInfo back * move back nim version, fix windows echo * include compilation * better docs for imported modules, fix unsigned ops also remove ze, ze64, toU8, toU16, toU32 with nimPreviewSlimSystem * fix terminal * workaround IC test & weird csize bug, changelog * move NimMajor etc back to compilation, rebase for CI * try ic fix * form single `indices`, slim out TaintedString, try fix IC * fix CI, update changelog, addQuitProc * fix CI * try fix CI * actually fix CI finally hopefully * Update lib/system/compilation.nim Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com> * update kochdocs * hopefully fix csize uses for slimsystem * fix tquit Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com>
* store full definition AST for consts, fix noRewrite (#20115)metagn2022-09-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | * continue #9582 for consts, close #9331, fix #20114 also move extractPragma to ast to pave the way for things like {.strdefine: "abc".} etc * changelog correctly * fix jsgen * update tgetimpl * fix sighashes * fix #19766, add comment about postfix * fix noRewrite LOL refs #16620 * fix changelog * fix destructors
* make more standard libraries work with `nimPreviewSlimSystem` (#20343)ringabout2022-09-271-0/+4
| | | | | | | | | | | | | | | | | | | | | | | * make more standard libraries work with `nimPreviewSlimSystem` * typo * part two * Delete specutils.nim * fixes more tests * more fixes * fixes tests * fixes three more tests * add formatfloat import * fix * last
* add docs to copyNimNode and copyNimTree (#20357)ringabout2022-09-161-2/+25
| | | | | | | | | * add docs to copyNimNode and copyNimTree * Apply suggestions from code review Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com> Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>
* give a deprecate warning when using `newPar` to construct tuple expressions ↵ringabout2022-09-061-1/+6
| | | | | | | | | (#20312) * error/deprecate when using `newPar` to construct tuple expressions * Update lib/core/macros.nim * fixes
* Implement Pandoc Markdown concise link extension (#20304)Andrey Makarov2022-09-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Implement Pandoc Markdown concise link extension This implements https://github.com/nim-lang/Nim/issues/20127. Besides reference to headings we also support doing references to Nim symbols inside Nim modules. Markdown: ``` Some heading ------------ Ref. [Some heading]. ``` Nim: ``` proc someFunction*() ... ... ## Ref. [someFunction] ``` This is substitution for RST syntax like `` `target`_ ``. All 3 syntax variants of extension from Pandoc Markdown are supported: `[target]`, `[target][]`, `[description][target]`. This PR also fixes clashes in existing files, particularly conflicts with RST footnote feature, which does not work with this PR (but there is a plan to adopt a popular [Markdown footnote extension](https://pandoc.org/MANUAL.html#footnotes) to make footnotes work). Also the PR fixes a bug that Markdown links did not work when `[...]` section had a line break. The implementation is straightforward since link resolution did not change w.r.t. RST implementation, it's almost only about new syntax addition. The only essential difference is a possibility to add a custom link description: form `[description][target]` which does not have an RST equivalent. * fix nim 1.0 gotcha
* Markdown code blocks part 6 (#20292)Andrey Makarov2022-08-311-85/+82
|
* move formatfloat out of system (#20195)ringabout2022-08-241-1/+1
| | | | | | | | | | | | | | | * move formatfloat out of system * fixes doc * Update changelog.md * careless * fixes * deprecate system/formatfloat * better handling
* fix #20067, fix #18976 [backport] (#20069)metagn2022-07-221-1/+3
|
* macros: make hasCustomPragma more permissive (#19747)ehmry2022-04-251-3/+5
| | | | Make hasCustomPragma return false rather than fail for invalid parameters.
* use two spaces indentation (#19696)flywind2022-04-071-14/+14
|
* add somes links to docs (#19668)flywind2022-04-011-5/+5
|
* move assertions out of system (#19599)flywind2022-03-231-0/+4
|
* Allow std/macros.params to work with nnkProcTy (#19563)Tanguy2022-02-251-4/+11
| | | | | * Allow std/macros.params to work with nnkProcTy * Add tests for proc params & pragma
* Clonkk fix2 11923 (#19451)Regis Caillaud2022-02-021-5/+22
| | | | | | | * fix nnkBracketExpr not compiling for getImpl on customPragmaNode * fix test import * fix alias not working with hasCustomPragmas
* Fix #11923 (#19427)Regis Caillaud2022-01-201-1/+6
| | | | | * Apply commit https://github.com/nim-lang/Nim/commit/5da931fe811717a45f2dd272ea6281979c3e8f0b that was never merged (was part of a bigger PR). Should fix issue #11932 * add a generic object for custom pragma
* update deprecated example (#19415)Hamid Bluri2022-01-181-1/+1
| | | `toNimIdent` proc is deprecated, so I replaced it with `ident` proc
* Extract runnables that specify `doccmd` (#19275) [backport:1.6]Jake Leahy2021-12-201-2/+2
|
* parseExpr/parseStmt accept filename, fixes #13540 (#19182)hlaaftana2021-11-241-6/+8
|
* `caseStmtMacros` no longer experimental, experimental manual refactor (#19173)hlaaftana2021-11-231-6/+1
| | | | | | | | | | | * `caseStmtMacros` no longer experimental, experimental manual refactor * Update doc/manual.rst * apply review suggestions * apply review Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* fix for #19020, credit to @ElegantBeef (#19021)Don-Duong Quach2021-11-031-1/+1
|
* fixes #18878 (#18883)Aditya Siram2021-09-251-1/+2
|
* fixes #14511 [backport:1.4] (#18732)Dankr4d2021-08-251-11/+10
| | | | | | | | | | | | | | | | | | | | | | | | | * fixes #14511 [backport:1.4] Signed-off-by: Dankr4d <dude569@freenet.de> * Replaced fix with code from alaviss, for better readability, with small changes. Signed-off-by: Dankr4d <dude569@freenet.de> * - Specified output in test. Signed-off-by: Dankr4d <dude569@freenet.de> * Replaced case in nnkRecCase with a simpler version, which just adds the last son. Signed-off-by: Dankr4d <dude569@freenet.de> * Update tests/macros/t14511.nim * Update tests/macros/t14511.nim Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* replace wrt with proper word (#18724)flywind2021-08-221-2/+4
| | | | | * what does wrt mean? * clarify
* fixes #18543 (#18601)Andreas Rumpf2021-07-271-176/+98
| | | | | * fixes #18543 * make tests green again
* sync with the same template from locks module (#18414)Antonis Geralis2021-07-101-1/+1
|
* strformat.fmt now supports non-literal const strings (#18274)Timothee Cour2021-06-181-1/+2
| | | Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* alternative to #18185 (#18206)flywind2021-06-071-1/+4
|