simplecpp icon indicating copy to clipboard operation
simplecpp copied to clipboard

avoid some implicit conversions

Open firewave opened this issue 3 years ago • 0 comments

This does not change any types. It just makes implicit conversions explicit.

Here's the warnings in question for reference:

/mnt/s/GitHub/simplecpp-fw/simplecpp.cpp:401:76: warning: implicit conversion loses integer precision: 'int' to 'const unsigned short' [-Wimplicit-int-conversion]
        const unsigned short bom = (static_cast<unsigned char>(istr.get()) << 8);
                             ~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
/mnt/s/GitHub/simplecpp-fw/simplecpp.cpp:541:55: warning: implicit conversion loses integer precision: 'long' to 'unsigned int' [-Wshorten-64-to-32]
                    lineDirective(location.fileIndex, std::atol(numtok->str().c_str()), &location);
                    ~~~~~~~~~~~~~                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/s/GitHub/simplecpp-fw/simplecpp.cpp:550:35: warning: implicit conversion loses integer precision: 'long' to 'unsigned int' [-Wshorten-64-to-32]
                                  std::atol(numtok->str().c_str()), &location);
                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/s/GitHub/simplecpp-fw/simplecpp.cpp:780:20: warning: implicit conversion loses integer precision: 'int' to 'const char' [-Wimplicit-int-conversion]
    const char c = std::tolower(tok->str()[0]);
               ~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/s/GitHub/simplecpp-fw/simplecpp.cpp:1266:25: warning: implicit conversion loses integer precision: 'unsigned long' to 'unsigned int' [-Wshorten-64-to-32]
    return files.size() - 1U;
    ~~~~~~ ~~~~~~~~~~~~~^~~~
/mnt/s/GitHub/simplecpp-fw/simplecpp.cpp:2101:35: warning: implicit conversion loses integer precision: 'int' to 'char' [-Wimplicit-int-conversion]
                    windowsPath = toupper(driveLetter);
                                ~ ^~~~~~~~~~~~~~~~~~~~
/mnt/s/GitHub/simplecpp-fw/simplecpp.cpp:2105:35: warning: implicit conversion loses integer precision: 'int' to 'char' [-Wimplicit-int-conversion]
                    windowsPath = toupper(driveLetter);
                                ~ ^~~~~~~~~~~~~~~~~~~~

And an example for the warnings with the assertions:

/mnt/s/GitHub/simplecpp-fw/test.cpp:1845:29: warning: implicit conversion loses integer precision: 'std::vector::size_type' (aka 'unsigned long') to 'const unsigned int' [-Wshorten-64-to-32]
    ASSERT_EQUALS(1U, files.size());
    ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~

firewave avatar Aug 29 '22 15:08 firewave