func (r *resolver) resolveExtension(s *scope, ext *ast.Extension) error { o := r.resolveName(s, ext.Extendee) if o == nil { return fmt.Errorf("failed to resolve name %q", ext.Extendee) } m, ok := o.last().(*ast.Message) if !ok { return fmt.Errorf("extendee %q resolved to non-message %T", ext.Extendee, o.last()) } ext.ExtendeeType = m // Resolve fields. for _, field := range ext.Fields { ft, ok := r.resolveFieldTypeName(s, field.TypeName) if !ok { return fmt.Errorf("failed to resolve name %q", field.TypeName) } field.Type = ft // TODO: Map fields should be forbidden? } return nil }