diff --git a/lints/lints.json b/lints/lints.json index 8f8d7a4..fab170a 100644 --- a/lints/lints.json +++ b/lints/lints.json @@ -328,5 +328,16 @@ "is_multi_part_suggestion": false, "applicability": "Unresolved" } + }, + { + "id": "lint_filesystem", + "group": "correctness", + "level": "deny", + "impl": "typed", + "docs": "### What it does\nChecks that dune project tree is well formed\n\n### Why is is important?\n\nAll modules should have .mli interfaces.\nThe .mli files allow to\n\n* hide some structure items\n* write documentation for modules.\n* hide dependencies between modules (i.e. speedup compilation)\n\nWithout .mli files all your functions will be 'public' in the sence of C++ style OOP.\nUsually people autogenerate .mli files and all defined values in that time become public.\nZanuda is able to detect this via `zanuda -unused-decls .`.\nBut in some cases, .mli files may be too heavy, for example, when we write many type\ndeclarations (sort of AST) with deriving attributes.\nIn that case .mli file is almost identical to .ml.\nTo workaround this, this check allows file with a suffix 'ast.ml' not to have an .mli interface file.\n\nTODO: Add custom configuration for this.", + "applicability": { + "is_multi_part_suggestion": false, + "applicability": "Unresolved" + } } ] \ No newline at end of file