From e7c69f2aaddb1cff9c4f77933c54d54f36e07ef2 Mon Sep 17 00:00:00 2001 From: Edward Faulkner Date: Fri, 28 Feb 2025 16:21:54 -0500 Subject: [PATCH 1/2] Printer bug: empty string literal args are dropped --- packages/@glimmer/syntax/test/generation/print-test.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/@glimmer/syntax/test/generation/print-test.ts b/packages/@glimmer/syntax/test/generation/print-test.ts index 4a1a75d98..7bfa6a201 100644 --- a/packages/@glimmer/syntax/test/generation/print-test.ts +++ b/packages/@glimmer/syntax/test/generation/print-test.ts @@ -94,6 +94,9 @@ let templates = [ // Comment in Angle Bracket component '', + + // Empty string literal args + `` ]; QUnit.module('[glimmer-syntax] Code generation', () => { From 948a249eefb8cc5b4c311d38b4defeda2dc81645 Mon Sep 17 00:00:00 2001 From: Edward Faulkner Date: Mon, 3 Mar 2025 12:02:15 -0500 Subject: [PATCH 2/2] proposed fix --- packages/@glimmer/syntax/lib/generation/printer.ts | 4 +++- packages/@glimmer/syntax/test/generation/print-test.ts | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/@glimmer/syntax/lib/generation/printer.ts b/packages/@glimmer/syntax/lib/generation/printer.ts index 2be912e77..3765a55ef 100644 --- a/packages/@glimmer/syntax/lib/generation/printer.ts +++ b/packages/@glimmer/syntax/lib/generation/printer.ts @@ -285,7 +285,9 @@ export default class Printer { let { name, value } = attr; this.buffer += name; - if (value.type !== 'TextNode' || value.chars.length > 0) { + const isAttribute = !name.startsWith('@'); + const shouldElideValue = isAttribute && value.type == 'TextNode' && value.chars.length === 0; + if (!shouldElideValue) { this.buffer += '='; this.AttrNodeValue(value); } diff --git a/packages/@glimmer/syntax/test/generation/print-test.ts b/packages/@glimmer/syntax/test/generation/print-test.ts index 7bfa6a201..c1214009c 100644 --- a/packages/@glimmer/syntax/test/generation/print-test.ts +++ b/packages/@glimmer/syntax/test/generation/print-test.ts @@ -95,8 +95,8 @@ let templates = [ // Comment in Angle Bracket component '', - // Empty string literal args - `` + // Empty string literal: arguments use ="" while attributes are valueless + ``, ]; QUnit.module('[glimmer-syntax] Code generation', () => {