@typespec/compiler 1.5.0-dev.1 → 1.5.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/manifest.js +2 -2
- package/dist/src/server/compile-service.d.ts +6 -6
- package/dist/src/server/compile-service.d.ts.map +1 -1
- package/dist/src/server/compile-service.js +46 -36
- package/dist/src/server/compile-service.js.map +1 -1
- package/dist/src/server/constants.d.ts +5 -4
- package/dist/src/server/constants.d.ts.map +1 -1
- package/dist/src/server/constants.js +5 -4
- package/dist/src/server/constants.js.map +1 -1
- package/dist/src/server/diagnostics.d.ts.map +1 -1
- package/dist/src/server/diagnostics.js +23 -8
- package/dist/src/server/diagnostics.js.map +1 -1
- package/dist/src/server/file-service.d.ts +4 -1
- package/dist/src/server/file-service.d.ts.map +1 -1
- package/dist/src/server/file-service.js +30 -0
- package/dist/src/server/file-service.js.map +1 -1
- package/dist/src/server/server-compile-manager.d.ts +55 -0
- package/dist/src/server/server-compile-manager.d.ts.map +1 -0
- package/dist/src/server/server-compile-manager.js +269 -0
- package/dist/src/server/server-compile-manager.js.map +1 -0
- package/dist/src/server/server.js +1 -0
- package/dist/src/server/server.js.map +1 -1
- package/dist/src/server/serverlib.d.ts.map +1 -1
- package/dist/src/server/serverlib.js +103 -30
- package/dist/src/server/serverlib.js.map +1 -1
- package/dist/src/server/types.d.ts +7 -3
- package/dist/src/server/types.d.ts.map +1 -1
- package/dist/src/server/types.js.map +1 -1
- package/dist/src/server/update-manager.d.ts +23 -4
- package/dist/src/server/update-manager.d.ts.map +1 -1
- package/dist/src/server/update-manager.js +110 -18
- package/dist/src/server/update-manager.js.map +1 -1
- package/dist/src/testing/test-server-host.d.ts.map +1 -1
- package/dist/src/testing/test-server-host.js +15 -1
- package/dist/src/testing/test-server-host.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { formatLog } from "../core/logger/index.js";
|
|
2
|
+
import { compile as compileProgram, normalizePath, } from "../index.js";
|
|
3
|
+
import { ENABLE_SERVER_COMPILE_LOGGING } from "./constants.js";
|
|
4
|
+
import { trackActionFunc } from "./server-track-action-task.js";
|
|
5
|
+
/**
|
|
6
|
+
* This class purely manages compilations triggered and the caches used underneath. It doesn't have or care about any extra knowledge beyond compile itself.
|
|
7
|
+
* Instead compiler service would have more knowledge about the lsp scenarios to provide higher level service. It will be responsible to make sure compilation request
|
|
8
|
+
* is built properly (i.e. figure out the correct entrypoint file, double check whether compilation result covers given document, and so on) and then trigger the actual
|
|
9
|
+
* compilation with proper options through this class.
|
|
10
|
+
*/
|
|
11
|
+
export class ServerCompileManager {
|
|
12
|
+
updateManager;
|
|
13
|
+
compilerHost;
|
|
14
|
+
log;
|
|
15
|
+
// We may want a ttl for this
|
|
16
|
+
trackerCache = new CompileCache((msg) => this.logDebug(msg));
|
|
17
|
+
compileId = 0;
|
|
18
|
+
logDebug;
|
|
19
|
+
constructor(updateManager, compilerHost, log) {
|
|
20
|
+
this.updateManager = updateManager;
|
|
21
|
+
this.compilerHost = compilerHost;
|
|
22
|
+
this.log = log;
|
|
23
|
+
this.logDebug =
|
|
24
|
+
typeof process !== "undefined" &&
|
|
25
|
+
process?.env?.[ENABLE_SERVER_COMPILE_LOGGING]?.toLowerCase() === "true"
|
|
26
|
+
? (msg) => this.log({ level: "debug", message: msg })
|
|
27
|
+
: () => { };
|
|
28
|
+
}
|
|
29
|
+
async compile(mainFile, compileOptions = {}, serverCompileOptions) {
|
|
30
|
+
let cache = undefined;
|
|
31
|
+
const curId = this.compileId++;
|
|
32
|
+
const err = new Error();
|
|
33
|
+
const lines = err.stack?.split("\n") ?? [];
|
|
34
|
+
// log where the compiler is triggered, skip the first 2 frame and only log the next 2 if exists
|
|
35
|
+
const stackLines = lines.slice(3, 5).join("\n");
|
|
36
|
+
this.logDebug(`Server compile #${curId}: Triggered, version=${this.updateManager.docChangedVersion}, mode=${serverCompileOptions.mode}, mainFile=${mainFile}, from\n${stackLines}`);
|
|
37
|
+
if (!serverCompileOptions.skipCache) {
|
|
38
|
+
cache = this.trackerCache.get(mainFile, compileOptions, false /*hasCompleted*/, serverCompileOptions.mode);
|
|
39
|
+
if (cache && cache.isUpToDate()) {
|
|
40
|
+
this.logDebug(`Server compile #${curId}: Return cache at #${cache.getCompileId()}(${cache.getMode()})`);
|
|
41
|
+
return cache;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.logDebug(`Server compile #${curId}: Cache miss because ${cache ? `it's outdated with version ${cache.getVersion()}` : "no cache available"}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
let oldProgram = undefined;
|
|
48
|
+
if (!serverCompileOptions.skipOldProgramFromCache) {
|
|
49
|
+
const completedTracker = this.trackerCache.get(mainFile, compileOptions, true /* hasCompleted */, serverCompileOptions.mode);
|
|
50
|
+
oldProgram = await completedTracker?.getCompileResult();
|
|
51
|
+
this.logDebug(`Server compile #${curId}: Use old program from cache: ${oldProgram ? `from #${completedTracker?.getCompileId() ?? "undefined"}` : "n/a"}`);
|
|
52
|
+
}
|
|
53
|
+
const tracker = CompileTracker.compile(curId, this.updateManager, this.compilerHost, mainFile, compileOptions, serverCompileOptions.mode, oldProgram, (msg) => this.logDebug(msg));
|
|
54
|
+
this.trackerCache.set(mainFile, compileOptions, tracker);
|
|
55
|
+
return tracker;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
class CompileCache {
|
|
59
|
+
log;
|
|
60
|
+
coreCache;
|
|
61
|
+
fullCache;
|
|
62
|
+
constructor(log) {
|
|
63
|
+
this.log = log;
|
|
64
|
+
this.coreCache = new CompileCacheInternal(log);
|
|
65
|
+
this.fullCache = new CompileCacheInternal(log);
|
|
66
|
+
}
|
|
67
|
+
get(entrypoint, compileOption, completedOnly, mode) {
|
|
68
|
+
switch (mode) {
|
|
69
|
+
case "core":
|
|
70
|
+
// full cache can also be used for core, just return the latest one
|
|
71
|
+
const core = this.coreCache.get(entrypoint, compileOption, completedOnly);
|
|
72
|
+
const full = this.fullCache.get(entrypoint, compileOption, completedOnly);
|
|
73
|
+
// only consider using full when it's already completed, otherwise, full compilation may take longer time
|
|
74
|
+
if (core && full && full.isCompleted()) {
|
|
75
|
+
if (full.getVersion() > core.getVersion()) {
|
|
76
|
+
this.log(`Server compile: Using full cache (version ${full.getVersion()}) over core cache (version ${core.getVersion()})`);
|
|
77
|
+
return full;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
return core;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else if (core) {
|
|
84
|
+
return core;
|
|
85
|
+
}
|
|
86
|
+
else if (full && full.isCompleted()) {
|
|
87
|
+
this.log(`Server compile: Using full cache (version ${full.getVersion()}) over core cache which is unavailable`);
|
|
88
|
+
return full;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
case "full":
|
|
94
|
+
return this.fullCache.get(entrypoint, compileOption, completedOnly);
|
|
95
|
+
default:
|
|
96
|
+
// not expected, just in case, and we don't want to terminate because of cache in prod
|
|
97
|
+
if (process.env.NODE_ENV === "development") {
|
|
98
|
+
throw new Error(`Unexpected compile mode: ${mode}`);
|
|
99
|
+
}
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
set(entrypoint, compileOption, tracker) {
|
|
104
|
+
const mode = tracker.getMode();
|
|
105
|
+
switch (mode) {
|
|
106
|
+
case "core":
|
|
107
|
+
this.coreCache.set(entrypoint, compileOption, tracker);
|
|
108
|
+
break;
|
|
109
|
+
case "full":
|
|
110
|
+
this.fullCache.set(entrypoint, compileOption, tracker);
|
|
111
|
+
break;
|
|
112
|
+
default:
|
|
113
|
+
if (process.env.NODE_ENV === "development") {
|
|
114
|
+
throw new Error(`Unexpected compile mode: ${mode}`);
|
|
115
|
+
}
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
class CompileCacheInternal {
|
|
121
|
+
log;
|
|
122
|
+
cacheLatest = new Map();
|
|
123
|
+
/** Cache for completed compilation which is needed when we need an old program but the latest one is still in progress */
|
|
124
|
+
cacheCompleted = new Map();
|
|
125
|
+
constructor(log) {
|
|
126
|
+
this.log = log;
|
|
127
|
+
}
|
|
128
|
+
getCacheKey(entrypoint, compileOption) {
|
|
129
|
+
const normalizedEntrypoint = normalizePath(entrypoint);
|
|
130
|
+
const normalizedOptions = {
|
|
131
|
+
...compileOption,
|
|
132
|
+
outputDir: undefined,
|
|
133
|
+
};
|
|
134
|
+
return `${normalizedEntrypoint}\n${normalizedOptions}`;
|
|
135
|
+
}
|
|
136
|
+
/** Get the latest completed compilation */
|
|
137
|
+
get(entrypoint, compileOption,
|
|
138
|
+
/**
|
|
139
|
+
* Whether to only return completed compilations
|
|
140
|
+
*/
|
|
141
|
+
completedOnly) {
|
|
142
|
+
const key = this.getCacheKey(entrypoint, compileOption);
|
|
143
|
+
const tracker = this.cacheLatest.get(key);
|
|
144
|
+
// completed cache is from latest cache, so if latest is undefined, no need to check completed cache any more
|
|
145
|
+
if (!completedOnly || !tracker) {
|
|
146
|
+
return tracker;
|
|
147
|
+
}
|
|
148
|
+
if (tracker.isCompleted() === true) {
|
|
149
|
+
return tracker;
|
|
150
|
+
}
|
|
151
|
+
return this.cacheCompleted.get(key);
|
|
152
|
+
}
|
|
153
|
+
set(entrypoint, compileOption, tracker) {
|
|
154
|
+
const key = this.getCacheKey(entrypoint, compileOption);
|
|
155
|
+
this.cacheLatest.set(key, tracker);
|
|
156
|
+
const onComplete = () => {
|
|
157
|
+
const cur = this.cacheCompleted.get(key);
|
|
158
|
+
if (!cur || cur.getVersion() < tracker.getVersion()) {
|
|
159
|
+
// There may be a race condition here when two onComplete occur at the same time(both of them pass the check and try to set the cache)
|
|
160
|
+
// But the chance is very low, the cache status is still good (just set to a newer but not latest version), and the next compile can
|
|
161
|
+
// likely fix it, so don't do special handling here for it
|
|
162
|
+
this.cacheCompleted.set(key, tracker);
|
|
163
|
+
this.log(`Server compile #${tracker.getCompileId()}: Completed Cache updated ( ${cur?.getVersion() ?? "n/a"} -> ${tracker.getVersion()} )`);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
tracker.getCompileResult().then(() => {
|
|
167
|
+
onComplete();
|
|
168
|
+
}, (err) => {
|
|
169
|
+
onComplete();
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export class CompileTracker {
|
|
174
|
+
id;
|
|
175
|
+
updateManager;
|
|
176
|
+
entrypoint;
|
|
177
|
+
compileResultPromise;
|
|
178
|
+
version;
|
|
179
|
+
startTime;
|
|
180
|
+
mode;
|
|
181
|
+
logs;
|
|
182
|
+
endTime;
|
|
183
|
+
static compile(id, updateManager, host, mainFile, options = {}, mode, oldProgram, log) {
|
|
184
|
+
const sLogs = [];
|
|
185
|
+
// Clone an compilerhost instance with my logSink so that we can collect compiler logs
|
|
186
|
+
// for each compilation to it's own tracker
|
|
187
|
+
// Usually we don't want to send out the log because we are compiling aggressively in the lsp
|
|
188
|
+
// but in some case like the 'emit-code', we will want to send back the logs if there is any
|
|
189
|
+
const myHost = {
|
|
190
|
+
...host,
|
|
191
|
+
logSink: {
|
|
192
|
+
log: (log) => {
|
|
193
|
+
const msg = formatLog(log, { excludeLogLevel: true });
|
|
194
|
+
const sLog = {
|
|
195
|
+
level: log.level,
|
|
196
|
+
message: msg,
|
|
197
|
+
};
|
|
198
|
+
sLogs.push(sLog);
|
|
199
|
+
},
|
|
200
|
+
trackAction: (message, finalMessage, action) => trackActionFunc((log) => sLogs.push(log), message, finalMessage, action),
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
const myOption = mode === "core"
|
|
204
|
+
? {
|
|
205
|
+
...options,
|
|
206
|
+
emit: [],
|
|
207
|
+
linterRuleSet: undefined,
|
|
208
|
+
}
|
|
209
|
+
: {
|
|
210
|
+
...options,
|
|
211
|
+
};
|
|
212
|
+
const version = updateManager.docChangedVersion;
|
|
213
|
+
const startTime = new Date();
|
|
214
|
+
const p = compileProgram(myHost, mainFile, myOption, oldProgram);
|
|
215
|
+
log(`Server compile #${id}: Start compilation at ${startTime.toISOString()}, version = ${version}, mainFile = ${mainFile}, mode = ${mode}`);
|
|
216
|
+
return new CompileTracker(id, updateManager, mainFile, p, version, startTime, mode, sLogs, log);
|
|
217
|
+
}
|
|
218
|
+
constructor(id, updateManager, entrypoint, compileResultPromise, version, startTime, mode, logs, log) {
|
|
219
|
+
this.id = id;
|
|
220
|
+
this.updateManager = updateManager;
|
|
221
|
+
this.entrypoint = entrypoint;
|
|
222
|
+
this.compileResultPromise = compileResultPromise;
|
|
223
|
+
this.version = version;
|
|
224
|
+
this.startTime = startTime;
|
|
225
|
+
this.mode = mode;
|
|
226
|
+
this.logs = logs;
|
|
227
|
+
this.startTime = startTime;
|
|
228
|
+
const onComplete = () => {
|
|
229
|
+
this.endTime = new Date();
|
|
230
|
+
log(`Server compile #${this.getCompileId()}: Compilation finished at ${this.endTime.toISOString()}. Duration = ${this.endTime.getTime() - this.startTime.getTime()}ms`);
|
|
231
|
+
};
|
|
232
|
+
compileResultPromise.then((r) => {
|
|
233
|
+
onComplete();
|
|
234
|
+
}, (err) => {
|
|
235
|
+
onComplete();
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
getCompileId() {
|
|
239
|
+
return this.id;
|
|
240
|
+
}
|
|
241
|
+
getEntryPoint() {
|
|
242
|
+
return this.entrypoint;
|
|
243
|
+
}
|
|
244
|
+
async getCompileResult() {
|
|
245
|
+
return await this.compileResultPromise;
|
|
246
|
+
}
|
|
247
|
+
getVersion() {
|
|
248
|
+
return this.version;
|
|
249
|
+
}
|
|
250
|
+
getStartTime() {
|
|
251
|
+
return this.startTime;
|
|
252
|
+
}
|
|
253
|
+
getEndTime() {
|
|
254
|
+
return this.endTime;
|
|
255
|
+
}
|
|
256
|
+
isCompleted() {
|
|
257
|
+
return this.endTime !== undefined;
|
|
258
|
+
}
|
|
259
|
+
isUpToDate() {
|
|
260
|
+
return this.version === this.updateManager.docChangedVersion;
|
|
261
|
+
}
|
|
262
|
+
getMode() {
|
|
263
|
+
return this.mode;
|
|
264
|
+
}
|
|
265
|
+
getLogs() {
|
|
266
|
+
return this.logs;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=server-compile-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-compile-manager.js","sourceRoot":"","sources":["../../../src/server/server-compile-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -127,6 +127,7 @@ function main() {
|
|
|
127
127
|
connection.onRequest(compileProjectRequestName, profile(s.internalCompile));
|
|
128
128
|
documents.onDidChangeContent(profile(s.checkChange));
|
|
129
129
|
documents.onDidClose(profile(s.documentClosed));
|
|
130
|
+
documents.onDidOpen(profile(s.documentOpened));
|
|
130
131
|
documents.listen(connection);
|
|
131
132
|
connection.listen();
|
|
132
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverlib.d.ts","sourceRoot":"","sources":["../../../src/server/serverlib.ts"],"names":[],"mappings":"AAuGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"serverlib.d.ts","sourceRoot":"","sources":["../../../src/server/serverlib.ts"],"names":[],"mappings":"AAuGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAkBnE,OAAO,EAML,MAAM,EAGN,UAAU,EAKX,MAAM,YAAY,CAAC;AAGpB,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,qBAAqB,CAAC,EAAE,oBAAoB,GAC3C,MAAM,CAuzCR"}
|
|
@@ -35,6 +35,7 @@ import { getSymbolStructure } from "./symbol-structure.js";
|
|
|
35
35
|
import { provideTspconfigCompletionItems } from "./tspconfig/completion.js";
|
|
36
36
|
import { getParameterDocumentation, getSymbolDetails, getTemplateParameterDocumentation, } from "./type-details.js";
|
|
37
37
|
import { SemanticTokenKind, } from "./types.js";
|
|
38
|
+
import { UpdateManger } from "./update-manager.js";
|
|
38
39
|
export function createServer(host, clientConfigsProvider) {
|
|
39
40
|
const fileService = createFileService({ serverHost: host });
|
|
40
41
|
// Cache all file I/O. Only open documents are sent over the LSP pipe. When
|
|
@@ -49,17 +50,18 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
49
50
|
const npmPackageProvider = new NpmPackageProvider(compilerHost);
|
|
50
51
|
const emitterProvider = new LibraryProvider(npmPackageProvider, (exports) => exports.$onEmit !== undefined);
|
|
51
52
|
const linterProvider = new LibraryProvider(npmPackageProvider, (exports) => exports.$linter !== undefined);
|
|
53
|
+
const updateManager = new UpdateManger(log);
|
|
52
54
|
const compileService = createCompileService({
|
|
53
55
|
fileService,
|
|
54
56
|
fileSystemCache,
|
|
55
57
|
compilerHost,
|
|
56
58
|
serverHost: host,
|
|
59
|
+
updateManager,
|
|
57
60
|
log,
|
|
58
61
|
clientConfigsProvider,
|
|
59
62
|
});
|
|
60
63
|
const currentDiagnosticIndex = new Map();
|
|
61
64
|
let diagnosticIdCounter = 0;
|
|
62
|
-
compileService.on("compileEnd", (result) => reportDiagnostics(result));
|
|
63
65
|
let workspaceFolders = [];
|
|
64
66
|
let isInitialized = false;
|
|
65
67
|
let pendingMessages = [];
|
|
@@ -70,7 +72,7 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
70
72
|
get workspaceFolders() {
|
|
71
73
|
return workspaceFolders;
|
|
72
74
|
},
|
|
73
|
-
compile
|
|
75
|
+
compile,
|
|
74
76
|
initialize,
|
|
75
77
|
initialized,
|
|
76
78
|
workspaceFoldersChanged,
|
|
@@ -78,6 +80,7 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
78
80
|
formatDocument,
|
|
79
81
|
gotoDefinition,
|
|
80
82
|
documentClosed,
|
|
83
|
+
documentOpened,
|
|
81
84
|
complete,
|
|
82
85
|
findReferences,
|
|
83
86
|
findDocumentHighlight,
|
|
@@ -94,6 +97,7 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
94
97
|
getCodeActions,
|
|
95
98
|
executeCommand,
|
|
96
99
|
log,
|
|
100
|
+
reportDiagnostics,
|
|
97
101
|
getInitProjectContext,
|
|
98
102
|
validateInitProjectTemplate,
|
|
99
103
|
initProject,
|
|
@@ -106,6 +110,25 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
106
110
|
.map((x) => x.slice(0, 1).toLocaleLowerCase() + x.slice(1)),
|
|
107
111
|
tokenModifiers: [],
|
|
108
112
|
};
|
|
113
|
+
updateManager.setCallback(async (updates) => {
|
|
114
|
+
if (updates.length === 0) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
// we only need to compile the last update, the previous update will be overwritten by the last one anyway
|
|
118
|
+
const lastUpdate = updates.reduce((pre, cur) => {
|
|
119
|
+
return cur.latestUpdateTimestamp > pre.latestUpdateTimestamp ? cur : pre;
|
|
120
|
+
});
|
|
121
|
+
const curVersion = updateManager.docChangedVersion;
|
|
122
|
+
const result = await compileService.compile(lastUpdate.latest, undefined, {
|
|
123
|
+
mode: "full",
|
|
124
|
+
// the callback should be or have been triggered for the new version, so this one should be
|
|
125
|
+
// cancelled in this case
|
|
126
|
+
isCancelled: () => updateManager.docChangedVersion > curVersion,
|
|
127
|
+
});
|
|
128
|
+
if (result && curVersion === updateManager.docChangedVersion) {
|
|
129
|
+
await reportDiagnostics(result);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
109
132
|
const capabilities = {
|
|
110
133
|
textDocumentSync: TextDocumentSyncKind.Incremental,
|
|
111
134
|
definitionProvider: true,
|
|
@@ -231,6 +254,12 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
231
254
|
coreInitTemplates: await getTypeSpecCoreTemplates(host.compilerHost),
|
|
232
255
|
};
|
|
233
256
|
}
|
|
257
|
+
async function compile(document, additionalOptions, serverCompileOptions) {
|
|
258
|
+
return compileService.compile(document, additionalOptions, serverCompileOptions);
|
|
259
|
+
}
|
|
260
|
+
async function compileInCoreMode(document) {
|
|
261
|
+
return compile(document, undefined, { mode: "core" });
|
|
262
|
+
}
|
|
234
263
|
async function validateInitProjectTemplate(param) {
|
|
235
264
|
const { template } = param;
|
|
236
265
|
// even when the strict validation fails, we still try to proceed with relaxed validation
|
|
@@ -265,8 +294,9 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
265
294
|
...param.options,
|
|
266
295
|
};
|
|
267
296
|
const result = await compileService.compile(param.doc, option, {
|
|
268
|
-
|
|
269
|
-
|
|
297
|
+
skipCache: true,
|
|
298
|
+
skipOldProgramFromCache: true,
|
|
299
|
+
mode: "full",
|
|
270
300
|
});
|
|
271
301
|
if (result === undefined) {
|
|
272
302
|
return {
|
|
@@ -285,6 +315,7 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
285
315
|
};
|
|
286
316
|
}
|
|
287
317
|
else {
|
|
318
|
+
result.tracker.getLogs().forEach((logItem) => host.log(logItem));
|
|
288
319
|
return {
|
|
289
320
|
hasError: result.program.hasError(),
|
|
290
321
|
diagnostics: result.program.diagnostics.map((diagnostic) => {
|
|
@@ -331,11 +362,15 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
331
362
|
}
|
|
332
363
|
}
|
|
333
364
|
const mainFile = await compileService.getMainFileForDocument(await fileService.getPath({ uri: firstFilePath.newUri }));
|
|
365
|
+
// There will be no event triggered if the renamed file is not opened in vscode, also even when it's opened
|
|
366
|
+
// there will be only closed and opened event triggered for the old and new file url, so send fire the update
|
|
367
|
+
// explicitly here to make sure the change is not missed.
|
|
368
|
+
updateManager.scheduleUpdate({ uri: fileService.getURL(mainFile) }, "renamed");
|
|
334
369
|
// Add this method to resolve timing issues between renamed files and `fs.stat`
|
|
335
370
|
// to prevent `fs.stat` from getting the files before modification.
|
|
336
371
|
// Currently the test requires a delay of 300ms
|
|
337
372
|
await new Promise((resolve) => setTimeout(resolve, 300));
|
|
338
|
-
const result = await
|
|
373
|
+
const result = await compileInCoreMode({ uri: fileService.getURL(mainFile) });
|
|
339
374
|
if (!result) {
|
|
340
375
|
log({
|
|
341
376
|
level: "debug",
|
|
@@ -459,12 +494,12 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
459
494
|
async function findDocumentHighlight(params) {
|
|
460
495
|
if (isTspConfigFile(params.textDocument))
|
|
461
496
|
return [];
|
|
462
|
-
const result = await
|
|
497
|
+
const result = await compileInCoreMode(params.textDocument);
|
|
463
498
|
if (result === undefined) {
|
|
464
499
|
return [];
|
|
465
500
|
}
|
|
466
501
|
const { program, document, script } = result;
|
|
467
|
-
if (!document) {
|
|
502
|
+
if (!document || !script) {
|
|
468
503
|
return [];
|
|
469
504
|
}
|
|
470
505
|
const identifiers = findReferenceIdentifiers(program, script, document.offsetAt(params.position), [script]);
|
|
@@ -473,10 +508,27 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
473
508
|
kind: DocumentHighlightKind.Read,
|
|
474
509
|
}));
|
|
475
510
|
}
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
511
|
+
function checkChange(change) {
|
|
512
|
+
const initVersion = fileService.getOpenDocumentInitVersion(change.document.uri);
|
|
513
|
+
if (!initVersion) {
|
|
514
|
+
// not expected, log something for troubleshooting
|
|
515
|
+
log({
|
|
516
|
+
level: "debug",
|
|
517
|
+
message: "Document change received for document not in documentsOpened set",
|
|
518
|
+
detail: change.document.uri,
|
|
519
|
+
});
|
|
520
|
+
documentOpened(change);
|
|
521
|
+
}
|
|
522
|
+
else if (initVersion < change.document.version) {
|
|
523
|
+
compileService.notifyChange(change.document, "changed");
|
|
524
|
+
}
|
|
525
|
+
else {
|
|
526
|
+
// do nothing for initVersion === change.document.version which should have been handled by didOpen event
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
function documentOpened(change) {
|
|
530
|
+
fileService.notifyDocumentOpened(change);
|
|
531
|
+
compileService.notifyChange(change.document, "opened");
|
|
480
532
|
}
|
|
481
533
|
async function reportDiagnostics({ program, document, optionsFromConfig }) {
|
|
482
534
|
if (!document)
|
|
@@ -493,9 +545,19 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
493
545
|
const diagnosticMap = new Map();
|
|
494
546
|
diagnosticMap.set(document, []);
|
|
495
547
|
for (const each of program.sourceFiles.values()) {
|
|
496
|
-
const
|
|
497
|
-
if (
|
|
498
|
-
diagnosticMap.set(
|
|
548
|
+
const saved = each.file?.document;
|
|
549
|
+
if (saved) {
|
|
550
|
+
diagnosticMap.set(saved, []);
|
|
551
|
+
}
|
|
552
|
+
else {
|
|
553
|
+
// The file may be opened later when the compile used as cache
|
|
554
|
+
// so double check the fileService for opened document. Since
|
|
555
|
+
// TextDocuments will always return the same TextDocument instance
|
|
556
|
+
// so we should be good to use the TextDocument as the key here.
|
|
557
|
+
const opened = fileService.getOpenDocument(each.file.path);
|
|
558
|
+
if (opened) {
|
|
559
|
+
diagnosticMap.set(opened, []);
|
|
560
|
+
}
|
|
499
561
|
}
|
|
500
562
|
}
|
|
501
563
|
for (const each of program.diagnostics) {
|
|
@@ -551,12 +613,12 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
551
613
|
async function getHover(params) {
|
|
552
614
|
if (isTspConfigFile(params.textDocument))
|
|
553
615
|
return { contents: [] };
|
|
554
|
-
const result = await
|
|
616
|
+
const result = await compileInCoreMode(params.textDocument);
|
|
555
617
|
if (result === undefined) {
|
|
556
618
|
return { contents: [] };
|
|
557
619
|
}
|
|
558
620
|
const { program, document, script } = result;
|
|
559
|
-
if (!document) {
|
|
621
|
+
if (!document || !script) {
|
|
560
622
|
return { contents: [] };
|
|
561
623
|
}
|
|
562
624
|
const id = getNodeAtPosition(script, document.offsetAt(params.position));
|
|
@@ -598,12 +660,12 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
598
660
|
async function getSignatureHelp(params) {
|
|
599
661
|
if (isTspConfigFile(params.textDocument))
|
|
600
662
|
return undefined;
|
|
601
|
-
const result = await
|
|
663
|
+
const result = await compileInCoreMode(params.textDocument);
|
|
602
664
|
if (result === undefined) {
|
|
603
665
|
return undefined;
|
|
604
666
|
}
|
|
605
667
|
const { script, document, program } = result;
|
|
606
|
-
if (!document) {
|
|
668
|
+
if (!document || !script) {
|
|
607
669
|
return undefined;
|
|
608
670
|
}
|
|
609
671
|
const data = getSignatureHelpNodeAtPosition(script, document.offsetAt(params.position));
|
|
@@ -733,8 +795,18 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
733
795
|
level: "info",
|
|
734
796
|
message: `Formatting TypeSpec document: ${JSON.stringify({ fileUri: params.textDocument.uri, vscodeOptions: params.options, prettierConfig, resolvedConfig }, null, 2)}`,
|
|
735
797
|
});
|
|
736
|
-
|
|
737
|
-
|
|
798
|
+
try {
|
|
799
|
+
const formattedText = await formatTypeSpec(document.getText(), resolvedConfig);
|
|
800
|
+
return [minimalEdit(document, formattedText)];
|
|
801
|
+
}
|
|
802
|
+
catch (error) {
|
|
803
|
+
log({
|
|
804
|
+
level: "error",
|
|
805
|
+
message: `Failed to format TypeSpec document: ${params.textDocument.uri}`,
|
|
806
|
+
detail: error,
|
|
807
|
+
});
|
|
808
|
+
return [];
|
|
809
|
+
}
|
|
738
810
|
}
|
|
739
811
|
async function resolvePrettierConfig(path) {
|
|
740
812
|
try {
|
|
@@ -768,8 +840,8 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
768
840
|
async function gotoDefinition(params) {
|
|
769
841
|
if (isTspConfigFile(params.textDocument))
|
|
770
842
|
return [];
|
|
771
|
-
const result = await
|
|
772
|
-
if (result === undefined || result.document === undefined) {
|
|
843
|
+
const result = await compileInCoreMode(params.textDocument);
|
|
844
|
+
if (result === undefined || result.document === undefined || result.script === undefined) {
|
|
773
845
|
return [];
|
|
774
846
|
}
|
|
775
847
|
const node = getNodeAtPosition(result.script, result.document.offsetAt(params.position));
|
|
@@ -828,10 +900,10 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
828
900
|
isIncomplete: false,
|
|
829
901
|
items: [],
|
|
830
902
|
};
|
|
831
|
-
const result = await
|
|
903
|
+
const result = await compileInCoreMode(params.textDocument);
|
|
832
904
|
if (result) {
|
|
833
905
|
const { script, document, program } = result;
|
|
834
|
-
if (!document) {
|
|
906
|
+
if (!document || !script) {
|
|
835
907
|
return completions;
|
|
836
908
|
}
|
|
837
909
|
const posDetail = getCompletionNodeAtPosition(script, document.offsetAt(params.position));
|
|
@@ -847,8 +919,8 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
847
919
|
async function findReferences(params) {
|
|
848
920
|
if (isTspConfigFile(params.textDocument))
|
|
849
921
|
return [];
|
|
850
|
-
const result = await
|
|
851
|
-
if (result === undefined || result.document === undefined) {
|
|
922
|
+
const result = await compileInCoreMode(params.textDocument);
|
|
923
|
+
if (result === undefined || result.document === undefined || result.script === undefined) {
|
|
852
924
|
return [];
|
|
853
925
|
}
|
|
854
926
|
const identifiers = findReferenceIdentifiers(result.program, result.script, result.document.offsetAt(params.position));
|
|
@@ -857,8 +929,8 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
857
929
|
async function prepareRename(params) {
|
|
858
930
|
if (isTspConfigFile(params.textDocument))
|
|
859
931
|
return undefined;
|
|
860
|
-
const result = await
|
|
861
|
-
if (result === undefined || result.document === undefined) {
|
|
932
|
+
const result = await compileInCoreMode(params.textDocument);
|
|
933
|
+
if (result === undefined || result.document === undefined || result.script === undefined) {
|
|
862
934
|
return undefined;
|
|
863
935
|
}
|
|
864
936
|
const id = getNodeAtPosition(result.script, result.document.offsetAt(params.position));
|
|
@@ -868,8 +940,8 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
868
940
|
if (isTspConfigFile(params.textDocument))
|
|
869
941
|
return { changes: {} };
|
|
870
942
|
const changes = {};
|
|
871
|
-
const result = await
|
|
872
|
-
if (result && result.document) {
|
|
943
|
+
const result = await compileInCoreMode(params.textDocument);
|
|
944
|
+
if (result && result.document && result.script) {
|
|
873
945
|
const identifiers = findReferenceIdentifiers(result.program, result.script, result.document.offsetAt(params.position));
|
|
874
946
|
for (const id of identifiers) {
|
|
875
947
|
const location = getLocation(id);
|
|
@@ -1009,6 +1081,7 @@ export function createServer(host, clientConfigsProvider) {
|
|
|
1009
1081
|
}
|
|
1010
1082
|
}
|
|
1011
1083
|
function documentClosed(change) {
|
|
1084
|
+
fileService.notifyDocumentClosed(change);
|
|
1012
1085
|
// clear diagnostics on file close
|
|
1013
1086
|
sendDiagnostics(change.document, []);
|
|
1014
1087
|
}
|