Skip to content

Commit

Permalink
fix: Generate a shadow ordinal field for Kotlin Enums (#360)
Browse files Browse the repository at this point in the history
  • Loading branch information
mrousavy authored Nov 20, 2024
1 parent b824b15 commit 7a32224
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 10 deletions.
8 changes: 6 additions & 2 deletions packages/nitrogen/src/syntax/kotlin/KotlinEnum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,11 @@ import com.facebook.proguard.annotations.DoNotStrip
@DoNotStrip
@Keep
enum class ${enumType.enumName} {
${indent(members.join(',\n'), ' ')}
${indent(members.join(',\n'), ' ')};
@DoNotStrip
@Keep
private val _ordinal = ordinal
}
`.trim()

Expand Down Expand Up @@ -58,7 +62,7 @@ namespace ${cxxNamespace} {
[[maybe_unused]]
${enumType.enumName} toCpp() const {
static const auto clazz = javaClassStatic();
static const auto fieldOrdinal = clazz->getField<int>("ordinal");
static const auto fieldOrdinal = clazz->getField<int>("_ordinal");
int ordinal = this->getFieldValue(fieldOrdinal);
return static_cast<${enumType.enumName}>(ordinal);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ namespace margelo::nitro::image {
[[maybe_unused]]
ImageFormat toCpp() const {
static const auto clazz = javaClassStatic();
static const auto fieldOrdinal = clazz->getField<int>("ordinal");
static const auto fieldOrdinal = clazz->getField<int>("_ordinal");
int ordinal = this->getFieldValue(fieldOrdinal);
return static_cast<ImageFormat>(ordinal);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ namespace margelo::nitro::image {
[[maybe_unused]]
OldEnum toCpp() const {
static const auto clazz = javaClassStatic();
static const auto fieldOrdinal = clazz->getField<int>("ordinal");
static const auto fieldOrdinal = clazz->getField<int>("_ordinal");
int ordinal = this->getFieldValue(fieldOrdinal);
return static_cast<OldEnum>(ordinal);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ namespace margelo::nitro::image {
[[maybe_unused]]
PixelFormat toCpp() const {
static const auto clazz = javaClassStatic();
static const auto fieldOrdinal = clazz->getField<int>("ordinal");
static const auto fieldOrdinal = clazz->getField<int>("_ordinal");
int ordinal = this->getFieldValue(fieldOrdinal);
return static_cast<PixelFormat>(ordinal);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ namespace margelo::nitro::image {
[[maybe_unused]]
Powertrain toCpp() const {
static const auto clazz = javaClassStatic();
static const auto fieldOrdinal = clazz->getField<int>("ordinal");
static const auto fieldOrdinal = clazz->getField<int>("_ordinal");
int ordinal = this->getFieldValue(fieldOrdinal);
return static_cast<Powertrain>(ordinal);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,9 @@ import com.facebook.proguard.annotations.DoNotStrip
@Keep
enum class ImageFormat {
JPG,
PNG
PNG;

@DoNotStrip
@Keep
private val _ordinal = ordinal
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,9 @@ import com.facebook.proguard.annotations.DoNotStrip
enum class OldEnum {
FIRST,
SECOND,
THIRD
THIRD;

@DoNotStrip
@Keep
private val _ordinal = ordinal
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,9 @@ import com.facebook.proguard.annotations.DoNotStrip
enum class PixelFormat {
RGB,
YUV_8BIT,
YUV_10BIT
YUV_10BIT;

@DoNotStrip
@Keep
private val _ordinal = ordinal
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,9 @@ import com.facebook.proguard.annotations.DoNotStrip
enum class Powertrain {
ELECTRIC,
GAS,
HYBRID
HYBRID;

@DoNotStrip
@Keep
private val _ordinal = ordinal
}

0 comments on commit 7a32224

Please sign in to comment.