@@ -140,7 +140,11 @@ let fileOfFileIndex n = fileIndexTable.IndexToFile(n)
140140let mkPos l c = pos( l, c)
141141
142142[<Struct; CustomEquality; NoComparison>]
143+ #if DEBUG
144+ [<System.Diagnostics.DebuggerDisplay( " ({StartLine},{StartColumn}-{EndLine},{EndColumn}) {FileName} IsSynthetic={IsSynthetic} -> {DebugCode}" ) >]
145+ #else
143146[<System.Diagnostics.DebuggerDisplay( " ({StartLine},{StartColumn}-{EndLine},{EndColumn}) {FileName} IsSynthetic={IsSynthetic}" ) >]
147+ #endif
144148type range ( code : int64 ) =
145149static member Zero = range( 0 L)
146150new ( fidx , bl , bc , el , ec ) =
@@ -163,6 +167,19 @@ type range(code:int64) =
163167member m.StartRange = range( m.FileIndex, m.Start, m.Start)
164168member m.EndRange = range( m.FileIndex, m.End, m.End)
165169member r.FileName = fileOfFileIndex r.FileIndex
170+ #if DEBUG
171+ member r.DebugCode =
172+ try
173+ let endCol = r.EndColumn- 1
174+ let startCol = r.StartColumn- 1
175+ File.ReadAllLines( r.FileName)
176+ |> Seq.skip( r.StartLine- 1 )
177+ |> Seq.take( r.EndLine- r.StartLine+ 1 )
178+ |> String.concat" \n "
179+ |> fun s -> s.Substring( startCol+ 1 , s.LastIndexOf( " \n " ) + 1 - startCol+ endCol)
180+ with e->
181+ e.ToString()
182+ #endif
166183member r.MakeSynthetic () = range( code||| isSyntheticMask)
167184override r.ToString () = sprintf" %s (%d ,%d --%d ,%d ) IsSynthetic=%b " r.FileName r.StartLine r.StartColumn r.EndLine r.EndColumn r.IsSynthetic
168185member r.ToShortString () = sprintf" (%d ,%d --%d ,%d )" r.StartLine r.StartColumn r.EndLine r.EndColumn