@@ -37,21 +37,25 @@ func (f *FuncDefinition) Key() string {
3737 case * ast.Ident :
3838 return f .pkg .PkgPath + "." + t .Name + "." + f .Decl .Name .Name
3939 case * ast.StarExpr :
40- i , ok := t .X .(* ast.Ident )
41- if ! ok {
42- fmt .Printf ("invalid function receiver at %s" , f .pkg .Fset .Position (receiver .Pos ()).String ())
43- break
40+ switch i := t .X .(type ) {
41+ case * ast.Ident :
42+ return "*" + f .pkg .PkgPath + "." + i .Name + "." + f .Decl .Name .Name
43+ case * ast.IndexExpr :
44+ // 范型未被完全支持,暂时先这样处理
45+ _i , ok := i .X .(* ast.Ident )
46+ if ! ok {
47+ return ""
48+ }
49+ return "*" + f .pkg .PkgPath + "." + _i .Name + "." + f .Decl .Name .Name
50+ default :
51+ fmt .Printf ("invalid function receiver at %s\n " , f .pkg .Fset .Position (receiver .Pos ()).String ())
4452 }
45- return "*" + f .pkg .PkgPath + "." + i .Name + "." + f .Decl .Name .Name
53+ case * ast.IndexExpr :
54+ // 范型未被完全支持,暂时先这样处理
55+ return ""
4656 default :
47- fmt .Printf ("invalid function receiver at %s" , f .pkg .Fset .Position (receiver .Pos ()).String ())
57+ fmt .Printf ("invalid function receiver at %s\n " , f .pkg .Fset .Position (receiver .Pos ()).String ())
4858 }
49- ident , ok := receiver .Type .(* ast.Ident )
50- if ! ok {
51- fmt .Printf ("invalid function receiver at %s" , f .pkg .Fset .Position (receiver .Pos ()).String ())
52- return f .pkg .PkgPath + "." + f .Decl .Name .Name
53- }
54- return f .pkg .PkgPath + "." + ident .Name + f .Decl .Name .Name
5559 }
5660
5761 return f .pkg .PkgPath + "." + f .Decl .Name .Name
@@ -121,7 +125,10 @@ func (t *TypeDefinition) RefKey(typeArgs ...*spec.SchemaRef) string {
121125type Definitions map [string ]Definition
122126
123127func (d * Definitions ) Set (def Definition ) {
124- (* d )[def .Key ()] = def
128+ k := def .Key ()
129+ if k != "" {
130+ (* d )[k ] = def
131+ }
125132}
126133
127134func (d * Definitions ) Get (key string ) Definition {
0 commit comments