/** * NULL ELIMINATION REPRODUCTION - Using Actual CommonTools Types * =============================================================== * * This uses the real OpaqueRef from commontools to verify the bug. * * RUN: deno run -A test/fixtures/bug-repro/verify-actual.ts */ import type { OpaqueRef, OpaqueCell } from "commontools"; // ============================================================================ // TEST CASES // ============================================================================ // Direct nullable type type Direct = OpaqueRef; type DirectInner = Direct extends OpaqueCell ? T : never; type DirectGet = Direct extends { get(): infer R } ? R : never; // Via object property interface State { value: string | null; defaultValue: string; } type StateRef = OpaqueRef; type ValueProp = StateRef["value"]; type ValueInner = ValueProp extends OpaqueCell ? T : never; type ValueGet = ValueProp extends { get(): infer R } ? R : never; // With Required<> type RequiredStateRef = OpaqueRef>; type RequiredValueProp = RequiredStateRef["value"]; type RequiredValueInner = RequiredValueProp extends OpaqueCell ? T : never; // ============================================================================ // EXPORTS // ============================================================================ export type { Direct, DirectInner, DirectGet, StateRef, ValueProp, ValueInner, ValueGet, RequiredStateRef, RequiredValueProp, RequiredValueInner, };