From 9d6c9dbb88593dea995072ba812f115a51ea2b4b Mon Sep 17 00:00:00 2001 From: Ben Woosley Date: Mon, 21 May 2018 20:20:24 -0700 Subject: [PATCH] lint: Add linter to error on #include <*.cpp> Files should depend on one another by interface, not by implementation. This checks for quoted includes as well. With practicalswift --- test/lint/lint-includes.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/lint/lint-includes.sh b/test/lint/lint-includes.sh index 7cab0ca4d1..2c3456b644 100755 --- a/test/lint/lint-includes.sh +++ b/test/lint/lint-includes.sh @@ -33,6 +33,14 @@ for CPP_FILE in $(filter_suffix cpp); do fi done +INCLUDED_CPP_FILES=$(git grep -E "^#include [<\"][^>\"]+\.cpp[>\"]" -- "*.cpp" "*.h") +if [[ ${INCLUDED_CPP_FILES} != "" ]]; then + echo "The following files #include .cpp files:" + echo "${INCLUDED_CPP_FILES}" + echo + EXIT_CODE=1 +fi + EXPECTED_BOOST_INCLUDES=( boost/algorithm/string.hpp boost/algorithm/string/case_conv.hpp