fix: proper error message for filter syntax error, #610

This commit is contained in:
Harttle
2023-06-04 02:06:42 +08:00
committed by Jun Yang
parent 82ba54845f
commit 0480d3317d
2 changed files with 10 additions and 1 deletions
+5 -1
View File
@@ -57,7 +57,7 @@ export class Tokenizer {
readFilter (): FilterToken | null {
this.skipBlank()
if (this.end()) return null
assert(this.peek() === '|', () => `unexpected token at ${this.snapshot()}`)
assert(this.peek() === '|', () => `expected "|" before filter`)
this.p++
const begin = this.p
const name = this.readIdentifier()
@@ -72,6 +72,10 @@ export class Tokenizer {
this.skipBlank()
assert(this.end() || this.peek() === ',' || this.peek() === '|', () => `unexpected character ${this.snapshot()}`)
} while (this.peek() === ',')
} else if (this.peek() === '|' || this.end()) {
// do nothing
} else {
throw new Error('expected ":" after filter name')
}
return new FilterToken(name.getText(), args, this.input, begin, this.p, this.file)
}
+5
View File
@@ -426,4 +426,9 @@ describe('Issues', function () {
'2023-01-05T12:00:00+0000'
expect(html).toEqual(expected)
})
it('#610 should throw missing ":" after filter name', () => {
const engine = new Liquid()
const fn = () => engine.parseAndRenderSync("{%- assign module = '' | split '' -%}")
expect(fn).toThrow(/expected ":" after filter name/)
})
})