From e89d4fab2e01cd477831906ddbcc8615283ac4a4 Mon Sep 17 00:00:00 2001 From: Klaus Date: Thu, 12 Feb 2026 14:27:26 -0300 Subject: [PATCH 1/2] using a dictionary for the hug functions --- src/slang-nodes/MultiplicativeExpression.ts | 26 +++++++++------------ 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/slang-nodes/MultiplicativeExpression.ts b/src/slang-nodes/MultiplicativeExpression.ts index 7e4b1d792..88b326010 100644 --- a/src/slang-nodes/MultiplicativeExpression.ts +++ b/src/slang-nodes/MultiplicativeExpression.ts @@ -11,9 +11,11 @@ import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; import type { AstNode } from './types.d.ts'; -const multiplicationTryToHug = createHugFunction(['/', '%']); -const divisionTryToHug = createHugFunction(['*', '%']); -const moduloTryToHug = createHugFunction(['*', '/', '%']); +const hugFunctions = { + '*': createHugFunction(['/', '%']), + '/': createHugFunction(['*', '%']), + '%': createHugFunction(['*', '/', '%']) +}; const printMultiplicativeExpression = printBinaryOperation( createKindCheckFunction([ @@ -55,19 +57,13 @@ export class MultiplicativeExpression extends SlangNode { this.updateMetadata(this.leftOperand, this.rightOperand); - switch (this.operator) { - case '*': - this.leftOperand = multiplicationTryToHug(this.leftOperand); - break; - case '/': - this.leftOperand = divisionTryToHug(this.leftOperand); - break; - case '%': - this.leftOperand = moduloTryToHug(this.leftOperand); - break; - default: - throw new Error(`Unexpected operator: ${this.operator}`); + const tryToHug = hugFunctions[this.operator as '*' | '/' | '%']; + + if (tryToHug === undefined) { + throw new Error(`Unexpected operator: ${this.operator}`); } + + this.leftOperand = tryToHug(this.leftOperand); } print( From 249515b52b82abbd7c03cee6afa8a39bfe1eb0c1 Mon Sep 17 00:00:00 2001 From: Klaus Hott Vidal Date: Wed, 25 Feb 2026 16:08:44 -0300 Subject: [PATCH 2/2] Update src/slang-nodes/MultiplicativeExpression.ts Co-authored-by: Franco Victorio --- src/slang-nodes/MultiplicativeExpression.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slang-nodes/MultiplicativeExpression.ts b/src/slang-nodes/MultiplicativeExpression.ts index 88b326010..3822b0ee1 100644 --- a/src/slang-nodes/MultiplicativeExpression.ts +++ b/src/slang-nodes/MultiplicativeExpression.ts @@ -57,7 +57,7 @@ export class MultiplicativeExpression extends SlangNode { this.updateMetadata(this.leftOperand, this.rightOperand); - const tryToHug = hugFunctions[this.operator as '*' | '/' | '%']; + const tryToHug = hugFunctions[this.operator as keyof typeof hugFunctions]; if (tryToHug === undefined) { throw new Error(`Unexpected operator: ${this.operator}`);