diff --git a/clang/Driver/PrintParserCallbacks.cpp b/clang/Driver/PrintParserCallbacks.cpp
index 7999da0..c04dbdc 100644
--- a/clang/Driver/PrintParserCallbacks.cpp
+++ b/clang/Driver/PrintParserCallbacks.cpp
@@ -312,29 +312,31 @@
       return StmtEmpty();
     }
 
-    virtual StmtResult ActOnWhileStmt(SourceLocation WhileLoc, ExprTy *Cond,
-                                      StmtTy *Body) {
+    virtual OwningStmtResult ActOnWhileStmt(SourceLocation WhileLoc,
+                                            ExprArg Cond, StmtArg Body) {
       llvm::cout << __FUNCTION__ << "\n";
-      return 0;
+      return StmtEmpty();
     }
-    virtual StmtResult ActOnDoStmt(SourceLocation DoLoc, StmtTy *Body,
-                                   SourceLocation WhileLoc, ExprTy *Cond) {
+    virtual OwningStmtResult ActOnDoStmt(SourceLocation DoLoc, StmtArg Body,
+                                         SourceLocation WhileLoc, ExprArg Cond){
       llvm::cout << __FUNCTION__ << "\n";
-      return 0;
+      return StmtEmpty();
     }
-    virtual StmtResult ActOnForStmt(SourceLocation ForLoc, 
-                                    SourceLocation LParenLoc, 
-                                    StmtTy *First, ExprTy *Second, ExprTy *Third,
-                                    SourceLocation RParenLoc, StmtTy *Body) {
+    virtual OwningStmtResult ActOnForStmt(SourceLocation ForLoc,
+                                        SourceLocation LParenLoc,
+                                        StmtArg First, ExprArg Second,
+                                        ExprArg Third, SourceLocation RParenLoc,
+                                        StmtArg Body) {
       llvm::cout << __FUNCTION__ << "\n";
-      return 0;
+      return StmtEmpty();
     }
-    virtual StmtResult ActOnObjCForCollectionStmt(SourceLocation ForColLoc, 
-                                                  SourceLocation LParenLoc, 
-                                                  StmtTy *First, ExprTy *Second,
-                                                  SourceLocation RParenLoc, StmtTy *Body) {
+    virtual OwningStmtResult ActOnObjCForCollectionStmt(
+                                       SourceLocation ForColLoc,
+                                       SourceLocation LParenLoc,
+                                       StmtArg First, ExprArg Second,
+                                       SourceLocation RParenLoc, StmtArg Body) {
       llvm::cout << __FUNCTION__ << "\n";
-      return 0;
+      return StmtEmpty();
     }
     virtual StmtResult ActOnGotoStmt(SourceLocation GotoLoc,
                                      SourceLocation LabelLoc,
