mirror of
https://github.com/github/codeql.git
synced 2026-04-26 09:15:12 +02:00
C++: Implement the namespace field.
This commit is contained in:
@@ -391,11 +391,11 @@ private Element interpretElement0(
|
||||
string namespace, string type, boolean subtypes, string name, string signature
|
||||
) {
|
||||
elementSpec(namespace, type, subtypes, name, signature, _) and
|
||||
namespace = "" and // TODO: Fill out when we properly extract modules.
|
||||
(
|
||||
// Non-member functions
|
||||
exists(Function func |
|
||||
func.getName() = name and
|
||||
func.getNamespace().getQualifiedName() = namespace and
|
||||
type = "" and
|
||||
matchesSignature(func, signature) and
|
||||
subtypes = false and
|
||||
@@ -406,6 +406,7 @@ private Element interpretElement0(
|
||||
// Member functions
|
||||
exists(Class namedClass, Class classWithMethod, Function method |
|
||||
classWithMethod = method.getClassAndName(name) and
|
||||
classWithMethod.getNamespace().getQualifiedName() = namespace and
|
||||
namedClass.getName() = type and
|
||||
matchesSignature(method, signature) and
|
||||
result = method
|
||||
@@ -424,6 +425,7 @@ private Element interpretElement0(
|
||||
exists(Class namedClass, Class classWithMember, MemberVariable member |
|
||||
member.getName() = name and
|
||||
member = classWithMember.getAMember() and
|
||||
classWithMember.getNamespace().getQualifiedName() = namespace and
|
||||
namedClass.getName() = type and
|
||||
result = member
|
||||
|
|
||||
|
||||
@@ -55,10 +55,10 @@ void test_sources() {
|
||||
int e = localMadSource();
|
||||
sink(e); // $ ir
|
||||
|
||||
sink(MyNamespace::namespaceLocalMadSource()); // $ MISSING: ir
|
||||
sink(MyNamespace::namespaceLocalMadSource()); // $: ir
|
||||
sink(MyNamespace::namespaceLocalMadSourceVar); // $ MISSING: ir
|
||||
sink(MyNamespace::MyNamespace2::namespace2LocalMadSource()); // $ MISSING: ir
|
||||
sink(MyNamespace::localMadSource()); // $ SPURIOUS: ir (the MyNamespace version of this function is not a source)
|
||||
sink(MyNamespace::MyNamespace2::namespace2LocalMadSource()); // $ ir
|
||||
sink(MyNamespace::localMadSource()); // $ (the MyNamespace version of this function is not a source)
|
||||
sink(namespaceLocalMadSource()); // (the global namespace version of this function is not a source)
|
||||
}
|
||||
|
||||
@@ -241,8 +241,8 @@ void test_class_members() {
|
||||
|
||||
mc.memberMadSinkVar = source(); // $ MISSING: ir
|
||||
|
||||
mnc.namespaceMemberMadSinkArg0(source()); // $ MISSING: ir
|
||||
MyNamespace::MyClass::namespaceStaticMemberMadSinkArg0(source()); // $ MISSING: ir
|
||||
mnc.namespaceMemberMadSinkArg0(source()); // $ ir
|
||||
MyNamespace::MyClass::namespaceStaticMemberMadSinkArg0(source()); // $ ir
|
||||
mnc.namespaceMemberMadSinkVar = source(); // $ MISSING: ir
|
||||
MyNamespace::MyClass::namespaceStaticMemberMadSinkVar = source(); // $ MISSING: ir
|
||||
|
||||
|
||||
Reference in New Issue
Block a user