Pavlo Chorney
Pavlo Chorney

Reputation: 1

Swift Gen @MainActor for Assets

I'm using SwiftGen inside my package SharedResources. With basic template Xcode shows me an error for this code

public enum Asset {
  public static let appDark = ColorAsset(name: "appDark")
  public static let appLightGray = ColorAsset(name: "appLightGray")
  public static let appRed = ColorAsset(name: "appRed")
}

Error: Static property 'appDark' is not concurrency-safe because non-'Sendable' type 'ColorAsset' may have shared mutable state So i need to add @MainActor modifier How can i do it inside my custom template

{% set enumName %}{{param.enumName|default:"Asset"}}{% endset %}
{% set arResourceGroupType %}{{param.arResourceGroupTypeName|default:"ARResourceGroupAsset"}}{% endset %}
{% set colorType %}{{param.colorTypeName|default:"ColorAsset"}}{% endset %}
{% set dataType %}{{param.dataTypeName|default:"DataAsset"}}{% endset %}
{% set imageType %}{{param.imageTypeName|default:"ImageAsset"}}{% endset %}
{% set symbolType %}{{param.symbolTypeName|default:"SymbolAsset"}}{% endset %}
{% set modifier %}{{"@MainActor"}}{% endset %}
{% set forceNamespaces %}{{param.forceProvidesNamespaces|default:"false"}}{% endset %}
{% set accessModifier %}{% if param.publicAccess %}public{% else %}internal{% endif %}{% endset %}
{% set hasARResourceGroup %}{% for catalog in catalogs %}{% call hasValuesBlock catalog.assets "arresourcegroup" %}{% endfor %}{% endset %}
{% set hasColor %}{% for catalog in catalogs %}{% call hasValuesBlock catalog.assets "color" %}{% endfor %}{% endset %}
{% set hasData %}{% for catalog in catalogs %}{% call hasValuesBlock catalog.assets "data" %}{% endfor %}{% endset %}
{% set hasImage %}{% for catalog in catalogs %}{% call hasValuesBlock catalog.assets "image" %}{% endfor %}{% endset %}
{% set hasSymbol %}{% for catalog in catalogs %}{% call hasValuesBlock catalog.assets "symbol" %}{% endfor %}{% endset %}

i've tried setting @MainActor just above the code it doesnt work

Upvotes: 0

Views: 15

Answers (0)

Related Questions