Proofing: -ically adverbs such as "specifically" are no longer flagged (#1694) (#1854)

* #1694: -ically adverbs are no longer flagged as misspelled

English spelling accepts "-ally" adverbs built on an "-ic" adjective in the
word list (specific → specifically, scientific → scientifically), as Word does.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* #1694: only -ic adjectives take -ally

Review (FredApps): the "-ally" → stem rule applied to every known word,
so "desktopally" was accepted. The rule is now "-ically" → "-ic"
(specifically → specific); other words don't take "-ally".

Test: non_ic_words_do_not_take_ally (desktop, house, final, green).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P8veLveuUsJJm6UEcQPEuW

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
This commit is contained in:
Martin Ball
2026-10-18 09:56:04 -04:00
committed by GitHub
co-authored by Claude Opus 5.5 Brandon Thomas
parent 7f4b649f6f
commit d4a3292834
2 changed files with 25 additions and 1 deletions
+24 -1
View File
@@ -315,7 +315,7 @@ fn known_core(w: &str) -> bool {
return true;
}
// Inflections.
let stems: [(&str, &[&str]); 12] = [
let stems: [(&str, &[&str]); 13] = [
("'s", &[""]),
("s", &[""]),
("es", &["", "e"]),
@@ -325,6 +325,8 @@ fn known_core(w: &str) -> bool {
("ing", &["", "e"]),
("ly", &["", "le"]),
("ily", &["y"]),
// specifically → specific (#1694): only -ic adjectives, so "desktopally" stays wrong.
("ically", &["ic"]),
("er", &["", "e"]),
("est", &["", "e"]),
("ness", &[""]),
@@ -924,6 +926,27 @@ mod tests {
assert!(suggest("Wrold", 3).contains(&"World".to_string()));
}
/// #1694: `-ically` adverbs come from their `-ic` adjective (specific → specifically).
#[test]
fn ically_adverbs_are_known() {
for w in ["specifically", "scientifically", "automatically", "dramatically", "Specifically"] {
assert!(is_correct(w), "{w}");
}
for w in ["specificaly", "specifcally", "zzzically"] {
assert!(!is_correct(w), "{w}");
}
}
/// #1694 review: only `-ic` adjectives take `-ally`; other known words (dictionary or
/// supplement) don't.
#[test]
fn non_ic_words_do_not_take_ally() {
for (base, wrong) in [("desktop", "desktopally"), ("house", "houseally"), ("final", "finalally"), ("green", "greenally")] {
assert!(is_correct(base), "{base}");
assert!(!is_correct(wrong), "{wrong}");
}
}
/// #520: common modern words (and their inflections) are known; misspellings still flagged.
#[test]
fn common_modern_words() {