diff --git a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
new file mode 100644
index 0000000..47678b2
--- /dev/null
+++ b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
@@ -0,0 +1,473 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: extensions/proto3/ext3.proto
+
+package proto3
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
+	math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+type Enum int32
+
+const (
+	Enum_ZERO Enum = 0
+)
+
+var Enum_name = map[int32]string{
+	0: "ZERO",
+}
+
+var Enum_value = map[string]int32{
+	"ZERO": 0,
+}
+
+func (x Enum) String() string {
+	return proto.EnumName(Enum_name, int32(x))
+}
+
+func (Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_3db31bb248c8865e, []int{0}
+}
+
+type Message struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message) Reset()         { *m = Message{} }
+func (m *Message) String() string { return proto.CompactTextString(m) }
+func (*Message) ProtoMessage()    {}
+func (*Message) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3db31bb248c8865e, []int{0}
+}
+
+func (m *Message) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message.Unmarshal(m, b)
+}
+func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
+}
+func (m *Message) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message.Merge(m, src)
+}
+func (m *Message) XXX_Size() int {
+	return xxx_messageInfo_Message.Size(m)
+}
+func (m *Message) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message proto.InternalMessageInfo
+
+var E_ExtensionBool = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (bool)(nil),
+	Field:         1001,
+	Name:          "goproto.protoc.extension.proto3.extension_bool",
+	Tag:           "varint,1001,opt,name=extension_bool,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (Enum)(nil),
+	Field:         1002,
+	Name:          "goproto.protoc.extension.proto3.extension_enum",
+	Tag:           "varint,1002,opt,name=extension_enum,proto3,enum=goproto.protoc.extension.proto3.Enum",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (int32)(nil),
+	Field:         1003,
+	Name:          "goproto.protoc.extension.proto3.extension_int32",
+	Tag:           "varint,1003,opt,name=extension_int32,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (int32)(nil),
+	Field:         1004,
+	Name:          "goproto.protoc.extension.proto3.extension_sint32",
+	Tag:           "zigzag32,1004,opt,name=extension_sint32,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (uint32)(nil),
+	Field:         1005,
+	Name:          "goproto.protoc.extension.proto3.extension_uint32",
+	Tag:           "varint,1005,opt,name=extension_uint32,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (int64)(nil),
+	Field:         1006,
+	Name:          "goproto.protoc.extension.proto3.extension_int64",
+	Tag:           "varint,1006,opt,name=extension_int64,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (int64)(nil),
+	Field:         1007,
+	Name:          "goproto.protoc.extension.proto3.extension_sint64",
+	Tag:           "zigzag64,1007,opt,name=extension_sint64,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (uint64)(nil),
+	Field:         1008,
+	Name:          "goproto.protoc.extension.proto3.extension_uint64",
+	Tag:           "varint,1008,opt,name=extension_uint64,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (int32)(nil),
+	Field:         1009,
+	Name:          "goproto.protoc.extension.proto3.extension_sfixed32",
+	Tag:           "fixed32,1009,opt,name=extension_sfixed32,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (uint32)(nil),
+	Field:         1010,
+	Name:          "goproto.protoc.extension.proto3.extension_fixed32",
+	Tag:           "fixed32,1010,opt,name=extension_fixed32,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (float32)(nil),
+	Field:         1011,
+	Name:          "goproto.protoc.extension.proto3.extension_float",
+	Tag:           "fixed32,1011,opt,name=extension_float,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (int64)(nil),
+	Field:         1012,
+	Name:          "goproto.protoc.extension.proto3.extension_sfixed64",
+	Tag:           "fixed64,1012,opt,name=extension_sfixed64,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (uint64)(nil),
+	Field:         1013,
+	Name:          "goproto.protoc.extension.proto3.extension_fixed64",
+	Tag:           "fixed64,1013,opt,name=extension_fixed64,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (float64)(nil),
+	Field:         1014,
+	Name:          "goproto.protoc.extension.proto3.extension_double",
+	Tag:           "fixed64,1014,opt,name=extension_double,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionString = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (string)(nil),
+	Field:         1015,
+	Name:          "goproto.protoc.extension.proto3.extension_string",
+	Tag:           "bytes,1015,opt,name=extension_string,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_ExtensionBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         1016,
+	Name:          "goproto.protoc.extension.proto3.extension_bytes",
+	Tag:           "bytes,1016,opt,name=extension_bytes,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_Extension_Message = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: (*Message)(nil),
+	Field:         1017,
+	Name:          "goproto.protoc.extension.proto3.extension_Message",
+	Tag:           "bytes,1017,opt,name=extension_Message,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionBool = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]bool)(nil),
+	Field:         2001,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_bool",
+	Tag:           "varint,2001,rep,name=repeated_extension_bool,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]Enum)(nil),
+	Field:         2002,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_enum",
+	Tag:           "varint,2002,rep,name=repeated_extension_enum,proto3,enum=goproto.protoc.extension.proto3.Enum",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         2003,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_int32",
+	Tag:           "varint,2003,rep,name=repeated_extension_int32,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         2004,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_sint32",
+	Tag:           "zigzag32,2004,rep,name=repeated_extension_sint32,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         2005,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_uint32",
+	Tag:           "varint,2005,rep,name=repeated_extension_uint32,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         2006,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_int64",
+	Tag:           "varint,2006,rep,name=repeated_extension_int64,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         2007,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_sint64",
+	Tag:           "zigzag64,2007,rep,name=repeated_extension_sint64,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]uint64)(nil),
+	Field:         2008,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_uint64",
+	Tag:           "varint,2008,rep,name=repeated_extension_uint64,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         2009,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_sfixed32",
+	Tag:           "fixed32,2009,rep,name=repeated_extension_sfixed32,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         2010,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_fixed32",
+	Tag:           "fixed32,2010,rep,name=repeated_extension_fixed32,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]float32)(nil),
+	Field:         2011,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_float",
+	Tag:           "fixed32,2011,rep,name=repeated_extension_float,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         2012,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_sfixed64",
+	Tag:           "fixed64,2012,rep,name=repeated_extension_sfixed64,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]uint64)(nil),
+	Field:         2013,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_fixed64",
+	Tag:           "fixed64,2013,rep,name=repeated_extension_fixed64,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]float64)(nil),
+	Field:         2014,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_double",
+	Tag:           "fixed64,2014,rep,name=repeated_extension_double,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionString = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]string)(nil),
+	Field:         2015,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_string",
+	Tag:           "bytes,2015,rep,name=repeated_extension_string,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtensionBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([][]byte)(nil),
+	Field:         2016,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_bytes",
+	Tag:           "bytes,2016,rep,name=repeated_extension_bytes,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+var E_RepeatedExtension_Message = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.MessageOptions)(nil),
+	ExtensionType: ([]*Message)(nil),
+	Field:         2017,
+	Name:          "goproto.protoc.extension.proto3.repeated_extension_Message",
+	Tag:           "bytes,2017,rep,name=repeated_extension_Message,proto3",
+	Filename:      "extensions/proto3/ext3.proto",
+}
+
+func init() {
+	proto.RegisterType((*Message)(nil), "goproto.protoc.extension.proto3.Message")
+	proto.RegisterEnum("goproto.protoc.extension.proto3.Enum", Enum_name, Enum_value)
+	proto.RegisterExtension(E_ExtensionBool)
+	proto.RegisterExtension(E_ExtensionEnum)
+	proto.RegisterExtension(E_ExtensionInt32)
+	proto.RegisterExtension(E_ExtensionSint32)
+	proto.RegisterExtension(E_ExtensionUint32)
+	proto.RegisterExtension(E_ExtensionInt64)
+	proto.RegisterExtension(E_ExtensionSint64)
+	proto.RegisterExtension(E_ExtensionUint64)
+	proto.RegisterExtension(E_ExtensionSfixed32)
+	proto.RegisterExtension(E_ExtensionFixed32)
+	proto.RegisterExtension(E_ExtensionFloat)
+	proto.RegisterExtension(E_ExtensionSfixed64)
+	proto.RegisterExtension(E_ExtensionFixed64)
+	proto.RegisterExtension(E_ExtensionDouble)
+	proto.RegisterExtension(E_ExtensionString)
+	proto.RegisterExtension(E_ExtensionBytes)
+	proto.RegisterExtension(E_Extension_Message)
+	proto.RegisterExtension(E_RepeatedExtensionBool)
+	proto.RegisterExtension(E_RepeatedExtensionEnum)
+	proto.RegisterExtension(E_RepeatedExtensionInt32)
+	proto.RegisterExtension(E_RepeatedExtensionSint32)
+	proto.RegisterExtension(E_RepeatedExtensionUint32)
+	proto.RegisterExtension(E_RepeatedExtensionInt64)
+	proto.RegisterExtension(E_RepeatedExtensionSint64)
+	proto.RegisterExtension(E_RepeatedExtensionUint64)
+	proto.RegisterExtension(E_RepeatedExtensionSfixed32)
+	proto.RegisterExtension(E_RepeatedExtensionFixed32)
+	proto.RegisterExtension(E_RepeatedExtensionFloat)
+	proto.RegisterExtension(E_RepeatedExtensionSfixed64)
+	proto.RegisterExtension(E_RepeatedExtensionFixed64)
+	proto.RegisterExtension(E_RepeatedExtensionDouble)
+	proto.RegisterExtension(E_RepeatedExtensionString)
+	proto.RegisterExtension(E_RepeatedExtensionBytes)
+	proto.RegisterExtension(E_RepeatedExtension_Message)
+}
+
+func init() { proto.RegisterFile("extensions/proto3/ext3.proto", fileDescriptor_3db31bb248c8865e) }
+
+var fileDescriptor_3db31bb248c8865e = []byte{
+	// 748 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x97, 0xdb, 0x4b, 0xdc, 0x50,
+	0x10, 0xc6, 0xbb, 0xba, 0xba, 0x7a, 0xaa, 0xee, 0x1a, 0x68, 0xbd, 0xb4, 0xa0, 0x14, 0x0a, 0x52,
+	0x30, 0x01, 0x37, 0xe4, 0x21, 0x8f, 0xa2, 0x16, 0x29, 0x22, 0xa4, 0x14, 0x8a, 0x94, 0xda, 0xec,
+	0xe6, 0x18, 0x02, 0x31, 0x67, 0x49, 0xce, 0x52, 0xfb, 0xd4, 0xd7, 0xfe, 0x7b, 0xbd, 0xdf, 0x6f,
+	0x8f, 0xbd, 0xdf, 0x6f, 0x6f, 0x65, 0xf6, 0x64, 0x4d, 0x36, 0x39, 0x31, 0xe3, 0x93, 0x49, 0xcc,
+	0xfc, 0x66, 0xe6, 0x9b, 0xb3, 0xdf, 0x10, 0x72, 0x96, 0x1e, 0x70, 0x1a, 0x44, 0x1e, 0x0b, 0x22,
+	0xad, 0x13, 0x32, 0xce, 0x9a, 0x1a, 0x3d, 0xe0, 0x4d, 0xb5, 0x77, 0xad, 0x2c, 0xb8, 0xac, 0x77,
+	0x21, 0x6e, 0xdb, 0xea, 0xe1, 0xcb, 0xe2, 0x41, 0x73, 0x7e, 0xd1, 0x65, 0xcc, 0xf5, 0xa9, 0x08,
+	0x6d, 0x75, 0xf7, 0x34, 0x87, 0x46, 0xed, 0xd0, 0xeb, 0x70, 0x16, 0x8a, 0x57, 0xce, 0x8d, 0x93,
+	0xda, 0x16, 0x8d, 0x22, 0xdb, 0xa5, 0x17, 0x1a, 0xa4, 0xba, 0x1e, 0x74, 0xf7, 0x95, 0x31, 0x52,
+	0xdd, 0x59, 0xb7, 0xb6, 0x1b, 0x27, 0xcc, 0x8b, 0x64, 0xea, 0x10, 0xb9, 0xdb, 0x62, 0xcc, 0x57,
+	0x16, 0x54, 0x41, 0x54, 0xfb, 0x44, 0x35, 0x8e, 0xde, 0xee, 0x70, 0x28, 0x72, 0xf6, 0x5d, 0x6d,
+	0xb1, 0xb2, 0x34, 0x66, 0x4d, 0x1e, 0xc6, 0xad, 0x32, 0xe6, 0x9b, 0x41, 0x1a, 0x44, 0x21, 0x49,
+	0x29, 0xe8, 0x3d, 0x80, 0xa6, 0x56, 0xce, 0xab, 0x25, 0x3d, 0xaa, 0x50, 0x73, 0x2a, 0x1f, 0xdc,
+	0x9a, 0x9b, 0xa4, 0x9e, 0xe4, 0xf3, 0x02, 0xde, 0x5c, 0x29, 0x4f, 0xf8, 0x01, 0x12, 0x8e, 0x58,
+	0x49, 0xa1, 0x9b, 0x10, 0x67, 0x5e, 0x22, 0x8d, 0x04, 0x15, 0x21, 0x59, 0x1f, 0x81, 0x35, 0x6d,
+	0x25, 0x45, 0x5c, 0xf6, 0xf2, 0xb0, 0x2e, 0x12, 0xf6, 0x09, 0x60, 0x93, 0x29, 0xd8, 0x15, 0x01,
+	0xcb, 0x36, 0x69, 0xe8, 0xe5, 0xac, 0xcf, 0xc0, 0x1a, 0x1e, 0x6c, 0xd2, 0xd0, 0xf3, 0x4d, 0x62,
+	0x58, 0x5f, 0x80, 0xa5, 0x64, 0x9a, 0xcc, 0xc2, 0xba, 0x48, 0xd8, 0x57, 0x80, 0x55, 0x33, 0x4d,
+	0x1a, 0xba, 0xb9, 0x4d, 0x94, 0x54, 0x65, 0x7b, 0xde, 0x01, 0x75, 0x30, 0x9a, 0x7d, 0x03, 0x5c,
+	0xdd, 0x9a, 0x4e, 0x6a, 0x8b, 0x43, 0xcd, 0x2d, 0x92, 0x3c, 0xdc, 0x45, 0xf3, 0xbe, 0x03, 0xaf,
+	0x66, 0x25, 0x8d, 0x6d, 0xc4, 0xb8, 0x81, 0x21, 0xec, 0xf9, 0xcc, 0xe6, 0xe5, 0xb0, 0x1f, 0x00,
+	0x1b, 0x4a, 0x0d, 0x61, 0x03, 0xe2, 0x64, 0xad, 0x62, 0x94, 0xfb, 0x09, 0xb4, 0x46, 0xae, 0x55,
+	0x43, 0x97, 0xb4, 0x8a, 0xe1, 0xfd, 0x02, 0xde, 0x68, 0xb6, 0xd5, 0xec, 0x5c, 0x1d, 0xd6, 0x6d,
+	0xf9, 0xb4, 0x9c, 0xf6, 0x1b, 0x68, 0x95, 0xd4, 0x5c, 0xd7, 0x7a, 0x81, 0x99, 0x13, 0xc7, 0x43,
+	0x2f, 0x70, 0xcb, 0x61, 0x7f, 0x00, 0x36, 0x9e, 0x3e, 0x71, 0xbd, 0xc0, 0xc1, 0x21, 0xb4, 0x6e,
+	0x71, 0x1a, 0x95, 0xb3, 0xfe, 0x02, 0x6b, 0x22, 0x35, 0x84, 0x55, 0x88, 0x33, 0x6f, 0xa6, 0x35,
+	0x8b, 0x43, 0xca, 0x61, 0xff, 0x00, 0x76, 0x72, 0x65, 0xa9, 0xd4, 0xac, 0xe2, 0xb8, 0x94, 0xba,
+	0xf1, 0x13, 0xf3, 0x2a, 0x99, 0x09, 0x69, 0x87, 0xda, 0x9c, 0x3a, 0xbb, 0xc7, 0x35, 0xdd, 0xbb,
+	0xf5, 0xc5, 0xe1, 0xa5, 0x31, 0xeb, 0x54, 0x1f, 0xb0, 0x3e, 0x60, 0xbe, 0xb7, 0xa5, 0x64, 0x9c,
+	0x0b, 0xdf, 0x03, 0x32, 0xda, 0x85, 0xf3, 0x05, 0xf4, 0xdc, 0x78, 0x87, 0xcc, 0x4a, 0x0a, 0x40,
+	0xba, 0xdf, 0x7d, 0xa8, 0x60, 0xc4, 0x3a, 0x9d, 0x43, 0x0b, 0x7b, 0xbe, 0x46, 0xe6, 0x24, 0x6c,
+	0xac, 0x4f, 0x3f, 0x00, 0xf8, 0xb4, 0x35, 0x93, 0x83, 0xc7, 0x7e, 0x2d, 0xa7, 0x63, 0x8d, 0xfb,
+	0x21, 0xd0, 0x27, 0x25, 0xf4, 0xd8, 0xc0, 0x0b, 0x75, 0xc1, 0xfc, 0x4c, 0x1f, 0x01, 0x7c, 0x58,
+	0xae, 0x8b, 0xa1, 0x1f, 0xa1, 0x0b, 0x06, 0xfe, 0x18, 0xe0, 0x4a, 0x81, 0x2e, 0x85, 0x74, 0xac,
+	0xd7, 0x3f, 0x01, 0x7a, 0xb5, 0x40, 0x17, 0x43, 0x37, 0x6f, 0x90, 0x33, 0xb2, 0xda, 0xd1, 0x66,
+	0xfd, 0x14, 0xf8, 0x75, 0x6b, 0x2e, 0x5f, 0x7d, 0x7f, 0x09, 0x5c, 0x27, 0xf3, 0x92, 0x0c, 0xe8,
+	0x04, 0xcf, 0x20, 0x41, 0xcd, 0x9a, 0xcd, 0x25, 0xe8, 0x6f, 0x05, 0xf9, 0x64, 0x91, 0xeb, 0xe1,
+	0x39, 0xd0, 0x87, 0x24, 0x93, 0x15, 0x6b, 0xe2, 0x28, 0x75, 0x30, 0xea, 0xbf, 0x00, 0x7c, 0xa3,
+	0x50, 0x1d, 0x43, 0x3f, 0x4a, 0x1d, 0x4c, 0x82, 0x97, 0x90, 0x60, 0xb4, 0x48, 0x9d, 0xc2, 0xd3,
+	0x83, 0xdd, 0x28, 0xaf, 0x00, 0x5f, 0x91, 0x9c, 0x9e, 0x78, 0xb3, 0x14, 0x9c, 0x7c, 0xe4, 0x8a,
+	0x79, 0x0d, 0xf4, 0x71, 0xd9, 0xc9, 0x17, 0xab, 0x46, 0x3e, 0x59, 0xe4, 0xce, 0x79, 0x03, 0xf0,
+	0x09, 0xc9, 0x64, 0xc5, 0xee, 0xb9, 0x53, 0x91, 0x0a, 0x8f, 0xde, 0x42, 0x6f, 0x01, 0x7f, 0x9c,
+	0x2d, 0x94, 0x1f, 0x51, 0xfc, 0x9f, 0xd5, 0x8d, 0x9d, 0xb5, 0x38, 0x99, 0xcb, 0x7c, 0x3b, 0x70,
+	0x55, 0x16, 0xba, 0xe2, 0x2b, 0x42, 0x6b, 0xef, 0x3b, 0xe2, 0xaa, 0xbd, 0xec, 0xd2, 0x60, 0xd9,
+	0x65, 0x1a, 0xa7, 0x11, 0x77, 0x6c, 0x6e, 0x6b, 0xb9, 0x8f, 0x95, 0xd6, 0xa8, 0xf8, 0xfb, 0x3f,
+	0x00, 0x00, 0xff, 0xff, 0x82, 0x55, 0xdb, 0x72, 0xc8, 0x0c, 0x00, 0x00,
+}
diff --git a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto
new file mode 100644
index 0000000..4611038
--- /dev/null
+++ b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto
@@ -0,0 +1,53 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto3";
+
+import "google/protobuf/descriptor.proto";
+
+package goproto.protoc.extension.proto3;
+
+option go_package = "google.golang.org/proto/cmd/protoc-gen-go/testdata/extensions/proto3";
+
+message Message {}
+enum Enum { ZERO = 0; }
+
+// The only types proto3 is allowed to extend are descriptor options.
+extend google.protobuf.MessageOptions {
+  bool     extension_bool     = 1001;
+  Enum     extension_enum     = 1002;
+  int32    extension_int32    = 1003;
+  sint32   extension_sint32   = 1004;
+  uint32   extension_uint32   = 1005;
+  int64    extension_int64    = 1006;
+  sint64   extension_sint64   = 1007;
+  uint64   extension_uint64   = 1008;
+  sfixed32 extension_sfixed32 = 1009;
+  fixed32  extension_fixed32  = 1010;
+  float    extension_float    = 1011;
+  sfixed64 extension_sfixed64 = 1012;
+  fixed64  extension_fixed64  = 1013;
+  double   extension_double   = 1014;
+  string   extension_string   = 1015;
+  bytes    extension_bytes    = 1016;
+  Message  extension_Message  = 1017;
+
+  repeated bool     repeated_extension_bool     = 2001;
+  repeated Enum     repeated_extension_enum     = 2002;
+  repeated int32    repeated_extension_int32    = 2003;
+  repeated sint32   repeated_extension_sint32   = 2004;
+  repeated uint32   repeated_extension_uint32   = 2005;
+  repeated int64    repeated_extension_int64    = 2006;
+  repeated sint64   repeated_extension_sint64   = 2007;
+  repeated uint64   repeated_extension_uint64   = 2008;
+  repeated sfixed32 repeated_extension_sfixed32 = 2009;
+  repeated fixed32  repeated_extension_fixed32  = 2010;
+  repeated float    repeated_extension_float    = 2011;
+  repeated sfixed64 repeated_extension_sfixed64 = 2012;
+  repeated fixed64  repeated_extension_fixed64  = 2013;
+  repeated double   repeated_extension_double   = 2014;
+  repeated string   repeated_extension_string   = 2015;
+  repeated bytes    repeated_extension_bytes    = 2016;
+  repeated Message  repeated_extension_Message  = 2017;
+}
diff --git a/test.bash b/test.bash
index d6b8440..23fcbdc 100755
--- a/test.bash
+++ b/test.bash
@@ -31,6 +31,10 @@
 fi
 register_binary conformance-test-runner $PROTOBUF_DIR/conformance/conformance-test-runner
 register_binary protoc $PROTOBUF_DIR/src/protoc
+# Allow protoc to find google/protobuf/*.proto.
+rm -rf $PROTOBUF_DIR/src/include
+mkdir -p $PROTOBUF_DIR/src/include
+ln -s ../google $PROTOBUF_DIR/src/include/google
 
 # Download each Go toolchain version.
 GO_LATEST=go1.11
