@@ -151,124 +151,6 @@ func (exec *Execution) callFunction(fn *ScriptFunction, receiver Value, args []V
151151 return val , nil
152152}
153153
154- func (exec * Execution ) evalCallTarget (call * CallExpr , env * Env ) (Value , Value , error ) {
155- if member , ok := call .Callee .(* MemberExpr ); ok {
156- receiver , err := exec .evalExpression (member .Object , env )
157- if err != nil {
158- return NewNil (), NewNil (), err
159- }
160- if err := exec .checkMemoryWith (receiver ); err != nil {
161- return NewNil (), NewNil (), err
162- }
163- callee , err := exec .getMember (receiver , member .Property , member .Pos ())
164- if err != nil {
165- return NewNil (), NewNil (), err
166- }
167- return callee , receiver , nil
168- }
169-
170- callee , err := exec .evalExpressionWithAuto (call .Callee , env , false )
171- if err != nil {
172- return NewNil (), NewNil (), err
173- }
174- return callee , NewNil (), nil
175- }
176-
177- func (exec * Execution ) evalCallArgs (call * CallExpr , env * Env ) ([]Value , error ) {
178- args := make ([]Value , len (call .Args ))
179- for i , arg := range call .Args {
180- val , err := exec .evalExpressionWithAuto (arg , env , true )
181- if err != nil {
182- return nil , err
183- }
184- if err := exec .checkMemoryWith (val ); err != nil {
185- return nil , err
186- }
187- args [i ] = val
188- }
189- return args , nil
190- }
191-
192- func (exec * Execution ) evalCallKwArgs (call * CallExpr , env * Env ) (map [string ]Value , error ) {
193- if len (call .KwArgs ) == 0 {
194- return nil , nil
195- }
196- kwargs := make (map [string ]Value , len (call .KwArgs ))
197- for _ , kw := range call .KwArgs {
198- val , err := exec .evalExpressionWithAuto (kw .Value , env , true )
199- if err != nil {
200- return nil , err
201- }
202- if err := exec .checkMemoryWith (val ); err != nil {
203- return nil , err
204- }
205- kwargs [kw .Name ] = val
206- }
207- return kwargs , nil
208- }
209-
210- func (exec * Execution ) evalCallBlock (call * CallExpr , env * Env ) (Value , error ) {
211- if call .Block == nil {
212- return NewNil (), nil
213- }
214- return exec .evalBlockLiteral (call .Block , env )
215- }
216-
217- func (exec * Execution ) checkCallMemoryRoots (receiver Value , args []Value , kwargs map [string ]Value , block Value ) error {
218- if receiver .Kind () == KindNil && len (kwargs ) == 0 && block .IsNil () {
219- if len (args ) == 0 {
220- return nil
221- }
222- return exec .checkMemoryWith (args ... )
223- }
224- combined := make ([]Value , 0 , len (args )+ len (kwargs )+ 2 )
225- if receiver .Kind () != KindNil {
226- combined = append (combined , receiver )
227- }
228- combined = append (combined , args ... )
229- for _ , kwVal := range kwargs {
230- combined = append (combined , kwVal )
231- }
232- if ! block .IsNil () {
233- combined = append (combined , block )
234- }
235- if len (combined ) == 0 {
236- return nil
237- }
238- return exec .checkMemoryWith (combined ... )
239- }
240-
241- func (exec * Execution ) evalCallExpr (call * CallExpr , env * Env ) (Value , error ) {
242- callee , receiver , err := exec .evalCallTarget (call , env )
243- if err != nil {
244- return NewNil (), err
245- }
246- args , err := exec .evalCallArgs (call , env )
247- if err != nil {
248- return NewNil (), err
249- }
250- kwargs , err := exec .evalCallKwArgs (call , env )
251- if err != nil {
252- return NewNil (), err
253- }
254- block , err := exec .evalCallBlock (call , env )
255- if err != nil {
256- return NewNil (), err
257- }
258- if err := exec .checkCallMemoryRoots (receiver , args , kwargs , block ); err != nil {
259- return NewNil (), err
260- }
261-
262- result , callErr := exec .invokeCallable (callee , receiver , args , kwargs , block , call .Pos ())
263- if callErr != nil {
264- return NewNil (), callErr
265- }
266- if err := exec .checkMemoryWith (result ); err != nil {
267- return NewNil (), err
268- }
269- return result , nil
270- }
271-
272154func (exec * Execution ) evalBlockLiteral (block * BlockLiteral , env * Env ) (Value , error ) {
273155 blockValue := NewBlock (block .Params , block .Body , env )
274156 if ctx := exec .currentModuleContext (); ctx != nil {
0 commit comments