Skip to content
This repository was archived by the owner on Jul 27, 2023. It is now read-only.

Commit 8fd4d4f

Browse files
committed
Include argument parentheses in range (#5)
# Conflicts: # parser/src/parser.rs # parser/src/python.rs # parser/src/snapshots/rustpython_parser__parser__tests__decorator_ranges.snap
1 parent 6c9c5eb commit 8fd4d4f

17 files changed

+165
-41
lines changed

parser/src/function.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ mod tests {
136136
use super::*;
137137
use crate::{ast, parser::ParseErrorType, Parse};
138138

139-
#[cfg(feature = "all-nodes-with-ranges")]
140139
macro_rules! function_and_lambda {
141140
($($name:ident: $code:expr,)*) => {
142141
$(
@@ -149,6 +148,12 @@ mod tests {
149148
}
150149
}
151150

151+
#[cfg(feature = "all-nodes-with-ranges")]
152+
function_and_lambda! {
153+
test_function_no_args_with_ranges: "def f(): pass",
154+
test_function_pos_args_with_ranges: "def f(a, b, c): pass",
155+
}
156+
152157
#[cfg(feature = "all-nodes-with-ranges")]
153158
function_and_lambda! {
154159
test_function_no_args: "def f(): pass",

parser/src/parser.rs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1221,26 +1221,6 @@ def args_to_tuple(*args: *Ts) -> Tuple[*Ts]: ...
12211221
insta::assert_debug_snapshot!(parse_ast);
12221222
}
12231223

1224-
#[test]
1225-
#[cfg(not(feature = "all-nodes-with-ranges"))]
1226-
fn decorator_ranges() {
1227-
let parse_ast = parse_program(
1228-
r#"
1229-
@my_decorator
1230-
def test():
1231-
pass
1232-
1233-
@class_decorator
1234-
class Abcd:
1235-
pass
1236-
"#
1237-
.trim(),
1238-
"<test>",
1239-
)
1240-
.unwrap();
1241-
insta::assert_debug_snapshot!(parse_ast);
1242-
}
1243-
12441224
#[test]
12451225
fn test_parse_constant() {
12461226
use num_traits::ToPrimitive;
@@ -1257,4 +1237,24 @@ class Abcd:
12571237
let i = ast::Identifier::parse_without_path("test").unwrap();
12581238
assert_eq!(i.as_str(), "test");
12591239
}
1240+
1241+
#[test]
1242+
#[cfg(not(feature = "all-nodes-with-ranges"))]
1243+
fn decorator_ranges() {
1244+
let parse_ast = parse_program(
1245+
r#"
1246+
@my_decorator
1247+
def test():
1248+
pass
1249+
1250+
@class_decorator
1251+
class Abcd:
1252+
pass
1253+
"#
1254+
.trim(),
1255+
"<test>",
1256+
)
1257+
.unwrap();
1258+
insta::assert_debug_snapshot!(parse_ast);
1259+
}
12601260
}

parser/src/python.lalrpop

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1001,8 +1001,14 @@ TypeAliasStatement: ast::Stmt = {
10011001
Parameters: ast::Arguments = {
10021002
<location:@L> "(" <a: (ParameterList<TypedParameter, StarTypedParameter, DoubleStarTypedParameter>)?> ")" <end_location:@R> =>? {
10031003
a.as_ref().map(validate_arguments).transpose()?;
1004+
1005+
let range = optional_range(location, end_location);
10041006
let args = a
1005-
.unwrap_or_else(|| ast::Arguments::empty(optional_range(location, end_location)));
1007+
.map(|mut arguments| {
1008+
arguments.range = range;
1009+
arguments
1010+
})
1011+
.unwrap_or_else(|| ast::Arguments::empty(range));
10061012

10071013
Ok(args)
10081014
}

parser/src/python.rs

Lines changed: 8 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__function__tests__function_kw_only_args.snap

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__function__tests__function_kw_only_args_with_defaults.snap

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__function__tests__function_no_args_with_ranges.snap

Lines changed: 35 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args.snap

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args_with_defaults.snap

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs.snap

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs.snap

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__function__tests__function_pos_args.snap

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__function__tests__function_pos_args_with_defaults.snap

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__function__tests__function_pos_args_with_ranges.snap

Lines changed: 72 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__parser__tests__parse_class.snap

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__parser__tests__parse_function_definition.snap

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/src/snapshots/rustpython_parser__parser__tests__variadic_generics.snap

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)