================
@@ -3558,6 +3558,74 @@ struct FormatStyle {
   /// \version 9
   std::vector<std::string> NamespaceMacros;
 
+  /// Control over each component in a numeric literal.
+  enum NumericLiteralComponentStyle : int8_t {
+    /// Leave this component of the literal as is.
+    NLCS_Leave,
+    /// Format this component with upper case characters.
+    NLCS_Upper,
+    /// Format this component with lower case characters.
+    NLCS_Lower,
+  };
+
+  /// Separate control for each numeric literal component.
+  struct NumericLiteralCaseStyle {
+    /// Format floating point exponent separator letter case.
+    /// \code
+    ///   /* ExponentLetter = Leave */
+    ///   float a = 6.02e23 + 1.0E10;
+    ///   /* ExponentLetter = Upper */
+    ///   float a = 6.02E23 + 1.0E10;
+    ///   /* ExponentLetter = Lower */
+    ///   float a = 6.02e23 + 1.0e10;
+    /// \endcode
+    NumericLiteralComponentStyle ExponentLetter;
+    /// Format hexadecimal digit case.
+    /// \code
+    ///   /* HexDigit = Leave */
+    ///   a = 0xaBcDeF;
+    ///   /* HexDigit = Upper */
+    ///   a = 0xABCDEF;
+    ///   /* HexDigit = Lower */
+    ///   a = 0xabcdef;
+    /// \endcode
+    NumericLiteralComponentStyle HexDigit;
+    /// Format integer prefix case.
+    /// \code
+    ///    /* Prefix = Leave */
+    ///    a = 0XF0 | 0b1;
+    ///    /* Prefix = Upper */
+    ///    a = 0XF0 | 0B1;
+    ///    /* Prefix = Lower */
+    ///    a = 0xF0 | 0b1;
+    /// \endcode
+    NumericLiteralComponentStyle Prefix;
+    /// Format suffix case. This option excludes case-sensitive reserved
+    /// suffixes, such as ``min`` in C++.
+    /// \code
+    ///   /* Suffix = Leave */
+    ///   a = 1uLL;
+    ///   /* Suffix = Upper */
+    ///   a = 1ULL;
+    ///   /* Suffix = Lower */
+    ///   a = 1ull;
+    /// \endcode
+    NumericLiteralComponentStyle Suffix;
+
+    bool operator==(const NumericLiteralCaseStyle &R) const {
+      return ExponentLetter == R.ExponentLetter && HexDigit == R.HexDigit &&
+             Prefix == R.Prefix && Suffix == R.Suffix;
+    }
+
+    bool operator!=(const NumericLiteralCaseStyle &R) const {
+      return !(*this == R);
+    }
+  };
+
+  /// Capitalization style for numeric literal constants.
----------------
owenca wrote:

```suggestion
  /// Capitalization style for numeric literals.
```

https://github.com/llvm/llvm-project/pull/151590
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to