Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,437 changes: 2,437 additions & 0 deletions cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
description: Fix decltype qualifier issue
compatibility: full
4 changes: 2 additions & 2 deletions cpp/ql/lib/semmle/code/cpp/NameQualifiers.qll
Original file line number Diff line number Diff line change
Expand Up @@ -144,14 +144,14 @@ class NameQualifiableElement extends Element, @namequalifiableelement {
class NameQualifyingElement extends Element, @namequalifyingelement {
/**
* Gets a name qualifier for which this is the qualifying namespace or
* user-defined type. For example: class `X` is the
* user-defined type, or decltype. For example: class `X` is the
* `NameQualifyingElement` and `X::` is the `NameQualifier`.
*/
NameQualifier getANameQualifier() {
namequalifiers(unresolveElement(result), _, underlyingElement(this), _)
}

/** Gets the name of this namespace or user-defined type. */
/** Gets the name of this namespace, user-defined type, or decltype. */
string getName() { none() }
}

Expand Down
10 changes: 4 additions & 6 deletions cpp/ql/lib/semmle/code/cpp/Type.qll
Original file line number Diff line number Diff line change
Expand Up @@ -1146,7 +1146,7 @@ class DerivedType extends Type, @derivedtype {
* decltype(a) b;
* ```
*/
class Decltype extends Type {
class Decltype extends Type, NameQualifyingElement {
Decltype() { decltypes(underlyingElement(this), _, 0, _, _) }

override string getAPrimaryQlClass() { result = "Decltype" }
Expand Down Expand Up @@ -1187,7 +1187,7 @@ class Decltype extends Type {

override string toString() { result = "decltype(...)" }

override string getName() { none() }
override string getName() { result = "decltype(...)" }

override int getSize() { result = this.getBaseType().getSize() }

Expand Down Expand Up @@ -1247,7 +1247,7 @@ class TypeofType extends Type {

override string toString() { result = "typeof(...)" }

override string getName() { none() }
override string getName() { result = "typeof(...)" }

override int getSize() { result = this.getBaseType().getSize() }

Expand Down Expand Up @@ -1311,8 +1311,6 @@ class TypeofTypeType extends TypeofType {
Type getType() { type_operators(underlyingElement(this), unresolveElement(result), _, _) }

override string getAPrimaryQlClass() { result = "TypeofTypeType" }

override string toString() { result = "typeof(...)" }
}

/**
Expand Down Expand Up @@ -1394,7 +1392,7 @@ class IntrinsicTransformedType extends Type {

override Type resolveTypedefs() { result = this.getBaseType().resolveTypedefs() }

override string getName() { none() }
override string getName() { result = this.getIntrinsicName() + "(...)" }

override int getSize() { result = this.getBaseType().getSize() }

Expand Down
3 changes: 2 additions & 1 deletion cpp/ql/lib/semmlecode.cpp.dbscheme
Original file line number Diff line number Diff line change
Expand Up @@ -1327,7 +1327,8 @@ specialnamequalifyingelements(
@namequalifiableelement = @expr | @namequalifier;
@namequalifyingelement = @namespace
| @specialnamequalifyingelement
| @usertype;
| @usertype
| @decltype;

namequalifiers(
unique int id: @namequalifier,
Expand Down
Loading