1
0
mirror of https://github.com/golang/go synced 2024-11-21 18:54:43 -07:00

make test/ken safe for optional semis

R=rsc, ken2, ken3
https://golang.org/cl/174042
This commit is contained in:
Robert Griesemer 2009-12-10 12:53:23 -08:00
parent d08d33f389
commit 581530e441
32 changed files with 188 additions and 394 deletions

View File

@ -7,8 +7,7 @@
package main
func
setpd(a []int)
{
setpd(a []int) {
// print("setpd a=", a, " len=", len(a), " cap=", cap(a), "\n");
for i:=0; i<len(a); i++ {
a[i] = i;
@ -16,8 +15,7 @@ setpd(a []int)
}
func
sumpd(a []int) int
{
sumpd(a []int) int {
// print("sumpd a=", a, " len=", len(a), " cap=", cap(a), "\n");
t := 0;
for i:=0; i<len(a); i++ {
@ -28,8 +26,7 @@ sumpd(a []int) int
}
func
setpf(a *[20]int)
{
setpf(a *[20]int) {
// print("setpf a=", a, " len=", len(a), " cap=", cap(a), "\n");
for i:=0; i<len(a); i++ {
a[i] = i;
@ -37,8 +34,7 @@ setpf(a *[20]int)
}
func
sumpf(a *[20]int) int
{
sumpf(a *[20]int) int {
// print("sumpf a=", a, " len=", len(a), " cap=", cap(a), "\n");
t := 0;
for i:=0; i<len(a); i++ {
@ -49,8 +45,7 @@ sumpf(a *[20]int) int
}
func
res(t int, lb, hb int)
{
res(t int, lb, hb int) {
sb := (hb-lb)*(hb+lb-1)/2;
if t != sb {
print( "lb=", lb,
@ -64,8 +59,7 @@ res(t int, lb, hb int)
// call ptr dynamic with ptr dynamic
func
testpdpd()
{
testpdpd() {
a := make([]int, 10, 100);
if len(a) != 10 && cap(a) != 100 {
panic("len and cap from new: ", len(a), " ", cap(a), "\n");
@ -83,8 +77,7 @@ testpdpd()
// call ptr fixed with ptr fixed
func
testpfpf()
{
testpfpf() {
var a [20]int;
setpf(&a);
@ -93,8 +86,7 @@ testpfpf()
// call ptr dynamic with ptr fixed from new
func
testpdpf1()
{
testpdpf1() {
a := new([40]int);
setpd(a);
res(sumpd(a), 0, 40);
@ -105,8 +97,7 @@ testpdpf1()
// call ptr dynamic with ptr fixed from var
func
testpdpf2()
{
testpdpf2() {
var a [80]int;
setpd(&a);
@ -115,8 +106,7 @@ testpdpf2()
// generate bounds error with ptr dynamic
func
testpdfault()
{
testpdfault() {
a := make([]int, 100);
print("good\n");
@ -130,8 +120,7 @@ testpdfault()
// generate bounds error with ptr fixed
func
testfdfault()
{
testfdfault() {
var a [80]int;
print("good\n");
@ -145,8 +134,7 @@ testfdfault()
}
func
main()
{
main() {
testpdpd();
testpfpf();
testpdpf1();

View File

@ -12,8 +12,7 @@ import "runtime"
var randx int;
func
nrand(n int) int
{
nrand(n int) int {
randx += 10007;
if randx >= 1000000 {
randx -= 1000000;
@ -21,9 +20,7 @@ nrand(n int) int
return randx%n;
}
type Chan
struct
{
type Chan struct {
sc,rc chan int; // send and recv chan
sv,rv int; // send and recv seq
}
@ -38,14 +35,12 @@ var
)
func
init()
{
init() {
nc = new(Chan);
}
func
mkchan(c,n int) []*Chan
{
mkchan(c,n int) []*Chan {
ca := make([]*Chan, n);
for i:=0; i<n; i++ {
cval = cval+100;
@ -60,8 +55,7 @@ mkchan(c,n int) []*Chan
}
func
expect(v, v0 int) (newv int)
{
expect(v, v0 int) (newv int) {
if v == v0 {
if v%100 == 75 {
return end;
@ -71,9 +65,7 @@ expect(v, v0 int) (newv int)
panic("got ", v, " expected ", v0+1, "\n");
}
func (c *Chan)
send() bool
{
func (c *Chan) send() bool {
// print("send ", c.sv, "\n");
tots++;
c.sv = expect(c.sv, c.sv);
@ -85,8 +77,7 @@ send() bool
}
func
send(c *Chan)
{
send(c *Chan) {
nproc++; // total goroutines running
for {
for r:=nrand(10); r>=0; r-- {
@ -100,9 +91,7 @@ send(c *Chan)
nproc--;
}
func (c *Chan)
recv(v int) bool
{
func (c *Chan) recv(v int) bool {
// print("recv ", v, "\n");
totr++;
c.rv = expect(c.rv, v);
@ -114,8 +103,7 @@ recv(v int) bool
}
func
recv(c *Chan)
{
recv(c *Chan) {
var v int;
nproc++; // total goroutines running
@ -132,8 +120,7 @@ recv(c *Chan)
}
func
sel(r0,r1,r2,r3, s0,s1,s2,s3 *Chan)
{
sel(r0,r1,r2,r3, s0,s1,s2,s3 *Chan) {
var v int;
nproc++; // total goroutines running
@ -196,16 +183,14 @@ sel(r0,r1,r2,r3, s0,s1,s2,s3 *Chan)
// direct send to direct recv
func
test1(c *Chan)
{
test1(c *Chan) {
go send(c);
go recv(c);
}
// direct send to select recv
func
test2(c int)
{
test2(c int) {
ca := mkchan(c,4);
go send(ca[0]);
@ -218,8 +203,7 @@ test2(c int)
// select send to direct recv
func
test3(c int)
{
test3(c int) {
ca := mkchan(c,4);
go recv(ca[0]);
@ -232,8 +216,7 @@ test3(c int)
// select send to select recv
func
test4(c int)
{
test4(c int) {
ca := mkchan(c,4);
go sel(nc,nc,nc,nc, ca[0],ca[1],ca[2],ca[3]);
@ -241,8 +224,7 @@ test4(c int)
}
func
test5(c int)
{
test5(c int) {
ca := mkchan(c,8);
go sel(ca[4],ca[5],ca[6],ca[7], ca[0],ca[1],ca[2],ca[3]);
@ -250,8 +232,7 @@ test5(c int)
}
func
test6(c int)
{
test6(c int) {
ca := mkchan(c,12);
go send(ca[4]);
@ -270,8 +251,7 @@ test6(c int)
// wait for outstanding tests to finish
func
wait()
{
wait() {
runtime.Gosched();
for nproc != 0 {
runtime.Gosched();
@ -280,8 +260,7 @@ wait()
// run all tests with specified buffer size
func
tests(c int)
{
tests(c int) {
ca := mkchan(c,4);
test1(ca[0]);
test1(ca[1]);
@ -307,19 +286,18 @@ tests(c int)
// run all test with 4 buffser sizes
func
main()
{
main() {
tests(0);
tests(1);
tests(10);
tests(100);
t := 4 // buffer sizes
* ( 4*4 // tests 1,2,3,4 channels
+ 8 // test 5 channels
+ 12 // test 6 channels
) * 76; // sends/recvs on a channel
t := 4 * // buffer sizes
( 4*4 + // tests 1,2,3,4 channels
8 + // test 5 channels
12 ) * // test 6 channels
76; // sends/recvs on a channel
if tots != t || totr != t {
print("tots=", tots, " totr=", totr, " sb=", t, "\n");

View File

@ -14,8 +14,7 @@ const W = 2; // channel buffering
var h [N]int; // marking of send/recv
func
r(c chan int, m int)
{
r(c chan int, m int) {
for {
select {
case r := <- c:
@ -23,7 +22,7 @@ r(c chan int, m int)
panicln("r",
"m=", m,
"r=", r,
"h=", h[r]
"h=", h[r],
);
}
h[r] = 2;
@ -32,8 +31,7 @@ r(c chan int, m int)
}
func
s(c chan int)
{
s(c chan int) {
for n:=0; n<N; n++ {
r := n;
if h[r] != 0 {
@ -45,8 +43,7 @@ s(c chan int)
}
func
main()
{
main() {
c := make(chan int, W);
for m:=0; m<M; m++ {
go r(c, m);

View File

@ -14,8 +14,7 @@ type SC struct{ a,b,c []int };
type SM struct{ a,b,c M };
func
main()
{
main() {
test("s.a", s.a);
test("s.b", s.b);
test("s.c", s.c);
@ -79,8 +78,7 @@ main()
var ref = 0;
func
test(xs string, x int)
{
test(xs string, x int) {
if ref >= len(answers) {
println(xs, x);
@ -119,8 +117,7 @@ var ms = map[int]S{0:S{5101,5102,5103},1:S{5104,5105,5106},2:S{5107,5108,5109}}
var mc = map[int][]int{0:[]int{5201,5202,5203}, 1:[]int{5204,5205,5206}, 2:[]int{5207,5208,5209}}
var mm = map[int]M{0:M{0:5301,1:5302,2:5303}, 1:M{0:5304,1:5305,2:5306}, 2:M{0:5307,1:5308,2:5309}}
var answers = [...]int
{
var answers = [...]int {
// s
1101, 1102, 1103,

View File

@ -11,8 +11,7 @@ import "rand"
const Count = 1e5
func
i64rand() int64
{
i64rand() int64 {
for {
a := int64(rand.Uint32());
a = (a<<32) | int64(rand.Uint32());
@ -25,8 +24,7 @@ i64rand() int64
}
func
i64test(a,b,c int64)
{
i64test(a,b,c int64) {
d := a/c;
if d != b {
panicln("i64", a, b, c, d);
@ -34,8 +32,7 @@ i64test(a,b,c int64)
}
func
i64run()
{
i64run() {
var a, b int64;
for i:=0; i<Count; i++ {
@ -80,8 +77,7 @@ i64run()
}
func
u64rand() uint64
{
u64rand() uint64 {
a := uint64(rand.Uint32());
a = (a<<32) | uint64(rand.Uint32());
a >>= uint(rand.Intn(64));
@ -89,8 +85,7 @@ u64rand() uint64
}
func
u64test(a,b,c uint64)
{
u64test(a,b,c uint64) {
d := a/c;
if d != b {
panicln("u64", a, b, c, d);
@ -98,8 +93,7 @@ u64test(a,b,c uint64)
}
func
u64run()
{
u64run() {
var a, b uint64;
for i:=0; i<Count; i++ {
@ -126,8 +120,7 @@ u64run()
}
func
i32rand() int32
{
i32rand() int32 {
for {
a := int32(rand.Uint32());
a >>= uint(rand.Intn(32));
@ -139,8 +132,7 @@ i32rand() int32
}
func
i32test(a,b,c int32)
{
i32test(a,b,c int32) {
d := a/c;
if d != b {
panicln("i32", a, b, c, d);
@ -148,8 +140,7 @@ i32test(a,b,c int32)
}
func
i32run()
{
i32run() {
var a, b int32;
for i:=0; i<Count; i++ {
@ -193,16 +184,14 @@ i32run()
}
func
u32rand() uint32
{
u32rand() uint32 {
a := uint32(rand.Uint32());
a >>= uint(rand.Intn(32));
return a;
}
func
u32test(a,b,c uint32)
{
u32test(a,b,c uint32) {
d := a/c;
if d != b {
panicln("u32", a, b, c, d);
@ -210,8 +199,7 @@ u32test(a,b,c uint32)
}
func
u32run()
{
u32run() {
var a, b uint32;
for i:=0; i<Count; i++ {
@ -238,8 +226,7 @@ u32run()
}
func
i16rand() int16
{
i16rand() int16 {
for {
a := int16(rand.Uint32());
a >>= uint(rand.Intn(16));
@ -251,8 +238,7 @@ i16rand() int16
}
func
i16test(a,b,c int16)
{
i16test(a,b,c int16) {
d := a/c;
if d != b {
panicln("i16", a, b, c, d);
@ -260,8 +246,7 @@ i16test(a,b,c int16)
}
func
i16run()
{
i16run() {
var a, b int16;
for i:=0; i<Count; i++ {
@ -306,16 +291,14 @@ i16run()
}
func
u16rand() uint16
{
u16rand() uint16 {
a := uint16(rand.Uint32());
a >>= uint(rand.Intn(16));
return a;
}
func
u16test(a,b,c uint16)
{
u16test(a,b,c uint16) {
d := a/c;
if d != b {
panicln("u16", a, b, c, d);
@ -323,8 +306,7 @@ u16test(a,b,c uint16)
}
func
u16run()
{
u16run() {
var a, b uint16;
for i:=0; i<Count; i++ {
@ -351,8 +333,7 @@ u16run()
}
func
i8rand() int8
{
i8rand() int8 {
for {
a := int8(rand.Uint32());
a >>= uint(rand.Intn(8));
@ -364,8 +345,7 @@ i8rand() int8
}
func
i8test(a,b,c int8)
{
i8test(a,b,c int8) {
d := a/c;
if d != b {
panicln("i8", a, b, c, d);
@ -373,8 +353,7 @@ i8test(a,b,c int8)
}
func
i8run()
{
i8run() {
var a, b int8;
for i:=0; i<Count; i++ {
@ -415,16 +394,14 @@ i8run()
}
func
u8rand() uint8
{
u8rand() uint8 {
a := uint8(rand.Uint32());
a >>= uint(rand.Intn(8));
return a;
}
func
u8test(a,b,c uint8)
{
u8test(a,b,c uint8) {
d := a/c;
if d != b {
panicln("u8", a, b, c, d);
@ -432,8 +409,7 @@ u8test(a,b,c uint8)
}
func
u8run()
{
u8run() {
var a, b uint8;
for i:=0; i<Count; i++ {
@ -459,8 +435,7 @@ u8run()
}
func
main()
{
main() {
xtest();
i64run();
u64run();
@ -473,6 +448,5 @@ main()
}
func
xtest()
{
xtest() {
}

View File

@ -26,8 +26,7 @@ const
)
func
main()
{
main() {
/* ideals */
if n1/d1 != q1 || n1%d1 != r1 {
panicln("ideal-1", n1, d1, n1/d1, n1%d1);

View File

@ -8,8 +8,7 @@ package main
type
I interface
{
I interface {
test1() int;
test2() int;
test3() int;
@ -24,20 +23,15 @@ I interface
******/
type
SubpSubp struct
{
SubpSubp struct {
a7 int;
a int;
}
func (p *SubpSubp)
test7() int
{
func (p *SubpSubp) test7() int {
if p.a != p.a7 { panicln("SubpSubp", p, p.a7) }
return p.a
}
func (p *SubpSubp)
testx()
{
func (p *SubpSubp) testx() {
println("SubpSubp", p, p.a7);
}
@ -46,21 +40,16 @@ testx()
******/
type
SubpSub struct
{
SubpSub struct {
a6 int;
SubpSubp;
a int;
}
func (p *SubpSub)
test6() int
{
func (p *SubpSub) test6() int {
if p.a != p.a6 { panicln("SubpSub", p, p.a6) }
return p.a
}
func (p *SubpSub)
testx()
{
func (p *SubpSub) testx() {
println("SubpSub", p, p.a6);
}
@ -69,14 +58,11 @@ testx()
******/
type
SubSubp struct
{
SubSubp struct {
a5 int;
a int;
}
func (p *SubSubp)
test5() int
{
func (p *SubSubp) test5() int {
if p.a != p.a5 { panicln("SubpSub", p, p.a5) }
return p.a
}
@ -86,14 +72,11 @@ test5() int
******/
type
SubSub struct
{
SubSub struct {
a4 int;
a int;
}
func (p *SubSub)
test4() int
{
func (p *SubSub) test4() int {
if p.a != p.a4 { panicln("SubpSub", p, p.a4) }
return p.a
}
@ -103,16 +86,13 @@ test4() int
******/
type
Subp struct
{
Subp struct {
a3 int;
*SubpSubp;
SubpSub;
a int;
}
func (p *Subp)
test3() int
{
func (p *Subp) test3() int {
if p.a != p.a3 { panicln("SubpSub", p, p.a3) }
return p.a
}
@ -129,9 +109,7 @@ Sub struct
SubSub;
a int;
}
func (p *Sub)
test2() int
{
func (p *Sub) test2() int {
if p.a != p.a2 { panicln("SubpSub", p, p.a2) }
return p.a
}
@ -141,16 +119,13 @@ test2() int
******/
type
S struct
{
S struct {
a1 int;
Sub;
*Subp;
a int;
}
func (p *S)
test1() int
{
func (p *S) test1() int {
if p.a != p.a1 { panicln("SubpSub", p, p.a1) }
return p.a
}
@ -160,8 +135,7 @@ test1() int
******/
func
main()
{
main() {
var i I;
var s *S;

View File

@ -8,8 +8,7 @@
package main
func
main()
{
main() {
var t,i int;
for i=0; i<100; i=i+1 {

View File

@ -11,8 +11,7 @@ type mystring string;
type I0 interface {};
func
f()
{
f() {
var ia, ib I0;
var i myint;
var s mystring;
@ -52,8 +51,7 @@ f()
}
func
main()
{
main() {
var ia [20]I0;
var b bool;
var s string;

View File

@ -6,37 +6,29 @@
package main
type S struct
{
type S struct {
a,b int;
}
type I1 interface
{
type I1 interface {
f ()int;
}
type I2 interface
{
type I2 interface {
g() int;
f() int;
}
func
(this *S) f()int
{
func (this *S) f()int {
return this.a;
}
func
(this *S) g()int
{
func (this *S) g()int {
return this.b;
}
func
main()
{
main() {
var i1 I1;
var i2 I2;
var g *S;

View File

@ -6,58 +6,47 @@
package main
type Iputs interface
{
type Iputs interface {
puts (s string);
}
// ---------
type Print struct
{
type Print struct {
whoami int;
put Iputs;
}
func (p *Print)
dop()
{
func (p *Print) dop() {
print(" print ", p.whoami);
p.put.puts("abc");
}
// ---------
type Bio struct
{
type Bio struct {
whoami int;
put Iputs;
}
func (b *Bio)
puts(s string)
{
func (b *Bio) puts(s string) {
print(" bio ", b.whoami);
b.put.puts(s);
}
// ---------
type File struct
{
type File struct {
whoami int;
put Iputs;
}
func (f *File)
puts(s string)
{
func (f *File) puts(s string) {
print(" file ", f.whoami, " -- ", s);
}
func
main()
{
main() {
p := new(Print);
b := new(Bio);
f := new(File);

View File

@ -8,8 +8,7 @@
package main
func
main()
{
main() {
i := 0;
if false {
goto gogoloop;

View File

@ -8,8 +8,7 @@
package main
func
main()
{
main() {
x := func(a int)int {
x := func(a int)int {
x := func(a int)int {

View File

@ -7,8 +7,7 @@
package main
func
main()
{
main() {
var x,y int;
x,y = simple(10,20,30);
@ -16,7 +15,6 @@ main()
}
func
simple(ia,ib,ic int) (oa,ob int)
{
simple(ia,ib,ic int) (oa,ob int) {
return ia+5, ib+ic;
}

View File

@ -11,8 +11,7 @@ import "rand"
const Count = 1e5
func
i64rand() int64
{
i64rand() int64 {
for {
a := int64(rand.Uint32());
a = (a<<32) | int64(rand.Uint32());
@ -25,8 +24,7 @@ i64rand() int64
}
func
i64test(a,b,c int64)
{
i64test(a,b,c int64) {
d := a%c;
if d != b {
panicln("i64", a, b, c, d);
@ -34,8 +32,7 @@ i64test(a,b,c int64)
}
func
i64run()
{
i64run() {
var a, b int64;
for i:=0; i<Count; i++ {
@ -80,8 +77,7 @@ i64run()
}
func
u64rand() uint64
{
u64rand() uint64 {
a := uint64(rand.Uint32());
a = (a<<32) | uint64(rand.Uint32());
a >>= uint(rand.Intn(64));
@ -89,8 +85,7 @@ u64rand() uint64
}
func
u64test(a,b,c uint64)
{
u64test(a,b,c uint64) {
d := a%c;
if d != b {
panicln("u64", a, b, c, d);
@ -98,8 +93,7 @@ u64test(a,b,c uint64)
}
func
u64run()
{
u64run() {
var a, b uint64;
for i:=0; i<Count; i++ {
@ -126,8 +120,7 @@ u64run()
}
func
i32rand() int32
{
i32rand() int32 {
for {
a := int32(rand.Uint32());
a >>= uint(rand.Intn(32));
@ -139,8 +132,7 @@ i32rand() int32
}
func
i32test(a,b,c int32)
{
i32test(a,b,c int32) {
d := a%c;
if d != b {
panicln("i32", a, b, c, d);
@ -148,8 +140,7 @@ i32test(a,b,c int32)
}
func
i32run()
{
i32run() {
var a, b int32;
for i:=0; i<Count; i++ {
@ -193,16 +184,14 @@ i32run()
}
func
u32rand() uint32
{
u32rand() uint32 {
a := uint32(rand.Uint32());
a >>= uint(rand.Intn(32));
return a;
}
func
u32test(a,b,c uint32)
{
u32test(a,b,c uint32) {
d := a%c;
if d != b {
panicln("u32", a, b, c, d);
@ -210,8 +199,7 @@ u32test(a,b,c uint32)
}
func
u32run()
{
u32run() {
var a, b uint32;
for i:=0; i<Count; i++ {
@ -238,8 +226,7 @@ u32run()
}
func
i16rand() int16
{
i16rand() int16 {
for {
a := int16(rand.Uint32());
a >>= uint(rand.Intn(16));
@ -251,8 +238,7 @@ i16rand() int16
}
func
i16test(a,b,c int16)
{
i16test(a,b,c int16) {
d := a%c;
if d != b {
panicln("i16", a, b, c, d);
@ -260,8 +246,7 @@ i16test(a,b,c int16)
}
func
i16run()
{
i16run() {
var a, b int16;
for i:=0; i<Count; i++ {
@ -306,16 +291,14 @@ i16run()
}
func
u16rand() uint16
{
u16rand() uint16 {
a := uint16(rand.Uint32());
a >>= uint(rand.Intn(16));
return a;
}
func
u16test(a,b,c uint16)
{
u16test(a,b,c uint16) {
d := a%c;
if d != b {
panicln("u16", a, b, c, d);
@ -323,8 +306,7 @@ u16test(a,b,c uint16)
}
func
u16run()
{
u16run() {
var a, b uint16;
for i:=0; i<Count; i++ {
@ -351,8 +333,7 @@ u16run()
}
func
i8rand() int8
{
i8rand() int8 {
for {
a := int8(rand.Uint32());
a >>= uint(rand.Intn(8));
@ -364,8 +345,7 @@ i8rand() int8
}
func
i8test(a,b,c int8)
{
i8test(a,b,c int8) {
d := a%c;
if d != b {
panicln("i8", a, b, c, d);
@ -373,8 +353,7 @@ i8test(a,b,c int8)
}
func
i8run()
{
i8run() {
var a, b int8;
for i:=0; i<Count; i++ {
@ -416,16 +395,14 @@ i8run()
}
func
u8rand() uint8
{
u8rand() uint8 {
a := uint8(rand.Uint32());
a >>= uint(rand.Intn(8));
return a;
}
func
u8test(a,b,c uint8)
{
u8test(a,b,c uint8) {
d := a%c;
if d != b {
panicln("u8", a, b, c, d);
@ -433,8 +410,7 @@ u8test(a,b,c uint8)
}
func
u8run()
{
u8run() {
var a, b uint8;
for i:=0; i<Count; i++ {
@ -459,8 +435,7 @@ u8run()
}
func
main()
{
main() {
xtest();
i64run();
u64run();
@ -473,6 +448,5 @@ main()
}
func
xtest()
{
xtest() {
}

View File

@ -7,21 +7,17 @@
package main
type C struct
{
type C struct {
a int;
x func(p *C)int;
}
func
(this *C) f()int
{
func (this *C) f()int {
return this.a;
}
func
main()
{
main() {
var v int;
var c *C;
@ -39,9 +35,7 @@ main()
if v != 6 { panic(v); }
}
func
g(p *C)int
{
func g(p *C)int {
var v int;
v = p.a;

View File

@ -12,8 +12,7 @@ var g1 x2;
var g2 struct { a,b,c int; d x2; };
func
main()
{
main() {
var x int;
var s1 *x2;
var s2 *struct { a,b,c int; d x2; };

View File

@ -13,14 +13,12 @@ var p []byte;
var m map[int]byte;
func
f(k int) byte
{
f(k int) byte {
return byte(k*10007 % size);
}
func
init()
{
init() {
p = make([]byte, size);
m = make(map[int]byte);
for k:=0; k<size; k++ {
@ -32,8 +30,7 @@ init()
}
func
main()
{
main() {
var i int;
/*

View File

@ -6,40 +6,31 @@
package main
type Item interface
{
type Item interface {
Print();
}
type ListItem struct
{
type ListItem struct {
item Item;
next *ListItem;
}
type List struct
{
type List struct {
head *ListItem;
}
func (list *List)
Init()
{
func (list *List) Init() {
list.head = nil;
}
func (list *List)
Insert(i Item)
{
func (list *List) Insert(i Item) {
item := new(ListItem);
item.item = i;
item.next = list.head;
list.head = item;
}
func (list *List)
Print()
{
func (list *List) Print() {
i := list.head;
for i != nil {
i.item.Print();
@ -48,27 +39,21 @@ Print()
}
// Something to put in a list
type Integer struct
{
type Integer struct {
val int;
}
func (this *Integer)
Init(i int) *Integer
{
func (this *Integer) Init(i int) *Integer {
this.val = i;
return this;
}
func (this *Integer)
Print()
{
func (this *Integer) Print() {
print(this.val);
}
func
main()
{
main() {
list := new(List);
list.Init();
for i := 0; i < 10; i = i + 1 {

View File

@ -72,8 +72,7 @@ var tokenlen int = 0;
const EOF int = -1;
func main()
{
func main() {
var list *Slist;
OpenFile();
@ -88,8 +87,7 @@ func main()
}
}
func (slist *Slist) PrintOne(doparen bool)
{
func (slist *Slist) PrintOne(doparen bool) {
if slist == nil {
return;
}
@ -114,14 +112,12 @@ func (slist *Slist) PrintOne(doparen bool)
}
}
func (slist *Slist) Print()
{
func (slist *Slist) Print() {
slist.PrintOne(true);
print("\n");
}
func Get() int
{
func Get() int {
var c int;
if peekc >= 0 {
@ -141,13 +137,11 @@ func Get() int
return c;
}
func WhiteSpace(c int) bool
{
func WhiteSpace(c int) bool {
return c == ' ' || c == '\t' || c == '\r' || c == '\n';
}
func NextToken()
{
func NextToken() {
var i, c int;
tokenbuf[0] = nilchar; // clear previous token
@ -187,8 +181,7 @@ func NextToken()
}
}
func Expect(c int)
{
func Expect(c int) {
if token != c {
print("parse error: expected ", c, "\n");
panic("parse");
@ -197,8 +190,7 @@ func Expect(c int)
}
// Parse a non-parenthesized list up to a closing paren or EOF
func ParseList() *Slist
{
func ParseList() *Slist {
var slist, retval *Slist;
slist = new(Slist);
@ -219,8 +211,7 @@ func ParseList() *Slist
return retval;
}
func atom(i int) *Slist // BUG: uses tokenbuf; should take argument
{
func atom(i int) *Slist { // BUG: uses tokenbuf; should take argument)
var slist *Slist;
slist = new(Slist);
@ -235,8 +226,7 @@ func atom(i int) *Slist // BUG: uses tokenbuf; should take argument
return slist;
}
func atoi() int // BUG: uses tokenbuf; should take argument
{
func atoi() int { // BUG: uses tokenbuf; should take argument)
var v int = 0;
for i := 0; i < tokenlen && '0' <= tokenbuf[i] && tokenbuf[i] <= '9'; i = i + 1 {
v = 10 * v + int(tokenbuf[i] - '0');
@ -244,8 +234,7 @@ func atoi() int // BUG: uses tokenbuf; should take argument
return v;
}
func Parse() *Slist
{
func Parse() *Slist {
var slist *Slist;
if token == EOF || token == ')' {
@ -275,8 +264,7 @@ func Parse() *Slist
return nil;
}
func OpenFile()
{
func OpenFile() {
input = "(defn foo (add 12 34))\n\x00";
inputindex = 0;
peekc = -1; // BUG

View File

@ -11,8 +11,7 @@ var uans [18]uint;
var pass string;
func
testi(i int, t1,t2,t3 int)
{
testi(i int, t1,t2,t3 int) {
n := ((t1*3) + t2)*2 + t3;
if i != ians[n] {
print("itest ", t1,t2,t3,pass,
@ -21,14 +20,12 @@ testi(i int, t1,t2,t3 int)
}
func
index(t1,t2,t3 int) int
{
index(t1,t2,t3 int) int {
return ((t1*3) + t2)*2 + t3;
}
func
testu(u uint, t1,t2,t3 int)
{
testu(u uint, t1,t2,t3 int) {
n := index(t1,t2,t3);
if u != uans[n] {
print("utest ", t1,t2,t3,pass,
@ -37,8 +34,7 @@ testu(u uint, t1,t2,t3 int)
}
func
main()
{
main() {
var i int;
var u,c uint;
@ -95,8 +91,7 @@ main()
}
func
init()
{
init() {
/*
* set the 'correct' answer
*/

View File

@ -9,8 +9,7 @@ package main
var b[10] float32;
func
main()
{
main() {
var a[10] float32;
for i:=int16(5); i<10; i=i+1 {

View File

@ -6,15 +6,13 @@
package main
type s struct
{
type s struct {
a bool;
b bool;
}
func
main()
{
main() {
var a,b bool;
a = true;

View File

@ -10,8 +10,7 @@ type vlong int64;
type short int16;
func
main()
{
main() {
s1 := vlong(0);
for i:=short(0); i<10; i=i+1 {
s1 = s1 + vlong(i);

View File

@ -8,8 +8,7 @@
package main
func
main()
{
main() {
var x int;
x = fun(10,20,30);
@ -17,8 +16,7 @@ main()
}
func
fun(ia,ib,ic int)int
{
fun(ia,ib,ic int)int {
var o int;
o = ia+ib+ic;

View File

@ -8,7 +8,6 @@
package main
func
main()
{
main() {
print("hello world\n");
}

View File

@ -7,8 +7,7 @@
package main
func
main()
{
main() {
a := 3;
for i:=0; i<10; i=i+1 {
switch(i) {

View File

@ -10,8 +10,7 @@ package main
var x,y int;
func
main()
{
main() {
x = 15;
y = 20;

View File

@ -14,8 +14,7 @@ var lb,hb int
var t int
func
main()
{
main() {
lb = 0; hb = 10;
by = &bx; tstb();
@ -82,8 +81,7 @@ main()
}
func
tstb()
{
tstb() {
t++;
if len(by) != hb-lb {
panicln("t=", t, "lb=", lb, "hb=", hb,
@ -104,8 +102,7 @@ tstb()
}
func
tstf()
{
tstf() {
t++;
if len(fy) != hb-lb {
panicln("t=", t, "lb=", lb, "hb=", hb,
@ -126,8 +123,7 @@ tstf()
}
func
init()
{
init() {
for i:=0; i<len(bx); i++ {
bx[i] = byte(i+20);
}

View File

@ -14,8 +14,7 @@ var lb,hb int
var t int
func
main()
{
main() {
// width 1 (byte)
lb = 0; hb = 10;
@ -77,8 +76,7 @@ main()
}
func
tstb()
{
tstb() {
t++;
if len(by) != hb-lb {
panicln("t=", t, "lb=", lb, "hb=", hb,
@ -99,8 +97,7 @@ tstb()
}
func
tstf()
{
tstf() {
t++;
if len(fy) != hb-lb {
panicln("t=", t, "lb=", lb, "hb=", hb,
@ -121,8 +118,7 @@ tstf()
}
func
init()
{
init() {
bx = make([]byte, 10);
for i:=0; i<len(bx); i++ {
bx[i] = byte(i+20);

View File

@ -8,8 +8,7 @@
package main
func
main()
{
main() {
var c string;
a := `abc`;

View File

@ -12,8 +12,7 @@ var g1 x2;
var g2 struct { a,b,c int; d x2; };
func
main()
{
main() {
var x int;
var s1 *x2;
var s2 *struct { a,b,c int; d x2; };