Main2.hx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import haxe.macro.Context;
  2. import haxe.macro.Expr;
  3. class Main2 {
  4. static function main() {
  5. invalidVariable("0_variable");
  6. invalidVariable("var");
  7. invalidVariable("new");
  8. invalidVariable("foo \"\t\n");
  9. invalidCatchVariable();
  10. invalidFunctionName();
  11. invalidFunctionArgumentName();
  12. invalidPatternVariable();
  13. invalidForVariable();
  14. invalidForVariableKeyValue();
  15. }
  16. static macro function invalidVariable(name:String) {
  17. return {
  18. expr: EVars([{name: name, type: null, expr: null}]),
  19. pos: Context.currentPos()
  20. };
  21. }
  22. static macro function invalidCatchVariable() {
  23. return {
  24. expr: ETry(macro {}, [{name: "0_catchVariable", type: macro:Dynamic, expr: macro {}}]),
  25. pos: Context.currentPos()
  26. };
  27. }
  28. static macro function invalidFunctionName() {
  29. return {
  30. expr: EFunction(FNamed("0_function"), {
  31. args: [],
  32. ret: macro:Void,
  33. expr: macro {}
  34. }),
  35. pos: Context.currentPos()
  36. };
  37. }
  38. static macro function invalidFunctionArgumentName() {
  39. return {
  40. expr: EFunction(FNamed("foo"), {
  41. args: [
  42. {
  43. name: "0_argument",
  44. type: macro:Int
  45. }
  46. ],
  47. ret: macro:Void,
  48. expr: macro {}
  49. }),
  50. pos: Context.currentPos()
  51. };
  52. }
  53. static macro function invalidPatternVariable() {
  54. return {
  55. expr: ESwitch(macro "", [
  56. {
  57. values: [
  58. {
  59. expr: EConst(CIdent("0_patternVariable")),
  60. pos: Context.currentPos()
  61. }
  62. ],
  63. expr: macro {}
  64. }
  65. ], null),
  66. pos: Context.currentPos()
  67. };
  68. }
  69. static macro function invalidForVariable() {
  70. return {
  71. expr: EFor({
  72. expr: EBinop(OpIn, {
  73. expr: EConst(CIdent("0_forVariable")),
  74. pos: Context.currentPos()
  75. }, macro []),
  76. pos: Context.currentPos()
  77. }, macro {}),
  78. pos: Context.currentPos()
  79. };
  80. }
  81. static macro function invalidForVariableKeyValue() {
  82. return {
  83. expr: EFor({
  84. expr: EBinop(OpIn, {
  85. expr: EBinop(OpArrow, {
  86. expr: EConst(CIdent("0_forVariableKey")),
  87. pos: Context.currentPos()
  88. }, {
  89. expr: EConst(CIdent("0_forVariableValue")),
  90. pos: Context.currentPos()
  91. }),
  92. pos: Context.currentPos()
  93. }, macro new Map()),
  94. pos: Context.currentPos()
  95. }, macro {}),
  96. pos: Context.currentPos()
  97. };
  98. }
  99. }