Skip to content

Commit ddb7d72

Browse files
committed
C#: Convert System.Runtime.CompilerServices.TaskAwaiter<> flow to CSV format.
1 parent bdd44c1 commit ddb7d72

File tree

2 files changed

+7
-24
lines changed

2 files changed

+7
-24
lines changed

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

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

1394-
/** Data flow for `System.Runtime.CompilerServices.TaskAwaiter<>`. */
1395-
class SystemRuntimeCompilerServicesTaskAwaiterFlow extends LibraryTypeDataFlow,
1396-
SystemRuntimeCompilerServicesTaskAwaiterStruct {
1397-
override predicate callableFlow(
1398-
CallableFlowSource source, AccessPath sourceAp, CallableFlowSink sink, AccessPath sinkAp,
1399-
SourceDeclarationCallable c, boolean preservesValue
1400-
) {
1401-
preservesValue = true and
1402-
c = this.getGetResultMethod() and
1403-
source = TCallableFlowSourceQualifier() and
1404-
sourceAp =
1405-
AccessPath::cons(any(SyntheticFieldContent sfc |
1406-
sfc.getField() instanceof SyntheticTaskAwaiterUnderlyingTaskField
1407-
), AccessPath::property(any(SystemThreadingTasksTaskTClass t).getResultProperty())) and
1408-
sink = TCallableFlowSinkReturn() and
1409-
sinkAp = AccessPath::empty()
1410-
}
1411-
1412-
override predicate requiresAccessPath(Content head, AccessPath tail) {
1413-
head.(SyntheticFieldContent).getField() instanceof SyntheticTaskAwaiterUnderlyingTaskField and
1414-
tail = AccessPath::property(any(SystemThreadingTasksTaskTClass t).getResultProperty())
1415-
}
1416-
}
1417-
14181394
/** Data flow for `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>.ConfiguredTaskAwaiter`. */
14191395
class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterFlow extends LibraryTypeDataFlow,
14201396
SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterStruct {

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ class SystemRuntimeCompilerServicesTaskAwaiterStruct extends SystemRuntimeCompil
3030
Field getUnderlyingTaskField() { result = this.getAField() and result.hasName("m_task") }
3131
}
3232

33+
private class SystemRuntimeCompilerServicesTaskAwaiterFlowModelCsv extends SummaryModelCsv {
34+
override predicate row(string row) {
35+
row =
36+
"System.Runtime.CompilerServices;TaskAwaiter<>;false;GetResult;();;Property[System.Threading.Tasks.Task<>.Result] of SyntheticField[m_task_task_awaiter] of Argument[-1];ReturnValue;value"
37+
}
38+
}
39+
3340
/** The `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>` struct. */
3441
class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct extends SystemRuntimeCompilerServicesNamespaceUnboundGenericStruct {
3542
SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct() {

0 commit comments

Comments
 (0)