Skip to content

Commit a5c0555

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

File tree

2 files changed

+8
-28
lines changed

2 files changed

+8
-28
lines changed

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

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

1394-
/** Data flow for `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>.ConfiguredTaskAwaiter`. */
1395-
class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterFlow extends LibraryTypeDataFlow,
1396-
SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterStruct {
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();
1403-
// var result = awaiter.GetResult(); // <-- task.Result
1404-
preservesValue = true and
1405-
c = this.getGetResultMethod() and
1406-
source = TCallableFlowSourceQualifier() and
1407-
sourceAp =
1408-
AccessPath::cons(any(SyntheticFieldContent sfc |
1409-
sfc.getField() instanceof SyntheticConfiguredTaskAwaitableUnderlyingTaskField
1410-
), AccessPath::property(any(SystemThreadingTasksTaskTClass t).getResultProperty())) and
1411-
sink = TCallableFlowSinkReturn() and
1412-
sinkAp = AccessPath::empty()
1413-
}
1414-
1415-
override predicate requiresAccessPath(Content head, AccessPath tail) {
1416-
head.(SyntheticFieldContent).getField() instanceof
1417-
SyntheticConfiguredTaskAwaitableUnderlyingTaskField and
1418-
tail = AccessPath::property(any(SystemThreadingTasksTaskTClass t).getResultProperty())
1419-
}
1420-
}
1421-
14221394
/** Data flow for `System.Text.Encoding`. */
14231395
library class SystemTextEncodingFlow extends LibraryTypeDataFlow, SystemTextEncodingClass {
14241396
override predicate callableFlow(

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,11 @@ class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiter
7373
/** Gets the field that stores the underlying task. */
7474
Field getUnderlyingTaskField() { result = this.getAField() and result.hasName("m_task") }
7575
}
76+
77+
/** Data flow for `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>.ConfiguredTaskAwaiter`. */
78+
private class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterFlowModelCsv extends SummaryModelCsv {
79+
override predicate row(string row) {
80+
row =
81+
"System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>+ConfiguredTaskAwaiter;false;GetResult;();;Property[System.Threading.Tasks.Task<>.Result] of SyntheticField[m_task_configured_task_awaitable] of Argument[-1];ReturnValue;value"
82+
}
83+
}

0 commit comments

Comments
 (0)