Commit e92b7538 authored by Robert Griesemer's avatar Robert Griesemer

- 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
parent 2f538554
......@@ -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;
......
......@@ -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;
}
......
// 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;
}
......@@ -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
......
......@@ -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");
......
// $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;
}
}
......@@ -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, ">");
......
// $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:
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment