Skip to content

Commit c52787c

Browse files
committed
C#: Move the declaration of synthetic fields to where they are needed.
1 parent 608aba7 commit c52787c

File tree

3 files changed

+28
-26
lines changed

3 files changed

+28
-26
lines changed

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

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -473,32 +473,6 @@ class IEnumerableFlow extends LibraryTypeDataFlow, RefType {
473473
}
474474
}
475475

476-
abstract private class SyntheticTaskField extends SyntheticField {
477-
bindingset[this]
478-
SyntheticTaskField() { any() }
479-
480-
override Type getType() { result instanceof SystemThreadingTasksTaskTClass }
481-
}
482-
483-
private class SyntheticTaskAwaiterUnderlyingTaskField extends SyntheticTaskField {
484-
SyntheticTaskAwaiterUnderlyingTaskField() { this = "m_task_task_awaiter" }
485-
}
486-
487-
private class SyntheticConfiguredTaskAwaitableUnderlyingTaskField extends SyntheticTaskField {
488-
SyntheticConfiguredTaskAwaitableUnderlyingTaskField() {
489-
this = "m_task_configured_task_awaitable"
490-
}
491-
}
492-
493-
private class SyntheticConfiguredTaskAwaiterField extends SyntheticField {
494-
SyntheticConfiguredTaskAwaiterField() { this = "m_configuredTaskAwaiter" }
495-
496-
override Type getType() {
497-
result instanceof
498-
SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterStruct
499-
}
500-
}
501-
502476
private predicate recordConstructorFlow(Constructor c, int i, Property p) {
503477
c = any(Record r).getAMember() and
504478
exists(string name |

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

Lines changed: 10 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.internal.DataFlowPrivate
56
private import semmle.code.csharp.dataflow.ExternalFlow
67

78
/** The `System.Runtime.CompilerServices` namespace. */
@@ -53,6 +54,15 @@ class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct extends System
5354
}
5455
}
5556

57+
private class SyntheticConfiguredTaskAwaiterField extends SyntheticField {
58+
SyntheticConfiguredTaskAwaiterField() { this = "m_configuredTaskAwaiter" }
59+
60+
override Type getType() {
61+
result instanceof
62+
SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterStruct
63+
}
64+
}
65+
5666
/** Data flow for `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>`. */
5767
private class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTFlowModelCsv extends SummaryModelCsv {
5868
override predicate row(string row) {

csharp/ql/lib/semmle/code/csharp/frameworks/system/threading/Tasks.qll

Lines changed: 18 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.Threading
5+
private import semmle.code.csharp.dataflow.internal.DataFlowPrivate
56
private import semmle.code.csharp.dataflow.ExternalFlow
67

78
/** The `System.Threading.Tasks` namespace. */
@@ -91,6 +92,23 @@ class SystemThreadingTasksTaskTClass extends SystemThreadingTasksUnboundGenericC
9192
Method getConfigureAwaitMethod() { result = this.getAMethod("ConfigureAwait") }
9293
}
9394

95+
abstract private class SyntheticTaskField extends SyntheticField {
96+
bindingset[this]
97+
SyntheticTaskField() { any() }
98+
99+
override Type getType() { result instanceof SystemThreadingTasksTaskTClass }
100+
}
101+
102+
private class SyntheticTaskAwaiterUnderlyingTaskField extends SyntheticTaskField {
103+
SyntheticTaskAwaiterUnderlyingTaskField() { this = "m_task_task_awaiter" }
104+
}
105+
106+
private class SyntheticConfiguredTaskAwaitableUnderlyingTaskField extends SyntheticTaskField {
107+
SyntheticConfiguredTaskAwaitableUnderlyingTaskField() {
108+
this = "m_task_configured_task_awaitable"
109+
}
110+
}
111+
94112
/** Data flow for `System.Threading.Tasks.Task<>`. */
95113
private class SystemThreadingTasksTaskTFlowModelCsv extends SummaryModelCsv {
96114
override predicate row(string row) {

0 commit comments

Comments
 (0)