private bool requiresInvoke(CodeWriter writer) { if (writer.getDialect() != Dialect.E || (arguments != null && arguments.Count > 0)) { return(false); } try { MethodFinder finder = new MethodFinder(writer.getContext(), this); IMethodDeclaration method = finder.findBest(false); /* if method is a reference */ return(method.isAbstract() || method.ClosureOf != null); } catch (SyntaxError /*e*/) { // ok } return(false); }
public override IType check(Context context) { MethodFinder finder = new MethodFinder(context, this); IMethodDeclaration declaration = finder.findBest(false); if (declaration == null) { return(VoidType.Instance); } if (declaration.isAbstract()) { checkAbstractOnly(context, declaration); return(declaration.getReturnType() != null?declaration.getReturnType() : VoidType.Instance); } else { Context local = IsLocalClosure(context) ? context : selector.newLocalCheckContext(context, declaration); return(checkDeclaration(declaration, context, local)); } }
public bool isAbstract() { return(wrapped.isAbstract()); }