-- Test cases for the default plugin
--
-- Note that we have additional test cases in pythoneval.test (that use real typeshed stubs).


[case testContextManagerWithGenericFunction]
from contextlib import contextmanager
from typing import TypeVar, Iterator

T = TypeVar('T')

@contextmanager
def yield_id(item: T) -> Iterator[T]:
    yield item

reveal_type(yield_id) # N: Revealed type is 'def [T] (item: T`-1) -> contextlib.GeneratorContextManager[T`-1]'

with yield_id(1) as x:
    reveal_type(x) # N: Revealed type is 'builtins.int*'

f = yield_id
def g(x, y): pass
f = g # E: Incompatible types in assignment (expression has type "Callable[[Any, Any], Any]", variable has type "Callable[[T], GeneratorContextManager[T]]")
[typing fixtures/typing-full.pyi]

[case testContextManagerWithUnspecifiedArguments]
from contextlib import contextmanager
from typing import Callable, Iterator

c: Callable[..., Iterator[int]]
reveal_type(c) # N: Revealed type is 'def (*Any, **Any) -> typing.Iterator[builtins.int]'
reveal_type(contextmanager(c)) # N: Revealed type is 'def (*Any, **Any) -> contextlib.GeneratorContextManager[builtins.int*]'
[typing fixtures/typing-full.pyi]
