UNPKG

@specs-feup/kadabra

Version:

A Java source-to-source compiler written in Typescript

50 lines 1.81 kB
import BaseDetector from "./BaseDetector.js"; import { Loop, Var, Call, Joinpoint, Class, Method, Declaration } from "../../../../Joinpoints.js"; export interface MethodInfo { method: Method; missingInfo: boolean; writes: Var[]; reads: Var[]; } export default class ExcessiveMethodCallsDetector extends BaseDetector { currentPackage: string | undefined; loopGlobalReads: Declaration[]; loopGlobalWrites: Declaration[]; loopLocalWrites: Declaration[]; methodsInfo: MethodInfo[]; variantCalls: string[]; missingCallDecl: boolean; results: Call[]; constructor(debugEnabled?: boolean); static containsJP(arr: Joinpoint[], jp: Joinpoint): boolean; static tryGetMethodInfo(arr: MethodInfo[], jp: Method): MethodInfo | null; static addIfNew(arr: Joinpoint[], jp: Joinpoint): void; analyseClass(jpClass: Class): void; analyseLoop(jpLoop: Loop): void; print(): void; resetDetector(): void; printDebugInfo(msg: string): void; save(): string[]; collectLoopInfo(jp: Joinpoint): void; analyseVar(jpVar: Var): void; analyseCall(jpCall: Call): void; analyseMethodRecursive(jpMethod: Method): { writes: Var[]; reads: Var[]; }; getFieldUsageInsideJP(jp: Joinpoint): { missing: Var[]; write: Var[]; read: Var[]; }; analyseLoopCall(jp: Joinpoint): boolean; isCallInvariant(jpCall: Call): boolean; compareFieldUsage(arr1: Joinpoint[], arr2: Joinpoint[]): boolean; callUsesVariantArgument(jpCall: Call): { isVariant: boolean; cause: string; }; callInvokesVariantMethod(jp: Joinpoint): boolean; getFirstDescendentsOfTypes(jp: Joinpoint, types: string[]): Joinpoint[]; } //# sourceMappingURL=ExcessiveMethodCallsDetector.d.ts.map