]> Cypherpunks repositories - gostls13.git/commitdiff
- bug fix: no need to add extra '.' when renaming custom formatters
authorRobert Griesemer <gri@golang.org>
Mon, 8 Jun 2009 21:07:20 +0000 (14:07 -0700)
committerRobert Griesemer <gri@golang.org>
Mon, 8 Jun 2009 21:07:20 +0000 (14:07 -0700)
- added corresponding test case

R=rsc
DELTA=10  (7 added, 1 deleted, 2 changed)
OCL=30055
CL=30059

src/lib/datafmt/datafmt_test.go
src/lib/datafmt/parser.go

index 74c87aee865294b07454dc40227497315905dfa0..788c013c6e508c458121cb437c629be4a35b0627 100644 (file)
@@ -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
 }
 
index 3fe89f9151ccc7e4720efd29111d7d57581ada8d..0d597dcb5f4b66e808985f53e1a904cf9177e4b4 100644 (file)
@@ -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);