]> Cypherpunks repositories - gostls13.git/commitdiff
- fixed a few tests and added 3 incorrectly succeeding tests
authorRobert Griesemer <gri@golang.org>
Fri, 6 Jun 2008 22:53:14 +0000 (15:53 -0700)
committerRobert Griesemer <gri@golang.org>
Fri, 6 Jun 2008 22:53:14 +0000 (15:53 -0700)
- 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

doc/go_lang.txt
test/func.go
test/func1.go [new file with mode: 0644]
test/golden.out
test/if.go
test/if1.go [new file with mode: 0644]
test/switch.go
test/switch1.go [new file with mode: 0644]

index 3b908f1e02d23064aa8e4be8629dbca3a7e204a8..c8597f56ddcec65f903deebe4096ff2f30fd4e7b 100644 (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;
index 0bb551f45b1849523f8bb1c22fcbf1a5a2cbae48..e5cb1e5512497edbd3a840817af04a6844c9bc62 100644 (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;
 }
 
diff --git a/test/func1.go b/test/func1.go
new file mode 100644 (file)
index 0000000..2f92c35
--- /dev/null
@@ -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;
+}
index 56105a57ce27bdb7703abcf861037b0348e6a2af..cc611d402bf8ea5aab520d49782ab8c1d1653a48 100644 (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
index 2018f7018ca7d83af46bcfb98445c4825a9d4bc0..beb7d6b0fb3b47707329739a239b9250e8bf89a2 100644 (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");
diff --git a/test/if1.go b/test/if1.go
new file mode 100644 (file)
index 0000000..67a58cd
--- /dev/null
@@ -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;    
+       }
+}
index 1184230db2dffd7d71808ac30f0d6b4a0b54101b..602265631ec0fb97f5d853676b1e88351d7cd534 100644 (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, ">");
diff --git a/test/switch1.go b/test/switch1.go
new file mode 100644 (file)
index 0000000..f2f006f
--- /dev/null
@@ -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:
+       }
+}