[case testNewNamedTupleOldPythonVersion]
# flags: --fast-parser --python-version 3.5
from typing import NamedTuple

class E(NamedTuple):  # E: NamedTuple class syntax is only supported in Python 3.6
    pass

[case testNewNamedTupleNoUnderscoreFields]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    x: int
    _y: int  # E: NamedTuple field name cannot start with an underscore: _y
    _z: int  # E: NamedTuple field name cannot start with an underscore: _z

[case testNewNamedTupleAccessingAttributes]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    x: int
    y: str

x: X
x.x
x.y
x.z # E: "X" has no attribute "z"

[case testNewNamedTupleAttributesAreReadOnly]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    x: int

x: X
x.x = 5 # E: Property "x" defined in "X" is read-only
x.y = 5 # E: "X" has no attribute "y"

class A(X): pass
a: A
a.x = 5 # E: Property "x" defined in "A" is read-only

[case testNewNamedTupleCreateWithPositionalArguments]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    x: int
    y: str

x = X(1, '2')
x.x
x.z      # E: "X" has no attribute "z"
x = X(1) # E: Too few arguments for "X"
x = X(1, '2', 3)  # E: Too many arguments for "X"

[case testNewNamedTupleShouldBeSingleBase]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class A: ...
class X(NamedTuple, A):  # E: NamedTuple should be a single base
    pass

[case testCreateNewNamedTupleWithKeywordArguments]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    x: int
    y: str

x = X(x=1, y='x')
x = X(1, y='x')
x = X(x=1, z=1) # E: Unexpected keyword argument "z" for "X"
x = X(y='x') # E: Missing positional argument "x" in call to "X"

[case testNewNamedTupleCreateAndUseAsTuple]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    x: int
    y: str

x = X(1, 'x')
a, b = x
a, b, c = x  # E: Need more than 2 values to unpack (3 expected)

[case testNewNamedTupleWithItemTypes]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class N(NamedTuple):
    a: int
    b: str

n = N(1, 'x')
s: str = n.a  # E: Incompatible types in assignment (expression has type "int", \
                          variable has type "str")
i: int = n.b  # E: Incompatible types in assignment (expression has type "str", \
                          variable has type "int")
x, y = n
x = y  # E: Incompatible types in assignment (expression has type "str", variable has type "int")

[case testNewNamedTupleConstructorArgumentTypes]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class N(NamedTuple):
    a: int
    b: str

n = N('x', 'x') # E: Argument 1 to "N" has incompatible type "str"; expected "int"
n = N(1, b=2)   # E: Argument 2 to "N" has incompatible type "int"; expected "str"
N(1, 'x')
N(b='x', a=1)

[case testNewNamedTupleAsBaseClass]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class N(NamedTuple):
    a: int
    b: str

class X(N):
    pass
x = X(1, 2)  # E: Argument 2 to "X" has incompatible type "int"; expected "str"
s = ''
i = 0
s = x.a  # E: Incompatible types in assignment (expression has type "int", variable has type "str")
i, s = x
s, s = x # E: Incompatible types in assignment (expression has type "int", variable has type "str")

[case testNewNamedTupleSelfTypeWithNamedTupleAsBase]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class A(NamedTuple):
    a: int
    b: str

class B(A):
    def f(self, x: int) -> None:
        self.f(self.a)
        self.f(self.b)  # E: Argument 1 to "f" of "B" has incompatible type "str"; expected "int"
        i = 0
        s = ''
        i, s = self
        i, i = self  # E: Incompatible types in assignment (expression has type "str", \
                          variable has type "int")
[out]

[case testNewNamedTupleTypeReferenceToClassDerivedFrom]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class A(NamedTuple):
    a: int
    b: str

class B(A):
    def f(self, x: 'B') -> None:
        i = 0
        s = ''
        self = x
        i, s = x
        i, s = x.a, x.b
        i, s = x.a, x.a  # E: Incompatible types in assignment (expression has type "int", \
                              variable has type "str")
        i, i = self  # E: Incompatible types in assignment (expression has type "str", \
                          variable has type "int")

[out]

[case testNewNamedTupleSubtyping]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple, Tuple

class A(NamedTuple):
    a: int
    b: str

