SA0024: Untyped literals

Function

Determines untyped literals that are part of an operation.

Reason

Untyped literals are automatically typed depending on their use. In some cases, such as nDWORD := ROL(DWORD#1, i);, this can lead to unexpected situations where it is better to achieve clear clarification by using a typed literal.

Importance

Low

Sample:

PROGRAM MAIN
VAR
    nINT    : INT := 10;         // no error as no part of operation
    nDINT   : DINT;
    nLINT   : LINT;
    fREAL   : REAL;
    fLREAL  : LREAL;
END_VAR
nINT   := nINT + 34;             // => SA0024
nINT   := nINT + INT#34;         // no error
 
nDINT  := nDINT + 23;            // => SA0024
nDINT  := nDINT + DINT#23;       // no error
 
nLINT  := nLINT + 124;           // => SA0024
fREAL  := fREAL + 1.1;           // => SA0024
fLREAL := fLREAL + 3.4;          // => SA0024