import Toybox.Lang; function a() as Number or Null { return 42; } function b() as Float or Null { return 24.0; } function odd(x as Boolean) as Numeric? { var v = x ? a() : b(); if (v != null) { return v * 24; } return null; }
ERROR: <device>: bug.mc:14: Attempting to perform operation 'mul' with invalid types 'Null' and '$.Toybox.Lang.Number'.
At the point of definition, v should be typed as Number or Float or Null - and regardless, it can't possibly be Null on line 14.
The error goes away if a() and b() both return the same type - even if the type is Number or Float or Null.