I think I have a change is fairly precise, and I think is correct. Here are the proposed changes based on the first test code at the top of this thread.
Brief description:
- in some places where we would have had TV.CAST() as TU + TU.constructor(TU)
- we now have a more direct path preferred of TU.constructor( TV )
In the following combinations tested:
Code: Select all
TU_ctor_from_TV Y Y Y Y
TU_ctor_from_string Y Y Y Y
TU_let_from_TV Y - - -
TU_let_from_string Y - - -
TU_ctor_from_TU Y - - Y
TU_let_from_TU Y - - Y
TV_cast_to_string Y Y - -
TV_cast_to_TU Y Y Y Y
CHANGES: A A A B
Code: Select all
A - byval_as_TU_from_TV
- call order before: TV_cast_to_TU + TU_ctor_from_TU
- call order after : TU_ctor_from_TV
B - changes in A above, plus
- equal_as_TU_from_TV, and
- function_equal_from_TV_to_TU
- call order before: TV_cast_to_TU + TU_ctor_from_TU + TU_let_from_TU
- call order after: TU_ctor_from_TV + TU_let_from_TU
- I can also do just the changes from A and not the changes of B.
- If we wanted to only change passing BYVAL UDT and not affect 'u = v' and 'function = v'