// Copyright 2014 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 importer

import "code.google.com/p/go.tools/go/types"

const (
	magic   = "\n$$ exports $$\n"
	version = "v0"
)

// Tags. Must be < 0.
const (
	// Packages
	packageTag = -(iota + 1)

	// Objects
	constTag
	typeTag
	varTag
	funcTag

	// Types
	arrayTag
	sliceTag
	structTag
	pointerTag
	signatureTag
	interfaceTag
	mapTag
	chanTag
	namedTag

	// Values
	falseTag
	trueTag
	int64Tag
	floatTag
	fractionTag
	complexTag
	stringTag
)

var predeclared = []types.Type{
	// basic types
	types.Typ[types.Bool],
	types.Typ[types.Int],
	types.Typ[types.Int8],
	types.Typ[types.Int16],
	types.Typ[types.Int32],
	types.Typ[types.Int64],
	types.Typ[types.Uint],
	types.Typ[types.Uint8],
	types.Typ[types.Uint16],
	types.Typ[types.Uint32],
	types.Typ[types.Uint64],
	types.Typ[types.Uintptr],
	types.Typ[types.Float32],
	types.Typ[types.Float64],
	types.Typ[types.Complex64],
	types.Typ[types.Complex128],
	types.Typ[types.String],

	// untyped types
	types.Typ[types.UntypedBool],
	types.Typ[types.UntypedInt],
	types.Typ[types.UntypedRune],
	types.Typ[types.UntypedFloat],
	types.Typ[types.UntypedComplex],
	types.Typ[types.UntypedString],
	types.Typ[types.UntypedNil],

	// package unsafe
	types.Typ[types.UnsafePointer],

	// aliases
	types.UniverseByte,
	types.UniverseRune,

	types.Universe.Lookup("error").Type(),
}
