@ -208,28 +208,28 @@ string GetPath(const GeneratorOptions& options,
}
}
// Forward declare, so that GetPrefix can call this method,
// which in turn, calls GetPrefix.
string GetPath ( const GeneratorOptions & options ,
const Descriptor * descriptor ) ;
// Returns the name of the message with a leading dot and taking into account
// nesting, for example ".OuterMessage.InnerMessage", or returns empty if
// descriptor is null. This function does not handle namespacing, only message
// nesting.
string GetNestedMessageName ( const Descriptor * descriptor ) {
if ( descriptor = = NULL ) {
return " " ;
}
return StripPrefixString ( descriptor - > full_name ( ) ,
descriptor - > file ( ) - > package ( ) ) ;
}
// Returns the path prefix for a message or enumeration that
// lives under the given file and containing type.
string GetPrefix ( const GeneratorOptions & options ,
const FileDescriptor * file_descriptor ,
const Descriptor * containing_type ) {
string prefix = " " ;
if ( containing_type = = NULL ) {
prefix = GetPath ( options , file_descriptor ) ;
} else {
prefix = GetPath ( options , containing_type ) ;
}
string prefix = GetPath ( options , file_descriptor ) +
GetNestedMessageName ( containing_type ) ;
if ( ! prefix . empty ( ) ) {
prefix + = " . " ;
}
return prefix ;
}
@ -277,7 +277,9 @@ string MaybeCrossFileRef(const GeneratorOptions& options,
from_file ! = to_message - > file ( ) ) {
// Cross-file ref in CommonJS needs to use the module alias instead of
// the global name.
return ModuleAlias ( to_message - > file ( ) - > name ( ) ) + " . " + to_message - > name ( ) ;
return ModuleAlias ( to_message - > file ( ) - > name ( ) ) +
GetNestedMessageName ( to_message - > containing_type ( ) ) +
" . " + to_message - > name ( ) ;
} else {
// Within a single file we use a full name.
return GetPath ( options , to_message ) ;