Add stub type_params handling for class and function definitions

This commit is contained in:
Zanie 2023-07-10 14:00:34 -05:00
parent df2b5dfed0
commit 7b0aeeec4b
13 changed files with 29 additions and 1 deletions

View file

@ -149,6 +149,7 @@ impl crate::fold::Fold<TextRange> for LinearLocator<'_> {
keywords,
body,
decorator_list,
type_params,
range,
} = node;
let decorator_list = self.fold(decorator_list)?;
@ -159,12 +160,15 @@ impl crate::fold::Fold<TextRange> for LinearLocator<'_> {
let keywords = self.fold(keywords)?;
let body = self.fold(body)?;
let range = self.map_user(range, context)?;
let type_params = self.fold(type_params)?;
Ok(crate::StmtClassDef {
name,
bases,
keywords,
body,
decorator_list,
type_params,
range,
})
}
@ -180,6 +184,7 @@ impl crate::fold::Fold<TextRange> for LinearLocator<'_> {
returns,
type_comment,
range,
type_params,
} = node;
let decorator_list = self.fold(decorator_list)?;
let context = self.will_map_user(&range);
@ -189,6 +194,7 @@ impl crate::fold::Fold<TextRange> for LinearLocator<'_> {
let returns = self.fold(returns)?;
let body = self.fold(body)?;
let type_comment = self.fold(type_comment)?;
let type_params = self.fold(type_params)?;
let range = self.map_user(range, context)?;
Ok(crate::StmtFunctionDef {
name,
@ -196,6 +202,7 @@ impl crate::fold::Fold<TextRange> for LinearLocator<'_> {
body,
decorator_list,
returns,
type_params,
type_comment,
range,
})
@ -211,6 +218,7 @@ impl crate::fold::Fold<TextRange> for LinearLocator<'_> {
decorator_list,
returns,
type_comment,
type_params,
range,
} = node;
let decorator_list = self.fold(decorator_list)?;
@ -221,6 +229,7 @@ impl crate::fold::Fold<TextRange> for LinearLocator<'_> {
let returns = self.fold(returns)?;
let body = self.fold(body)?;
let type_comment = self.fold(type_comment)?;
let type_params = self.fold(type_params)?;
let range = self.map_user(range, context)?;
Ok(crate::StmtAsyncFunctionDef {
name,
@ -229,6 +238,7 @@ impl crate::fold::Fold<TextRange> for LinearLocator<'_> {
decorator_list,
returns,
type_comment,
type_params,
range,
})
}

5
parser/src/python.rs generated
View file

@ -30685,6 +30685,7 @@ fn __action157(
let returns = r.map(|x| Box::new(x));
let end_location = body.last().unwrap().end();
let type_comment = None;
let type_params = Vec::new();
if is_async.is_some() {
ast::StmtAsyncFunctionDef {
name,
@ -30693,6 +30694,7 @@ fn __action157(
decorator_list,
returns,
type_comment,
type_params,
range: (location..end_location).into(),
}
.into()
@ -30704,6 +30706,7 @@ fn __action157(
decorator_list,
returns,
type_comment,
type_params,
range: (location..end_location).into(),
}
.into()
@ -30842,12 +30845,14 @@ fn __action164(
None => (vec![], vec![]),
};
let end_location = body.last().unwrap().end();
let type_params = Vec::new();
ast::Stmt::ClassDef(ast::StmtClassDef {
name,
bases,
keywords,
body,
decorator_list,
type_params,
range: (location..end_location).into(),
})
}

View file

@ -65,6 +65,7 @@ Ok(
decorator_list: [],
returns: None,
type_comment: None,
type_params: [],
},
),
],

View file

@ -85,6 +85,7 @@ Ok(
decorator_list: [],
returns: None,
type_comment: None,
type_params: [],
},
),
],

View file

@ -28,6 +28,7 @@ Ok(
decorator_list: [],
returns: None,
type_comment: None,
type_params: [],
},
),
],

View file

@ -102,6 +102,7 @@ Ok(
decorator_list: [],
returns: None,
type_comment: None,
type_params: [],
},
),
],

View file

@ -122,6 +122,7 @@ Ok(
decorator_list: [],
returns: None,
type_comment: None,
type_params: [],
},
),
],

View file

@ -131,6 +131,7 @@ Ok(
decorator_list: [],
returns: None,
type_comment: None,
type_params: [],
},
),
],

View file

@ -140,6 +140,7 @@ Ok(
decorator_list: [],
returns: None,
type_comment: None,
type_params: [],
},
),
],

View file

@ -65,6 +65,7 @@ Ok(
decorator_list: [],
returns: None,
type_comment: None,
type_params: [],
},
),
],

View file

@ -85,6 +85,7 @@ Ok(
decorator_list: [],
returns: None,
type_comment: None,
type_params: [],
},
),
],

View file

@ -1,6 +1,6 @@
---
source: parser/src/parser.rs
expression: "parse_program(source, \"<test>\").unwrap()"
expression: "ast::Suite::parse(source, \"<test>\").unwrap()"
---
[
ClassDef(
@ -68,6 +68,7 @@ expression: "parse_program(source, \"<test>\").unwrap()"
decorator_list: [],
returns: None,
type_comment: None,
type_params: [],
},
),
FunctionDef(
@ -129,10 +130,12 @@ expression: "parse_program(source, \"<test>\").unwrap()"
decorator_list: [],
returns: None,
type_comment: None,
type_params: [],
},
),
],
decorator_list: [],
type_params: [],
},
),
]

View file

@ -90,6 +90,7 @@ expression: parse_ast
),
),
type_comment: None,
type_params: [],
},
),
]