Skip to content

[BUG][C] support for enumerators #4293

Closed
@michelealbano

Description

@michelealbano

Bug Report Checklist

  • [ X ] Have you provided a full/minimal spec to reproduce the issue?
  • [ X ] Have you validated the input using an OpenAPI validator (example)?
  • [ X ] What's the version of OpenAPI Generator used?
  • [ X ] Have you search for related issues/PRs?
  • [ X ] What's the actual output vs expected output?
  • [Optional] Bounty to sponsor the fix (example)
Description

I tried to compile the code generated from the first declaration I report below, and the result was:

In file included from /mnt/hgfs/shared/clientC/api/DefaultAPI.h:8,
                 from /mnt/hgfs/shared/clientC/api/DefaultAPI.c:4:
/mnt/hgfs/shared/clientC/api/../model/service_registry_response_dto.h:15:34: error: redeclaration of enumerator ‘NOT_SECURE’
                 typedef enum  {  NOT_SECURE, CERTIFICATE, TOKEN } secure_e;
                                  ^~~~~~~~~~

In C the namespace of the enums is global, thus I tried the second OpenAPI declaration I report, where I don't repeat enums' names. The result was:

In file included from /mnt/hgfs/shared/clientC/api/DefaultAPI.h:8,
                 from /mnt/hgfs/shared/clientC/api/DefaultAPI.c:4:
/mnt/hgfs/shared/clientC/api/../model/service_registry_response_dto.h:15:67: error: conflicting types for ‘secure_e’
                 typedef enum  {  NOT_SECURE, CERTIFICATE, TOKEN } secure_e;
                                                                   ^~~~~~~~
openapi-generator version

commit 4543c21 (grafted, HEAD -> master, origin/master, origin/HEAD)
Author: sullis [email protected]
Date: Sat Oct 26 21:10:55 2019 -0700

OpenAPI declaration file content or url

Repeated enum names:
https://gist.github.com/michelealbano/77f9795d84206c57676cd93c22cf8308

Multiple enums:
https://gist.github.com/michelealbano/60d912e034d2ec2307226e7ccc50c409

Command line used for generation

java -jar openapi-generator/modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g c -i cproblem2.json -o clientC --additional-properties=swaggerDocketConfig=true

Steps to reproduce

java -jar openapi-generator/modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g c -i cproblems.json -o clientC --additional-properties=swaggerDocketConfig=true
cd clientC
mkdir build
cd build
cmake ..
make

Related issues/PRs

N/A

Suggest a fix

I suggest to decorate the enum names. See for example:
https://stackoverflow.com/questions/2161940/two-enums-have-some-elements-in-common-why-does-this-produce-an-error
In the case of my code, this:

                typedef enum  {  NOT_SECURE, CERTIFICATE, TOKEN } secure_e;

should become this:

                typedef enum  {  NOT_SECURE, CERTIFICATE, TOKEN } service_registry_response_dto_secure_e;

and this:

                typedef enum  {  NOT_SECURE, CERTIFICATE, TOKEN } service_registry_response_dto_secure_e;

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions