Skip to content

Commit

Permalink
Add support for positional-only arguments
Browse files Browse the repository at this point in the history
cpython commit: 8c77b8cb9188165a123f2512026e3629bf03dc9b
  • Loading branch information
progval committed Sep 9, 2020
1 parent ae3eada commit 0a5f5ac
Show file tree
Hide file tree
Showing 5 changed files with 475 additions and 106 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

work in progress

Support for 3.8 syntax

Breaking changes:

* Added `Expression::Await` variant
* Added `Expression::Named` variant
* Changed TypedArgsList and UntypedArgsList to add `posonly_args` field, and rename `positional_args` to `args`

Other changes

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# rust-python-parser
A Python parser for Rust libraries and programs.

Currently supports Python 3.7's syntax (and Python 3.8 up to
[2018-09-22](http:https://github.com/python/cpython/commit/fd97d1f1af910a6222ea12aec42c456b64f9aee4)).
Currently supports Python 3.8's syntax (except type comments,
which are ignored like regular comments)
6 changes: 4 additions & 2 deletions src/ast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ impl<T> Default for StarParams<T> {
/// The list of parameters of a function definition.
#[derive(Clone, Debug, PartialEq, Default)]
pub struct TypedArgsList {
pub positional_args: Vec<(Name, Option<Expression>, Option<Expression>)>,
pub posonly_args: Vec<(Name, Option<Expression>, Option<Expression>)>,
pub args: Vec<(Name, Option<Expression>, Option<Expression>)>,
pub star_args: StarParams<(Name, Option<Expression>)>,
pub keyword_args: Vec<(Name, Option<Expression>, Option<Expression>)>,
pub star_kwargs: Option<(Name, Option<Expression>)>,
Expand All @@ -54,7 +55,8 @@ pub struct TypedArgsList {
/// The list of parameters of a lambda definition.
#[derive(Clone, Debug, PartialEq, Default)]
pub struct UntypedArgsList {
pub positional_args: Vec<(Name, Option<Expression>)>,
pub posonly_args: Vec<(Name, Option<Expression>)>,
pub args: Vec<(Name, Option<Expression>)>,
pub star_args: StarParams<Name>,
pub keyword_args: Vec<(Name, Option<Expression>)>,
pub star_kwargs: Option<Name>,
Expand Down
Loading

0 comments on commit 0a5f5ac

Please sign in to comment.