[ruby-core:89083] [Ruby trunk Misc#15136] Fix -Wparentheses warnings

From: jaruga@...
Date: 2018-09-19 16:32:31 UTC
List: ruby-core #89083
Issue #15136 has been updated by jaruga (Jun Aruga).

File make.log added

> You say "I fixed the warnings". So why is this issue still open. 

Sorry it's mistake. Correctly I fixed the warnings on my git repository, and sent pull-request. And not merged in the main repository's trunk.

The patch is here.
https://github.com/ruby/ruby/pull/1958
or
https://github.com/ruby/ruby/pull/1958.patch

On the condition for the current trunk branch + below modification.

```
diff --git a/configure.ac b/configure.ac
index 14fe5279c7..6182a5d792 100644
--- a/configure.ac
+++ b/configure.ac
@@ -458,7 +458,7 @@ AS_IF([test "$GCC:${warnflags+set}:no" = yes::no], [
     AS_IF([test $icc_version -gt 0], [
        particular_werror_flags=no
     ])
-    for wflag in -Wno-unused-parameter -Wno-parentheses -Wno-long-long \
+    for wflag in -Wno-unused-parameter -Wno-long-long \
                  -diag-disable=175,188,2259 \
                 -Wno-missing-field-initializers \
                 -Wno-tautological-compare \
```


```
$ autoconf

$ ./configure

$ make >& make.log

$ grep -r Wparentheses make.log  | wc -l
18
```

I would attach the `make.log` now.

There 2 cases in the warnings.

1. Yes, as you said, that's about assignment.

```
mjit_worker.c:1097:9: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
     if (success = compile_c_to_o(c_file, o_file)) {
         ^~~~~~~
```

2. 2nd case is

```
signal.c:889:24: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
  sp_page <= fault_page && fault_page <= bp_page) {
  ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
```



----------------------------------------
Misc #15136: Fix -Wparentheses warnings
https://bugs.ruby-lang.org/issues/15136#change-74100

* Author: jaruga (Jun Aruga)
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
Currently the `-Wno-parentheses` was set.
I assumed if we could fix the warning, we could remove the `-Wno-parentheses`.

I fixed the warnings, because the warning is used as a default on Fedora Project build environment.
I sent pull-request. https://github.com/ruby/ruby/pull/1958

I would show you the explanation of `-Wparentheses`.

```
$ man gcc (or gcc --help --verbose)
...
       -Wparentheses
           Warn if parentheses are omitted in certain contexts, such as when there is an
           assignment in a context where a truth value is expected, or when operators are
           nested whose precedence people often get confused about.

           Also warn if a comparison like "x<=y<=z" appears; this is equivalent to "(x<=y ?
           1 : 0) <= z", which is a different interpretation from that of ordinary
           mathematical notation.

           Also warn for dangerous uses of the GNU extension to "?:" with omitted middle
           operand. When the condition in the "?": operator is a boolean expression, the
           omitted value is always 1.  Often programmers expect it to be a value computed
           inside the conditional expression instead.

           For C++ this also warns for some cases of unnecessary parentheses in
           declarations, which can indicate an attempt at a function call instead of a
           declaration:

                   {
                     // Declares a local variable called mymutex.
                     std::unique_lock<std::mutex> (mymutex);
                     // User meant std::unique_lock<std::mutex> lock (mymutex);
                   }

           This warning is enabled by -Wall.
...
```





---Files--------------------------------
make.log (96.1 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next