From f51fc836c5b690f5448e76196dd40bdb55957a11 Mon Sep 17 00:00:00 2001
From: Flavio Cruz <flaviocruz@gmail.com>
Date: Mon, 14 Nov 2022 00:40:07 -0500
Subject: Initialize basic types once and print errors for duplicate
 definitions

For kernel server or user subsystems we would initialize basic types
twice, once in main() and again for the subsystem declaration. Instead,
initialize basic types when the subsystem is declared and then throw
errors when types are defined multiple times.
Message-Id: <Y3HUt/YAKaqMMTi3@viriathus>
---
 parser.y | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

(limited to 'parser.y')

diff --git a/parser.y b/parser.y
index 104f604..23294bf 100644
--- a/parser.y
+++ b/parser.y
@@ -212,6 +212,7 @@ Subsystem		:	SubsystemStart SubsystemMods
 	       IsKernelUser ? ", KernelUser" : "",
 	       IsKernelServer ? ", KernelServer" : "");
     }
+    init_type();
 }
 			;
 
@@ -238,7 +239,6 @@ SubsystemMod		:	syKernelUser
     IsKernelUser = TRUE;
     port_size = vm_offset_size;
     port_size_in_bits = vm_offset_size_in_bits;
-    init_type();
 }
 			|	syKernelServer
 {
@@ -247,7 +247,6 @@ SubsystemMod		:	syKernelUser
     IsKernelServer = TRUE;
     port_size = vm_offset_size;
     port_size_in_bits = vm_offset_size_in_bits;
-    init_type();
 }
 			;
 
@@ -351,7 +350,7 @@ TypeDecl		:	syType NamedTypeSpec
     identifier_t name = $2->itName;
 
     if (itLookUp(name) != itNULL)
-	warn("overriding previous definition of %s", name);
+		error("overriding previous definition of %s", name);
     itInsert(name, $2);
 }
 			;
-- 
cgit v1.2.3