Advertencia de lanzamiento sutil cuando se utiliza SQLite.Swift ... ¿Enlace? a cualquier

Aquí hay uno,

 import SQLite

    var r:[[Any]] = []

    do {
        if let stmt = try local.db?.prepare(q) {
            r = Array(stmt)
        }
        else {
            print("woe in sql?")
        }
    }
    catch { return [] }

la llamada

 r = Array(stmt)

daExpresión implícitamente coaccionada de 'Binding?' a cualquier.

Y, de hecho, no sé cómo proporcionar un valor predeterminado para evitar esta advertencia, forzar el desenvolvimiento del valor para evitar esta advertencia, o incluso emitir explícitamente a Any con 'as Any' para silenciar esta advertencia. : O

Aquí hay un ejemplo autónomo que reproduce la misma advertencia:

struct Binding {}

struct Statement : IteratorProtocol, Sequence {
    func next() -> [Binding?]? {
        return nil
    }
}

let stmt = Statement()

let r: [[Any]]

r = Array(stmt) // warning: Expression implicitly coerced from 'Binding?' to Any.

Pregunta interesante relacionada:

¿Por qué el compilador ...

... parece no saber el número de línea, con problemas como este? Y de hecho: ¿por qué la advertencia solo surge una vez que compila?

La mayoría de las advertencias aparecen allí mismo en el IDE mientras escribe, antes de la compilación.

Esta advertencia parecería(una) solo se conocerá durante la compilación y(si) el compilador no sabe el número de línea.

¿Cómo es eso? ¿Cual es la diferencia?

Respuestas a la pregunta(1)

Su respuesta a la pregunta