I tested this on a v5.2.12 device and found:
ifTable:ifDescr Returns Conical Name (never NULL)
ifXTable:ifName Returns Conical Name (never NULL)
ifXTable:ifAlias Returns Alias (sometimes NULL)
This seems consistent with all other network equipment that I've used and also consistent with the intent in RFC 2863. It's unclear what the IETF originally wanted to see in ifDescr but stuffing the Conical Name in there seems appropriate. The ifXTable:ifName was definitely intended to receive the Conical Name (based on my reading.)
I then tested with v5.4.6:
ifTable:ifDescr Returns Description (almost always NULL)
ifXTable:ifName Returns Conical Name (never NULL)
ifXTable:ifAlias Returns Alias (sometimes NULL)
The problem that LM is finding is the SET DESCRIPTION syntax is very rarely used. It's not prominent in the GUI and it's CLI syntax that is generally never used. That creates a lot of Fortigate firewalls that have NULL for the ifDescr, which causes the normal snmp64_If- datasource to fail "sometimes."
I say "sometimes" because we have plenty of 5.4 firewalls where LM reads the interfaces perfectly fine.