Skip to content

Commit 230dacd

Browse files
authored
Merge pull request #22631 from MathiasVP/no-magic-csharp
C#: Disallow magic in `getAnAccess`
2 parents a281f7c + d7f7ab3 commit 230dacd

4 files changed

Lines changed: 7 additions & 0 deletions

File tree

‎csharp/ql/lib/semmle/code/csharp/Assignable.qll‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class Assignable extends Declaration, @assignable {
1818
final AnnotatedType getAnnotatedType() { result.appliesTo(this) }
1919

2020
/** Gets an access to this assignable. */
21+
pragma[nomagic]
2122
AssignableAccess getAnAccess() { result.getTarget() = this }
2223

2324
/** Gets an expression assigned to this assignable, if any. */
@@ -31,6 +32,7 @@ class Assignable extends Declaration, @assignable {
3132
* property (`Property`), an indexer (`Indexer`), or an event (`Event`).
3233
*/
3334
class AssignableMember extends Member, Assignable, Attributable {
35+
pragma[nomagic]
3436
override AssignableMemberAccess getAnAccess() { result = Assignable.super.getAnAccess() }
3537

3638
override string toString() { result = Assignable.super.toString() }

‎csharp/ql/lib/semmle/code/csharp/Member.qll‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ class Modifiable extends Declaration, @modifiable {
238238
/** A declaration that is a member of a type. */
239239
class Member extends Modifiable, @member {
240240
/** Gets an access to this member. */
241+
pragma[nomagic]
241242
MemberAccess getAnAccess() { result.getTarget() = this }
242243

243244
/**

‎csharp/ql/lib/semmle/code/csharp/Property.qll‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ class Property extends DeclarationWithGetSetAccessors, @property {
217217
result = DeclarationWithGetSetAccessors.super.getAnUltimateImplementor()
218218
}
219219

220+
pragma[nomagic]
220221
override PropertyAccess getAnAccess() { result.getTarget() = this }
221222

222223
override Location getALocation() { property_location(this.getUnboundDeclaration(), result) }
@@ -326,6 +327,7 @@ class Indexer extends DeclarationWithGetSetAccessors, Parameterizable, @indexer
326327
indexers(this, _, _, getTypeRef(result), _)
327328
}
328329

330+
pragma[nomagic]
329331
override IndexerAccess getAnAccess() { result.getTarget() = this }
330332

331333
/**

‎csharp/ql/lib/semmle/code/csharp/Variable.qll‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ private import TypeRef
1616
class Variable extends Assignable, @variable {
1717
override Variable getUnboundDeclaration() { result = this }
1818

19+
pragma[nomagic]
1920
override VariableAccess getAnAccess() { result.getTarget() = this }
2021

2122
/** Gets the type of this variable. */
@@ -438,6 +439,7 @@ class Field extends Variable, AssignableMember, Attributable, TopLevelExprParent
438439

439440
override Field getUnboundDeclaration() { fields(this, _, _, _, _, result) }
440441

442+
pragma[nomagic]
441443
override FieldAccess getAnAccess() { result = Variable.super.getAnAccess() }
442444

443445
override ValueOrRefType getDeclaringType() { fields(this, _, _, result, _, _) }

0 commit comments

Comments
 (0)