UNPKG

@rightcapital/phpdoc-parser

Version:

TypeScript version of PHPDoc parser with support for intersection types and generics

38 lines (37 loc) 1.39 kB
"use strict"; 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';