예제 #1
0
 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);
 }
예제 #2
0
        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));
            }
        }
예제 #3
0
 public bool isAbstract()
 {
     return(wrapped.isAbstract());
 }