Age | Commit message (Collapse) | Author | Files | Lines |
|
still to do - overflow, mod
R=rsc
OCL=32927
CL=32927
|
|
R=ken
OCL=32902
CL=32914
|
|
R=ken
OCL=32900
CL=32900
|
|
R=ken
OCL=32890
CL=32894
|
|
R=ken
OCL=32888
CL=32888
|
|
R=ken
OCL=32887
CL=32887
|
|
R=ken
OCL=32886
CL=32886
|
|
disable func redeclaration mismatch test;
fix golden.out
R=ken
OCL=32883
CL=32883
|
|
still to do:
* initializer cycle detection
* nicer error for type checking cycles
R=ken
OCL=32855
CL=32880
|
|
R=ken
OCL=32780
CL=32780
|
|
R=ken
OCL=32772
CL=32772
|
|
collapse a lot of duplication in dcl.c
switch to NodeList* from Dcl*
R=ken
OCL=32770
CL=32770
|
|
and delete some dead code.
no actual changes here.
R=ken
OCL=32764
CL=32764
|
|
R=ken
OCL=32750
CL=32753
|
|
split into typecheck + walk
R=ken
OCL=32726
CL=32726
|
|
R=ken
OCL=32716
CL=32720
|
|
typecheck.c is now responsible for all type checking
except for assignment and function argument "..."
R=ken
OCL=32661
CL=32667
|
|
R=ken
OCL=32581
CL=32581
|
|
R=ken
OCL=32576
CL=32580
|
|
handled by typecheck.
second switch is gone
move floating point minus into back end
R=ken
OCL=32558
CL=32558
|
|
started to move typechecking to another file.
can build entire tree still, but lots of work
is duplicated. much to clean up.
R=ken
OCL=32536
CL=32543
|
|
labeled break/continue was using
first loop with any label,
not first loop with the right label.
R=ken
OCL=32453
CL=32458
|
|
not complete but compiler still works.
R=ken
OCL=32424
CL=32426
|
|
R=ken
OCL=32421
CL=32421
|
|
R=ken
OCL=32419
CL=32419
|
|
so that == on func means that the
functions originated in the same
execution of a func literal or definition.
before, there was an inconsistency:
func() {x++} != func() {x++}
but
func() {} == func() {}
this CL makes the second case != too,
just like
make(map[int]int) != make(map[int]int)
R=r
DELTA=202 (71 added, 62 deleted, 69 changed)
OCL=32393
CL=32398
|
|
(reported by iant)
R=r
DELTA=50 (32 added, 12 deleted, 6 changed)
OCL=32263
CL=32385
|
|
R=ken
OCL=32261
CL=32261
|
|
R=ken
OCL=32255
CL=32255
|
|
R=ken
OCL=32253
CL=32253
|
|
R=ken
OCL=32252
CL=32252
|
|
R=ken
OCL=32244
CL=32244
|
|
a := true;
a |= a;
in the front end.
R=ken
OCL=32240
CL=32243
|
|
R=ken
OCL=32239
CL=32239
|
|
just like ONAME etc.
R=ken
OCL=31964
CL=31964
|
|
R=ken
OCL=31890
CL=31890
|
|
the n argument to strncat is the maximum
number of bytes to read from the src,
not the total size of the destination.
R=ken
OCL=31871
CL=31875
|
|
R=ken
OCL=31865
CL=31867
|
|
excluding import data,
no yacc node has type Type* anymore.
0 reduce/reduce conflicts.
R=ken
OCL=31793
CL=31795
|
|
consts in the same factored block
const (
X = Y;
Y = 2;
)
R=ken
OCL=31782
CL=31782
|
|
introduce NodeList* type in compiler to replace OLIST.
this clarifies where lists can and cannot occur.
list append and concatenation are now cheap.
the _r rules are gone from yacc.
rev and unrev are gone.
no more lists of lists.
the representation of assignments is a bit clunkier.
split into OAS (1=1) and OAS2 (2 or more on one side).
delete dead chanrecv3 code.
delay construction of func types.
R=ken
OCL=31745
CL=31762
|
|
delay evaluation of most types (all but func)
from parse time to type check time.
R=ken
OCL=31585
CL=31585
|
|
R=ken
OCL=31582
CL=31582
|
|
walkstate -> walkstmt
walktype -> walkexpr; stmts moved to walkstmt
walktype and friends have a final Node **init
argument that can have side effects appended,
making it more explicit when they do and do not happen.
this replaces the old global addtop and addtotop.
delete switch map and interface conversion cases
(dropped from the language months ago).
R=ken
OCL=31465
CL=31468
|
|
R=rsc
OCL=31467
CL=31467
|
|
R=rsc
OCL=31396
CL=31396
|
|
R=rsc
OCL=31373
CL=31373
|
|
so remove code from go.y.
show original types in badtype; don't remove pointers.
not sure why this was here but it confuses things
if the bad part involves two named pointer types
with different names but the same pointed-at type.
R=ken
OCL=31369
CL=31369
|
|
R=ken
OCL=31310
CL=31310
|
|
R=ken
OCL=31295
CL=31295
|