You were right to spot this gap. The feature needed here is conversion overloading rather than assignment overloading.
Fixed in the next release: https://feedback.objo.dev/feature/438
Assignment itself remains a normal type/storage operation in ObjoBasic. What I've added is inbound Operator_Convert support on the target type:
Class Int128
Shared Function Operator_Convert(value As Integer) As Int128
Return New Int128(value)
End Function
Shared Function Operator_Convert(value As Double) As Int128
Return New Int128(value)
End Function
Shared Function Operator_Convert(value As String) As Int128
Return Int128.Parse(value)
End Function
End Class
Var a As Int128 = 55
Var b As Int128 = 55.0
Var c As Int128 = "55"
The compiler now sees the target type is Int128, sees the source expression type, and looks for a matching Shared Function Operator_Convert(value As SourceType) As Int128.
This works in target-typed contexts such as variable and constant initialisers, assignments, method/constructor arguments, function returns, property/index assignments, and explicit Int128(expr) conversion.
This first version is inbound only: it converts another type into your class. It does not add Xojo-style convert-this-object-out-to-any-return-type support, because ObjoBasic overloads by parameter types rather than return type. For converting an Int128 back to text, use ToString() or Operator_ToString.