Skip to content

Commit 5f0a842

Browse files
mathpirateclaude
andcommitted
fix: detect export default function/class declarations
Updated hasDefaultExport() to also detect default exports declared with the default modifier on function/class declarations: - export default function foo() {} - export default class Bar {} Previously only detected ExportAssignment nodes (export default <expr>) and named exports with default alias. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent edb314e commit 5f0a842

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

packages/runner/src/harness/engine.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,10 @@ function computeId(program: Program): string {
253253
}
254254

255255
// Checks if a source file has a default export by parsing its AST.
256-
// Detects both `export default ...` and `export { ... as default }` patterns.
256+
// Detects:
257+
// - export default <expression>
258+
// - export default function/class
259+
// - export { ... as default }
257260
function hasDefaultExport(source: Source): boolean {
258261
const sourceFile = ts.createSourceFile(
259262
source.name,
@@ -267,6 +270,14 @@ function hasDefaultExport(source: Source): boolean {
267270
if (ts.isExportAssignment(statement) && !statement.isExportEquals) {
268271
return true;
269272
}
273+
// Check for: export default function/class
274+
if (
275+
(ts.isFunctionDeclaration(statement) ||
276+
ts.isClassDeclaration(statement)) &&
277+
statement.modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword)
278+
) {
279+
return true;
280+
}
270281
// Check for: export { ... as default } or export { default } from "..."
271282
if (ts.isExportDeclaration(statement)) {
272283
const exportClause = statement.exportClause;

0 commit comments

Comments
 (0)