@@ -10,7 +10,7 @@ private import semmle.code.cpp.internal.ResolveClass
1010 */
1111pragma [ inline]
1212Element mkElement ( @element e ) {
13- result . unresolve ( ) = e
13+ unresolveElement ( result ) = e
1414}
1515
1616/**
@@ -24,7 +24,10 @@ Element mkElement(@element e) {
2424 */
2525pragma [ inline]
2626@element unresolveElement ( Element e ) {
27- result = e .unresolve ( )
27+ not result instanceof @usertype and
28+ result = e
29+ or
30+ e = resolveClass ( result )
2831}
2932
3033/**
@@ -35,13 +38,12 @@ pragma[inline]
3538 * need the result for an argument to a database extensional.
3639 * See `unresolveElement` for when `e` is not `this`.
3740 */
38- pragma [ inline]
3941@element underlyingElement ( Element e ) {
4042 result = e
4143}
4244
4345/**
44- * A C/C++ element with a minimal set of member predicates . Not for
46+ * A C/C++ element with no member predicates other than `toString` . Not for
4547 * general use. This class does not define a location, so classes wanting to
4648 * change their location without affecting other classes can extend
4749 * `ElementBase` instead of `Element` to create a new rootdef for `getURL`,
@@ -50,27 +52,6 @@ pragma[inline]
5052class ElementBase extends @element {
5153 /** Gets a textual representation of this element. */
5254 string toString ( ) { none ( ) }
53-
54- /**
55- * INTERNAL: Do not use.
56- *
57- * Gets the `@element` that this `Element` extends. This should normally only
58- * be called from member predicates on `this` where you need the result for
59- * an argument to a database extensional.
60- * See `unresolve` for when the qualifier is not `this`.
61- */
62- final @element underlying ( ) { result = this }
63-
64- /**
65- * INTERNAL: Do not use.
66- *
67- * Gets an `@element` that resolves to the `Element`. This should normally
68- * only be called from member predicates, where the qualifier is not `this`
69- * and you need the result for an argument to a database extensional.
70- * See `underlying` for when the qualifier is `this`.
71- */
72- pragma [ inline]
73- @element unresolve ( ) { result = this }
7455}
7556
7657/**
0 commit comments