from .Child import Child
from .Node import Node  # noqa: I201

COMMON_NODES = [
    Node('Decl', kind='Syntax'),
    Node('Expr', kind='Syntax'),
    Node('Stmt', kind='Syntax'),
    Node('Type', kind='Syntax'),
    Node('Pattern', kind='Syntax'),
    Node('UnknownDecl', kind='Decl'),
    Node('UnknownExpr', kind='Expr'),
    Node('UnknownStmt', kind='Stmt'),
    Node('UnknownType', kind='Type'),
    Node('UnknownPattern', kind='Pattern'),

    # code-block-item = (decl | stmt | expr) ';'?
    Node('CodeBlockItem', kind='Syntax', omit_when_empty=True,
         description="""
         A CodeBlockItem is any Syntax node that appears on its own line inside
         a CodeBlock.
         """,
         children=[
             Child('Item', kind='Syntax',
                   description="The underlying node inside the code block.",
                   node_choices=[
                       Child('Decl', kind='Decl'),
                       Child('Stmt', kind='Stmt'),
                       Child('Expr', kind='Expr'),
                       Child('TokenList', kind='TokenList'),
                       Child('NonEmptyTokenList', kind='NonEmptyTokenList'),
                   ]),
             Child('Semicolon', kind='SemicolonToken',
                   description="""
                   If present, the trailing semicolon at the end of the item.
                   """,
                   is_optional=True),
             Child('ErrorTokens', kind='Syntax', is_optional=True),
         ]),

    # code-block-item-list -> code-block-item code-block-item-list?
    Node('CodeBlockItemList', kind='SyntaxCollection',
         element='CodeBlockItem'),

    # code-block -> '{' stmt-list '}'
    Node('CodeBlock', kind='Syntax',
         traits=['Braced', 'WithStatements'],
         children=[
             Child('LeftBrace', kind='LeftBraceToken'),
             Child('Statements', kind='CodeBlockItemList',
                   collection_element_name='Statement'),
             Child('RightBrace', kind='RightBraceToken'),
         ]),
]
