// Copyright 2010 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 typechecker import "go/ast" // TODO(gri) should this be in package ast? // The Universe scope contains all predeclared identifiers. var Universe *ast.Scope func def(obj *ast.Object) { alt := Universe.Insert(obj) if alt != nil { panic("object declared twice") } } func init() { Universe = ast.NewScope(nil) // basic types for n, name := range BasicTypes { typ := NewType(Basic) typ.N = n obj := ast.NewObj(ast.Typ, name) obj.Type = typ typ.Obj = obj def(obj) } // built-in functions // TODO(gri) implement this }