From 4c1463469b3603ef5e432a3552b19be5b7f03507 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Sun, 22 Mar 2026 13:55:04 +0700 Subject: [PATCH] Fix HexadecimalIdentifierNamesGenerator.ts --- .../HexadecimalIdentifierNamesGenerator.ts | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator.ts b/src/generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator.ts index 807f2721..97020c72 100644 --- a/src/generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator.ts +++ b/src/generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator.ts @@ -92,23 +92,26 @@ export class HexadecimalIdentifierNamesGenerator extends AbstractIdentifierNames */ private generateNextName( nameLength: number | undefined, - validationFn: (name: string) => boolean, - attempts: number = 0 + validationFn: (name: string) => boolean ): string { - this.checkGenerationAttempts(attempts); - const rangeMinInteger: number = 10000; const rangeMaxInteger: number = 99_999_999; - const randomInteger: number = this.randomGenerator.getRandomInteger(rangeMinInteger, rangeMaxInteger); - const hexadecimalNumber: string = NumberUtils.toHex(randomInteger); const prefixLength: number = Utils.hexadecimalPrefix.length; const baseNameLength: number = (nameLength ?? HexadecimalIdentifierNamesGenerator.baseIdentifierNameLength) + prefixLength; - const baseIdentifierName: string = hexadecimalNumber.slice(0, baseNameLength); - const identifierName: string = `_${baseIdentifierName}`; - if (!validationFn(identifierName)) { - return this.generateNextName(nameLength, validationFn, attempts + 1); + let identifierName: string = ''; + let isValid: boolean = false; + + for (let attempts: number = 0; !isValid; attempts++) { + this.checkGenerationAttempts(attempts); + + const randomInteger: number = this.randomGenerator.getRandomInteger(rangeMinInteger, rangeMaxInteger); + const hexadecimalNumber: string = NumberUtils.toHex(randomInteger); + const baseIdentifierName: string = hexadecimalNumber.slice(0, baseNameLength); + + identifierName = `_${baseIdentifierName}`; + isValid = validationFn(identifierName); } this.preserveName(identifierName);