functionCall() final public static method

final public static functionCall ( Expression $name, array $arguments = [] ) : FunctionCallExpression
$name Expression
$arguments array
return FunctionCallExpression
コード例 #1
0
ファイル: FunctionTest.php プロジェクト: timetoogo/pinq
 public function testFunctionWithReturnStatement()
 {
     $function = $this->functionWithReturnStatement();
     $this->assertSame('', $function->getCallableId());
     $this->assertSame(1, $function->getParameters()->count());
     $this->assertEquals([O\Expression::parameter('foo')], $function->getParameters()->getAll());
     $this->assertEquals(['param' => 'scope'], $function->getParameterScopedVariableMap());
     $this->assertEquals(['', 'param'], $function->getParameterIds());
     $this->assertSame(true, $function->hasScopeType());
     $this->assertSame(__CLASS__, $function->getScopeType());
     $this->assertSame(true, $function->hasNamespace());
     $this->assertSame(__NAMESPACE__, $function->getNamespace());
     $this->assertSame(4, $function->countBodyExpressions());
     $this->assertSame(2, $function->countBodyExpressionsUntilReturn());
     $this->assertEquals([O\Expression::value('before'), O\Expression::returnExpression(O\Expression::value('return')), O\Expression::value('after'), O\Expression::functionCall(O\Expression::value('boom'))], $function->getBodyExpressions());
     $this->assertEquals([O\Expression::value('before'), O\Expression::returnExpression(O\Expression::value('return'))], $function->getBodyExpressionsUntilReturn());
     $this->assertEquals(new O\EvaluationContext(__NAMESPACE__, __CLASS__, null, ['scope' => 'value']), $function->getEvaluationContextFactory()->getEvaluationContext(new ResolvedParameterRegistry(['param' => 'value'])));
 }
コード例 #2
0
 /**
  * @dataProvider parsers
  */
 public function testArgumentUnpacking()
 {
     $this->assertParsedAs([$this->parameters, 'argumentUnpacking'], [O\Expression::functionCall(O\Expression::value('func'), [O\Expression::argument(O\Expression::arrayExpression([]), true)])]);
 }
コード例 #3
0
ファイル: AST.php プロジェクト: timetoogo/pinq
 private function parseFunctionCallNode(Node\Expr\FuncCall $node)
 {
     $nameExpression = $this->parseNameNode($node->name);
     if ($nameExpression instanceof O\TraversalExpression || $nameExpression instanceof O\VariableExpression) {
         return Expression::invocation($nameExpression, $this->parseNodes($node->args));
     } else {
         return Expression::functionCall($nameExpression, $this->parseNodes($node->args));
     }
 }
コード例 #4
0
ファイル: ProjectionBaseTest.php プロジェクト: timetoogo/pinq
 protected function functionWithEmptyReturnStatement()
 {
     return $this->buildFunction('', __CLASS__, __NAMESPACE__, ['param' => 'scope'], [O\Expression::parameter('foo')], [O\Expression::value('before'), O\Expression::returnExpression(), O\Expression::value('after'), O\Expression::functionCall(O\Expression::value('boom'))]);
 }
コード例 #5
0
ファイル: ExpressionTest.php プロジェクト: timetoogo/pinq
 public function expressions()
 {
     return [[O\Expression::arrayExpression([])], [O\Expression::arrayItem(null, O\Expression::value(0), false)], [O\Expression::assign(O\Expression::value(0), O\Operators\Assignment::EQUAL, O\Expression::value(0))], [O\Expression::binaryOperation(O\Expression::value(0), O\Operators\Binary::ADDITION, O\Expression::value(0))], [O\Expression::unaryOperation(O\Operators\Unary::PLUS, O\Expression::value(0))], [O\Expression::cast(O\Operators\Cast::STRING, O\Expression::value(0))], [O\Expression::closure(false, false, [], [], [])], [O\Expression::closureUsedVariable('var')], [O\Expression::emptyExpression(O\Expression::value(0))], [O\Expression::field(O\Expression::value(0), O\Expression::value(0))], [O\Expression::functionCall(O\Expression::value(0))], [O\Expression::index(O\Expression::value(0), O\Expression::value(0))], [O\Expression::invocation(O\Expression::value(0))], [O\Expression::issetExpression([O\Expression::value(0)])], [O\Expression::unsetExpression([O\Expression::value(0)])], [O\Expression::methodCall(O\Expression::value(0), O\Expression::value(0))], [O\Expression::newExpression(O\Expression::value(0))], [O\Expression::parameter('')], [O\Expression::argument(O\Expression::value(0))], [O\Expression::returnExpression()], [O\Expression::staticMethodCall(O\Expression::value(0), O\Expression::value(0))], [O\Expression::staticField(O\Expression::value(0), O\Expression::value(0))], [O\Expression::ternary(O\Expression::value(0), null, O\Expression::value(0))], [O\Expression::throwExpression(O\Expression::value(0))], [O\Expression::value(0)], [O\Expression::variable(O\Expression::value(0))], [O\Expression::constant('foo')], [O\Expression::classConstant(O\Expression::value(0), 'foo')]];
 }
コード例 #6
0
 /**
  * Updates the matched expression with it's resolved value from
  * the supplied registry.
  *
  * @param IFunction $function
  * @param O\Expression $expression
  * @param Parameters\ResolvedParameterRegistry $parameters
  *
  * @return O\Expression
  */
 public function inline(IFunction $function, O\Expression $expression, Parameters\ResolvedParameterRegistry $parameters)
 {
     /** @var O\InvocationExpression $expression */
     return O\Expression::functionCall(O\Expression::value($this->getResolvedValue($parameters, $expression->getValue())), $expression->getArguments());
 }
コード例 #7
0
ファイル: SimpleParserTest.php プロジェクト: timetoogo/pinq
 /**
  * @dataProvider parsers
  */
 public function testIndex()
 {
     $this->assertParsedAs(function () {
         $i[0];
     }, [O\Expression::index(O\Expression::variable(O\Expression::value('i')), O\Expression::value(0))]);
     $this->assertParsedAs(function () {
         //Must use write context
         f($i[]);
     }, [O\Expression::functionCall(O\Expression::value('f'), [O\Expression::argument(O\Expression::index(O\Expression::variable(O\Expression::value('i'))))])]);
 }
コード例 #8
0
ファイル: TypeAnalysisTest.php プロジェクト: timetoogo/pinq
 /**
  * @expectedException \Pinq\Analysis\TypeException
  */
 public function testMetaDataWithInvalidExpressionThrowsException()
 {
     $this->getAnalysis(function () {
         1 + 2;
     })->getFunction(O\Expression::functionCall(O\Expression::value('s')));
 }