Skip to content

compat: undefined default-wrapper symbols for re-exported barrel modules (nestjs link wall) #4872

@proggeramlug

Description

@proggeramlug

Split out from #1021. The async-lowering architectural problem #1021 was opened for is fixed (#1041); express/hono/fastify in-process self-fetch all pass on v0.5.1152. The remaining nestjs fixture is a different problem — a native-link wall, not async lowering — so it gets its own issue.

Symptom

tests/release/packages/nestjs-hello now resolves deps and compiles past the earlier CommonJS/buffer walls, reaches native linking, and fails on undefined default-wrapper symbols for modules that are import barrels / type-only / interface re-export surfaces:

undefined reference to `__perry_wrap_perry_fn_node_modules_rxjs_src_index_ts__default'
undefined reference to `perry_fn_node_modules_rxjs_src_index_ts__default'
undefined reference to `perry_fn_node_modules_rxjs_src_operators_index_ts__default'
undefined reference to `perry_fn_node_modules_uid_dist_index_mjs__default'
undefined reference to `__perry_wrap_perry_fn_node_modules__nestjs_core_router_interfaces_routes_interface_js__default'
undefined reference to `__perry_wrap_perry_fn_node_modules__nestjs_platform_express_interfaces_nest_express_application_interface_js__default'

Call sites emit default-call / default-wrapper references for these modules, but no object file defines the matching symbols because the module is a barrel/type-only re-export with no concrete default function definition.

What's needed

Make default-import / default-call lowering either:

  1. follow re-exported module surfaces back to the concrete default binding, or
  2. avoid emitting callable default references for type-only / interface barrels.

Reproduce

cd tests/release/packages/nestjs-hello
npm install
../../../../target/release/perry entry.ts -o ./out

The fixture's fixture.sh reports SKIP while WALLS.md is present, so the release sweep records the gap without going red. See tests/release/packages/nestjs-hello/WALLS.md (Wall 1) for the running provenance.

Prior work

Metadata

Metadata

Assignees

No one assigned

    Labels

    parityNode.js compatibility / parity gaps

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions