fix orderby in combination with parentheses / increased expression level

This commit is contained in:
misch334 2026-02-10 17:38:40 +01:00
parent 5da9963f31
commit e29b238161
2 changed files with 28 additions and 2 deletions

View File

@ -234,6 +234,32 @@ describe("Parser", () => {
expect(rootExp.limit).toBe(2);
expect(rootExp.subExpression).toBeInstanceOf(AndExp);
});
describe("orderBy with level > 0", () => {
it("and grouping parentheses should parse without error", () => {
const searchContext = new SearchContext();
const rootExp = parseInternal(
{
fulltextTokens: [],
expressionTokens: tokens(["#foo", "and" , ["#bar", "or", "#baz", ], "orderby", "#priority", "desc"]),
searchContext
}
);
expect(searchContext.error).toBeNull();
});
it("and not() should parse without error", () => {
const searchContext = new SearchContext();
const rootExp = parseInternal(
{
fulltextTokens: [],
expressionTokens: tokens(["#foo", "and" , "not", [ "#bar", "=", "baz" ], "orderby", "#priority", "desc"]) ,
searchContext
}
);
expect(searchContext.error).toBeNull();
});
});
});
describe("Invalid expressions", () => {

View File

@ -361,7 +361,7 @@ function getExpression(tokens: TokenData[], searchContext: SearchContext, level
for (i = 0; i < tokens.length; i++) {
if (Array.isArray(tokens[i])) {
const expression = getExpression(tokens[i] as unknown as TokenData[], searchContext, level++);
const expression = getExpression(tokens[i] as unknown as TokenData[], searchContext, level + 1);
if (expression) {
expressions.push(expression);
}
@ -402,7 +402,7 @@ function getExpression(tokens: TokenData[], searchContext: SearchContext, level
}
const tokenArray = tokens[i] as unknown as TokenData[];
const expression = getExpression(tokenArray, searchContext, level++);
const expression = getExpression(tokenArray, searchContext, level + 1);
if (!expression) {
return;
}