@@ -87,6 +87,24 @@ query predicate multiplePathResolutions(Path p, ItemNode i) {
8787 strictcount ( resolvePath ( p ) ) > 1
8888}
8989
90+ /** Holds if `call` has multiple static call targets including `target`. */
91+ query predicate multipleStaticCallTargets ( CallExprBase call , Callable target ) {
92+ target = call .getStaticTarget ( ) and
93+ strictcount ( call .getStaticTarget ( ) ) > 1
94+ }
95+
96+ /** Holds if `fe` resolves to multiple record fields including `field`. */
97+ query predicate multipleRecordFields ( FieldExpr fe , RecordField field ) {
98+ field = fe .getRecordField ( ) and
99+ strictcount ( fe .getRecordField ( ) ) > 1
100+ }
101+
102+ /** Holds if `fe` resolves to multiple tuple fields including `field`. */
103+ query predicate multipleTupleFields ( FieldExpr fe , TupleField field ) {
104+ field = fe .getTupleField ( ) and
105+ strictcount ( fe .getTupleField ( ) ) > 1
106+ }
107+
90108/**
91109 * Gets counts of abstract syntax tree inconsistencies of each type.
92110 */
@@ -115,4 +133,13 @@ int getAstInconsistencyCounts(string type) {
115133 or
116134 type = "Multiple path resolutions" and
117135 result = count ( Path p | multiplePathResolutions ( p , _) | p )
136+ or
137+ type = "Multiple static call targets" and
138+ result = count ( CallExprBase call | multipleStaticCallTargets ( call , _) | call )
139+ or
140+ type = "Multiple record fields" and
141+ result = count ( FieldExpr fe | multipleRecordFields ( fe , _) | fe )
142+ or
143+ type = "Multiple tuple fields" and
144+ result = count ( FieldExpr fe | multipleTupleFields ( fe , _) | fe )
118145}
0 commit comments