@abaplint/transpiler
Version:
62 lines (61 loc) • 3.98 kB
TypeScript
import * as abaplint from "@abaplint/core";
import { Chunk } from "./chunk";
import { ITranspilerOptions } from "./types";
export declare class Traversal {
private readonly spaghetti;
private readonly file;
private readonly obj;
readonly reg: abaplint.IRegistry;
readonly options: ITranspilerOptions | undefined;
constructor(spaghetti: abaplint.ISpaghettiScope, file: abaplint.ABAPFile, obj: abaplint.ABAPObject, reg: abaplint.IRegistry, options?: ITranspilerOptions);
static escapeNamespace(name: string | undefined): string | undefined;
static prefixVariable(name: string | undefined): string;
getCurrentObject(): abaplint.ABAPObject;
traverse(node: abaplint.INode | undefined): Chunk;
getFilename(): string;
getFile(): abaplint.ABAPFile;
getSpaghetti(): abaplint.ISpaghettiScope;
/** finds a statement in the _current_ file given a position */
findStatementInFile(pos: abaplint.Position): abaplint.Nodes.StatementNode | undefined;
private scopeCache;
findCurrentScopeByToken(token: abaplint.Token): abaplint.ISpaghettiScopeNode | undefined;
private fuctionGroupWorkaround;
getInterfaceDefinition(token: abaplint.Token): abaplint.IInterfaceDefinition | undefined;
getClassDefinition(token: abaplint.Token): abaplint.IClassDefinition | undefined;
private isClassAttribute;
prefixAndName(t: abaplint.Token, filename?: string): string;
private isStaticClassAttribute;
buildMethods(def: abaplint.IClassDefinition | abaplint.IInterfaceDefinition | undefined, _scope: abaplint.ISpaghettiScopeNode | undefined): string[];
private mapVisibility;
buildAttributes(def: abaplint.IClassDefinition | abaplint.IInterfaceDefinition | undefined, scope: abaplint.ISpaghettiScopeNode | undefined, prefix?: string): Set<string>;
isBuiltinMethod(token: abaplint.Token): boolean;
isSQLConversion(token: abaplint.Token): string | undefined;
findMethodReference(token: abaplint.Token, scope: abaplint.ISpaghettiScopeNode | undefined): undefined | {
def: abaplint.Types.MethodDefinition;
name: string;
};
private isBuiltinVariable;
isTypePool(token: abaplint.Token): string | undefined;
isInterfaceAttribute(token: abaplint.Token): string | undefined;
private findReadOrWriteReference;
private buildThisAttributes;
private buildFriendsAccess;
buildConstructorContents(scope: abaplint.ISpaghettiScopeNode | undefined, def: abaplint.IClassDefinition): string;
findInterfaceDefinition(name: string, scope: abaplint.ISpaghettiScopeNode | undefined): abaplint.IInterfaceDefinition | undefined;
findTable(name: string): abaplint.Objects.Table | undefined;
findClassDefinition(name: string | undefined, scope: abaplint.ISpaghettiScopeNode | undefined): abaplint.IClassDefinition | undefined;
private dataFromInterfaces;
private aliasesFromInterfaces;
determineType(node: abaplint.Nodes.ExpressionNode | abaplint.Nodes.StatementNode, scope: abaplint.ISpaghettiScopeNode | undefined): abaplint.AbstractType | undefined;
isInsideLoop(node: abaplint.Nodes.StatementNode): boolean;
isInsideDoOrWhile(node: abaplint.Nodes.StatementNode): boolean;
registerClassOrInterface(def: abaplint.IClassDefinition | abaplint.IInterfaceDefinition | undefined): string;
setValues(identifier: abaplint.TypedIdentifier, name: string): string;
static setValues(identifier: abaplint.TypedIdentifier, name: string): string;
buildInternalName(name: string, def: abaplint.IClassDefinition | abaplint.IInterfaceDefinition | undefined): string;
lookupClassOrInterface(name: string | undefined, token: abaplint.Token | undefined, directGlobal?: boolean): string;
buildPrefix(): string;
protected traverseStructure(node: abaplint.Nodes.StructureNode): Chunk;
protected traverseStatement(node: abaplint.Nodes.StatementNode): Chunk;
protected traverseExpression(node: abaplint.Nodes.ExpressionNode): Chunk;
}