@@ -63,6 +63,45 @@ public void InsertBeforeIssue697 ()
63
63
}
64
64
}
65
65
66
+ [ Test ]
67
+ public void InsertBeforeIssue697bis ( )
68
+ {
69
+ var parameters = new ReaderParameters { SymbolReaderProvider = new MdbReaderProvider ( ) } ;
70
+ using ( var module = GetResourceModule ( "Issue697.dll" , parameters ) ) {
71
+ var pathGetterDef = module . GetTypes ( )
72
+ . SelectMany ( t => t . Methods )
73
+ . First ( m => m . Name . Equals ( "get_Defer" ) ) ;
74
+
75
+ var body = pathGetterDef . Body ;
76
+ var worker = body . GetILProcessor ( ) ;
77
+ var initialBody = body . Instructions . ToList ( ) ;
78
+ Console . WriteLine ( initialBody . Sum ( i => i . GetSize ( ) ) ) ;
79
+
80
+ var head = initialBody . First ( ) ;
81
+ var opcode = worker . Create ( OpCodes . Ldc_I4_1 ) ;
82
+ worker . InsertBefore ( head , opcode ) ;
83
+
84
+ Assert . That ( pathGetterDef . DebugInformation . Scope . Start . IsEndOfMethod , Is . False ) ;
85
+ foreach ( var subscope in pathGetterDef . DebugInformation . Scope . Scopes )
86
+ Assert . That ( subscope . Start . IsEndOfMethod , Is . False ) ;
87
+
88
+ // big test -- we can write w/o crashing
89
+ var unique = Guid . NewGuid ( ) . ToString ( ) ;
90
+ var output = Path . GetTempFileName ( ) ;
91
+ var outputdll = output + ".dll" ;
92
+
93
+ var writer = new WriterParameters ( ) {
94
+ SymbolWriterProvider = new MdbWriterProvider ( ) ,
95
+ WriteSymbols = true
96
+ } ;
97
+ using ( var sink = File . Open ( outputdll , FileMode . Create , FileAccess . ReadWrite ) ) {
98
+ module . Write ( sink , writer ) ;
99
+ }
100
+
101
+ Assert . Pass ( ) ;
102
+ }
103
+ }
104
+
66
105
[ Test ]
67
106
public void InsertAfter ( )
68
107
{
0 commit comments