diff options
Diffstat (limited to 'symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs')
-rw-r--r-- | symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs b/symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs index b07191d..964f4ad 100644 --- a/symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs +++ b/symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs @@ -137,9 +137,15 @@ namespace Mono.Cecil.Pdb { } } - if (function.iteratorScopes != null) - foreach (var iterator_scope in function.iteratorScopes) - symbol.CustomDebugInformations.Add (new StateMachineScopeDebugInformation ((int) iterator_scope.Offset, (int) (iterator_scope.Offset + iterator_scope.Length + 1))); + if (function.iteratorScopes != null) { + var state_machine = new StateMachineScopeDebugInformation (); + + foreach (var iterator_scope in function.iteratorScopes) { + state_machine.Scopes.Add (new StateMachineScope ((int) iterator_scope.Offset, (int) (iterator_scope.Offset + iterator_scope.Length + 1))); + } + + symbol.CustomDebugInformations.Add (state_machine); + } if (function.synchronizationInformation != null) { var async_debug_info = new AsyncMethodBodyDebugInformation ((int) function.synchronizationInformation.GeneratedCatchHandlerOffset); @@ -147,11 +153,11 @@ namespace Mono.Cecil.Pdb { foreach (var synchronization_point in function.synchronizationInformation.synchronizationPoints) { async_debug_info.Yields.Add (new InstructionOffset ((int) synchronization_point.SynchronizeOffset)); async_debug_info.Resumes.Add (new InstructionOffset ((int) synchronization_point.ContinuationOffset)); + async_debug_info.ResumeMethods.Add (method); } symbol.CustomDebugInformations.Add (async_debug_info); - async_debug_info.MoveNextMethod = method; symbol.StateMachineKickOffMethod = (MethodDefinition) method.Module.LookupToken ((int) function.synchronizationInformation.kickoffMethodToken); } @@ -280,7 +286,11 @@ namespace Mono.Cecil.Pdb { break; } case 'A': - var index = used_namespace.IndexOf(' '); + var index = used_namespace.IndexOf (' '); + if (index < 0) { + target = new ImportTarget (ImportTargetKind.ImportNamespace) { @namespace = used_namespace }; + break; + } var alias_value = used_namespace.Substring (1, index - 1); var alias_target_value = used_namespace.Substring (index + 2); switch (used_namespace [index + 1]) { @@ -294,6 +304,15 @@ namespace Mono.Cecil.Pdb { break; } break; + case '*': + target = new ImportTarget (ImportTargetKind.ImportNamespace) { @namespace = value }; + break; + case '@': + if (!value.StartsWith ("P:")) + continue; + + target = new ImportTarget (ImportTargetKind.ImportNamespace) { @namespace = value.Substring (2) }; + break; } if (target != null) |