Right now, when testing the syntax of a filter, all we do is disable short circuit evaluation and parse it. While this could seem a sane approach, it has underlying bugs which cause some patterns to fail with actual parsing (i.e. short-circuit enabled), but be reported as correct by the syntax checker.
Syntax checking should probably use a different strategy and avoid fully parsing the code, with or without short-circuit enabled. T204654 is related.
Examples of this inconsistency: T214642, T214674, T218906.