Pārlūkot izejas kodu

Disallow base/derived dimension conflicts, closes #153

David Peter 2 gadi atpakaļ
vecāks
revīzija
fedd0913fe

+ 2 - 0
examples/typecheck_error/dimension_name_conflict.nbt

@@ -0,0 +1,2 @@
+dimension A
+dimension A = A^2

+ 2 - 2
numbat/src/registry.rs

@@ -99,7 +99,7 @@ impl<T> Default for Registry<T> {
 
 
 impl<Metadata> Registry<Metadata> {
 impl<Metadata> Registry<Metadata> {
     pub fn add_base_entry(&mut self, name: &str, metadata: Metadata) -> Result<()> {
     pub fn add_base_entry(&mut self, name: &str, metadata: Metadata) -> Result<()> {
-        if self.is_base_entry(name) {
+        if self.contains(name) {
             return Err(RegistryError::EntryExists(name.to_owned()));
             return Err(RegistryError::EntryExists(name.to_owned()));
         }
         }
         self.base_entries.push((name.to_owned(), metadata));
         self.base_entries.push((name.to_owned(), metadata));
@@ -128,7 +128,7 @@ impl<Metadata> Registry<Metadata> {
         name: &str,
         name: &str,
         base_representation: BaseRepresentation,
         base_representation: BaseRepresentation,
     ) -> Result<()> {
     ) -> Result<()> {
-        if self.derived_entries.contains_key(name) {
+        if self.contains(name) {
             return Err(RegistryError::EntryExists(name.to_owned()));
             return Err(RegistryError::EntryExists(name.to_owned()));
         }
         }