func ErrFromNode(err error, node Node) error {
	if asList, isList := err.(ErrList); isList {
		resList := make(ErrList, len(asList))
		for i, baseErr := range asList {
			resList[i] = ErrFromNode(baseErr, node)
		}
		return resList
	}
	return PositionedError{
		Pos:   node.Pos(),
		error: err,
	}
}
ErrFromNode returns the given error, with additional information
attaching it to the given AST node.  It will automatically map
over error lists.
package loader
import (
	"fmt"
	"go/token"
)
type PositionedError struct {
	Pos token.Pos
	error
}
type Node interface {
	Pos() token.Pos  
}