compiler: Fix interface analysis (oops!)
Этот коммит содержится в:
родитель
0d1b7239c1
коммит
808cb991af
1 изменённых файлов: 9 добавлений и 5 удалений
14
analysis.go
14
analysis.go
|
@ -2,6 +2,8 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"go/types"
|
||||
|
||||
"golang.org/x/tools/go/ssa"
|
||||
)
|
||||
|
||||
|
@ -35,8 +37,10 @@ func (a *Analysis) AddPackage(pkg *ssa.Package) {
|
|||
a.addFunction(member)
|
||||
case *ssa.Type:
|
||||
ms := pkg.Prog.MethodSets.MethodSet(member.Type())
|
||||
for i := 0; i < ms.Len(); i++ {
|
||||
a.addFunction(pkg.Prog.MethodValue(ms.At(i)))
|
||||
if !types.IsInterface(member.Type()) {
|
||||
for i := 0; i < ms.Len(); i++ {
|
||||
a.addFunction(pkg.Prog.MethodValue(ms.At(i)))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -118,9 +122,9 @@ func (a *Analysis) AnalyseBlockingRecursive() {
|
|||
}
|
||||
}
|
||||
|
||||
// Check whether we need a scheduler. This is only necessary when there are go
|
||||
// calls that start blocking functions (if they're not blocking, the go function
|
||||
// can be turned into a regular function call).
|
||||
// Check whether we need a scheduler. A scheduler is only necessary when there
|
||||
// are go calls that start blocking functions (if they're not blocking, the go
|
||||
// function can be turned into a regular function call).
|
||||
//
|
||||
// Depends on AnalyseBlockingRecursive.
|
||||
func (a *Analysis) AnalyseGoCalls() {
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче