This is an automated email from the ASF dual-hosted git repository.

joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git

commit c0f1dfd806374fe408554dd90dc80880d2a62aca
Author: Josh Tynjala <[email protected]>
AuthorDate: Wed Sep 18 09:46:27 2024 -0700

    ConstantLogic: missing warnings for comparison with NaN
---
 .../compiler/internal/as/codegen/ConstantLogic.jbg | 128 +++++++++++++++++++++
 1 file changed, 128 insertions(+)

diff --git 
a/compiler/src/main/jburg/org/apache/royale/compiler/internal/as/codegen/ConstantLogic.jbg
 
b/compiler/src/main/jburg/org/apache/royale/compiler/internal/as/codegen/ConstantLogic.jbg
index 9089a1154..744f1e31a 100644
--- 
a/compiler/src/main/jburg/org/apache/royale/compiler/internal/as/codegen/ConstantLogic.jbg
+++ 
b/compiler/src/main/jburg/org/apache/royale/compiler/internal/as/codegen/ConstantLogic.jbg
@@ -103,6 +103,10 @@
     else if (r == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((r instanceof Double) && ((Double)r).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.equals(l, r);
  }
@@ -117,6 +121,10 @@
     else if (l == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((l instanceof Double) && ((Double)l).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.equals(l, r);
  }
@@ -132,6 +140,10 @@
     else if (r == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((r instanceof Double) && ((Double)r).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.equals(l, r);
  }
@@ -147,6 +159,10 @@
     else if (l == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((l instanceof Double) && ((Double)l).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.equals(l, r);
  }
@@ -154,6 +170,10 @@
  boolean_constant=
  Op_EqualID(constant_value l, constant_value r): 0
  {
+    if (((l instanceof Double) && ((Double)l).isNaN()) || ((r instanceof 
Double) && ((Double)r).isNaN()))
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
+    }
      return ECMASupport.equals(l, r);
  }
 
@@ -188,6 +208,10 @@
     else if (r == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((r instanceof Double) && ((Double)r).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.strictEquals(l, r);
  }
@@ -202,6 +226,10 @@
     else if (l == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((l instanceof Double) && ((Double)l).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.strictEquals(l, r);
  }
@@ -217,6 +245,10 @@
     else if (r == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((r instanceof Double) && ((Double)r).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.strictEquals(l, r);
  }
@@ -232,6 +264,10 @@
     else if (l == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((l instanceof Double) && ((Double)l).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.strictEquals(l, r);
  }
@@ -239,6 +275,10 @@
  boolean_constant=
  Op_StrictEqualID(constant_value l, constant_value r): 0
  {
+    if (((l instanceof Double) && ((Double)l).isNaN()) || ((r instanceof 
Double) && ((Double)r).isNaN()))
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
+    }
      return ECMASupport.strictEquals(l, r);
  }
 
@@ -270,6 +310,10 @@
     else if (r == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((r instanceof Double) && ((Double)r).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return !ECMASupport.equals(l, r);
  }
@@ -284,6 +328,10 @@
     else if (l == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((l instanceof Double) && ((Double)l).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return !ECMASupport.equals(l, r);
  }
@@ -299,6 +347,10 @@
     else if (r == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((r instanceof Double) && ((Double)r).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return !ECMASupport.equals(l, r);
  }
@@ -314,6 +366,10 @@
     else if (l == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((l instanceof Double) && ((Double)l).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return !ECMASupport.equals(l, r);
  }
@@ -321,6 +377,10 @@
  boolean_constant=
  Op_NotEqualID(constant_value l, constant_value r): 0
  {
+    if (((l instanceof Double) && ((Double)l).isNaN()) || ((r instanceof 
Double) && ((Double)r).isNaN()))
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
+    }
      return !ECMASupport.equals(l, r);
  }
 
@@ -354,6 +414,10 @@
     else if (r == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((r instanceof Double) && ((Double)r).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return !ECMASupport.strictEquals(l, r);
  }
@@ -368,6 +432,10 @@
     else if (l == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((l instanceof Double) && ((Double)l).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return !ECMASupport.strictEquals(l, r);
  }
@@ -383,6 +451,10 @@
     else if (r == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((r instanceof Double) && ((Double)r).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return !ECMASupport.strictEquals(l, r);
  }
@@ -398,6 +470,10 @@
     else if (l == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((l instanceof Double) && ((Double)l).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return !ECMASupport.strictEquals(l, r);
  }
@@ -405,6 +481,10 @@
  boolean_constant=
  Op_StrictNotEqualID(constant_value l, constant_value r): 0
  {
+    if (((l instanceof Double) && ((Double)l).isNaN()) || ((r instanceof 
Double) && ((Double)r).isNaN()))
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
+    }
       return !ECMASupport.strictEquals(l, r);
  }
 
@@ -425,6 +505,10 @@
     else if (r == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((r instanceof Double) && ((Double)r).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.lessThan(l, r);
  }
@@ -440,6 +524,10 @@
     else if (l == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((l instanceof Double) && ((Double)l).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.lessThan(l, r);
  }
@@ -447,6 +535,10 @@
  boolean_constant=
  Op_LessThanID(constant_value l, constant_value r): 0
  {
+    if (((l instanceof Double) && ((Double)l).isNaN()) || ((r instanceof 
Double) && ((Double)r).isNaN()))
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
+    }
       return ECMASupport.lessThan(l, r);
  }
 
@@ -467,6 +559,10 @@
     else if (r == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((r instanceof Double) && ((Double)r).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.lessThanEquals(l, r);
  }
@@ -482,6 +578,10 @@
     else if (l == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((l instanceof Double) && ((Double)l).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.lessThanEquals(l, r);
  }
@@ -489,6 +589,10 @@
  boolean_constant=
  Op_LessThanEqualsID(constant_value l, constant_value r): 0
  {
+    if (((l instanceof Double) && ((Double)l).isNaN()) || ((r instanceof 
Double) && ((Double)r).isNaN()))
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
+    }
       return ECMASupport.lessThanEquals(l, r);
  }
 
@@ -509,6 +613,10 @@
     else if (r == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((r instanceof Double) && ((Double)r).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.greaterThan(l, r);
  }
@@ -524,6 +632,10 @@
     else if (l == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((l instanceof Double) && ((Double)l).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.greaterThan(l, r);
  }
@@ -531,6 +643,10 @@
  boolean_constant=
  Op_GreaterThanID(constant_value l, constant_value r): 0
  {
+    if (((l instanceof Double) && ((Double)l).isNaN()) || ((r instanceof 
Double) && ((Double)r).isNaN()))
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
+    }
       return ECMASupport.greaterThan(l, r);
  }
 
@@ -551,6 +667,10 @@
     else if (r == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((r instanceof Double) && ((Double)r).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.greaterThanEquals(l, r);
  }
@@ -566,6 +686,10 @@
     else if (l == UNDEFINED_VALUE)
     {
         recordError(new IllogicalComparisonWithUndefinedProblem(__p));
+    }
+    else if ((l instanceof Double) && ((Double)l).isNaN())
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
     }
      return ECMASupport.greaterThanEquals(l, r);
  }
@@ -573,6 +697,10 @@
  boolean_constant=
  Op_GreaterThanEqualsID(constant_value l, constant_value r): 0
  {
+    if (((l instanceof Double) && ((Double)l).isNaN()) || ((r instanceof 
Double) && ((Double)r).isNaN()))
+    {
+        recordError(new IllogicalComparionWithNaNProblem(__p));
+    }
       return ECMASupport.greaterThanEquals(l, r);
  }
 

Reply via email to