public virtual T Visit(UnresolvedCall node)
 {
     Visit((LvalueExpression)node);
     traverse(node.func);
     traverse(node.args);
     return(DefaultReturnValue());
 }
示例#2
0
 public override bool Visit(UnresolvedCall node)
 {
     Visit((LvalueExpression)node);
     TraversePrint(node.func);
     TraversePrint(node.args);
     return(true);
 }
示例#3
0
        public void testMethodCallExpression()
        {
            String         statement = "print \"person\" + p.name";
            ETestParser    parser    = new ETestParser(statement, false);
            UnresolvedCall ac        = parser.parse_method_call();

            Assert.IsNotNull(ac);
        }
示例#4
0
        public void parsesMethodCallExpression()
        {
            String         statement = "print (\"person\" + p.name );";
            OTestParser    parser    = new OTestParser(statement);
            UnresolvedCall ac        = parser.parse_method_call_statement();

            Assert.IsNotNull(ac);
        }
示例#5
0
        public void testMethodCallWith()
        {
            String         statement = "print with \"person\" + p.name as value";
            ETestParser    parser    = new ETestParser(statement, false);
            UnresolvedCall mc        = parser.parse_method_call();

            Assert.IsNotNull(mc);
            Assert.AreEqual("print", mc.getCaller().ToString());
            Assert.IsNotNull(mc.getArguments());
            Argument ars = mc.getArguments()[0];

            Assert.AreEqual("value", ars.GetName());
            IExpression exp = ars.getExpression();

            Assert.IsTrue(exp is PlusExpression);
            Assert.AreEqual("print with \"person\" + p.name as value", generate(mc));
        }
示例#6
0
 private IExpression tryResolveMethod(Context context, ArgumentList arguments)
 {
     try
     {
         IExpression resolvedParent = parent;
         if (resolvedParent is UnresolvedIdentifier)
         {
             ((UnresolvedIdentifier)resolvedParent).checkMember(context);
             resolvedParent = ((UnresolvedIdentifier)resolvedParent).getResolved();
         }
         IExpression method = new UnresolvedCall(new MethodSelector(resolvedParent, name), arguments);
         method.check(context);
         return(method);
     }
     catch (SyntaxError)
     {
         return(null);
     }
 }