
  PROCEDURE [INLINE] clp$make_deferred_value
    (    deferred_value: clt$expression_text;
         deferred_type: ^clt$type_specification;
     VAR work_area {input, output} : ^clt$work_area;
     VAR value: ^clt$data_value);

?? PUSH (LISTEXT := ON) ??

    clp$make_value (clc$deferred, work_area, value);
    IF value <> NIL THEN
      NEXT value^.deferred_value: [STRLENGTH (deferred_value)] IN work_area;
      IF value^.deferred_value <> NIL THEN
        value^.deferred_value^ := deferred_value;
        IF deferred_type = NIL THEN
          value^.deferred_type := NIL;
          RETURN;
        IFEND;
        NEXT value^.deferred_type: [[REP #SIZE (deferred_type^) OF cell]] IN
              work_area;
        IF value^.deferred_type <> NIL THEN
          value^.deferred_type^ := deferred_type^;
          RETURN;
        IFEND;
      IFEND;
      RESET work_area TO value;
      value := NIL;
    IFEND;

  PROCEND clp$make_deferred_value;

*copyc clt$data_value
*copyc clt$expression_text
*copyc clt$type_specification
*copyc clt$work_area
?? POP ??
*copyc clp$make_value
