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 4a1a75d98..c1214009c 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: arguments use ="" while attributes are valueless + ``, ]; QUnit.module('[glimmer-syntax] Code generation', () => {