UnsupportedOperationException al crear un proyecto de Kotlin en Idea

Cuando bash build mi proyecto Kotlin, aparece el siguiente error en Idea:

Error:Kotlin: [Internal Error] org.jetbrains.kotlin.util.KotlinFrontEndException: Exception while analyzing expression at (60,19) in E:/altruix-is/src/main/kotlin/com/mycompany/myproduct/capsulecrm/CapsuleCrmSubsystem.kt: client.execute(req) [...] Caused by: java.lang.UnsupportedOperationException: doSubstitute with no original should not be called for synthetic extension at org.jetbrains.kotlin.synthetic.SamAdapterFunctionsScope$MyFunctionDescriptor.doSubstitute(SamAdapterFunctionsScope.kt:165) at org.jetbrains.kotlin.descriptors.impl.FunctionDescriptorImpl$CopyConfiguration.build(FunctionDescriptorImpl.java:553) at org.jetbrains.kotlin.load.java.ErasedOverridabilityCondition.isOverridable(ErasedOverridabilityCondition.kt:47) 

El error parece ocurrir en llamadas

 res = client.execute(req) 

donde el client es Apache HttpClient.

Captura de pantalla

El file fuente, donde esto ocurre, se puede encontrar aquí .

Envié el informe de error a JetBrains, pero tengo que trabajar más en el proyecto y, por lo tanto, trabajar mucho. Tenga en count que hasta ayer todo funcionó bien. Ayer actualicé el plugin de Kotlin a la versión más reciente, tal vez ese sea el problema.

¿Cómo puedo evitar el error anterior?

Actualización 1 (03.03.2017 14:46 MSK):

Esto no funciona:

 open fun addNote(note: String, compId: Long): ValidationResult { val client = httpClient if (client == null) { return ValidationResult(false, "Internal error") } var res: CloseableHttpResponse? = null var req: HttpUriRequest? try { req = composeAddNoteRequest(note, compId) res = client.execute(req) if (res.statusLine.statusCode != 201) { logger.error("addNote(note='$note', compId=$compId): Wrong status code ${res.statusLine.statusCode}") return ValidationResult(false, "Wrong status code (CRM interaction)") } return ValidationResult(true, "") } catch (throwable: Throwable) { logger.error("addNote(note='$note', compId=$compId)", throwable) return ValidationResult(false, "Database error") } finally { close(res) } return ValidationResult(false, "Internal logic error") } 

Esto funciona (la diferencia está en la segunda línea desde la parte superior):

 open fun addNote(note: String, compId: Long): ValidationResult { val client = httpClient as CloseableHttpClient // Change if (client == null) { return ValidationResult(false, "Internal error") } var res: CloseableHttpResponse? = null var req: HttpUriRequest? try { req = composeAddNoteRequest(note, compId) res = client.execute(req) if (res.statusLine.statusCode != 201) { logger.error("addNote(note='$note', compId=$compId): Wrong status code ${res.statusLine.statusCode}") return ValidationResult(false, "Wrong status code (CRM interaction)") } return ValidationResult(true, "") } catch (throwable: Throwable) { logger.error("addNote(note='$note', compId=$compId)", throwable) return ValidationResult(false, "Database error") } finally { close(res) } return ValidationResult(false, "Internal logic error") } 

En su ejemplo anterior, client.execute(req) devuelve HttpResponse , que no es un subtipo de CloseableHttpResponse . Entonces, el error de error de tipo es correcto. O bien debería usar CloseableHttpClient aquí, o client.execute(req) a CloseableHttpResponse .

No pude reproducir KotlinFrontEndException de su ejemplo. Desde el seguimiento de stack proporcionado, puedo deducir que algo malo sucedió con los "adaptadores SAM", es decir, cuando usa un Kotlin lambda en una llamada al método Java que acepta una interfaz de método abstracto único (SAM). Por favor, presente un error aquí si el problema persiste: http://kotl.in/issue

  • Retrofit2 + SimpleXML en Kotlin: MethodException: la anotación debe marcar un set o método get
  • ¿Cómo pasar el tipo anulable a la function que toma un tipo no nulo?
  • Intellij IDEA no agrega dependencies maven a la ruta de classs de scripts de Kotlin
  • Kotlin no funciona en Android Studio
  • ¿Cómo reemploop los espacios en blanco duplicates en una cadena en Kotlin?
  • ¿Puedo aplicar la function infija dentro de la propia class sin `this`?
  • Kotlin flatMap - map
  • ¿Cómo probar el método del presentador en base a un valor devuelto por Observable?
  • ¿Qué tipo de dependencia tiene el pepino kotlin?
  • UnsupportedOperationException El command "android" ya no está incluido en el SDK
  • Poblando ListView desde array en Kotlin