================
@@ -0,0 +1,38 @@
+.. title:: clang-tidy - modernize-use-size-type
+
+modernize-use-size-type
+=======================
+
+Finds local variables declared as signed integer types that are
+initialized from an unsigned/``size_t`` source (e.g.
+``container.size()``) and only used in contexts expecting unsigned
+types, and suggests changing the type to ``size_t``.
+
+Storing a ``size_t`` value in a signed ``int`` can cause implicit
+narrowing conversions and sign-comparison warnings. Using ``size_t``
+directly avoids these issues.
+
+For example:
+
+.. code-block:: c++
+
+  std::vector<int> v;
+  int n = v.size();
+  v.resize(n);
+
+  // transforms to:
+
+  std::vector<int> v;
+  size_t n = v.size();
+  v.resize(n);
+
+The check only triggers when all of the following are true:
+
+- The variable is a local, non-static variable.
+- The variable has a signed integer type (e.g. ``int``).
+- The initializer is an unsigned integer expression.
+- Every use of the variable is in an unsigned-compatible context
+  (comparison, function argument expecting unsigned, array
+  subscript, or implicit cast to unsigned).
----------------
EugeneZelenko wrote:

```suggestion
- Every use of the variable is in an unsigned-compatible context (comparison,
  function argument expecting unsigned, array subscript, or implicit cast to
  unsigned).
```

https://github.com/llvm/llvm-project/pull/182023
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to