diff --git a/gcc/cobol/etests/.gitignore b/gcc/cobol/etests/.gitignore index 305b2f7b405f7dc8e076d070bacf356de4484a70..eaf70718543139a05c603bf6fcd8169d03e82188 100644 --- a/gcc/cobol/etests/.gitignore +++ b/gcc/cobol/etests/.gitignore @@ -3,3 +3,6 @@ under-test.txt *.s *.rpt *.o +*.json +*.html +*.nodes diff --git a/gcc/cobol/genapi.cc b/gcc/cobol/genapi.cc index d25008bf823837b60283e791e9dc1bf4c4a0ba26..4c8f4f96746b3eb26d1a02661eba194568a8705d 100644 --- a/gcc/cobol/genapi.cc +++ b/gcc/cobol/genapi.cc @@ -4344,6 +4344,34 @@ parser_display_internal(tree file_descriptor, ENDIF } } + else if( refer.field->type == FldLiteralA ) + { + char *buffer = NULL; + size_t buffer_size = 0; + + // Maximum size is twice capacity (for all UTF-8 characters) plus one byte + // for the terminating NUL character + size_t max_possible = 2*refer.field->data.capacity + 1; + + if( max_possible > buffer_size ) + { + buffer_size = max_possible; + buffer = (char *)xrealloc(buffer, max_possible); + } + internal_to_console(&buffer, + &buffer_size, + refer.field->data.initial, + refer.field->data.capacity ); + gg_write( file_descriptor, + gg_string_literal(buffer), + build_int_cst_type(SIZE_T, strlen(buffer))); + if( advance ) + { + gg_write( file_descriptor, + gg_string_literal("\n"), + integer_one_node); + } + } else if( refer.field->type == FldLiteralN ) { // The parser found the string of digits from the source code and converted