From bf0eacb506bc8125b0ab8d438913e54feba63391 Mon Sep 17 00:00:00 2001 From: David Czihak Date: Mon, 11 May 2026 17:45:21 +0200 Subject: Fix: Cache compiler errors Cache compiler errors instead of passing them directly to Nova. This removes the possibility for outdated old errors not going away. --- Zig.novaextension/Scripts/normalize-zig-issues.pl | 40 +++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'Zig.novaextension/Scripts/normalize-zig-issues.pl') diff --git a/Zig.novaextension/Scripts/normalize-zig-issues.pl b/Zig.novaextension/Scripts/normalize-zig-issues.pl index b6ff328..17620a0 100644 --- a/Zig.novaextension/Scripts/normalize-zig-issues.pl +++ b/Zig.novaextension/Scripts/normalize-zig-issues.pl @@ -4,6 +4,7 @@ $| = 1; my $base = $ENV{NOVA_ZIG_TASK_CWD} || $ENV{PWD} || ""; my %file_cache = (); +my @collected_issues = (); sub normalize_path { my ($path) = @_; @@ -83,6 +84,16 @@ while (my $line = ) { } $line = "$normalized:$line_number:$column: $severity: $message"; + + if ($severity eq "error" || $severity eq "warning" || $severity eq "note") { + push @collected_issues, { + file => $normalized, + line => int($line_number), + column => int($column), + severity => $severity, + message => $message, + }; + } } elsif ($line =~ m{^([^:\n]+\.zig):(\d+):(\d+):}) { my ($path, $line_number, $column) = ($1, $2, $3); my $normalized = normalize_path($path); @@ -91,3 +102,32 @@ while (my $line = ) { print $line, $newline; } + +END { + my $issue_file = $ENV{NOVA_ZIG_ISSUE_FILE} or return; + sub _json_str { + my ($s) = @_; + $s =~ s/\\/\\\\/g; + $s =~ s/"/\\"/g; + $s =~ s/\n/\\n/g; + $s =~ s/\r/\\r/g; + $s =~ s/\t/\\t/g; + return qq("$s"); + } + if (open my $fh, ">", $issue_file) { + print $fh "["; + my $first = 1; + for my $issue (@collected_issues) { + print $fh "," unless $first; + $first = 0; + printf $fh '{%s,%s,%s,%s,%s}', + '"file":' . _json_str($issue->{file}), + '"line":' . $issue->{line}, + '"column":' . $issue->{column}, + '"severity":' . _json_str($issue->{severity}), + '"message":' . _json_str($issue->{message}); + } + print $fh "]"; + close $fh; + } +} -- cgit v1.3