@@ -1249,7 +1249,9 @@ std::string RelativeTypeName(const FieldDescriptor* field) {
12491249std::string JSExtensionsObjectName (const GeneratorOptions& options,
12501250 const FileDescriptor* from_file,
12511251 const Descriptor* desc) {
1252- if (desc->full_name () == " google.protobuf.bridge.MessageSet" ) {
1252+ if (options.WantEs6 ()) {
1253+ return TypeNames::JsName (desc->name ()) + " .extensions" ;
1254+ } else if (desc->full_name () == " google.protobuf.bridge.MessageSet" ) {
12531255 // TODO(haberman): fix this for the kImportCommonJs case.
12541256 return " jspb.Message.messageSetExtensions" ;
12551257 } else {
@@ -2077,7 +2079,7 @@ void Generator::GenerateClassEs6(const GeneratorOptions& options,
20772079
20782080 printer->Indent ();
20792081
2080- GenerateClassConstructor (options, printer, desc);
2082+ GenerateClassConstructorAndDeclareExtensionFieldInfo (options, printer, desc);
20812083
20822084 GenerateClassFieldInfo (options, printer, desc);
20832085
@@ -2187,12 +2189,6 @@ void Generator::GenerateClassConstructorAndDeclareExtensionFieldInfo(
21872189 GenerateClassExtensionFieldInfo (options, printer, desc);
21882190 }
21892191 }
2190- for (int i = 0 ; i < desc->nested_type_count (); i++) {
2191- if (!IgnoreMessage (desc->nested_type (i))) {
2192- GenerateClassConstructorAndDeclareExtensionFieldInfo (
2193- options, printer, desc->nested_type (i));
2194- }
2195- }
21962192}
21972193
21982194void Generator::GenerateClassFieldInfo (const GeneratorOptions& options,
@@ -3237,9 +3233,8 @@ void Generator::GenerateClassExtensionFieldInfo(const GeneratorOptions& options,
32373233 " *\n "
32383234 " * @type {!Object<number, jspb.ExtensionFieldInfo>}\n "
32393235 " */\n "
3240- " $class$.extensions = {};\n "
3241- " \n " ,
3242- " class" , GetMessagePath (options, desc));
3236+ " static extensions = {};\n "
3237+ " \n " );
32433238
32443239 printer->Print (
32453240 " \n "
@@ -3258,9 +3253,8 @@ void Generator::GenerateClassExtensionFieldInfo(const GeneratorOptions& options,
32583253 " *\n "
32593254 " * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}\n "
32603255 " */\n "
3261- " $class$.extensionsBinary = {};\n "
3262- " \n " ,
3263- " class" , GetMessagePath (options, desc));
3256+ " static extensionsBinary = {};\n "
3257+ " \n " );
32643258 }
32653259}
32663260
@@ -3685,22 +3679,23 @@ void Generator::GenerateExtension(const GeneratorOptions& options,
36853679 const TypeNames& type_names,
36863680 io::Printer* printer,
36873681 const FieldDescriptor* field) const {
3688- std::string extension_scope =
3689- (field->extension_scope ()
3690- ? GetMessagePath (options, field->extension_scope ())
3691- : GetNamespace (options, field->file ()));
3682+ std::string extension_scope_name =
3683+ (field->containing_type ()
3684+ ? TypeNames::JsName (field->containing_type ()->name ())
3685+ : GetNamespace (options, field->file ()));
3686+ std::string extension_object_name =
3687+ JSExtensionsObjectName (options, field->file (), field->containing_type ());
3688+ std::string extension_object_field_name = JSObjectFieldName (options, field);
36923689
3693- const std::string extension_object_name = JSObjectFieldName (options, field);
36943690 printer->Print (
36953691 " \n "
36963692 " /**\n "
36973693 " * A tuple of {field number, class constructor} for the extension\n "
3698- " * field named `$nameInComment $`.\n "
3694+ " * field named `$name $`.\n "
36993695 " * @type {!jspb.ExtensionFieldInfo<$extensionType$>}\n "
37003696 " */\n "
37013697 " $class$.$name$ = new jspb.ExtensionFieldInfo(\n " ,
3702- " nameInComment" , extension_object_name, " name" , extension_object_name,
3703- " class" , extension_scope, " extensionType" ,
3698+ " class" , extension_scope_name, " name" , extension_object_field_name, " extensionType" ,
37043699 JSFieldTypeAnnotation (options, field,
37053700 /* is_setter_argument = */ false ,
37063701 /* force_present = */ true ,
@@ -3714,7 +3709,7 @@ void Generator::GenerateExtension(const GeneratorOptions& options,
37143709 " !Object} */ (\n "
37153710 " $toObject$),\n "
37163711 " $repeated$);\n " ,
3717- " index" , absl::StrCat (field->number ()), " name" , extension_object_name , " ctor" ,
3712+ " index" , absl::StrCat (field->number ()), " name" , extension_object_field_name , " ctor" ,
37183713 (field->cpp_type () == FieldDescriptor::CPPTYPE_MESSAGE
37193714 ? type_names.SubmessageTypeRef (field)
37203715 : std::string (" null" )),
@@ -3732,12 +3727,11 @@ void Generator::GenerateExtension(const GeneratorOptions& options,
37323727 " $binaryWriterFn$,\n "
37333728 " $binaryMessageSerializeFn$,\n "
37343729 " $binaryMessageDeserializeFn$,\n " ,
3735- " extendName" ,
3736- JSExtensionsObjectName (options, field->file (), field->containing_type ()),
3737- " index" , absl::StrCat (field->number ()), " class" , extension_scope, " name" ,
3738- extension_object_name, " binaryReaderFn" ,
3739- JSBinaryReaderMethodName (options, field), " binaryWriterFn" ,
3740- JSBinaryWriterMethodName (options, field), " binaryMessageSerializeFn" ,
3730+ " extendName" , extension_object_name, " index" , absl::StrCat (field->number ()),
3731+ " class" , extension_scope_name, " name" , extension_object_field_name,
3732+ " binaryReaderFn" , JSBinaryReaderMethodName (options, field),
3733+ " binaryWriterFn" , JSBinaryWriterMethodName (options, field),
3734+ " binaryMessageSerializeFn" ,
37413735 (field->cpp_type () == FieldDescriptor::CPPTYPE_MESSAGE)
37423736 ? (type_names.SubmessageTypeRef (field) + " .serializeBinaryToWriter" )
37433737 : " undefined" ,
@@ -3754,10 +3748,8 @@ void Generator::GenerateExtension(const GeneratorOptions& options,
37543748 " // toObject() will function correctly.\n "
37553749 " $extendName$[$index$] = $class$.$name$;\n "
37563750 " \n " ,
3757- " extendName" ,
3758- JSExtensionsObjectName (options, field->file (), field->containing_type ()),
3759- " index" , absl::StrCat (field->number ()), " class" , extension_scope, " name" ,
3760- extension_object_name);
3751+ " extendName" , extension_object_name, " index" , absl::StrCat (field->number ()),
3752+ " class" , extension_scope_name, " name" , extension_object_field_name);
37613753}
37623754
37633755bool GeneratorOptions::ParseFromOptions (
0 commit comments