@@ -253,14 +253,18 @@ void AddTypeSigReference(TypeSig typeSig, INameReference<IDnlibDef> reference) {
253253 foreach ( ITypeDefOrRef type in typeSig . FindTypeRefs ( ) ) {
254254 TypeDef typeDef = type . ResolveTypeDefThrow ( ) ;
255255 if ( context . Modules . Contains ( ( ModuleDefMD ) typeDef . Module ) ) {
256- service . ReduceRenameMode ( typeDef , RenameMode . Letters ) ;
257- if ( type is TypeRef )
258- service . AddReference ( typeDef , new TypeRefReference ( ( TypeRef ) type , typeDef ) ) ;
259- service . AddReference ( typeDef , reference ) ;
256+ AddDefReference ( typeDef , reference ) ;
257+ if ( type is TypeRef typeRef )
258+ service . AddReference ( typeDef , new TypeRefReference ( typeRef , typeDef ) ) ;
260259 }
261260 }
262261 }
263262
263+ void AddDefReference < T > ( T def , INameReference < T > reference ) where T : IDnlibDef {
264+ service . ReduceRenameMode ( def , RenameMode . Letters ) ;
265+ service . AddReference ( def , reference ) ;
266+ }
267+
264268 void ProcessBAMLElement ( BamlElement root , BamlElement elem ) {
265269 ProcessElementHeader ( elem ) ;
266270 ProcessElementBody ( root , elem ) ;
@@ -459,15 +463,13 @@ void ProcessConverter(PropertyWithConverterRecord rec, TypeDef type) {
459463 if ( property != null ) {
460464 var reference = new BAMLConverterMemberReference ( xmlnsCtx , sig , property , rec ) ;
461465 AddTypeSigReference ( sig , reference ) ;
462- service . ReduceRenameMode ( property , RenameMode . Letters ) ;
463- service . AddReference ( property , reference ) ;
466+ AddDefReference ( property , reference ) ;
464467 }
465468 FieldDef field = typeDef . FindField ( cmdName ) ;
466469 if ( field != null ) {
467470 var reference = new BAMLConverterMemberReference ( xmlnsCtx , sig , field , rec ) ;
468471 AddTypeSigReference ( sig , reference ) ;
469- service . ReduceRenameMode ( field , RenameMode . Letters ) ;
470- service . AddReference ( field , reference ) ;
472+ AddDefReference ( field , reference ) ;
471473 }
472474 if ( property == null && field == null )
473475 context . Logger . WarnFormat ( "Could not resolve command '{0}' in '{1}'." , cmd , CurrentBAMLName ) ;
@@ -609,11 +611,17 @@ void AnalyzePropertyPathProperty(PropertyPathPartUpdater part) {
609611 var typeName = part . GetTypeName ( ) ;
610612 var propertyName = part . GetPropertyName ( ) ;
611613 if ( ! string . IsNullOrWhiteSpace ( typeName ) ) {
612- var sig = ResolveType ( typeName , out var prefix ) ;
613- if ( sig != null && context . Modules . Contains ( ( ModuleDefMD ) sig . ToBasicTypeDefOrRef ( ) . ResolveTypeDefThrow ( ) . Module ) ) {
614- var reference = new BAMLPathTypeReference ( xmlnsCtx , sig , part ) ;
614+ var sig = ResolveType ( typeName , out _ ) ;
615+ var basicTypeDef = sig ? . ToBasicTypeDefOrRef ( ) . ResolveTypeDef ( ) ;
616+ if ( ! ( basicTypeDef is null ) && context . Modules . Contains ( basicTypeDef . Module as ModuleDefMD ) ) {
617+ var propDef = basicTypeDef . FindPropertyCheckBaseType ( propertyName ) ;
618+ var reference = new BAMLPathTypeReference ( xmlnsCtx , sig , propDef , part ) ;
615619 AddTypeSigReference ( sig , reference ) ;
616- return ;
620+
621+ if ( ! ( propDef is null ) ) {
622+ AddDefReference ( propDef , reference ) ;
623+ return ; // Return to avoid blocking renaming of the property.
624+ }
617625 }
618626 }
619627
0 commit comments