SDK: 6.2.1 (existed since 4.1.7 at least)
Recreation procedure:
1) modify Selectable sample as follows:
- open button_layout.xml
- on the first button, change x="40" to x="40%" (this should be valid button xml - certainly the resource compiler won't complain)
2) build the project
The compiler will print an error message similar to the following
ERROR: fr935: C:\Users\***\AppData\Roaming\Garmin\ConnectIQ\Sdks\connectiq-sdk-win-6.2.1-2023-06-26-124cb49c5\samples\Selectable copy\bin\gen\006-B2691-00\source\Rez.mcgen:28,12: Invalid '$.Toybox.Lang.Dictionary{:stateHighlighted as $.Toybox.WatchUi.Bitmap, :background as Enum<$.Toybox.Graphics.ColorValue>, :height as $.Toybox.Lang.Number, :customParam as $.Toybox.Lang.String, :behavior as $.Toybox.Lang.Symbol, :locX as $.Toybox.Lang.Float, :locY as $.Toybox.Lang.Number, :identifier as $.Toybox.Lang.String, :stateDisabled as Enum<$.Toybox.Graphics.ColorValue>, :stateSelected as $.Toybox.WatchUi.Bitmap, :width as $.Toybox.Lang.Number, :stateDefault as $.Toybox.WatchUi.Bitmap}' passed as parameter 1 of type '$.Toybox.Lang.Dictionary{:background as $.Toybox.Graphics.ColorType or $.Toybox.WatchUi.Drawable, :height as $.Toybox.Lang.Number, :behavior as $.Toybox.Lang.Symbol, :visible as $.Toybox.Lang.Boolean, :stateHighlighted as $.Toybox.Graphics.ColorType or $.Toybox.WatchUi.Drawable, :customParam as $.Toybox.Lang.String, :locX as $.Toybox.Lang.Number, :locY as $.Toybox.Lang.Number, :stateDisabled as $.Toybox.Graphics.ColorType or $.Toybox.WatchUi.Drawable, :identifier as $.Toybox.Lang.Object, :width as $.Toybox.Lang.Number, :stateSelected as $.Toybox.Graphics.ColorType or $.Toybox.WatchUi.Drawable, :stateDefault as $.Toybox.Graphics.ColorType or $.Toybox.WatchUi.Drawable}'.
Note that the error message refers to *generated code*, not any of the source files that are normally visible/editable to the developer.
What seems to be happening is that relative "%" values for x/y/width/height are internally represented as Floats (e.g. "40%" = 0.4), to distinguish them from absolute values (e.g. "40" = 40), but the type signature for the drawable constructor insists that those fields can only be Numbers.
See also:
https://forums.garmin.com/developer/connect-iq/f/discussion/323251/unclear-error-on-new-sdk