diff --git a/src/libs/clangbackendipc/codecompletion.cpp b/src/libs/clangbackendipc/codecompletion.cpp
index f67f7dad04f1df3d36a447c2cd45713a9c509cdf..e2f4753982e60ebb5f709448314158b9e2880dcd 100644
--- a/src/libs/clangbackendipc/codecompletion.cpp
+++ b/src/libs/clangbackendipc/codecompletion.cpp
@@ -177,6 +177,7 @@ static const char *completionKindToString(CodeCompletion::Kind kind)
         case CodeCompletion::DestructorCompletionKind: return "Destructor";
         case CodeCompletion::VariableCompletionKind: return "Variable";
         case CodeCompletion::ClassCompletionKind: return "Class";
+        case CodeCompletion::TypeAliasCompletionKind: return "TypeAlias";
         case CodeCompletion::TemplateClassCompletionKind: return "TemplateClass";
         case CodeCompletion::EnumerationCompletionKind: return "Enumeration";
         case CodeCompletion::EnumeratorCompletionKind: return "Enumerator";
diff --git a/src/libs/clangbackendipc/codecompletion.h b/src/libs/clangbackendipc/codecompletion.h
index 059496bc547df07d6a602450278e625729974b96..5d29a225763ddff77f1612f6caf9a10b533bec68 100644
--- a/src/libs/clangbackendipc/codecompletion.h
+++ b/src/libs/clangbackendipc/codecompletion.h
@@ -62,6 +62,7 @@ public:
         DestructorCompletionKind,
         VariableCompletionKind,
         ClassCompletionKind,
+        TypeAliasCompletionKind,
         TemplateClassCompletionKind,
         EnumerationCompletionKind,
         EnumeratorCompletionKind,
diff --git a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp
index fe437f52fca03fab9555b4781972678daded0ae7..0cd362d4da2c09e99c09cabf1bb54332e6b4637d 100644
--- a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp
+++ b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp
@@ -118,6 +118,7 @@ QList<AssistProposalItem *> toAssistProposalItems(const CodeCompletions &complet
         switch (ccr.completionKind()) {
         case CodeCompletion::ClassCompletionKind:
         case CodeCompletion::TemplateClassCompletionKind:
+        case CodeCompletion::TypeAliasCompletionKind:
             item->setIcon(m_icons.iconForType(Icons::ClassIconType)); break;
         case CodeCompletion::EnumerationCompletionKind: item->setIcon(m_icons.iconForType(Icons::EnumIconType)); break;
         case CodeCompletion::EnumeratorCompletionKind: item->setIcon(m_icons.iconForType(Icons::EnumeratorIconType)); break;
@@ -178,6 +179,7 @@ QList<AssistProposalItem *> toAssistProposalItems(const CodeCompletions &complet
             break;
 
         case CodeCompletion::Other:
+            item->setIcon(m_icons.iconForType(Icons::UnknownIconType));
             break;
         }
     }
diff --git a/src/tools/clangbackend/ipcsource/codecompletionsextractor.cpp b/src/tools/clangbackend/ipcsource/codecompletionsextractor.cpp
index 311cde61ae0c5a506081430ebeb693f6906837ce..3e56090f8302af5424d7e37d1d723db169faca90 100644
--- a/src/tools/clangbackend/ipcsource/codecompletionsextractor.cpp
+++ b/src/tools/clangbackend/ipcsource/codecompletionsextractor.cpp
@@ -126,6 +126,10 @@ void CodeCompletionsExtractor::extractCompletionKind()
         case CXCursor_TemplateTypeParameter:
             currentCodeCompletion_.setCompletionKind(CodeCompletion::ClassCompletionKind);
             break;
+        case CXCursor_TypedefDecl:
+        case CXCursor_TypeAliasDecl:
+            currentCodeCompletion_.setCompletionKind(CodeCompletion::TypeAliasCompletionKind);
+            break;
         case CXCursor_ClassTemplatePartialSpecialization:
         case CXCursor_ClassTemplate:
         case CXCursor_TemplateTemplateParameter:
diff --git a/tests/unit/unittest/codecompletionsextractortest.cpp b/tests/unit/unittest/codecompletionsextractortest.cpp
index cf31413085b0f26fae7e5c9690cf00981015adbf..d9f070a3baf4e6af169c648bd3da7507753f9182 100644
--- a/tests/unit/unittest/codecompletionsextractortest.cpp
+++ b/tests/unit/unittest/codecompletionsextractortest.cpp
@@ -281,6 +281,28 @@ TEST_F(CodeCompletionsExtractor, Union)
                                          CodeCompletion::Available));
 }
 
+TEST_F(CodeCompletionsExtractor, Typedef)
+{
+    ClangCodeCompleteResults completeResults(getResults(classTranslationUnit, 20));
+
+    ::CodeCompletionsExtractor extractor(completeResults.data());
+
+    ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("TypeDef"),
+                                         CodeCompletion::TypeAliasCompletionKind,
+                                         CodeCompletion::Available));
+}
+
+TEST_F(CodeCompletionsExtractor, UsingAsTypeAlias)
+{
+    ClangCodeCompleteResults completeResults(getResults(classTranslationUnit, 20));
+
+    ::CodeCompletionsExtractor extractor(completeResults.data());
+
+    ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("UsingClass"),
+                                         CodeCompletion::TypeAliasCompletionKind,
+                                         CodeCompletion::Available));
+}
+
 TEST_F(CodeCompletionsExtractor, TemplateTypeParameter)
 {
     ClangCodeCompleteResults completeResults(getResults(classTranslationUnit, 20));
diff --git a/tests/unit/unittest/data/complete_extractor_class.cpp b/tests/unit/unittest/data/complete_extractor_class.cpp
index becfdc3292408de8637ad9b880465b3a72be6c2d..218b5fbe25de5d32b3e65649a98bce99d22d696f 100644
--- a/tests/unit/unittest/data/complete_extractor_class.cpp
+++ b/tests/unit/unittest/data/complete_extractor_class.cpp
@@ -2,6 +2,7 @@ class Class {};
 struct Struct{};
 union Union{};
 typedef Class TypeDef;
+using UsingClass = Class;
 template<class T> class TemplateClass{};
 template<class T> class ClassTemplatePartialSpecialization;
 template<class T> class ClassTemplatePartialSpecialization<T*>;
@@ -13,7 +14,6 @@ template<class T> class ClassTemplatePartialSpecialization<T*>;
 
 
 
-
 template<class TemplateTypeParameter, template<class> class TemplateTemplateParameter>
 void function()
 {