Inject ambient context into Go calls
This commit is contained in:
parent
acb42a5702
commit
5085ae51aa
8 changed files with 112 additions and 9 deletions
|
|
@ -66,6 +66,7 @@ type FunctionType struct {
|
|||
Params []Type
|
||||
Result Type
|
||||
Effects Effect
|
||||
Variadic bool
|
||||
}
|
||||
|
||||
func (FunctionType) typeNode() {}
|
||||
|
|
@ -175,7 +176,7 @@ func resolveClassTypes(typ Type, classes map[string]*ClassSymbol) Type {
|
|||
for i, param := range value.Params {
|
||||
params[i] = resolveClassTypes(param, classes)
|
||||
}
|
||||
return FunctionType{Params: params, Result: resolveClassTypes(value.Result, classes)}
|
||||
return FunctionType{TypeParams: value.TypeParams, Params: params, Result: resolveClassTypes(value.Result, classes), Effects: value.Effects, Variadic: value.Variadic}
|
||||
case GenericType:
|
||||
args := make([]Type, len(value.Args))
|
||||
for i, arg := range value.Args {
|
||||
|
|
@ -220,7 +221,7 @@ func resolveImportedTypes(typ Type, packages map[string]*PackageSymbol) Type {
|
|||
for index, param := range value.Params {
|
||||
params[index] = resolveImportedTypes(param, packages)
|
||||
}
|
||||
return FunctionType{TypeParams: value.TypeParams, Params: params, Result: resolveImportedTypes(value.Result, packages), Effects: value.Effects}
|
||||
return FunctionType{TypeParams: value.TypeParams, Params: params, Result: resolveImportedTypes(value.Result, packages), Effects: value.Effects, Variadic: value.Variadic}
|
||||
default:
|
||||
return typ
|
||||
}
|
||||
|
|
@ -242,7 +243,7 @@ func resolveTypeParameters(typ Type, params map[string]bool) Type {
|
|||
for index, param := range value.Params {
|
||||
resolved[index] = resolveTypeParameters(param, params)
|
||||
}
|
||||
return FunctionType{TypeParams: value.TypeParams, Params: resolved, Result: resolveTypeParameters(value.Result, params), Effects: value.Effects}
|
||||
return FunctionType{TypeParams: value.TypeParams, Params: resolved, Result: resolveTypeParameters(value.Result, params), Effects: value.Effects, Variadic: value.Variadic}
|
||||
case GenericType:
|
||||
args := make([]Type, len(value.Args))
|
||||
for index, arg := range value.Args {
|
||||
|
|
@ -303,7 +304,7 @@ func substituteType(typ Type, bindings map[string]Type) Type {
|
|||
for index, param := range value.Params {
|
||||
params[index] = substituteType(param, bindings)
|
||||
}
|
||||
return FunctionType{TypeParams: value.TypeParams, Params: params, Result: substituteType(value.Result, bindings), Effects: value.Effects}
|
||||
return FunctionType{TypeParams: value.TypeParams, Params: params, Result: substituteType(value.Result, bindings), Effects: value.Effects, Variadic: value.Variadic}
|
||||
default:
|
||||
return typ
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue