diff --git a/AST/Type.cpp b/AST/Type.cpp
index 7deee66..af07d7a 100644
--- a/AST/Type.cpp
+++ b/AST/Type.cpp
@@ -858,14 +858,18 @@
 
 void ObjcQualifiedInterfaceType::getAsStringInternal(
                                   std::string &InnerString) const {
-  InnerString = getInterfaceType()->getDecl()->getName() + '<';
+  if (!InnerString.empty())    // Prefix the basic type, e.g. 'typedefname X'.
+    InnerString = ' ' + InnerString;
+  std::string ObjcQIString = getInterfaceType()->getDecl()->getName();
+  ObjcQIString += '<';
   int num = getNumProtocols();
   for (int i = 0; i < num; i++) {
-    InnerString += getProtocols(i)->getName();
+    ObjcQIString += getProtocols(i)->getName();
     if (i < num-1)
-      InnerString += ',';
+      ObjcQIString += ',';
   }
-  InnerString += '>';
+  ObjcQIString += '>';
+  InnerString = ObjcQIString + InnerString;
 }
 
 void TagType::getAsStringInternal(std::string &InnerString) const {
diff --git a/Parse/ParseStmt.cpp b/Parse/ParseStmt.cpp
index ad6f393..9df20b4 100644
--- a/Parse/ParseStmt.cpp
+++ b/Parse/ParseStmt.cpp
@@ -235,6 +235,16 @@
                                        IdentTok.getLocation(), PrevSpec,
                                        TypeRep);
     assert(!isInvalid && "First declspec can't be invalid!");
+    if (Tok.is(tok::less)) {
+      llvm::SmallVector<IdentifierInfo *, 8> ProtocolRefs;
+      ParseObjCProtocolReferences(ProtocolRefs);
+      llvm::SmallVector<DeclTy *, 8> *ProtocolDecl = 
+              new llvm::SmallVector<DeclTy *, 8>;
+      DS.setProtocolQualifiers(ProtocolDecl);
+      Actions.FindProtocolDeclaration(IdentTok.getLocation(), 
+                                      &ProtocolRefs[0], ProtocolRefs.size(),
+                                      *ProtocolDecl);
+    }    
     
     // ParseDeclarationSpecifiers will continue from there.
     ParseDeclarationSpecifiers(DS);
diff --git a/test/Parser/objc-type-printing.m b/test/Parser/objc-type-printing.m
new file mode 100644
index 0000000..5d3cbd9
--- /dev/null
+++ b/test/Parser/objc-type-printing.m
@@ -0,0 +1,19 @@
+// RUN: clang -ast-print %s
+
+@protocol P1 @end
+@protocol P2 @end
+@protocol P3 @end
+
+@interface INTF 
+- (INTF<P1>*) METH;
+@end
+
+void foo()
+{
+        INTF *pintf;
+	INTF<P1>* p1;
+	INTF<P1, P1>* p2;
+	INTF<P1, P3>* p3;
+	INTF<P1, P3, P2>* p4;
+	INTF<P2,P2, P3, P1>* p5;
+}
