Kotlin: use expressions in Constants.kt that resolve at compile-time
Bug: 440262026
Test: ./gradlew connectedAndroidTest
Change-Id: I41f4f30625421179794b33bfddfd5eb66a0f01dd
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/258474
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Jim Blackler <jimblackler@google.com>
diff --git a/generator/templates/art/api_kotlin_constants.kt b/generator/templates/art/api_kotlin_constants.kt
index 778f84a..f562688 100644
--- a/generator/templates/art/api_kotlin_constants.kt
+++ b/generator/templates/art/api_kotlin_constants.kt
@@ -27,16 +27,13 @@
{% from 'art/api_kotlin_types.kt' import kotlin_declaration with context %}
package {{ kotlin_package }}
-import kotlin.jvm.JvmField
-
public object Constants {
- private val UINT32_MAX = Integer.parseUnsignedInt("4294967295")
- private val UINT64_MAX = java.lang.Long.parseUnsignedLong("18446744073709551615")
- private val SIZE_MAX = UINT64_MAX
+ private const val UINT32_MAX: Int = -1 // -1 to max int is resolved at compile time
+ private const val UINT64_MAX: Long = -1L // -1L to max long is resolved at compile time
+ private const val SIZE_MAX = UINT64_MAX
{% for constant in by_category['constant'] %}
- @JvmField
- public val {{ as_ktName(constant.name.SNAKE_CASE() ) }}:{{ ' ' }}
+ public const val {{ as_ktName(constant.name.SNAKE_CASE() ) }}:{{ ' ' }}
{{- kotlin_declaration(constant) }} =
{%- if constant.value == 'NAN' %}
{% if constant.type.name.get() == 'float' -%} {{ ' ' }}Float.NaN