@@ -267,6 +267,25 @@ class Call extends Expr, @call {
267267class MethodCall extends Call , QualifiableExpr , LateBindableExpr , @method_invocation_expr {
268268 override Method getTarget ( ) { expr_call ( this , result ) }
269269
270+ /**
271+ * Gets the accessor that was used to generate this method, if any. For example, the
272+ * method call `MyExtensions.get_FirstChar(s)` on line 9 is generated from the property
273+ * accessor `get_FirstChar` on line 3 in
274+ * ```csharp
275+ * static class MyExtensions {
276+ * extension(string s) {
277+ * public char FirstChar { get { ... } }
278+ * }
279+ * }
280+ *
281+ * class A {
282+ * char M(string s) {
283+ * return MyExtensions.get_FirstChar(s);
284+ * }
285+ * }
286+ */
287+ Accessor getTargetAccessor ( ) { expr_call ( this , result ) }
288+
270289 override Method getQualifiedDeclaration ( ) { result = this .getTarget ( ) }
271290
272291 override string toString ( ) { result = "call to method " + concat ( this .getTarget ( ) .getName ( ) ) }
@@ -600,8 +619,8 @@ class FunctionPointerCall extends DelegateLikeCall, @function_pointer_invocation
600619
601620/**
602621 * A call to an accessor. Either a property accessor call (`PropertyCall`),
603- * an indexer accessor call (`IndexerCall`), an event accessor call
604- * (`EventCall`) or an extension accessor call (`ExtensionAccessorCall`) .
622+ * an indexer accessor call (`IndexerCall`) or an event accessor call
623+ * (`EventCall`).
605624 */
606625class AccessorCall extends Call , QualifiableExpr , @call_access_expr {
607626 override Accessor getTarget ( ) { none ( ) }
@@ -611,35 +630,6 @@ class AccessorCall extends Call, QualifiableExpr, @call_access_expr {
611630 override Accessor getARuntimeTarget ( ) { result = Call .super .getARuntimeTarget ( ) }
612631}
613632
614- /**
615- * A direct call to an extension accessor, for example `MyExtensions.get_FirstChar(s)`
616- * in
617- * ```csharp
618- * static class MyExtensions {
619- * extension(string s) {
620- * public char FirstChar { get { ... } }
621- * }
622- * }
623- *
624- * class A {
625- * char M(string s) {
626- * return MyExtensions.get_FirstChar(s);
627- * }
628- * }
629- * ```
630- */
631- class ExtensionAccessorCall extends AccessorCall , @accessor_invocation_expr {
632- override Accessor getTarget ( ) { expr_call ( this , result ) }
633-
634- override Expr getArgument ( int i ) { result = this .getChild ( i ) and i >= 0 }
635-
636- override string toString ( ) {
637- result = "call to extension accessor " + concat ( this .getTarget ( ) .getName ( ) )
638- }
639-
640- override string getAPrimaryQlClass ( ) { result = "ExtensionAccessorCall" }
641- }
642-
643633/**
644634 * A call to a property accessor, for example the call to `get_P` on
645635 * line 5 in
0 commit comments