chakra-core/ChakraCore

Warning switches

Open

#6,435 创建于 2020年4月22日

在 GitHub 查看
 (1 评论) (0 反应) (0 负责人)JavaScript (9,000 star) (1,374 fork)batch import
Codebase QualityDev ExperienceTaskhelp wanted

描述

While working on #6430 I've noticed that there are no includes for unicode/uchar.h, which was puzzling at first, but then I realized that-Wno-implicit-function-declaration set up in CMake inhibits complaints about that.

Implicit function declarations are dangerous, because they can hide mismatches between definition and use (which actually happened when ICU failed to build in time for the link). It is a warning (rather than an error) due to backwards compatibility with older C standards.

But there are even more:

  • -Wno-ignored-attributes
  • -Wno-deprecated-declarations
  • -Wno-parentheses-equality
  • -Wno-missing-braces
  • -Wno-reorder
  • -Wno-microsoft
  • -Wno-unused-value
  • -Wno-int-to-void-pointer-cast
  • -Wno-invalid-offsetof
  • -Wno-undefined-inline
  • -Wno-inconsistent-missing-override
  • -Wno-c++14-extensions
  • -Wno-macro-redefined
  • -Wno-pragmas
  • -Wno-invalid-token-paste
  • -Wno-format
  • -Wno-invalid-noreturn
  • -Wno-null-arithmetic
  • -Wno-tautological-constant-out-of-range-compare
  • -Wno-tautological-undefined-compare
  • -Wno-address-of-temporary
  • -Wno-null-conversion
  • -Wno-return-type
  • -Wno-switch
  • -Wno-implicit-function-declaration (both C and C++)
  • -Wno-int-to-pointer-cast
  • -Wno-tautological-constant-compare
  • -Wno-enum-compare-switch
  • -Wno-unknown-warning-option
        # notes..
        # -Wno-address-of-temporary  # vtinfo.h, VirtualTableInfo<T>::RegisterVirtualTable
        # -Wno-null-conversion # Check shmemory.cpp and cs.cpp here...
        # -Wno-return-type # switch unreachable code
        # -Wno-switch # switch values not handled
        # -W-enum-compare-switch # throws warning on enum1 == enum2 where both
        # enums represent same value but do not share the type. ie. we use both AsmJsType
        # and AsmJsRetType interchangably and filter things out by `default:` case.
        # -W-tautological-constant-compare throws warning for checks known at compile time.
        # Some of those checks are optimized out during compile / lto time, and others
        # are platform / compiler dependent.
        # -Wno-unknown-warning-option ... well, some of the new switches are not
        # recognized by older compilers and they fail. So, put this one and not fail

Does anybody remember what was motivation for adding those, aside from the ones that have a note below?

贡献者指南