Unverified Commit 1338063c authored by david-perez's avatar david-perez Committed by GitHub
Browse files

Remove erroneous reference to the base `Symbol` when mapping Rust types (#1439)

`.addReference(this)` adds a reference to the `Symbol` on which
`.mapRustType` was called. This is correct only when `f` is a function
that _wraps_ its input `RustType`; for example, when `f` wraps it in a
`Box` or constructs a `Vec`. However, the code is incorrect for an
arbitrary `f`; for example, when `f` _swaps_ the type.
parent db43d7a2
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -101,11 +101,15 @@ fun Symbol.makeOptional(): Symbol {
    }
}

/** Map the RustType of a symbol with [f] */
/**
 * Map the [RustType] of a symbol with [f].
 *
 * WARNING: This function does not set any `SymbolReference`s on the returned symbol. You will have to add those
 * yourself if your logic relies on them.
 **/
fun Symbol.mapRustType(f: (RustType) -> RustType): Symbol {
    val newType = f(this.rustType())
    return Symbol.builder().rustType(newType)
        .addReference(this)
        .name(newType.name)
        .build()
}