Skip to content

Commit 6d6fafc

Browse files
committed
[BUGFIX] Improve debugger message for template-only components
1 parent e633fbd commit 6d6fafc

2 files changed

Lines changed: 37 additions & 5 deletions

File tree

  • packages

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,31 @@ 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+
90115
@test
91116
'can get locals'() {
92117
let expectedContext = {

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,18 @@ 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('Use `context`, and `get(<path>)` to debug this template.');
20+
21+
// for example...
22+
context === get('this');
23+
} else {
24+
// eslint-disable-next-line no-console
25+
console.info(
26+
"Use `get(<path>)` to debug this template. For named arguments, use `get('@argName')`."
27+
);
28+
}
2229

2330
// eslint-disable-next-line no-debugger
2431
debugger;

0 commit comments

Comments
 (0)