OpenAPITools / openapi-generator

OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
https://openapi-generator.tech
Apache License 2.0
21.35k stars 6.46k forks source link

[BUG][csharp-netcore] When model object has Oneof property as array of string then generated code doesn't build because of syntax error #9747

Open prajon84 opened 3 years ago

prajon84 commented 3 years ago

Bug Report Checklist

Description

When a Model object has oneOf properties. And, out of those oneOf, one of them is an array of string, then the generated client code has syntax error.

openapi-generator version

master @ https://github.com/OpenAPITools/openapi-generator/commit/e600f7d149df999c7a549ba0b467658f87e0acec

OpenAPI declaration file content or url
openapi: 3.0.3
info:
  title: C# Object with oneof array of string
  version: v1
paths:
  '/hello':
    get:
      responses:
        '200':
          description: returns compared object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Compare'

components:
  schemas:
    Compare:
      description: Comparison information
      oneOf:
        - type: number
        - type: array
          items:
            type: string
Generation Details

See steps below.

Steps to reproduce
>openapi-generator generate -g csharp-netcore -i openapi.yaml --library httpclient -o out/csharp_oneof_array_string_issue --model-package Model --api-package Api

>cd out/csharp_oneof_array_string_issue
>dotnet build --configuration Release

produces:

C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,37): error CS1001: Identifier expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,37): error CS1003: Syntax error, '>' expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,37): error CS1003: Syntax error, '(' expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,43): error CS1001: Identifier expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,43): error CS1003: Syntax error, ',' expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,44): error CS1003: Syntax error, ',' expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,45): error CS8124: Tuple must contain at least two elements. [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,46): error CS1001: Identifier expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,46): error CS1026: ) expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]

Which if I open in VS: image

And, the generator template for this code is: https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/resources/csharp-netcore/modelOneOf.mustache#L61-L69

Related issues/PRs

None that I could find.

Suggest a fix

May be update the above openapi-generator template method for case of array of string i.e. List<string>

@wing328 @lucamazzanti @Blackclaws @shibayan @frankyjuang @mandrean @devhl-labs @jfeltesse-mdsol

prajon84 commented 2 years ago

Similar is the case with modelAnyOf -> https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/resources/csharp-netcore/modelAnyOf.mustache#L61-L70