You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
453 B
Go
24 lines
453 B
Go
3 years ago
|
package ast
|
||
|
|
||
|
import "errors"
|
||
|
|
||
|
// ErrImportCycleNotAllowed defines an error for circular importing
|
||
|
var ErrImportCycleNotAllowed = errors.New("import cycle not allowed")
|
||
|
|
||
|
// importStack a stack of import paths
|
||
|
type importStack []string
|
||
|
|
||
|
func (s *importStack) push(p string) error {
|
||
|
for _, x := range *s {
|
||
|
if x == p {
|
||
|
return ErrImportCycleNotAllowed
|
||
|
}
|
||
|
}
|
||
|
*s = append(*s, p)
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (s *importStack) pop() {
|
||
|
*s = (*s)[0 : len(*s)-1]
|
||
|
}
|