@gobstones/gobstones-parser
Version:
Gobstones parser
225 lines • 6.47 kB
TypeScript
import { ASTMain } from './ast';
import { SymbolTable } from './symtable';
import { SourceReader } from './reader';
export declare class Linter {
private _symtable;
private _enabledLinterChecks;
constructor(symtable: SymbolTable);
lint(ast: ASTMain): SymbolTable;
_ensureLintCheckExists(linterCheckId: string): void;
enableCheck(linterCheckId: string, enabled: boolean): void;
_lintCheck(startPos: SourceReader, endPos: SourceReader, reason: string, args: any[]): void;
_lintMain(ast: ASTMain): void;
_addDefinitionToSymbolTable(definition: any): void;
/** Definitions **/
_lintDefinition(definition: {
tag: symbol;
}): void;
_lintDefProgram(definition: {
tag?: symbol;
body?: any;
}): void;
_lintDefInteractiveProgram(definition: {
tag?: symbol;
branches?: any;
}): void;
_lintDefProcedure(definition: {
tag?: symbol;
body?: any;
startPos?: any;
endPos?: any;
name?: any;
parameters?: any;
}): void;
_lintDefFunction(definition: {
tag?: symbol;
body?: any;
startPos?: any;
endPos?: any;
name?: any;
parameters?: any;
}): void;
_lintDefType(): void;
/** Statements **/
_lintStatement(statement: {
tag: symbol;
}): void;
_lintStmtBlock(block: {
tag?: symbol;
statements?: any;
}, allowReturn: boolean): void;
_lintStmtReturn(statement: {
tag?: symbol;
result?: any;
}): void;
_lintStmtIf(statement: {
tag?: symbol;
condition?: any;
thenBlock?: any;
elseBlock?: any;
}): void;
_lintStmtRepeat(statement: {
tag?: symbol;
times?: any;
body?: any;
}): void;
_lintStmtForeach(statement: {
tag?: symbol;
pattern?: any;
range?: any;
body?: any;
}): void;
_lintStmtForeachPattern(pattern: {
tag?: any;
startPos: any;
endPos: any;
constructorName: any;
boundVariables: any;
}): void;
_lintStmtWhile(statement: {
tag?: symbol;
condition?: any;
body?: any;
}): void;
_lintStmtSwitch(statement: {
tag?: symbol;
subject?: any;
branches?: any;
}): void;
_lintSwitchBranches(branches: any[], isInteractiveProgram: boolean): void;
_lintBranches(branches: any[], isInteractiveProgram: boolean, isMatching: boolean): void;
_branchesCheckWildcardAndVariable(branches: any[]): void;
_branchesCheckNoRepeats(branches: any[]): void;
_branchesCheckCompatible(branches: any[]): void;
_branchesCheckTypeEvent(branches: any[]): void;
_branchesCheckTypeNotEvent(branches: any[]): void;
_lintBranchBody(branch: {
pattern: {
boundVariables: any;
};
body: {
tag: symbol;
};
}, isMatching: boolean): void;
_patternType(pattern: {
tag?: any;
startPos: any;
endPos: any;
constructorName: any;
boundVariables: any;
}): string;
_lintStmtAssignVariable(statement: {
tag?: symbol;
variable?: any;
value?: any;
}): void;
_lintStmtAssignTuple(statement: {
tag?: symbol;
variables?: any;
value?: any;
}): void;
_lintStmtProcedureCall(statement: {
tag?: symbol;
procedureName?: any;
startPos?: any;
endPos?: any;
args?: any;
}): void;
/** Patterns **/
_lintPattern(pattern: {
tag?: any;
startPos: any;
endPos: any;
constructorName: any;
boundVariables: any;
}): void;
_lintPatternWildcard(): void;
_lintPatternVariable(): void;
_lintPatternNumber(): void;
_lintPatternStructure(pattern: {
tag?: any;
startPos: any;
endPos: any;
constructorName: any;
boundVariables: any;
}): void;
_lintPatternTuple(): void;
_lintPatternTimeout(): void;
/** Expressions **/
_lintExpression(expression: any): void;
_lintExprVariable(): void;
_lintExprConstantNumber(): void;
_lintExprConstantString(): void;
_lintExprChoose(expression: {
condition: any;
trueExpr: any;
falseExpr: any;
}): void;
_lintExprMatching(expression: {
subject: any;
branches: any;
}): void;
_lintMatchingBranches(branches: any[]): void;
_lintExprList(expression: {
elements: any;
}): void;
_lintExprRange(expression: {
first: any;
second: any;
last: any;
}): void;
_lintExprTuple(expression: {
elements: any;
}): void;
_lintExprStructure(expression: {
tag?: symbol;
constructorName?: any;
startPos: any;
endPos: any;
fieldBindings?: any;
original?: any;
fieldNames?: (() => any) | (() => any) | (() => any);
}): void;
_lintExprStructureUpdate(expression: {
tag?: symbol;
constructorName?: any;
startPos: any;
endPos: any;
fieldBindings?: any;
original?: any;
fieldNames?: (() => any) | (() => any) | (() => any);
}): void;
_lintExprStructureOrUpdate(expression: any, original: {
tag: symbol;
}): void;
_checkStructureNoRepeatedFields(constructorName: string, expression: {
fieldNames: () => any;
startPos: SourceReader;
endPos: SourceReader;
}): void;
_checkStructureBindingsCorrect(constructorName: string, expression: {
fieldNames: () => any;
startPos: SourceReader;
endPos: SourceReader;
}): void;
_checkStructureBindingsComplete(constructorName: string, expression: {
fieldNames: () => any;
startPos: SourceReader;
endPos: SourceReader;
}): void;
_checkStructureTypeNotEvent(constructorName: string, expression: {
startPos: SourceReader;
endPos: SourceReader;
}): void;
_lintExprFunctionCall(expression: {
functionName: {
value: any;
};
startPos: SourceReader;
endPos: SourceReader;
args: string | any[];
}): void;
_disableRecursion(ast: ASTMain): void;
_failExpectedConstructorButGot(startPos: SourceReader, endPos: SourceReader, name: string): void;
}
//# sourceMappingURL=linter.d.ts.map