Branch: Tag:

1995-10-11

1995-10-11 13:00:52 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

committing

Rev: README:1.1
Rev: bin/create_testsuite:1.3
Rev: bin/hilfe.lpc:1.2
Rev: bin/rsif:1.2
Rev: bin/uhttpd.lpc:1.2
Rev: doc/simulated/open:1.1
Rev: lib/master.lpc:1.2
Rev: lib/simulate.lpc:1.4
Rev: lib/testsuite.lpc:1.3
Rev: src/BUGS:1.3
Rev: src/Makefile.in:1.6
Rev: src/Makefile.in.src:1.2
Rev: src/README:1.2
Rev: src/add_efun.c:1.2
Rev: src/add_efun.h:1.2
Rev: src/array.c:1.4
Rev: src/array.h:1.2
Rev: src/backend.c:1.3
Rev: src/backend.h:1.2
Rev: src/builtin_efuns.c:1.2
Rev: src/builtin_efuns.h:1.2
Rev: src/call_out.c:1.5
Rev: src/call_out.h:1.2
Rev: src/callback.c:1.2
Rev: src/callback.h:1.2
Rev: src/config.h:1.6
Rev: src/configure.in:1.9
Rev: src/debug.c:1.4
Rev: src/debug.h:1.4
Rev: src/docode.c:1.4
Rev: src/docode.h:1.2
Rev: src/dynamic_buffer.c:1.3
Rev: src/dynamic_buffer.h:1.2
Rev: src/efun.h:1.2
Rev: src/error.c:1.2
Rev: src/error.h:1.2
Rev: src/fd_control.c:1.2
Rev: src/fd_control.h:1.2
Rev: src/fsort.c:1.2
Rev: src/fsort.h:1.2
Rev: src/global.h:1.2
Rev: src/hashtable.c:1.2
Rev: src/hashtable.h:1.2
Rev: src/interpret.c:1.5
Rev: src/interpret.h:1.2
Rev: src/language.y:1.3
Rev: src/las.c:1.3
Rev: src/las.h:1.3
Rev: src/lex.c:1.3
Rev: src/lex.h:1.2
Rev: src/list.c:1.3
Rev: src/list.h:1.2
Rev: src/lpc_signal.c:1.1
Rev: src/lpc_signal.h:1.1
Rev: src/lpc_types.c:1.3
Rev: src/lpc_types.h:1.2
Rev: src/machine.h.in:1.3
Rev: src/macros.h:1.4
Rev: src/main.c:1.8
Rev: src/main.h:1.2
Rev: src/mapping.c:1.4
Rev: src/mapping.h:1.2
Rev: src/memory.c:1.3
Rev: src/memory.h:1.2
Rev: src/module.c:1.2
Rev: src/module.h:1.2
Rev: src/modules/files/Makefile.in:1.3
Rev: src/modules/files/Makefile.in.src:1.2
Rev: src/modules/files/configure.in:1.5
Rev: src/modules/files/datagram.c:1.2
Rev: src/modules/files/efuns.c:1.4
Rev: src/modules/files/file.c:1.5
Rev: src/modules/files/file.h:1.3
Rev: src/modules/files/file_machine.h.in:1.3
Rev: src/modules/files/socket.c:1.6
Rev: src/modules/math/Makefile.in:1.4
Rev: src/modules/math/Makefile.in.src:1.3
Rev: src/modules/math/math.c:1.2
Rev: src/modules/regexp/Makefile.in:1.3
Rev: src/modules/regexp/Makefile.in.src:1.2
Rev: src/modules/regexp/glue.c:1.2
Rev: src/modules/regexp/regexp.h:1.2
Rev: src/modules/sprintf/Makefile.in:1.3
Rev: src/modules/sprintf/Makefile.in.src:1.2
Rev: src/modules/sprintf/sprintf.c:1.2
Rev: src/object.c:1.3
Rev: src/object.h:1.2
Rev: src/opcodes.c:1.6
Rev: src/opcodes.h:1.2
Rev: src/operators.c:1.3
Rev: src/operators.h:1.2
Rev: src/otable.h:1.2
Rev: src/port.c:1.9
Rev: src/port.h:1.4
Rev: src/program.h:1.2
Rev: src/rusage.c:1.3
Rev: src/rusage.h:1.2
Rev: src/stralloc.c:1.3
Rev: src/stralloc.h:1.3
Rev: src/stuff.c:1.2
Rev: src/stuff.h:1.2
Rev: src/svalue.c:1.4
Rev: src/svalue.h:1.2
Rev: src/todo:1.2
Rev: src/types.h:1.6
Rev: src/ualarm.c:1.2

1: + /*\ + ||| This file a part of uLPC, and is copyright by Fredrik Hubinette + ||| uLPC is distributed as GPL (General Public License) + ||| See the files COPYING and DISCLAIMER for more information. + \*/   %pure_parser      /*
15:      %token F_INDEX F_INDIRECT   %token F_LTOSVAL F_LTOSVAL2 - %token F_WRITE_OPCODE F_PUSH_ARRAY + %token F_PUSH_ARRAY   %token F_RANGE F_COPY_VALUE      /*
269:    /* construct the function type */    push_finished_type(local_variables->current_type);    while($3--) push_type(T_ARRAY); +  +  if(local_variables->current_return_type) +  free_string(local_variables->current_return_type); +  local_variables->current_return_type=pop_type(); +  +  push_finished_type(local_variables->current_return_type); +     e=$6-1;    if(varargs)    {
333:    IDENTIFIER_LPC_FUNCTION | vargs,    &tmp);    } +  if(local_variables->current_return_type) +  { +  free_string(local_variables->current_return_type); +  local_variables->current_return_type=0; +  }    free_all_local_names();    free_string($4);    free_string($<string>8);
707:      return: F_RETURN    { +  if(!match_types(local_variables->current_return_type, +  void_type_string)) +  { +  yyerror("Must return a value for a non-void function."); +  }    $$=mknode(F_RETURN,mkintnode(0),0);    }    | F_RETURN comma_expr
1087:    struct locals *l;    l=ALLOC_STRUCT(locals);    l->current_type=0; +  l->current_return_type=0;    l->next=local_variables;    local_variables=l;    local_variables->current_number_of_locals=0;
1099:    l=local_variables->next;    if(local_variables->current_type)    free_string(local_variables->current_type); +  if(local_variables->current_return_type) +  free_string(local_variables->current_return_type);    free((char *)local_variables);       local_variables=l;    /* insert check if ( local->next == parent locals ) here */   }