public static Option <ExpandedMethod> GetMethod( ExpandedType type, VirtualMethod virtualMethod ) { var virtMethRef = virtualMethod.method.definition; foreach (var method in type.methods) { var methodDefinition = method.definition; if ( ( methodDefinition.Name == virtMethRef.Name // Find explicit implementations as well. || degenerifyMethodName(methodDefinition.Name) == $"{virtMethRef.DeclaringType.FullName}.{virtMethRef.Name}" ) && methodDefinition.HasGenericParameters == virtMethRef.HasGenericParameters && ( !methodDefinition.HasGenericParameters || methodDefinition.GenericParameters.Count == virtMethRef.GenericParameters.Count ) && ( // AreSame(methodDefinition.ReturnType, virtMethRef.ReturnType) method.returnType == virtualMethod.method.returnType && methodDefinition.HasParameters == virtMethRef.HasParameters ) && ( !methodDefinition.HasParameters && !virtMethRef.HasParameters || method.parameters.SequenceEqual(virtualMethod.method.parameters) ) ) { return(F.some(method)); } } return(F.none <ExpandedMethod>()); }
public bool hasType(ExpandedType type) { return usedTypes.Contains(type); }
public AnalyzerData addType(ExpandedType type) { return hasType(type) ? this : new AnalyzerData(usedTypes.Add(type), analyzedMethods, virtualMethodsToAnalyze, analyzedVirtualMethods); }
public UnityEntryPoint(ExpandedType type) { this.type = type; }
public void log(ExpandedType type, string msg) { log("[" + type.name + "] " + msg); }
public void log(ExpandedType type, string msg) { }
public static Option<ExpandedMethod> GetMethod( ExpandedType type, VirtualMethod virtualMethod ) { var virtMethRef = virtualMethod.method.definition; foreach (var method in type.methods) { var methodDefinition = method.definition; if ( ( methodDefinition.Name == virtMethRef.Name // Find explicit implementations as well. || degenerifyMethodName(methodDefinition.Name) == $"{virtMethRef.DeclaringType.FullName}.{virtMethRef.Name}" ) && methodDefinition.HasGenericParameters == virtMethRef.HasGenericParameters && ( !methodDefinition.HasGenericParameters || methodDefinition.GenericParameters.Count == virtMethRef.GenericParameters.Count ) && ( // AreSame(methodDefinition.ReturnType, virtMethRef.ReturnType) method.returnType == virtualMethod.method.returnType && methodDefinition.HasParameters == virtMethRef.HasParameters ) && ( !methodDefinition.HasParameters && !virtMethRef.HasParameters || method.parameters.SequenceEqual(virtualMethod.method.parameters) ) ) return F.some(method); } return F.none<ExpandedMethod>(); }