Acknowledged

deprecation warnings should not be raised when there's no alternative

I know this issue has been raised before but with the new app I'm writing I'm trying to be a good citizen and to avoid all compiler warnings, so as the issue bothers me I'm raising it again. :)

It's simply impossible (I don't consider providing a command line parameter option to ignore warnings a valid option) to create a warning free app if you also want to support "older" devices

in particular in this specific app the warnings I'm seeing are:

WARNING: device name: soucefile: '$.Toybox.ActivityRecording.SPORT_TRAINING' is deprecated.

WARNING: device name: soucefile: '$.Toybox.Application.AppBase.getProperty' is deprecated.

WARNING: device name: sourcefile: '$.Toybox.Application.AppBase.setProperty' is deprecated.

Is it really not possible to make this warning context aware? Surely this should not be too hard? 

Eg if you are building for a fenix 3 you know that:

- you can not use the Toybox.Activity.Sport types as they are only available as of api 3.2.0 and that you HAVE to reside to ActivityRecording types

- you can not use Storage.getValue or Properties.getValue as they are only available as of api 2.4.0 and that you HAVE to reside to getProperty

 TL/DR make the deprecation warning context aware and only raise it when the preferred alternative is available to use

  • I can understand the desire to to clear all warnings without a blanket warning suppression compiler option. I'll pass it along to the tools team to see if they have any ideas.

  • I'm not saying this problem is system level connected, I'm saying that Garmin's recent behavior indicates they are leaving old devices behind (in a way that they hadn't before), and the fact that the newest system level only supports new-ish devices which had CIQ 4 is an example of that.

    I agree with this bug report (I upvoted it) but my argument is that I don't think Garmin cares that much about old devices.

  • This isn't system level connected.

    This is at build time you throw a warning or you don't. It's something that can be handled at the sdk side and more importantly there's no device side coding change required.

  • I agree 100% but I feel like Garmin is really trying to leave the old devices behind now (in a way they haven't before), as far as CIQ goes

    - System 7 (CIQ 5) is only for new devices (which previously had CIQ 4). Previous "system levels" encompassed both new devices (CIQ 4.*) and old devices (CIQ 3.*) simultaneously (which is why the system level scheme was invented in the first place)

    - Monetization only applies to fairly new devices (mostly System 7 with the exception of Fenix 6 Pro family, I think)