mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-02-25 16:13:14 +01:00
Commit workaround for TypeFunction comparing issue.
This commit is contained in:
@@ -2084,7 +2084,7 @@ int FuncDeclaration::isNested()
|
||||
//if (!toParent())
|
||||
//printf("FuncDeclaration::isNested('%s') parent=%p\n", toChars(), parent);
|
||||
//printf("\ttoParent() = '%s'\n", toParent()->toChars());
|
||||
return ((storage_class & STCstatic) == 0) &&
|
||||
return ((storage_class & STCstatic) == 0) && toParent2() &&
|
||||
(toParent2()->isFuncDeclaration() != NULL);
|
||||
}
|
||||
|
||||
|
||||
24
dmd/mtype.c
24
dmd/mtype.c
@@ -2810,11 +2810,25 @@ void TypeFunction::toDecoBuffer(OutBuffer *buf, bool mangle)
|
||||
// type to prevent merging different member function
|
||||
if (!mangle && funcdecl)
|
||||
{
|
||||
if (AggregateDeclaration* ad = funcdecl->isMember())
|
||||
{
|
||||
buf->writeByte('M');
|
||||
ad->type->toDecoBuffer(buf, false);
|
||||
}
|
||||
if (funcdecl->needThis())
|
||||
{
|
||||
AggregateDeclaration* ad = funcdecl->isMember2();
|
||||
buf->writeByte('M');
|
||||
ad->type->toDecoBuffer(buf, false);
|
||||
}
|
||||
/* BUG This causes problems with delegate types
|
||||
On the other hand, the llvm type for nested functions *is* different
|
||||
so not doing anything here may be lead to bugs!
|
||||
A sane solution would be DtoType(Dsymbol)...
|
||||
if (funcdecl->isNested())
|
||||
{
|
||||
buf->writeByte('M');
|
||||
if (funcdecl->toParent2() && funcdecl->toParent2()->isFuncDeclaration())
|
||||
{
|
||||
FuncDeclaration* fd = funcdecl->toParent2()->isFuncDeclaration();
|
||||
fd->type->toDecoBuffer(buf, false);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
// Write argument types
|
||||
|
||||
Reference in New Issue
Block a user