diff --git a/lib/Parse/MinimalAction.cpp b/lib/Parse/MinimalAction.cpp
index 2b7b335..6fd5fc0 100644
--- a/lib/Parse/MinimalAction.cpp
+++ b/lib/Parse/MinimalAction.cpp
@@ -80,8 +80,8 @@
 ///
 /// FIXME: Use the passed CXXScopeSpec for accurate C++ type checking.
 Action::TypeTy *
-MinimalAction::isTypeName(IdentifierInfo &II, Scope *S,
-                          const CXXScopeSpec *SS) {
+MinimalAction::getTypeName(IdentifierInfo &II, Scope *S,
+                           const CXXScopeSpec *SS) {
   if (TypeNameInfo *TI = II.getFETokenInfo<TypeNameInfo>())
     if (TI->isTypeName)
       return TI;
diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp
index dc6768f..eb5cedd 100644
--- a/lib/Parse/ParseDecl.cpp
+++ b/lib/Parse/ParseDecl.cpp
@@ -484,8 +484,8 @@
           GetLookAheadToken(2).is(tok::l_paren))
         goto DoneWithDeclSpec;
 
-      TypeTy *TypeRep = Actions.isTypeName(*NextToken().getIdentifierInfo(),
-                                           CurScope, &SS);
+      TypeTy *TypeRep = Actions.getTypeName(*NextToken().getIdentifierInfo(),
+                                            CurScope, &SS);
       if (TypeRep == 0)
         goto DoneWithDeclSpec;
 
@@ -538,7 +538,7 @@
         goto DoneWithDeclSpec;
       
       // It has to be available as a typedef too!
-      TypeTy *TypeRep = Actions.isTypeName(*Tok.getIdentifierInfo(), CurScope);
+      TypeTy *TypeRep = Actions.getTypeName(*Tok.getIdentifierInfo(), CurScope);
       if (TypeRep == 0)
         goto DoneWithDeclSpec;
       
@@ -1736,8 +1736,8 @@
         // If this identifier is the name of the current class, it's a
         // constructor name. 
         else if (Actions.isCurrentClassName(*Tok.getIdentifierInfo(), CurScope))
-          D.setConstructor(Actions.isTypeName(*Tok.getIdentifierInfo(),
-                                              CurScope),
+          D.setConstructor(Actions.getTypeName(*Tok.getIdentifierInfo(),
+                                               CurScope),
                            Tok.getLocation());
         // This is a normal identifier.
         else
@@ -1994,7 +1994,7 @@
   // K&R-style function:  void foo(a,b,c)
   if (!getLang().CPlusPlus && Tok.is(tok::identifier)) {
 
-    TypeTy *TypeRep = Actions.isTypeName(*Tok.getIdentifierInfo(), CurScope);
+    TypeTy *TypeRep = Actions.getTypeName(*Tok.getIdentifierInfo(), CurScope);
     if (TypeRep) {
       // This is a typename. Replace the current token in-place with an
       // annotation type token.
@@ -2203,7 +2203,7 @@
     IdentifierInfo *ParmII = Tok.getIdentifierInfo();
 
     // Reject 'typedef int y; int test(x, y)', but continue parsing.
-    if (Actions.isTypeName(*ParmII, CurScope))
+    if (Actions.getTypeName(*ParmII, CurScope))
       Diag(Tok, diag::err_unexpected_typedef_ident) << ParmII;
     
     // Verify that the argument identifier has not already been mentioned.
diff --git a/lib/Parse/ParseDeclCXX.cpp b/lib/Parse/ParseDeclCXX.cpp
index ed4d1df..27b2d74 100644
--- a/lib/Parse/ParseDeclCXX.cpp
+++ b/lib/Parse/ParseDeclCXX.cpp
@@ -232,7 +232,7 @@
   }
 
   // We have an identifier; check whether it is actually a type.
-  TypeTy *Type = Actions.isTypeName(*Tok.getIdentifierInfo(), CurScope, SS);
+  TypeTy *Type = Actions.getTypeName(*Tok.getIdentifierInfo(), CurScope, SS);
   if (!Type) {
     Diag(Tok, diag::err_expected_class_name);
     return 0;
diff --git a/lib/Parse/Parser.cpp b/lib/Parse/Parser.cpp
index 0e1b222..33ce08e 100644
--- a/lib/Parse/Parser.cpp
+++ b/lib/Parse/Parser.cpp
@@ -737,7 +737,7 @@
 /// inside expressions to be treated as typenames so it will not be called
 /// for expressions in C.
 /// The benefit for C/ObjC is that a typename will be annotated and
-/// Actions.isTypeName will not be needed to be called again (e.g. isTypeName
+/// Actions.getTypeName will not be needed to be called again (e.g. getTypeName
 /// will not be called twice, once to check whether we have a declaration
 /// specifier, and another one to get the actual type inside
 /// ParseDeclarationSpecifiers).
@@ -757,8 +757,8 @@
 
   if (Tok.is(tok::identifier)) {
     // Determine whether the identifier is a type name.
-    if (TypeTy *Ty = Actions.isTypeName(*Tok.getIdentifierInfo(), 
-                                        CurScope, &SS)) {
+    if (TypeTy *Ty = Actions.getTypeName(*Tok.getIdentifierInfo(), 
+                                         CurScope, &SS)) {
       // This is a typename. Replace the current token in-place with an
       // annotation type token.
       Tok.setKind(tok::annot_typename);
