From: Robert Griesemer Date: Mon, 8 Jun 2009 21:07:20 +0000 (-0700) Subject: - bug fix: no need to add extra '.' when renaming custom formatters X-Git-Tag: weekly.2009-11-06~1426 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=eec4991863ab2cccca6f2ae9833db0f3ea18ae20;p=gostls13.git - bug fix: no need to add extra '.' when renaming custom formatters - added corresponding test case R=rsc DELTA=10 (7 added, 1 deleted, 2 changed) OCL=30055 CL=30059 --- diff --git a/src/lib/datafmt/datafmt_test.go b/src/lib/datafmt/datafmt_test.go index 74c87aee86..788c013c6e 100644 --- a/src/lib/datafmt/datafmt_test.go +++ b/src/lib/datafmt/datafmt_test.go @@ -54,6 +54,9 @@ func formatter(s *State, value interface{}, rule_name string) bool { return true; case "nil": return false; + case "testing.T": + s.Write(io.StringBytes("testing.T")); + return true; } panic("unreachable"); return false; @@ -63,6 +66,7 @@ func formatter(s *State, value interface{}, rule_name string) bool { func TestCustomFormatters(t *testing.T) { fmap0 := FormatterMap{ "/": formatter }; fmap1 := FormatterMap{ "int": formatter, "blank": formatter, "nil": formatter }; + fmap2 := FormatterMap{ "testing.T": formatter }; f := parse(t, `int=`, fmap0); verify(t, f, ``, 1, 2, 3); @@ -82,6 +86,9 @@ func TestCustomFormatters(t *testing.T) { f = parse(t, `float=@:nil`, fmap1); verify(t, f, ``, 0.0, 1.0, 2.0); + f = parse(t, `testing "testing"; ptr=*`, fmap2); + verify(t, f, `testing.T`, t); + // TODO needs more tests } diff --git a/src/lib/datafmt/parser.go b/src/lib/datafmt/parser.go index 3fe89f9151..0d597dcb5f 100644 --- a/src/lib/datafmt/parser.go +++ b/src/lib/datafmt/parser.go @@ -399,11 +399,10 @@ func (p *parser) parseFormat() { func remap(p *parser, name string) string { i := strings.Index(name, "."); if i >= 0 { - packageName := name[0 : i]; - typeName := name[i : len(name)]; + packageName, suffix := name[0 : i], name[i : len(name)]; // lookup package if importPath, found := p.packs[packageName]; found { - name = importPath + "." + typeName; + name = importPath + suffix; } else { var invalidPos token.Position; p.Error(invalidPos, "package not declared: " + packageName);