Chris@0: Valid usages of reserved keywords as identifiers Chris@0: ----- Chris@0: array(); Chris@0: $t->public(); Chris@0: Chris@0: Test::list(); Chris@0: Test::protected(); Chris@0: Chris@0: $t->class; Chris@0: $t->private; Chris@0: Chris@0: Test::TRAIT; Chris@0: Test::FINAL; Chris@0: Chris@0: class Foo { Chris@0: use TraitA, TraitB { Chris@0: TraitA::catch insteadof namespace\TraitB; Chris@0: TraitA::list as foreach; Chris@0: TraitB::throw as protected public; Chris@0: TraitB::self as protected; Chris@0: exit as die; Chris@0: \TraitC::exit as bye; Chris@0: namespace\TraitC::exit as byebye; Chris@0: TraitA:: Chris@0: // Chris@0: /** doc comment */ Chris@0: # Chris@0: catch /* comment */ Chris@0: // comment Chris@0: # comment Chris@0: insteadof TraitB; Chris@0: } Chris@0: } Chris@0: ----- Chris@0: array( Chris@0: 0: Stmt_Class( Chris@0: flags: 0 Chris@0: name: Test Chris@0: extends: null Chris@0: implements: array( Chris@0: ) Chris@0: stmts: array( Chris@0: 0: Stmt_ClassMethod( Chris@0: flags: 0 Chris@0: byRef: false Chris@0: name: array Chris@0: params: array( Chris@0: ) Chris@0: returnType: null Chris@0: stmts: array( Chris@0: ) Chris@0: ) Chris@0: 1: Stmt_ClassMethod( Chris@0: flags: 0 Chris@0: byRef: false Chris@0: name: public Chris@0: params: array( Chris@0: ) Chris@0: returnType: null Chris@0: stmts: array( Chris@0: ) Chris@0: ) Chris@0: 2: Stmt_ClassMethod( Chris@0: flags: MODIFIER_STATIC (8) Chris@0: byRef: false Chris@0: name: list Chris@0: params: array( Chris@0: ) Chris@0: returnType: null Chris@0: stmts: array( Chris@0: ) Chris@0: ) Chris@0: 3: Stmt_ClassMethod( Chris@0: flags: MODIFIER_STATIC (8) Chris@0: byRef: false Chris@0: name: protected Chris@0: params: array( Chris@0: ) Chris@0: returnType: null Chris@0: stmts: array( Chris@0: ) Chris@0: ) Chris@0: 4: Stmt_Property( Chris@0: flags: MODIFIER_PUBLIC (1) Chris@0: props: array( Chris@0: 0: Stmt_PropertyProperty( Chris@0: name: class Chris@0: default: null Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: 5: Stmt_Property( Chris@0: flags: MODIFIER_PUBLIC (1) Chris@0: props: array( Chris@0: 0: Stmt_PropertyProperty( Chris@0: name: private Chris@0: default: null Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: 6: Stmt_ClassConst( Chris@0: flags: 0 Chris@0: consts: array( Chris@0: 0: Const( Chris@0: name: TRAIT Chris@0: value: Scalar_LNumber( Chris@0: value: 3 Chris@0: ) Chris@0: ) Chris@0: 1: Const( Chris@0: name: FINAL Chris@0: value: Scalar_LNumber( Chris@0: value: 4 Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: 7: Stmt_ClassConst( Chris@0: flags: 0 Chris@0: consts: array( Chris@0: 0: Const( Chris@0: name: __CLASS__ Chris@0: value: Scalar_LNumber( Chris@0: value: 1 Chris@0: ) Chris@0: ) Chris@0: 1: Const( Chris@0: name: __TRAIT__ Chris@0: value: Scalar_LNumber( Chris@0: value: 2 Chris@0: ) Chris@0: ) Chris@0: 2: Const( Chris@0: name: __FUNCTION__ Chris@0: value: Scalar_LNumber( Chris@0: value: 3 Chris@0: ) Chris@0: ) Chris@0: 3: Const( Chris@0: name: __METHOD__ Chris@0: value: Scalar_LNumber( Chris@0: value: 4 Chris@0: ) Chris@0: ) Chris@0: 4: Const( Chris@0: name: __LINE__ Chris@0: value: Scalar_LNumber( Chris@0: value: 5 Chris@0: ) Chris@0: ) Chris@0: 5: Const( Chris@0: name: __FILE__ Chris@0: value: Scalar_LNumber( Chris@0: value: 6 Chris@0: ) Chris@0: ) Chris@0: 6: Const( Chris@0: name: __DIR__ Chris@0: value: Scalar_LNumber( Chris@0: value: 7 Chris@0: ) Chris@0: ) Chris@0: 7: Const( Chris@0: name: __NAMESPACE__ Chris@0: value: Scalar_LNumber( Chris@0: value: 8 Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: 1: Expr_Assign( Chris@0: var: Expr_Variable( Chris@0: name: t Chris@0: ) Chris@0: expr: Expr_New( Chris@0: class: Name( Chris@0: parts: array( Chris@0: 0: Test Chris@0: ) Chris@0: ) Chris@0: args: array( Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: 2: Expr_MethodCall( Chris@0: var: Expr_Variable( Chris@0: name: t Chris@0: ) Chris@0: name: array Chris@0: args: array( Chris@0: ) Chris@0: ) Chris@0: 3: Expr_MethodCall( Chris@0: var: Expr_Variable( Chris@0: name: t Chris@0: ) Chris@0: name: public Chris@0: args: array( Chris@0: ) Chris@0: ) Chris@0: 4: Expr_StaticCall( Chris@0: class: Name( Chris@0: parts: array( Chris@0: 0: Test Chris@0: ) Chris@0: ) Chris@0: name: list Chris@0: args: array( Chris@0: ) Chris@0: ) Chris@0: 5: Expr_StaticCall( Chris@0: class: Name( Chris@0: parts: array( Chris@0: 0: Test Chris@0: ) Chris@0: ) Chris@0: name: protected Chris@0: args: array( Chris@0: ) Chris@0: ) Chris@0: 6: Expr_PropertyFetch( Chris@0: var: Expr_Variable( Chris@0: name: t Chris@0: ) Chris@0: name: class Chris@0: ) Chris@0: 7: Expr_PropertyFetch( Chris@0: var: Expr_Variable( Chris@0: name: t Chris@0: ) Chris@0: name: private Chris@0: ) Chris@0: 8: Expr_ClassConstFetch( Chris@0: class: Name( Chris@0: parts: array( Chris@0: 0: Test Chris@0: ) Chris@0: ) Chris@0: name: TRAIT Chris@0: ) Chris@0: 9: Expr_ClassConstFetch( Chris@0: class: Name( Chris@0: parts: array( Chris@0: 0: Test Chris@0: ) Chris@0: ) Chris@0: name: FINAL Chris@0: ) Chris@0: 10: Stmt_Class( Chris@0: flags: 0 Chris@0: name: Foo Chris@0: extends: null Chris@0: implements: array( Chris@0: ) Chris@0: stmts: array( Chris@0: 0: Stmt_TraitUse( Chris@0: traits: array( Chris@0: 0: Name( Chris@0: parts: array( Chris@0: 0: TraitA Chris@0: ) Chris@0: ) Chris@0: 1: Name( Chris@0: parts: array( Chris@0: 0: TraitB Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: adaptations: array( Chris@0: 0: Stmt_TraitUseAdaptation_Precedence( Chris@0: trait: Name( Chris@0: parts: array( Chris@0: 0: TraitA Chris@0: ) Chris@0: ) Chris@0: method: catch Chris@0: insteadof: array( Chris@0: 0: Name_Relative( Chris@0: parts: array( Chris@0: 0: TraitB Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: 1: Stmt_TraitUseAdaptation_Alias( Chris@0: trait: Name( Chris@0: parts: array( Chris@0: 0: TraitA Chris@0: ) Chris@0: ) Chris@0: method: list Chris@0: newModifier: null Chris@0: newName: foreach Chris@0: ) Chris@0: 2: Stmt_TraitUseAdaptation_Alias( Chris@0: trait: Name( Chris@0: parts: array( Chris@0: 0: TraitB Chris@0: ) Chris@0: ) Chris@0: method: throw Chris@0: newModifier: MODIFIER_PROTECTED (2) Chris@0: newName: public Chris@0: ) Chris@0: 3: Stmt_TraitUseAdaptation_Alias( Chris@0: trait: Name( Chris@0: parts: array( Chris@0: 0: TraitB Chris@0: ) Chris@0: ) Chris@0: method: self Chris@0: newModifier: MODIFIER_PROTECTED (2) Chris@0: newName: null Chris@0: ) Chris@0: 4: Stmt_TraitUseAdaptation_Alias( Chris@0: trait: null Chris@0: method: exit Chris@0: newModifier: null Chris@0: newName: die Chris@0: ) Chris@0: 5: Stmt_TraitUseAdaptation_Alias( Chris@0: trait: Name_FullyQualified( Chris@0: parts: array( Chris@0: 0: TraitC Chris@0: ) Chris@0: ) Chris@0: method: exit Chris@0: newModifier: null Chris@0: newName: bye Chris@0: ) Chris@0: 6: Stmt_TraitUseAdaptation_Alias( Chris@0: trait: Name_Relative( Chris@0: parts: array( Chris@0: 0: TraitC Chris@0: ) Chris@0: ) Chris@0: method: exit Chris@0: newModifier: null Chris@0: newName: byebye Chris@0: ) Chris@0: 7: Stmt_TraitUseAdaptation_Precedence( Chris@0: trait: Name( Chris@0: parts: array( Chris@0: 0: TraitA Chris@0: ) Chris@0: ) Chris@0: method: catch Chris@0: insteadof: array( Chris@0: 0: Name( Chris@0: parts: array( Chris@0: 0: TraitB Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: )