From 88df3100e9a402184c900bf6958a68cfc546b738 Mon Sep 17 00:00:00 2001 From: Artemy Fedotov Date: Mon, 14 Sep 2026 21:08:04 +0400 Subject: [PATCH 1/2] lint: Allow signal names that start with `_` to be considered as snake_case --- src/linter/regex_patterns.rs | 4 ++-- src/linter/rules/signal_name.rs | 4 ++-- tests/lint/expected/signal_name.txt | 5 ++--- tests/lint/input/signal_name.gd | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/linter/regex_patterns.rs b/src/linter/regex_patterns.rs index aca7968..ef3e439 100644 --- a/src/linter/regex_patterns.rs +++ b/src/linter/regex_patterns.rs @@ -11,7 +11,7 @@ macro_rules! static_regex { } static_regex!(SNAKE_CASE, r"^[a-z][a-z0-9_]*$"); -static_regex!(PRIVATE_SNAKE_CASE, r"^_[a-z][a-z0-9_]*$"); +static_regex!(PRIVATE_SNAKE_CASE, r"^_+[a-z][a-z0-9_]*$"); static_regex!(PASCAL_CASE, r"^[A-Z][a-zA-Z0-9]*$"); static_regex!(CONSTANT_CASE, r"^[A-Z][A-Z0-9_]*$"); -static_regex!(PRIVATE_CONSTANT_CASE, r"^_[A-Z][A-Z0-9_]*$"); +static_regex!(PRIVATE_CONSTANT_CASE, r"^_+[A-Z][A-Z0-9_]*$"); diff --git a/src/linter/rules/signal_name.rs b/src/linter/rules/signal_name.rs index 58ccd91..2168aaa 100644 --- a/src/linter/rules/signal_name.rs +++ b/src/linter/rules/signal_name.rs @@ -1,5 +1,5 @@ use crate::linter::lib::{get_line_column, get_node_text}; -use crate::linter::regex_patterns::SNAKE_CASE; +use crate::linter::regex_patterns::{PRIVATE_SNAKE_CASE, SNAKE_CASE}; use crate::linter::rules::Rule; use crate::linter::{LintIssue, LintSeverity}; use crate::node_kind::GDScriptNodeKind; @@ -8,7 +8,7 @@ pub struct SignalNameRule; impl SignalNameRule { fn is_valid_signal_name(name: &str) -> bool { - SNAKE_CASE.is_match(name) + SNAKE_CASE.is_match(name) || PRIVATE_SNAKE_CASE.is_match(name) } } diff --git a/tests/lint/expected/signal_name.txt b/tests/lint/expected/signal_name.txt index 3ffb555..45a29f1 100644 --- a/tests/lint/expected/signal_name.txt +++ b/tests/lint/expected/signal_name.txt @@ -1,3 +1,2 @@ -tests/lint/input/signal_name.gd:9:signal-name:error: Signal name 'BadSignal' should be in snake_case format -tests/lint/input/signal_name.gd:10:signal-name:error: Signal name '_bad_signal' should be in snake_case format -tests/lint/input/signal_name.gd:11:signal-name:error: Signal name 'badSignal' should be in snake_case format \ No newline at end of file +tests/lint/input/signal_name.gd:10:signal-name:error: Signal name 'BadSignal' should be in snake_case format +tests/lint/input/signal_name.gd:11:signal-name:error: Signal name 'badSignal' should be in snake_case format diff --git a/tests/lint/input/signal_name.gd b/tests/lint/input/signal_name.gd index f5073d5..7f1296b 100644 --- a/tests/lint/input/signal_name.gd +++ b/tests/lint/input/signal_name.gd @@ -1,13 +1,13 @@ #region Good signal good_signal(var1: int, var2: String) +signal _good_signal(var1: int, var2: String) #endregion #region Bad signal BadSignal(var1: int, var2: String) -signal _bad_signal(var1: int, var2: String) signal badSignal(var1: int, var2: String) #endregion From 03a0677f8b49b92e9ff59c2df334420cfb36cf08 Mon Sep 17 00:00:00 2001 From: Nathan Lovato <12694995+NathanLovato@users.noreply.github.com> Date: Tue, 15 Sep 2026 12:20:45 +0200 Subject: [PATCH 2/2] Add test case for signal with pseudo-private signal with multiple leading underscores --- tests/lint/expected/signal_name.txt | 4 ++-- tests/lint/input/signal_name.gd | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/lint/expected/signal_name.txt b/tests/lint/expected/signal_name.txt index 45a29f1..d06f321 100644 --- a/tests/lint/expected/signal_name.txt +++ b/tests/lint/expected/signal_name.txt @@ -1,2 +1,2 @@ -tests/lint/input/signal_name.gd:10:signal-name:error: Signal name 'BadSignal' should be in snake_case format -tests/lint/input/signal_name.gd:11:signal-name:error: Signal name 'badSignal' should be in snake_case format +tests/lint/input/signal_name.gd:11:signal-name:error: Signal name 'BadSignal' should be in snake_case format +tests/lint/input/signal_name.gd:12:signal-name:error: Signal name 'badSignal' should be in snake_case format diff --git a/tests/lint/input/signal_name.gd b/tests/lint/input/signal_name.gd index 7f1296b..179318e 100644 --- a/tests/lint/input/signal_name.gd +++ b/tests/lint/input/signal_name.gd @@ -1,7 +1,8 @@ #region Good -signal good_signal(var1: int, var2: String) -signal _good_signal(var1: int, var2: String) +signal public_signal(var1: int, var2: String) +signal _pseudo_private(var1: int, var2: String) +signal __also_valid_pseudo_private(var1: int, var2: String) #endregion