summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* fixes nimdoc warnings (#23110)ringabout2023-12-211-1/+1
|
* update action versions (#23109)ringabout2023-12-213-4/+4
|
* update mac CI to macos 12 (#23108)metagn2023-12-212-3/+3
| | | | | | closes #23107 Could also change to `macos-latest` but nothing else in CI uses `latest` OS versions.
* Don't crash for invalid toplevel parseStmt/Expr calls (#23089)Jake Leahy2023-12-193-4/+27
| | | | | | | | | | | | | | | This code will crash `check`/`nimsuggest` since the `ra` register is uninitialised ```nim import macros static: discard parseExpr("'") ``` Now it assigns an empty node so that it has something Testament changes were so I could properly write a test. It would pass even with a segfault since it could find the error
* fixes strictnotnil for func, method, converter (#23083)ringabout2023-12-191-1/+1
|
* fixes #18073; fixes #14730; document notnil is only applied to local … ↵ringabout2023-12-191-3/+7
| | | | | | | | (#23084) …symbols fixes #18073 fixes #14730
* allow non var deinit for locks and conds: alternative way (#23099)ringabout2023-12-193-17/+17
| | | alternative to https://github.com/nim-lang/Nim/pull/23092
* Revert "retain postfix node in type section typed AST" (#23098)metagn2023-12-194-29/+5
| | | Reverts nim-lang/Nim#23096
* retain postfix node in type section typed AST (#23096)metagn2023-12-184-5/+29
| | | fixes #22933
* add tuple unpacking changes to changelog (#23093)metagn2023-12-181-0/+19
| | | | | | closes #23042 Adds changes from #22537 and #22611 to changelog (I believe both are set for 2.2).
* allow replacing captured syms in macro calls in generics (#23091)metagn2023-12-185-7/+126
| | | | | | | | | | | | | | | | | | fixes #22605, separated from #22744 This marks symbol captures in macro calls in generic contexts as `nfOpenSym`, which means if there is a new symbol in the local instantiatied body during instantiation time, this symbol replaces the captured symbol. We have to be careful not to consider symbols outside of the instantiation body during instantiation, because this will leak symbols from the instantiation context scope rather than the original declaration scope. This is done by checking if the local context owner (maybe should be the symbol of the proc currently getting instantiated instead? not sure how to get this) is the same as or a parent owner of the owner of the replacement candidate symbol. This solution is distinct from the symchoice mechanisms which we originally assumed had to be related, if this assumption was wrong it would explain why this solution took so long to arrive at.
* Fix grammar (#23090)Stephen2023-12-181-1/+1
|
* types refactoring; WIP (#23086)Andreas Rumpf2023-12-1711-97/+81
|
* Show the name of the unexpected exception that was thrown in `std/unittest` ↵Jake Leahy2023-12-171-1/+2
| | | | | (#23087) Show name of error that wasn't expected in an `expect` block
* Mark `macros.error` as `.noreturn.` (#23081)Jake Leahy2023-12-175-1/+30
| | | | | | | | | | | | | | | 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 ```
* Allow `parseAll` to parse statements separated by semicolons (#23088)Jake Leahy2023-12-172-16/+14
| | | | | | | | | | | | | | | | | | Fixes the second issue listed in #9918. Fixed by replacing the logic used in `parseAll` with just a continious loop to `complexOrSimpleStmt` like what the [normal parser does](https://github.com/nim-lang/Nim/blob/devel/compiler/passes.nim#L143-L146). `complexOrSimpleStmt` [guarantees progress](https://github.com/nim-lang/Nim/blob/devel/compiler/parser.nim#L2541) so we don't need to check progress ourselves. Also allows `nimpretty` to parse more valid Nim code such as ```nim proc foo(); # Would complain about indention here # ... proc foo() = # ... ```
* fixes #22637; now `--experimental:strictNotNil` can be enabled globally (#23079)ringabout2023-12-161-2/+2
| | | fixes #22637
* fixes not nil examples (#23080)ringabout2023-12-151-0/+1
|
* make treeToYaml print yaml (and not json) (#23082)Jacek Sieka2023-12-152-170/+203
| | | less verbose - used in nph
* type refactor: part 4 (#23077)Andreas Rumpf2023-12-1525-194/+197
|
* fixes yet another strictdefs bug (#23069)ringabout2023-12-1529-117/+138
|
* rationals: support Rational[SomeUnsignedInt] (#23046)shirleyquirk2023-12-152-6/+15
| | | | | | | | fixes #22227 rationale: - `3u - 4u` is supported why not`3u.toRational - 4u.toRational` - all of rationals' api is on SomeInteger, looks like unsigned is declared as supported - math on unsigned rationals is meaningful and useful.
* Param match relax (#23033)Ryan McConnell2023-12-1510-69/+154
| | | | | | | | | | | #23032 --------- Co-authored-by: Nikolay Nikolov <nickysn@gmail.com> Co-authored-by: Pylgos <43234674+Pylgos@users.noreply.github.com> Co-authored-by: Andreas Rumpf <rumpf_a@web.de> Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com> Co-authored-by: Jason Beetham <beefers331@gmail.com>
* fixes #23051; don't generate documentation for exported symbols again (#23074)ringabout2023-12-141-1/+2
| | | | | | | | | | | | | fixes #23051 Before ![image](https://github.com/nim-lang/Nim/assets/43030857/d402a837-281e-4035-8302-500f64dccdb5) After ![image](https://github.com/nim-lang/Nim/assets/43030857/de9a23f1-9e50-4551-b3fd-3311e1de378e)
* Overloads passed to static proc parameters now convert to the desired… ↵Jason Beetham2023-12-144-8/+32
| | | | | (#23063) … type mirroring proc params
* fixes #23065; DocLike command defaults to ORC (#23075)ringabout2023-12-141-1/+2
| | | fixes #23065
* type graph refactor; part 3 (#23064)Andreas Rumpf2023-12-1417-270/+257
|
* fixes #9381; Fix double evaluation of types in generic objects (#23072)Pylgos2023-12-142-5/+28
| | | fixes https://github.com/nim-lang/Nim/issues/9381
* Skip trailing asterisk when placing inlay type hints. Fixes #23067 (#23068)Nikolay Nikolov2023-12-131-2/+13
|
* nimpretty: check the rendered AST for wrong output (#23057)Andreas Rumpf2023-12-133-14/+55
|
* fixes #23060; `editDistance` wrongly compare the length of rune strings (#23062)ringabout2023-12-132-1/+6
| | | fixes #23060
* type refactoring: part 2 (#23059)Andreas Rumpf2023-12-1335-430/+422
|
* Typrel whitespace (#23061)Ryan McConnell2023-12-131-24/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Just makes the case statements easier to look at when folded ```nim case foo of a: of b: of c: else: case bar: of a: of b: of c: of d: else: ``` to ```nim case foo of a: of b: of c: else: case bar: of a: of b: of c: of d: else: ```
* Types: Refactorings; step 1 (#23055)Andreas Rumpf2023-12-1257-658/+713
|
* Look up generic parameters when found inside semOverloadedCall, fixin… ↵Jason Beetham2023-12-122-0/+22
| | | | | | | | | (#23054) …g static procs --------- Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* Ast stmt now saves its ast structure in the compiler (#23053)ASVIEST2023-12-122-1/+8
| | | | | | | see https://github.com/nim-lang/Nim/issues/23052 --------- Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* Only suggest symbols that could be pragmas when typing a pragma (#23040)Jake Leahy2023-12-075-3/+85
| | | | | | Currently pragmas just fall through to `suggestSentinel` and show everything which isn't very useful. Now it filters for symbols that could be pragmas (templates with `{.pragma.}`, macros, user pragmas) and only shows them
* Don't process a user pragma if its invalid (#23041)Jake Leahy2023-12-072-1/+13
| | | | | | | | | | | | | | | When running `check`/`suggest` in a file with an invalid user pragma like ```nim {.pragma foo: test.} ``` It will continue to try and process it which leads to the compiler running into a `FieldDefect` ``` fatal.nim(53) sysFatal Error: unhandled exception: field 'sons' is not accessible for type 'TNode' using 'kind = nkIdent' [FieldDefect] ``` This makes it instead bail out trying to process the user pragma if its invalid
* lexer cleanups (#23037)Jacek Sieka2023-12-067-76/+20
| | | | * remove some dead code and leftovers from past features * fix yaml printing of uint64 literals
* Don't recurse into inner functions during asyncjs transform (#23036)Jake Leahy2023-12-062-0/+7
| | | Closes #13341
* fixes #23019; Regression from 2.0 to devel with raise an unlisted exc… ↵ringabout2023-12-052-1/+23
| | | | | | | | | | (#23034) …eption: Exception fixes #23019 I suppose `implicitPragmas` is called somewhere which converts `otherPragmas`.
* forbides adding sons for `PType` (#23030)ringabout2023-12-044-16/+7
| | | I image `add` for `PType` to be used everythere
* Also show the `raises` pragma when converting proc types to string (#23026)Nikolay Nikolov2023-12-042-2/+10
| | | | This affects also nimsuggest hints (e.g. on mouse hover), as well as compiler messages.
* Fix nimsuggest `def` being different on proc definition/use (#23025)Jake Leahy2023-12-043-6/+26
| | | | | | | | | | | | | | | | | | Currently the documentation isn't shown when running `def` on the definition of a proc (Which works for things like variables). `gcsafe`/`noSideEffects` status also isn't showing up when running `def` on the definition Images of current behavior. After PR both look like "Usage" **Definition** ![image](https://github.com/nim-lang/Nim/assets/19339842/bf75ff0b-9a96-49e5-bf8a-d2c503efa784) **Usage** ![image](https://github.com/nim-lang/Nim/assets/19339842/15ea3ebf-64e1-48f5-9233-22605183825f) Issue was the symbol getting passed too early to nimsuggest so it didn't have all that info, now gets passed once proc is fully semmed
* strutils.multiReplace: Making order of replacement explicit (#23022)Joachim Hereth2023-12-021-2/+3
| | | | | | | | | | | | | | | | | | | | | | In the docs for strutils.multiReplace: Making it more explicit that left to right comes before the order in the replacements arg (but that the latter matters too). E.g. ``` echo "ab".multiReplace(@[("a", "1"), ("ax", "2")]) echo "ab".multiReplace(@[("ab", "2"), ("a", "1")]) ``` gives ``` 1b 2 ``` resolves #23016
* Show proper error message if trying to run a Nim file in a directory that ↵Jake Leahy2023-12-021-1/+4
| | | | | | | | | | | | | | | | | | | | doesn't exist (#23017) For example with the command `nim r foo/bar.nim`, if `foo/` doesn't exist then it shows this message ``` oserrors.nim(92) raiseOSError Error: unhandled exception: No such file or directory Additional info: foo [OSError] ``` After PR it shows ``` Error: cannot open 'foo/bar.nim' ``` Which makes it line up with the error message if `foo/` did exist but `bar.nim` didn't. Does this by using the same logic for [handling if the file doesn't exist](https://github.com/ire4ever1190/Nim/blob/0dc12ec24b7902ef0023a9e694faa11bcf99e257/compiler/options.nim#L785-L788)
* fixes #22552 (#23014)Andreas Rumpf2023-12-026-10/+84
|
* related #22534; fixes documentation rendering of custom number literal ↵Erich Reitz2023-12-011-11/+12
| | | | | | | | | | | | | | | routine declaration (#23015) I'm not sure if this is a complete fix, as it does not match the expected output given in the issue. The expected output given in the issue highlights the identifier after the `'` the same color as numeric literals (blue), and this change does not address that. I think that would involve simplifying `nimNumberPostfix`. However, this fixes the issue where the routine declaration was rendered as a string. New rendering: ![Screenshot from 2023-11-30 22-17-17](https://github.com/nim-lang/Nim/assets/80008541/b604ce27-a4ad-496b-82c3-0b568d99a8bf)
* fixes #22852; real bugfix is tied to bug #22672 (#23013)Andreas Rumpf2023-11-301-1/+4
|
* fixes #23001; give a better warning for PtrToCstringConv (#23005)ringabout2023-11-301-1/+1
| | | fixes #23001