onelang
Version:
OneLang transpiler framework core
62 lines (61 loc) • 2.83 kB
TypeScript
import { OneAst as one } from "../Ast";
import { SchemaContext } from "../SchemaContext";
import { AstTransformer } from "../AstTransformer";
export declare enum ReferenceType {
Class = 0,
Method = 1,
MethodVariable = 2,
ClassVariable = 3
}
export declare class Reference {
type: ReferenceType;
className: string;
methodName: string;
variableName: string;
}
export declare class GenericsMapping {
map: {
[genericName: string]: one.Type;
};
constructor(map: {
[genericName: string]: one.Type;
});
static log(data: string): void;
static create(cls: one.Interface, realClassType: one.Type): GenericsMapping;
replace(type: one.Type): one.Type;
}
export declare class InferTypesTransform extends AstTransformer<void> {
schemaCtx: SchemaContext;
methodReturnTypes: one.Type[];
constructor(schemaCtx: SchemaContext);
protected visitType(type: one.Type): void;
protected visitIdentifier(id: one.Identifier): void;
protected visitTemplateString(expr: one.TemplateString): void;
protected syncTypes(type1: one.Type, type2: one.Type): one.Type;
protected visitVariableDeclaration(stmt: one.VariableDeclaration): void;
protected visitCastExpression(expr: one.CastExpression): void;
protected visitForeachStatement(stmt: one.ForeachStatement): void;
protected visitBinaryExpression(expr: one.BinaryExpression): void;
protected visitConditionalExpression(expr: one.ConditionalExpression): void;
protected visitReturnStatement(stmt: one.ReturnStatement): void;
protected visitUnaryExpression(expr: one.UnaryExpression): void;
protected visitElementAccessExpression(expr: one.ElementAccessExpression): void;
protected visitCallExpression(expr: one.CallExpression): void;
protected visitNewExpression(expr: one.NewExpression): void;
protected visitLiteral(expr: one.Literal): void;
protected visitParenthesizedExpression(expr: one.ParenthesizedExpression): void;
protected visitPropertyAccessExpression(expr: one.PropertyAccessExpression): void;
protected visitArrayLiteral(expr: one.ArrayLiteral): void;
protected visitMapLiteral(expr: one.MapLiteral): void;
protected visitExpression(expression: one.Expression): void;
protected visitClassReference(expr: one.ClassReference): void;
protected visitEnumReference(expr: one.EnumReference): void;
protected visitThisReference(expr: one.ThisReference): void;
protected visitVariableRef(expr: one.VariableRef): void;
protected visitMethodReference(expr: one.MethodReference): void;
protected visitMethod(method: one.Method): void;
protected visitClass(cls: one.Class): void;
protected visitInterface(intf: one.Interface): void;
protected visitEnum(enum_: one.Enum): void;
transform(): void;
}