Chooser property binding compilation caching doesn't take into account ContextIndex

I didn’t try to reproduce it on a clean project, but the mistake in the code is obvious. Possible STR:

  1. Create two ChooserTables Chooser1 and ChooserB.
  2. Create two Structs StructA and StructB. One of them should have at least one property.
  3. Add StructA to Parameters of Chooser1 and bind its property to a column.
  4. Add StructB and StructA (in the said order) to Parameters of Chooser2 and bind the same property.
  5. The outcome will vary depending on compilation order. Let’s say Chooser1 gets compiled first.
  6. Then `StructA.MyProperty` binding gets compiled with ContextIndex 0.
  7. When Chooser2 is compiled, the cached `StructA.MyProperty` with index 0 is found and used even though this binding (in Chooser2) has index 1.

In our copy of the engine, we just added `ContextIndex` to `FCompiledBindingCacheId` and added it to `operator==` and `GetTypeHash` if anyone else is interested. But please, consider including a proper fix in the upcoming updates.

1 Like

Apologies for the delay, the developer who owns chooser is on vacation and I would like to run this past him.

Dustin