Fix T...name
authorDale Weiler <weilercdale@gmail.com>
Thu, 31 Jul 2014 16:37:26 +0000 (12:37 -0400)
committerDale Weiler <weilercdale@gmail.com>
Thu, 31 Jul 2014 16:37:26 +0000 (12:37 -0400)
parser.c
tests/varargs.qc

index f95a2315784c83c52d6aaad00d76c1a278120f74..c45f68eac9d21e13a98e5cd5e99a20c0caaafc17 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -4675,10 +4675,6 @@ static ast_value *parse_parameter_list(parser_t *parser, ast_value *var)
                 }
             }
         } else {
-            if (OPTS_OPTION_U32(OPTION_STANDARD) == COMPILER_FTEQCC && param->name[0] == '<') {
-                parseerror(parser, "parameter name omitted");
-                goto on_error;
-            }
             vec_push(params, param);
             if (param->expression.vtype >= TYPE_VARIANT) {
                 char tname[1024]; /* typename is reserved in C++ */
@@ -4697,12 +4693,17 @@ static ast_value *parse_parameter_list(parser_t *parser, ast_value *var)
                 }
                 if (parser->tok == TOKEN_IDENT) {
                     argcounter = util_strdup(parser_tokval(parser));
+                    ast_value_set_name(param, argcounter);
                     if (!parser_next(parser) || parser->tok != ')') {
                         parseerror(parser, "`...` must be the last parameter of a variadic function declaration");
                         goto on_error;
                     }
                 }
             }
+            if (OPTS_OPTION_U32(OPTION_STANDARD) == COMPILER_FTEQCC && param->name[0] == '<') {
+                parseerror(parser, "parameter name omitted");
+                goto on_error;
+            }
         }
     }
 
index eceec4a5ac693a824ead8f758a262207515fb678..4b0d80686e079be78b63f3c0a2f95e0768062a83 100644 (file)
@@ -1,4 +1,4 @@
-void nbva(float a, ...count) {
+void nbva(float a, string...count) {
     print("You gave me ", ftos(count), " additional parameters\n");
     print("First: ", ...(0, string), "\n");
     print("You chose: ", ...(a, string), "\n");