//// [tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedClassExpressionMethodDeclaration02.ts] ////

=== contextuallyTypedClassExpressionMethodDeclaration02.ts ===
interface A {
>A : Symbol(A, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 0, 0))

    numProp: number;
>numProp : Symbol(A.numProp, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 0, 13))
}

interface B  {
>B : Symbol(B, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 2, 1))

    strProp: string;
>strProp : Symbol(B.strProp, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 4, 14))
}

interface Foo {
>Foo : Symbol(Foo, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 6, 1))

    new (): Bar;
>Bar : Symbol(Bar, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 10, 1))
}

interface Bar {
>Bar : Symbol(Bar, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 10, 1))

    method1(arg: A): void;
>method1 : Symbol(Bar.method1, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 12, 15))
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 13, 12))
>A : Symbol(A, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 0, 0))

    method2(arg: B): void;
>method2 : Symbol(Bar.method2, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 13, 26))
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 14, 12))
>B : Symbol(B, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 2, 1))
}

function getFoo1(): Foo {
>getFoo1 : Symbol(getFoo1, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 15, 1))
>Foo : Symbol(Foo, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 6, 1))

    return class {
        method1(arg) {
>method1 : Symbol((Anonymous class).method1, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 18, 18))
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 19, 16))

            arg.numProp = 10;
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 19, 16))
        }
        method2(arg) {
>method2 : Symbol((Anonymous class).method2, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 21, 9))
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 22, 16))

            arg.strProp = "hello";
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 22, 16))
        }
    }
}

function getFoo2(): Foo {
>getFoo2 : Symbol(getFoo2, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 26, 1))
>Foo : Symbol(Foo, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 6, 1))

    return class {
        method1 = (arg) => {
>method1 : Symbol((Anonymous class).method1, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 29, 18))
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 30, 19))

            arg.numProp = 10;
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 30, 19))
        }
        method2 = (arg) => {
>method2 : Symbol((Anonymous class).method2, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 32, 9))
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 33, 19))

            arg.strProp = "hello";
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 33, 19))
        }
    }
}

function getFoo3(): Foo {
>getFoo3 : Symbol(getFoo3, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 37, 1))
>Foo : Symbol(Foo, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 6, 1))

    return class {
        method1 = function (arg) {
>method1 : Symbol((Anonymous class).method1, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 40, 18))
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 41, 28))

            arg.numProp = 10;
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 41, 28))
        }
        method2 = function (arg) {
>method2 : Symbol((Anonymous class).method2, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 43, 9))
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 44, 28))

            arg.strProp = "hello";
>arg : Symbol(arg, Decl(contextuallyTypedClassExpressionMethodDeclaration02.ts, 44, 28))
        }
    }
}
