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

  • El service está creando una nueva instancia de mediaplayer
  • La mejor forma de manejar los retornos en el pnetworkingicado
  • Android ViewPager: cómo forzar la eliminación de todos los elementos?
  • ¿Kotlin tiene un recolector de basura? Si es así, ¿en qué algorithm está basado?
  • ¿Cómo tener un setter personalizado con verificación del parámetro de validez?
  • ¿Cómo puedo agregar TeaVM a mi proyecto libGDX existente?
  • ¿Cuál es el propósito de que la reference de class enlazada devuelva un tipo covariante?
  • Pasar y usar la function como argumento constructor en Kotlin
  • Broadcast Reciver en kotlin
  • Kapt3: el file java.io.File no se puede convertir a java.lang.String
  • Faltan classs en android studio 3.0 canary 4 ui preview