Fix Issue 24066 - __traits(isAbstractClass) causes a segfault when passed an opaque class (#15495)

* Fix Issue 24066 - __traits(isAbstractClass) causes a segfault when passed an opaque class

* Update comment

Co-authored-by: Dennis <dkorpel@users.noreply.github.com>

---------

Co-authored-by: Dennis <dkorpel@users.noreply.github.com>
This commit is contained in:
Razvan Nitu 2023-08-03 17:04:38 +03:00 committed by Max Haughton
parent 7f6019988b
commit 1291d0558f
2 changed files with 15 additions and 0 deletions

View file

@ -877,6 +877,10 @@ extern (C++) class ClassDeclaration : AggregateDeclaration
return 0;
}
// opaque class is not abstract if it is not declared abstract
if (!members)
return no();
for (size_t i = 0; i < members.length; i++)
{
auto s = (*members)[i];

View file

@ -0,0 +1,11 @@
// https://issues.dlang.org/show_bug.cgi?id=24066
/*
TEST_OUTPUT:
---
false
---
*/
class C;
pragma(msg, __traits(isAbstractClass, C));