package importedcomplit

import (
	"golang.org/lsptests/foo"

	// import completions
	"fm" //@complete("\" //", fmtImport)
	"go/pars" //@complete("\" //", parserImport)
	"golang.org/lsptests/signa" //@complete("na\" //", signatureImport)
	"golang.org/lspte" //@complete("\" //", lsptestsImport)
	"crypto/elli" //@complete("\" //", cryptoImport)
	"golang.org/lsptests/sign" //@complete("\" //", signatureImport)
	"golang.org/lsptests/sign" //@complete("ests", lsptestsImport)
	namedParser "go/pars" //@complete("\" //", parserImport)
)

func _() {
	var V int //@item(icVVar, "V", "int", "var")
	_ = foo.StructFoo{V} //@complete("}", Value, icVVar)
}

func _() {
	var (
		aa string //@item(icAAVar, "aa", "string", "var")
		ab int    //@item(icABVar, "ab", "int", "var")
	)

	_ = foo.StructFoo{a} //@complete("}", abVar, aaVar)

	var s struct {
		AA string //@item(icFieldAA, "AA", "string", "field")
		AB int    //@item(icFieldAB, "AB", "int", "field")
	}

	_ = foo.StructFoo{s.} //@complete("}", icFieldAB, icFieldAA)
}

/* "fmt" */ //@item(fmtImport, "fmt", "\"fmt\"", "package")
/* "go/parser" */ //@item(parserImport, "parser", "\"go/parser\"", "package")
/* "golang.org/lsptests/signature" */ //@item(signatureImport, "signature", "\"golang.org/lsptests/signature\"", "package")
/* "golang.org/lsptests/" */ //@item(lsptestsImport, "lsptests/", "\"golang.org/lsptests/\"", "package")
/* "crypto/elliptic" */ //@item(cryptoImport, "elliptic", "\"crypto/elliptic\"", "package")
