if(member)
{
if(!eMember_AddDataMember(member, name, line[0] ? line : 0, 0, 0 /*size *//*type->size*/, memberAccess))
- ;//Compiler_Error($"Member with same name already exists %s in member %s\n", name, member->name);
+ ;//Compiler_Error($"Member with same name (%s) already exists in member %s\n", name, member->name);
}
else if(regClass && regClass.type == bitClass)
{
//eClass_AddBitMember(regClass, name, line[0] ? line : 0, size, bitPos);
BitMember member = eClass_AddBitMember(regClass, name, line[0] ? line : 0, 0, 0, memberAccess);
- member.size = size;
- member.pos = bitPos;
+ if(member)
+ {
+ member.size = size;
+ member.pos = bitPos;
+ }
}
else if(regClass)
{
if(!eClass_AddDataMember(regClass, name, line[0] ? line : 0, 0, 0 /*size *//*type->size*/, memberAccess))
- ;//Compiler_Error($"Member with same name already exists %s in class %s\n", name, regClass.fullName);
+ ;//Compiler_Error($"Member with same name (%s) already exists in class %s\n", name, regClass.fullName);
}
}
else if(!strcmp(line, "[Struct]") || !strcmp(line, "[Union]"))
if(member)
{
if(!eMember_AddMember(member, dataMember))
- ;//Compiler_Error($"Member with same name already exists %s in member %s\n", name, member->name);
+ ;//Compiler_Error($"Member with same name (%s) already exists in member %s\n", name, member->name);
}
else if(regClass)
{
if(!eClass_AddMember(regClass, dataMember))
- ;//Compiler_Error($"Member with same name already exists %s in class %s\n", name, regClass.name);
+ ;//Compiler_Error($"Member with same name (%s) already exists in class %s\n", name, regClass.name);
}
}
}
TrimLSpaces(line, line);
if(importType == preDeclImport)
- DeclClass(0, name);
+ DeclClass(null, name);
if(isStatic || loadDllOnly || importType == preDeclImport || importType == comCheckImport)
regClass = null;
else if(regClass = eSystem_FindClass(privateModule, name), !regClass || regClass.internalDecl || regClass.isRemote)
/*if(classType != unitClass && classType != bitClass && classType != enumClass && baseName && !eSystem_FindClass(privateModule, baseName))
{
Compiler_Error($"Base class %s undefined\n", baseName);
- DeclClass(0, name);
+ DeclClass(name);
regClass = null;
continue;
}
char className[1024] = "DCOMClient_";
strcat(className, name);
if(!existingClass)
- existingClass = DeclClass(0, name);
+ existingClass = DeclClass(null, name);
regClass = eSystem_RegisterClass(classType, className, baseName, 0, 0, null, null, privateModule, ecereCOMModule ? baseSystemAccess : publicAccess, inheritanceAccess);
}
if(regClass)
regClass.structSize = regClass.offset; // THIS COULD PROBABLY BENEFIT FROM SOME EXPLANATIONS...
}
- // Added this
if(regClass && existingClass)
{
existingClass.registered = regClass;
- regClass.symbol = existingClass; // TESTING THIS
- existingClass.id = MAXINT;
- existingClass.idCode = MAXINT;
+ regClass.symbol = existingClass;
+ existingClass.notYetDeclared = true;
existingClass.imported = true;
if(regClass.module)
existingClass.module = FindModule(regClass.module);
{
ImportedModule module = null;
char moduleName[MAX_LOCATION];
+ bool isSourceModule = false;
+ if(sourceFile)
+ {
+ char sourceFileModule[MAX_FILENAME];
+ GetLastDirectory(sourceFile, sourceFileModule);
+ StripExtension(sourceFileModule);
+ if(!strcmpi(sourceFileModule, name))
+ isSourceModule = true;
+ }
strncpy(moduleName, name, MAX_LOCATION-1);
moduleName[MAX_LOCATION-1] = 0;
for(module = defines->first; module; module = module.next)
{
- if(module.type == moduleDefinition && !strcmpi(module.name, moduleName))
+ if(module.type == moduleDefinition && !strcmpi(module.name, moduleName) &&
+ ((importType == remoteImport) == (module.importType == remoteImport) || isSourceModule))
break;
}
if((!module || (module.dllOnly && !loadDllOnly)) && strlen(name) < MAX_FILENAME)