
This introduces a new diagnostic group to diagnose implicit casts from int to an enumeration type. In C, this is valid, but it is not compatible with C++. Additionally, this moves the "implicit conversion from enum type to different enum type" diagnostic from `-Wenum-conversion` to a new group `-Wimplicit-enum-enum-cast`, which is a more accurate home for it. `-Wimplicit-enum-enum-cast` is also under `-Wimplicit-int-enum-cast`, as it is the same incompatibility (the enumeration on the right-hand is promoted to `int`, so it's an int -> enum conversion). Fixes #37027
46 lines
2.4 KiB
C
46 lines
2.4 KiB
C
// RUN: diagtool show-enabled %s | FileCheck %s
|
|
//
|
|
// This shows warnings which are on by default.
|
|
// We just check a few to make sure it's doing something sensible.
|
|
//
|
|
// CHECK: ext_unterminated_char_or_string
|
|
// CHECK: warn_condition_is_assignment
|
|
// CHECK: warn_null_arg
|
|
|
|
|
|
// RUN: diagtool show-enabled -Wno-everything -Rno-everything %s | count 0
|
|
|
|
|
|
// RUN: diagtool show-enabled -Wno-everything -Wobjc-root-class %s | FileCheck -check-prefix CHECK-WARN %s
|
|
// RUN: diagtool show-enabled -Wno-everything -Werror=objc-root-class %s | FileCheck -check-prefix CHECK-ERROR %s
|
|
// RUN: diagtool show-enabled -Wno-everything -Wfatal-errors=objc-root-class %s | FileCheck -check-prefix CHECK-FATAL %s
|
|
//
|
|
// CHECK-WARN: W warn_objc_root_class_missing [-Wobjc-root-class]
|
|
// CHECK-ERROR: E warn_objc_root_class_missing [-Wobjc-root-class]
|
|
// CHECK-FATAL: F warn_objc_root_class_missing [-Wobjc-root-class]
|
|
|
|
// RUN: diagtool show-enabled --no-levels -Wno-everything -Wobjc-root-class %s | FileCheck -check-prefix CHECK-NO-LEVELS %s
|
|
//
|
|
// CHECK-NO-LEVELS-NOT: {{^W }}
|
|
// CHECK-NO-LEVELS-NOT: {{^E }}
|
|
// CHECK-NO-LEVELS-NOT: {{^F }}
|
|
// CHECK-NO-LEVELS: warn_objc_root_class_missing [-Wobjc-root-class]
|
|
|
|
// Test if EnumConversion is a subgroup of -Wconversion. Because no diagnostics
|
|
// are grouped directly under -Wenum-conversion, we check for
|
|
// -Wimplicit-enum-enum-cast instead (which is itself under -Wenum-conversion).
|
|
// RUN: diagtool show-enabled --no-levels -Wno-conversion -Wenum-conversion %s | FileCheck --check-prefix CHECK-ENUM-CONVERSION %s
|
|
// RUN: diagtool show-enabled --no-levels %s | FileCheck --check-prefix CHECK-ENUM-CONVERSION %s
|
|
// RUN: diagtool show-enabled --no-levels -Wno-conversion %s | FileCheck --check-prefix CHECK-NO-ENUM-CONVERSION %s
|
|
//
|
|
// CHECK-ENUM-CONVERSION: -Wimplicit-enum-enum-cast
|
|
// CHECK-NO-ENUM-CONVERSION-NOT: -Wimplicit-enum-enum-cast
|
|
|
|
// Test if -Wshift-op-parentheses is a subgroup of -Wparentheses
|
|
// RUN: diagtool show-enabled --no-levels -Wno-parentheses -Wshift-op-parentheses %s | FileCheck --check-prefix CHECK-SHIFT-OP-PARENTHESES %s
|
|
// RUN: diagtool show-enabled --no-levels %s | FileCheck --check-prefix CHECK-SHIFT-OP-PARENTHESES %s
|
|
// RUN: diagtool show-enabled --no-levels -Wno-parentheses %s | FileCheck --check-prefix CHECK-NO-SHIFT-OP-PARENTHESES %s
|
|
//
|
|
// CHECK-SHIFT-OP-PARENTHESES: -Wshift-op-parentheses
|
|
// CHECK-NO-SHIFT-OP-PARENTHESES-NOT: -Wshift-op-parentheses
|