Skip to content

tsc --build false negative through export star facade project #63579

Description

tsc --build false negative through export * facade project

TypeScript Version

7.0.1-rc

Repro

Repo: https://github.com/jasonkuhrt/ts-project-reference-reexport-stale-repro

git clone https://github.com/jasonkuhrt/ts-project-reference-reexport-stale-repro.git
cd ts-project-reference-reexport-stale-repro
pnpm install
pnpm repro

Project layout:

.
├── source/
│   ├── tsconfig.json     # composite project
│   └── index.ts          # exports Status
├── facade/
│   ├── tsconfig.json     # composite project, references ../source
│   └── index.ts          # re-exports source
└── consumer/
    ├── tsconfig.json     # composite project, references ../facade
    └── index.ts          # imports Status through facade

Dependency path:

consumer/index.ts -> facade/index.ts -> source/index.ts

Relevant source:

// source/index.ts
export type Status = "old";
// facade/index.ts
export * from "../source/index";
// consumer/index.ts
import type { Status } from "../facade/index";

export const status: "old" = null as unknown as Status;

The only compiler option in each project is composite: true.

Actual Behavior

pnpm repro first builds with:

// source/index.ts
export type Status = "old";

Then it changes the source project to:

export type Status = "new";

The incremental build incorrectly exits 0.

The facade declaration remains textually unchanged:

export * from "../source/index";

The consumer declaration remains stale:

export declare const status: "old";

Expected Behavior

The incremental build should fail like the clean build does:

consumer/index.ts(3,14): error TS2322: Type '"new"' is not assignable to type '"old"'.

Notes

This is not pnpm workspace/package-exports behavior. The repro uses no workspace
packages and no package imports.

#46153 looks related,
but this is a minimal export * facade case where the intermediate project emits
stable declaration text while its re-exported public API changes.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Needs InvestigationThis issue needs a team member to investigate its status.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions