code: def check_class(self, id_, class_, lineno, scope=None, show_error=True):
          
          assert CLASS.is_valid(class_)
          entry = self.get_entry(id_, scope)
          if entry is None or entry.class_ == CLASS.unknown:  # Undeclared yet
              return True
  
          if entry.class_ != class_:
              if show_error:
                  if entry.class_ == CLASS.array:
                      a1 = 'n'
                  else:
                      a1 = ''
                  if class_ == CLASS.array:
                      a2 = 'n'
                  else:
                      a2 = ''
                  syntax_error(lineno, "identifier '%s' is a%s %s, not a%s %s" %
                               (id_, a1, entry.class_, a2, class_))
              return False
  
          return True
docs: Check the id is either undefined or defined with
          the given class.
  
          - If the identifier (e.g. variable) does not exists means
          it's undeclared, and returns True (OK).
          - If the identifier exists, but its class_ attribute is
          unknown yet (None), returns also True. This means the
          identifier has been referenced in advanced and it's undeclared.
  
          Otherwise fails returning False.