"default": false,
"type": "boolean"
},
+ "rust-analyzer.diagnostics.useRustcErrorCode": {
+ "markdownDescription": "Whether to use the rustc error code.",
+ "default": false,
+ "type": "boolean"
+ },
"$generated-start": {},
"rust-analyzer.assist.emitMustUse": {
"markdownDescription": "Whether to insert #[must_use] when generating `as_` methods\nfor enum variants.",
next: lc.HandleDiagnosticsSignature
) {
const preview = config.previewRustcOutput;
+ const errorCode = config.useRustcErrorCode;
diagnostics.forEach((diag, idx) => {
// Abuse the fact that VSCode leaks the LSP diagnostics data field through the
// Diagnostic class, if they ever break this we are out of luck and have to go
?.rendered;
if (rendered) {
if (preview) {
- const index = rendered.match(/^(note|help):/m)?.index || 0;
+ const index =
+ rendered.match(/^(note|help):/m)?.index || rendered.length;
diag.message = rendered
.substring(0, index)
.replace(/^ -->[^\n]+\n/m, "");
}
+ let value;
+ if (errorCode) {
+ if (typeof diag.code === "string" || typeof diag.code === "number") {
+ value = diag.code;
+ } else {
+ value = diag.code?.value;
+ }
+ }
diag.code = {
target: vscode.Uri.from({
scheme: "rust-analyzer-diagnostics-view",
fragment: uri.toString(),
query: idx.toString(),
}),
- value: "Click for full compiler diagnostic",
+ value: value ?? "Click for full compiler diagnostic",
};
}
});
get previewRustcOutput() {
return this.get<boolean>("diagnostics.previewRustcOutput");
}
+
+ get useRustcErrorCode() {
+ return this.get<boolean>("diagnostics.useRustcErrorCode");
+ }
}
const VarRegex = new RegExp(/\$\{(.+?)\}/g);