Replace LALRPOP parser with hand-written parser
Co-authored-by: Micha Reiser <micha@reiser.io>
This commit is contained in:
committed by
Dhruv Manilawala
parent
461cdad53a
commit
78ee6441a7
@@ -0,0 +1,829 @@
|
||||
---
|
||||
source: crates/ruff_python_parser/tests/fixtures.rs
|
||||
input_file: crates/ruff_python_parser/resources/valid/statement/function.py
|
||||
---
|
||||
## AST
|
||||
|
||||
```
|
||||
Module(
|
||||
ModModule {
|
||||
range: 0..683,
|
||||
body: [
|
||||
FunctionDef(
|
||||
StmtFunctionDef {
|
||||
range: 0..29,
|
||||
is_async: false,
|
||||
decorator_list: [],
|
||||
name: Identifier {
|
||||
id: "no_parameters",
|
||||
range: 4..17,
|
||||
},
|
||||
type_params: None,
|
||||
parameters: Parameters {
|
||||
range: 17..19,
|
||||
posonlyargs: [],
|
||||
args: [],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
returns: None,
|
||||
body: [
|
||||
Pass(
|
||||
StmtPass {
|
||||
range: 25..29,
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
),
|
||||
FunctionDef(
|
||||
StmtFunctionDef {
|
||||
range: 32..76,
|
||||
is_async: false,
|
||||
decorator_list: [],
|
||||
name: Identifier {
|
||||
id: "positional_parameters",
|
||||
range: 36..57,
|
||||
},
|
||||
type_params: None,
|
||||
parameters: Parameters {
|
||||
range: 57..66,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 58..59,
|
||||
parameter: Parameter {
|
||||
range: 58..59,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 58..59,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 61..62,
|
||||
parameter: Parameter {
|
||||
range: 61..62,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 61..62,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 64..65,
|
||||
parameter: Parameter {
|
||||
range: 64..65,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 64..65,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
returns: None,
|
||||
body: [
|
||||
Pass(
|
||||
StmtPass {
|
||||
range: 72..76,
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
),
|
||||
FunctionDef(
|
||||
StmtFunctionDef {
|
||||
range: 79..149,
|
||||
is_async: false,
|
||||
decorator_list: [],
|
||||
name: Identifier {
|
||||
id: "positional_parameters_with_default_values",
|
||||
range: 83..124,
|
||||
},
|
||||
type_params: None,
|
||||
parameters: Parameters {
|
||||
range: 124..139,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 125..126,
|
||||
parameter: Parameter {
|
||||
range: 125..126,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 125..126,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 128..132,
|
||||
parameter: Parameter {
|
||||
range: 128..129,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 128..129,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
NumberLiteral(
|
||||
ExprNumberLiteral {
|
||||
range: 130..132,
|
||||
value: Int(
|
||||
20,
|
||||
),
|
||||
},
|
||||
),
|
||||
),
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 134..138,
|
||||
parameter: Parameter {
|
||||
range: 134..135,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 134..135,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
NumberLiteral(
|
||||
ExprNumberLiteral {
|
||||
range: 136..138,
|
||||
value: Int(
|
||||
30,
|
||||
),
|
||||
},
|
||||
),
|
||||
),
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
returns: None,
|
||||
body: [
|
||||
Pass(
|
||||
StmtPass {
|
||||
range: 145..149,
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
),
|
||||
FunctionDef(
|
||||
StmtFunctionDef {
|
||||
range: 152..201,
|
||||
is_async: false,
|
||||
decorator_list: [],
|
||||
name: Identifier {
|
||||
id: "keyword_only_parameters",
|
||||
range: 156..179,
|
||||
},
|
||||
type_params: None,
|
||||
parameters: Parameters {
|
||||
range: 179..191,
|
||||
posonlyargs: [],
|
||||
args: [],
|
||||
vararg: None,
|
||||
kwonlyargs: [
|
||||
ParameterWithDefault {
|
||||
range: 183..184,
|
||||
parameter: Parameter {
|
||||
range: 183..184,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 183..184,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 186..187,
|
||||
parameter: Parameter {
|
||||
range: 186..187,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 186..187,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 189..190,
|
||||
parameter: Parameter {
|
||||
range: 189..190,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 189..190,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
kwarg: None,
|
||||
},
|
||||
returns: None,
|
||||
body: [
|
||||
Pass(
|
||||
StmtPass {
|
||||
range: 197..201,
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
),
|
||||
FunctionDef(
|
||||
StmtFunctionDef {
|
||||
range: 204..273,
|
||||
is_async: false,
|
||||
decorator_list: [],
|
||||
name: Identifier {
|
||||
id: "keyword_only_parameters_with_defaults",
|
||||
range: 208..245,
|
||||
},
|
||||
type_params: None,
|
||||
parameters: Parameters {
|
||||
range: 245..263,
|
||||
posonlyargs: [],
|
||||
args: [],
|
||||
vararg: None,
|
||||
kwonlyargs: [
|
||||
ParameterWithDefault {
|
||||
range: 249..250,
|
||||
parameter: Parameter {
|
||||
range: 249..250,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 249..250,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 252..256,
|
||||
parameter: Parameter {
|
||||
range: 252..253,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 252..253,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
NumberLiteral(
|
||||
ExprNumberLiteral {
|
||||
range: 254..256,
|
||||
value: Int(
|
||||
20,
|
||||
),
|
||||
},
|
||||
),
|
||||
),
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 258..262,
|
||||
parameter: Parameter {
|
||||
range: 258..259,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 258..259,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
NumberLiteral(
|
||||
ExprNumberLiteral {
|
||||
range: 260..262,
|
||||
value: Int(
|
||||
30,
|
||||
),
|
||||
},
|
||||
),
|
||||
),
|
||||
},
|
||||
],
|
||||
kwarg: None,
|
||||
},
|
||||
returns: None,
|
||||
body: [
|
||||
Pass(
|
||||
StmtPass {
|
||||
range: 269..273,
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
),
|
||||
FunctionDef(
|
||||
StmtFunctionDef {
|
||||
range: 276..344,
|
||||
is_async: false,
|
||||
decorator_list: [],
|
||||
name: Identifier {
|
||||
id: "positional_and_keyword_parameters",
|
||||
range: 280..313,
|
||||
},
|
||||
type_params: None,
|
||||
parameters: Parameters {
|
||||
range: 313..334,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 314..315,
|
||||
parameter: Parameter {
|
||||
range: 314..315,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 314..315,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 317..318,
|
||||
parameter: Parameter {
|
||||
range: 317..318,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 317..318,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 320..321,
|
||||
parameter: Parameter {
|
||||
range: 320..321,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 320..321,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [
|
||||
ParameterWithDefault {
|
||||
range: 326..327,
|
||||
parameter: Parameter {
|
||||
range: 326..327,
|
||||
name: Identifier {
|
||||
id: "d",
|
||||
range: 326..327,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 329..330,
|
||||
parameter: Parameter {
|
||||
range: 329..330,
|
||||
name: Identifier {
|
||||
id: "e",
|
||||
range: 329..330,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 332..333,
|
||||
parameter: Parameter {
|
||||
range: 332..333,
|
||||
name: Identifier {
|
||||
id: "f",
|
||||
range: 332..333,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
kwarg: None,
|
||||
},
|
||||
returns: None,
|
||||
body: [
|
||||
Pass(
|
||||
StmtPass {
|
||||
range: 340..344,
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
),
|
||||
FunctionDef(
|
||||
StmtFunctionDef {
|
||||
range: 347..435,
|
||||
is_async: false,
|
||||
decorator_list: [],
|
||||
name: Identifier {
|
||||
id: "positional_and_keyword_parameters_with_defaults",
|
||||
range: 351..398,
|
||||
},
|
||||
type_params: None,
|
||||
parameters: Parameters {
|
||||
range: 398..425,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 399..400,
|
||||
parameter: Parameter {
|
||||
range: 399..400,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 399..400,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 402..403,
|
||||
parameter: Parameter {
|
||||
range: 402..403,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 402..403,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 405..406,
|
||||
parameter: Parameter {
|
||||
range: 405..406,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 405..406,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [
|
||||
ParameterWithDefault {
|
||||
range: 411..412,
|
||||
parameter: Parameter {
|
||||
range: 411..412,
|
||||
name: Identifier {
|
||||
id: "d",
|
||||
range: 411..412,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 414..418,
|
||||
parameter: Parameter {
|
||||
range: 414..415,
|
||||
name: Identifier {
|
||||
id: "e",
|
||||
range: 414..415,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
NumberLiteral(
|
||||
ExprNumberLiteral {
|
||||
range: 416..418,
|
||||
value: Int(
|
||||
20,
|
||||
),
|
||||
},
|
||||
),
|
||||
),
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 420..424,
|
||||
parameter: Parameter {
|
||||
range: 420..421,
|
||||
name: Identifier {
|
||||
id: "f",
|
||||
range: 420..421,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
NumberLiteral(
|
||||
ExprNumberLiteral {
|
||||
range: 422..424,
|
||||
value: Int(
|
||||
30,
|
||||
),
|
||||
},
|
||||
),
|
||||
),
|
||||
},
|
||||
],
|
||||
kwarg: None,
|
||||
},
|
||||
returns: None,
|
||||
body: [
|
||||
Pass(
|
||||
StmtPass {
|
||||
range: 431..435,
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
),
|
||||
FunctionDef(
|
||||
StmtFunctionDef {
|
||||
range: 438..548,
|
||||
is_async: false,
|
||||
decorator_list: [],
|
||||
name: Identifier {
|
||||
id: "positional_and_keyword_parameters_with_defaults_and_varargs",
|
||||
range: 442..501,
|
||||
},
|
||||
type_params: None,
|
||||
parameters: Parameters {
|
||||
range: 501..538,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 507..508,
|
||||
parameter: Parameter {
|
||||
range: 507..508,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 507..508,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 510..511,
|
||||
parameter: Parameter {
|
||||
range: 510..511,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 510..511,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 513..514,
|
||||
parameter: Parameter {
|
||||
range: 513..514,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 513..514,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
vararg: Some(
|
||||
Parameter {
|
||||
range: 517..521,
|
||||
name: Identifier {
|
||||
id: "args",
|
||||
range: 517..521,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
),
|
||||
kwonlyargs: [
|
||||
ParameterWithDefault {
|
||||
range: 523..524,
|
||||
parameter: Parameter {
|
||||
range: 523..524,
|
||||
name: Identifier {
|
||||
id: "d",
|
||||
range: 523..524,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 526..530,
|
||||
parameter: Parameter {
|
||||
range: 526..527,
|
||||
name: Identifier {
|
||||
id: "e",
|
||||
range: 526..527,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
NumberLiteral(
|
||||
ExprNumberLiteral {
|
||||
range: 528..530,
|
||||
value: Int(
|
||||
20,
|
||||
),
|
||||
},
|
||||
),
|
||||
),
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 532..536,
|
||||
parameter: Parameter {
|
||||
range: 532..533,
|
||||
name: Identifier {
|
||||
id: "f",
|
||||
range: 532..533,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
NumberLiteral(
|
||||
ExprNumberLiteral {
|
||||
range: 534..536,
|
||||
value: Int(
|
||||
30,
|
||||
),
|
||||
},
|
||||
),
|
||||
),
|
||||
},
|
||||
],
|
||||
kwarg: None,
|
||||
},
|
||||
returns: None,
|
||||
body: [
|
||||
Pass(
|
||||
StmtPass {
|
||||
range: 544..548,
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
),
|
||||
FunctionDef(
|
||||
StmtFunctionDef {
|
||||
range: 551..682,
|
||||
is_async: false,
|
||||
decorator_list: [],
|
||||
name: Identifier {
|
||||
id: "positional_and_keyword_parameters_with_defaults_and_varargs_and_kwargs",
|
||||
range: 555..625,
|
||||
},
|
||||
type_params: None,
|
||||
parameters: Parameters {
|
||||
range: 625..672,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 631..632,
|
||||
parameter: Parameter {
|
||||
range: 631..632,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 631..632,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 634..635,
|
||||
parameter: Parameter {
|
||||
range: 634..635,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 634..635,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 637..638,
|
||||
parameter: Parameter {
|
||||
range: 637..638,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 637..638,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
vararg: Some(
|
||||
Parameter {
|
||||
range: 641..645,
|
||||
name: Identifier {
|
||||
id: "args",
|
||||
range: 641..645,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
),
|
||||
kwonlyargs: [
|
||||
ParameterWithDefault {
|
||||
range: 647..648,
|
||||
parameter: Parameter {
|
||||
range: 647..648,
|
||||
name: Identifier {
|
||||
id: "d",
|
||||
range: 647..648,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 650..654,
|
||||
parameter: Parameter {
|
||||
range: 650..651,
|
||||
name: Identifier {
|
||||
id: "e",
|
||||
range: 650..651,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
NumberLiteral(
|
||||
ExprNumberLiteral {
|
||||
range: 652..654,
|
||||
value: Int(
|
||||
20,
|
||||
),
|
||||
},
|
||||
),
|
||||
),
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 656..660,
|
||||
parameter: Parameter {
|
||||
range: 656..657,
|
||||
name: Identifier {
|
||||
id: "f",
|
||||
range: 656..657,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
NumberLiteral(
|
||||
ExprNumberLiteral {
|
||||
range: 658..660,
|
||||
value: Int(
|
||||
30,
|
||||
),
|
||||
},
|
||||
),
|
||||
),
|
||||
},
|
||||
],
|
||||
kwarg: Some(
|
||||
Parameter {
|
||||
range: 664..670,
|
||||
name: Identifier {
|
||||
id: "kwargs",
|
||||
range: 664..670,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
),
|
||||
},
|
||||
returns: None,
|
||||
body: [
|
||||
Pass(
|
||||
StmtPass {
|
||||
range: 678..682,
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
)
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user