pytorch
ed4ee093 - Make typing understand exceptions (#23565)

Commit
5 years ago
Make typing understand exceptions (#23565) Summary: When we're emitting an if node, if one branch exits allow variables in the other branch to escape scope. This is using the same machinery that already exists for early returns so there are minimal changes to the compiler. Most of the changes are in the exit_transform pass so we don't create terrible graphs when exceptions exist. In a follow up PR i will add a writeup of the transform pass to docs since this should be the last change made to it for a while. This will allow assertions to refine Optional types, as well as allow JIT to understand things like: ``` def foo(x): if x == 1: raise Exception() else: a = 1 return a ``` If you look in nn/functional.py, like 3/4 of the TODOs are this issue. One note is that if a function always throws, I accepted whatever the annotation for the return type is if it exists and otherwise set it to None. This is consistent with what mypy does. Pull Request resolved: https://github.com/pytorch/pytorch/pull/23565 Differential Revision: D16679572 Pulled By: eellison fbshipit-source-id: e58c9e9ddaeb13144c803d90e2beae253c851f7f
Author
Elias Ellison
Parents
Loading