Skip to content

Commit bdd44c1

Browse files
committed
C#: Convert System.Runtime.CompilerServices.ConfiguredTaskAwaitable flow to CSV format.
1 parent 034d45d commit bdd44c1

File tree

3 files changed

+10
-19
lines changed

3 files changed

+10
-19
lines changed

csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ private module Frameworks {
101101
private import semmle.code.csharp.frameworks.system.io.Compression
102102
private import semmle.code.csharp.frameworks.system.Xml
103103
private import semmle.code.csharp.frameworks.system.threading.Tasks
104+
private import semmle.code.csharp.frameworks.system.runtime.CompilerServices
104105
}
105106

106107
/**

csharp/ql/lib/semmle/code/csharp/dataflow/LibraryTypeDataFlow.qll

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,25 +1391,6 @@ private class SyntheticConfiguredTaskAwaiterField extends SyntheticField {
13911391
}
13921392
}
13931393

1394-
/** Data flow for `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>`. */
1395-
private class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTFlow extends LibraryTypeDataFlow,
1396-
SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct {
1397-
override predicate callableFlow(
1398-
CallableFlowSource source, AccessPath sourceAp, CallableFlowSink sink, AccessPath sinkAp,
1399-
SourceDeclarationCallable c, boolean preservesValue
1400-
) {
1401-
// var awaitable = task.ConfigureAwait(false);
1402-
// var awaiter = awaitable.GetAwaiter(); // <-- awaitable.m_configuredTaskAwaiter
1403-
// var result = awaiter.GetResult();
1404-
c = this.getGetAwaiterMethod() and
1405-
source = TCallableFlowSourceQualifier() and
1406-
sourceAp = AccessPath::synthetic(any(SyntheticConfiguredTaskAwaiterField s)) and
1407-
sink = TCallableFlowSinkReturn() and
1408-
sinkAp = AccessPath::empty() and
1409-
preservesValue = true
1410-
}
1411-
}
1412-
14131394
/** Data flow for `System.Runtime.CompilerServices.TaskAwaiter<>`. */
14141395
class SystemRuntimeCompilerServicesTaskAwaiterFlow extends LibraryTypeDataFlow,
14151396
SystemRuntimeCompilerServicesTaskAwaiterStruct {

csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import csharp
44
private import semmle.code.csharp.frameworks.system.Runtime
5+
private import semmle.code.csharp.dataflow.ExternalFlow
56

67
/** The `System.Runtime.CompilerServices` namespace. */
78
class SystemRuntimeCompilerServicesNamespace extends Namespace {
@@ -44,6 +45,14 @@ class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct extends System
4445
}
4546
}
4647

48+
/** Data flow for `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>`. */
49+
private class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTFlowModelCsv extends SummaryModelCsv {
50+
override predicate row(string row) {
51+
row =
52+
"System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>;false;GetAwaiter;();;SyntheticField[m_configuredTaskAwaiter] of Argument[-1];ReturnValue;value"
53+
}
54+
}
55+
4756
/** The `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>.ConfiguredTaskAwaiter` struct. */
4857
class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterStruct extends Struct {
4958
SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterStruct() {

0 commit comments

Comments
 (0)