You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
type variable escapes in application of higher-order function to a generic function #1506
from typing import TypeVar, Callable
S = TypeVar('S')
def apply(f: Callable[[int], S]) -> S: pass
def g(x: int) -> S: pass
y = apply(g)
reveal_type(y) # E: Revealed type is 'S`-1'
The type of y is not allowed to contain an unbound type variable. There should have been an error Need type annotation for variable on the assignment to y.
(With apply having type def apply(f: Callable[[int], int]) -> S, mypy does give such an error.)
changed the title [-]type variable escapes in application of higher-order function[/-][+]type variable escapes in application of higher-order function to a generic function[/+]on May 8, 2016
Also, even when the input program has a type error, mypy should still not produce ill-formed types like S-1` here. That way we can run mypy in a mode with extra consistency checks on the test suite, which is full of intentional type errors, to find more bugs like this one.
Mypy is arguably doing the right thing in this case. The code sample contains a malformed generic function g that returns a generic S but doesn't use S in the types of any input parameters. Mypy correctly reports this error.
Activity
[-]type variable escapes in application of higher-order function[/-][+]type variable escapes in application of higher-order function to a generic function[/+]rwbarton commentedon May 8, 2016
Also, even when the input program has a type error, mypy should still not produce ill-formed types like
S-1` here. That way we can run mypy in a mode with extra consistency checks on the test suite, which is full of intentional type errors, to find more bugs like this one.erictraut commentedon Aug 10, 2023
Mypy is arguably doing the right thing in this case. The code sample contains a malformed generic function
gthat returns a genericSbut doesn't useSin the types of any input parameters. Mypy correctly reports this error.