pub fn compile(opts: &Options, name: &str, fs: &dyn FileSystem) -> CompiledExpand description
Compiles one file as far as opts.emit asks for and renders the result.
name is the path as the user wrote it, which is the name every diagnostic about the file
uses. Every kind but the executable produces something today, and that one runs the same front
end and gives back nothing, so that a file with a mistake in it is reported the same way
whichever kind was asked for, rather than compiling silently until the part that is written
notices.
The checking is skipped when the parse reported an error. The two poisoning rules mean a diagnosed expression produces no further complaints, but a declaration the parser had to skip past leaves no declaration behind at all, and every later use of that name would be reported as undeclared. One mistake is worth one message.