This test checks that we don't suggest completion to an untyped conversion such
as "untyped float(abcdef)".

-- main.go --
package main

func main() {
	abcdef := 32 //@diag("abcdef", re"not used")
	x := 1.0 / abcd //@acceptcompletion(re"abcd()", "abcdef", int), diag("x", re"not used"), diag("abcd", re"(undefined|undeclared)")

	// Verify that we don't suggest converting compatible untyped constants.
	const untypedConst = 42
	y := 1.1 / untypedC //@acceptcompletion(re"untypedC()", "untypedConst", untyped), diag("y", re"not used"), diag("untypedC", re"(undefined|undeclared)")
}

-- @int/main.go --
package main

func main() {
	abcdef := 32 //@diag("abcdef", re"not used")
	x := 1.0 / float64(abcdef) //@acceptcompletion(re"abcd()", "abcdef", int), diag("x", re"not used"), diag("abcd", re"(undefined|undeclared)")

	// Verify that we don't suggest converting compatible untyped constants.
	const untypedConst = 42
	y := 1.1 / untypedC //@acceptcompletion(re"untypedC()", "untypedConst", untyped), diag("y", re"not used"), diag("untypedC", re"(undefined|undeclared)")
}

-- @untyped/main.go --
package main

func main() {
	abcdef := 32 //@diag("abcdef", re"not used")
	x := 1.0 / abcd //@acceptcompletion(re"abcd()", "abcdef", int), diag("x", re"not used"), diag("abcd", re"(undefined|undeclared)")

	// Verify that we don't suggest converting compatible untyped constants.
	const untypedConst = 42
	y := 1.1 / untypedConst //@acceptcompletion(re"untypedC()", "untypedConst", untyped), diag("y", re"not used"), diag("untypedC", re"(undefined|undeclared)")
}

