diff options
| author | Antoine Pitrou <solipsis@pitrou.net> | 2014-05-09 00:31:32 +0200 |
|---|---|---|
| committer | Antoine Pitrou <solipsis@pitrou.net> | 2014-05-09 00:31:32 +0200 |
| commit | 74339a075353dfb9256d2b746b4cd1daf78d2736 (patch) | |
| tree | 4a694446c54f2c63d6154e5b4cbcb8c68fe61e7b /Python/ast.c | |
| parent | f2dde0a5269fe5697c68b0336d42223b3db2df7e (diff) | |
| parent | dc91a772d955f6dd4af3ce0070d03159c4b6c3b2 (diff) | |
| download | cpython-74339a075353dfb9256d2b746b4cd1daf78d2736.tar.gz | |
Issue #21396: Fix TextIOWrapper(..., write_through=True) to not force a flush() on the underlying binary stream.
Patch by akira.
Diffstat (limited to 'Python/ast.c')
| -rw-r--r-- | Python/ast.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Python/ast.c b/Python/ast.c index 5668755346..d6bddf1192 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -825,6 +825,8 @@ get_operator(const node *n) return Sub; case STAR: return Mult; + case AT: + return MatMult; case SLASH: return Div; case DOUBLESLASH: @@ -1030,6 +1032,8 @@ ast_for_augassign(struct compiling *c, const node *n) return Pow; else return Mult; + case '@': + return MatMult; default: PyErr_Format(PyExc_SystemError, "invalid augassign: %s", STR(n)); return (operator_ty)0; @@ -2266,7 +2270,7 @@ ast_for_expr(struct compiling *c, const node *n) and_expr: shift_expr ('&' shift_expr)* shift_expr: arith_expr (('<<'|'>>') arith_expr)* arith_expr: term (('+'|'-') term)* - term: factor (('*'|'/'|'%'|'//') factor)* + term: factor (('*'|'@'|'/'|'%'|'//') factor)* factor: ('+'|'-'|'~') factor | power power: atom trailer* ('**' factor)* */ @@ -2577,7 +2581,7 @@ ast_for_expr_stmt(struct compiling *c, const node *n) /* expr_stmt: testlist_star_expr (augassign (yield_expr|testlist) | ('=' (yield_expr|testlist))*) testlist_star_expr: (test|star_expr) (',' test|star_expr)* [','] - augassign: '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' + augassign: '+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>>=' | '**=' | '//=' test: ... here starts the operator precendence dance */ |
