electrode-native icon indicating copy to clipboard operation
electrode-native copied to clipboard

`ern regen-api` generates incorrect Swift code for `enum` fields

Open romanlv opened this issue 5 years ago • 2 comments

in schema.json offerType is defined as enum

    "definitions": {
      "Offer": {
        "type": "object",
        "required": [
          "id",
          "sellerName",
          "sellerId",
          "offerType",
          "currentPrice"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "sellerName": {
            "type": "string"
          },
          "sellerId": {
            "type": "integer",
            "format": "int64"
          },
          "offerType": {
            "type": "string",
            "enum": ["1P", "3P"]
          },
          "currentPrice": {
            "type": "number",
            "format": "float"
          }
        }
      },

Running ern regen-api creates Offer.swift with code

@objcMembers public class Offer: ElectrodeObject, Bridgeable {

    private static let tag = String(describing: type(of: self))

    public let id: Int64
    public let sellerName: String
    public let sellerId: Int64
    public let currentPrice: Float

    public init(id: Int64, sellerName: String, sellerId: Int64, offerType: OfferType, currentPrice: Float) {
        self.id = id
        self.sellerName = sellerName
        self.sellerId = sellerId
        self.offerType = offerType
        self.currentPrice = currentPrice
        super.init()
    }
....

Notice that offerType is missing in class fields definitions and OfferType is not defined anywhere

attempting to compile this code produces


Showing All Messages
/ElectrodeContainer/APIs/Offer.swift:11:76: Use of undeclared type 'OfferType'

/ElectrodeContainer/APIs/Offer.swift:25:9: Value of type 'Offer' has no member 'offerType'


romanlv avatar Aug 28 '19 03:08 romanlv

Android Java class definitions seem to be valid, but enum is not created, and it's simply String field that can accept any value

romanlv avatar Aug 28 '19 03:08 romanlv

@romanlv We currently do not support enums. Will add this as a future enhancement.

deepueg avatar Aug 29 '19 21:08 deepueg