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