¿Por qué una reference no resuelta al intentar acceder a valores constantes?

La aplicación define constantes en un object singleton de Kotlin:

@file:JvmName("APIConstants") package com.myapp.api object APIConstants { const val HTTP_RESPONSE_CODE_NOT_AUTHORIZED = 401 etc.... } 

Luego se usan en otra class:

 import com.myapp.api.APIConstants.HTTP_RESPONSE_CODE_NOT_AUTHORIZED etc ... class API { private fun returnBadResponse(response: Response<*>, callback: ApiAuthListener<*>) { if (response.code() == HTTP_RESPONSE_CODE_NOT_AUTHORIZED) { callback.onBadAuthToken() } else { callback.onFailure(response.message(), getServerError(response)) } } 

En esta class, Android Studio (3.0 beta) proporcionó una pista para agregar la import para la constante, y no da ninguna indicación de un problema (sin subrayados rojos, etc., y la reference constante en el método se muestra en text de cursiva morado que indica se ha resuelto) pero cuando construyo el proyecto, obtengo esto:

 Error: Unresolved reference: HTTP_RESPONSE_CODE_NOT_AUTHORIZED 

Intenté borrar el caching IDE, reiniciarlo y hacer una compilation limpia, lo que no cambia nada. He intentado eliminar la anotación @JvmName e incluso colocar los valores const en la raíz del file sin ningún object contenedor, pero ninguno permite una compilation.

¿Por qué la class no hace reference a la constante, especialmente cuando el IDE sugiere fuertemente que puede resolverla?

Y la solución es … ¡asegurarse de que todos los files fuente de Kotlin tengan una extensión de file .kt! En este caso, el file APIConstants se llamó "APIConstants" y no "APIConstants.kt", lo que parece indicar que el IDE pudo resolver las references basándose en el contenido del file, pero las herramientas de compilation no pudieron hacerlo. Confusamente, Android Studio mostró un icono de Kotlin K en el nombre de file a pesar de la falta de una extensión .kt.

  • Cómo acceder a una vista desde el layout especificado en headerLayout de NavigationView usando Kotlin en Android
  • Koltin MyClass.class.java Referencia no resuelta: java
  • Android (Kotlin): sobrescribe el nombre para la input del logging de llamadas
  • Referencia no resuelta a la function en Kotlin Android
  • Parse 2D Array en Kotlin
  • ¿Cómo hacer inferencia tipo Kotlin desde la reflexión KClass?
  • Error "reference no resuelta" en Android Kotlin
  • Kotlin build no puede get classs creadas por SquidDatabase