mirror of
https://github.com/danog/PHP-Parser.git
synced 2024-11-27 04:14:44 +01:00
664c10121e
We definitely need to introduce a general "Type" abstraction in the next major version.
319 lines
4.6 KiB
Plaintext
319 lines
4.6 KiB
Plaintext
Insertion into list nodes
|
|
-----
|
|
<?php
|
|
$foo;
|
|
|
|
$bar;
|
|
-----
|
|
$stmts[] = new Stmt\Expression(new Expr\Variable('baz'));
|
|
-----
|
|
<?php
|
|
$foo;
|
|
|
|
$bar;
|
|
$baz;
|
|
-----
|
|
<?php
|
|
|
|
function test() {
|
|
$foo;
|
|
|
|
$bar;
|
|
}
|
|
-----
|
|
$stmts[0]->stmts[] = new Stmt\Expression(new Expr\Variable('baz'));
|
|
-----
|
|
<?php
|
|
|
|
function test() {
|
|
$foo;
|
|
|
|
$bar;
|
|
$baz;
|
|
}
|
|
-----
|
|
<?php
|
|
|
|
function test(Foo $param1) {}
|
|
-----
|
|
$stmts[0]->params[] = new Node\Param(new Expr\Variable('param2'));
|
|
-----
|
|
<?php
|
|
|
|
function test(Foo $param1, $param2) {}
|
|
-----
|
|
<?php
|
|
|
|
try {
|
|
/* stuff */
|
|
} catch
|
|
(Foo $x) {}
|
|
-----
|
|
$stmts[0]->catches[0]->types[] = new Node\Name('Bar');
|
|
-----
|
|
<?php
|
|
|
|
try {
|
|
/* stuff */
|
|
} catch
|
|
(Foo|Bar $x) {}
|
|
-----
|
|
<?php
|
|
|
|
function test(Foo $param1) {}
|
|
-----
|
|
array_unshift($stmts[0]->params, new Node\Param(new Expr\Variable('param0')));
|
|
-----
|
|
<?php
|
|
|
|
function test($param0, Foo $param1) {}
|
|
-----
|
|
<?php
|
|
|
|
function test() {}
|
|
-----
|
|
$stmts[0]->params[] = new Node\Param(new Expr\Variable('param0'));
|
|
-----
|
|
<?php
|
|
|
|
function test($param0) {}
|
|
-----
|
|
<?php
|
|
|
|
if ($cond) {
|
|
} elseif ($cond2) {
|
|
}
|
|
-----
|
|
$stmts[0]->elseifs[] = new Stmt\ElseIf_(new Expr\Variable('cond3'), []);
|
|
-----
|
|
<?php
|
|
|
|
if ($cond) {
|
|
} elseif ($cond2) {
|
|
} elseif ($cond3) {
|
|
}
|
|
-----
|
|
<?php
|
|
|
|
try {
|
|
} catch (Foo $foo) {
|
|
}
|
|
-----
|
|
$stmts[0]->catches[] = new Stmt\Catch_([new Node\Name('Bar')], new Expr\Variable('bar'), []);
|
|
-----
|
|
<?php
|
|
|
|
try {
|
|
} catch (Foo $foo) {
|
|
} catch (Bar $bar) {
|
|
}
|
|
-----
|
|
<?php
|
|
$foo; $bar;
|
|
-----
|
|
$node = new Stmt\Expression(new Expr\Variable('baz'));
|
|
$node->setAttribute('comments', [new Comment('// Test')]);
|
|
$stmts[] = $node;
|
|
-----
|
|
<?php
|
|
$foo; $bar;
|
|
// Test
|
|
$baz;
|
|
-----
|
|
<?php
|
|
function test() {
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
$node = new Stmt\Expression(new Expr\Variable('baz'));
|
|
$node->setAttribute('comments', [new Comment('// Test'), new Comment('// Test 2')]);
|
|
$stmts[0]->stmts[] = $node;
|
|
-----
|
|
<?php
|
|
function test() {
|
|
$foo; $bar;
|
|
// Test
|
|
// Test 2
|
|
$baz;
|
|
}
|
|
-----
|
|
<?php
|
|
namespace
|
|
Foo;
|
|
-----
|
|
$stmts[0]->name->parts[0] = 'Xyz';
|
|
-----
|
|
<?php
|
|
namespace
|
|
Xyz;
|
|
-----
|
|
<?php
|
|
function test() {
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
$node = new Stmt\Expression(new Expr\Variable('baz'));
|
|
array_unshift($stmts[0]->stmts, $node);
|
|
-----
|
|
<?php
|
|
function test() {
|
|
$baz;
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
<?php
|
|
function test() {
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
$node = new Stmt\Expression(new Expr\Variable('baz'));
|
|
$node->setAttribute('comments', [new Comment('// Test')]);
|
|
array_unshift($stmts[0]->stmts, $node);
|
|
-----
|
|
<?php
|
|
function test() {
|
|
// Test
|
|
$baz;
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
<?php
|
|
function test() {
|
|
|
|
// Foo bar
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
$node = new Stmt\Expression(new Expr\Variable('baz'));
|
|
$node->setAttribute('comments', [new Comment('// Test')]);
|
|
array_unshift($stmts[0]->stmts, $node);
|
|
-----
|
|
<?php
|
|
function test() {
|
|
|
|
// Test
|
|
$baz;
|
|
// Foo bar
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
<?php
|
|
function test() {
|
|
|
|
// Foo bar
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
$node = new Stmt\Expression(new Expr\Variable('baz'));
|
|
$node->setAttribute('comments', [new Comment('// Test')]);
|
|
array_unshift($stmts[0]->stmts, $node);
|
|
$stmts[0]->stmts[1]->setAttribute('comments', [new Comment('// Bar foo')]);
|
|
-----
|
|
<?php
|
|
function test() {
|
|
|
|
// Test
|
|
$baz;
|
|
// Bar foo
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
<?php
|
|
function test() {
|
|
|
|
// Foo bar
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
$node = new Stmt\Expression(new Expr\Variable('baz'));
|
|
$node->setAttribute('comments', [new Comment('// Test')]);
|
|
array_unshift($stmts[0]->stmts, $node);
|
|
$stmts[0]->stmts[1]->setAttribute('comments', []);
|
|
-----
|
|
<?php
|
|
function test() {
|
|
|
|
// Test
|
|
$baz;
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
<?php
|
|
function test() {
|
|
|
|
// Foo bar
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
array_unshift(
|
|
$stmts[0]->stmts,
|
|
new Stmt\Expression(new Expr\Variable('a')),
|
|
new Stmt\Expression(new Expr\Variable('b')));
|
|
-----
|
|
<?php
|
|
function test() {
|
|
|
|
$a;
|
|
$b;
|
|
// Foo bar
|
|
$foo; $bar;
|
|
}
|
|
-----
|
|
<?php
|
|
function test() {}
|
|
-----
|
|
/* Insertion into empty list not handled yet */
|
|
$stmts[0]->stmts = [
|
|
new Stmt\Expression(new Expr\Variable('a')),
|
|
new Stmt\Expression(new Expr\Variable('b')),
|
|
];
|
|
-----
|
|
<?php
|
|
function test()
|
|
{
|
|
$a;
|
|
$b;
|
|
}
|
|
-----
|
|
<?php
|
|
$array = [
|
|
1,
|
|
2,
|
|
3,
|
|
];
|
|
-----
|
|
array_unshift($stmts[0]->expr->expr->items, new Expr\ArrayItem(new Scalar\LNumber(42)));
|
|
$stmts[0]->expr->expr->items[] = new Expr\ArrayItem(new Scalar\LNumber(24));
|
|
-----
|
|
<?php
|
|
$array = [
|
|
42,
|
|
1,
|
|
2,
|
|
3,
|
|
24,
|
|
];
|
|
-----
|
|
<?php
|
|
$array = [
|
|
1, 2,
|
|
3,
|
|
];
|
|
-----
|
|
$stmts[0]->expr->expr->items[] = new Expr\ArrayItem(new Scalar\LNumber(24));
|
|
-----
|
|
<?php
|
|
$array = [
|
|
1, 2,
|
|
3, 24,
|
|
];
|
|
-----
|
|
<?php
|
|
function test(): A
|
|
|B {}
|
|
-----
|
|
$stmts[0]->returnType->types[] = new Node\Name('C');
|
|
-----
|
|
<?php
|
|
function test(): A
|
|
|B|C {} |