This test verifies that unimported completion respects the usePlaceholders setting.

-- flags --
-ignore_extra_diags
-min_go=go1.21

-- settings.json --
{
	"usePlaceholders": false
}

-- go.mod --
module mod.test

go 1.21

-- foo/foo.go --
package foo

func _() {
	// This uses goimports-based completion; TODO: this should insert snippets.
	os.Open //@acceptcompletion(re"Open()", "Open", open)
}

func _() {
	// This uses metadata-based completion.
	errors.New //@acceptcompletion(re"New()", "New", new)
}

-- bar/bar.go --
package bar

import _ "errors" // important: doesn't transitively import os.

-- @new/foo/foo.go --
package foo

import "errors"

func _() {
	// This uses goimports-based completion; TODO: this should insert snippets.
	os.Open //@acceptcompletion(re"Open()", "Open", open)
}

func _() {
	// This uses metadata-based completion.
	errors.New(${1:}) //@acceptcompletion(re"New()", "New", new)
}

-- @open/foo/foo.go --
package foo

import "os"

func _() {
	// This uses goimports-based completion; TODO: this should insert snippets.
	os.Open //@acceptcompletion(re"Open()", "Open", open)
}

func _() {
	// This uses metadata-based completion.
	errors.New //@acceptcompletion(re"New()", "New", new)
}

