@rightcapital/phpdoc-parser
Version:
TypeScript version of PHPDoc parser with support for intersection types and generics
38 lines (37 loc) • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GenericTypeNode = void 0;
const type_node_1 = require("./type-node");
class GenericTypeNode extends type_node_1.TypeNode {
constructor(type, genericTypes, variances = []) {
super();
this.type = type;
this.genericTypes = genericTypes;
this.variances = variances;
}
toString() {
const genericTypes = [];
for (const index in this.genericTypes) {
const type = this.genericTypes[index];
const variance = this.variances[index] || GenericTypeNode.VARIANCE_INVARIANT;
if (variance === GenericTypeNode.VARIANCE_INVARIANT) {
genericTypes.push(type.toString());
}
else if (variance === GenericTypeNode.VARIANCE_BIVARIANT) {
genericTypes.push('*');
}
else {
genericTypes.push(`${variance} ${type.toString()}`);
}
}
return `${this.type.toString()}<${genericTypes.join(', ')}>`;
}
getNodeType() {
return 'GenericTypeNode';
}
}
exports.GenericTypeNode = GenericTypeNode;
GenericTypeNode.VARIANCE_INVARIANT = 'invariant';
GenericTypeNode.VARIANCE_COVARIANT = 'covariant';
GenericTypeNode.VARIANCE_CONTRAVARIANT = 'contravariant';
GenericTypeNode.VARIANCE_BIVARIANT = 'bivariant';