@@ -1362,61 +1362,6 @@ private bool SkipExpressionBreakpointsSequences(MethodDefinition methodDefinitio
13621362 return false ;
13631363 }
13641364
1365- //public bool SkipInlineAssignedAutoProperty(bool skipAutoProps, MethodDefinition methodDefinition, Instruction instruction)
1366- //{
1367- // if (!skipAutoProps || !methodDefinition.IsConstructor) return false;
1368-
1369- // return SkipGeneratedBackingFieldAssignment(methodDefinition, instruction) ||
1370- // SkipDefaultInitializationSystemObject(instruction);
1371- //}
1372-
1373- //private static bool SkipGeneratedBackingFieldAssignment(MethodDefinition methodDefinition, Instruction instruction)
1374- //{
1375- // /*
1376- // For inline initialization of properties the compiler generates a field that is set in the constructor of the class.
1377- // To skip this we search for compiler generated fields that are set in the constructor.
1378-
1379- // .field private string '<SurName>k__BackingField'
1380- // .custom instance void [System.Runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (
1381- // 01 00 00 00
1382- // )
1383-
1384- // .method public hidebysig specialname rtspecialname
1385- // instance void .ctor () cil managed
1386- // {
1387- // IL_0000: ldarg.0
1388- // IL_0001: ldsfld string[System.Runtime] System.String::Empty
1389- // IL_0006: stfld string TestRepro.ClassWithPropertyInit::'<SurName>k__BackingField'
1390- // ...
1391- // }
1392- // ...
1393- // */
1394- // IEnumerable<FieldDefinition> autogeneratedBackingFields = methodDefinition.DeclaringType.Fields.Where(x =>
1395- // x.CustomAttributes.Any(ca => ca.AttributeType.FullName.Equals(typeof(CompilerGeneratedAttribute).FullName)) &&
1396- // x.FullName.EndsWith("k__BackingField"));
1397-
1398- // return instruction.OpCode == OpCodes.Ldarg &&
1399- // instruction.Next?.Next?.OpCode == OpCodes.Stfld &&
1400- // instruction.Next?.Next?.Operand is FieldReference fr &&
1401- // autogeneratedBackingFields.Select(x => x.FullName).Contains(fr.FullName);
1402- //}
1403-
1404- //private static bool SkipDefaultInitializationSystemObject(Instruction instruction)
1405- //{
1406- // /*
1407- // A type always has a constructor with a default instantiation of System.Object. For record types these
1408- // instructions can have a own sequence point. This means that even the default constructor would be instrumented.
1409- // To skip this we search for call instructions with a method reference that declares System.Object.
1410-
1411- // IL_0000: ldarg.0
1412- // IL_0001: call instance void [System.Runtime]System.Object::.ctor()
1413- // IL_0006: ret
1414- // */
1415- // return instruction.OpCode == OpCodes.Ldarg &&
1416- // instruction.Next?.OpCode == OpCodes.Call &&
1417- // instruction.Next?.Operand is MethodReference mr && mr.DeclaringType.FullName.Equals(typeof(System.Object).FullName);
1418- //}
1419-
14201365 private static bool SkipBranchGeneratedExceptionFilter ( Instruction branchInstruction , MethodDefinition methodDefinition )
14211366 {
14221367 if ( ! methodDefinition . Body . HasExceptionHandlers )
0 commit comments