Make sure that sequence literals have the right generic classes, fixes #1416

This commit is contained in:
Dave Halter
2019-12-20 01:30:44 +01:00
parent e56d4fde98
commit 540a57766d
2 changed files with 31 additions and 3 deletions

View File

@@ -206,9 +206,6 @@ class Sequence(LazyAttributeOverwrite, IterableMixin):
def py__bool__(self):
return None # We don't know the length, because of appends.
def py__class__(self):
return compiled.builtin_from_name(self.inference_state, self.array_type)
@safe_property
def parent(self):
return self.inference_state.builtins_module

View File

@@ -4,6 +4,7 @@ from typing import List, Dict, overload
lst: list
list_alias: List
list_str: List[str]
list_str: List[int]
# -------------------------
# With base classes
@@ -41,3 +42,33 @@ overload_f3(lst)
overload_f3(list_alias)
#? str()
overload_f3(list_str)
# -------------------------
# Generics Matching
# -------------------------
@overload
def overload_f1(value: List[str]) -> str: ...
@overload
def overload_f1(value: Dict[str, str]) -> Dict[str, str]: ...
def overload_f1():
pass
#? str()
overload_f1([''])
#? str() dict()
overload_f1(1)
#? dict()
overload_f1({'': ''})
#? str() dict()
overload_f1(lst)
#? str() dict()
overload_f1(list_alias)
#? str()
overload_f1(list_str)
#? str() dict()
overload_f1(list_int)