| -- Test cases for incremental error streaming. |
| -- Each time errors are reported, '==== Errors flushed ====' is printed. |
| |
| [case testErrorStream] |
| import b |
| [file a.py] |
| 1 + '' |
| [file b.py] |
| import a |
| '' / 2 |
| [out] |
| ==== Errors flushed ==== |
| a.py:1: error: Unsupported operand types for + ("int" and "str") |
| ==== Errors flushed ==== |
| b.py:2: error: Unsupported operand types for / ("str" and "int") |
| |
| [case testBlockers] |
| import b |
| [file a.py] |
| 1 + '' |
| [file b.py] |
| import a |
| break |
| 1 / '' # won't get reported, after a blocker |
| [out] |
| ==== Errors flushed ==== |
| a.py:1: error: Unsupported operand types for + ("int" and "str") |
| ==== Errors flushed ==== |
| b.py:2: error: "break" outside loop |
| |
| [case testCycles] |
| import a |
| [file a.py] |
| import b |
| 1 + '' |
| def f() -> int: |
| reveal_type(b.x) |
| return b.x |
| y = 0 + int() |
| [file b.py] |
| import a |
| def g() -> int: |
| reveal_type(a.y) |
| return a.y |
| 1 / '' |
| x = 1 + int() |
| |
| [out] |
| ==== Errors flushed ==== |
| b.py:3: note: Revealed type is "builtins.int" |
| b.py:5: error: Unsupported operand types for / ("int" and "str") |
| ==== Errors flushed ==== |
| a.py:2: error: Unsupported operand types for + ("int" and "str") |
| a.py:4: note: Revealed type is "builtins.int" |