c2v icon indicating copy to clipboard operation
c2v copied to clipboard

can't translate compound struct and union

Open 1000copy opened this issue 1 year ago • 1 comments

On my Mac OS X 13.6, I have c language code which already compiled with compiler, like the piece:

// filename : main.c
typedef enum {asymbol,anumber}atom_type;
typedef struct sexpr_ sexpr;
typedef struct {
    atom_type type;
    union{
        char* a;
        double num;
    };
} atom;
typedef enum {slist,satom}sexpr_type;
typedef struct{
    int len;
    sexpr* a;
} list;
typedef struct sexpr_{
    sexpr_type type;
    union{
        list* list;
        atom* atom;
    };
}sexpr;
#include <stdio.h>
int main(){
    sexpr s = {.type = satom};
    printf("%d",s.type);

}

When I run cmd c2v main.c,A error occured:

error: inline comment is deprecated, please use line comment
   21 | fn main()  {
   22 |     s := Sexpr {
   23 |     /*FAILED TO FIND STRUCT "Sexpr"*/Sexpr_type.satom, }
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   24 |     
   25 |     C.printf(c'%d', s.type_)

What should I do next to solve the problem?

1000copy avatar Feb 03 '24 12:02 1000copy

There are 2 bugs here.

  1. V no longer supports inline comments, so c2v should stop generating them.

  2. c2v didn't keep track of the rename from sexpr_type to Sexpr_type, as it needs to do.

JalonSolov avatar Feb 03 '24 15:02 JalonSolov