rustpython-ruff_python_parser 0.15.8

Unofficial fork for RustPython
Documentation
---
source: crates/ruff_python_parser/tests/fixtures.rs
input_file: crates/ruff_python_parser/resources/inline/err/params_star_after_slash.py
---
## AST

```
Module(
    ModModule {
        node_index: NodeIndex(None),
        range: 0..105,
        body: [
            FunctionDef(
                StmtFunctionDef {
                    node_index: NodeIndex(None),
                    range: 0..19,
                    is_async: false,
                    decorator_list: [],
                    name: Identifier {
                        id: Name("foo"),
                        range: 4..7,
                        node_index: NodeIndex(None),
                    },
                    type_params: None,
                    parameters: Parameters {
                        range: 7..14,
                        node_index: NodeIndex(None),
                        posonlyargs: [],
                        args: [],
                        vararg: Some(
                            Parameter {
                                range: 8..10,
                                node_index: NodeIndex(None),
                                name: Identifier {
                                    id: Name("a"),
                                    range: 9..10,
                                    node_index: NodeIndex(None),
                                },
                                annotation: None,
                            },
                        ),
                        kwonlyargs: [],
                        kwarg: None,
                    },
                    returns: None,
                    body: [
                        Expr(
                            StmtExpr {
                                node_index: NodeIndex(None),
                                range: 16..19,
                                value: EllipsisLiteral(
                                    ExprEllipsisLiteral {
                                        node_index: NodeIndex(None),
                                        range: 16..19,
                                    },
                                ),
                            },
                        ),
                    ],
                },
            ),
            FunctionDef(
                StmtFunctionDef {
                    node_index: NodeIndex(None),
                    range: 20..48,
                    is_async: false,
                    decorator_list: [],
                    name: Identifier {
                        id: Name("foo"),
                        range: 24..27,
                        node_index: NodeIndex(None),
                    },
                    type_params: None,
                    parameters: Parameters {
                        range: 27..43,
                        node_index: NodeIndex(None),
                        posonlyargs: [
                            ParameterWithDefault {
                                range: 28..29,
                                node_index: NodeIndex(None),
                                parameter: Parameter {
                                    range: 28..29,
                                    node_index: NodeIndex(None),
                                    name: Identifier {
                                        id: Name("a"),
                                        range: 28..29,
                                        node_index: NodeIndex(None),
                                    },
                                    annotation: None,
                                },
                                default: None,
                            },
                        ],
                        args: [],
                        vararg: Some(
                            Parameter {
                                range: 31..36,
                                node_index: NodeIndex(None),
                                name: Identifier {
                                    id: Name("args"),
                                    range: 32..36,
                                    node_index: NodeIndex(None),
                                },
                                annotation: None,
                            },
                        ),
                        kwonlyargs: [
                            ParameterWithDefault {
                                range: 38..39,
                                node_index: NodeIndex(None),
                                parameter: Parameter {
                                    range: 38..39,
                                    node_index: NodeIndex(None),
                                    name: Identifier {
                                        id: Name("b"),
                                        range: 38..39,
                                        node_index: NodeIndex(None),
                                    },
                                    annotation: None,
                                },
                                default: None,
                            },
                        ],
                        kwarg: None,
                    },
                    returns: None,
                    body: [
                        Expr(
                            StmtExpr {
                                node_index: NodeIndex(None),
                                range: 45..48,
                                value: EllipsisLiteral(
                                    ExprEllipsisLiteral {
                                        node_index: NodeIndex(None),
                                        range: 45..48,
                                    },
                                ),
                            },
                        ),
                    ],
                },
            ),
            FunctionDef(
                StmtFunctionDef {
                    node_index: NodeIndex(None),
                    range: 49..73,
                    is_async: false,
                    decorator_list: [],
                    name: Identifier {
                        id: Name("foo"),
                        range: 53..56,
                        node_index: NodeIndex(None),
                    },
                    type_params: None,
                    parameters: Parameters {
                        range: 56..68,
                        node_index: NodeIndex(None),
                        posonlyargs: [
                            ParameterWithDefault {
                                range: 57..58,
                                node_index: NodeIndex(None),
                                parameter: Parameter {
                                    range: 57..58,
                                    node_index: NodeIndex(None),
                                    name: Identifier {
                                        id: Name("a"),
                                        range: 57..58,
                                        node_index: NodeIndex(None),
                                    },
                                    annotation: None,
                                },
                                default: None,
                            },
                        ],
                        args: [],
                        vararg: None,
                        kwonlyargs: [
                            ParameterWithDefault {
                                range: 66..67,
                                node_index: NodeIndex(None),
                                parameter: Parameter {
                                    range: 66..67,
                                    node_index: NodeIndex(None),
                                    name: Identifier {
                                        id: Name("b"),
                                        range: 66..67,
                                        node_index: NodeIndex(None),
                                    },
                                    annotation: None,
                                },
                                default: None,
                            },
                        ],
                        kwarg: None,
                    },
                    returns: None,
                    body: [
                        Expr(
                            StmtExpr {
                                node_index: NodeIndex(None),
                                range: 70..73,
                                value: EllipsisLiteral(
                                    ExprEllipsisLiteral {
                                        node_index: NodeIndex(None),
                                        range: 70..73,
                                    },
                                ),
                            },
                        ),
                    ],
                },
            ),
            FunctionDef(
                StmtFunctionDef {
                    node_index: NodeIndex(None),
                    range: 74..104,
                    is_async: false,
                    decorator_list: [],
                    name: Identifier {
                        id: Name("foo"),
                        range: 78..81,
                        node_index: NodeIndex(None),
                    },
                    type_params: None,
                    parameters: Parameters {
                        range: 81..99,
                        node_index: NodeIndex(None),
                        posonlyargs: [
                            ParameterWithDefault {
                                range: 82..83,
                                node_index: NodeIndex(None),
                                parameter: Parameter {
                                    range: 82..83,
                                    node_index: NodeIndex(None),
                                    name: Identifier {
                                        id: Name("a"),
                                        range: 82..83,
                                        node_index: NodeIndex(None),
                                    },
                                    annotation: None,
                                },
                                default: None,
                            },
                        ],
                        args: [],
                        vararg: None,
                        kwonlyargs: [
                            ParameterWithDefault {
                                range: 88..89,
                                node_index: NodeIndex(None),
                                parameter: Parameter {
                                    range: 88..89,
                                    node_index: NodeIndex(None),
                                    name: Identifier {
                                        id: Name("b"),
                                        range: 88..89,
                                        node_index: NodeIndex(None),
                                    },
                                    annotation: None,
                                },
                                default: None,
                            },
                            ParameterWithDefault {
                                range: 91..92,
                                node_index: NodeIndex(None),
                                parameter: Parameter {
                                    range: 91..92,
                                    node_index: NodeIndex(None),
                                    name: Identifier {
                                        id: Name("c"),
                                        range: 91..92,
                                        node_index: NodeIndex(None),
                                    },
                                    annotation: None,
                                },
                                default: None,
                            },
                            ParameterWithDefault {
                                range: 97..98,
                                node_index: NodeIndex(None),
                                parameter: Parameter {
                                    range: 97..98,
                                    node_index: NodeIndex(None),
                                    name: Identifier {
                                        id: Name("d"),
                                        range: 97..98,
                                        node_index: NodeIndex(None),
                                    },
                                    annotation: None,
                                },
                                default: None,
                            },
                        ],
                        kwarg: None,
                    },
                    returns: None,
                    body: [
                        Expr(
                            StmtExpr {
                                node_index: NodeIndex(None),
                                range: 101..104,
                                value: EllipsisLiteral(
                                    ExprEllipsisLiteral {
                                        node_index: NodeIndex(None),
                                        range: 101..104,
                                    },
                                ),
                            },
                        ),
                    ],
                },
            ),
        ],
    },
)
```
## Errors

  |
1 | def foo(*a, /): ...
  |             ^ Syntax Error: '/' parameter must appear before '*' parameter
2 | def foo(a, *args, b, /): ...
3 | def foo(a, *, /, b): ...
  |


  |
1 | def foo(*a, /): ...
2 | def foo(a, *args, b, /): ...
  |                      ^ Syntax Error: '/' parameter must appear before '*' parameter
3 | def foo(a, *, /, b): ...
4 | def foo(a, *, b, c, /, d): ...
  |


  |
1 | def foo(*a, /): ...
2 | def foo(a, *args, b, /): ...
3 | def foo(a, *, /, b): ...
  |               ^ Syntax Error: '/' parameter must appear before '*' parameter
4 | def foo(a, *, b, c, /, d): ...
  |


  |
2 | def foo(a, *args, b, /): ...
3 | def foo(a, *, /, b): ...
4 | def foo(a, *, b, c, /, d): ...
  |                     ^ Syntax Error: '/' parameter must appear before '*' parameter
  |