=== tests/cases/compiler/contextualOverloadListFromUnionWithPrimitiveNoImplicitAny.ts ===
// must target esnext for `String.normalize` to exist
type Validate = (text: string, pos: number, self: Rule) => number | boolean;
>Validate : Validate
>text : string
>pos : number
>self : Rule

interface FullRule {
    validate: string | RegExp | Validate;
>validate : string | RegExp | Validate

    normalize?: (match: {x: string}) => void;
>normalize : ((match: {    x: string;}) => void) | undefined
>match : { x: string; }
>x : string
}

type Rule = string | FullRule;
>Rule : Rule

const obj: {field: Rule} = {
>obj : { field: Rule; }
>field : Rule
>{    field: {        validate: (_t, _p, _s) => false,        normalize: match => match.x,    }} : { field: { validate: (_t: string, _p: number, _s: Rule) => false; normalize: (match: any) => any; }; }

    field: {
>field : { validate: (_t: string, _p: number, _s: Rule) => false; normalize: (match: any) => any; }
>{        validate: (_t, _p, _s) => false,        normalize: match => match.x,    } : { validate: (_t: string, _p: number, _s: Rule) => false; normalize: (match: any) => any; }

        validate: (_t, _p, _s) => false,
>validate : (_t: string, _p: number, _s: Rule) => false
>(_t, _p, _s) => false : (_t: string, _p: number, _s: Rule) => false
>_t : string
>_p : number
>_s : Rule
>false : false

        normalize: match => match.x,
>normalize : (match: any) => any
>match => match.x : (match: any) => any
>match : any
>match.x : any
>match : any
>x : any
    }
};
