@ -227,10 +227,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
var v = initializer . Annotation < ILVariableResolveResult > ( ) ? . Variable ;
var v = initializer . Annotation < ILVariableResolveResult > ( ) ? . Variable ;
if ( v ? . Kind = = IL . VariableKind . Parameter )
if ( v ? . Kind = = IL . VariableKind . Parameter )
{
{
// remove record ctor parameter assignments
isStructPrimaryCtor = record ? . PrimaryConstructor ! = null ;
if ( ! IsPropertyDeclaredByPrimaryCtor ( fieldOrPropertyOrEvent , record ) )
break ;
isStructPrimaryCtor = true ;
if ( fieldOrPropertyOrEvent is IField f )
if ( fieldOrPropertyOrEvent is IField f )
fieldToVariableMap . Add ( f , v ) ;
fieldToVariableMap . Add ( f , v ) ;
}
}
@ -282,23 +279,6 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
}
}
}
}
bool IsPropertyDeclaredByPrimaryCtor ( IMember m , RecordDecompiler record )
{
if ( record = = null )
return false ;
switch ( m )
{
case IProperty p :
return record . IsPropertyDeclaredByPrimaryConstructor ( p ) ;
case IField f :
return record . PrimaryConstructor ! = null ;
case IEvent e :
return record . PrimaryConstructor ! = null ;
default :
return false ;
}
}
void RemoveSingleEmptyConstructor ( IEnumerable < AstNode > members , ITypeDefinition contextTypeDefinition )
void RemoveSingleEmptyConstructor ( IEnumerable < AstNode > members , ITypeDefinition contextTypeDefinition )
{
{
// if we're outside of a type definition skip this altogether
// if we're outside of a type definition skip this altogether