jsdoc-type-pratt-parser
Version:
[](https://www.npmjs.com/package/jsdoc-type-pratt-parser) []
30 lines (28 loc) • 716 B
text/typescript
import { composeParslet } from './Parslet.js'
import { Precedence } from '../Precedence.js'
import { assertRootResult } from '../assertTypes.js'
export const notNullableParslet = composeParslet({
name: 'notNullableParslet',
accept: type => type === '!',
precedence: Precedence.NULLABLE,
parsePrefix: parser => {
parser.consume('!')
return {
type: 'JsdocTypeNotNullable',
element: parser.parseType(Precedence.NULLABLE),
meta: {
position: 'prefix'
}
}
},
parseInfix: (parser, left) => {
parser.consume('!')
return {
type: 'JsdocTypeNotNullable',
element: assertRootResult(left),
meta: {
position: 'suffix'
}
}
}
})