55 ******************************************************************************/
66
77import type { MismatchedTokenException } from 'chevrotain' ;
8- import type { Diagnostic } from 'vscode-languageserver' ;
8+ import type { DiagnosticSeverity , Position , Range , Diagnostic } from 'vscode-languageserver-types ' ;
99import type { LanguageMetaData } from '../languages/language-meta-data.js' ;
1010import type { ParseResult } from '../parser/langium-parser.js' ;
1111import type { LangiumCoreServices } from '../services.js' ;
1212import type { AstNode , CstNode } from '../syntax-tree.js' ;
1313import type { LangiumDocument } from '../workspace/documents.js' ;
1414import type { DiagnosticData , DiagnosticInfo , ValidationAcceptor , ValidationCategory , ValidationRegistry } from './validation-registry.js' ;
15- import { DiagnosticSeverity , Position , Range } from 'vscode-languageserver' ;
1615import { CancellationToken } from '../utils/cancellation.js' ;
1716import { findNodeForKeyword , findNodeForProperty } from '../utils/grammar-utils.js' ;
1817import { streamAst } from '../utils/ast-utils.js' ;
@@ -100,7 +99,7 @@ export class DefaultDocumentValidator implements DocumentValidator {
10099 protected processLexingErrors ( parseResult : ParseResult , diagnostics : Diagnostic [ ] , _options : ValidationOptions ) : void {
101100 for ( const lexerError of parseResult . lexerErrors ) {
102101 const diagnostic : Diagnostic = {
103- severity : DiagnosticSeverity . Error ,
102+ severity : toDiagnosticSeverity ( 'error' ) ,
104103 range : {
105104 start : {
106105 line : lexerError . line ! - 1 ,
@@ -131,20 +130,21 @@ export class DefaultDocumentValidator implements DocumentValidator {
131130 if ( 'previousToken' in parserError ) {
132131 const token = ( parserError as MismatchedTokenException ) . previousToken ;
133132 if ( ! isNaN ( token . startOffset ) ) {
134- const position = Position . create ( token . endLine ! - 1 , token . endColumn ! ) ;
135- range = Range . create ( position , position ) ;
133+ const position : Position = { line : token . endLine ! - 1 , character : token . endColumn ! } ;
134+ range = { start : position , end : position } ;
136135 } else {
137136 // No valid prev token. Might be empty document or containing only hidden tokens.
138137 // Point to document start
139- range = Range . create ( 0 , 0 , 0 , 0 ) ;
138+ const position : Position = { line : 0 , character : 0 } ;
139+ range = { start : position , end : position } ;
140140 }
141141 }
142142 } else {
143143 range = tokenToRange ( parserError . token ) ;
144144 }
145145 if ( range ) {
146146 const diagnostic : Diagnostic = {
147- severity : DiagnosticSeverity . Error ,
147+ severity : toDiagnosticSeverity ( 'error' ) ,
148148 range,
149149 message : parserError . message ,
150150 data : diagnosticData ( DocumentValidator . ParsingError ) ,
@@ -211,7 +211,7 @@ export class DefaultDocumentValidator implements DocumentValidator {
211211}
212212
213213export function getDiagnosticRange < N extends AstNode > ( info : DiagnosticInfo < N , string > ) : Range {
214- if ( Range . is ( info . range ) ) {
214+ if ( info . range ) {
215215 return info . range ;
216216 }
217217 let cstNode : CstNode | undefined ;
@@ -233,13 +233,13 @@ export function getDiagnosticRange<N extends AstNode>(info: DiagnosticInfo<N, st
233233export function toDiagnosticSeverity ( severity : 'error' | 'warning' | 'info' | 'hint' ) : DiagnosticSeverity {
234234 switch ( severity ) {
235235 case 'error' :
236- return DiagnosticSeverity . Error ;
236+ return 1 ; // according to vscode-languageserver-types/lib/esm/main.js# DiagnosticSeverity.Error
237237 case 'warning' :
238- return DiagnosticSeverity . Warning ;
238+ return 2 ; // according to vscode-languageserver-types/lib/esm/main.js# DiagnosticSeverity.Warning
239239 case 'info' :
240- return DiagnosticSeverity . Information ;
240+ return 3 ; // according to vscode-languageserver-types/lib/esm/main.js# DiagnosticSeverity.Information
241241 case 'hint' :
242- return DiagnosticSeverity . Hint ;
242+ return 4 ; // according to vscode-languageserver-types/lib/esm/main.js# DiagnosticSeverity.Hint
243243 default :
244244 throw new Error ( 'Invalid diagnostic severity: ' + severity ) ;
245245 }
0 commit comments