summary refs log tree commit diff stats
path: root/compiler/semgnrc.nim
Commit message (Collapse)AuthorAgeFilesLines
* make case-object transitions explicit, make unknownLineInfo a const, replace ↵Jasper Jenkins2020-01-171-1/+1
| | | | a few magic numbers with consts (#13170)
* Cosmetic compiler cleanup (#12718)Clyybber2019-11-281-117/+111
| | | | | | | | | | | | | | | | | | * 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
* Small ast.nim cleanup (#12156)Clyybber2019-09-091-21/+21
| | | | | * Remove sonsLen * Use Indexable
* refs #11947; FieldError fixed (#11950)Timothee Cour2019-08-151-1/+1
|
* styleCheck: make the compiler and large parts of the stdlib compatible with ↵Araq2019-07-101-2/+2
| | | | --styleCheck:error
* fixes #11188 (#11319)Andreas Rumpf2019-05-241-2/+2
|
* Replace countup(x, y) with x .. yClyybber2019-05-071-6/+6
|
* Replace countup(x, y-1) with x ..< yClyybber2019-05-071-15/+15
|
* more destructor based changes (#10885)Andreas Rumpf2019-03-231-1/+1
| | | | | | | | | | | * mark user defined destructors with sfOverriden to simplify the logic * refactoring in preparation to merge liftings and generic instantiations for destructors * ast: introduce nkHiddenTryStmt for destructor generation in order to be able to optimize better the code later on * renamed 'patterns' switch to 'trmacros' as it was totally misleading before * destructors: introduce tfCheckedForDestructor flag in preparation of strict =destroy checking * test for invalid/too late destructor introductions * liftdestructors: make code robust for nimsuggest * --newruntime works for hello world again * newruntime: code generation for closures
* Fixes #10727. (#10728)deech2019-02-251-1/+6
|
* added first version of a nimfind tool for the poor souls that don't have a ↵Andreas Rumpf2018-11-141-11/+12
| | | | good nimsuggest integretation
* fixes #8603Araq2018-10-301-1/+8
|
* Fix regression with runnableExamples in generic exprLemonBoy2018-09-301-5/+5
| | | | | | | | The examples should not enter the generic analysis at all. The regression was introduced in 4cf704bb as a fix for #8694. Fixes #9130 Fixes #8694
* 2018-05-271-8/+8
| | | | around explicitly
* remove more global variables in the Nim compilerAndreas Rumpf2018-05-271-3/+3
|
* options.nim: no global variables anymoreAndreas Rumpf2018-05-131-1/+1
|
* semstmts compiles againAndreas Rumpf2018-05-121-40/+40
|
* first steps in adding template/macro calls to stack tracesAraq2017-12-211-1/+1
|
* Merge branch 'devel' into araqAndreas Rumpf2017-11-071-0/+2
|\
| * minor breaking change: for loop bodies now get their own scopeAndreas Rumpf2017-11-051-0/+2
| |
* | wipAndreas Rumpf2017-11-021-1/+1
|/
* first implementation of the 'func' keywordAndreas Rumpf2017-09-231-3/+3
|
* .pure enums are much more convenient to use nowAndreas Rumpf2017-09-171-0/+4
|
* introduce a pre-processing pass for the concept bodiesZahary Karadjov2017-06-201-3/+10
| | | | | | | fixes #4982 fixes #3805 close #3414
* fixes #5597; wrong eager template instantiation in generic context (#5601)Andreas Rumpf2017-03-241-3/+3
|
* make tests green againAndreas Rumpf2017-03-021-0/+8
|
* fixes #5419Andreas Rumpf2017-02-241-1/+5
|
* More progress towards a working #3691.Dominik Picheta2017-02-031-6/+4
|
* WIP: `as` with generics.Dominik Picheta2017-02-021-1/+10
|
* recursive modules are only detected to improve error messagesAndreas Rumpf2016-11-241-2/+2
|
* fixes #4600Andreas Rumpf2016-08-231-6/+7
|
* fixes #4555Andreas Rumpf2016-08-021-1/+1
|
* compiler almost free of deprecated expr/stmt namesAndreas Rumpf2016-07-301-2/+2
|
* stdlib and compiler don't use .immediate anymoreAndreas Rumpf2016-07-291-3/+6
|
* fixes #2377Andreas Rumpf2016-07-081-1/+6
|
* fixes a critical bug about template instantiations in genericsAndreas Rumpf2016-06-051-2/+2
|
* first implementation of the new lambda-lifting pass; barely anything worksAndreas Rumpf2015-12-261-2/+2
|
* fixes regression: NimForum compiles againAraq2015-09-211-8/+2
|
* fixes #3268Araq2015-09-181-1/+1
|
* fixes #3329Araq2015-09-181-1/+1
|
* fixes the most pressing regressions introduced by the new handling of a[i] ↵Araq2015-09-161-6/+28
| | | | in the compiler
* first attempt to fix 'a[i]' handling in genericsAraq2015-09-121-0/+23
|
* fixes #1965Araq2015-08-101-2/+2
|
* breaking change: symbol lookups in generics follows spec more closely; fixes ↵Araq2015-08-071-61/+63
| | | | #2664
* interpret `tuple` as a class and `tuple[]` as the empty tupleMax Zerzouri2015-03-061-1/+1
| | | | | | | | When the indentation syntax is allowed it is always interpreted as a tuple: type Unit = tuple
* Fix documentations for declared (instead of defined)def2015-02-181-1/+1
|
class="mi">2; c->h = sh - 2 - bh; } else if(i == 0) { c->x = sx; c->y = sy + bh; c->w = mw - 2; c->h = sh - 2 - bh; } else if(h > bh) { c->x = sx + mw; c->y = sy + (i - 1) * h + bh; c->w = w - 2; if(i + 1 == n) c->h = sh - c->y - 2; else c->h = h - 2; } else { /* fallback if h < bh */ c->x = sx + mw; c->y = sy + bh; c->w = w - 2; c->h = sh - 2 - bh; } resize(c, False, TopLeft); i++; } else ban(c); } if(!sel || !isvisible(sel)) sel = getnext(clients); if(sel) focus(sel); else XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); restack(); } void focusnext(Arg *arg) { Client *c; if(!sel) return; if(!(c = getnext(sel->next))) c = getnext(clients); if(c) { focus(c); restack(); } } void focusprev(Arg *arg) { Client *c; if(!sel) return; if(!(c = getprev(sel->prev))) { for(c = clients; c && c->next; c = c->next); c = getprev(c); } if(c) { focus(c); restack(); } } Bool isvisible(Client *c) { unsigned int i; for(i = 0; i < ntags; i++) if(c->tags[i] && seltag[i]) return True; return False; } void restack() { static unsigned int nwins = 0; static Window *wins = NULL; unsigned int f, fi, m, mi, n; Client *c; XEvent ev; for(f = 0, m = 0, c = clients; c; c = c->next) if(isvisible(c)) { if(c->isfloat || arrange == dofloat) f++; else m++; } if(!(n = 2 * (f + m))) { drawstatus(); return; } if(nwins < n) { nwins = n; wins = erealloc(wins, nwins * sizeof(Window)); } fi = 0; mi = 2 * f; if(sel->isfloat || arrange == dofloat) { wins[fi++] = sel->twin; wins[fi++] = sel->win; } else { wins[mi++] = sel->twin; wins[mi++] = sel->win; } for(c = clients; c; c = c->next) if(isvisible(c) && c != sel) { if(c->isfloat || arrange == dofloat) { wins[fi++] = c->twin; wins[fi++] = c->win; } else { wins[mi++] = c->twin; wins[mi++] = c->win; } } XRestackWindows(dpy, wins, n); drawall(); XSync(dpy, False); while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); } void togglemode(Arg *arg) { arrange = (arrange == dofloat) ? dotile : dofloat; if(sel) arrange(NULL); else drawstatus(); } void toggleview(Arg *arg) { unsigned int i; seltag[arg->i] = !seltag[arg->i]; for(i = 0; i < ntags && !seltag[i]; i++); if(i == ntags) seltag[arg->i] = True; /* cannot toggle last view */ reorder(); arrange(NULL); } void view(Arg *arg) { unsigned int i; for(i = 0; i < ntags; i++) seltag[i] = False; seltag[arg->i] = True; reorder(); arrange(NULL); } void viewall(Arg *arg) { unsigned int i; for(i = 0; i < ntags; i++) seltag[i] = True; reorder(); arrange(NULL); } void zoom(Arg *arg) { Client *c = sel; if(!c || (arrange != dotile) || c->isfloat || c->ismax) return; if(c == getnext(clients)) if(!(c = getnext(c->next))) return; detach(c); c->next = clients; clients->prev = c; clients = c; focus(c); arrange(NULL); }