Security update for Core, with self-updated composer
[yaffs-website] / vendor / nikic / php-parser / test / code / parser / semiReserved.test
diff --git a/vendor/nikic/php-parser/test/code/parser/semiReserved.test b/vendor/nikic/php-parser/test/code/parser/semiReserved.test
new file mode 100644 (file)
index 0000000..3410530
--- /dev/null
@@ -0,0 +1,382 @@
+Valid usages of reserved keywords as identifiers
+-----
+<?php
+
+class Test {
+    function array() {}
+    function public() {}
+
+    static function list() {}
+    static function protected() {}
+
+    public $class;
+    public $private;
+
+    const TRAIT = 3, FINAL = 4;
+
+    const __CLASS__ = 1, __TRAIT__ = 2, __FUNCTION__ = 3, __METHOD__ = 4, __LINE__ = 5,
+          __FILE__ = 6, __DIR__ = 7, __NAMESPACE__ = 8;
+    // __halt_compiler does not work
+}
+
+$t = new Test;
+$t->array();
+$t->public();
+
+Test::list();
+Test::protected();
+
+$t->class;
+$t->private;
+
+Test::TRAIT;
+Test::FINAL;
+
+class Foo {
+    use TraitA, TraitB {
+        TraitA::catch insteadof namespace\TraitB;
+        TraitA::list as foreach;
+        TraitB::throw as protected public;
+        TraitB::self as protected;
+        exit as die;
+        \TraitC::exit as bye;
+        namespace\TraitC::exit as byebye;
+        TraitA::
+            //
+            /** doc comment */
+            #
+        catch /* comment */
+            // comment
+            # comment
+        insteadof TraitB;
+    }
+}
+-----
+array(
+    0: Stmt_Class(
+        flags: 0
+        name: Test
+        extends: null
+        implements: array(
+        )
+        stmts: array(
+            0: Stmt_ClassMethod(
+                flags: 0
+                byRef: false
+                name: array
+                params: array(
+                )
+                returnType: null
+                stmts: array(
+                )
+            )
+            1: Stmt_ClassMethod(
+                flags: 0
+                byRef: false
+                name: public
+                params: array(
+                )
+                returnType: null
+                stmts: array(
+                )
+            )
+            2: Stmt_ClassMethod(
+                flags: MODIFIER_STATIC (8)
+                byRef: false
+                name: list
+                params: array(
+                )
+                returnType: null
+                stmts: array(
+                )
+            )
+            3: Stmt_ClassMethod(
+                flags: MODIFIER_STATIC (8)
+                byRef: false
+                name: protected
+                params: array(
+                )
+                returnType: null
+                stmts: array(
+                )
+            )
+            4: Stmt_Property(
+                flags: MODIFIER_PUBLIC (1)
+                props: array(
+                    0: Stmt_PropertyProperty(
+                        name: class
+                        default: null
+                    )
+                )
+            )
+            5: Stmt_Property(
+                flags: MODIFIER_PUBLIC (1)
+                props: array(
+                    0: Stmt_PropertyProperty(
+                        name: private
+                        default: null
+                    )
+                )
+            )
+            6: Stmt_ClassConst(
+                flags: 0
+                consts: array(
+                    0: Const(
+                        name: TRAIT
+                        value: Scalar_LNumber(
+                            value: 3
+                        )
+                    )
+                    1: Const(
+                        name: FINAL
+                        value: Scalar_LNumber(
+                            value: 4
+                        )
+                    )
+                )
+            )
+            7: Stmt_ClassConst(
+                flags: 0
+                consts: array(
+                    0: Const(
+                        name: __CLASS__
+                        value: Scalar_LNumber(
+                            value: 1
+                        )
+                    )
+                    1: Const(
+                        name: __TRAIT__
+                        value: Scalar_LNumber(
+                            value: 2
+                        )
+                    )
+                    2: Const(
+                        name: __FUNCTION__
+                        value: Scalar_LNumber(
+                            value: 3
+                        )
+                    )
+                    3: Const(
+                        name: __METHOD__
+                        value: Scalar_LNumber(
+                            value: 4
+                        )
+                    )
+                    4: Const(
+                        name: __LINE__
+                        value: Scalar_LNumber(
+                            value: 5
+                        )
+                    )
+                    5: Const(
+                        name: __FILE__
+                        value: Scalar_LNumber(
+                            value: 6
+                        )
+                    )
+                    6: Const(
+                        name: __DIR__
+                        value: Scalar_LNumber(
+                            value: 7
+                        )
+                    )
+                    7: Const(
+                        name: __NAMESPACE__
+                        value: Scalar_LNumber(
+                            value: 8
+                        )
+                    )
+                )
+            )
+        )
+    )
+    1: Expr_Assign(
+        var: Expr_Variable(
+            name: t
+        )
+        expr: Expr_New(
+            class: Name(
+                parts: array(
+                    0: Test
+                )
+            )
+            args: array(
+            )
+        )
+    )
+    2: Expr_MethodCall(
+        var: Expr_Variable(
+            name: t
+        )
+        name: array
+        args: array(
+        )
+    )
+    3: Expr_MethodCall(
+        var: Expr_Variable(
+            name: t
+        )
+        name: public
+        args: array(
+        )
+    )
+    4: Expr_StaticCall(
+        class: Name(
+            parts: array(
+                0: Test
+            )
+        )
+        name: list
+        args: array(
+        )
+    )
+    5: Expr_StaticCall(
+        class: Name(
+            parts: array(
+                0: Test
+            )
+        )
+        name: protected
+        args: array(
+        )
+    )
+    6: Expr_PropertyFetch(
+        var: Expr_Variable(
+            name: t
+        )
+        name: class
+    )
+    7: Expr_PropertyFetch(
+        var: Expr_Variable(
+            name: t
+        )
+        name: private
+    )
+    8: Expr_ClassConstFetch(
+        class: Name(
+            parts: array(
+                0: Test
+            )
+        )
+        name: TRAIT
+    )
+    9: Expr_ClassConstFetch(
+        class: Name(
+            parts: array(
+                0: Test
+            )
+        )
+        name: FINAL
+    )
+    10: Stmt_Class(
+        flags: 0
+        name: Foo
+        extends: null
+        implements: array(
+        )
+        stmts: array(
+            0: Stmt_TraitUse(
+                traits: array(
+                    0: Name(
+                        parts: array(
+                            0: TraitA
+                        )
+                    )
+                    1: Name(
+                        parts: array(
+                            0: TraitB
+                        )
+                    )
+                )
+                adaptations: array(
+                    0: Stmt_TraitUseAdaptation_Precedence(
+                        trait: Name(
+                            parts: array(
+                                0: TraitA
+                            )
+                        )
+                        method: catch
+                        insteadof: array(
+                            0: Name_Relative(
+                                parts: array(
+                                    0: TraitB
+                                )
+                            )
+                        )
+                    )
+                    1: Stmt_TraitUseAdaptation_Alias(
+                        trait: Name(
+                            parts: array(
+                                0: TraitA
+                            )
+                        )
+                        method: list
+                        newModifier: null
+                        newName: foreach
+                    )
+                    2: Stmt_TraitUseAdaptation_Alias(
+                        trait: Name(
+                            parts: array(
+                                0: TraitB
+                            )
+                        )
+                        method: throw
+                        newModifier: MODIFIER_PROTECTED (2)
+                        newName: public
+                    )
+                    3: Stmt_TraitUseAdaptation_Alias(
+                        trait: Name(
+                            parts: array(
+                                0: TraitB
+                            )
+                        )
+                        method: self
+                        newModifier: MODIFIER_PROTECTED (2)
+                        newName: null
+                    )
+                    4: Stmt_TraitUseAdaptation_Alias(
+                        trait: null
+                        method: exit
+                        newModifier: null
+                        newName: die
+                    )
+                    5: Stmt_TraitUseAdaptation_Alias(
+                        trait: Name_FullyQualified(
+                            parts: array(
+                                0: TraitC
+                            )
+                        )
+                        method: exit
+                        newModifier: null
+                        newName: bye
+                    )
+                    6: Stmt_TraitUseAdaptation_Alias(
+                        trait: Name_Relative(
+                            parts: array(
+                                0: TraitC
+                            )
+                        )
+                        method: exit
+                        newModifier: null
+                        newName: byebye
+                    )
+                    7: Stmt_TraitUseAdaptation_Precedence(
+                        trait: Name(
+                            parts: array(
+                                0: TraitA
+                            )
+                        )
+                        method: catch
+                        insteadof: array(
+                            0: Name(
+                                parts: array(
+                                    0: TraitB
+                                )
+                            )
+                        )
+                    )
+                )
+            )
+        )
+    )
+)
\ No newline at end of file