// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package gc

import (
	"cmd/compile/internal/types"
	"cmd/internal/src"
)

// numImport tracks how often a package with a given name is imported.
// It is used to provide a better error message (by using the package
// path to disambiguate) if a package that appears multiple times with
// the same name appears in an error message.
var numImport = make(map[string]int)

func idealType(typ *types.Type) *types.Type {
	switch typ {
	case types.Idealint, types.Idealrune, types.Idealfloat, types.Idealcomplex:
		// canonicalize ideal types
		typ = types.Types[TIDEAL]
	}
	return typ
}

func npos(pos src.XPos, n *Node) *Node {
	n.Pos = pos
	return n
}

func builtinCall(op Op) *Node {
	return nod(OCALL, mkname(builtinpkg.Lookup(goopnames[op])), nil)
}
