check conflict in CLASS fields redefinition

svn path=/trunk/; revision=22203
This commit is contained in:
Tomas Kukosa 2007-06-27 14:26:17 +00:00
parent 705f89de7a
commit 2c33ab54e7
1 changed files with 19 additions and 3 deletions

View File

@ -6588,13 +6588,29 @@ def set_type_to_class(cls, fld, pars):
typename = 'OpenType'
if (len(pars) > 0):
typename = pars[0]
else:
pars.append(typename)
typeref = None
if (len(pars) > 1):
if (isinstance(pars[1], Class_Ref)):
pars[1] = pars[1].val
typeref = pars[1]
if object_class_types.has_key(key): return False
if object_class_typerefs.has_key(key): return False
if object_class_classrefs.has_key(key): return False
msg = None
if object_class_types.has_key(key):
msg = object_class_types[key]().type
if object_class_typerefs.has_key(key):
msg = "TypeReference " + object_class_typerefs[key]
if object_class_classrefs.has_key(key):
msg = "ClassReference " + object_class_classrefs[key]
if msg == ' '.join(pars):
msg = None
if msg:
msg0 = "Can not define CLASS field %s as '%s'\n" % (key, ' '.join(pars))
msg1 = "Already defined as '%s'" % (msg)
raise msg0 + msg1
if (typename == 'ClassReference'):
if not typeref: return False