diff --git a/tests/manual/plain-cplusplus/main.cpp b/tests/manual/plain-cplusplus/main.cpp
index 7257d694b2e96d5a8fd9583632f8c4262a358ac7..0ab0dd47cc9487a2157e716e8e1106f94daae523 100644
--- a/tests/manual/plain-cplusplus/main.cpp
+++ b/tests/manual/plain-cplusplus/main.cpp
@@ -32,12 +32,12 @@
 #include <ASTVisitor.h>
 #include <Control.h>
 #include <Scope.h>
-#include <Semantic.h>
 #include <TranslationUnit.h>
 #include <Literals.h>
 #include <Symbols.h>
 #include <Names.h>
 #include <CoreTypes.h>
+#include <Bind.h>
 
 #include <string>
 #include <cstdlib>
@@ -126,11 +126,7 @@ void parse(const char *fileName, const char *source, unsigned size)
     unit.setSource(source, size);
     unit.parse();
 
-    if (TranslationUnitAST *ast = unit.ast()->asTranslationUnit()) {
-        Semantic sem(&unit);
-        Namespace *globalNamespace = control.newNamespace(0);
-        for (List<DeclarationAST *> *it = ast->declaration_list; it; it = it->next) {
-            sem.check(it->value, globalNamespace);
-        }
-    }
+    Namespace *globalNamespace = control.newNamespace(0);
+    Bind bind(&unit);
+    bind(unit.ast()->asTranslationUnit(), globalNamespace);
 }