Skip to content

Commit 48584a6

Browse files
committed
Merge main into redsun82/swift-use-generated-classes
2 parents be210aa + fc7e0ec commit 48584a6

File tree

502 files changed

+9928
-1302
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

502 files changed

+9928
-1302
lines changed

.github/workflows/swift-codegen.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
run: |
2323
bazel run //swift/codegen
2424
git add swift
25-
git diff --exit-code --stat HEAD
25+
git diff --exit-code HEAD
2626
- name: Generate C++ files
2727
run: |
2828
bazel run //swift/codegen:codegen -- --generate=trap,cpp --cpp-output=$PWD/swift-generated-headers

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,6 @@ go/main
5858
# node_modules folders except in the JS test suite
5959
node_modules/
6060
!/javascript/ql/test/**/node_modules/
61+
62+
# Temporary folders for working with generated models
63+
.model-temp

config/identical-files.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@
7575
"DataFlow Java/C# Flow Summaries": [
7676
"java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll",
7777
"csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll",
78-
"ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll"
78+
"ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll",
79+
"swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll"
7980
],
8081
"SsaReadPosition Java/C#": [
8182
"java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionCommon.qll",
@@ -527,7 +528,8 @@
527528
"java/ql/lib/semmle/code/java/dataflow/internal/AccessPathSyntax.qll",
528529
"javascript/ql/lib/semmle/javascript/frameworks/data/internal/AccessPathSyntax.qll",
529530
"ruby/ql/lib/codeql/ruby/dataflow/internal/AccessPathSyntax.qll",
530-
"python/ql/lib/semmle/python/frameworks/data/internal/AccessPathSyntax.qll"
531+
"python/ql/lib/semmle/python/frameworks/data/internal/AccessPathSyntax.qll",
532+
"swift/ql/lib/codeql/swift/dataflow/internal/AccessPathSyntax.qll"
531533
],
532534
"IncompleteUrlSubstringSanitization": [
533535
"javascript/ql/src/Security/CWE-020/IncompleteUrlSubstringSanitization.qll",

cpp/ql/test/TestUtilities/InlineExpectationsTest.qll

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,12 +239,24 @@ private string getColumnString(TColumn column) {
239239

240240
/**
241241
* RegEx pattern to match a single expected result, not including the leading `$`. It consists of one or
242-
* more comma-separated tags containing only letters, digits, `-` and `_` (note that the first character
243-
* must not be a digit), optionally followed by `=` and the expected value.
242+
* more comma-separated tags optionally followed by `=` and the expected value.
243+
*
244+
* Tags must be only letters, digits, `-` and `_` (note that the first character
245+
* must not be a digit), but can contain anything enclosed in a single set of
246+
* square brackets.
247+
*
248+
* Examples:
249+
* - `tag`
250+
* - `tag=value`
251+
* - `tag,tag2=value`
252+
* - `tag[foo bar]=value`
253+
*
254+
* Not allowed:
255+
* - `tag[[[foo bar]`
244256
*/
245257
private string expectationPattern() {
246258
exists(string tag, string tags, string value |
247-
tag = "[A-Za-z-_][A-Za-z-_0-9]*" and
259+
tag = "[A-Za-z-_](?:[A-Za-z-_0-9]|\\[[^\\]\\]]*\\])*" and
248260
tags = "((?:" + tag + ")(?:\\s*,\\s*" + tag + ")*)" and
249261
// In Python, we allow both `"` and `'` for strings, as well as the prefixes `bru`.
250262
// For example, `b"foo"`.

cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,10 +218,10 @@ postWithInFlow
218218
| lambdas.cpp:20:11:20:11 | FieldAddress [post update] | PostUpdateNode should not be the target of local flow. |
219219
| lambdas.cpp:20:11:20:11 | FieldAddress [post update] | PostUpdateNode should not be the target of local flow. |
220220
| lambdas.cpp:20:11:20:11 | FieldAddress [post update] | PostUpdateNode should not be the target of local flow. |
221+
| lambdas.cpp:23:3:23:3 | (reference dereference) [post update] | PostUpdateNode should not be the target of local flow. |
221222
| lambdas.cpp:23:3:23:14 | FieldAddress [post update] | PostUpdateNode should not be the target of local flow. |
222223
| lambdas.cpp:23:3:23:14 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. |
223224
| lambdas.cpp:23:3:23:14 | v [post update] | PostUpdateNode should not be the target of local flow. |
224-
| lambdas.cpp:23:15:23:15 | (reference dereference) [post update] | PostUpdateNode should not be the target of local flow. |
225225
| lambdas.cpp:28:7:28:7 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. |
226226
| lambdas.cpp:28:10:31:2 | FieldAddress [post update] | PostUpdateNode should not be the target of local flow. |
227227
| lambdas.cpp:28:10:31:2 | FieldAddress [post update] | PostUpdateNode should not be the target of local flow. |

cpp/ql/test/library-tests/ir/ir/operand_locations.expected

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4833,6 +4833,9 @@
48334833
| ir.cpp:1043:24:1043:24 | SideEffect | ~m1043_20 |
48344834
| ir.cpp:1043:31:1043:31 | Address | &:r1043_9 |
48354835
| ir.cpp:1043:36:1043:55 | Address | &:r1043_11 |
4836+
| ir.cpp:1043:43:1043:43 | Address | &:r1043_16 |
4837+
| ir.cpp:1043:43:1043:43 | Arg(this) | this:r1043_16 |
4838+
| ir.cpp:1043:43:1043:43 | SideEffect | ~m1043_20 |
48364839
| ir.cpp:1043:43:1043:54 | Address | &:r1043_22 |
48374840
| ir.cpp:1043:43:1043:54 | Address | &:r1043_24 |
48384841
| ir.cpp:1043:43:1043:54 | Address | &:r1043_25 |
@@ -4853,11 +4856,8 @@
48534856
| ir.cpp:1043:45:1043:49 | SideEffect | ~m1043_4 |
48544857
| ir.cpp:1043:45:1043:49 | Unary | r1043_13 |
48554858
| ir.cpp:1043:45:1043:49 | Unary | r1043_15 |
4856-
| ir.cpp:1043:52:1043:52 | Address | &:r1043_16 |
4857-
| ir.cpp:1043:52:1043:52 | Arg(this) | this:r1043_16 |
4858-
| ir.cpp:1043:52:1043:52 | SideEffect | ~m1043_20 |
4859-
| ir.cpp:1043:54:1043:54 | Load | ~m1043_20 |
4860-
| ir.cpp:1043:54:1043:54 | Right | r1043_26 |
4859+
| ir.cpp:1043:53:1043:53 | Load | ~m1043_20 |
4860+
| ir.cpp:1043:53:1043:53 | Right | r1043_26 |
48614861
| ir.cpp:1043:58:1043:58 | ChiPartial | partial:m1043_9 |
48624862
| ir.cpp:1043:58:1043:58 | ChiTotal | total:m1043_3 |
48634863
| ir.cpp:1043:58:1043:58 | StoreValue | r1043_8 |
@@ -4972,6 +4972,9 @@
49724972
| ir.cpp:1047:34:1047:34 | SideEffect | ~m1047_20 |
49734973
| ir.cpp:1047:41:1047:41 | Address | &:r1047_9 |
49744974
| ir.cpp:1047:46:1047:65 | Address | &:r1047_11 |
4975+
| ir.cpp:1047:53:1047:53 | Address | &:r1047_16 |
4976+
| ir.cpp:1047:53:1047:53 | Arg(this) | this:r1047_16 |
4977+
| ir.cpp:1047:53:1047:53 | SideEffect | ~m1047_20 |
49754978
| ir.cpp:1047:53:1047:64 | Address | &:r1047_23 |
49764979
| ir.cpp:1047:53:1047:64 | Load | ~m1047_20 |
49774980
| ir.cpp:1047:53:1047:64 | StoreValue | r1047_24 |
@@ -4986,9 +4989,6 @@
49864989
| ir.cpp:1047:55:1047:59 | SideEffect | ~m1047_4 |
49874990
| ir.cpp:1047:55:1047:59 | Unary | r1047_13 |
49884991
| ir.cpp:1047:55:1047:59 | Unary | r1047_15 |
4989-
| ir.cpp:1047:62:1047:62 | Address | &:r1047_16 |
4990-
| ir.cpp:1047:62:1047:62 | Arg(this) | this:r1047_16 |
4991-
| ir.cpp:1047:62:1047:62 | SideEffect | ~m1047_20 |
49924992
| ir.cpp:1047:63:1047:63 | Right | r1047_22 |
49934993
| ir.cpp:1047:68:1047:68 | StoreValue | r1047_8 |
49944994
| ir.cpp:1047:68:1047:68 | Unary | r1047_7 |
@@ -5097,6 +5097,9 @@
50975097
| ir.cpp:1051:39:1051:39 | SideEffect | ~m1051_20 |
50985098
| ir.cpp:1051:46:1051:46 | Address | &:r1051_9 |
50995099
| ir.cpp:1051:51:1051:70 | Address | &:r1051_11 |
5100+
| ir.cpp:1051:58:1051:58 | Address | &:r1051_16 |
5101+
| ir.cpp:1051:58:1051:58 | Arg(this) | this:r1051_16 |
5102+
| ir.cpp:1051:58:1051:58 | SideEffect | ~m1051_20 |
51005103
| ir.cpp:1051:58:1051:69 | Address | &:r1051_22 |
51015104
| ir.cpp:1051:58:1051:69 | Address | &:r1051_24 |
51025105
| ir.cpp:1051:58:1051:69 | Address | &:r1051_26 |
@@ -5117,9 +5120,6 @@
51175120
| ir.cpp:1051:60:1051:64 | SideEffect | ~m1051_4 |
51185121
| ir.cpp:1051:60:1051:64 | Unary | r1051_13 |
51195122
| ir.cpp:1051:60:1051:64 | Unary | r1051_15 |
5120-
| ir.cpp:1051:67:1051:67 | Address | &:r1051_16 |
5121-
| ir.cpp:1051:67:1051:67 | Arg(this) | this:r1051_16 |
5122-
| ir.cpp:1051:67:1051:67 | SideEffect | ~m1051_20 |
51235123
| ir.cpp:1051:73:1051:73 | ChiPartial | partial:m1051_9 |
51245124
| ir.cpp:1051:73:1051:73 | ChiTotal | total:m1051_3 |
51255125
| ir.cpp:1051:73:1051:73 | StoreValue | r1051_8 |
@@ -5184,6 +5184,9 @@
51845184
| ir.cpp:1054:49:1054:49 | SideEffect | ~m1054_20 |
51855185
| ir.cpp:1054:56:1054:56 | Address | &:r1054_9 |
51865186
| ir.cpp:1054:61:1054:88 | Address | &:r1054_11 |
5187+
| ir.cpp:1054:68:1054:68 | Address | &:r1054_16 |
5188+
| ir.cpp:1054:68:1054:68 | Arg(this) | this:r1054_16 |
5189+
| ir.cpp:1054:68:1054:68 | SideEffect | ~m1054_20 |
51875190
| ir.cpp:1054:68:1054:87 | Address | &:r1054_37 |
51885191
| ir.cpp:1054:68:1054:87 | Load | ~m1054_20 |
51895192
| ir.cpp:1054:68:1054:87 | StoreValue | r1054_38 |
@@ -5198,9 +5201,6 @@
51985201
| ir.cpp:1054:70:1054:74 | SideEffect | ~m1054_4 |
51995202
| ir.cpp:1054:70:1054:74 | Unary | r1054_13 |
52005203
| ir.cpp:1054:70:1054:74 | Unary | r1054_15 |
5201-
| ir.cpp:1054:77:1054:77 | Address | &:r1054_16 |
5202-
| ir.cpp:1054:77:1054:77 | Arg(this) | this:r1054_16 |
5203-
| ir.cpp:1054:77:1054:77 | SideEffect | ~m1054_20 |
52045204
| ir.cpp:1054:78:1054:82 | Address | &:r1054_22 |
52055205
| ir.cpp:1054:78:1054:82 | Address | &:r1054_24 |
52065206
| ir.cpp:1054:78:1054:82 | Left | r1054_25 |

cpp/ql/test/library-tests/lambdas/captures/elements.expected

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,10 +156,10 @@
156156
| captures.cpp:23:12:23:16 | x |
157157
| captures.cpp:23:12:23:16 | y |
158158
| captures.cpp:23:12:23:20 | ... + ... |
159+
| captures.cpp:23:16:23:16 | (reference dereference) |
159160
| captures.cpp:23:16:23:16 | definition of y |
160161
| captures.cpp:23:16:23:16 | y |
161162
| captures.cpp:23:16:23:16 | y |
162-
| captures.cpp:23:18:23:18 | (reference dereference) |
163163
| captures.cpp:23:20:23:20 | z |
164164
| captures.cpp:26:3:26:24 | return ... |
165165
| captures.cpp:26:10:26:17 | (const lambda [] type at line 22, col. 19)... |
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using Microsoft.CodeAnalysis;
2+
using Microsoft.CodeAnalysis.CSharp.Syntax;
3+
using Semmle.Extraction.CSharp.Entities.Statements;
4+
using System.Collections.Generic;
5+
using System.IO;
6+
7+
namespace Semmle.Extraction.CSharp.Entities
8+
{
9+
internal class ImplicitMainMethod : OrdinaryMethod
10+
{
11+
private readonly List<GlobalStatementSyntax> globalStatements;
12+
13+
public ImplicitMainMethod(Context cx, IMethodSymbol symbol, List<GlobalStatementSyntax> globalStatements)
14+
: base(cx, symbol)
15+
{
16+
this.globalStatements = globalStatements;
17+
}
18+
19+
protected override void PopulateMethodBody(TextWriter trapFile)
20+
{
21+
GlobalStatementsBlock.Create(Context, this, globalStatements);
22+
}
23+
24+
public static ImplicitMainMethod Create(Context cx, IMethodSymbol method, List<GlobalStatementSyntax> globalStatements)
25+
{
26+
return ImplicitMainMethodFactory.Instance.CreateEntity(cx, method, (method, globalStatements));
27+
}
28+
29+
private class ImplicitMainMethodFactory : CachedEntityFactory<(IMethodSymbol, List<GlobalStatementSyntax>), ImplicitMainMethod>
30+
{
31+
public static ImplicitMainMethodFactory Instance { get; } = new ImplicitMainMethodFactory();
32+
33+
public override ImplicitMainMethod Create(Context cx, (IMethodSymbol, List<GlobalStatementSyntax>) init) => new ImplicitMainMethod(cx, init.Item1, init.Item2);
34+
}
35+
}
36+
}

csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ protected virtual void ExtractInitializers(TextWriter trapFile)
4646
// so there's nothing to extract.
4747
}
4848

49-
private void PopulateMethodBody(TextWriter trapFile)
49+
protected virtual void PopulateMethodBody(TextWriter trapFile)
5050
{
5151
if (!IsSourceDeclaration)
5252
return;

csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace Semmle.Extraction.CSharp.Entities
88
{
99
internal class OrdinaryMethod : Method
1010
{
11-
private OrdinaryMethod(Context cx, IMethodSymbol init)
11+
protected OrdinaryMethod(Context cx, IMethodSymbol init)
1212
: base(cx, init) { }
1313

1414
public override string Name => Symbol.GetName();

0 commit comments

Comments
 (0)