incremental: fix crash when introducing syntax error

Clearing the analysis roots was very clever and all, but not actually
valid. We need to avoid *any* reference to the analysis errors if there
were any fatal files, and that includes sorting the errors!

Resolves: #22774
This commit is contained in:
mlugg
2025-02-05 21:58:32 +00:00
parent 3031d81387
commit b21becb2a6
3 changed files with 50 additions and 4 deletions

View File

@@ -0,0 +1,42 @@
#target=x86_64-linux-selfhosted
#target=x86_64-linux-cbe
#target=x86_64-windows-cbe
#target=wasm32-wasi-selfhosted
#update=initial version
#file=main.zig
pub fn main() !void {
@compileError("uh oh");
}
#expect_error=main.zig:2:5: error: uh oh
#update=add parse error
#file=main.zig
pub fn main() !void {
@compileError("uh oh");
#expect_error=main.zig:3:1: error: expected statement, found 'EOF'
#update=fix parse error
#file=main.zig
pub fn main() !void {
@compileError("uh oh");
}
#expect_error=main.zig:2:5: error: uh oh
#update=add parse error again
#file=main.zig
pub fn main() !void {
@compileError("uh oh");
#expect_error=main.zig:3:1: error: expected statement, found 'EOF'
#update=comment @compileError call
#file=main.zig
pub fn main() !void {
//@compileError("uh oh");
#expect_error=main.zig:3:1: error: expected statement, found 'EOF'
#update=fix parse error again
#file=main.zig
pub fn main() !void {
//@compileError("uh oh");
}
#expect_stdout=""