An undefined type detection function has been added to better diagnose incomplete type definitions. Implicit type names in interface or struct declarations are now better handled. The incomplete status is not fowarded to aliased type declarations to handle circular definitions. Fixes #999 and #995. Improves #260 (goes farther, but still fails).
46 lines
700 B
Go
46 lines
700 B
Go
package main
|
|
|
|
type Descriptor interface {
|
|
ParentFile() FileDescriptor
|
|
}
|
|
|
|
type FileDescriptor interface {
|
|
Enums() EnumDescriptors
|
|
Services() ServiceDescriptors
|
|
}
|
|
|
|
type EnumDescriptors interface {
|
|
Get(i int) EnumDescriptor
|
|
}
|
|
|
|
type EnumDescriptor interface {
|
|
Values() EnumValueDescriptors
|
|
}
|
|
|
|
type EnumValueDescriptors interface {
|
|
Get(i int) EnumValueDescriptor
|
|
}
|
|
|
|
type EnumValueDescriptor interface {
|
|
Descriptor
|
|
}
|
|
|
|
type ServiceDescriptors interface {
|
|
Get(i int) ServiceDescriptor
|
|
}
|
|
|
|
type ServiceDescriptor interface {
|
|
Descriptor
|
|
isServiceDescriptor
|
|
}
|
|
|
|
type isServiceDescriptor interface{ ProtoType(ServiceDescriptor) }
|
|
|
|
func main() {
|
|
var d Descriptor
|
|
println(d == nil)
|
|
}
|
|
|
|
// Output:
|
|
// true
|