From 533e2e1b465ae009797d8d1ce44a9777da831cca Mon Sep 17 00:00:00 2001 From: Ulya Trofimovich Date: Tue, 10 Nov 2015 22:17:36 +0000 Subject: [PATCH] Added [-Wswapped-range] description. --- .../warnings/swapped_range/wswapped_range.rst | 57 +++++++++++++++++++ src/manual/warnings/warnings.rst | 2 +- src/manual/warnings/wswapped_range.rst | 5 -- 3 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 src/manual/warnings/swapped_range/wswapped_range.rst delete mode 100644 src/manual/warnings/wswapped_range.rst diff --git a/src/manual/warnings/swapped_range/wswapped_range.rst b/src/manual/warnings/swapped_range/wswapped_range.rst new file mode 100644 index 00000000..2efefd62 --- /dev/null +++ b/src/manual/warnings/swapped_range/wswapped_range.rst @@ -0,0 +1,57 @@ +[-Wswapped-range] +-------------------------- + +.. include:: ../home.rst + +This warning is very simple. +It warns you in cases when character class contains a range which lower bound is greater than upper bound. +For some strange reason re2c never considered it an error: +it simply swaps range bounds and goes on. + +.. code-block:: cpp + :number-lines: + + /*!re2c + * { return "*"; } + [a-Z] { return "is it what you want?"; } + */ + +Given this code, ```re2c -i -Wswapped-range``` generates the following: + +.. code-block:: cpp + :number-lines: + + /* Generated by re2c 0.14.1.dev on Tue Nov 10 22:07:31 2015*/ + + { + YYCTYPE yych; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case 'Z': + case '[': + case '\\': + case ']': + case '^': + case '_': + case '`': + case 'a': goto yy4; + default: goto yy2; + } + yy2: + ++YYCURSOR; + { return "*"; } + yy4: + ++YYCURSOR; + { return "is it what you want?"; } + } + +And reports a warning: + +.. code-block:: + + re2c: warning: line 3: range lower bound (0x61) is greater than upper bound (0x5A), swapping [-Wswapped-range] + +Use ``[-Werror-swapped-range]`` to make it an error. + + diff --git a/src/manual/warnings/warnings.rst b/src/manual/warnings/warnings.rst index e8886170..70a21cab 100644 --- a/src/manual/warnings/warnings.rst +++ b/src/manual/warnings/warnings.rst @@ -10,7 +10,7 @@ Warnings * `[-Wunreachable-rules] `_ * `[-Wcondition-order] `_ * `[-Wuseless-escape] `_ -* `[-Wswapped-range] `_ +* `[-Wswapped-range] `_ * `[-Wempty-character-class] `_ * `[-Wmatch-empty-string] `_ diff --git a/src/manual/warnings/wswapped_range.rst b/src/manual/warnings/wswapped_range.rst deleted file mode 100644 index 6158501c..00000000 --- a/src/manual/warnings/wswapped_range.rst +++ /dev/null @@ -1,5 +0,0 @@ -[-Wswapped-range] --------------------------- - -.. include:: home.rst - -- 2.40.0