Skip to content

Release v20.61.3

Choose a tag to compare

@github-actions github-actions released this 22 Jul 08:15
c0884cc

Fixed

  • A regex validation rule whose pattern already escapes a slash — Matches(@"^\d{2}\/\d{2}$") — generated a client validator that did not parse: the slash was escaped a second time, and the resulting \\/ let the slash terminate the regex literal early. Slash escaping is now escape-aware, so a pattern's own escapes pass through untouched and only a bare slash is escaped.
  • An exact-length rule — Length(4) — projected to the client as length(0, 0), since the extractor read a Length property that ExactLengthValidator does not have. It reads the validator's Min (which carries the exact length) instead, so length(4, 4) is generated.

Both were latent in the client validation projection introduced by #2363. The generation scenarios now hold the emitted proxy against the TypeScript compiler's own diagnostics rather than a best-effort transpilation — ts.transpile emits output even for code that does not parse, so the previous check could not fail — and a corpus scenario pins every projectable rule shape to its exact emission; it caught the exact-length defect on its first run. Both fixes verified to have teeth by reverting them and watching the specs fail. Full suite green: 3,987 passed, 0 failed.