From 1bcb8cce507e76ac1ae947694ae80bdba1653b43 Mon Sep 17 00:00:00 2001
From: pompolic <pompolic@special-circumstanc.es>
Date: Wed, 22 Jun 2022 19:15:42 +0200
Subject: [PATCH] Permit data field for TT_MAX

---
 gdb-port/ast.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/gdb-port/ast.py b/gdb-port/ast.py
index b3cb498..8c72448 100644
--- a/gdb-port/ast.py
+++ b/gdb-port/ast.py
@@ -51,6 +51,7 @@ class HParsedToken:
 
 	#TT_MAX = gdb.lookup_type("enum HTokenType_").fields()[-1].enumval
 	# Will be cached on the first lookup
+	# Annoyingly, the numerical value for the first custom token type == TT_MAX
 	TT_MAX = None
 	# Enum value hardcoded for convenience of implementation
 	TT_SEQUENCE = 16
@@ -94,10 +95,13 @@ class HParsedToken:
 		tok = gdb.Value(self.address).cast(__class__.HParsedToken_t_p)
 		return tok
 
+#TODO: how to tell when token_type == TT_MAX is meant to be TT_MAX, and when it's meant to be a custom type?
 	def has_token_data(self):
 		if not __class__.no_token_data:
-			__class__.no_token_data = [v.enumval for v in gdb.lookup_type("enum HTokenType_").fields() if v.name in ["TT_INVALID", "TT_RESERVED_1", "TT_ERR", "TT_NONE", "TT_MAX"]]
-		no_token_data = __class__.no_token_data or [v.enumval for v in gdb.lookup_type("enum HTokenType_").fields() if v.name in ["TT_INVALID", "TT_RESERVED_1", "TT_ERR", "TT_NONE", "TT_MAX"]]
+			#__class__.no_token_data = [v.enumval for v in gdb.lookup_type("enum HTokenType_").fields() if v.name in ["TT_INVALID", "TT_RESERVED_1", "TT_ERR", "TT_NONE", "TT_MAX"]]
+			__class__.no_token_data = [v.enumval for v in gdb.lookup_type("enum HTokenType_").fields() if v.name in ["TT_INVALID", "TT_RESERVED_1", "TT_ERR", "TT_NONE"]]
+		#no_token_data = __class__.no_token_data or [v.enumval for v in gdb.lookup_type("enum HTokenType_").fields() if v.name in ["TT_INVALID", "TT_RESERVED_1", "TT_ERR", "TT_NONE", "TT_MAX"]]
+		no_token_data = __class__.no_token_data or [v.enumval for v in gdb.lookup_type("enum HTokenType_").fields() if v.name in ["TT_INVALID", "TT_RESERVED_1", "TT_ERR", "TT_NONE"]]
 		return self.token_type not in no_token_data
 
 	#TODO: return make HCountedArray from data, if this is a sequence
-- 
GitLab