summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-06-29 17:46:22 -0700
committerRuss Cox <rsc@golang.org>2009-06-29 17:46:22 -0700
commita18ca5885b3f319e7301e40659af894aa6efbd9a (patch)
treedfa5ebf53466f3b32c401ea9f436cdf694f1bc23
parent7f67a16abc6a2abcef01ceefbb5823da088e03f7 (diff)
downloadgolang-a18ca5885b3f319e7301e40659af894aa6efbd9a.tar.gz
bug163 bug164 bug166
R=ken OCL=30889 CL=30889
-rw-r--r--src/cmd/gc/go.y3
-rw-r--r--src/cmd/gc/lex.c11
-rw-r--r--src/pkg/http/request.go2
-rw-r--r--test/fixedbugs/bug163.go (renamed from test/bugs/bug163.go)2
-rw-r--r--test/fixedbugs/bug164.go (renamed from test/bugs/bug164.go)3
-rw-r--r--test/fixedbugs/bug166.go (renamed from test/bugs/bug166.go)0
-rw-r--r--test/golden.out9
7 files changed, 12 insertions, 18 deletions
diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y
index 8e844e342..fa6e1c752 100644
--- a/src/cmd/gc/go.y
+++ b/src/cmd/gc/go.y
@@ -344,7 +344,8 @@ common_dcl:
varoptsemi:
{
- yyoptsemi('=');
+ if(yylast == LSEMIBRACE)
+ yyoptsemi('=');
}
vardcl:
diff --git a/src/cmd/gc/lex.c b/src/cmd/gc/lex.c
index 05671cc38..586dc47d5 100644
--- a/src/cmd/gc/lex.c
+++ b/src/cmd/gc/lex.c
@@ -811,10 +811,13 @@ talph:
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 59801e1eb..0cc83a8b8 100644
--- a/src/pkg/http/request.go
+++ b/src/pkg/http/request.go
@@ -173,7 +173,7 @@ func (req *Request) write(w io.Writer) os.Error {
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/bug163.go b/test/fixedbugs/bug163.go
index 30d2cab5d..c1eec4cdb 100644
--- a/test/bugs/bug163.go
+++ b/test/fixedbugs/bug163.go
@@ -9,5 +9,5 @@ package main
import "fmt"
func main() {
- 日本語 := 1; // Japanese ideographs are not letters
+ 日本語 := 1; // ERROR "identifier"
}
diff --git a/test/bugs/bug164.go b/test/fixedbugs/bug164.go
index 7a78c86f2..746f631ae 100644
--- a/test/bugs/bug164.go
+++ b/test/fixedbugs/bug164.go
@@ -6,8 +6,7 @@
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.
+// Multi-line string literal now allowed.
const s = `
Hello, World!
diff --git a/test/bugs/bug166.go b/test/fixedbugs/bug166.go
index 81fe0808c..81fe0808c 100644
--- a/test/bugs/bug166.go
+++ b/test/fixedbugs/bug166.go
diff --git a/test/golden.out b/test/golden.out
index d83fd0cf8..3f15f4839 100644
--- a/test/golden.out
+++ b/test/golden.out
@@ -105,15 +105,6 @@ BUG: bug159
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