diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index dec32a42345aacb2073c5db9605a3d987eb2eaf4..4395330ca5e4a1d301c8c4d43471f97b94bc85c0 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -737,6 +737,7 @@ bool Check::visit(Block *ast)
     if (Node *p = parent()) {
         if (_options & WarnBlocks
                 && !cast<UiScriptBinding *>(p)
+                && !cast<UiPublicMember *>(p)
                 && !cast<TryStatement *>(p)
                 && !cast<Catch *>(p)
                 && !cast<Finally *>(p)
@@ -751,6 +752,12 @@ bool Check::visit(Block *ast)
                 && !cast<WithStatement *>(p)) {
             warning(ast->lbraceToken, tr("blocks do not introduce a new scope, avoid"));
         }
+        if (!ast->statements
+                && (cast<UiPublicMember *>(p)
+                    || cast<UiScriptBinding *>(p))) {
+            warning(locationFromRange(ast->firstSourceLocation(), ast->lastSourceLocation()),
+                    tr("unintentional empty block, use ({}) for empty object literal"));
+        }
     }
     return true;
 }