diff --git a/dumux/linear/istlsolverregistry.hh b/dumux/linear/istlsolverregistry.hh
index f32ae4a64783214334d09c011fa01f0746aba960..2746af7d0ee57d2a90b3cd5da72bff21fb8cf12d 100644
--- a/dumux/linear/istlsolverregistry.hh
+++ b/dumux/linear/istlsolverregistry.hh
@@ -35,11 +35,16 @@
  * DUMUX_REGISTER_PRECONDITIONER("mypreconditioner", Dumux::MultiTypeBlockMatrixPreconditionerTag, Dune::defaultPreconditionerBlockLevelCreator<Dumux::MyPreconditioner, 1>());
  * Expicitly specifying the namespaces is required.
  * Set parameter Preconditioner.Type to "mypreconditioner" to use it through the factory.
+ *
+ * In the macro implementation, the final static_assert forces implementers
+ * to put a semicolon after every DUMUX_REGISTER_PRECONDITIONER macro call (cf. example)
+ * and avoids a compiler warning for an empty line semicolon at the same time
  */
 #define DUMUX_REGISTER_PRECONDITIONER(name, tag, ...)                 \
 } namespace Dune {                                               \
 DUNE_REGISTRY_PUT(tag, name, __VA_ARGS__);  \
-} namespace Dumux {                                              \
+} namespace Dumux { \
+static_assert(true, "Require semicolon after macro call")
 
 namespace Dumux {
 namespace {