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); }
