@@ -583,6 +583,21 @@ namespace FourSlash {
583583 } ) ;
584584 }
585585
586+ public verifyErrorExistsAtRange ( range : Range , code : number , expectedMessage ?: string ) {
587+ const span = ts . createTextSpanFromRange ( range ) ;
588+ const hasMatchingError = ts . some (
589+ this . getDiagnostics ( range . fileName ) ,
590+ ( { code, messageText, start, length } ) =>
591+ code === code &&
592+ ( ! expectedMessage || expectedMessage === messageText ) &&
593+ ts . isNumber ( start ) && ts . isNumber ( length ) &&
594+ ts . textSpansEqual ( span , { start, length } ) ) ;
595+
596+ if ( ! hasMatchingError ) {
597+ this . raiseError ( `No error with code ${ code } found at provided range.` ) ;
598+ }
599+ }
600+
586601 public verifyNumberOfErrorsInCurrentFile ( expected : number ) {
587602 const errors = this . getDiagnostics ( this . activeFile . fileName ) ;
588603 const actual = errors . length ;
@@ -4009,6 +4024,10 @@ namespace FourSlashInterface {
40094024 this . state . verifyNoErrors ( ) ;
40104025 }
40114026
4027+ public errorExistsAtRange ( range : FourSlash . Range , code : number , message ?: string ) {
4028+ this . state . verifyErrorExistsAtRange ( range , code , message ) ;
4029+ }
4030+
40124031 public numberOfErrorsInCurrentFile ( expected : number ) {
40134032 this . state . verifyNumberOfErrorsInCurrentFile ( expected ) ;
40144033 }
0 commit comments