Merge pull request #6800 from TurkeyMan/isInnerClass

Simplify isInnerClass
merged-on-behalf-of: Sebastian Wilzbach <sebi.wilzbach@gmail.com>
This commit is contained in:
The Dlang Bot 2018-12-18 17:18:01 +01:00 committed by GitHub
commit c20df1e0e2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2525,11 +2525,20 @@ Returns:
template isInnerClass(T)
if (is(T == class))
{
import std.meta : staticIndexOf;
static if (is(typeof(T.outer)))
enum isInnerClass = __traits(isSame, typeof(T.outer), __traits(parent, T))
&& (staticIndexOf!(__traits(allMembers, T), "outer") == -1);
{
bool hasOuterMember(string[] members...)
{
foreach (m; members)
{
if (m == "outer")
return true;
}
return false;
}
enum isInnerClass = __traits(isSame, typeof(T.outer), __traits(parent, T)) &&
!hasOuterMember(__traits(allMembers, T));
}
else
enum isInnerClass = false;
}