OpenAPITools / OpenAPITools/openapi-generator
[BUG][csharp-netcore] When model object has Oneof property as array of string then generated code doesn't build because of syntax error
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 26.8k
- Forks
- 7.7k
- PR merge metrics
- PR metrics pending
Description
Bug Report Checklist
- Have you provided a full/minimal spec to reproduce the issue?
- Have you validated the input using an OpenAPI validator (example)?
- Have you tested with the latest master to confirm the issue still exists?
- Have you searched for related issues/PRs?
- What's the actual output vs expected output?
- [Optional] Sponsorship to speed up the bug fix or feature request (example)
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:

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
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with modules/openapi-generator/src/main/resources/csharp-netcore/modelOneOf.mustache at lines 61-69, then generate the provided OpenAPI declaration with the csharp-netcore generator and httpclient library. Inspect the generated src/Org.OpenAPITools/Model/Compare.cs and run dotnet build; done means the generated client builds without the reported syntax errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, openapi
- Domain
- build-system, devtools
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 45/100