mirror of
https://github.com/golang/go
synced 2024-11-25 01:57:56 -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:
parent
2f538554f6
commit
e92b753810
@ -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;
|
||||
}
|
||||
|
||||
|
16
test/func1.go
Normal file
16
test/func1.go
Normal 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;
|
||||
}
|
@ -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");
|
||||
|
14
test/if1.go
Normal file
14
test/if1.go
Normal 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;
|
||||
}
|
||||
}
|
@ -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
16
test/switch1.go
Normal 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:
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user