From e77e7f9fd0e89bd58b745eaa95d0c785a7a776e9 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Thu, 23 Jul 2026 19:56:58 +0200 Subject: [PATCH 1/3] #799: implemented anonymous support --- packages/analysis/src/static/Parser.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/analysis/src/static/Parser.ts b/packages/analysis/src/static/Parser.ts index 5cc570d3..70316172 100644 --- a/packages/analysis/src/static/Parser.ts +++ b/packages/analysis/src/static/Parser.ts @@ -30,6 +30,7 @@ import Lexer from './Lexer'; import Coder from './Coder'; const DEFAULT_IDENTIFIER = 'default'; +const EXPORTED_PREFIX = '$_EXPORT'; export default class Parser { @@ -384,7 +385,7 @@ export default class Parser { // Default exports of values need to move to their own declaration - const identifier = `$_EXPORT_${token.start}_${token.end}`; + const identifier = `${EXPORTED_PREFIX}_${token.start}_${token.end}`; tokenList.insert( new Token(TokenType.KEYWORD, Keyword.CONST, 0, 0), @@ -407,6 +408,25 @@ export default class Parser stepSize++; } + if (token.hasValue(Indicator.GENERATOR)) + { + token = tokenList.step(); // Read away the generator indicator + stepSize++; + } + + if (token.hasValue(Keyword.EXTENDS) + || token.hasValue(Group.OPEN) + || token.hasValue(Scope.OPEN)) + { + // Anonymous functions and class need an identifier + + const identifier = `${EXPORTED_PREFIX}_${token.start}_${token.end}`; + + tokenList.insert(new Token(TokenType.IDENTIFIER, identifier, 0, 0)); + + token = tokenList.current; + } + const identifier = this.#isIdentifier(token) ? token.value : ''; const alias = isDefault ? DEFAULT_IDENTIFIER : undefined; From 90772b5041d7342c0740ff9337f663934074c805 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Thu, 23 Jul 2026 19:58:00 +0200 Subject: [PATCH 2/3] #799: boyscout - added additional keywords --- packages/analysis/src/static/definitions/Keyword.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/analysis/src/static/definitions/Keyword.ts b/packages/analysis/src/static/definitions/Keyword.ts index d1109942..dc85b833 100644 --- a/packages/analysis/src/static/definitions/Keyword.ts +++ b/packages/analysis/src/static/definitions/Keyword.ts @@ -50,7 +50,11 @@ const Keyword = THROW: 'throw', TRY: 'try', CATCH: 'catch', - FINALLY: 'finally' + FINALLY: 'finally', + + // TYPE CHECKING + TYPEOF: 'typeof', + INSTANCEOF: 'instanceof' }; const Keywords = Object.values(Keyword); From 5c31b739e75e934ef16ac72612b8559c8631380a Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Sat, 25 Jul 2026 21:05:47 +0200 Subject: [PATCH 3/3] #799: fixed tests --- packages/analysis/src/static/Parser.ts | 10 +++++----- packages/analysis/test/static/Parser.spec.ts | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/analysis/src/static/Parser.ts b/packages/analysis/src/static/Parser.ts index 70316172..0387ad7c 100644 --- a/packages/analysis/src/static/Parser.ts +++ b/packages/analysis/src/static/Parser.ts @@ -406,12 +406,12 @@ export default class Parser { token = tokenList.step(); // Read away the declaration keyword stepSize++; - } - if (token.hasValue(Indicator.GENERATOR)) - { - token = tokenList.step(); // Read away the generator indicator - stepSize++; + if (token.hasValue(Indicator.GENERATOR)) + { + token = tokenList.step(); // Read away the generator indicator + stepSize++; + } } if (token.hasValue(Keyword.EXTENDS) diff --git a/packages/analysis/test/static/Parser.spec.ts b/packages/analysis/test/static/Parser.spec.ts index b7021d62..561c69e8 100644 --- a/packages/analysis/test/static/Parser.spec.ts +++ b/packages/analysis/test/static/Parser.spec.ts @@ -350,7 +350,7 @@ describe('Parser', () => expect(exported.from).toBeUndefined(); const member = exported.members[0]; - expect(member.identifier).toEqual(''); + expect(member.identifier).toEqual('$_EXPORT_23_23'); expect(member.alias).toEqual('default'); const declaration = module.statements[1] as ESFunction; @@ -368,7 +368,7 @@ describe('Parser', () => expect(exported.from).toBeUndefined(); const member = exported.members[0]; - expect(member.identifier).toEqual(''); + expect(member.identifier).toEqual('$_EXPORT_21_21'); expect(member.alias).toEqual('default'); const declaration = module.statements[1] as ESClass;