Completely removed lexical scope storage logic and data for generation scope calls wrappers

This commit is contained in:
sanex
2021-07-16 03:14:21 +03:00
parent a1dc2df04f
commit 88ea1a2789
10 changed files with 10 additions and 157 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
-1
View File
@@ -53,7 +53,6 @@ export enum ServiceIdentifiers {
ISourceCode = 'ISourceCode',
IScopeAnalyzer = 'IScopeAnalyzer',
IStringArrayIndexNode = 'IStringArrayIndexNode',
IStringArrayScopeCallsWrapperLexicalScopeDataStorage = 'IStringArrayScopeCallsWrapperLexicalScopeDataStorage',
IStringArrayScopeCallsWrappersDataStorage = 'IStringArrayScopeCallsWrappersDataStorage',
IStringArrayStorage = 'IStringArrayStorage',
IStringArrayStorageAnalyzer = 'IStringArrayStorageAnalyzer',
@@ -9,7 +9,6 @@ import { ILiteralNodesCacheStorage } from '../../../interfaces/storages/string-a
import { IOptions } from '../../../interfaces/options/IOptions';
import { IPropertyIdentifierNamesCacheStorage } from '../../../interfaces/storages/identifier-names-cache/IPropertyIdentifierNamesCacheStorage';
import { IRandomGenerator } from '../../../interfaces/utils/IRandomGenerator';
import { IStringArrayScopeCallsWrapperLexicalScopeDataStorage } from '../../../interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrapperLexicalScopeDataStorage';
import { IStringArrayScopeCallsWrappersDataStorage } from '../../../interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrappersDataStorage';
import { IStringArrayStorage } from '../../../interfaces/storages/string-array-transformers/IStringArrayStorage';
import { IVisitedLexicalScopeNodesStackStorage } from '../../../interfaces/storages/string-array-transformers/IVisitedLexicalScopeNodesStackStorage';
@@ -19,7 +18,6 @@ import { CustomCodeHelperGroupStorage } from '../../../storages/custom-code-help
import { GlobalIdentifierNamesCacheStorage } from '../../../storages/identifier-names-cache/GlobalIdentifierNamesCacheStorage';
import { LiteralNodesCacheStorage } from '../../../storages/string-array-transformers/LiteralNodesCacheStorage';
import { PropertyIdentifierNamesCacheStorage } from '../../../storages/identifier-names-cache/PropertyIdentifierNamesCacheStorage';
import { StringArrayScopeCallsWrapperLexicalScopeDataStorage } from '../../../storages/string-array-transformers/StringArrayScopeCallsWrapperLexicalScopeDataStorage';
import { StringArrayScopeCallsWrappersDataStorage } from '../../../storages/string-array-transformers/StringArrayScopeCallsWrappersDataStorage';
import { StringArrayStorage } from '../../../storages/string-array-transformers/StringArrayStorage';
import { VisitedLexicalScopeNodesStackStorage } from '../../../storages/string-array-transformers/VisitedLexicalScopeNodesStackStorage';
@@ -46,10 +44,6 @@ export const storagesModule: interfaces.ContainerModule = new ContainerModule((b
.to(StringArrayStorage)
.inSingletonScope();
bind<IStringArrayScopeCallsWrapperLexicalScopeDataStorage>(ServiceIdentifiers.IStringArrayScopeCallsWrapperLexicalScopeDataStorage)
.to(StringArrayScopeCallsWrapperLexicalScopeDataStorage)
.inSingletonScope();
bind<IStringArrayScopeCallsWrappersDataStorage>(ServiceIdentifiers.IStringArrayScopeCallsWrappersDataStorage)
.to(StringArrayScopeCallsWrappersDataStorage)
.inSingletonScope();
@@ -1,18 +0,0 @@
import { TNodeWithLexicalScopeStatements } from '../../../types/node/TNodeWithLexicalScopeStatements';
export interface IStringArrayScopeCallsWrapperLexicalScopeData {
/**
* @type {TNodeWithLexicalScopeStatements | null}
*/
parentLexicalScopeBodyNode: TNodeWithLexicalScopeStatements | null;
/**
* @type {number}
*/
resultShiftedIndex: number;
/**
* @type {number}
*/
scopeShiftedIndex: number;
}
@@ -1,10 +0,0 @@
import { TNodeWithLexicalScopeStatements } from '../../../types/node/TNodeWithLexicalScopeStatements';
import { IMapStorage } from '../IMapStorage';
import { IStringArrayScopeCallsWrapperLexicalScopeData } from '../../node-transformers/string-array-transformers/IStringArrayScopeCallsWrapperLexicalScopeData';
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface IStringArrayScopeCallsWrapperLexicalScopeDataStorage extends IMapStorage<
TNodeWithLexicalScopeStatements,
IStringArrayScopeCallsWrapperLexicalScopeData
> {}
@@ -13,8 +13,6 @@ import { ICustomNode } from '../../interfaces/custom-nodes/ICustomNode';
import { IOptions } from '../../interfaces/options/IOptions';
import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator';
import { IStringArrayScopeCallsWrapperData } from '../../interfaces/node-transformers/string-array-transformers/IStringArrayScopeCallsWrapperData';
import { IStringArrayScopeCallsWrapperLexicalScopeData } from '../../interfaces/node-transformers/string-array-transformers/IStringArrayScopeCallsWrapperLexicalScopeData';
import { IStringArrayScopeCallsWrapperLexicalScopeDataStorage } from '../../interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrapperLexicalScopeDataStorage';
import { IStringArrayScopeCallsWrappersData } from '../../interfaces/node-transformers/string-array-transformers/IStringArrayScopeCallsWrappersData';
import { IStringArrayScopeCallsWrappersDataStorage } from '../../interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrappersDataStorage';
import { IStringArrayStorage } from '../../interfaces/storages/string-array-transformers/IStringArrayStorage';
@@ -46,11 +44,6 @@ export class StringArrayScopeCallsWrapperTransformer extends AbstractNodeTransfo
*/
private readonly stringArrayStorage: IStringArrayStorage;
/**
* @type {IStringArrayScopeCallsWrapperLexicalScopeDataStorage}
*/
private readonly stringArrayScopeCallsWrapperLexicalScopeDataStorage: IStringArrayScopeCallsWrapperLexicalScopeDataStorage;
/**
* @type {IStringArrayScopeCallsWrappersDataStorage}
*/
@@ -72,7 +65,6 @@ export class StringArrayScopeCallsWrapperTransformer extends AbstractNodeTransfo
* @param {IVisitedLexicalScopeNodesStackStorage} visitedLexicalScopeNodesStackStorage
* @param {IStringArrayStorage} stringArrayStorage
* @param {IStringArrayScopeCallsWrappersDataStorage} stringArrayScopeCallsWrappersDataStorage
* @param {IStringArrayScopeCallsWrapperLexicalScopeDataStorage} stringArrayScopeCallsWrapperLexicalScopeDataStorage
* @param {TStringArrayCustomNodeFactory} stringArrayTransformerCustomNodeFactory
*/
public constructor (
@@ -81,7 +73,6 @@ export class StringArrayScopeCallsWrapperTransformer extends AbstractNodeTransfo
@inject(ServiceIdentifiers.IVisitedLexicalScopeNodesStackStorage) visitedLexicalScopeNodesStackStorage: IVisitedLexicalScopeNodesStackStorage,
@inject(ServiceIdentifiers.IStringArrayStorage) stringArrayStorage: IStringArrayStorage,
@inject(ServiceIdentifiers.IStringArrayScopeCallsWrappersDataStorage) stringArrayScopeCallsWrappersDataStorage: IStringArrayScopeCallsWrappersDataStorage,
@inject(ServiceIdentifiers.IStringArrayScopeCallsWrapperLexicalScopeDataStorage) stringArrayScopeCallsWrapperLexicalScopeDataStorage: IStringArrayScopeCallsWrapperLexicalScopeDataStorage,
@inject(ServiceIdentifiers.Factory__IStringArrayCustomNode)
stringArrayTransformerCustomNodeFactory: TStringArrayCustomNodeFactory
) {
@@ -90,7 +81,6 @@ export class StringArrayScopeCallsWrapperTransformer extends AbstractNodeTransfo
this.visitedLexicalScopeNodesStackStorage = visitedLexicalScopeNodesStackStorage;
this.stringArrayStorage = stringArrayStorage;
this.stringArrayScopeCallsWrappersDataStorage = stringArrayScopeCallsWrappersDataStorage;
this.stringArrayScopeCallsWrapperLexicalScopeDataStorage = stringArrayScopeCallsWrapperLexicalScopeDataStorage;
this.stringArrayTransformerCustomNodeFactory = stringArrayTransformerCustomNodeFactory;
}
@@ -134,10 +124,8 @@ export class StringArrayScopeCallsWrapperTransformer extends AbstractNodeTransfo
): TNodeWithLexicalScopeStatements {
const stringArrayScopeCallsWrappersDataByEncoding: TStringArrayScopeCallsWrappersDataByEncoding | null =
this.stringArrayScopeCallsWrappersDataStorage.get(lexicalScopeBodyNode) ?? null;
const stringArrayScopeCallsWrapperLexicalScopeData: IStringArrayScopeCallsWrapperLexicalScopeData | null =
this.stringArrayScopeCallsWrapperLexicalScopeDataStorage.get(lexicalScopeBodyNode) ?? null;
if (!stringArrayScopeCallsWrappersDataByEncoding || !stringArrayScopeCallsWrapperLexicalScopeData) {
if (!stringArrayScopeCallsWrappersDataByEncoding) {
return lexicalScopeBodyNode;
}
@@ -159,10 +147,8 @@ export class StringArrayScopeCallsWrapperTransformer extends AbstractNodeTransfo
*/
for (let i = scopeCallsWrappersDataLength - 1; i >= 0; i--) {
const stringArrayScopeCallsWrapperData = scopeCallsWrappersData[i];
const upperStringArrayCallsWrapperData = this.getUpperStringArrayCallsWrapperData(
stringArrayScopeCallsWrappersData,
stringArrayScopeCallsWrapperLexicalScopeData,
);
const upperStringArrayCallsWrapperData =
this.getUpperStringArrayCallsWrapperData(stringArrayScopeCallsWrappersData);
this.getAndAppendStringArrayScopeCallsWrapperNode(
lexicalScopeBodyNode,
@@ -177,12 +163,10 @@ export class StringArrayScopeCallsWrapperTransformer extends AbstractNodeTransfo
/**
* @param {IStringArrayScopeCallsWrappersData} stringArrayScopeCallsWrappersData
* @param {IStringArrayScopeCallsWrapperLexicalScopeData} stringArrayScopeCallsWrapperLexicalScopeData
* @returns {IStringArrayScopeCallsWrapperData}
*/
private getRootStringArrayCallsWrapperData (
stringArrayScopeCallsWrappersData: IStringArrayScopeCallsWrappersData,
stringArrayScopeCallsWrapperLexicalScopeData: IStringArrayScopeCallsWrapperLexicalScopeData
): IStringArrayScopeCallsWrapperData {
const {encoding} = stringArrayScopeCallsWrappersData;
@@ -195,19 +179,15 @@ export class StringArrayScopeCallsWrapperTransformer extends AbstractNodeTransfo
/**
* @param {IStringArrayScopeCallsWrappersData} stringArrayScopeCallsWrappersData
* @param {IStringArrayScopeCallsWrapperLexicalScopeData} stringArrayScopeCallsWrapperLexicalScopeData
* @returns {IStringArrayScopeCallsWrapperData}
*/
private getUpperStringArrayCallsWrapperData (
stringArrayScopeCallsWrappersData: IStringArrayScopeCallsWrappersData,
stringArrayScopeCallsWrapperLexicalScopeData: IStringArrayScopeCallsWrapperLexicalScopeData
): IStringArrayScopeCallsWrapperData {
const {encoding} = stringArrayScopeCallsWrappersData;
const rootStringArrayCallsWrapperData = this.getRootStringArrayCallsWrapperData(
stringArrayScopeCallsWrappersData,
stringArrayScopeCallsWrapperLexicalScopeData
);
const rootStringArrayCallsWrapperData =
this.getRootStringArrayCallsWrapperData(stringArrayScopeCallsWrappersData);
if (!this.options.stringArrayWrappersChainedCalls) {
return rootStringArrayCallsWrapperData;
@@ -16,8 +16,6 @@ import { ILiteralNodesCacheStorage } from '../../interfaces/storages/string-arra
import { IOptions } from '../../interfaces/options/IOptions';
import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator';
import { IStringArrayScopeCallsWrapperData } from '../../interfaces/node-transformers/string-array-transformers/IStringArrayScopeCallsWrapperData';
import { IStringArrayScopeCallsWrapperLexicalScopeData } from '../../interfaces/node-transformers/string-array-transformers/IStringArrayScopeCallsWrapperLexicalScopeData';
import { IStringArrayScopeCallsWrapperLexicalScopeDataStorage } from '../../interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrapperLexicalScopeDataStorage';
import { IStringArrayScopeCallsWrappersDataStorage } from '../../interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrappersDataStorage';
import { IStringArrayScopeCallsWrapperParameterIndexesData } from '../../interfaces/node-transformers/string-array-transformers/IStringArrayScopeCallsWrapperParameterIndexesData';
import { IStringArrayStorage } from '../../interfaces/storages/string-array-transformers/IStringArrayStorage';
@@ -57,7 +55,6 @@ export class StringArrayTransformer extends AbstractNodeTransformer {
NodeTransformer.StringArrayRotateFunctionTransformer
];
/**
* @type {IIdentifierNamesGenerator}
*/
@@ -78,11 +75,6 @@ export class StringArrayTransformer extends AbstractNodeTransformer {
*/
private readonly stringArrayStorageAnalyzer: IStringArrayStorageAnalyzer;
/**
* @type {IStringArrayScopeCallsWrapperLexicalScopeDataStorage}
*/
private readonly stringArrayScopeCallsWrapperLexicalScopeDataStorage: IStringArrayScopeCallsWrapperLexicalScopeDataStorage;
/**
* @type {IStringArrayScopeCallsWrappersDataStorage}
*/
@@ -105,7 +97,6 @@ export class StringArrayTransformer extends AbstractNodeTransformer {
* @param {IVisitedLexicalScopeNodesStackStorage} visitedLexicalScopeNodesStackStorage
* @param {IStringArrayStorage} stringArrayStorage
* @param {IStringArrayScopeCallsWrappersDataStorage} stringArrayScopeCallsWrappersDataStorage
* @param {IStringArrayScopeCallsWrapperLexicalScopeDataStorage} stringArrayScopeCallsWrapperLexicalScopeDataStorage
* @param {IStringArrayStorageAnalyzer} stringArrayStorageAnalyzer
* @param {TIdentifierNamesGeneratorFactory} identifierNamesGeneratorFactory
* @param {TStringArrayCustomNodeFactory} stringArrayTransformerCustomNodeFactory
@@ -118,8 +109,6 @@ export class StringArrayTransformer extends AbstractNodeTransformer {
@inject(ServiceIdentifiers.IStringArrayStorage) stringArrayStorage: IStringArrayStorage,
@inject(ServiceIdentifiers.IStringArrayScopeCallsWrappersDataStorage)
stringArrayScopeCallsWrappersDataStorage: IStringArrayScopeCallsWrappersDataStorage,
@inject(ServiceIdentifiers.IStringArrayScopeCallsWrapperLexicalScopeDataStorage)
stringArrayScopeCallsWrapperLexicalScopeDataStorage: IStringArrayScopeCallsWrapperLexicalScopeDataStorage,
@inject(ServiceIdentifiers.IStringArrayStorageAnalyzer) stringArrayStorageAnalyzer: IStringArrayStorageAnalyzer,
@inject(ServiceIdentifiers.Factory__IIdentifierNamesGenerator)
identifierNamesGeneratorFactory: TIdentifierNamesGeneratorFactory,
@@ -132,7 +121,6 @@ export class StringArrayTransformer extends AbstractNodeTransformer {
this.visitedLexicalScopeNodesStackStorage = visitedLexicalScopeNodesStackStorage;
this.stringArrayStorage = stringArrayStorage;
this.stringArrayScopeCallsWrappersDataStorage = stringArrayScopeCallsWrappersDataStorage;
this.stringArrayScopeCallsWrapperLexicalScopeDataStorage = stringArrayScopeCallsWrapperLexicalScopeDataStorage;
this.stringArrayStorageAnalyzer = stringArrayStorageAnalyzer;
this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);
this.stringArrayTransformerCustomNodeFactory = stringArrayTransformerCustomNodeFactory;
@@ -282,23 +270,15 @@ export class StringArrayTransformer extends AbstractNodeTransformer {
const {encoding} = stringArrayStorageItemData;
const currentLexicalScopeBodyNode: TNodeWithLexicalScopeStatements | null =
this.visitedLexicalScopeNodesStackStorage.getLastElement() ?? null;
const parentLexicalScopeBodyNode: TNodeWithLexicalScopeStatements | null =
this.visitedLexicalScopeNodesStackStorage.getPenultimateElement() ?? null;
if (!currentLexicalScopeBodyNode) {
throw new Error('Cannot find current lexical scope body node');
}
const stringArrayScopeCallsWrapperLexicalScopeData: IStringArrayScopeCallsWrapperLexicalScopeData =
this.getAndUpdateStringArrayScopeCallsWrapperLexicalScopeData(
currentLexicalScopeBodyNode,
parentLexicalScopeBodyNode
);
const stringArrayScopeCallsWrappersDataByEncoding: TStringArrayScopeCallsWrappersDataByEncoding =
this.getAndUpdateStringArrayScopeCallsWrappersDataByEncoding(
currentLexicalScopeBodyNode,
stringArrayStorageItemData,
stringArrayScopeCallsWrapperLexicalScopeData
stringArrayStorageItemData
);
const stringArrayScopeCallsWrappersData: IStringArrayScopeCallsWrapperData[] =
@@ -309,57 +289,14 @@ export class StringArrayTransformer extends AbstractNodeTransformer {
.pickone(stringArrayScopeCallsWrappersData);
}
/**
* @param {TNodeWithLexicalScopeStatements} currentLexicalScopeBodyNode
* @param {TNodeWithLexicalScopeStatements | null} parentLexicalScopeBodyNode
* @returns {IStringArrayScopeCallsWrapperLexicalScopeData}
* @private
*/
private getAndUpdateStringArrayScopeCallsWrapperLexicalScopeData (
currentLexicalScopeBodyNode: TNodeWithLexicalScopeStatements,
parentLexicalScopeBodyNode: TNodeWithLexicalScopeStatements | null
): IStringArrayScopeCallsWrapperLexicalScopeData {
const storedLexicalScopeData: IStringArrayScopeCallsWrapperLexicalScopeData | null =
this.stringArrayScopeCallsWrapperLexicalScopeDataStorage.get(currentLexicalScopeBodyNode)
?? null;
if (storedLexicalScopeData) {
return storedLexicalScopeData;
}
const parentLexicalScopeData: IStringArrayScopeCallsWrapperLexicalScopeData | null = parentLexicalScopeBodyNode
? this.stringArrayScopeCallsWrapperLexicalScopeDataStorage.get(parentLexicalScopeBodyNode) ?? null
: null;
const scopeShiftedIndex: number = this.getStringArrayCallsWrapperShiftedIndex();
const resultShiftedIndex: number = parentLexicalScopeData
? parentLexicalScopeData.resultShiftedIndex + scopeShiftedIndex
: scopeShiftedIndex;
const lexicalScopeData: IStringArrayScopeCallsWrapperLexicalScopeData = {
parentLexicalScopeBodyNode,
resultShiftedIndex,
scopeShiftedIndex
};
this.stringArrayScopeCallsWrapperLexicalScopeDataStorage.set(
currentLexicalScopeBodyNode,
lexicalScopeData
);
return lexicalScopeData;
}
/**
* @param {TNodeWithLexicalScopeStatements} currentLexicalScopeBodyNode
* @param {IStringArrayStorageItemData} stringArrayStorageItemData
* @param {IStringArrayScopeCallsWrapperLexicalScopeData} stringArrayScopeCallsWrapperLexicalScopeData
* @returns {TStringArrayScopeCallsWrappersDataByEncoding}
*/
private getAndUpdateStringArrayScopeCallsWrappersDataByEncoding (
currentLexicalScopeBodyNode: TNodeWithLexicalScopeStatements,
stringArrayStorageItemData: IStringArrayStorageItemData,
stringArrayScopeCallsWrapperLexicalScopeData: IStringArrayScopeCallsWrapperLexicalScopeData
): TStringArrayScopeCallsWrappersDataByEncoding {
const {encoding} = stringArrayStorageItemData;
const stringArrayScopeCallsWrappersDataByEncoding: TStringArrayScopeCallsWrappersDataByEncoding =
@@ -390,8 +327,7 @@ export class StringArrayTransformer extends AbstractNodeTransformer {
...stringArrayScopeCallsWrappersData,
{
name: nextScopeCallsWrapperName,
index: stringArrayScopeCallsWrapperLexicalScopeData.resultShiftedIndex
+ nextScopeCallsWrapperShiftedIndex,
index: nextScopeCallsWrapperShiftedIndex,
parameterIndexesData: nextScopeCallsWrapperParameterIndexesData
}
]
@@ -1,28 +0,0 @@
import { inject, injectable } from 'inversify';
import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
import { TNodeWithLexicalScopeStatements } from '../../types/node/TNodeWithLexicalScopeStatements';
import { IOptions } from '../../interfaces/options/IOptions';
import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator';
import { IStringArrayScopeCallsWrapperLexicalScopeData } from '../../interfaces/node-transformers/string-array-transformers/IStringArrayScopeCallsWrapperLexicalScopeData';
import { IStringArrayScopeCallsWrapperLexicalScopeDataStorage } from '../../interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrapperLexicalScopeDataStorage';
import { MapStorage } from '../MapStorage';
@injectable()
export class StringArrayScopeCallsWrapperLexicalScopeDataStorage extends MapStorage <
TNodeWithLexicalScopeStatements,
IStringArrayScopeCallsWrapperLexicalScopeData
> implements IStringArrayScopeCallsWrapperLexicalScopeDataStorage {
/**
* @param {IRandomGenerator} randomGenerator
* @param {IOptions} options
*/
public constructor (
@inject(ServiceIdentifiers.IRandomGenerator) randomGenerator: IRandomGenerator,
@inject(ServiceIdentifiers.IOptions) options: IOptions
) {
super(randomGenerator, options);
}
}