Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions crates/base-db/src/diagnostics_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ pub struct SlangDiagnosticsConfig {
pub struct DiagnosticRule {
pub selector: DiagnosticSelector,
pub severity: DiagnosticRuleSeverity,
pub force: bool,
}

#[derive(Debug, Clone, PartialEq, Eq)]
Expand Down Expand Up @@ -126,7 +125,6 @@ mod tests {
rules: vec![DiagnosticRule {
selector: DiagnosticSelector::Source(DiagnosticSource::Parse),
severity: DiagnosticRuleSeverity::Ignore,
force: false,
}],
},
..DiagnosticsConfig::default()
Expand Down
5 changes: 0 additions & 5 deletions editors/vscode/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -321,11 +321,6 @@
"fatal"
],
"description": "%configuration.diagnostics.slang.rules.severity.description%"
},
"force": {
"type": "boolean",
"default": false,
"description": "%configuration.diagnostics.slang.rules.force.description%"
}
},
"additionalProperties": false
Expand Down
1 change: 0 additions & 1 deletion editors/vscode/package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
"configuration.diagnostics.slang.rules.markdownDescription": "Rules that filter or override diagnostic severities. Supported selectors: `code:<subsystem>:<code>`, `option:<name>`, `group:<name>`, `source:parse`, `source:semantic`.",
"configuration.diagnostics.slang.rules.selector.markdownDescription": "Diagnostic selector. Examples: `code:1:2`, `option:unconnected-port`, `group:default`, `source:semantic`.",
"configuration.diagnostics.slang.rules.severity.description": "Severity to apply when this rule matches. Use ignore to hide the diagnostic.",
"configuration.diagnostics.slang.rules.force.description": "Reserved for future support for overriding in-source diagnostic pragmas.",
"configuration.signature.help.params.only.description": "Show signature help for parameters only.",
"command.showOutput.title": "Vizsla: Show Language Server Output",
"command.restartServer.title": "Vizsla: Restart Language Server",
Expand Down
1 change: 0 additions & 1 deletion editors/vscode/package.nls.zh-cn.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
"configuration.diagnostics.slang.rules.markdownDescription": "过滤或覆盖诊断严重程度的规则。支持的选择器:`code:<subsystem>:<code>`、`option:<name>`、`group:<name>`、`source:parse`、`source:semantic`。",
"configuration.diagnostics.slang.rules.selector.markdownDescription": "诊断选择器。示例:`code:1:2`、`option:unconnected-port`、`group:default`、`source:semantic`。",
"configuration.diagnostics.slang.rules.severity.description": "此规则匹配时应用的严重程度。使用 ignore 可隐藏该诊断。",
"configuration.diagnostics.slang.rules.force.description": "预留给未来覆盖源代码内诊断 pragma 的支持。",
"configuration.signature.help.params.only.description": "仅显示参数的签名帮助。",
"command.showOutput.title": "Vizsla:显示语言服务器输出",
"command.restartServer.title": "Vizsla:重启语言服务器",
Expand Down
1 change: 0 additions & 1 deletion editors/vscode/src/diagnosticRules.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ export type DiagnosticRuleSeverity = 'ignore' | 'info' | 'warning' | 'error' | '
export interface DiagnosticRule {
selector: string;
severity: DiagnosticRuleSeverity;
force?: boolean;
}

export type DiagnosticRuleTarget = 'user' | 'workspace';
Expand Down
18 changes: 18 additions & 0 deletions editors/vscode/test/configuration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ type PackageJson = {
};
};

type JsonObject = Record<string, unknown>;

function readJson<T>(fileName: string): T {
return JSON.parse(fs.readFileSync(path.join(__dirname, '..', fileName), 'utf8')) as T;
}
Expand All @@ -28,6 +30,13 @@ function readConfigurationProperties(): Record<string, unknown> {
return packageJson.contributes?.configuration?.properties ?? {};
}

function asObject(value: unknown): JsonObject {
assert.equal(typeof value, 'object');
assert.notEqual(value, null);

return value as JsonObject;
}

function collectNlsPlaceholders(value: unknown, keys = new Set<string>()): Set<string> {
if (typeof value === 'string') {
const match = /^%([^%]+)%$/.exec(value);
Expand Down Expand Up @@ -121,6 +130,15 @@ test('does not expose the old vizslaLsp settings namespace', () => {
assert.deepEqual(oldSettings, []);
});

test('does not expose inactive diagnostic rule options', () => {
const properties = readConfigurationProperties();
const rules = asObject(properties['vizsla.diagnostics.slang.rules']);
const items = asObject(rules.items);
const itemProperties = asObject(items.properties);

assert.equal('force' in itemProperties, false);
});

test('localizes package contribution strings for English and Simplified Chinese', () => {
const packageJson = readPackageJson();
const placeholderKeys = [...collectNlsPlaceholders(packageJson)].sort();
Expand Down
4 changes: 2 additions & 2 deletions editors/vscode/test/diagnosticRules.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ test('renders concise diagnostic selector labels', () => {
test('upserts diagnostic severity rules by selector', () => {
assert.deepEqual(
upsertDiagnosticRule(
[{ selector: 'code:6:129', severity: 'error', force: true }],
[{ selector: 'code:6:129', severity: 'error' }],
'code:6:129',
'warning',
),
[{ selector: 'code:6:129', severity: 'warning', force: true }],
[{ selector: 'code:6:129', severity: 'warning' }],
);

assert.deepEqual(upsertDiagnosticRule([], 'code:2:260', 'ignore'), [
Expand Down
10 changes: 7 additions & 3 deletions src/config/user_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,6 @@ pub(crate) struct SlangDiagnosticsUserConfig {
pub(crate) struct DiagnosticRuleUserConfig {
pub(crate) selector: String,
pub(crate) severity: DiagnosticRuleSeverityUserConfig,
#[serde(default)]
pub(crate) force: bool,
}

#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
Expand Down Expand Up @@ -248,7 +246,6 @@ impl DiagnosticRuleUserConfig {
Some(DiagnosticRule {
selector: parse_selector(&self.selector)?,
severity: self.severity.into(),
force: self.force,
})
}
}
Expand Down Expand Up @@ -380,6 +377,13 @@ fn parses_nested_diagnostics_config() {
assert!(!config.semantic.enabled);
assert_eq!(config.slang.warnings, ["default", "no-unused"]);
assert_eq!(config.slang.rules.len(), 2);
assert_eq!(
config.slang.rules[1],
DiagnosticRule {
selector: DiagnosticSelector::Code { subsystem: 1, code: 2 },
severity: DiagnosticRuleSeverity::Error,
}
);
}

#[test]
Expand Down
Loading