+/* 48 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* --------------------------------------------------------------------------------------------\r
+ * Copyright (c) Microsoft Corporation. All rights reserved.\r
+ * Licensed under the MIT License. See License.txt in the project root for license information.\r
+ * ------------------------------------------------------------------------------------------ */\r
+\r
+Object.defineProperty(exports, "__esModule", { value: true });\r
+const vscode_languageserver_protocol_1 = __webpack_require__(4);\r
+exports.CallHierarchyFeature = (Base) => {\r
+ return class extends Base {\r
+ get callHierarchy() {\r
+ return {\r
+ onPrepare: (handler) => {\r
+ this.connection.onRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyPrepareRequest.type, (params, cancel) => {\r
+ return handler(params, cancel, this.attachWorkDoneProgress(params), undefined);\r
+ });\r
+ },\r
+ onIncomingCalls: (handler) => {\r
+ const type = vscode_languageserver_protocol_1.Proposed.CallHierarchyIncomingCallsRequest.type;\r
+ this.connection.onRequest(type, (params, cancel) => {\r
+ return handler(params, cancel, this.attachWorkDoneProgress(params), this.attachPartialResultProgress(type, params));\r
+ });\r
+ },\r
+ onOutgoingCalls: (handler) => {\r
+ const type = vscode_languageserver_protocol_1.Proposed.CallHierarchyOutgoingCallsRequest.type;\r
+ this.connection.onRequest(type, (params, cancel) => {\r
+ return handler(params, cancel, this.attachWorkDoneProgress(params), this.attachPartialResultProgress(type, params));\r
+ });\r
+ }\r
+ };\r
+ }\r
+ };\r
+};\r
+//# sourceMappingURL=callHierarchy.proposed.js.map
+
+/***/ }),
+/* 49 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* --------------------------------------------------------------------------------------------\r
+ * Copyright (c) Microsoft Corporation. All rights reserved.\r
+ * Licensed under the MIT License. See License.txt in the project root for license information.\r
+ * ------------------------------------------------------------------------------------------ */\r
+\r
+Object.defineProperty(exports, "__esModule", { value: true });\r
+const vscode_languageserver_protocol_1 = __webpack_require__(4);\r
+exports.SemanticTokensFeature = (Base) => {\r
+ return class extends Base {\r
+ get semanticTokens() {\r
+ return {\r
+ on: (handler) => {\r
+ const type = vscode_languageserver_protocol_1.Proposed.SemanticTokensRequest.type;\r
+ this.connection.onRequest(type, (params, cancel) => {\r
+ return handler(params, cancel, this.attachWorkDoneProgress(params), this.attachPartialResultProgress(type, params));\r
+ });\r
+ },\r
+ onEdits: (handler) => {\r
+ const type = vscode_languageserver_protocol_1.Proposed.SemanticTokensEditsRequest.type;\r
+ this.connection.onRequest(type, (params, cancel) => {\r
+ return handler(params, cancel, this.attachWorkDoneProgress(params), this.attachPartialResultProgress(type, params));\r
+ });\r
+ },\r
+ onRange: (handler) => {\r
+ const type = vscode_languageserver_protocol_1.Proposed.SemanticTokensRangeRequest.type;\r
+ this.connection.onRequest(type, (params, cancel) => {\r
+ return handler(params, cancel, this.attachWorkDoneProgress(params), this.attachPartialResultProgress(type, params));\r
+ });\r
+ }\r
+ };\r
+ }\r
+ };\r
+};\r
+class SemanticTokensBuilder {\r
+ constructor() {\r
+ this._prevData = undefined;\r
+ this.initialize();\r
+ }\r
+ initialize() {\r
+ this._id = Date.now();\r
+ this._prevLine = 0;\r
+ this._prevChar = 0;\r
+ this._data = [];\r
+ this._dataLen = 0;\r
+ }\r
+ push(line, char, length, tokenType, tokenModifiers) {\r
+ let pushLine = line;\r
+ let pushChar = char;\r
+ if (this._dataLen > 0) {\r
+ pushLine -= this._prevLine;\r
+ if (pushLine === 0) {\r
+ pushChar -= this._prevChar;\r
+ }\r
+ }\r
+ this._data[this._dataLen++] = pushLine;\r
+ this._data[this._dataLen++] = pushChar;\r
+ this._data[this._dataLen++] = length;\r
+ this._data[this._dataLen++] = tokenType;\r
+ this._data[this._dataLen++] = tokenModifiers;\r
+ this._prevLine = line;\r
+ this._prevChar = char;\r
+ }\r
+ get id() {\r
+ return this._id.toString();\r
+ }\r
+ previousResult(id) {\r
+ if (this.id === id) {\r
+ this._prevData = this._data;\r
+ }\r
+ this.initialize();\r
+ }\r
+ build() {\r
+ this._prevData = undefined;\r
+ return {\r
+ resultId: this.id,\r
+ data: this._data\r
+ };\r
+ }\r
+ canBuildEdits() {\r
+ return this._prevData !== undefined;\r
+ }\r
+ buildEdits() {\r
+ if (this._prevData !== undefined) {\r
+ const prevDataLength = this._prevData.length;\r
+ const dataLength = this._data.length;\r
+ let startIndex = 0;\r
+ while (startIndex < dataLength && startIndex < prevDataLength && this._prevData[startIndex] === this._data[startIndex]) {\r
+ startIndex++;\r
+ }\r
+ if (startIndex < dataLength && startIndex < prevDataLength) {\r
+ // Find end index\r
+ let endIndex = 0;\r
+ while (endIndex < dataLength && endIndex < prevDataLength && this._prevData[prevDataLength - 1 - endIndex] === this._data[dataLength - 1 - endIndex]) {\r
+ endIndex++;\r
+ }\r
+ const newData = this._data.slice(startIndex, dataLength - endIndex);\r
+ const result = {\r
+ resultId: this.id,\r
+ edits: [\r
+ { start: startIndex, deleteCount: prevDataLength - endIndex - startIndex, data: newData }\r
+ ]\r
+ };\r
+ return result;\r
+ }\r
+ else if (startIndex < dataLength) {\r
+ return { resultId: this.id, edits: [\r
+ { start: startIndex, deleteCount: 0, data: this._data.slice(startIndex) }\r
+ ] };\r
+ }\r
+ else if (startIndex < prevDataLength) {\r
+ return { resultId: this.id, edits: [\r
+ { start: startIndex, deleteCount: prevDataLength - startIndex }\r
+ ] };\r
+ }\r
+ else {\r
+ return { resultId: this.id, edits: [] };\r
+ }\r
+ }\r
+ else {\r
+ return this.build();\r
+ }\r
+ }\r
+}\r
+exports.SemanticTokensBuilder = SemanticTokensBuilder;\r
+//# sourceMappingURL=sematicTokens.proposed.js.map
+
+/***/ }),
+/* 50 */