microbit-foundation / python-editor-v3

Micro:bit Educational Foundation Python Editor V3
https://python.microbit.org
MIT License
57 stars 36 forks source link

Type inferring can result in Pyright errors that are probably fine #810

Open microbit-carlos opened 2 years ago

microbit-carlos commented 2 years ago

Bug Description

Seems like Pyright is doing type inferring, and then reporting errors based on that. This is probably a "good thing™️", but can result in the editor reporting errors that might be fine during runtime

How To Reproduce

image
def foo(bar=10):
    if bar == None:
        # Do something here if the value is None for some reason
        bar = 0
    return bar * 2

foo(None)

Expected behavior

Not sure if we would want to filter this kind of error, or if there would be a way to filter some of these.

Screenshots

In "How To Reproduce" section.

Environment

N/A

Additional context

N/A

microbit-matt-hillsdon commented 2 years ago

This is an interesting case. I think for the moment it makes sense to see how prevalent this kind of scenario is as we see more folk writing non-trivial code in the editor. There will be consequences to relaxing these checks that might miss many error scenarios.

In this case ideally the inference would be Option[float], I might look at why it isn't if I get a chance as Pyright generally does good flow analysis.