Skip to content

Commit 9834747

Browse files
Merge pull request #21407 from olenderhub/bugfix-template-only-debugger-message
[BUGFIX] Improve debugger message for template-only components
2 parents 3676088 + fff0373 commit 9834747

2 files changed

Lines changed: 69 additions & 5 deletions

File tree

  • packages

packages/@glimmer-workspace/integration-tests/lib/suites/debugger.ts

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,61 @@ export class DebuggerSuite extends RenderTest {
8787
this.assertStableNodes();
8888
}
8989

90+
@test({ kind: 'templateOnly' })
91+
'debugger in template-only component logs template-only message'() {
92+
let originalInfo = console.info;
93+
let messages: string[] = [];
94+
95+
console.info = (...args: unknown[]) => {
96+
messages.push(args.join(' '));
97+
};
98+
99+
try {
100+
resetDebuggerCallback();
101+
102+
this.registerComponent('TemplateOnly', 'DebugTest', '{{debugger}}');
103+
104+
this.render('<DebugTest @foo="bar" />', {});
105+
106+
this.assert.deepEqual(messages, [
107+
"Use `get(<path>)` to debug this template. For named arguments, use `get('@argName')`.",
108+
]);
109+
} finally {
110+
console.info = originalInfo;
111+
resetDebuggerCallback();
112+
}
113+
}
114+
115+
@test
116+
'debugger in class-backed component logs context message with named argument hint'() {
117+
let originalInfo = console.info;
118+
let messages: string[] = [];
119+
120+
console.info = (...args: unknown[]) => {
121+
messages.push(args.join(' '));
122+
};
123+
124+
try {
125+
resetDebuggerCallback();
126+
127+
this.registerComponent(
128+
'Glimmer',
129+
'DebugTest',
130+
'{{debugger}}',
131+
class extends GlimmerishComponent {}
132+
);
133+
134+
this.render('<DebugTest @foo="bar" />', {});
135+
136+
this.assert.deepEqual(messages, [
137+
"Use `context`, and `get(<path>)` to debug this template. For named arguments, use `get('@argName')`.",
138+
]);
139+
} finally {
140+
console.info = originalInfo;
141+
resetDebuggerCallback();
142+
}
143+
}
144+
90145
@test
91146
'can get locals'() {
92147
let expectedContext = {

packages/@glimmer/runtime/lib/compiled/opcodes/debugger.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,20 @@ export type DebugGet = (path: string) => unknown;
1414
export type DebugCallback = (context: unknown, get: DebugGet) => void;
1515

1616
function debugCallback(context: unknown, get: DebugGet): void {
17-
// eslint-disable-next-line no-console
18-
console.info('Use `context`, and `get(<path>)` to debug this template.');
19-
20-
// for example...
21-
context === get('this');
17+
if (context !== null && context !== undefined) {
18+
// eslint-disable-next-line no-console
19+
console.info(
20+
"Use `context`, and `get(<path>)` to debug this template. For named arguments, use `get('@argName')`."
21+
);
22+
23+
// for example...
24+
context === get('this');
25+
} else {
26+
// eslint-disable-next-line no-console
27+
console.info(
28+
"Use `get(<path>)` to debug this template. For named arguments, use `get('@argName')`."
29+
);
30+
}
2231

2332
// eslint-disable-next-line no-debugger
2433
debugger;

0 commit comments

Comments
 (0)