diff --git a/shared/cplusplus/AST.cpp b/shared/cplusplus/AST.cpp
index 67813b9e7d26c70b8398e7c78c23e944c03f51c1..215a754441ee206f623424ec61fc4ed5bc0eb101 100644
--- a/shared/cplusplus/AST.cpp
+++ b/shared/cplusplus/AST.cpp
@@ -2649,8 +2649,14 @@ unsigned TypeidExpressionAST::firstToken() const
 
 unsigned TypeidExpressionAST::lastToken() const
 {
-    assert(0 && "review me");
-    return rparen_token + 1;
+    if (rparen_token)
+        return rparen_token + 1;
+    else if (expression)
+        return expression->lastToken();
+    else if (lparen_token)
+        return lparen_token + 1;
+
+    return typeid_token + 1;
 }
 
 void TypenameCallExpressionAST::accept0(ASTVisitor *visitor)