@@ -53,3 +53,67 @@ num-traits = { version = "0.2", features = ["std"] }
5353mimalloc = " 0.1.47"
5454googletest = " 0.14.2"
5555unicode-general-category = " 1.0.0"
56+
57+ # Lint configuration for the entire workspace
58+ [workspace .lints .clippy ]
59+ # ==== Domain-Specific Allowances ====
60+ # These patterns are acceptable/necessary in parser/language-server projects
61+
62+ # Module inception is acceptable for AST/syntax organization
63+ module_inception = " allow"
64+
65+ # Enum variant name repetition is necessary for syntax tree clarity
66+ enum_variant_names = " allow"
67+
68+ # Parser methods often have domain-specific naming conventions
69+ wrong_self_convention = " allow"
70+
71+ # Box collections are sometimes needed for complex recursive structures
72+ box_collection = " allow"
73+
74+ # Parser constants shouldn't be confused with mathematical constants
75+ approx_constant = " allow"
76+
77+ # Complex cognitive complexity is acceptable for domain-specific logic
78+ cognitive_complexity = " allow"
79+
80+ # High type complexity threshold for domain modeling (see .clippy.toml for thresholds)
81+ type_complexity = " allow"
82+
83+ # Allow many arguments for builder patterns and comprehensive APIs
84+ too_many_arguments = " allow"
85+
86+ # ==== General Code Quality Allowances ====
87+ # Let-and-return is sometimes more readable for debugging
88+ let_and_return = " allow"
89+
90+ # Needless borrow warnings in test code are often false positives
91+ needless_borrow = " allow"
92+
93+ # Single component path imports are sometimes necessary
94+ single_component_path_imports = " allow"
95+
96+ # Bool assertion comparisons are explicit and readable
97+ bool_assert_comparison = " allow"
98+
99+ # Let unit value can be useful for side effects
100+ let_unit_value = " allow"
101+
102+ # Clone on copy can be more explicit about intent
103+ clone_on_copy = " allow"
104+
105+ # Collapsible if/match statements are sometimes more readable when separate
106+ collapsible_if = " allow"
107+ collapsible_match = " allow"
108+
109+ # Some functions need a Default implementation pattern without Default trait
110+ new_without_default = " allow"
111+
112+ # Manual implementations can be more explicit than derive
113+ manual_let_else = " allow"
114+
115+ # ==== Documentation Lints ====
116+ # Allow missing docs for internal/test functions
117+ missing_errors_doc = " allow"
118+ missing_panics_doc = " allow"
119+ undocumented_unsafe_blocks = " allow"
0 commit comments