Zlaski/cpp386a (#1753)

* [CPP-386] Cumulative patch.

* Restore dataflow libraries clobbered by my last commit.
This commit is contained in:
zlaski-semmle
2019-08-19 01:03:18 -07:00
committed by Jonas Jensen
parent 8cada4b154
commit ce71b45649
16 changed files with 349 additions and 208 deletions

View File

@@ -802,6 +802,8 @@ class ClassDerivation extends Locatable, @derivation {
Class getBaseClass() {
result = getBaseType().getUnderlyingType()
}
override string getCanonicalQLClass() { result = "ClassDerivation" }
/**
* Gets the type from which we are deriving, without resolving any

View File

@@ -187,6 +187,8 @@ class Folder extends Container, @folder {
result.hasLocationInfo(_, 0, 0, 0, 0)
}
override string getCanonicalQLClass() { result = "Folder" }
/**
* DEPRECATED: Use `getLocation` instead.
* Gets the URL of this folder.
@@ -259,6 +261,8 @@ class File extends Container, @file {
result = Container.super.toString()
}
override string getCanonicalQLClass() { result = "File" }
override Location getLocation() {
result.getContainer() = this and
result.hasLocationInfo(_, 0, 0, 0, 0)
@@ -458,6 +462,8 @@ class HeaderFile extends File {
exists(Include i | i.getIncludedFile() = this)
}
override string getCanonicalQLClass() { result = "HeaderFile" }
/**
* Holds if this header file does not contain any declaration entries or top level
* declarations. For example it might be:
@@ -488,6 +494,7 @@ class CFile extends File {
)
}
override string getCanonicalQLClass() { result = "CFile" }
}
/**
@@ -507,6 +514,7 @@ class CppFile extends File {
)
}
override string getCanonicalQLClass() { result = "CppFile" }
}
/**

View File

@@ -21,6 +21,8 @@ class FriendDecl extends Declaration, @frienddecl {
* use `getFriend`.
*/
override Location getADeclarationLocation() { result = this.getLocation() }
override string getCanonicalQLClass() { result = "FriendDecl" }
/**
* Implements the abstract method `Declaration.getDefinitionLocation`. A

View File

@@ -82,6 +82,8 @@ class MacroAccess extends Locatable, @macroinvocation {
result = this.getOutermostMacroAccess().getActualLocation()
}
override string getCanonicalQLClass() { result = "MacroAccess" }
/**
* Gets the location of this macro access. For a nested access, where
* `exists(this.getParentInvocation())`, this yields a location either inside
@@ -158,6 +160,8 @@ class MacroInvocation extends MacroAccess {
macroinvocations(underlyingElement(this),_,_,1)
}
override string getCanonicalQLClass() { result = "MacroInvocation" }
/**
* Gets an element that occurs in this macro invocation or a nested macro
* invocation.

View File

@@ -132,6 +132,8 @@ class NamespaceDeclarationEntry extends Locatable, @namespace_decl {
* example: the "{ ... }" in "namespace N { ... }".
*/
Location getBodyLocation() { namespace_decls(underlyingElement(this),_,_,result) }
override string getCanonicalQLClass() { result = "NamespaceDeclarationEntry" }
}
/**

View File

@@ -158,6 +158,8 @@ class PreprocessorIf extends PreprocessorBranch, @ppd_if {
*/
class PreprocessorIfdef extends PreprocessorBranch, @ppd_ifdef {
override string toString() { result = "#ifdef " + this.getHead() }
override string getCanonicalQLClass() { result = "PreprocessorIfdef" }
}
/**

View File

@@ -13,6 +13,8 @@ class Specifier extends Element, @specifier {
result instanceof UnknownDefaultLocation
}
override string getCanonicalQLClass() { result = "Specifier" }
/** Gets the name of this specifier. */
string getName() { specifiers(underlyingElement(this),result) }
@@ -31,6 +33,7 @@ class FunctionSpecifier extends Specifier {
this.hasName("virtual") or
this.hasName("explicit")
}
override string getCanonicalQLClass() { result = "FunctionSpecifier)" }
}
/**
@@ -45,6 +48,7 @@ class StorageClassSpecifier extends Specifier {
this.hasName("extern") or
this.hasName("mutable")
}
override string getCanonicalQLClass() { result = "StorageClassSpecifier" }
}
/**
@@ -96,6 +100,7 @@ class AccessSpecifier extends Specifier {
baseAccess.getName() >= this.getName() and result = this
)
}
override string getCanonicalQLClass() { result = "AccessSpecifier" }
}
/**
@@ -237,6 +242,7 @@ class FormatAttribute extends GnuAttribute {
not val = 0 // indicates a `vprintf` style format function with arguments not directly available.
)
}
override string getCanonicalQLClass() { result = "FormatAttribute" }
}
/**

View File

@@ -798,6 +798,8 @@ class Decltype extends Type, @decltype {
decltypes(underlyingElement(this), _, unresolveElement(result), _)
}
override string getCanonicalQLClass() { result = "Decltype" }
/**
* Whether an extra pair of parentheses around the expression would change the semantics of this decltype.
*
@@ -1064,6 +1066,8 @@ class GNUVectorType extends DerivedType {
*/
int getNumElements() { arraysizes(underlyingElement(this),result,_,_) }
override string getCanonicalQLClass() { result = "GNUVectorType" }
/**
* Gets the size, in bytes, of this vector type.
*

View File

@@ -14,8 +14,6 @@ abstract class NullValue extends Expr
class Zero extends NullValue
{
Zero() { this.(Literal).getValue() = "0" }
override string getCanonicalQLClass() { result = "Zero" }
}
/**

View File

@@ -150,6 +150,7 @@ class FieldAccess extends VariableAccess {
* so this is equivalent to `(*obj).field`.
*/
class PointerFieldAccess extends FieldAccess {
override string getCanonicalQLClass() { result = "PointerFieldAccess" }
PointerFieldAccess() {
exists (PointerType t
| t = getQualifier().getFullyConverted().getUnspecifiedType() and
@@ -164,6 +165,7 @@ class PointerFieldAccess extends FieldAccess {
* distinguish whether or not the type of `obj` is a reference type.
*/
class DotFieldAccess extends FieldAccess {
override string getCanonicalQLClass() { result = "DotFieldAccess" }
DotFieldAccess() {
exists (Class c
| c = getQualifier().getFullyConverted().getUnspecifiedType())
@@ -175,6 +177,7 @@ class DotFieldAccess extends FieldAccess {
* reference to a class/struct/union.
*/
class ReferenceFieldAccess extends DotFieldAccess {
override string getCanonicalQLClass() { result = "ReferenceFieldAccess" }
ReferenceFieldAccess() {
exprHasReferenceConversion(this.getQualifier())
}
@@ -185,6 +188,7 @@ class ReferenceFieldAccess extends DotFieldAccess {
* class/struct/union (and not a reference).
*/
class ValueFieldAccess extends DotFieldAccess {
override string getCanonicalQLClass() { result = "ValueFieldAccess" }
ValueFieldAccess() {
not exprHasReferenceConversion(this.getQualifier())
}
@@ -226,6 +230,7 @@ private predicate exprHasReferenceConversion(Expr e) {
* `ImplicitThisFieldAccess`.
*/
class ImplicitThisFieldAccess extends FieldAccess {
override string getCanonicalQLClass() { result = "ImplicitThisFieldAccess" }
ImplicitThisFieldAccess() {
not exists (this.getQualifier())
}
@@ -277,6 +282,7 @@ class ParamAccessForType extends Expr, @param_ref {
* works on types directly rather than variables, expressions etc.
*/
class TypeName extends Expr, @type_operand {
override string getCanonicalQLClass() { result = "TypeName" }
override string toString() {
result = this.getType().getName()
}

View File

@@ -74,6 +74,8 @@ class BuiltInIntAddr extends BuiltInOperation, @intaddrexpr {
*/
class BuiltInOperationHasAssign extends BuiltInOperation, @hasassignexpr {
override string toString() { result = "__has_assign" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasAssign" }
}
/**
@@ -81,6 +83,8 @@ class BuiltInOperationHasAssign extends BuiltInOperation, @hasassignexpr {
*/
class BuiltInOperationHasCopy extends BuiltInOperation, @hascopyexpr {
override string toString() { result = "__has_copy" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasCopy" }
}
/**
@@ -88,6 +92,8 @@ class BuiltInOperationHasCopy extends BuiltInOperation, @hascopyexpr {
*/
class BuiltInOperationHasNoThrowAssign extends BuiltInOperation, @hasnothrowassign {
override string toString() { result = "__has_nothrow_assign" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasNoThrowAssign" }
}
/**
@@ -95,6 +101,8 @@ class BuiltInOperationHasNoThrowAssign extends BuiltInOperation, @hasnothrowassi
*/
class BuiltInOperationHasNoThrowConstructor extends BuiltInOperation, @hasnothrowconstr {
override string toString() { result = "__has_nothrow_constructor" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasNoThrowConstructor" }
}
/**
@@ -102,6 +110,8 @@ class BuiltInOperationHasNoThrowConstructor extends BuiltInOperation, @hasnothro
*/
class BuiltInOperationHasNoThrowCopy extends BuiltInOperation, @hasnothrowcopy {
override string toString() { result = "__has_nothrow_copy" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasNoThrowCopy" }
}
/**
@@ -109,6 +119,8 @@ class BuiltInOperationHasNoThrowCopy extends BuiltInOperation, @hasnothrowcopy {
*/
class BuiltInOperationHasTrivialAssign extends BuiltInOperation, @hastrivialassign {
override string toString() { result = "__has_trivial_assign" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasTrivialAssign" }
}
/**
@@ -116,6 +128,8 @@ class BuiltInOperationHasTrivialAssign extends BuiltInOperation, @hastrivialassi
*/
class BuiltInOperationHasTrivialConstructor extends BuiltInOperation, @hastrivialconstr {
override string toString() { result = "__has_trivial_constructor" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasTrivialConstructor" }
}
/**
@@ -123,6 +137,8 @@ class BuiltInOperationHasTrivialConstructor extends BuiltInOperation, @hastrivia
*/
class BuiltInOperationHasTrivialCopy extends BuiltInOperation, @hastrivialcopy {
override string toString() { result = "__has_trivial_copy" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasTrivialCopy" }
}
/**
@@ -130,6 +146,8 @@ class BuiltInOperationHasTrivialCopy extends BuiltInOperation, @hastrivialcopy {
*/
class BuiltInOperationHasTrivialDestructor extends BuiltInOperation, @hastrivialdestructor {
override string toString() { result = "__has_trivial_destructor" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasTrivialDestructor" }
}
/**
@@ -137,6 +155,8 @@ class BuiltInOperationHasTrivialDestructor extends BuiltInOperation, @hastrivial
*/
class BuiltInOperationHasUserDestructor extends BuiltInOperation, @hasuserdestr {
override string toString() { result = "__has_user_destructor" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasUserDestructor" }
}
/**
@@ -144,6 +164,8 @@ class BuiltInOperationHasUserDestructor extends BuiltInOperation, @hasuserdestr
*/
class BuiltInOperationHasVirtualDestructor extends BuiltInOperation, @hasvirtualdestr {
override string toString() { result = "__has_virtual_destructor" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasVirtualDestructor" }
}
/**
@@ -151,6 +173,8 @@ class BuiltInOperationHasVirtualDestructor extends BuiltInOperation, @hasvirtual
*/
class BuiltInOperationIsAbstract extends BuiltInOperation, @isabstractexpr {
override string toString() { result = "__is_abstract" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsAbstract" }
}
/**
@@ -158,6 +182,8 @@ class BuiltInOperationIsAbstract extends BuiltInOperation, @isabstractexpr {
*/
class BuiltInOperationIsBaseOf extends BuiltInOperation, @isbaseofexpr {
override string toString() { result = "__is_base_of" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsBaseOf" }
}
/**
@@ -165,6 +191,8 @@ class BuiltInOperationIsBaseOf extends BuiltInOperation, @isbaseofexpr {
*/
class BuiltInOperationIsClass extends BuiltInOperation, @isclassexpr {
override string toString() { result = "__is_class" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsClass" }
}
/**
@@ -172,6 +200,8 @@ class BuiltInOperationIsClass extends BuiltInOperation, @isclassexpr {
*/
class BuiltInOperationIsConvertibleTo extends BuiltInOperation, @isconvtoexpr {
override string toString() { result = "__is_convertible_to" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsConvertibleTo" }
}
/**
@@ -179,6 +209,8 @@ class BuiltInOperationIsConvertibleTo extends BuiltInOperation, @isconvtoexpr {
*/
class BuiltInOperationIsEmpty extends BuiltInOperation, @isemptyexpr {
override string toString() { result = "__is_empty" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsEmpty" }
}
/**
@@ -186,6 +218,8 @@ class BuiltInOperationIsEmpty extends BuiltInOperation, @isemptyexpr {
*/
class BuiltInOperationIsEnum extends BuiltInOperation, @isenumexpr {
override string toString() { result = "__is_enum" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsEnum" }
}
/**
@@ -193,6 +227,8 @@ class BuiltInOperationIsEnum extends BuiltInOperation, @isenumexpr {
*/
class BuiltInOperationIsPod extends BuiltInOperation, @ispodexpr {
override string toString() { result = "__is_pod" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsPod" }
}
/**
@@ -200,6 +236,8 @@ class BuiltInOperationIsPod extends BuiltInOperation, @ispodexpr {
*/
class BuiltInOperationIsPolymorphic extends BuiltInOperation, @ispolyexpr {
override string toString() { result = "__is_polymorphic" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsPolymorphic" }
}
/**
@@ -207,6 +245,8 @@ class BuiltInOperationIsPolymorphic extends BuiltInOperation, @ispolyexpr {
*/
class BuiltInOperationIsUnion extends BuiltInOperation, @isunionexpr {
override string toString() { result = "__is_union" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsUnion" }
}
/**
@@ -226,6 +266,8 @@ class BuiltInOperationBuiltInTypesCompatibleP extends BuiltInOperation, @typesco
*/
class BuiltInOperationBuiltInShuffleVector extends BuiltInOperation, @builtinshufflevector {
override string toString() { result = "__builtin_shufflevector" }
override string getCanonicalQLClass() { result = "BuiltInOperationBuiltInShuffleVector" }
}
/**
@@ -233,6 +275,8 @@ class BuiltInOperationBuiltInShuffleVector extends BuiltInOperation, @builtinshu
*/
class BuiltInOperationBuiltInConvertVector extends BuiltInOperation, @builtinconvertvector {
override string toString() { result = "__builtin_convertvector" }
override string getCanonicalQLClass() { result = "BuiltInOperationBuiltInConvertVector" }
}
/**
@@ -256,6 +300,8 @@ class BuiltInOperationBuiltInAddressOf extends UnaryOperation, BuiltInOperation,
*/
class BuiltInOperationIsTriviallyConstructible extends BuiltInOperation, @istriviallyconstructibleexpr {
override string toString() { result = "__is_trivially_constructible" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsTriviallyConstructible" }
}
/**
@@ -263,6 +309,8 @@ class BuiltInOperationIsTriviallyConstructible extends BuiltInOperation, @istriv
*/
class BuiltInOperationIsDestructible extends BuiltInOperation, @isdestructibleexpr {
override string toString() { result = "__is_destructible" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsDestructible" }
}
/**
@@ -270,6 +318,8 @@ class BuiltInOperationIsDestructible extends BuiltInOperation, @isdestructibleex
*/
class BuiltInOperationIsNothrowDestructible extends BuiltInOperation, @isnothrowdestructibleexpr {
override string toString() { result = "__is_nothrow_destructible" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsNothrowDestructible" }
}
/**
@@ -277,6 +327,8 @@ class BuiltInOperationIsNothrowDestructible extends BuiltInOperation, @isnothrow
*/
class BuiltInOperationIsTriviallyDestructible extends BuiltInOperation, @istriviallydestructibleexpr {
override string toString() { result = "__is_trivially_destructible" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsTriviallyDestructible" }
}
/**
@@ -284,6 +336,8 @@ class BuiltInOperationIsTriviallyDestructible extends BuiltInOperation, @istrivi
*/
class BuiltInOperationIsTriviallyAssignable extends BuiltInOperation, @istriviallyassignableexpr {
override string toString() { result = "__is_trivially_assignable" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsTriviallyAssignable" }
}
/**
@@ -291,6 +345,8 @@ class BuiltInOperationIsTriviallyAssignable extends BuiltInOperation, @istrivial
*/
class BuiltInOperationIsNothrowAssignable extends BuiltInOperation, @isnothrowassignableexpr {
override string toString() { result = "__is_nothrow_assignable" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsNothrowAssignable" }
}
/**
@@ -298,6 +354,8 @@ class BuiltInOperationIsNothrowAssignable extends BuiltInOperation, @isnothrowas
*/
class BuiltInOperationIsStandardLayout extends BuiltInOperation, @isstandardlayoutexpr {
override string toString() { result = "__is_standard_layout" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsStandardLayout" }
}
/**
@@ -305,6 +363,8 @@ class BuiltInOperationIsStandardLayout extends BuiltInOperation, @isstandardlayo
*/
class BuiltInOperationIsTriviallyCopyable extends BuiltInOperation, @istriviallycopyableexpr {
override string toString() { result = "__is_trivially_copyable" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsTriviallyCopyable" }
}
/**
@@ -312,6 +372,8 @@ class BuiltInOperationIsTriviallyCopyable extends BuiltInOperation, @istrivially
*/
class BuiltInOperationIsLiteralType extends BuiltInOperation, @isliteraltypeexpr {
override string toString() { result = "__is_literal_type" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsLiteralType" }
}
/**
@@ -319,6 +381,8 @@ class BuiltInOperationIsLiteralType extends BuiltInOperation, @isliteraltypeexpr
*/
class BuiltInOperationHasTrivialMoveConstructor extends BuiltInOperation, @hastrivialmoveconstructorexpr {
override string toString() { result = "__has_trivial_move_constructor" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasTrivialMoveConstructor" }
}
/**
@@ -326,6 +390,8 @@ class BuiltInOperationHasTrivialMoveConstructor extends BuiltInOperation, @hastr
*/
class BuiltInOperationHasTrivialMoveAssign extends BuiltInOperation, @hastrivialmoveassignexpr {
override string toString() { result = "__has_trivial_move_assign" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasTrivialMoveAssign" }
}
/**
@@ -333,6 +399,8 @@ class BuiltInOperationHasTrivialMoveAssign extends BuiltInOperation, @hastrivial
*/
class BuiltInOperationHasNothrowMoveAssign extends BuiltInOperation, @hasnothrowmoveassignexpr {
override string toString() { result = "__has_nothrow_move_assign" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasNothrowMoveAssign" }
}
/**
@@ -340,6 +408,8 @@ class BuiltInOperationHasNothrowMoveAssign extends BuiltInOperation, @hasnothrow
*/
class BuiltInOperationIsConstructible extends BuiltInOperation, @isconstructibleexpr {
override string toString() { result = "__is_constructible" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsConstructible" }
}
/**
@@ -347,6 +417,8 @@ class BuiltInOperationIsConstructible extends BuiltInOperation, @isconstructible
*/
class BuiltInOperationIsNothrowConstructible extends BuiltInOperation, @isnothrowconstructibleexpr {
override string toString() { result = "__is_nothrow_constructible" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsNothrowConstructible" }
}
/**
@@ -354,6 +426,8 @@ class BuiltInOperationIsNothrowConstructible extends BuiltInOperation, @isnothro
*/
class BuiltInOperationHasFinalizer extends BuiltInOperation, @hasfinalizerexpr {
override string toString() { result = "__has_finalizer" }
override string getCanonicalQLClass() { result = "BuiltInOperationHasFinalizer" }
}
/**
@@ -361,6 +435,8 @@ class BuiltInOperationHasFinalizer extends BuiltInOperation, @hasfinalizerexpr {
*/
class BuiltInOperationIsDelegate extends BuiltInOperation, @isdelegateexpr {
override string toString() { result = "__is_delegate" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsDelegate" }
}
/**
@@ -368,6 +444,8 @@ class BuiltInOperationIsDelegate extends BuiltInOperation, @isdelegateexpr {
*/
class BuiltInOperationIsInterfaceClass extends BuiltInOperation, @isinterfaceclassexpr {
override string toString() { result = "__is_interface_class" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsInterfaceClass" }
}
/**
@@ -375,6 +453,8 @@ class BuiltInOperationIsInterfaceClass extends BuiltInOperation, @isinterfacecla
*/
class BuiltInOperationIsRefArray extends BuiltInOperation, @isrefarrayexpr {
override string toString() { result = "__is_ref_array" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsRefArray" }
}
/**
@@ -382,6 +462,8 @@ class BuiltInOperationIsRefArray extends BuiltInOperation, @isrefarrayexpr {
*/
class BuiltInOperationIsRefClass extends BuiltInOperation, @isrefclassexpr {
override string toString() { result = "__is_ref_class" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsRefClass" }
}
/**
@@ -389,6 +471,8 @@ class BuiltInOperationIsRefClass extends BuiltInOperation, @isrefclassexpr {
*/
class BuiltInOperationIsSealed extends BuiltInOperation, @issealedexpr {
override string toString() { result = "__is_sealed" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsSealed" }
}
/**
@@ -396,6 +480,8 @@ class BuiltInOperationIsSealed extends BuiltInOperation, @issealedexpr {
*/
class BuiltInOperationIsSimpleValueClass extends BuiltInOperation, @issimplevalueclassexpr {
override string toString() { result = "__is_simple_value_class" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsSimpleValueClass" }
}
/**
@@ -403,6 +489,8 @@ class BuiltInOperationIsSimpleValueClass extends BuiltInOperation, @issimplevalu
*/
class BuiltInOperationIsValueClass extends BuiltInOperation, @isvalueclassexpr {
override string toString() { result = "__is_value_class" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsValueClass" }
}
/**
@@ -410,6 +498,8 @@ class BuiltInOperationIsValueClass extends BuiltInOperation, @isvalueclassexpr {
*/
class BuiltInOperationIsFinal extends BuiltInOperation, @isfinalexpr {
override string toString() { result = "__is_final" }
override string getCanonicalQLClass() { result = "BuiltInOperationIsFinal" }
}
/**

View File

@@ -456,6 +456,7 @@ class VacuousDestructorCall extends Expr, @vacuous_destructor_call {
* of a constructor's explicit initializer list or implicit actions.
*/
class ConstructorInit extends Expr, @ctorinit {
override string getCanonicalQLClass() { result = "ConstructorInit" }
}
/**
@@ -463,6 +464,7 @@ class ConstructorInit extends Expr, @ctorinit {
* initializer list or compiler-generated actions.
*/
class ConstructorBaseInit extends ConstructorInit, ConstructorCall {
override string getCanonicalQLClass() { result = "ConstructorBaseInit" }
}
/**
@@ -470,6 +472,7 @@ class ConstructorBaseInit extends ConstructorInit, ConstructorCall {
* constructor's initializer list or compiler-generated actions.
*/
class ConstructorDirectInit extends ConstructorBaseInit, @ctordirectinit {
override string getCanonicalQLClass() { result = "ConstructorDirectInit" }
}
/**
@@ -480,6 +483,7 @@ class ConstructorDirectInit extends ConstructorBaseInit, @ctordirectinit {
* call won't be performed.
*/
class ConstructorVirtualInit extends ConstructorBaseInit, @ctorvirtualinit {
override string getCanonicalQLClass() { result = "ConstructorVirtualInit" }
}
/**
@@ -487,6 +491,7 @@ class ConstructorVirtualInit extends ConstructorBaseInit, @ctorvirtualinit {
* initializer list, which delegates object construction (C++11 only).
*/
class ConstructorDelegationInit extends ConstructorBaseInit, @ctordelegatinginit {
override string getCanonicalQLClass() { result = "ConstructorDelegationInit" }
}
/**
@@ -524,6 +529,7 @@ class ConstructorFieldInit extends ConstructorInit, @ctorfieldinit {
* compiler-generated actions.
*/
class DestructorDestruction extends Expr, @dtordestruct {
override string getCanonicalQLClass() { result = "DestructorDestruction" }
}
/**
@@ -531,6 +537,7 @@ class DestructorDestruction extends Expr, @dtordestruct {
* compiler-generated actions.
*/
class DestructorBaseDestruction extends DestructorCall, DestructorDestruction {
override string getCanonicalQLClass() { result = "DestructorBaseDestruction" }
}
/**
@@ -538,6 +545,7 @@ class DestructorBaseDestruction extends DestructorCall, DestructorDestruction {
* destructor's compiler-generated actions.
*/
class DestructorDirectDestruction extends DestructorBaseDestruction, @dtordirectdestruct {
override string getCanonicalQLClass() { result = "DestructorDirectDestruction" }
}
/**
@@ -548,6 +556,7 @@ class DestructorDirectDestruction extends DestructorBaseDestruction, @dtordirect
* in the corresponding constructor, then this call won't be performed.
*/
class DestructorVirtualDestruction extends DestructorBaseDestruction, @dtorvirtualdestruct {
override string getCanonicalQLClass() { result = "DestructorVirtualDestruction" }
}
/**

View File

@@ -14,7 +14,7 @@ class Literal extends Expr, @literal {
}
override string getCanonicalQLClass() { result = "Literal" }
override predicate mayBeImpure() {
none()
}
@@ -41,6 +41,8 @@ class LabelLiteral extends Literal {
jumpinfo(underlyingElement(this),_,_)
}
override string getCanonicalQLClass() { result = "LabelLiteral" }
/** Gets the corresponding label statement. */
LabelStmt getLabel() {
jumpinfo(underlyingElement(this),_,unresolveElement(result))
@@ -123,7 +125,7 @@ class StringLiteral extends TextLiteral
}
override string getCanonicalQLClass() { result = "StringLiteral" }
}
/**
@@ -133,7 +135,7 @@ class OctalLiteral extends Literal {
OctalLiteral() {
super.getValueText().regexpMatch("\\s*0[0-7]+[uUlL]*\\s*")
}
override string getCanonicalQLClass() { result = "OctalLiteral" }
}
@@ -144,7 +146,7 @@ class HexLiteral extends Literal {
HexLiteral() {
super.getValueText().regexpMatch("\\s*0[xX][0-9a-fA-F]+[uUlL]*\\s*")
}
override string getCanonicalQLClass() { result = "HexLiteral" }
}
@@ -154,6 +156,8 @@ class HexLiteral extends Literal {
class AggregateLiteral extends Expr, @aggregateliteral {
// if this is turned into a Literal we need to change mayBeImpure
override string getCanonicalQLClass() { result = "AggregateLiteral" }
/**
* DEPRECATED: Use ClassAggregateLiteral.getFieldExpr() instead.
*

View File

@@ -602,7 +602,7 @@ class BreakStmt extends JumpStmt, @stmt_break {
override predicate mayBeImpure() { none() }
override predicate mayBeGloballyImpure() { none() }
/**
* Gets the loop or switch statement that this break statement will exit.
*/
@@ -1149,11 +1149,11 @@ class SwitchCase extends Stmt, @stmt_switch_case {
/**
* DEPRECATED: use `SwitchCase.getAStmt` or `ControlFlowNode.getASuccessor`
* rather than this predicate.
* rather than this predicate.
*
* Gets the `Block` statement immediately following this 'switch case'
* statement, if any.
*
*
* For example, for
* ```
* switch (i) {
@@ -1845,6 +1845,8 @@ class MicrosoftTryExceptStmt extends MicrosoftTryStmt {
/** Gets the `__except` statement (usually a `Block`). */
Stmt getExcept() { result = getChild(2) }
override string getCanonicalQLClass() { result = "MicrosoftTryExceptStmt" }
}
/**
@@ -1860,6 +1862,8 @@ class MicrosoftTryFinallyStmt extends MicrosoftTryStmt {
/** Gets the `__finally` statement (usually a `Block`). */
Stmt getFinally() { result = getChild(1) }
override string getCanonicalQLClass() { result = "MicrosoftTryFinallyStmt" }
}
/**