Skip to content

Commit

Permalink
Remove erroneous reference to the base Symbol when mapping Rust typ…
Browse files Browse the repository at this point in the history
…es (#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.
  • Loading branch information
david-perez authored Jul 7, 2022
1 parent db43d7a commit 1338063
Showing 1 changed file with 6 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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()
}
Expand Down

0 comments on commit 1338063

Please sign in to comment.