@@ -1856,136 +1856,147 @@ _get_defaults(Parser *p, asdl_seq *names_with_defaults)
18561856 return seq ;
18571857}
18581858
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 ) {
18661864 if (slash_without_default != NULL ) {
1867- posonlyargs = slash_without_default ;
1865+ * posonlyargs = slash_without_default ;
18681866 }
18691867 else if (slash_with_default != NULL ) {
18701868 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 );
18721870 if (!slash_with_default_names ) {
1873- return NULL ;
1871+ return -1 ;
18741872 }
1875- posonlyargs = (asdl_arg_seq * )_PyPegen_join_sequences (
1873+ * posonlyargs = (asdl_arg_seq * )_PyPegen_join_sequences (
18761874 p ,
18771875 (asdl_seq * )slash_with_default -> plain_names ,
18781876 (asdl_seq * )slash_with_default_names );
1879- if (!posonlyargs ) {
1880- return NULL ;
1881- }
18821877 }
18831878 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 );
18881880 }
1881+ return * posonlyargs == NULL ? -1 : 0 ;
1882+ }
18891883
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 ) {
18911889 if (plain_names != NULL && names_with_default != NULL ) {
18921890 asdl_arg_seq * names_with_default_names = _get_names (p , names_with_default );
18931891 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 ;
19021893 }
1894+ * posargs = (asdl_arg_seq * )_PyPegen_join_sequences (
1895+ p ,(asdl_seq * )plain_names , (asdl_seq * )names_with_default_names );
19031896 }
19041897 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 );
19091899 }
19101900 else if (plain_names != NULL && names_with_default == NULL ) {
1911- posargs = plain_names ;
1901+ * posargs = plain_names ;
19121902 }
19131903 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 );
19181905 }
1906+ return * posargs == NULL ? -1 : 0 ;
1907+ }
19191908
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 ) {
19211914 if (slash_with_default != NULL && names_with_default != NULL ) {
19221915 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 );
19241917 if (!slash_with_default_values ) {
1925- return NULL ;
1918+ return -1 ;
19261919 }
19271920 asdl_expr_seq * names_with_default_values = _get_defaults (p , names_with_default );
19281921 if (!names_with_default_values ) {
1929- return NULL ;
1922+ return -1 ;
19301923 }
1931- posdefaults = (asdl_expr_seq * )_PyPegen_join_sequences (
1924+ * posdefaults = (asdl_expr_seq * )_PyPegen_join_sequences (
19321925 p ,
19331926 (asdl_seq * )slash_with_default_values ,
19341927 (asdl_seq * )names_with_default_values );
1935- if (!posdefaults ) {
1936- return NULL ;
1937- }
19381928 }
19391929 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 );
19441931 }
19451932 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 );
19501934 }
19511935 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 );
19611937 }
1938+ return * posdefaults == NULL ? -1 : 0 ;
1939+ }
19621940
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 ) {
19641945 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 );
19691947 }
19701948 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 ;
19751954 }
19761955
1977- asdl_expr_seq * kwdefaults ;
19781956 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 );
19831958 }
19841959 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 ;
19892000 }
19902001
19912002 arg_ty kwarg = NULL ;
@@ -1997,6 +2008,7 @@ _PyPegen_make_arguments(Parser *p, asdl_arg_seq *slash_without_default,
19972008 kwdefaults , kwarg , posdefaults , p -> arena );
19982009}
19992010
2011+
20002012/* Constructs an empty arguments_ty object, that gets used when a function accepts no
20012013 * arguments. */
20022014arguments_ty
0 commit comments