mypy icon indicating copy to clipboard operation
mypy copied to clipboard

[mypyc] feat: extend `get_expr_length` for `enumerate`, `map`, `zip`, `range`, `list`, `tuple`, `sorted`, and `reversed` CallExpr [3/4]

Open BobTheBuidler opened this issue 3 months ago • 2 comments

This PR is pretty simple, I just extended get_expr_length to work for a few more obvious cases:

  • builtins.enumerate
  • builtins.map
  • builtins.zip
  • builtins.range
  • builtins.list
  • builtins.tuple
  • builtins.sorted
  • builtins.reversed

This PR is ready for review. Are you going to want tests for all of these? I didn't want to spend time now until I know for sure.

All of the get_expr_length PRs are entirely independent and can be reviewed/merged in any order.

BobTheBuidler avatar Sep 26 '25 00:09 BobTheBuidler

I added an IR test that covers a few of these, and I learned we need to merge #19935 before we can use it how I intended for the test. For now I'm leaving the test in just so it can be compared to #19935

The IR in #19935 is much cleaner, you'll see a r1 = PyTuple_New(5) which shows that the code from the PR did its job.

BobTheBuidler avatar Sep 26 '25 13:09 BobTheBuidler

I added an IR test that covers a few of these, and I learned we need to merge #19935 before we can use it how I intended for the test. For now I'm leaving the test in just so it can be compared to #19935

The IR in #19935 is much cleaner, you'll see a r1 = PyTuple_New(5) which shows that the code from the PR did its job.

@JukkaL FYI wrt the IR

Easiest path forward is probably merging this one first, given that #19935 proves that the specific change to our length logic IS successful, even though it doesn't show on the current IR test, and then letting me rebase #19935 on top of master which will correct the IR test from this PR when we merge it.

BobTheBuidler avatar Oct 14 '25 12:10 BobTheBuidler