build: open ts strict check (#279)

* feat: no check lib dir

* feat: open strict check to src dir

* test: update test tsconfig.json

* feat: remove any type

* feat: do not export AbstractParseTreeVisitor

* feat: export StmtContextType as enum

* build: improve antlr4 script
This commit is contained in:
Hayden
2024-03-27 19:04:16 +08:00
committed by GitHub
parent bb0fad1dbe
commit c6615aecac
77 changed files with 439 additions and 349 deletions

View File

@ -1,6 +1,5 @@
import { ImpalaSQL } from 'src/parser/impala';
import { ImpalaSqlParserListener } from 'src/lib/impala/ImpalaSqlParserListener';
import { ParseTreeListener } from 'antlr4ng';
describe('impala SQL Listener Tests', () => {
const expectTableName = 'user1';
@ -11,19 +10,14 @@ describe('impala SQL Listener Tests', () => {
test('Listener enterTableNamePath', async () => {
let result = '';
class MyListener implements ImpalaSqlParserListener {
class MyListener extends ImpalaSqlParserListener {
enterTableNamePath = (ctx): void => {
result = ctx.getText().toLowerCase();
};
visitTerminal() {}
visitErrorNode() {}
enterEveryRule() {}
exitEveryRule() {}
}
const listenTableName = new MyListener();
const listener = new MyListener();
await impala.listen(listenTableName as ParseTreeListener, parseTree);
impala.listen(listener, parseTree);
expect(result).toBe(expectTableName);
});

View File

@ -1,5 +1,4 @@
import { ImpalaSQL } from 'src/parser/impala';
import { AbstractParseTreeVisitor } from 'antlr4ng';
import { ImpalaSqlParserVisitor } from 'src/lib/impala/ImpalaSqlParserVisitor';
describe('impala SQL Visitor Tests', () => {
@ -12,20 +11,22 @@ describe('impala SQL Visitor Tests', () => {
});
test('Visitor visitTableNamePath', () => {
let result = '';
class MyVisitor
extends AbstractParseTreeVisitor<any>
implements ImpalaSqlParserVisitor<any>
{
protected defaultResult() {
return result;
class MyVisitor extends ImpalaSqlParserVisitor<string> {
defaultResult(): string {
return '';
}
visitTableNamePath = (ctx): void => {
result = ctx.getText().toLowerCase();
aggregateResult(aggregate: string, nextResult: string): string {
return aggregate + nextResult;
}
visitProgram = (ctx) => {
return this.visitChildren(ctx);
};
visitTableNamePath = (ctx) => {
return ctx.getText().toLowerCase();
};
}
const visitor: any = new MyVisitor();
visitor.visit(parseTree);
const visitor = new MyVisitor();
const result = visitor.visit(parseTree);
expect(result).toBe(expectTableName);
});