30 lines
633 B
Go
30 lines
633 B
Go
package analyzer
|
|
|
|
// locator uniquely identifies a section in the section table.
|
|
type locator struct {
|
|
modulePath string
|
|
name string
|
|
}
|
|
|
|
// SectionTable stores a list of semantically analized sections from one module,
|
|
// and all sections that it requires from other modules.
|
|
type SectionTable map[locator] Section
|
|
|
|
// SectionKind differentiates Section interfaces.
|
|
type SectionKind int
|
|
|
|
const (
|
|
SectionKindType = iota
|
|
SectionKindObjt
|
|
SectionKindEnum
|
|
SectionKindFace
|
|
SectionKindData
|
|
SectionKindFunc
|
|
)
|
|
|
|
// Section is a semantically analyzed section.
|
|
type Section interface {
|
|
Kind () (kind SectionKind)
|
|
Name () (name string)
|
|
}
|