This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author ncoghlan
Recipients ncoghlan
Date 2020-11-07.06:59:44
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1604732384.87.0.434481078008.issue42282@roundup.psfhosted.org>
In-reply-to
Content
While working on the PEP 642 reference implementation I removed the "default:" case from the switch statement in astfold_expr as part of making sure the new SkippedBinding node was being handled everywhere it needed to be.

This change picked up that NamedExpr_kind wasn't being handled either, and a check with the dis module confirmed that using the walrus operator turns off constant folding:

```
[ncoghlan@thechalk cpython]$ ./python
Python 3.10.0a2+ (heads/pep-642-constraint-patterns-dirty:4db2fbd609, Nov  7 2020, 16:42:19) 
[GCC 10.2.1 20201016 (Red Hat 10.2.1-6)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dis
>>> dis.dis("1 + 1")
  1           0 LOAD_CONST               0 (2)
              2 RETURN_VALUE
>>> dis.dis("(x := 1 + 1)")
  1           0 LOAD_CONST               0 (1)
              2 LOAD_CONST               0 (1)
              4 BINARY_ADD
              6 DUP_TOP
              8 STORE_NAME               0 (x)
             10 RETURN_VALUE
>>>
```

The missing switch statement entry is just:

```
    case NamedExpr_kind:
        CALL(astfold_expr, expr_ty, node_->v.NamedExpr.value);
        break;
```

Which gives the expected result:

```
[ncoghlan@thechalk cpython]$ ./python -c "import dis; dis.dis('(x := 1 +1)')"
  1           0 LOAD_CONST               0 (2)
              2 DUP_TOP
              4 STORE_NAME               0 (x)
              6 RETURN_VALUE
```
History
Date User Action Args
2020-11-07 06:59:44ncoghlansetrecipients: + ncoghlan
2020-11-07 06:59:44ncoghlansetmessageid: <1604732384.87.0.434481078008.issue42282@roundup.psfhosted.org>
2020-11-07 06:59:44ncoghlanlinkissue42282 messages
2020-11-07 06:59:44ncoghlancreate