Skip to content

Commit 99322d5

Browse files
committed
Update extractor to deal with type parameters on alias types
1 parent 77858c3 commit 99322d5

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

go/extractor/extractor.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -475,12 +475,12 @@ func extractObjects(tw *trap.Writer, scope *types.Scope, scopeLabel trap.Label)
475475
populateTypeParamParents(funcObj.Type().(*types.Signature).TypeParams(), obj)
476476
populateTypeParamParents(funcObj.Type().(*types.Signature).RecvTypeParams(), obj)
477477
}
478-
// Populate type parameter parents for named types. Note that we
479-
// skip type aliases as the original type should be the parent
480-
// of any type parameters.
481-
if typeNameObj, ok := obj.(*types.TypeName); ok && !typeNameObj.IsAlias() {
478+
// Populate type parameter parents for named types.
479+
if typeNameObj, ok := obj.(*types.TypeName); ok {
482480
if tp, ok := typeNameObj.Type().(*types.Named); ok {
483481
populateTypeParamParents(tp.TypeParams(), obj)
482+
} else if tp, ok := typeNameObj.Type().(*types.Alias); ok {
483+
populateTypeParamParents(tp.TypeParams(), obj)
484484
}
485485
}
486486
extractObject(tw, obj, lbl)

go/ql/test/library-tests/semmle/go/Types/Aliases.expected

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ entities
1414
| aliases.go | aliases.go:22:6:22:6 | T | 1 | aliases.go:19:6:19:7 | S3 |
1515
| aliases.go | aliases.go:25:6:25:6 | H | 1 | file://:0:0:0:0 | signature type |
1616
| aliases.go | aliases.go:25:8:25:11 | Afs3 | 1 | aliases.go:19:6:19:7 | S3 |
17+
| aliases.go | aliases.go:29:6:29:9 | User | 1 | aliases.go:29:6:29:9 | User |
18+
| aliases.go | aliases.go:29:11:29:15 | UserT | 1 | file://:0:0:0:0 | type parameter type |
19+
| aliases.go | aliases.go:29:30:29:30 | x | 1 | file://:0:0:0:0 | type parameter type |
20+
| aliases.go | aliases.go:32:6:32:14 | UserAlias | 1 | aliases.go:29:6:29:9 | User |
21+
| aliases.go | aliases.go:32:16:32:25 | UserAliasT | 1 | file://:0:0:0:0 | type parameter type |
1722
#select
1823
| F | func(struct { x int }) int |
1924
| G | func(struct { x int }) int |

0 commit comments

Comments
 (0)