'Parse a single suite without generating the output. This step is needed
so we can resolve recursive references by suites to enums/comps/etc declared
in other suites'

def precompilesuite(self):

    [name, desc, code, level, version, events, classes, comps, enums] = self.suite
    modname = identify(name)
    if (len(modname) > 28):
        modname = modname[:27]
    if (self.edit_modnames is None):
        self.pathname = EasyDialogs.AskFileForSave(message='Python    output    file', savedFileName=(modname + '.py'))
    else:
        for (old, new) in self.edit_modnames:
            if (old == modname):
                modname = new
        if modname:
            self.pathname = os.path.join(self.output, (modname + '.py'))
        else:
            self.pathname = None
    if (not self.pathname):
        return (None, None, None)
    self.modname = os.path.splitext(os.path.split(self.pathname)[1])[0]
    if (self.basepackage and (code in self.basepackage._code_to_module)):
        basemodule = self.basepackage._code_to_module[code]
    else:
        basemodule = None
    self.enumsneeded = {}
    for event in events:
        self.findenumsinevent(event)
    objc = ObjectCompiler(None, self.modname, basemodule, interact=(self.edit_modnames is None), verbose=self.verbose)
    for cls in classes:
        objc.compileclass(cls)
    for cls in classes:
        objc.fillclasspropsandelems(cls)
    for comp in comps:
        objc.compilecomparison(comp)
    for enum in enums:
        objc.compileenumeration(enum)
    for enum in self.enumsneeded.keys():
        objc.checkforenum(enum)
    objc.dumpindex()
    precompinfo = objc.getprecompinfo(self.modname)
    return (code, self.modname, precompinfo)
