private bool AlreadyParsed(ParseTarget target) { if (target.Method != null) return target.Method.Body != null; if (!Program.Classes.ContainsKey(target.ClassName)) return false; var clazz = Program.Classes[target.ClassName]; if (!target.SpecificMethod) return false; var key = target.MethodName + target.MethodSignature; if(clazz.Methods.ContainsKey(key)) return clazz.Methods[key].Body != null; return false; }
private Class ForceResolveTypeCore(ParseTarget target) { Console.WriteLine("!! Force resolve !!"); target.Process(); var m = Context.Program.Classes[target.ClassName].Methods[target.MethodName + target.MethodSignature]; return m.Signature.ReturnType.Target; }
public void AddTodo(ParseTarget target) { if (target !=null && !Todo.Contains(target) && !AlreadyParsed(target)) Todo.Enqueue(target); }