(self)
| 310 | opname = "CALL_FUNCTION" |
| 311 | |
| 312 | def _handle(self): |
| 313 | args = [] |
| 314 | for _i in range(self.instruction.argval + 1): |
| 315 | arg = self.stack.pop() |
| 316 | args.append(arg) |
| 317 | it = reversed(args) |
| 318 | name = next(it) |
| 319 | max_line = name.i_line |
| 320 | for t in name.tokens: |
| 321 | self.tokens.append(t) |
| 322 | |
| 323 | tok_open_parens = _Token(name.i_line, None, "(", after=name) |
| 324 | self.tokens.append(tok_open_parens) |
| 325 | |
| 326 | prev = tok_open_parens |
| 327 | for i, arg in enumerate(it): |
| 328 | for t in arg.tokens: |
| 329 | t.mark_after(name) |
| 330 | t.mark_after(prev) |
| 331 | max_line = max(max_line, t.i_line) |
| 332 | self.tokens.append(t) |
| 333 | prev = arg |
| 334 | |
| 335 | if i > 0: |
| 336 | comma_token = _Token(prev.i_line, None, ",", after=prev) |
| 337 | self.tokens.append(comma_token) |
| 338 | prev = comma_token |
| 339 | |
| 340 | tok_close_parens = _Token(max_line, None, ")", after=prev) |
| 341 | self.tokens.append(tok_close_parens) |
| 342 | |
| 343 | self._write_tokens() |
| 344 | |
| 345 | self.stack.push(self) |
| 346 | |
| 347 | |
| 348 | @_register |
nothing calls this directly
no test coverage detected