1
0
mirror of https://github.com/golang/go synced 2024-11-25 04:47:57 -07:00

- fixed a few tests and added 3 incorrectly succeeding tests

- updated go_lang.txt to be more uniform and match the implementation
- made makehtml work on Mac
- fixed a couple of bugs in go.atg

SVN=121520
This commit is contained in:
Robert Griesemer 2008-06-06 15:53:14 -07:00
parent 2f538554f6
commit e92b753810
8 changed files with 67 additions and 10 deletions

View File

@ -4,7 +4,7 @@ The Go Programming Language (DRAFT)
Robert Griesemer, Rob Pike, Ken Thompson
----
(May 14, 2008)
(June 6, 2008)
This document is a semi-informal specification/proposal for a new
systems programming language. The document is under active
@ -1563,17 +1563,19 @@ If statements
If statements have the traditional form except that the
condition need not be parenthesized and the "then" statement
must be in brace brackets.
must be in brace brackets. The condition may be omitted in which
case it is assumed to have the value "true".
IfStat = "if" [ SimpleStat ";" ] Expression Block [ "else" Statement ] .
IfStat = "if" [ [ SimpleStat ";" ] Expression ] Block [ "else" Statement ] .
if x > 0 {
return true;
}
An if statement may include the declaration of a single temporary variable.
An "if" statement may include the declaration of a single temporary variable.
The scope of the declared variable extends to the end of the if statement, and
the variable is initialized once before the statement is entered.
the variable is initialized once before the statement is entered. If a variable
is declared, the condition cannot be omitted.
if x := f(); x < y {
return x;

View File

@ -36,12 +36,12 @@ func f6(a int) (r int) {
return 6;
}
func f7(a int) (int, float) {
func f7(a int) (x int, y float) {
return 7, 7.0;
}
func f8(a int) (a int, b float) {
func f8(a int) (x int, y float) {
return 8, 8.0;
}

16
test/func1.go Normal file
View File

@ -0,0 +1,16 @@
// errchk $G $F.go
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
func f1(a int) (int, float) { // BUG multiple return values must have names
return 7, 7.0;
}
func f2(a int) (a int, b float) { // BUG return value names must be different from parameter names
return 8, 8.0;
}

View File

@ -23,6 +23,9 @@ main_f4: doasm: notfound from=75 to=10 (24) IDIVL $2,AX
main_f4: doasm: notfound from=75 to=10 (24) IDIVL $2,AX
BUG: known to fail incorrectly
=========== ./func1.go
BUG: known to succeed incorrectly
=========== ./hashmap.go
hashmap.go:46: fatal error: optoas: no entry LSH-<uint32>UINT32
BUG: known to fail incorrectly
@ -32,6 +35,9 @@ hello, world
=========== ./if.go
=========== ./if1.go
BUG: known to succeed incorrectly
=========== ./int_lit.go
int_lit.go:5: syntax error
BUG: known to fail incorrectly
@ -52,6 +58,9 @@ BUG: known to fail incorrectly
=========== ./switch.go
=========== ./switch1.go
BUG: known to succeed incorrectly
=========== ./test0.go
test0.go:23: addtyp: renaming Point/<Point>{<x><int32>INT32;<y><int32>INT32;} to Point2/<Point2>FORW
test0.go:48: illegal types for operand

View File

@ -50,7 +50,7 @@ func main() {
assertequal(count, 1, "if empty");
count = 0;
if one := 1; {
if one := 1; true {
count = count + one;
}
assertequal(count, 1, "if empty one");

14
test/if1.go Normal file
View File

@ -0,0 +1,14 @@
// $G $F.go && $L $F.$A && ./$A.out
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
func main() {
count := 0;
if one := 1; { // BUG if there is a simple stat, the condition must be present
count = count + one;
}
}

View File

@ -35,7 +35,7 @@ func main() {
case i5 > x: assert(false, ">");
}
switch x := 5; { // BUG?: true should not be necessary but now made mandatory in go_lang.txt
switch x := 5; true {
case i5 < x: assert(false, "<");
case i5 == x: assert(true, "!");
case i5 > x: assert(false, ">");

16
test/switch1.go Normal file
View File

@ -0,0 +1,16 @@
// $G $F.go && $L $F.$A && ./$A.out
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
func main() {
i := 0;
switch x := 5; { // BUG if there is a simple stat, the condition must be present
case i < x:
case i == x:
case i > x:
}
}