//// [tests/cases/compiler/declFileTypeAnnotationVisibilityErrorReturnTypeOfFunction.ts] ////

//// [declFileTypeAnnotationVisibilityErrorReturnTypeOfFunction.ts]
namespace m {
    class private1 {
    }

    export class public1 {
    }

    // Directly using names from this module
    function foo1(): private1 {
        return;
    }
    function foo2() {
        return new private1();
    }

    export function foo3(): private1 {
        return;
    }
    export function foo4() {
        return new private1();
    }

    function foo11(): public1 {
        return;
    }
    function foo12() {
        return new public1();
    }

    export function foo13(): public1 {
        return;
    }
    export function foo14() {
        return new public1();
    }

    namespace m2 {
        export class public2 {
        }
    }

    function foo111(): m2.public2 {
        return;
    }
    function foo112() {
        return new m2.public2();
    }

    export function foo113(): m2.public2 {
        return;
    }
    export function foo114() {
        return new m2.public2();
    }
}


//// [declFileTypeAnnotationVisibilityErrorReturnTypeOfFunction.js]
"use strict";
var m;
(function (m) {
    class private1 {
    }
    class public1 {
    }
    m.public1 = public1;
    // Directly using names from this module
    function foo1() {
        return;
    }
    function foo2() {
        return new private1();
    }
    function foo3() {
        return;
    }
    m.foo3 = foo3;
    function foo4() {
        return new private1();
    }
    m.foo4 = foo4;
    function foo11() {
        return;
    }
    function foo12() {
        return new public1();
    }
    function foo13() {
        return;
    }
    m.foo13 = foo13;
    function foo14() {
        return new public1();
    }
    m.foo14 = foo14;
    let m2;
    (function (m2) {
        class public2 {
        }
        m2.public2 = public2;
    })(m2 || (m2 = {}));
    function foo111() {
        return;
    }
    function foo112() {
        return new m2.public2();
    }
    function foo113() {
        return;
    }
    m.foo113 = foo113;
    function foo114() {
        return new m2.public2();
    }
    m.foo114 = foo114;
})(m || (m = {}));


//// [declFileTypeAnnotationVisibilityErrorReturnTypeOfFunction.d.ts]
declare namespace m {
    class private1 {
    }
    export class public1 {
    }
    export function foo3(): private1;
    export function foo4(): private1;
    export function foo13(): public1;
    export function foo14(): public1;
    namespace m2 {
        class public2 {
        }
    }
    export function foo113(): m2.public2;
    export function foo114(): m2.public2;
    export {};
}
