nicklockwood / SwiftFormat

A command-line tool and Xcode Extension for formatting Swift code
MIT License
7.9k stars 639 forks source link

`enumNamespaces` can cause build error #1256

Closed ras0q closed 2 years ago

ras0q commented 2 years ago

I generated API client code by OpenAPITools/openapi-generator-cl.

Before running swiftformat, source code is following.

// API.swift
open class TraqAPI {
...
}

// Configuration.swift
extension TraqAPI {
open class Configuration {

    @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.")
    public static var dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
}
}

After running this, open class is changed to open enum by enumNamespaces

// Configuration.swift
extension TraqAPI {
    open enum Configuration {
        @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.")
        public static var dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
    }
}

But this causes build error.

$ swift build
Building for debugging...
/path/to/Configuration.swift:13:5: error: only classes and overridable class members can be declared 'open'; use 'public'
    open enum Configuration {
    ^~~~
    public
nicklockwood commented 2 years ago

Fixed in 0.49.18