Ian Lance Taylor [Sun, 31 May 2009 18:18:52 +0000 (11:18 -0700)]
Adjust expected errors to work with gccgo.
The change to assign.go is because the gcc testsuite fails to
handle .* in a normal way: it matches against the entire
compiler output, not just a single line.
assign.go:15:6: error: incompatible types in assignment (implicit assignment of 'sync.Mutex' hidden field 'key')
assign.go:19:6: error: incompatible types in assignment (implicit assignment of 'sync.Mutex' hidden field 'key')
assign.go:23:6: error: incompatible types in assignment (implicit assignment of 'sync.Mutex' hidden field 'key')
assign.go:27:6: error: incompatible types in assignment (implicit assignment of 'sync.Mutex' hidden field 'key')
chan/perm.go:14:5: error: incompatible types in assignment
chan/perm.go:15:5: error: incompatible types in assignment
chan/perm.go:16:6: error: incompatible types in assignment
chan/perm.go:17:6: error: incompatible types in assignment
chan/perm.go:24:7: error: invalid send on receive-only channel
chan/perm.go:25:12: error: invalid send on receive-only channel
chan/perm.go:31:4: error: invalid receive on send-only channel
chan/perm.go:32:9: error: invalid receive on send-only channel
chan/perm.go:38:2: error: invalid send on receive-only channel
chan/perm.go:42:2: error: invalid receive on send-only channel
initializerr.go:14:17: error: reference to undefined variable 'X'
initializerr.go:14:19: error: mixture of field and value initializers
initializerr.go:15:26: error: duplicate value for field 'Y'
initializerr.go:16:10: error: too many values in struct composite literal
initializerr.go:18:19: error: index expression is not integer constant
initializerr.go:17:11: error: too many elements in composite literal
Russ Cox [Sat, 30 May 2009 01:12:04 +0000 (18:12 -0700)]
make gobuild failures more readable.
1. ar reports names of objects with duplicate text symbols.
2. gobuild only shows first line of error output for each failed command.
3. gobuild ignores files that begin with ascii non-alphanumeric non _.
Russ Cox [Thu, 28 May 2009 06:55:14 +0000 (23:55 -0700)]
clean up gmove:
* conversions all in one place.
* no separate load, store phases;
direct memory addressing when possible
(this is the x86 after all!).
avoids extra registers, extra MOVQs.
* fixes int32 -> uint64 bug
(was zero-extending)
Russ Cox [Tue, 26 May 2009 21:46:06 +0000 (14:46 -0700)]
8g: hello world works again
* string format changed
* files got renamed
* new files that i forgot to check in last time
updates are all copy and paste from 6g
Ken Thompson [Sat, 23 May 2009 22:34:29 +0000 (15:34 -0700)]
1. check for dups in complex literals
structtype{a:1, a:2}
maptypetype{"xx":1, "xx":2}
arraytypetype{5:1, 5:2}
2. bug in registerization concerning
alias of a struct and one of its elements
3. code optimization of struct.field
(which exposed bug in 2)
Robert Griesemer [Fri, 22 May 2009 19:40:56 +0000 (12:40 -0700)]
- fix regexp once more in doc.go:
comment markers must only be stripped if they are
at the very beginning otherwise comments that contain
code with comments get screwed up (the ast delivers clean
comments with no junk before or after)
- fix indentation in google/net/rpc/rpc.go which screwed up
godoc formatting
Russ Cox [Thu, 21 May 2009 21:06:24 +0000 (14:06 -0700)]
stricter rules for assignment.
when assigning a multifield object
(structs or arrays of structs) they
must not contain any fields that could
not be assigned individually.
Russ Cox [Thu, 21 May 2009 01:16:38 +0000 (18:16 -0700)]
hash reorg.
* new package hash defining interfaces Hash and Hash32.
* adler32 and crc32 return Hash32 instead of specific types.
* adler32 and crc32 provide non-allocating methods for single slices.
* sha1 and md5 move to crypto, return Hash.
* sum.go, a simple test program, moves to /usr/rsc.
* refresh Make.deps
Russ Cox [Wed, 20 May 2009 22:42:14 +0000 (15:42 -0700)]
reflect bug: NewZeroValue was refusing to create slices.
as far as I can tell there's no reason not to.
the Nillable test was succeeding because NewZeroValue
returned the nil interface value and the type guard
was letting it through. the only change in the test is
more detail in the print.
the itype is basically a vtable, but it's unnecessary
if the static type is interface{ }.
for interface values with static type empty, the
new representation is
struct Eface {
void *addr;
Sigt *type;
}
this complicates the code somewhat, but
it reduces the number of Itypes that
have to be computed and cached,
it opens up opportunities to avoid function
calls in a few common cases,
and it will make it possible to lay out
interface{} values at compile time,
which i think i'll need for the new reflection.
Russ Cox [Wed, 20 May 2009 21:24:23 +0000 (14:24 -0700)]
fix implicit star for range on *map, *[].
do not update lineno from ONAME nodes,
because they have declaration lineno not use.
show actual name in top-level statement error.
before
runtime.a:7: x.go:5: walkstate: NAME not a top level statement
after
x.go:14: walkstate: runtime.Goexit not a top level statement
Ian Lance Taylor [Tue, 19 May 2009 22:23:43 +0000 (15:23 -0700)]
Match gccgo error messages.
bug117.go:13:12: error: reference to undefined field or method
import1.go:9:2: error: redefinition of '.main.bufio'
import1.go:8:2: note: previous definition of '.main.bufio' was here
import1.go:9:2: error: incompatible imported type 'bufio.Error'
interface9.go:25:5: error: incompatible types in assignment (method P requires a pointer)
interface9.go:30:5: error: incompatible types in assignment (method P requires a pointer)