metagn
4d075dc301
clean up opensym encounters in compiler ( #24866 )
...
To protect against crashes when this stops being experimental, in most
places handled the exact same as normal symchoices (not encountered in
typed ast)
2025-04-12 08:39:11 +02:00
ringabout
c10f84b9d7
fixes #24053 ; fixes #18288 ; relax reorder with push/pop pragmas restrictions; no crossing push/pop barriers ( #24061 )
...
fixes #24053 ;
fixes #18288
makes push pragmas depend on each node before it and nodes after it
depend on it
2024-09-06 11:26:24 +02:00
ringabout
9b378296f6
fixes addr/hiddenAddr in strictdefs ( #23477 )
2024-04-10 14:41:16 +02:00
ringabout
e17237ce9d
prepare for the enforcement of std prefix ( #22873 )
...
follow up https://github.com/nim-lang/Nim/pull/22851
2023-10-29 14:48:11 +01:00
ringabout
d677ed31e5
follow up #22549 ( #22551 )
2023-08-25 06:48:08 +02:00
ringabout
73e661d01b
modernize compiler/reorder, which exposes yet another strictdefs bug ( #22415 )
...
```nim
{.experimental: "strictdefs".}
type
NodeKind = enum
nkImportStmt
nkStmtList
nkNone
PNode = ref object
kind: NodeKind
proc hasImportStmt(n: PNode): bool =
# Checks if the node is an import statement or
# i it contains one
case n.kind
of nkImportStmt:
return true
of nkStmtList:
if false:
return true
else:
result = false
var n = PNode()
echo hasImportStmt(n)
```
It compiles without warnings, but shouldn't. As a contrast,
```nim
{.experimental: "strictdefs".}
type
NodeKind = enum
nkImportStmt
nkStmtList
nkNone
PNode = ref object
kind: NodeKind
proc hasImportStmt(n: PNode): bool =
# Checks if the node is an import statement or
# i it contains one
case n.kind
of nkImportStmt:
result = true
of nkStmtList:
if false:
return true
else:
result = false
var n = PNode()
echo hasImportStmt(n)
```
This gives a proper warning.
2023-08-08 21:12:54 +08:00
ringabout
93ced31353
use strictdefs for compiler ( #22365 )
...
* wip; use strictdefs for compiler
* checkpoint
* complete the chores
* more fixes
* first phase cleanup
* Update compiler/bitsets.nim
* cleanup
2023-08-06 14:26:21 +02:00
ringabout
5b20f0685c
fixes pragmas reorder ( #21205 )
2023-01-01 10:25:04 +01:00
Kyle Coffey
f4553af343
Fix compiler build with -d:nimDebugReorder ( #20888 )
...
* add missing import for -d:debugReorder
* rename compile-time symbol to match best practices
Fix #20887 .
2022-11-22 15:51:17 +01:00
flywind
7f6e800caf
move assertions out of system ( #19599 )
2022-03-23 20:34:53 +01:00
Timothee Cour
cce1b24b1c
ast: add getPIdent ( #17684 )
...
* ast: add getPIdent
* fixup
2021-04-09 08:00:13 +02:00
Saem Ghani
7366a3da37
potential fix for semgeneric formal params ( #17494 )
...
marked locations where analysis of return formal param is done prior to
args. This might fix some subtle bugs.
2021-03-24 11:55:58 +01:00
Andreas Rumpf
2f213db7ee
fixes #11225 ; generic sandwich problems; [backport:1.2] ( #17255 )
...
* fixes #11225 ; generic sandwich problems; [backport:1.2]
* progress
* delegating these symbols must be done via 'bind'
2021-03-09 20:19:24 +01:00
Juan Carlos
26a6ceb34e
Fix Typos ( #17194 )
2021-02-27 09:51:54 +08:00
Clyybber
13e659cfec
Big compiler Cleanup ( #14777 )
2020-08-28 22:18:09 +02:00
Araq
5a26c3799b
reorder.nim: fixed typos
2020-06-12 11:57:29 +02:00
Araq
336f1e63d0
reorder.nim: fixes the indentation
2020-06-06 20:08:57 +02:00
Clyybber
7e747d11c6
Cosmetic compiler cleanup ( #12718 )
...
* Cleanup compiler code base
* Unify add calls
* Unify len invocations
* Unify range operators
* Fix oversight
* Remove {.procvar.} pragma
* initCandidate -> newCandidate where reasonable
* Unify safeLen calls
2019-11-28 17:13:04 +01:00
Araq
07d465ca42
[refactoring] remove unused imports in the compiler and in some stdlib modules
2019-07-18 00:36:03 +02:00
Araq
c94647aeca
styleCheck: make the compiler and large parts of the stdlib compatible with --styleCheck:error
2019-07-10 12:42:41 +02:00
alaviss
993b3909a8
[refactor] compiler/[msgs, reorder, semstmts]: use toMsgFilename where appropriate ( #11595 )
...
* compiler/msgs: toMsgFilename now operates on FileIndex
* compiler/reorder: use toMsgFilename for compiler messages
* compiler/semstmts: respect listFullPaths for recursive deps error
2019-06-26 14:38:19 +02:00
Clyybber
cc28eef38e
Replace countup(x, y) with x .. y
2019-05-07 12:37:28 +02:00
Timothee Cour
9913cef872
fix typo in codeReordering error msg ( #10667 )
...
* fix typo in codeReordering
* reorder=>codeReordering
2019-02-14 09:52:15 +01:00
Andreas Rumpf
8d850f7a69
deprecated ospaths ( #9665 )
2018-11-09 16:36:49 +01:00
Araq
d48e964950
fixes #9281
2018-10-11 19:52:48 +02:00
Andreas Rumpf
826c1e2d78
incremental compilation: implemented basic replay logic
2018-06-02 09:41:27 +02:00
Andreas Rumpf
40ec7be45c
refactoring: remove idents.legacy global variable and pass the IdentCache around explicitly
2018-05-27 22:09:15 +02:00
Andreas Rumpf
a325692fb2
refactoring: fewer global variables
2018-05-27 19:19:12 +02:00
Andreas Rumpf
669a564492
remove more global variables in the Nim compiler
2018-05-27 11:10:56 +02:00
Andreas Rumpf
bf6c2c5ccf
preparations of making compiler/msgs.nim free of global variables
2018-05-17 15:21:22 +02:00
Andreas Rumpf
5bf31fcabe
big refactoring: mores stuff compiles
2018-05-10 13:39:23 +02:00
Andreas Rumpf
b7116a28ee
compiler refactoring, pass config around explicitly
2018-05-05 18:47:29 +02:00
Andreas Rumpf
3e5192b5da
compiler: remove unnecessary FileIndex type conversions
2018-04-24 09:34:29 +02:00
Andreas Rumpf
33b69f0ed0
refactoring: make FileIndex a distinct type; make line information an uint16; fixes #7654
2018-04-21 08:13:37 +02:00
Andreas Rumpf
70ea45cdba
deprecated unary '<'
2017-10-29 08:37:13 +01:00
BigEpsilon
e2af486434
Add sections (type, var, let, const, using) support for reorder pragma ( #6326 )
2017-10-28 11:33:35 +02:00
Andreas Rumpf
d456055221
fixes #6306
2017-09-01 16:30:24 +02:00
Andreas Rumpf
dfe067a74a
reorder pass: consider the 'using' statement; disabled debug output
2017-08-11 20:14:44 +02:00
Andreas Rumpf
ce341982a6
implemented reordering pass
2017-07-25 10:01:37 +02:00