diff --git a/lib/ASTMatchers/ASTMatchFinder.cpp b/lib/ASTMatchers/ASTMatchFinder.cpp
index a58d4f0..085049d 100644
--- a/lib/ASTMatchers/ASTMatchFinder.cpp
+++ b/lib/ASTMatchers/ASTMatchFinder.cpp
@@ -467,8 +467,9 @@ bool MatchASTVisitor::TraverseType(QualType TypeNode) {
 }
 
 bool MatchASTVisitor::TraverseTypeLoc(TypeLoc TypeLoc) {
+  match(TypeLoc.getType());
   return RecursiveASTVisitor<MatchASTVisitor>::
-      TraverseType(TypeLoc.getType());
+      TraverseTypeLoc(TypeLoc);
 }
 
 class MatchASTConsumer : public ASTConsumer {
diff --git a/unittests/ASTMatchers/ASTMatchersTest.cpp b/unittests/ASTMatchers/ASTMatchersTest.cpp
index 91095eb..8768baf 100644
--- a/unittests/ASTMatchers/ASTMatchersTest.cpp
+++ b/unittests/ASTMatchers/ASTMatchersTest.cpp
@@ -859,6 +859,12 @@ TEST(Matcher, VariableUsage) {
       "}", Reference));
 }
 
+TEST(Matcher, FindsVarDeclInFuncitonParameter) {
+  EXPECT_TRUE(matches(
+      "void f(int i) {}",
+      variable(hasName("i"))));
+}
+
 TEST(Matcher, CalledVariable) {
   StatementMatcher CallOnVariableY = expression(
       memberCall(on(declarationReference(to(variable(hasName("y")))))));
