mirror of
https://github.com/golang/go
synced 2024-11-18 12:54:44 -07:00
- 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
This commit is contained in:
parent
cd80000d8d
commit
eec4991863
@ -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
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user