Commit 0027dc91 authored by Rob Pike's avatar Rob Pike

exp/template: simpler parse of char constants.

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
parent bf9531f8
...@@ -293,15 +293,12 @@ func newNumber(text string, typ itemType) (*numberNode, os.Error) { ...@@ -293,15 +293,12 @@ func newNumber(text string, typ itemType) (*numberNode, os.Error) {
n := &numberNode{nodeType: nodeNumber, text: text} n := &numberNode{nodeType: nodeNumber, text: text}
switch typ { switch typ {
case itemChar: case itemChar:
if len(text) < 3 { rune, _, tail, err := strconv.UnquoteChar(text[1:], text[0])
return nil, fmt.Errorf("illegal character constant: %s", text)
}
rune, _, tail, err := strconv.UnquoteChar(text[1:len(text)-1], text[0])
if err != nil { if err != nil {
return nil, err return nil, err
} }
if len(tail) > 0 { if tail != "'" {
return nil, fmt.Errorf("extra bytes in character constant: %s", text) return nil, fmt.Errorf("malformed character constant: %s", text)
} }
n.int64 = int64(rune) n.int64 = int64(rune)
n.isInt = true n.isInt = true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment