{"record":{"id":"4e50d0a4f947a727","repo":"oracle/graal","slug":"expected-phase-name-filter-pair-in","errorCode":null,"errorMessage":"expected phase_name=filter pair in: {}","messagePattern":"expected phase_name=filter pair in: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/phases/PhaseFilterKey.java","lineNumber":113,"sourceCode":"        }\n    }\n\n    /**\n     * Creates a phase filter based on a specification string. The string is a colon-separated list\n     * of phase names or {@code phase_name=filter} pairs. Phase names match any phase of which they\n     * are a substring. Filters follow {@link MethodFilter} syntax.\n     */\n    private static BasePhase.PhaseFilter parse(String specification, String phaselessGraphFilterToken) {\n        EconomicMap<Pattern, GraphFilter> filters = EconomicMap.create();\n        String[] parts = specification.trim().split(\":\");\n        GraphFilter phaselessGraphFilter = null;\n        for (String part : parts) {\n            String phaseName;\n            GraphFilter graphFilter;\n            if (part.contains(\"=\")) {\n                String[] pair = part.split(\"=\");\n                if (pair.length != 2) {\n                    throw new IllegalArgumentException(\"expected phase_name=filter pair in: \" + part);\n                }\n                phaseName = pair[0];\n                graphFilter = new GraphFilter(pair[1]);\n            } else {\n                phaseName = part;\n                graphFilter = new GraphFilter(null);\n            }\n            if (phaseName.equals(phaselessGraphFilterToken)) {\n                phaselessGraphFilter = graphFilter;\n            } else {\n                Pattern phasePattern = Pattern.compile(\".*\" + MethodFilter.createGlobString(phaseName) + \".*\");\n                filters.put(phasePattern, graphFilter);\n            }\n        }\n        return new BasePhase.PhaseFilter(filters, phaselessGraphFilter);\n    }\n}\n","sourceCodeStart":95,"sourceCodeEnd":131,"githubUrl":"https://github.com/oracle/graal/blob/a66e9ccd1d7bf2552883939aa0788dfd0e294aab/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/phases/PhaseFilterKey.java#L95-L131","documentation":"PhaseFilterKey.parse (PhaseFilterKey.java:113) splits the filter specification on ':' into phase-name/graph-filter pairs. When a part contains '=' but does not split into exactly two pieces, it throws this IllegalArgumentException. Example bad input: \"Phase=a=b\".","triggerScenarios":"A filter spec where one colon-separated part contains more than one '=', e.g., -Dgraal.PhaseFilter=\"Loop*=foo=bar\"; also triggered by a glob pattern that itself contains '='.","commonSituations":"Typos in the option string; forgetting the MethodFilter glob syntax and using '=' inside the graph filter portion.","solutions":["Correct the spec so each part has at most one '=': phaseName=filter pairs separated by ':'","Escape or remove '=' characters from the graph filter pattern","Re-read the option's javadoc/usage text, which shows the expected 'phase_name=filter' form"],"exampleFix":"# before\n-Dgraal.PhaseFilter=\"Escape*=*all=methods\"\n\n# after\n-Dgraal.PhaseFilter=\"Escape*=*allmethods\"","handlingStrategy":"validation","validationCode":"static void checkPhaseFilter(String spec) {\n    for (String part : spec.split(\":\")) {\n        int eq = part.indexOf('=');\n        if (eq >= 0 && part.indexOf('=', eq + 1) >= 0) throw new IllegalArgumentException(\"multiple '=' in: \" + part);\n    }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep exactly one '=' per colon-separated part","Avoid '=' characters inside glob filters"],"tags":["graal","options","parsing","phase-filter"],"backgroundTag":null,"analyzedSha":"a66e9ccd1d7bf2552883939aa0788dfd0e294aab","analyzedAt":"2026-08-14T13:58:47.161Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}