On Mon, 29 Nov 2021 19:54:02 GMT, Joe Darcy <da...@openjdk.org> wrote:

>> Hi,
>> 
>> Please review this PR which is basically rewriting some redundant boolean 
>> expressions in the compiler.
>> 
>> TIA
>
> make/langtools/tools/compileproperties/CompileProperties.java line 187:
> 
>> 185:                 }
>> 186:                 if ( ok && contents != null ) {
>> 187:                     String tokens[] = (new 
>> String(contents)).split("\\s+");
> 
> So the intended composite predicate here is thought to be
> ok == true && contents != null
> which is equivalent to
> ok && contents != null.
> The semantics of the current code are equivalent to just
> contents != null
> right?

The semantics is definitely changed (considering the first branch was always 
true originally) but it may be the original implementation being incorrect,

> src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java line 
> 1316:
> 
>> 1314:                 public void visitReference(JCMemberReference tree) {
>> 1315:                     if (sRet.hasTag(VOID)) {
>> 1316:                         result = true;
> 
> Isn't the equivalent statement to
> result &= true
> just
> result
> ?

Agreeing with jddarcy:
`a & true === a`
so current code just keeps the value of `result` while the new one sets 
`result` to `true`.

-------------

PR: https://git.openjdk.java.net/jdk/pull/6599

Reply via email to