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@13: name: Identifier( Chris@13: name: Test Chris@13: ) 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@13: name: Identifier( Chris@13: name: array Chris@13: ) 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@13: name: Identifier( Chris@13: name: public Chris@13: ) 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@13: name: Identifier( Chris@13: name: list Chris@13: ) 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@13: name: Identifier( Chris@13: name: protected Chris@13: ) 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@17: type: null Chris@0: props: array( Chris@0: 0: Stmt_PropertyProperty( Chris@13: name: VarLikeIdentifier( Chris@13: name: class Chris@13: ) Chris@0: default: null Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: 5: Stmt_Property( Chris@0: flags: MODIFIER_PUBLIC (1) Chris@17: type: null Chris@0: props: array( Chris@0: 0: Stmt_PropertyProperty( Chris@13: name: VarLikeIdentifier( Chris@13: name: private Chris@13: ) 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@13: name: Identifier( Chris@13: name: TRAIT Chris@13: ) Chris@0: value: Scalar_LNumber( Chris@0: value: 3 Chris@0: ) Chris@0: ) Chris@0: 1: Const( Chris@13: name: Identifier( Chris@13: name: FINAL Chris@13: ) 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@13: name: Identifier( Chris@13: name: __CLASS__ Chris@13: ) Chris@0: value: Scalar_LNumber( Chris@0: value: 1 Chris@0: ) Chris@0: ) Chris@0: 1: Const( Chris@13: name: Identifier( Chris@13: name: __TRAIT__ Chris@13: ) Chris@0: value: Scalar_LNumber( Chris@0: value: 2 Chris@0: ) Chris@0: ) Chris@0: 2: Const( Chris@13: name: Identifier( Chris@13: name: __FUNCTION__ Chris@13: ) Chris@0: value: Scalar_LNumber( Chris@0: value: 3 Chris@0: ) Chris@0: ) Chris@0: 3: Const( Chris@13: name: Identifier( Chris@13: name: __METHOD__ Chris@13: ) Chris@0: value: Scalar_LNumber( Chris@0: value: 4 Chris@0: ) Chris@0: ) Chris@0: 4: Const( Chris@13: name: Identifier( Chris@13: name: __LINE__ Chris@13: ) Chris@0: value: Scalar_LNumber( Chris@0: value: 5 Chris@0: ) Chris@0: ) Chris@0: 5: Const( Chris@13: name: Identifier( Chris@13: name: __FILE__ Chris@13: ) Chris@0: value: Scalar_LNumber( Chris@0: value: 6 Chris@0: ) Chris@0: ) Chris@0: 6: Const( Chris@13: name: Identifier( Chris@13: name: __DIR__ Chris@13: ) Chris@0: value: Scalar_LNumber( Chris@0: value: 7 Chris@0: ) Chris@0: ) Chris@0: 7: Const( Chris@13: name: Identifier( Chris@13: name: __NAMESPACE__ Chris@13: ) Chris@0: value: Scalar_LNumber( Chris@0: value: 8 Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: ) Chris@17: 8: Stmt_Nop( Chris@17: comments: array( Chris@17: 0: // __halt_compiler does not work Chris@17: ) Chris@17: ) Chris@0: ) Chris@0: ) Chris@13: 1: Stmt_Expression( Chris@13: expr: Expr_Assign( Chris@13: var: Expr_Variable( Chris@13: name: t Chris@13: ) Chris@13: expr: Expr_New( Chris@13: class: Name( Chris@13: parts: array( Chris@13: 0: Test Chris@13: ) Chris@13: ) Chris@13: args: array( Chris@13: ) Chris@13: ) Chris@0: ) Chris@13: ) Chris@13: 2: Stmt_Expression( Chris@13: expr: Expr_MethodCall( Chris@13: var: Expr_Variable( Chris@13: name: t Chris@13: ) Chris@13: name: Identifier( Chris@13: name: array Chris@13: ) Chris@13: args: array( Chris@13: ) Chris@13: ) Chris@13: ) Chris@13: 3: Stmt_Expression( Chris@13: expr: Expr_MethodCall( Chris@13: var: Expr_Variable( Chris@13: name: t Chris@13: ) Chris@13: name: Identifier( Chris@13: name: public Chris@13: ) Chris@13: args: array( Chris@13: ) Chris@13: ) Chris@13: ) Chris@13: 4: Stmt_Expression( Chris@13: expr: Expr_StaticCall( Chris@0: class: Name( Chris@0: parts: array( Chris@0: 0: Test Chris@0: ) Chris@0: ) Chris@13: name: Identifier( Chris@13: name: list Chris@13: ) Chris@0: args: array( Chris@0: ) Chris@0: ) Chris@0: ) Chris@13: 5: Stmt_Expression( Chris@13: expr: Expr_StaticCall( Chris@13: class: Name( Chris@13: parts: array( Chris@13: 0: Test Chris@13: ) Chris@13: ) Chris@13: name: Identifier( Chris@13: name: protected Chris@13: ) Chris@13: args: array( Chris@13: ) Chris@0: ) Chris@0: ) Chris@13: 6: Stmt_Expression( Chris@13: expr: Expr_PropertyFetch( Chris@13: var: Expr_Variable( Chris@13: name: t Chris@13: ) Chris@13: name: Identifier( Chris@13: name: class Chris@13: ) Chris@0: ) Chris@0: ) Chris@13: 7: Stmt_Expression( Chris@13: expr: Expr_PropertyFetch( Chris@13: var: Expr_Variable( Chris@13: name: t Chris@13: ) Chris@13: name: Identifier( Chris@13: name: private Chris@0: ) Chris@0: ) Chris@13: ) Chris@13: 8: Stmt_Expression( Chris@13: expr: Expr_ClassConstFetch( Chris@13: class: Name( Chris@13: parts: array( Chris@13: 0: Test Chris@13: ) Chris@13: ) Chris@13: name: Identifier( Chris@13: name: TRAIT Chris@13: ) Chris@0: ) Chris@0: ) Chris@13: 9: Stmt_Expression( Chris@13: expr: Expr_ClassConstFetch( Chris@13: class: Name( Chris@13: parts: array( Chris@13: 0: Test Chris@13: ) Chris@13: ) Chris@13: name: Identifier( Chris@13: name: FINAL Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: 10: Stmt_Class( Chris@0: flags: 0 Chris@13: name: Identifier( Chris@13: name: Foo Chris@13: ) 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@13: method: Identifier( Chris@13: name: catch Chris@13: ) 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@13: method: Identifier( Chris@13: name: list Chris@13: ) Chris@0: newModifier: null Chris@13: newName: Identifier( Chris@13: name: foreach Chris@13: ) 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@13: method: Identifier( Chris@13: name: throw Chris@13: ) Chris@0: newModifier: MODIFIER_PROTECTED (2) Chris@13: newName: Identifier( Chris@13: name: public Chris@13: ) 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@13: method: Identifier( Chris@13: name: self Chris@13: ) Chris@0: newModifier: MODIFIER_PROTECTED (2) Chris@0: newName: null Chris@0: ) Chris@0: 4: Stmt_TraitUseAdaptation_Alias( Chris@0: trait: null Chris@13: method: Identifier( Chris@13: name: exit Chris@13: ) Chris@0: newModifier: null Chris@13: newName: Identifier( Chris@13: name: die Chris@13: ) 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@13: method: Identifier( Chris@13: name: exit Chris@13: ) Chris@0: newModifier: null Chris@13: newName: Identifier( Chris@13: name: bye Chris@13: ) 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@13: method: Identifier( Chris@13: name: exit Chris@13: ) Chris@0: newModifier: null Chris@13: newName: Identifier( Chris@13: name: byebye Chris@13: ) 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@13: method: Identifier( Chris@13: name: catch Chris@13: comments: array( Chris@13: 0: // Chris@13: 1: /** doc comment */ Chris@13: 2: # Chris@13: ) Chris@13: ) 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: )