TypeScript/tests/cases/conformance/salsa/typeFromParamTagForFunction.ts
2017-06-06 18:10:00 -07:00

92 lines
1.4 KiB
TypeScript

// @allowJs: true
// @checkJs: true
// @noEmit: true
// @module: commonjs
// @filename: node.d.ts
declare function require(id: string): any;
declare var module: any, exports: any;
// @filename: a-ext.js
exports.A = function () {
this.x = 1;
};
// @filename: a.js
const { A } = require("./a-ext");
/** @param {A} p */
function a(p) { p.x; }
// @filename: b-ext.js
exports.B = class {
constructor() {
this.x = 1;
}
};
// @filename: b.js
const { B } = require("./b-ext");
/** @param {B} p */
function b(p) { p.x; }
// @filename: c-ext.js
export function C() {
this.x = 1;
}
// @filename: c.js
const { C } = require("./c-ext");
/** @param {C} p */
function c(p) { p.x; }
// @filename: d-ext.js
export var D = function() {
this.x = 1;
};
// @filename: d.js
const { D } = require("./d-ext");
/** @param {D} p */
function d(p) { p.x; }
// @filename: e-ext.js
export class E {
constructor() {
this.x = 1;
}
}
// @filename: e.js
const { E } = require("./e-ext");
/** @param {E} p */
function e(p) { p.x; }
// @filename: f.js
var F = function () {
this.x = 1;
};
/** @param {F} p */
function f(p) { p.x; }
// @filename: g.js
function G() {
this.x = 1;
}
/** @param {G} p */
function g(p) { p.x; }
// @filename: h.js
class H {
constructor() {
this.x = 1;
}
}
/** @param {H} p */
function h(p) { p.x; }