@@ -190,7 +190,7 @@ func actionDoc(s *Session, in string) (string, error) {
190190 s .storeMainBody ()
191191 defer s .restoreMainBody ()
192192
193- expr , err := s .evalExpr (in )
193+ exprs , err := s .evalExpr (in )
194194 if err != nil {
195195 return "" , err
196196 }
@@ -206,33 +206,35 @@ func actionDoc(s *Session, in string) (string, error) {
206206 debugf ("typecheck error (ignored): %s" , err )
207207 }
208208
209- // :doc patterns:
210- // - "json" -> "encoding/json" (package name)
211- // - "json.Encoder" -> "encoding/json", "Encoder" (package member)
212- // - "json.NewEncoder(nil).Encode" -> "encoding/json", "Decode" (package type member)
213209 var docObj types.Object
214- if sel , ok := expr .(* ast.SelectorExpr ); ok {
215- // package member, package type member
216- docObj = s .TypeInfo .ObjectOf (sel .Sel )
217- } else if t := s .TypeInfo .TypeOf (expr ); t != nil && t != types .Typ [types .Invalid ] {
218- for {
219- if pt , ok := t .(* types.Pointer ); ok {
220- t = pt .Elem ()
221- } else {
222- break
210+ for _ , expr := range exprs {
211+ // :doc patterns:
212+ // - "json" -> "encoding/json" (package name)
213+ // - "json.Encoder" -> "encoding/json", "Encoder" (package member)
214+ // - "json.NewEncoder(nil).Encode" -> "encoding/json", "Decode" (package type member)
215+ if sel , ok := expr .(* ast.SelectorExpr ); ok {
216+ // package member, package type member
217+ docObj = s .TypeInfo .ObjectOf (sel .Sel )
218+ } else if t := s .TypeInfo .TypeOf (expr ); t != nil && t != types .Typ [types .Invalid ] {
219+ for {
220+ if pt , ok := t .(* types.Pointer ); ok {
221+ t = pt .Elem ()
222+ } else {
223+ break
224+ }
223225 }
226+ switch t := t .(type ) {
227+ case * types.Named :
228+ docObj = t .Obj ()
229+ case * types.Basic :
230+ // builtin types
231+ docObj = types .Universe .Lookup (t .Name ())
232+ }
233+ } else if ident , ok := expr .(* ast.Ident ); ok {
234+ // package name
235+ mainScope := s .TypeInfo .Scopes [s .mainFunc ().Type ]
236+ _ , docObj = mainScope .LookupParent (ident .Name , ident .NamePos )
224237 }
225- switch t := t .(type ) {
226- case * types.Named :
227- docObj = t .Obj ()
228- case * types.Basic :
229- // builtin types
230- docObj = types .Universe .Lookup (t .Name ())
231- }
232- } else if ident , ok := expr .(* ast.Ident ); ok {
233- // package name
234- mainScope := s .TypeInfo .Scopes [s .mainFunc ().Type ]
235- _ , docObj = mainScope .LookupParent (ident .Name , ident .NamePos )
236238 }
237239
238240 if docObj == nil {
0 commit comments