class B(A): pass
a = A(1, '')
b = B(1, '')
t: Tuple[int, str]
b = a  # E: Incompatible types in assignment (expression has type "A", variable has type "B")
a = t  # E: Incompatible types in assignment (expression has type "Tuple[int, str]", variable has type "A")
b = t  # E: Incompatible types in assignment (expression has type "Tuple[int, str]", variable has type "B")
t = a
t = (1, '')
t = b
a = b

[case testNewNamedTupleSimpleTypeInference]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple, Tuple

class A(NamedTuple):
    a: int

l = [A(1), A(2)]
a = A(1)
a = l[0]
(i,) = l[0]
i, i = l[0]  # E: Need more than 1 value to unpack (2 expected)
l = [A(1)]
a = (1,)  # E: Incompatible types in assignment (expression has type "Tuple[int]", \
               variable has type "A")
[builtins fixtures/list.pyi]

[case testNewNamedTupleMissingClassAttribute]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class MyNamedTuple(NamedTuple):
    a: int
    b: str

MyNamedTuple.x # E: "MyNamedTuple" has no attribute "x"

[case testNewNamedTupleEmptyItems]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class A(NamedTuple):
    ...

[case testNewNamedTupleForwardRef]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class A(NamedTuple):
    b: 'B'

class B: ...

a = A(B())
a = A(1)  # E: Argument 1 to "A" has incompatible type "int"; expected "B"

[case testNewNamedTupleProperty]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class A(NamedTuple):
    a: int

class B(A):
    @property
    def b(self) -> int:
        return self.a
class C(B): pass
B(1).b
C(2).b

[builtins fixtures/property.pyi]

[case testNewNamedTupleAsDict]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple, Any

class X(NamedTuple):
    x: Any
    y: Any

x: X
reveal_type(x._asdict())  # E: Revealed type is 'builtins.dict[builtins.str, Any]'

[builtins fixtures/dict.pyi]

[case testNewNamedTupleReplaceTyped]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    x: int
    y: str

x: X
reveal_type(x._replace())  # E: Revealed type is 'Tuple[builtins.int, builtins.str, fallback=__main__.X]'
x._replace(x=5)
x._replace(y=5)  # E: Argument 1 to X._replace has incompatible type "int"; expected "str"

[case testNewNamedTupleFields]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    x: int
    y: str

reveal_type(X._fields)  # E: Revealed type is 'Tuple[builtins.str, builtins.str]'

[case testNewNamedTupleUnit]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    pass

x: X = X()
x._replace()
x._fields[0]  # E: Tuple index out of range

[case testNewNamedTupleJoinNamedTuple]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    x: int
    y: str
class Y(NamedTuple):
    x: int
    y: str

reveal_type([X(3, 'b'), Y(1, 'a')])  # E: Revealed type is 'builtins.list[Tuple[builtins.int, builtins.str]]'

[builtins fixtures/list.pyi]

[case testNewNamedTupleJoinTuple]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    x: int
    y: str

reveal_type([(3, 'b'), X(1, 'a')])  # E: Revealed type is 'builtins.list[Tuple[builtins.int, builtins.str]]'
reveal_type([X(1, 'a'), (3, 'b')])  # E: Revealed type is 'builtins.list[Tuple[builtins.int, builtins.str]]'

[builtins fixtures/list.pyi]

[case testNewNamedTupleWithTooManyArguments]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    x: int
    y = z = 2  # E: Invalid statement in NamedTuple definition; expected "field_name: field_type"
    def f(self): pass  # E: Invalid statement in NamedTuple definition; expected "field_name: field_type"

[case testNewNamedTupleWithInvalidItems2]
# flags: --fast-parser --python-version 3.6
import typing

class X(typing.NamedTuple):
    x: int
    y: str = 'y'  # E: Right hand side values are not supported in NamedTuple
    z = None  # type: int # E: Invalid statement in NamedTuple definition; expected "field_name: field_type"
    x[0]: int  # E: Invalid statement in NamedTuple definition; expected "field_name: field_type"

[builtins fixtures/list.pyi]

[case testNewNamedTupleWithoutTypesSpecified]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple

class X(NamedTuple):
    x: int
    y = 2  # E: Invalid statement in NamedTuple definition; expected "field_name: field_type"

[case testTypeUsingTypeCNamedTuple]
# flags: --fast-parser --python-version 3.6
from typing import NamedTuple, Type

class N(NamedTuple):
    x: int
    y: str

def f(a: Type[N]):
    a()
[builtins fixtures/list.pyi]
[out]
main:8: error: Unsupported type Type["N"]
