bug163 bug164 bug166
R=ken
OCL=30889
CL=30889
diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y
index 8e844e3..fa6e1c7 100644
--- a/src/cmd/gc/go.y
+++ b/src/cmd/gc/go.y
@@ -344,7 +344,8 @@
varoptsemi:
{
- yyoptsemi('=');
+ if(yylast == LSEMIBRACE)
+ yyoptsemi('=');
}
vardcl:
diff --git a/src/cmd/gc/lex.c b/src/cmd/gc/lex.c
index 05671cc..586dc47 100644
--- a/src/cmd/gc/lex.c
+++ b/src/cmd/gc/lex.c
@@ -811,10 +811,13 @@
cp[c1++] = c;
if(fullrune(cp, c1)) {
chartorune(&rune, cp);
- if(isfrog(rune)) {
- yyerror("illegal character 0x%ux", rune);
- goto l0;
- }
+ if(isfrog(rune)) {
+ yyerror("illegal character 0x%ux", rune);
+ goto l0;
+ }
+ // 0xb7 · is used for internal names
+ if(!isalpharune(c) && !isdigitrune(c) && c != 0xb7)
+ yyerror("invalid identifier character 0x%ux", rune);
break;
}
c = getc();
diff --git a/src/pkg/http/request.go b/src/pkg/http/request.go
index 59801e1..0cc83a8 100644
--- a/src/pkg/http/request.go
+++ b/src/pkg/http/request.go
@@ -173,7 +173,7 @@
Loop:
for {
var nr, nw int;
- var er, ew os.Error
+ var er, ew os.Error;
if nr, er = req.Body.Read(buf); nr > 0 {
if er == nil || er == os.EOF {
fmt.Fprintf(w, "%x\r\n", nr);
diff --git a/test/bugs/bug164.go b/test/bugs/bug164.go
deleted file mode 100644
index 7a78c86..0000000
--- a/test/bugs/bug164.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// $G $D/$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
-
-// Multi-line string literal do not allow newline chars according to spec
-// but 6g accepts this code with the newlines interpreted as newlines.
-
-const s = `
-Hello, World!
-`
-
-func main() {
- print(s)
-}
diff --git a/test/bugs/bug163.go b/test/fixedbugs/bug163.go
similarity index 80%
rename from test/bugs/bug163.go
rename to test/fixedbugs/bug163.go
index 30d2cab..c1eec4c 100644
--- a/test/bugs/bug163.go
+++ b/test/fixedbugs/bug163.go
@@ -9,5 +9,5 @@
import "fmt"
func main() {
- 日本語 := 1; // Japanese ideographs are not letters
+ 日本語 := 1; // ERROR "identifier"
}
diff --git a/test/bugs/bug163.go b/test/fixedbugs/bug164.go
similarity index 66%
copy from test/bugs/bug163.go
copy to test/fixedbugs/bug164.go
index 30d2cab..746f631 100644
--- a/test/bugs/bug163.go
+++ b/test/fixedbugs/bug164.go
@@ -1,4 +1,4 @@
-// errchk $G $D/$F.go
+// $G $D/$F.go
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
@@ -6,8 +6,12 @@
package main
-import "fmt"
+// Multi-line string literal now allowed.
+
+const s = `
+Hello, World!
+`
func main() {
- 日本語 := 1; // Japanese ideographs are not letters
+ print(s)
}
diff --git a/test/bugs/bug166.go b/test/fixedbugs/bug166.go
similarity index 100%
rename from test/bugs/bug166.go
rename to test/fixedbugs/bug166.go
diff --git a/test/golden.out b/test/golden.out
index d83fd0c..3f15f48 100644
--- a/test/golden.out
+++ b/test/golden.out
@@ -105,15 +105,6 @@
123
BUG: should fail
-=========== bugs/bug163.go
-BUG: should not compile
-
-=========== bugs/bug164.go
-BUG: should not compile
-
-=========== bugs/bug166.go
-BUG: errchk: command succeeded unexpectedly: 6g bugs/bug166.go
-
=========== fixedbugs/bug016.go
fixedbugs/bug016.go:7: constant -3 overflows uint