diff --git a/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll b/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll index 2b01d98d28dc..067b60eea683 100644 --- a/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll +++ b/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll @@ -99,7 +99,8 @@ predicate isStaticMember(Member member) { exists(ClassLikeDeclaration cls | cls.getAMember() = member | not any(NameBindingPlugin p).isInstanceMember(cls, member) or member instanceof ConstructorDeclaration or - member instanceof TypeAliasDeclaration + member instanceof TypeAliasDeclaration or + member instanceof ClassLikeDeclaration ) or member = any(TopLevel t).getBody().getAStmt() diff --git a/unified/ql/test/library-tests/static-name-binding/test.swift b/unified/ql/test/library-tests/static-name-binding/test.swift index 7bf86d93e76e..cfbefe3ac851 100644 --- a/unified/ql/test/library-tests/static-name-binding/test.swift +++ b/unified/ql/test/library-tests/static-name-binding/test.swift @@ -6,12 +6,15 @@ class A { } typealias BAlias = B // $ access=A.B + + enum Enum { case empty } } let x1: B = nil // $ access=top.B let x2: A.B = nil // $ access=A access=A.B let x3: A.B.C = nil // $ access=A access=A.B access=A.B.C let x4: A.BAlias.C = nil // $ access=A access=A.BAlias access=A.B.C +let x5 = A.Enum.empty // $ access=A access=A.Enum access=A.Enum.empty class D { let x1: B = nil // $ access=top.B