1// Copyright 2009 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package typecheck 6 7import ( 8 "cmd/compile/internal/base" 9 "cmd/compile/internal/ir" 10 "cmd/compile/internal/types" 11 "cmd/internal/src" 12) 13 14// importfunc declares symbol s as an imported function with type t. 15func importfunc(s *types.Sym, t *types.Type) { 16 fn := ir.NewFunc(src.NoXPos, src.NoXPos, s, t) 17 importsym(fn.Nname) 18} 19 20// importvar declares symbol s as an imported variable with type t. 21func importvar(s *types.Sym, t *types.Type) { 22 n := ir.NewNameAt(src.NoXPos, s, t) 23 n.Class = ir.PEXTERN 24 importsym(n) 25} 26 27func importsym(name *ir.Name) { 28 sym := name.Sym() 29 if sym.Def != nil { 30 base.Fatalf("importsym of symbol that already exists: %v", sym.Def) 31 } 32 sym.Def = name 33} 34