I have a view, and in this view I bind Axis
class values — lowerBound
which is a regular property and at
– computed one which comes from protocol HasPositionProtocol
associated with Axis
.
struct AxisPropertiesView<Axis>: View where Axis: StyledAxisProtocol, Axis: HasPositionProtocol, Axis: Observable { @Bindable var axis: Axis var body: some View { HStack { TextField("", text: $axis.shortName) .frame(width: 40) TextField("", value: $axis.lowerBound, format: .number) .frame(width: 45) //Problem is here: Slider(value: $axis.at, in: axis.bounds) ...
Unfortunately I got en error Failed to produce diagnostic for expression; ...
for whole View.
But if I remove Slider from View, error disappeared.
What could cause this strange behaviour?
Value of .at
comes from:
public extension HasPositionProtocol { ///Absolut position on Axis var at: Double { get { switch position { case .max: return bounds.upperBound case .min: return bounds.lowerBound case .number(let number): return number } } set { switch newValue { case bounds.lowerBound: position = .min case bounds.upperBound: position = .max default: position = .number(newValue) } } } }