C++: Implement the namespace field.

This commit is contained in:
Geoffrey White
2024-02-06 11:52:38 +00:00
parent a5527903e9
commit 25200b47ea
2 changed files with 8 additions and 6 deletions

View File

@@ -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
|

View File

@@ -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