{"record":{"id":"5bbdc56d6560acd7","repo":"apache/maven","slug":"cannot-compare-left-and-right-with-operator-o","errorCode":null,"errorMessage":"Cannot compare {left} and {right} with operator {operator}","messagePattern":"Cannot compare (.+?) and (.+?) with operator (.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"impl/maven-impl/src/main/java/org/apache/maven/impl/model/profile/ConditionParser.java","lineNumber":550,"sourceCode":"                case \">=\" -> leftVal >= rightVal;\n                case \"<=\" -> leftVal <= rightVal;\n                case \"==\" -> Math.abs(leftVal - rightVal) < 1e-9;\n                case \"!=\" -> Math.abs(leftVal - rightVal) >= 1e-9;\n                default -> throw new IllegalStateException(\"Unknown operator: \" + operator);\n            };\n        } else if (left instanceof String leftString && right instanceof String rightString) {\n            int comparison = leftString.compareTo(rightString);\n            return switch (operator) {\n                case \">\" -> comparison > 0;\n                case \"<\" -> comparison < 0;\n                case \">=\" -> comparison >= 0;\n                case \"<=\" -> comparison <= 0;\n                case \"==\" -> comparison == 0;\n                case \"!=\" -> comparison != 0;\n                default -> throw new IllegalStateException(\"Unknown operator: \" + operator);\n            };\n        }\n        throw new RuntimeException(\"Cannot compare \" + left + \" and \" + right + \" with operator \" + operator);\n    }\n\n    /**\n     * Converts an object to a string representation.\n     * If the object is a {@code Double}, it formats it without any decimal places.\n     * Otherwise, it uses the {@code String.valueOf} method.\n     *\n     * @param value the object to convert to a string\n     * @return the string representation of the object\n     */\n    public static String toString(Object value) {\n        if (value instanceof Double || value instanceof Float) {\n            double doubleValue = ((Number) value).doubleValue();\n            if (doubleValue == Math.floor(doubleValue) && !Double.isInfinite(doubleValue)) {\n                return String.format(\"%.0f\", doubleValue);\n            }\n        }\n        return String.valueOf(value);","sourceCodeStart":532,"sourceCodeEnd":568,"githubUrl":"https://github.com/apache/maven/blob/e4093d4e120eac99d6bdce5ba67cace2f3085c97/impl/maven-impl/src/main/java/org/apache/maven/impl/model/profile/ConditionParser.java#L532-L568","documentation":"Error \"Cannot compare {left} and {right} with operator {operator}\" thrown in apache/maven.","triggerScenarios":"Thrown at impl/maven-impl/src/main/java/org/apache/maven/impl/model/profile/ConditionParser.java:550 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e4093d4e120eac99d6bdce5ba67cace2f3085c97","analyzedAt":"2026-08-21T22:58:24.034Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}