[JIT] Add Type::repr_str to return human-readable str (#39544)

Summary:
Clearly expressing a type is inferred by PyTorch instead of explicitly annotated by user makes many error messages more user-friendly

Currently Type has two string conversion methods. str() for IR printing and python_str() for serialization and error message generation. If we want to include more information in type printing while maintaining serialization/deserialization correctness, we need to split python_str() into annotation_str() and repr_str().

annotation_str is solely responsible for serialization, it strictly matches format of python type annotation. repr_str() is responsible for generating a human-readable error message that includes information like "this type is inferred, not explicitly annotated"

Closes https://github.com/pytorch/pytorch/issues/39449
Pull Request resolved: https://github.com/pytorch/pytorch/pull/39544

Differential Revision: D21978759

Pulled By: gmagogsfm

fbshipit-source-id: 733566f5a62e748b5ca4bb3c5943ebb6d5b664d0
This commit is contained in:
Yanan Cao
2020-06-10 11:59:01 -07:00
committed by Facebook GitHub Bot
parent 4e892bd99c
commit c22bbb2124
37 changed files with 238 additions and 224 deletions

View File

@ -336,12 +336,12 @@ c10::intrusive_ptr<OwnerRRef> RRefContext::getOrCreateOwnerRRef(
TORCH_INTERNAL_ASSERT(
ownerRRef->type()->isSubtypeOf(TensorType::get()),
"Expect OwnerRRef to be a sub-type of TensorType, but got ",
ownerRRef->type()->python_str());
ownerRRef->type()->repr_str());
} else {
TORCH_INTERNAL_ASSERT(
ownerRRef->type() == type,
"OwnerRRef type is ",
ownerRRef->type()->python_str(),
ownerRRef->type()->repr_str(),
", expected type is ",
type);
}