Merge pull request #3465 from MathiasVP/remove-abstract-from-access-and-cast

C++: Remove abstract keyword from `Access` and `Cast` classes
This commit is contained in:
Jonas Jensen 2020-05-15 12:25:34 +02:00 коммит произвёл GitHub
Родитель a536069059 671242ce5e
Коммит 8a0af0bcac
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
7 изменённых файлов: 4316 добавлений и 92 удалений

Просмотреть файл

@ -6,9 +6,13 @@ private import semmle.code.cpp.dataflow.EscapesTree
/** /**
* A C/C++ access expression. This refers to a function, variable, or enum constant. * A C/C++ access expression. This refers to a function, variable, or enum constant.
*/ */
abstract class Access extends Expr, NameQualifiableElement { class Access extends Expr, NameQualifiableElement, @access {
// As `@access` is a union type containing `@routineexpr` (which describes function accesses
// that are called), we need to exclude function calls.
Access() { this instanceof @routineexpr implies not iscall(underlyingElement(this), _) }
/** Gets the accessed function, variable, or enum constant. */ /** Gets the accessed function, variable, or enum constant. */
abstract Declaration getTarget(); Declaration getTarget() { none() } // overridden in subclasses
override predicate mayBeImpure() { none() } override predicate mayBeImpure() { none() }

Просмотреть файл

@ -7,7 +7,7 @@ private import semmle.code.cpp.internal.ResolveClass
* Instances of this class are not present in the main AST which is navigated by parent/child links. Instead, * Instances of this class are not present in the main AST which is navigated by parent/child links. Instead,
* instances of this class are attached to nodes in the main AST via special conversion links. * instances of this class are attached to nodes in the main AST via special conversion links.
*/ */
abstract class Conversion extends Expr { class Conversion extends Expr, @conversion {
/** Gets the expression being converted. */ /** Gets the expression being converted. */
Expr getExpr() { result.getConversion() = this } Expr getExpr() { result.getConversion() = this }

Просмотреть файл

@ -1143,6 +1143,13 @@ conversionkinds(
int kind: int ref int kind: int ref
); );
@conversion = @cast
| @array_to_pointer
| @parexpr
| @reference_to
| @ref_indirect
;
/* /*
case @funbindexpr.kind of case @funbindexpr.kind of
0 = @normal_call // a normal call 0 = @normal_call // a normal call
@ -1800,6 +1807,8 @@ lambda_capture(
@addressable = @function | @variable ; @addressable = @function | @variable ;
@accessible = @addressable | @enumconstant ; @accessible = @addressable | @enumconstant ;
@access = @varaccess | @routineexpr ;
fold( fold(
int expr: @foldexpr ref, int expr: @foldexpr ref,
string operator: string ref, string operator: string ref,

Просмотреть файл

@ -1524,7 +1524,7 @@
</e> </e>
<e> <e>
<k>seconds</k> <k>seconds</k>
<v>12697</v> <v>12094</v>
</e> </e>
</columnsizes> </columnsizes>
<dependencies> <dependencies>
@ -1570,17 +1570,17 @@
<b> <b>
<a>2</a> <a>2</a>
<b>3</b> <b>3</b>
<v>21</v> <v>10</v>
</b> </b>
<b> <b>
<a>3</a> <a>3</a>
<b>4</b> <b>4</b>
<v>2478</v> <v>2675</v>
</b> </b>
<b> <b>
<a>4</a> <a>4</a>
<b>5</b> <b>5</b>
<v>7028</v> <v>6842</v>
</b> </b>
</bs> </bs>
</hist> </hist>
@ -1626,8 +1626,8 @@
<budget>12</budget> <budget>12</budget>
<bs> <bs>
<b> <b>
<a>1158</a> <a>1103</a>
<b>1159</b> <b>1104</b>
<v>10</v> <v>10</v>
</b> </b>
</bs> </bs>
@ -1679,18 +1679,18 @@
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>14</a> <a>13</a>
<b>15</b> <b>14</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>565</a> <a>579</a>
<b>566</b> <b>580</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>693</a> <a>670</a>
<b>694</b> <b>671</b>
<v>10</v> <v>10</v>
</b> </b>
</bs> </bs>
@ -1707,22 +1707,22 @@
<b> <b>
<a>1</a> <a>1</a>
<b>2</b> <b>2</b>
<v>8859</v> <v>7949</v>
</b> </b>
<b> <b>
<a>2</a> <a>2</a>
<b>3</b> <b>3</b>
<v>2313</v> <v>2401</v>
</b> </b>
<b> <b>
<a>3</a> <a>3</a>
<b>5</b> <b>4</b>
<v>1107</v> <v>932</v>
</b> </b>
<b> <b>
<a>5</a> <a>4</a>
<b>614</b> <b>627</b>
<v>416</v> <v>811</v>
</b> </b>
</bs> </bs>
</hist> </hist>
@ -1738,7 +1738,7 @@
<b> <b>
<a>1</a> <a>1</a>
<b>2</b> <b>2</b>
<v>12697</v> <v>12094</v>
</b> </b>
</bs> </bs>
</hist> </hist>
@ -1754,17 +1754,17 @@
<b> <b>
<a>1</a> <a>1</a>
<b>2</b> <b>2</b>
<v>11403</v> <v>10285</v>
</b> </b>
<b> <b>
<a>2</a> <a>2</a>
<b>3</b> <b>3</b>
<v>1271</v> <v>1798</v>
</b> </b>
<b> <b>
<a>3</a> <a>3</a>
<b>5</b> <b>4</b>
<v>21</v> <v>10</v>
</b> </b>
</bs> </bs>
</hist> </hist>
@ -2143,7 +2143,7 @@
</e> </e>
<e> <e>
<k>cpu_seconds</k> <k>cpu_seconds</k>
<v>7927</v> <v>8157</v>
</e> </e>
<e> <e>
<k>elapsed_seconds</k> <k>elapsed_seconds</k>
@ -2193,17 +2193,17 @@
<b> <b>
<a>1</a> <a>1</a>
<b>2</b> <b>2</b>
<v>6820</v> <v>7160</v>
</b> </b>
<b> <b>
<a>2</a> <a>2</a>
<b>3</b> <b>3</b>
<v>778</v> <v>756</v>
</b> </b>
<b> <b>
<a>3</a> <a>3</a>
<b>8</b> <b>6</b>
<v>328</v> <v>241</v>
</b> </b>
</bs> </bs>
</hist> </hist>
@ -2219,12 +2219,12 @@
<b> <b>
<a>1</a> <a>1</a>
<b>2</b> <b>2</b>
<v>7587</v> <v>7675</v>
</b> </b>
<b> <b>
<a>2</a> <a>2</a>
<b>3</b> <b>3</b>
<v>339</v> <v>482</v>
</b> </b>
</bs> </bs>
</hist> </hist>
@ -2240,66 +2240,66 @@
<b> <b>
<a>1</a> <a>1</a>
<b>2</b> <b>2</b>
<v>10</v> <v>32</v>
</b> </b>
<b> <b>
<a>2</a> <a>2</a>
<b>3</b> <b>3</b>
<v>21</v> <v>10</v>
</b> </b>
<b> <b>
<a>3</a> <a>3</a>
<b>4</b> <b>4</b>
<v>21</v> <v>32</v>
</b> </b>
<b> <b>
<a>4</a> <a>7</a>
<b>5</b> <b>8</b>
<v>21</v>
</b>
<b>
<a>10</a>
<b>11</b>
<v>21</v>
</b>
<b>
<a>18</a>
<b>19</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>37</a> <a>8</a>
<b>38</b> <b>9</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>51</a> <a>21</a>
<b>52</b> <b>22</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>62</a> <a>26</a>
<b>63</b> <b>27</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>99</a> <a>31</a>
<b>100</b> <b>32</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>158</a> <a>104</a>
<b>159</b> <b>105</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>170</a> <a>137</a>
<b>171</b> <b>138</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>237</a> <a>144</a>
<b>238</b> <b>145</b>
<v>10</v>
</b>
<b>
<a>173</a>
<b>174</b>
<v>10</v>
</b>
<b>
<a>206</a>
<b>207</b>
<v>10</v> <v>10</v>
</b> </b>
</bs> </bs>
@ -2316,66 +2316,66 @@
<b> <b>
<a>1</a> <a>1</a>
<b>2</b> <b>2</b>
<v>10</v> <v>32</v>
</b> </b>
<b> <b>
<a>2</a> <a>2</a>
<b>3</b> <b>3</b>
<v>21</v> <v>10</v>
</b> </b>
<b> <b>
<a>3</a> <a>3</a>
<b>4</b> <b>4</b>
<v>21</v> <v>32</v>
</b> </b>
<b> <b>
<a>4</a> <a>7</a>
<b>5</b> <b>8</b>
<v>21</v>
</b>
<b>
<a>10</a>
<b>11</b>
<v>21</v>
</b>
<b>
<a>18</a>
<b>19</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>35</a> <a>8</a>
<b>36</b> <b>9</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>50</a> <a>21</a>
<b>51</b> <b>22</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>59</a> <a>25</a>
<b>60</b> <b>26</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>74</a> <a>29</a>
<b>75</b> <b>30</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>144</a> <a>84</a>
<b>145</b> <b>85</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>162</a> <a>122</a>
<b>163</b> <b>123</b>
<v>10</v> <v>10</v>
</b> </b>
<b> <b>
<a>173</a> <a>132</a>
<b>174</b> <b>133</b>
<v>10</v>
</b>
<b>
<a>150</a>
<b>151</b>
<v>10</v>
</b>
<b>
<a>196</a>
<b>197</b>
<v>10</v> <v>10</v>
</b> </b>
</bs> </bs>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,2 @@
description: Add union types for casts and accesses
compatibility: full