Exemple #1
0
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
}
Exemple #2
0
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")
	}
}