-
Notifications
You must be signed in to change notification settings - Fork 18.3k
Closed
Labels
FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.
Milestone
Description
In the following program go/parser/printer turn a correct program into incorrect one, and so the second parsing fails:
package main
import (
"bytes"
"fmt"
"go/parser"
"go/printer"
"go/token"
)
func main() {
data := []byte("package A /**\r/*/\n")
fset := token.NewFileSet()
f, err := parser.ParseFile(fset, "src.go", data, parser.ParseComments|parser.DeclarationErrors|parser.AllErrors)
if err != nil {
return
}
buf := new(bytes.Buffer)
printer.Fprint(buf, fset, f)
fset1 := token.NewFileSet()
_, err = parser.ParseFile(fset1, "src.go", buf.Bytes(), parser.ParseComments|parser.DeclarationErrors|parser.AllErrors)
if err != nil {
fmt.Printf("source0: %q\n", data)
fmt.Printf("source1: %q\n", buf.Bytes())
panic(err)
}
}
source0: "package A\t/**\r/*/\n"
source1: "package A\t/**/*/\n"
panic: src.go:1:15: expected ';', found '*'
go version devel +b0532a9 Mon Jun 8 05:13:15 2015 +0000 linux/amd64
Metadata
Metadata
Assignees
Labels
FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.