@@ -5422,6 +5422,43 @@ reveal_type(meet(fD4C)) # N: Revealed type is "TypedDict({'a'=: builtins.int},
54225422[builtins fixtures/dict.pyi]
54235423[typing fixtures/typing-typeddict.pyi]
54245424
5425+ [case testTypedDictGetMethodClosed]
5426+ from typing import TypedDict, Literal
5427+ class Unrelated: pass
5428+ D = TypedDict('D', {'x': int, 'y': str}, closed=True)
5429+ d: D
5430+ u: Unrelated
5431+ x: Literal['x']
5432+ y: Literal['y']
5433+ z: Literal['z']
5434+ x_or_y: Literal['x', 'y']
5435+ x_or_z: Literal['x', 'z']
5436+ x_or_y_or_z: Literal['x', 'y', 'z']
5437+
5438+ # test with literal expression
5439+ reveal_type(d.get('x')) # N: Revealed type is "builtins.int"
5440+ reveal_type(d.get('y')) # N: Revealed type is "builtins.str"
5441+ reveal_type(d.get('z')) # N: Revealed type is "None"
5442+ reveal_type(d.get('z', u)) # N: Revealed type is "__main__.Unrelated"
5443+
5444+ # test with literal type / union of literal types with implicit default
5445+ reveal_type(d.get(x)) # N: Revealed type is "builtins.int"
5446+ reveal_type(d.get(y)) # N: Revealed type is "builtins.str"
5447+ reveal_type(d.get(z)) # N: Revealed type is "None"
5448+ reveal_type(d.get(x_or_y)) # N: Revealed type is "builtins.int | builtins.str"
5449+ reveal_type(d.get(x_or_z)) # N: Revealed type is "builtins.int | None"
5450+ reveal_type(d.get(x_or_y_or_z)) # N: Revealed type is "builtins.int | builtins.str | None"
5451+
5452+ # test with literal type / union of literal types with explicit default
5453+ reveal_type(d.get(x, u)) # N: Revealed type is "builtins.int"
5454+ reveal_type(d.get(y, u)) # N: Revealed type is "builtins.str"
5455+ reveal_type(d.get(z, u)) # N: Revealed type is "__main__.Unrelated"
5456+ reveal_type(d.get(x_or_y, u)) # N: Revealed type is "builtins.int | builtins.str"
5457+ reveal_type(d.get(x_or_z, u)) # N: Revealed type is "builtins.int | __main__.Unrelated"
5458+ reveal_type(d.get(x_or_y_or_z, u)) # N: Revealed type is "builtins.int | builtins.str | __main__.Unrelated"
5459+ [builtins fixtures/dict.pyi]
5460+ [typing fixtures/typing-typeddict.pyi]
5461+
54255462[case testOperatorContainsNarrowsTypedDicts_unionWithList_closed]
54265463from __future__ import annotations
54275464from typing import assert_type, TypedDict, Union
0 commit comments