@@ -237,6 +237,48 @@ public void CanDeleteFromEndOfFile()
237
237
) ;
238
238
}
239
239
240
+ [ Trait ( "Category" , "ScriptFile" ) ]
241
+ [ Fact ]
242
+ public void UpdatesParseErrorDiagnosticMarkers ( )
243
+ {
244
+ ScriptFile myScript = CreateScriptFile ( TestUtilities . NormalizeNewlines ( "{\n {" ) ) ;
245
+
246
+ // Verify parse errors were detected on file open
247
+ Assert . Collection ( myScript . DiagnosticMarkers . OrderBy ( dm => dm . ScriptRegion . StartLineNumber ) ,
248
+ ( actual ) =>
249
+ {
250
+ Assert . Equal ( 1 , actual . ScriptRegion . StartLineNumber ) ;
251
+ Assert . Equal ( "Missing closing '}' in statement block or type definition." , actual . Message ) ;
252
+ Assert . Equal ( "PowerShell" , actual . Source ) ;
253
+ } ,
254
+ ( actual ) =>
255
+ {
256
+ Assert . Equal ( 2 , actual . ScriptRegion . StartLineNumber ) ;
257
+ Assert . Equal ( "Missing closing '}' in statement block or type definition." , actual . Message ) ;
258
+ Assert . Equal ( "PowerShell" , actual . Source ) ;
259
+ } ) ;
260
+
261
+ // Remove second {
262
+ myScript . ApplyChange (
263
+ new FileChange
264
+ {
265
+ Line = 2 ,
266
+ EndLine = 2 ,
267
+ Offset = 1 ,
268
+ EndOffset = 2 ,
269
+ InsertString = ""
270
+ } ) ;
271
+
272
+ // Verify parse errors were updated on file change
273
+ Assert . Collection ( myScript . DiagnosticMarkers ,
274
+ ( actual ) =>
275
+ {
276
+ Assert . Equal ( 1 , actual . ScriptRegion . StartLineNumber ) ;
277
+ Assert . Equal ( "Missing closing '}' in statement block or type definition." , actual . Message ) ;
278
+ Assert . Equal ( "PowerShell" , actual . Source ) ;
279
+ } ) ;
280
+ }
281
+
240
282
internal static ScriptFile CreateScriptFile ( string initialString )
241
283
{
242
284
using StringReader stringReader = new ( initialString ) ;
0 commit comments