Skip to content

Commit 291c059

Browse files
committed
add a test for strict_optional
1 parent 6ad489b commit 291c059

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

test-data/unit/check-class-namedtuple.test

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,26 @@ class UserDefined(NamedTuple):
424424

425425
reveal_type(UserDefined()) # E: Revealed type is 'Tuple[__main__.Default, fallback=__main__.UserDefined]'
426426
reveal_type(UserDefined(Default())) # E: Revealed type is 'Tuple[__main__.Default, fallback=__main__.UserDefined]'
427+
UserDefined(1) # E: Argument 1 to "UserDefined" has incompatible type "int"; expected "Default"
428+
429+
[builtins fixtures/list.pyi]
430+
431+
[case testNewNamedTupleWithDefaultsStrictOptional]
432+
# flags: --fast-parser --strict-optional --python-version 3.6
433+
from typing import List, NamedTuple, Optional
434+
435+
class HasNone(NamedTuple):
436+
x: int
437+
y: Optional[int] = None
438+
439+
reveal_type(HasNone(1)) # E: Revealed type is 'Tuple[builtins.int, Union[builtins.int, builtins.None], fallback=__main__.HasNone]'
440+
HasNone(None) # E: Argument 1 to "HasNone" has incompatible type None; expected "int"
441+
HasNone(1, y=None)
442+
HasNone(1, y=2)
443+
444+
class CannotBeNone(NamedTuple):
445+
x: int
446+
y: int = None # E: Incompatible types in assignment (expression has type None, variable has type "int")
427447

428448
[builtins fixtures/list.pyi]
429449

0 commit comments

Comments
 (0)