[red-knot] use declared types in inference/checking (#13335)

Use declared types in inference and checking. This means several things:

* Imports prefer declarations over inference, when declarations are
available.
* When we encounter a binding, we check that the bound value's inferred
type is assignable to the live declarations of the bound symbol, if any.
* When we encounter a declaration, we check that the declared type is
assignable from the inferred type of the symbol from previous bindings,
if any.
* When we encounter a binding+declaration, we check that the inferred
type of the bound value is assignable to the declared type.
This commit is contained in:
Carl Meyer 2024-09-17 08:11:06 -07:00 committed by GitHub
parent d86e5ad031
commit dcfebaa4a8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 876 additions and 233 deletions

View file

@ -23,4 +23,3 @@ mod stdlib;
pub mod types;
type FxOrderSet<V> = ordermap::set::OrderSet<V, BuildHasherDefault<FxHasher>>;
type FxOrderMap<K, V> = ordermap::map::OrderMap<K, V, BuildHasherDefault<FxHasher>>;