@@ -1856,136 +1856,147 @@ _get_defaults(Parser *p, asdl_seq *names_with_defaults)
1856
1856
return seq ;
1857
1857
}
1858
1858
1859
- /* Constructs an arguments_ty object out of all the parsed constructs in the parameters rule */
1860
- arguments_ty
1861
- _PyPegen_make_arguments (Parser * p , asdl_arg_seq * slash_without_default ,
1862
- SlashWithDefault * slash_with_default , asdl_arg_seq * plain_names ,
1863
- asdl_seq * names_with_default , StarEtc * star_etc )
1864
- {
1865
- asdl_arg_seq * posonlyargs ;
1859
+ static int
1860
+ _make_posonlyargs (Parser * p ,
1861
+ asdl_arg_seq * slash_without_default ,
1862
+ SlashWithDefault * slash_with_default ,
1863
+ asdl_arg_seq * * posonlyargs ) {
1866
1864
if (slash_without_default != NULL ) {
1867
- posonlyargs = slash_without_default ;
1865
+ * posonlyargs = slash_without_default ;
1868
1866
}
1869
1867
else if (slash_with_default != NULL ) {
1870
1868
asdl_arg_seq * slash_with_default_names =
1871
- _get_names (p , slash_with_default -> names_with_defaults );
1869
+ _get_names (p , slash_with_default -> names_with_defaults );
1872
1870
if (!slash_with_default_names ) {
1873
- return NULL ;
1871
+ return -1 ;
1874
1872
}
1875
- posonlyargs = (asdl_arg_seq * )_PyPegen_join_sequences (
1873
+ * posonlyargs = (asdl_arg_seq * )_PyPegen_join_sequences (
1876
1874
p ,
1877
1875
(asdl_seq * )slash_with_default -> plain_names ,
1878
1876
(asdl_seq * )slash_with_default_names );
1879
- if (!posonlyargs ) {
1880
- return NULL ;
1881
- }
1882
1877
}
1883
1878
else {
1884
- posonlyargs = _Py_asdl_arg_seq_new (0 , p -> arena );
1885
- if (!posonlyargs ) {
1886
- return NULL ;
1887
- }
1879
+ * posonlyargs = _Py_asdl_arg_seq_new (0 , p -> arena );
1888
1880
}
1881
+ return * posonlyargs == NULL ? -1 : 0 ;
1882
+ }
1889
1883
1890
- asdl_arg_seq * posargs ;
1884
+ static int
1885
+ _make_posargs (Parser * p ,
1886
+ asdl_arg_seq * plain_names ,
1887
+ asdl_seq * names_with_default ,
1888
+ asdl_arg_seq * * posargs ) {
1891
1889
if (plain_names != NULL && names_with_default != NULL ) {
1892
1890
asdl_arg_seq * names_with_default_names = _get_names (p , names_with_default );
1893
1891
if (!names_with_default_names ) {
1894
- return NULL ;
1895
- }
1896
- posargs = (asdl_arg_seq * )_PyPegen_join_sequences (
1897
- p ,
1898
- (asdl_seq * )plain_names ,
1899
- (asdl_seq * )names_with_default_names );
1900
- if (!posargs ) {
1901
- return NULL ;
1892
+ return -1 ;
1902
1893
}
1894
+ * posargs = (asdl_arg_seq * )_PyPegen_join_sequences (
1895
+ p ,(asdl_seq * )plain_names , (asdl_seq * )names_with_default_names );
1903
1896
}
1904
1897
else if (plain_names == NULL && names_with_default != NULL ) {
1905
- posargs = _get_names (p , names_with_default );
1906
- if (!posargs ) {
1907
- return NULL ;
1908
- }
1898
+ * posargs = _get_names (p , names_with_default );
1909
1899
}
1910
1900
else if (plain_names != NULL && names_with_default == NULL ) {
1911
- posargs = plain_names ;
1901
+ * posargs = plain_names ;
1912
1902
}
1913
1903
else {
1914
- posargs = _Py_asdl_arg_seq_new (0 , p -> arena );
1915
- if (!posargs ) {
1916
- return NULL ;
1917
- }
1904
+ * posargs = _Py_asdl_arg_seq_new (0 , p -> arena );
1918
1905
}
1906
+ return * posargs == NULL ? -1 : 0 ;
1907
+ }
1919
1908
1920
- asdl_expr_seq * posdefaults ;
1909
+ static int
1910
+ _make_posdefaults (Parser * p ,
1911
+ SlashWithDefault * slash_with_default ,
1912
+ asdl_seq * names_with_default ,
1913
+ asdl_expr_seq * * posdefaults ) {
1921
1914
if (slash_with_default != NULL && names_with_default != NULL ) {
1922
1915
asdl_expr_seq * slash_with_default_values =
1923
- _get_defaults (p , slash_with_default -> names_with_defaults );
1916
+ _get_defaults (p , slash_with_default -> names_with_defaults );
1924
1917
if (!slash_with_default_values ) {
1925
- return NULL ;
1918
+ return -1 ;
1926
1919
}
1927
1920
asdl_expr_seq * names_with_default_values = _get_defaults (p , names_with_default );
1928
1921
if (!names_with_default_values ) {
1929
- return NULL ;
1922
+ return -1 ;
1930
1923
}
1931
- posdefaults = (asdl_expr_seq * )_PyPegen_join_sequences (
1924
+ * posdefaults = (asdl_expr_seq * )_PyPegen_join_sequences (
1932
1925
p ,
1933
1926
(asdl_seq * )slash_with_default_values ,
1934
1927
(asdl_seq * )names_with_default_values );
1935
- if (!posdefaults ) {
1936
- return NULL ;
1937
- }
1938
1928
}
1939
1929
else if (slash_with_default == NULL && names_with_default != NULL ) {
1940
- posdefaults = _get_defaults (p , names_with_default );
1941
- if (!posdefaults ) {
1942
- return NULL ;
1943
- }
1930
+ * posdefaults = _get_defaults (p , names_with_default );
1944
1931
}
1945
1932
else if (slash_with_default != NULL && names_with_default == NULL ) {
1946
- posdefaults = _get_defaults (p , slash_with_default -> names_with_defaults );
1947
- if (!posdefaults ) {
1948
- return NULL ;
1949
- }
1933
+ * posdefaults = _get_defaults (p , slash_with_default -> names_with_defaults );
1950
1934
}
1951
1935
else {
1952
- posdefaults = _Py_asdl_expr_seq_new (0 , p -> arena );
1953
- if (!posdefaults ) {
1954
- return NULL ;
1955
- }
1956
- }
1957
-
1958
- arg_ty vararg = NULL ;
1959
- if (star_etc != NULL && star_etc -> vararg != NULL ) {
1960
- vararg = star_etc -> vararg ;
1936
+ * posdefaults = _Py_asdl_expr_seq_new (0 , p -> arena );
1961
1937
}
1938
+ return * posdefaults == NULL ? -1 : 0 ;
1939
+ }
1962
1940
1963
- asdl_arg_seq * kwonlyargs ;
1941
+ static int
1942
+ _make_kwargs (Parser * p , StarEtc * star_etc ,
1943
+ asdl_arg_seq * * kwonlyargs ,
1944
+ asdl_expr_seq * * kwdefaults ) {
1964
1945
if (star_etc != NULL && star_etc -> kwonlyargs != NULL ) {
1965
- kwonlyargs = _get_names (p , star_etc -> kwonlyargs );
1966
- if (!kwonlyargs ) {
1967
- return NULL ;
1968
- }
1946
+ * kwonlyargs = _get_names (p , star_etc -> kwonlyargs );
1969
1947
}
1970
1948
else {
1971
- kwonlyargs = _Py_asdl_arg_seq_new (0 , p -> arena );
1972
- if (!kwonlyargs ) {
1973
- return NULL ;
1974
- }
1949
+ * kwonlyargs = _Py_asdl_arg_seq_new (0 , p -> arena );
1950
+ }
1951
+
1952
+ if (* kwonlyargs == NULL ) {
1953
+ return -1 ;
1975
1954
}
1976
1955
1977
- asdl_expr_seq * kwdefaults ;
1978
1956
if (star_etc != NULL && star_etc -> kwonlyargs != NULL ) {
1979
- kwdefaults = _get_defaults (p , star_etc -> kwonlyargs );
1980
- if (!kwdefaults ) {
1981
- return NULL ;
1982
- }
1957
+ * kwdefaults = _get_defaults (p , star_etc -> kwonlyargs );
1983
1958
}
1984
1959
else {
1985
- kwdefaults = _Py_asdl_expr_seq_new (0 , p -> arena );
1986
- if (!kwdefaults ) {
1987
- return NULL ;
1988
- }
1960
+ * kwdefaults = _Py_asdl_expr_seq_new (0 , p -> arena );
1961
+ }
1962
+
1963
+ if (* kwdefaults == NULL ) {
1964
+ return -1 ;
1965
+ }
1966
+
1967
+ return 0 ;
1968
+ }
1969
+
1970
+ /* Constructs an arguments_ty object out of all the parsed constructs in the parameters rule */
1971
+ arguments_ty
1972
+ _PyPegen_make_arguments (Parser * p , asdl_arg_seq * slash_without_default ,
1973
+ SlashWithDefault * slash_with_default , asdl_arg_seq * plain_names ,
1974
+ asdl_seq * names_with_default , StarEtc * star_etc )
1975
+ {
1976
+ asdl_arg_seq * posonlyargs ;
1977
+ if (_make_posonlyargs (p , slash_without_default , slash_with_default , & posonlyargs ) == -1 ) {
1978
+ return NULL ;
1979
+ }
1980
+
1981
+ asdl_arg_seq * posargs ;
1982
+ if (_make_posargs (p , plain_names , names_with_default , & posargs ) == -1 ) {
1983
+ return NULL ;
1984
+ }
1985
+
1986
+ asdl_expr_seq * posdefaults ;
1987
+ if (_make_posdefaults (p ,slash_with_default , names_with_default , & posdefaults ) == -1 ) {
1988
+ return NULL ;
1989
+ }
1990
+
1991
+ arg_ty vararg = NULL ;
1992
+ if (star_etc != NULL && star_etc -> vararg != NULL ) {
1993
+ vararg = star_etc -> vararg ;
1994
+ }
1995
+
1996
+ asdl_arg_seq * kwonlyargs ;
1997
+ asdl_expr_seq * kwdefaults ;
1998
+ if (_make_kwargs (p , star_etc , & kwonlyargs , & kwdefaults ) == -1 ) {
1999
+ return NULL ;
1989
2000
}
1990
2001
1991
2002
arg_ty kwarg = NULL ;
@@ -1997,6 +2008,7 @@ _PyPegen_make_arguments(Parser *p, asdl_arg_seq *slash_without_default,
1997
2008
kwdefaults , kwarg , posdefaults , p -> arena );
1998
2009
}
1999
2010
2011
+
2000
2012
/* Constructs an empty arguments_ty object, that gets used when a function accepts no
2001
2013
* arguments. */
2002
2014
arguments_ty
0 commit comments