MCPcopy Create free account
hub / github.com/coder/guts / ArrowFunction

Method ArrowFunction

bindings/bindings.go:1000–1029  ·  view source on GitHub ↗

ArrowFunction builds `(parameters): returnType => body`.

(af *ArrowFunction)

Source from the content-addressed store, hash-verified

998
999// ArrowFunction builds `(parameters): returnType => body`.
1000func (b *Bindings) ArrowFunction(af *ArrowFunction) (*goja.Object, error) {
1001 afF, err := b.f("arrowFunction")
1002 if err != nil {
1003 return nil, err
1004 }
1005 params := make([]interface{}, 0, len(af.Parameters))
1006 for _, p := range af.Parameters {
1007 v, err := b.Parameter(p)
1008 if err != nil {
1009 return nil, fmt.Errorf("arrow function parameter %q: %w", p.Name, err)
1010 }
1011 params = append(params, v)
1012 }
1013 var returnType goja.Value = goja.Undefined()
1014 if af.ReturnType != nil {
1015 returnType, err = b.ToTypescriptNode(af.ReturnType)
1016 if err != nil {
1017 return nil, fmt.Errorf("arrow function return type: %w", err)
1018 }
1019 }
1020 body, err := b.ToTypescriptNode(af.Body)
1021 if err != nil {
1022 return nil, fmt.Errorf("arrow function body: %w", err)
1023 }
1024 res, err := afF(goja.Undefined(), b.vm.NewArray(params...), returnType, body)
1025 if err != nil {
1026 return nil, xerrors.Errorf("call arrowFunction: %w", err)
1027 }
1028 return res.ToObject(b.vm), nil
1029}
1030
1031// TypeQuery builds `typeof <name>` as a TypeNode.
1032func (b *Bindings) TypeQuery(tq *TypeQuery) (*goja.Object, error) {

Callers 1

Calls 3

fMethod · 0.95
ParameterMethod · 0.95
ToTypescriptNodeMethod · 0.95

Tested by

no test coverage detected