This test exercises the "go_file_diagnostics" MCP tool.

Some diagnostics from the "printf" analyzer carry fixes, and those fixes have edits.
(Not all fixes have edits; some analyzers rely on gopls to compute them lazily.)

The printf analyzer only reports a fix in files using >= go1.24.

-- flags --
-mcp
-min_go_command=go1.24

-- settings.json --
{
    "mcpTools": {
        "go_file_diagnostics": true
    }
}

-- go.mod --
module example.com
go 1.24

-- a/main.go --
package main

func foo() {} //@loc(foo, "foo")

//@mcptool("go_file_diagnostics", `{"file":"$WORKDIR/a/main.go"}`, output=unused)
//@diag(foo, re"unused")
-- @unused --
2:5-2:8: [Information] function "foo" is unused
Fix:
--- $WORKDIR/a/main.go
+++ $WORKDIR/a/main.go
@@ -1,6 +1,6 @@
 package main
 
-func foo() {} //@loc(foo, "foo")
+
 
 //@mcptool("go_file_diagnostics", `{"file":"$WORKDIR/a/main.go"}`, output=unused)
 //@diag(foo, re"unused")


-- b/main.go --
package main

import "fmt"

// (diagnostic with fix)
var (
	msg string
	_ = fmt.Sprintf(msg) //@ diag("msg", re"non-constant format string")
)

// (diagnostic without fix)
var _ = fmt.Sprintf("%d", "hello") //@ diag("%d", re"%d .* wrong type string")

//@ mcptool("go_file_diagnostics", `{"file":"$WORKDIR/b/main.go"}`, output=diagnosePrintf)

-- @diagnosePrintf --
7:17-7:20: [Warning] non-constant format string in call to fmt.Sprintf
Fix:
--- $WORKDIR/b/main.go
+++ $WORKDIR/b/main.go
@@ -5,7 +5,7 @@
 // (diagnostic with fix)
 var (
 	msg string
-	_ = fmt.Sprintf(msg) //@ diag("msg", re"non-constant format string")
+	_ = fmt.Sprintf("%s", msg) //@ diag("msg", re"non-constant format string")
 )
 
 // (diagnostic without fix)


11:21-11:23: [Warning] fmt.Sprintf format %d has arg "hello" of wrong type string
