diff --git a/cpp/ql/src/semmle/code/cpp/Class.qll b/cpp/ql/src/semmle/code/cpp/Class.qll index bb918a80e949..38e224f25dbc 100644 --- a/cpp/ql/src/semmle/code/cpp/Class.qll +++ b/cpp/ql/src/semmle/code/cpp/Class.qll @@ -2,7 +2,7 @@ import semmle.code.cpp.Type import semmle.code.cpp.UserType import semmle.code.cpp.metrics.MetricClass import semmle.code.cpp.Linkage -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A class type [N4140 9]. diff --git a/cpp/ql/src/semmle/code/cpp/Element.qll b/cpp/ql/src/semmle/code/cpp/Element.qll index 1a42b9d790c2..71a5dce2c373 100644 --- a/cpp/ql/src/semmle/code/cpp/Element.qll +++ b/cpp/ql/src/semmle/code/cpp/Element.qll @@ -1,6 +1,6 @@ import semmle.code.cpp.Location private import semmle.code.cpp.Enclosing -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * Get the `@element` that represents this `@element`. @@ -10,7 +10,7 @@ private import semmle.code.cpp.internal.Type */ private cached @element resolveElement(@element e) { if isClass(e) - then result = resolve(e) + then result = resolveClass(e) else result = e } diff --git a/cpp/ql/src/semmle/code/cpp/Enum.qll b/cpp/ql/src/semmle/code/cpp/Enum.qll index 13dd0d7802de..23d115feebba 100644 --- a/cpp/ql/src/semmle/code/cpp/Enum.qll +++ b/cpp/ql/src/semmle/code/cpp/Enum.qll @@ -1,5 +1,5 @@ import semmle.code.cpp.Type -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A C/C++ enum [N4140 7.2]. diff --git a/cpp/ql/src/semmle/code/cpp/FriendDecl.qll b/cpp/ql/src/semmle/code/cpp/FriendDecl.qll index 5cf18cb39f9b..08c52a09cf59 100644 --- a/cpp/ql/src/semmle/code/cpp/FriendDecl.qll +++ b/cpp/ql/src/semmle/code/cpp/FriendDecl.qll @@ -1,5 +1,5 @@ import semmle.code.cpp.Declaration -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A C++ friend declaration [N4140 11.3]. diff --git a/cpp/ql/src/semmle/code/cpp/Function.qll b/cpp/ql/src/semmle/code/cpp/Function.qll index 4dcd4d729e31..e817b54e7411 100644 --- a/cpp/ql/src/semmle/code/cpp/Function.qll +++ b/cpp/ql/src/semmle/code/cpp/Function.qll @@ -5,7 +5,7 @@ import semmle.code.cpp.Parameter import semmle.code.cpp.exprs.Call import semmle.code.cpp.metrics.MetricFunction import semmle.code.cpp.Linkage -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A C/C++ function [N4140 8.3.5]. Both member functions and non-member diff --git a/cpp/ql/src/semmle/code/cpp/ObjectiveC.qll b/cpp/ql/src/semmle/code/cpp/ObjectiveC.qll index f168e551faa2..aa7e9d4ddc5b 100644 --- a/cpp/ql/src/semmle/code/cpp/ObjectiveC.qll +++ b/cpp/ql/src/semmle/code/cpp/ObjectiveC.qll @@ -1,5 +1,5 @@ import semmle.code.cpp.Class -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * DEPRECATED: Objective-C is no longer supported. diff --git a/cpp/ql/src/semmle/code/cpp/Parameter.qll b/cpp/ql/src/semmle/code/cpp/Parameter.qll index 0794f5592961..971a2f33f610 100644 --- a/cpp/ql/src/semmle/code/cpp/Parameter.qll +++ b/cpp/ql/src/semmle/code/cpp/Parameter.qll @@ -1,6 +1,6 @@ import semmle.code.cpp.Location import semmle.code.cpp.Declaration -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A C/C++ function parameter or catch block parameter. diff --git a/cpp/ql/src/semmle/code/cpp/Specifier.qll b/cpp/ql/src/semmle/code/cpp/Specifier.qll index 3dcbc1b04904..373d8db57505 100644 --- a/cpp/ql/src/semmle/code/cpp/Specifier.qll +++ b/cpp/ql/src/semmle/code/cpp/Specifier.qll @@ -1,5 +1,5 @@ import semmle.code.cpp.Element -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A C/C++ specifier: `friend`, `auto`, `register`, `static`, `extern`, diff --git a/cpp/ql/src/semmle/code/cpp/Type.qll b/cpp/ql/src/semmle/code/cpp/Type.qll index 583bb55525ef..d34f2e4916f0 100644 --- a/cpp/ql/src/semmle/code/cpp/Type.qll +++ b/cpp/ql/src/semmle/code/cpp/Type.qll @@ -1,7 +1,7 @@ import semmle.code.cpp.Element import semmle.code.cpp.Member import semmle.code.cpp.Function -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A C/C++ type. diff --git a/cpp/ql/src/semmle/code/cpp/TypedefType.qll b/cpp/ql/src/semmle/code/cpp/TypedefType.qll index d10ac268a6ec..c7b3591941bc 100644 --- a/cpp/ql/src/semmle/code/cpp/TypedefType.qll +++ b/cpp/ql/src/semmle/code/cpp/TypedefType.qll @@ -1,5 +1,5 @@ import semmle.code.cpp.Type -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A C/C++ typedef type. See 4.9.1. diff --git a/cpp/ql/src/semmle/code/cpp/UserType.qll b/cpp/ql/src/semmle/code/cpp/UserType.qll index 9121ceb8e694..3e99495e6524 100644 --- a/cpp/ql/src/semmle/code/cpp/UserType.qll +++ b/cpp/ql/src/semmle/code/cpp/UserType.qll @@ -2,7 +2,7 @@ import semmle.code.cpp.Declaration import semmle.code.cpp.Type import semmle.code.cpp.Member import semmle.code.cpp.Function -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A C/C++ user-defined type. Examples include `Class`, `Struct`, `Union`, diff --git a/cpp/ql/src/semmle/code/cpp/Variable.qll b/cpp/ql/src/semmle/code/cpp/Variable.qll index 4bfa55467fee..958a50ebfc8b 100644 --- a/cpp/ql/src/semmle/code/cpp/Variable.qll +++ b/cpp/ql/src/semmle/code/cpp/Variable.qll @@ -1,7 +1,7 @@ import semmle.code.cpp.Element import semmle.code.cpp.exprs.Access import semmle.code.cpp.Initializer -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A C/C++ variable. diff --git a/cpp/ql/src/semmle/code/cpp/exprs/Cast.qll b/cpp/ql/src/semmle/code/cpp/exprs/Cast.qll index 1c234c4950cd..69e9d18f52f2 100644 --- a/cpp/ql/src/semmle/code/cpp/exprs/Cast.qll +++ b/cpp/ql/src/semmle/code/cpp/exprs/Cast.qll @@ -1,5 +1,5 @@ import semmle.code.cpp.exprs.Expr -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A C/C++ cast expression or similar unary expression that doesn't affect the logical value of its operand. diff --git a/cpp/ql/src/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/src/semmle/code/cpp/exprs/Expr.qll index 168e6f29fe8d..619722bcf4bc 100644 --- a/cpp/ql/src/semmle/code/cpp/exprs/Expr.qll +++ b/cpp/ql/src/semmle/code/cpp/exprs/Expr.qll @@ -1,7 +1,7 @@ import semmle.code.cpp.Element private import semmle.code.cpp.Enclosing -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A C/C++ expression. diff --git a/cpp/ql/src/semmle/code/cpp/exprs/ObjectiveC.qll b/cpp/ql/src/semmle/code/cpp/exprs/ObjectiveC.qll index d5a8f38fdea6..a64d1815fba1 100644 --- a/cpp/ql/src/semmle/code/cpp/exprs/ObjectiveC.qll +++ b/cpp/ql/src/semmle/code/cpp/exprs/ObjectiveC.qll @@ -1,7 +1,7 @@ import semmle.code.cpp.exprs.Expr import semmle.code.cpp.Class import semmle.code.cpp.ObjectiveC -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * DEPRECATED: Objective-C is no longer supported. diff --git a/cpp/ql/src/semmle/code/cpp/internal/Type.qll b/cpp/ql/src/semmle/code/cpp/internal/ResolveClass.qll similarity index 91% rename from cpp/ql/src/semmle/code/cpp/internal/Type.qll rename to cpp/ql/src/semmle/code/cpp/internal/ResolveClass.qll index 06e2c0b8a456..c3cde4c4346c 100644 --- a/cpp/ql/src/semmle/code/cpp/internal/Type.qll +++ b/cpp/ql/src/semmle/code/cpp/internal/ResolveClass.qll @@ -35,7 +35,7 @@ cached private module Cached { * multiple complete classes have the same name, this predicate may have * multiple results. */ - cached @usertype resolve(@usertype c) { + cached @usertype resolveClass(@usertype c) { hasCompleteTwin(c, result) or (not hasCompleteTwin(c, _) and result = c) @@ -48,8 +48,4 @@ cached private module Cached { (usertypes(t,_,1) or usertypes(t,_,2) or usertypes(t,_,3) or usertypes(t,_,6) or usertypes(t,_,10) or usertypes(t,_,11) or usertypes(t,_,12)) } - - cached predicate isElement(@element e) { - isClass(e) implies e = resolve(_) - } } diff --git a/cpp/ql/src/semmle/code/cpp/stmts/Stmt.qll b/cpp/ql/src/semmle/code/cpp/stmts/Stmt.qll index 46de2220e37d..3969975b65ac 100644 --- a/cpp/ql/src/semmle/code/cpp/stmts/Stmt.qll +++ b/cpp/ql/src/semmle/code/cpp/stmts/Stmt.qll @@ -1,6 +1,6 @@ import semmle.code.cpp.Element private import semmle.code.cpp.Enclosing -private import semmle.code.cpp.internal.Type +private import semmle.code.cpp.internal.ResolveClass /** * A C/C++ statement.