func declareSymbol(b *builder, sym *sym8.Symbol) bool { // declare in the scope exists := b.scope.Declare(sym) if exists != nil { b.Errorf(sym.Pos, "%q already declared", sym.Name()) b.Errorf(exists.Pos, " previously declared here") return false } return true }
func (lib *lib) declare(s *sym8.Symbol) { _, found := lib.symbols[s.Name()] if found { panic("redeclare") } lib.symbols[s.Name()] = s switch s.Type { case SymConst: panic("todo") case SymFunc: lib.Pkg.DeclareFunc(s.Name()) case SymVar: lib.Pkg.DeclareVar(s.Name()) default: panic("declare with invalid sym type") } }