{"record":{"id":"cefaff25cadb0247","repo":"JetBrains/intellij-community","slug":"slice-filter-parse-error-incorrect-expression","errorCode":"slice.filter.parse.error.incorrect.expression","errorMessage":"Incorrect expression: {0}","messagePattern":"Incorrect expression: (.+?)","errorType":"validation","errorClass":"SliceFilterParseException","httpStatus":null,"severity":"error","filePath":"java/java-impl/src/com/intellij/slicer/JavaSliceProvider.java","lineNumber":162,"sourceCode":"          break;\n        }\n      }\n    }\n    PsiClass psiClass = PsiUtil.resolveClassInClassTypeOnly(type);\n    if (psiClass != null && psiClass.isEnum()) {\n      PsiField enumConstant = psiClass.findFieldByName(filter, false);\n      if (enumConstant instanceof PsiEnumConstant) {\n        return new JavaValueFilter(DfTypes.referenceConstant(enumConstant, type));\n      } else {\n        throw new SliceFilterParseException(JavaBundle.message(\"slice.filter.parse.error.enum.constant.not.found\", filter));\n      }\n    }\n    PsiExpression constant;\n    try {\n      constant = JavaPsiFacade.getElementFactory(expression.getProject()).createExpressionFromText(filter, expression);\n    }\n    catch (IncorrectOperationException ignore) {\n      throw new SliceFilterParseException(JavaBundle.message(\"slice.filter.parse.error.incorrect.expression\", filter));\n    }\n    PsiType constantType = constant.getType();\n    if (constantType == null || !type.isAssignableFrom(constantType)) {\n      throw new SliceFilterParseException(JavaBundle.message(\"slice.filter.parse.error.incorrect.constant.type\", type.getPresentableText()));\n    }\n    Object o = ExpressionUtils.computeConstantExpression(constant);\n    if (o == null) {\n      throw new SliceFilterParseException(JavaBundle.message(\"slice.filter.parse.error.expression.must.evaluate.to.constant\", filter));\n    }\n    if (relationType != RelationType.EQ) {\n      if (!(o instanceof Number)) {\n        throw new SliceFilterParseException(JavaBundle.message(\"slice.filter.parse.error.incorrect.constant.expected.number\", filter));\n      }\n      if (PsiTypes.longType().equals(type)) {\n        LongRangeSet rangeSet = LongRangeSet.point(((Number)o).longValue()).fromRelation(relationType);\n        return new JavaValueFilter(DfTypes.longRange(rangeSet));\n      }\n      LongRangeSet rangeSet = LongRangeSet.point(((Number)o).intValue()).fromRelation(relationType);","sourceCodeStart":144,"sourceCodeEnd":180,"githubUrl":"https://github.com/JetBrains/intellij-community/blob/be881553f2a76ac8b4ea53950d93f0de78295c19/java/java-impl/src/com/intellij/slicer/JavaSliceProvider.java#L144-L180","documentation":"Thrown by JavaSliceProvider.parseFilter when the filter text cannot be parsed into a Java expression. After the 'null'/enum branches fail to match, the parser calls JavaPsiFacade.getElementFactory().createExpressionFromText(filter, expression); if that raises IncorrectOperationException (the text is not syntactically valid Java), it is wrapped in SliceFilterParseException.","triggerScenarios":"Entering a slice filter containing a Java syntax error — unbalanced parentheses, a stray operator, a keyword like 'new' without a body, or a plain word that is neither an enum constant nor a valid expression.","commonSituations":"Users pasting arbitrary text into the filter field; using string literals without proper quoting; expecting SQL-like or glob syntax where a Java expression is required; partial typing while the field is validated live.","solutions":["Correct the filter so it is a syntactically valid Java expression (literal, constant reference, or simple expression).","For string comparison use a quoted literal, e.g. \"\\\"foo\\\"\" in the filter field.","Verify balanced parentheses/quotes and remove stray characters.","Remember the expression is parsed in the context of the sliced element, so only context-free constant expressions make sense."],"exampleFix":"// before:\nfilter = \"foo'\"\n\n// after:\nfilter = \"\\\"foo\\\"\"","handlingStrategy":"try-catch","validationCode":"try {\n  JavaPsiFacade.getElementFactory(project).createExpressionFromText(filter, context);\n} catch (IncorrectOperationException e) {\n  // filter is not a valid Java expression — reject before slicing\n}","typeGuard":null,"tryCatchPattern":"try { provider.parseFilter(expression, filter); } catch (SliceFilterParseException e) { /* invalid Java expression: report and retry */ }","preventionTips":["Validate filter text as a Java expression before applying.","Provide completion/templates for the supported filter forms (null, !null, constant, relational+constant, enum constant)."],"tags":["java","intellij","dataflow","slice","syntax","user-input"],"backgroundTag":null,"analyzedSha":"be881553f2a76ac8b4ea53950d93f0de78295c19","analyzedAt":"2026-08-14T14:13:06.425Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}