@@ -236,55 +236,3 @@ abstract class StructuralComparisonConfiguration extends string {
236
236
*/
237
237
predicate same ( ControlFlowElement x , ControlFlowElement y ) { candidate ( x , y ) and sameGvn ( x , y ) }
238
238
}
239
-
240
- /**
241
- * INTERNAL: Do not use.
242
- *
243
- * A verbatim copy of the class `StructuralComparisonConfiguration` for internal
244
- * use.
245
- *
246
- * A copy is needed in order to use structural comparison within the standard
247
- * library without running into caching issues.
248
- */
249
- module Internal {
250
- // Import all uses of the internal library to make sure caching works
251
- private import semmle.code.csharp.controlflow.Guards as G
252
-
253
- /**
254
- * A configuration for performing structural comparisons of program elements
255
- * (expressions and statements).
256
- *
257
- * The predicate `candidate()` must be overridden, in order to identify the
258
- * elements for which to perform structural comparison.
259
- *
260
- * Each use of the library is identified by a unique string value.
261
- */
262
- abstract class InternalStructuralComparisonConfiguration extends string {
263
- bindingset [ this ]
264
- InternalStructuralComparisonConfiguration ( ) { any ( ) }
265
-
266
- /**
267
- * Holds if elements `x` and `y` are candidates for testing structural
268
- * equality.
269
- *
270
- * Subclasses are expected to override this predicate to identify the
271
- * top-level elements which they want to compare. Care should be
272
- * taken to avoid identifying too many pairs of elements, as in general
273
- * there are very many structurally equal subtrees in a program, and
274
- * in order to keep the computation feasible we must focus attention.
275
- *
276
- * Note that this relation is not expected to be symmetric -- it's
277
- * fine to include a pair `(x, y)` but not `(y, x)`.
278
- * In fact, not including the symmetrically implied fact will save
279
- * half the computation time on the structural comparison.
280
- */
281
- abstract predicate candidate ( ControlFlowElement x , ControlFlowElement y ) ;
282
-
283
- /**
284
- * Holds if elements `x` and `y` structurally equal. `x` and `y` must be
285
- * flagged as candidates for structural equality, that is,
286
- * `candidate(x, y)` must hold.
287
- */
288
- predicate same ( ControlFlowElement x , ControlFlowElement y ) { candidate ( x , y ) and sameGvn ( x , y ) }
289
- }
290
- }
0 commit comments