diff --git a/shared/cplusplus/AST.cpp b/shared/cplusplus/AST.cpp
index 8cb625b4ad94723954ecda248080b4515193d91b..67813b9e7d26c70b8398e7c78c23e944c03f51c1 100644
--- a/shared/cplusplus/AST.cpp
+++ b/shared/cplusplus/AST.cpp
@@ -2624,10 +2624,15 @@ unsigned TypeIdAST::firstToken() const
 
 unsigned TypeIdAST::lastToken() const
 {
-    assert(0 && "review me");
     if (declarator)
         return declarator->lastToken();
-    return type_specifier->lastToken();
+
+    for (SpecifierAST *it = type_specifier; it; it = it->next) {
+        if (! it->next)
+            return it->lastToken();
+    }
+
+    return 0;
 }
 
 void TypeidExpressionAST::accept0(ASTVisitor *visitor)