diff options
-rw-r--r-- | src/ir/item.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/ir/item.rs b/src/ir/item.rs index b6fe6d43..e3c5d4a7 100644 --- a/src/ir/item.rs +++ b/src/ir/item.rs @@ -1194,7 +1194,18 @@ impl ClangItemParser for Item { // Types are sort of special, so to avoid parsing template classes // twice, handle them separately. { - let applicable_cursor = cursor.definition().unwrap_or(cursor); + let definition = cursor.definition(); + let applicable_cursor = definition.unwrap_or(cursor); + + if definition.is_some() && definition != Some(cursor) { + return Ok(Item::from_ty_or_ref( + applicable_cursor.cur_type(), + cursor, + parent_id, + ctx, + )); + } + match Item::from_ty( &applicable_cursor.cur_type(), applicable_cursor, |