Infer coroutine effects automatically
This commit is contained in:
parent
bac1183593
commit
5b30e49486
15 changed files with 339 additions and 103 deletions
|
|
@ -600,6 +600,11 @@ func (resolver *semanticResolver) meaning(expr Expr, scope *Scope) (ExprMeaning,
|
|||
if root, ok := selectorRootAlias(selector); ok && resolver.program.Imports[root] {
|
||||
return GoCallExpr, nil
|
||||
}
|
||||
if class, _ := classInstance(ResolvedType(selector.Receiver)); class != nil {
|
||||
if method, ok := class.Methods[selector.Name]; ok {
|
||||
return MethodCallExpr, method
|
||||
}
|
||||
}
|
||||
receiverType := ResolvedType(selector.Receiver)
|
||||
if !isUnknownType(resolver.program.goMethodType(receiverType, selector.Name)) {
|
||||
return GoCallExpr, nil
|
||||
|
|
@ -755,7 +760,7 @@ var semanticBuiltins = map[string]bool{
|
|||
"panic": true, "recover": true, "string": true, "int": true, "float64": true, "bool": true,
|
||||
"sql": true, "set": true, "now": true, "Result": true, "ByteSlice": true,
|
||||
"runBlocking": true, "coroutineScope": true, "launch": true, "async": true,
|
||||
"delay": true, "withTimeout": true, "isActive": true,
|
||||
"delay": true, "withTimeout": true, "isActive": true, "coroutineContext": true,
|
||||
"continue": true, "break": true,
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue