diff options
author | Russ Cox <rsc@golang.org> | 2009-06-29 17:46:22 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2009-06-29 17:46:22 -0700 |
commit | a18ca5885b3f319e7301e40659af894aa6efbd9a (patch) | |
tree | dfa5ebf53466f3b32c401ea9f436cdf694f1bc23 | |
parent | 7f67a16abc6a2abcef01ceefbb5823da088e03f7 (diff) | |
download | golang-a18ca5885b3f319e7301e40659af894aa6efbd9a.tar.gz |
bug163 bug164 bug166
R=ken
OCL=30889
CL=30889
-rw-r--r-- | src/cmd/gc/go.y | 3 | ||||
-rw-r--r-- | src/cmd/gc/lex.c | 11 | ||||
-rw-r--r-- | src/pkg/http/request.go | 2 | ||||
-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.out | 9 |
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 |