Skip to content

Commit e89a463

Browse files
committed
C#: Fix bad join-order in commonSubTypeGeneral/2
1 parent ce00d58 commit e89a463

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

csharp/ql/src/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,11 @@ private TypeParameter getATypeParameterSubType(DataFlowTypeOrUnifiable t) {
533533
exists(Type t0 | t = Gvn::getGlobalValueNumber(t0) | implicitConversionRestricted(result, t0))
534534
}
535535

536+
pragma[noinline]
537+
private TypeParameter getATypeParameterSubTypeRestricted(DataFlowType t) {
538+
result = getATypeParameterSubType(t)
539+
}
540+
536541
pragma[noinline]
537542
private Gvn::GvnType getANonTypeParameterSubType(DataFlowTypeOrUnifiable t) {
538543
not t instanceof Gvn::TypeParameterGvnType and
@@ -544,6 +549,11 @@ private Gvn::GvnType getANonTypeParameterSubType(DataFlowTypeOrUnifiable t) {
544549
)
545550
}
546551

552+
pragma[noinline]
553+
private Gvn::GvnType getANonTypeParameterSubTypeRestricted(DataFlowType t) {
554+
result = getANonTypeParameterSubType(t)
555+
}
556+
547557
/** A collection of cached types and predicates to be evaluated in the same stage. */
548558
cached
549559
private module Cached {
@@ -793,9 +803,9 @@ private module Cached {
793803
not t1 instanceof Gvn::TypeParameterGvnType and
794804
t1 = t2
795805
or
796-
getATypeParameterSubType(t1) = getATypeParameterSubType(t2)
806+
getATypeParameterSubType(t1) = getATypeParameterSubTypeRestricted(t2)
797807
or
798-
getANonTypeParameterSubType(t1) = getANonTypeParameterSubType(t2)
808+
getANonTypeParameterSubType(t1) = getANonTypeParameterSubTypeRestricted(t2)
799809
}
800810

801811
/**

0 commit comments

Comments
 (0)