Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add flag to warn about unreachable branches and exprs #7050

Merged
merged 7 commits into from
Jun 28, 2019

Commits on Jun 24, 2019

  1. Add flag to warn about unreachable branches and exprs

    This diff adds a `--disallow-inferred-unreachable` flag that
    reports an error if:
    
    1. Any branch is inferred to be unreachable
    2. Any subexpression in boolean expressions, inline if statements,
       and list/set/generator/dict comprehensions are always unreachable
       or redundant.
    
    This only takes into account the results of *type* analysis. We do not
    report errors for branches that are inferred to be unreachable in the
    semantic analysis phase (e.g. due to `sys.platform` checks and the
    like).
    
    Those checks are all intentional/deliberately flag certain branches
    as unreachable, so error messages would be annoying in those cases.
    
    A few additional notes:
    
    1. I didn't spend a huge amount of time trying to come up with error
       messages. They could probably do with some polishing/rewording.
    
    2. I thought about enabling this flag for default with mypy, but
       unfortunately that ended up producing ~40 to 50 (apparently
       legitimate) error messages.
    
       About a fourth of them were due to runtime checks checking to see
       if some type is None (despite not being declared to be Optional),
       about a fourth seemed to be due to mypy not quite understanding how
       to handle things like traits and Bogus[...], and about a fourth
       seemed to be legitimately unnecessary checks we could safely remove.
    
       The final checks were a mixture of typeshed bugs and misc errors with
       the reachability checks. (e.g. see python#7048)
    
    3. For these reasons, I decided against adding this flag to `--strict`
       and against documenting it yet. We'll probably need to flush out
       a few bugs in mypy first/get mypy to the state where we can at least
       honestly dogfood this.
    
    Resolves python#2395; partially
    addresses python#7008.
    Michael0x2a committed Jun 24, 2019
    Configuration menu
    Copy the full SHA
    a5b3737 View commit details
    Browse the repository at this point in the history

Commits on Jun 26, 2019

  1. Configuration menu
    Copy the full SHA
    615f3b2 View commit details
    Browse the repository at this point in the history
  2. Apply trivial renames

    Michael0x2a committed Jun 26, 2019
    Configuration menu
    Copy the full SHA
    ce8c357 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    74663e8 View commit details
    Browse the repository at this point in the history
  4. Adjust help text for flag

    Michael0x2a committed Jun 26, 2019
    Configuration menu
    Copy the full SHA
    d16dd8e View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    0ccb367 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    373c6ec View commit details
    Browse the repository at this point in the history