1- import { VersionExpressionSets as SlangVersionExpressionSets } from '@nomicfoundation/slang/ast/index.js' ;
2- import { NonterminalKind } from '@nomicfoundation/slang/kinds/index.js' ;
3- import { Language } from '@nomicfoundation/slang/language/index.js' ;
4- import { Query } from '@nomicfoundation/slang/query/index.js' ;
1+ import { VersionExpressionSets as SlangVersionExpressionSets } from '@nomicfoundation/slang/ast' ;
2+ import { NonterminalKind , Query } from '@nomicfoundation/slang/cst' ;
3+ import { Parser } from '@nomicfoundation/slang/parser' ;
54import {
65 maxSatisfying ,
76 minSatisfying ,
@@ -12,9 +11,7 @@ import {
1211} from 'semver' ;
1312import { VersionExpressionSets } from '../slang-nodes/VersionExpressionSets.js' ;
1413
15- import type { NonterminalNode } from '@nomicfoundation/slang/cst' ;
16-
17- const supportedVersions = Language . supportedVersions ( ) ;
14+ const supportedVersions = Parser . supportedVersions ( ) ;
1815
1916const milestoneVersions = Array . from (
2017 supportedVersions . reduce ( ( minorRanges , version ) => {
@@ -29,7 +26,7 @@ const milestoneVersions = Array.from(
2926 return versions ;
3027 } , [ ] ) ;
3128
32- export function inferLanguage ( text : string ) : Language {
29+ export function inferLanguage ( text : string ) : Parser {
3330 let inferredRange = '' ;
3431
3532 for ( const version of milestoneVersions ) {
@@ -48,12 +45,12 @@ export function inferLanguage(text: string): Language {
4845 const maxSatisfyingVersion = maxSatisfying ( supportedVersions , inferredRange ) ;
4946
5047 return maxSatisfyingVersion
51- ? new Language ( maxSatisfyingVersion )
52- : new Language ( supportedVersions [ supportedVersions . length - 1 ] ) ;
48+ ? Parser . create ( maxSatisfyingVersion )
49+ : Parser . create ( supportedVersions [ supportedVersions . length - 1 ] ) ;
5350}
5451
5552function tryToCollectPragmas ( text : string , version : string ) : string {
56- const language = new Language ( version ) ;
53+ const language = Parser . create ( version ) ;
5754 const parseOutput = language . parse ( NonterminalKind . SourceUnit , text ) ;
5855 const query = Query . parse (
5956 '[VersionPragma @versionRanges [VersionExpressionSets]]'
@@ -64,7 +61,7 @@ function tryToCollectPragmas(text: string, version: string): string {
6461 let match ;
6562 while ( ( match = matches . next ( ) ) ) {
6663 const versionRange = new SlangVersionExpressionSets (
67- match . captures . versionRanges [ 0 ] . node ( ) as NonterminalNode
64+ match . captures . versionRanges [ 0 ] . node . asNonterminalNode ( ) !
6865 ) ;
6966 ranges . push (
7067 // Replace all comments that could be in the expression with whitespace
@@ -78,7 +75,7 @@ function tryToCollectPragmas(text: string, version: string): string {
7875 // Check if we found pragmas.
7976 if ( ranges . length === 0 ) {
8077 // If we didn't find pragmas but succeeded parsing the source we keep it.
81- if ( parseOutput . isValid ) {
78+ if ( parseOutput . isValid ( ) ) {
8279 return version ;
8380 }
8481 // Otherwise we throw.
0 commit comments