]> Cypherpunks repositories - gostls13.git/commitdiff
exp/template: simpler parse of char constants.
authorRob Pike <r@golang.org>
Mon, 11 Jul 2011 02:36:10 +0000 (12:36 +1000)
committerRob Pike <r@golang.org>
Mon, 11 Jul 2011 02:36:10 +0000 (12:36 +1000)
We can avoid the check against empty constants (''),
which UnquoteChar doesn't handle well, by leaving on
the trailing quote and seeing that's all we have left at the end.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4657090

src/pkg/exp/template/parse.go

index 77d554d3b5fcee4f3538153a2039619e7957004b..38a415dbd5254f6e9c32ecf2535508b15c1c3c68 100644 (file)
@@ -293,15 +293,12 @@ func newNumber(text string, typ itemType) (*numberNode, os.Error) {
        n := &numberNode{nodeType: nodeNumber, text: text}
        switch typ {
        case itemChar:
-               if len(text) < 3 {
-                       return nil, fmt.Errorf("illegal character constant: %s", text)
-               }
-               rune, _, tail, err := strconv.UnquoteChar(text[1:len(text)-1], text[0])
+               rune, _, tail, err := strconv.UnquoteChar(text[1:], text[0])
                if err != nil {
                        return nil, err
                }
-               if len(tail) > 0 {
-                       return nil, fmt.Errorf("extra bytes in character constant: %s", text)
+               if tail != "'" {
+                       return nil, fmt.Errorf("malformed character constant: %s", text)
                }
                n.int64 = int64(rune)
                n.isInt = true