Skip to content

Commit c803af7

Browse files
committed
Revert CachedGetGenericTypeDefinition()
1 parent da8e163 commit c803af7

15 files changed

Lines changed: 35 additions & 45 deletions

File tree

Orm/Xtensive.Orm.Tests.Core/Reflection/TypeHelperTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ public void GetNameAndAddSuffixTest()
349349
sName = t.GetShortName();
350350
Assert.AreEqual("A<Int32,String>+B<Boolean>", sName);
351351

352-
t = t.CachedGetGenericTypeDefinition().GetGenericArguments()[2];
352+
t = t.GetGenericTypeDefinition().GetGenericArguments()[2];
353353
fName = t.GetFullName();
354354
Assert.AreEqual("T3", fName);
355355
sName = t.GetShortName();

Orm/Xtensive.Orm.Tests.Framework/Dynamic.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1310,7 +1310,7 @@ private static Type FindGenericType(Type generic, Type type)
13101310
{
13111311
while (type != null && type != typeof (object))
13121312
{
1313-
if (type.IsGenericType && type.CachedGetGenericTypeDefinition() == generic) return type;
1313+
if (type.IsGenericType && type.GetGenericTypeDefinition() == generic) return type;
13141314
if (generic.IsInterface)
13151315
{
13161316
foreach (Type intfType in type.GetInterfaces())
@@ -1418,7 +1418,7 @@ private static bool IsPredefinedType(Type type)
14181418

14191419
private static bool IsNullableType(Type type)
14201420
{
1421-
return type.IsGenericType && type.CachedGetGenericTypeDefinition() == typeof (Nullable<>);
1421+
return type.IsGenericType && type.GetGenericTypeDefinition() == typeof (Nullable<>);
14221422
}
14231423

14241424
private static Type GetNonNullableType(Type type)

Orm/Xtensive.Orm.Tests/Linq/MemberCompilerProviderTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ public void ArrayAndEnumerableOverloadTest()
147147
var eachEnumerable = typeof (EachExtensions)
148148
.GetMethods()
149149
.Single(method => method.GetParameterTypes()
150-
.Any(type => type.IsGenericType && type.CachedGetGenericTypeDefinition()==typeof(IEnumerable<>)))
150+
.Any(type => type.IsGenericType && type.GetGenericTypeDefinition()==typeof(IEnumerable<>)))
151151
.MakeGenericMethod(typeof (int));
152152
var eachEnumerableCompiler = provider.GetCompiler(eachEnumerable);
153153
Assert.AreEqual("EachInEnumerable", eachEnumerableCompiler.Invoke(null, dummy));

Orm/Xtensive.Orm.Tests/Linq/QueryDumper.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -228,20 +228,20 @@ private void CreateNodeTree(List<object> values, ref XmlDocument document, strin
228228
var depth = 1;
229229
XmlNode itemNode = document.CreateElement("Item" + itemIndex);
230230

231-
if (value == null || !value.GetType().IsGenericType || (value.GetType().IsGenericType && value.GetType().CachedGetGenericTypeDefinition() != typeof(Grouping<,>))) {
231+
if (value == null || !value.GetType().IsGenericType || (value.GetType().IsGenericType && value.GetType().GetGenericTypeDefinition() != typeof(Grouping<,>))) {
232232
itemNode = document.CreateElement("Item" + itemIndex);
233233
itemIndex++;
234234
parentNode.AppendChild(itemNode);
235235
}
236236

237237
if (value==null || ((GetMemberType(value.GetType())==MemberType.Primitive
238238
|| GetMemberType(value.GetType())==MemberType.Unknown) && !value.GetType().IsGenericType)
239-
|| (value.GetType().IsGenericType && value.GetType().CachedGetGenericTypeDefinition()!=typeof (Grouping<,>))
239+
|| (value.GetType().IsGenericType && value.GetType().GetGenericTypeDefinition()!=typeof (Grouping<,>))
240240
&& (GetMemberType(value.GetType())==MemberType.Primitive
241241
|| GetMemberType(value.GetType())==MemberType.Unknown))
242242
depth = AddNode(value, null, ref document, itemNode, depth);
243243

244-
else if (value.GetType().IsGenericType && value.GetType().CachedGetGenericTypeDefinition()==typeof (Grouping<,>)) {
244+
else if (value.GetType().IsGenericType && value.GetType().GetGenericTypeDefinition()==typeof (Grouping<,>)) {
245245
var exactValue = (IEnumerable) value;
246246
foreach (var val in exactValue) {
247247
itemNode = document.CreateElement("Item" + itemIndex);
@@ -299,8 +299,8 @@ private int AddNode(object value, PropertyInfo property, ref XmlDocument documen
299299

300300
else {
301301
if (property.PropertyType.IsGenericType &&
302-
(property.PropertyType.CachedGetGenericTypeDefinition() == typeof(IQueryable<>)
303-
|| (property.PropertyType.CachedGetGenericTypeDefinition() == typeof(IEnumerable<>)))) {
302+
(property.PropertyType.GetGenericTypeDefinition() == typeof(IQueryable<>)
303+
|| (property.PropertyType.GetGenericTypeDefinition() == typeof(IEnumerable<>)))) {
304304
var enumerable = (IEnumerable) property.GetValue(value, property.GetIndexParameters());
305305
var list = new List<object>();
306306
foreach (var o in enumerable)
@@ -559,7 +559,7 @@ private static void EnumerateAll(IEnumerable enumerable)
559559
if (o != null) {
560560
var type = o.GetType();
561561
if (type.IsGenericType) {
562-
var genericTypeDefinition = type.CachedGetGenericTypeDefinition();
562+
var genericTypeDefinition = type.GetGenericTypeDefinition();
563563
if (genericTypeDefinition == typeof(IQueryable<>)
564564
|| genericTypeDefinition == typeof(IEnumerable<>)
565565
|| genericTypeDefinition == typeof(SubQuery<>)
@@ -570,10 +570,10 @@ private static void EnumerateAll(IEnumerable enumerable)
570570
var properties = type.GetProperties();
571571
foreach (var info in properties) {
572572
if (info.PropertyType.IsGenericType &&
573-
(info.PropertyType.CachedGetGenericTypeDefinition()==typeof (IQueryable<>)
574-
|| info.PropertyType.CachedGetGenericTypeDefinition()==typeof (IEnumerable<>)
575-
|| info.PropertyType.CachedGetGenericTypeDefinition()==typeof (SubQuery<>)
576-
|| info.PropertyType.CachedGetGenericTypeDefinition()==typeof (Grouping<,>)
573+
(info.PropertyType.GetGenericTypeDefinition()==typeof (IQueryable<>)
574+
|| info.PropertyType.GetGenericTypeDefinition()==typeof (IEnumerable<>)
575+
|| info.PropertyType.GetGenericTypeDefinition()==typeof (SubQuery<>)
576+
|| info.PropertyType.GetGenericTypeDefinition()==typeof (Grouping<,>)
577577
))
578578
EnumerateAll((IEnumerable) info.GetValue(o, null));
579579
}

Orm/Xtensive.Orm/Orm/Building/Builders/TypeBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ private static bool IsAuxiliaryType(TypeInfo type)
417417
var underlyingBaseType = type.UnderlyingType.BaseType;
418418
return underlyingBaseType != null
419419
&& underlyingBaseType.IsGenericType
420-
&& underlyingBaseType.CachedGetGenericTypeDefinition() == WellKnownOrmTypes.EntitySetItemOfT1T2;
420+
&& underlyingBaseType.GetGenericTypeDefinition() == WellKnownOrmTypes.EntitySetItemOfT1T2;
421421
}
422422

423423
private ColumnInfo BuildDeclaredColumn(FieldInfo field)

Orm/Xtensive.Orm/Orm/Linq/ExpressionExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ private static bool IsForeignQuery(Expression expression)
7676
if (((ConstantExpression) expression).Value is IQueryable value) {
7777
var type = value.GetType();
7878
if (type.IsGenericType) {
79-
var definition = type.CachedGetGenericTypeDefinition();
79+
var definition = type.GetGenericTypeDefinition();
8080
return definition != WellKnownInterfaces.QueryableOfT && definition != WellKnownTypes.QueryableOfT;
8181
}
8282
}
@@ -135,7 +135,7 @@ public static bool IsEntitySetExpression(this Expression expression)
135135

136136
public static bool IsEntitySet(this Expression expression) =>
137137
expression.Type switch {
138-
var type => type.IsGenericType && type.CachedGetGenericTypeDefinition() == WellKnownOrmTypes.EntitySetOfT
138+
var type => type.IsGenericType && type.GetGenericTypeDefinition() == WellKnownOrmTypes.EntitySetOfT
139139
};
140140

141141
public static Expression StripMarkers(this Expression e)

Orm/Xtensive.Orm/Orm/Linq/MemberCompilation/MemberCompilerProvider.cs

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -313,16 +313,15 @@ private static CompilerKey GetCompilerKey(MemberInfo member)
313313

314314
var targetType = canonicalMember.ReflectedType;
315315
if (targetType.IsGenericType) {
316-
targetType = targetType.CachedGetGenericTypeDefinition();
317-
if (canonicalMember is FieldInfo)
318-
canonicalMember = targetType.GetField(canonicalMember.Name);
319-
else if (canonicalMember is MethodInfo methodInfo) {
320-
canonicalMember = GetCanonicalMethod(methodInfo, targetType.GetMethods());
316+
if (!targetType.IsGenericTypeDefinition) {
317+
targetType = targetType.GetGenericTypeDefinition();
321318
}
322-
else if (canonicalMember is ConstructorInfo constructorInfo)
323-
canonicalMember = GetCanonicalMethod(constructorInfo, targetType.GetConstructors());
324-
else
325-
canonicalMember = null;
319+
canonicalMember = canonicalMember switch {
320+
FieldInfo _ => targetType.GetField(canonicalMember.Name),
321+
MethodInfo methodInfo => GetCanonicalMethod(methodInfo, targetType.GetMethods()),
322+
ConstructorInfo constructorInfo => GetCanonicalMethod(constructorInfo, targetType.GetConstructors()),
323+
_ => null
324+
};
326325
}
327326

328327
if (canonicalMember == null) {
@@ -331,10 +330,7 @@ private static CompilerKey GetCompilerKey(MemberInfo member)
331330

332331
if (targetType.IsEnum) {
333332
var declaringType = canonicalMember.DeclaringType;
334-
if (targetType != declaringType)
335-
canonicalMember = GetCanonicalMethod((MethodInfo) canonicalMember, declaringType.GetMethods());
336-
else
337-
canonicalMember = GetCanonicalMethod((MethodInfo) canonicalMember, targetType.GetMethods());
333+
canonicalMember = GetCanonicalMethod((MethodInfo) canonicalMember, targetType != declaringType ? declaringType.GetMethods() : targetType.GetMethods());
338334
}
339335

340336
return new CompilerKey(canonicalMember);

Orm/Xtensive.Orm/Orm/Linq/QueryHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public static bool IsDirectEntitySetQuery(Expression entitySet)
7676
var wrapper = ((MemberExpression) owner).Expression;
7777
return wrapper.NodeType == ExpressionType.Constant
7878
&& wrapper.Type.IsGenericType
79-
&& wrapper.Type.CachedGetGenericTypeDefinition() == typeof(OwnerWrapper<>);
79+
&& wrapper.Type.GetGenericTypeDefinition() == typeof(OwnerWrapper<>);
8080
}
8181

8282
public static Expression CreateDirectEntitySetQuery(EntitySetBase entitySet)

Orm/Xtensive.Orm/Orm/Linq/Rewriters/EqualityRewriter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ protected override Expression VisitMethodCall(MethodCallExpression mc)
3636

3737
var interfaceMember = mc.Method.GetInterfaceMember();
3838
if (interfaceMember != null) {
39-
if (interfaceMember.ReflectedType.IsGenericType && interfaceMember.ReflectedType.CachedGetGenericTypeDefinition() == typeof(IEquatable<>))
39+
if (interfaceMember.ReflectedType.IsGenericType && interfaceMember.ReflectedType.GetGenericTypeDefinition() == typeof(IEquatable<>))
4040
return Expression.Equal(mc.Object, mc.Arguments[0]);
4141
return base.VisitMethodCall(mc);
4242
}

Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1651,7 +1651,7 @@ private ProjectionExpression VisitSequence(Expression sequenceExpression, Expres
16511651

16521652
if (sequence.IsLocalCollection(context)) {
16531653
var sequenceType = (sequence.Type.IsGenericType
1654-
&& sequence.Type.CachedGetGenericTypeDefinition() == typeof(Func<>))
1654+
&& sequence.Type.GetGenericTypeDefinition() == typeof(Func<>))
16551655
? sequence.Type.GetGenericArguments()[0]
16561656
: sequence.Type;
16571657

0 commit comments

Comments
 (0)