pub fn scan(file: FileId, src: &str, diags: &mut Diagnostics)Expand description
Check a source file before either surface reads it.
One place, both surfaces, because the S-expression reader is the same front end and a rule that
holds on one notation and not the other is not a rule
(adr/0012 makes the
same argument about a different bound).
Zero-width joiners are deliberately not here. U+200D is how an emoji sequence is spelled, a string is data, and with identifiers already restricted to ASCII there is no confusable identifier for an invisible character to help build. A rule with no attack behind it is a rule somebody will eventually be forced to work around.