]> git.kaiwu.me - njs.git/commitdiff
A fix of function name usage.
authorIgor Sysoev <igor@sysoev.ru>
Tue, 18 Oct 2016 12:48:19 +0000 (15:48 +0300)
committerIgor Sysoev <igor@sysoev.ru>
Tue, 18 Oct 2016 12:48:19 +0000 (15:48 +0300)
njs/njs_generator.c
njs/njs_parser.c
njs/njs_variable.h

index cee9c11e4c0d49dd956714fcb0298f598753570f..e0bf18b1fd249397fb6939bb630c8ec7afb61556 100644 (file)
@@ -333,14 +333,9 @@ njs_generator(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *node)
 static nxt_int_t
 njs_generate_name(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *node)
 {
-    njs_index_t               index;
-    njs_value_t               *value;
     njs_vmcode_object_copy_t  *copy;
 
-    index = node->u.variable->index;
-    value = njs_variable_value(parser, index);
-
-    if (value->type == NJS_FUNCTION) {
+    if (node->u.variable->function) {
 
         node->index = njs_generator_dest_index(vm, parser, node);
         if (nxt_slow_path(node->index == NJS_INDEX_ERROR)) {
@@ -352,7 +347,7 @@ njs_generate_name(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *node)
         copy->code.operands = NJS_VMCODE_2OPERANDS;
         copy->code.retval = NJS_VMCODE_RETVAL;
         copy->retval = node->index;
-        copy->object = index;
+        copy->object = node->u.variable->index;
 
         return NXT_OK;
     }
index d64a1f63a2dcf228dfc0f058a01d0de18d77bc7e..9dda40c648ed2b87312c49ce5b8f89c9f02d85cd 100644 (file)
@@ -315,6 +315,7 @@ njs_parser_function_declaration(njs_vm_t *vm, njs_parser_t *parser)
     }
 
     var->state = NJS_VARIABLE_DECLARED;
+    var->function = 1;
     node->index = var->index;
 
     token = njs_parser_token(parser);
index 342b63018351bafecabb8ab347b2ea7c3ceb76b7..7fdd30671409890382ccc2587b319873115fe273 100644 (file)
@@ -20,7 +20,8 @@ typedef enum {
 typedef struct {
     u_char                *name_start;
     uint16_t              name_len;
-    njs_variable_state_t  state:8;  /* 3 bits */
+    njs_variable_state_t  state:8;   /* 3 bits */
+    uint8_t               function;  /* 1 bit */
 
     njs_index_t           index;
 } njs_variable_t;