@@ -236,55 +236,3 @@ abstract class StructuralComparisonConfiguration extends string {
236236 */
237237 predicate same ( ControlFlowElement x , ControlFlowElement y ) { candidate ( x , y ) and sameGvn ( x , y ) }
238238}
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