mlogjs 0.2.0 → 0.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +68 -18
  3. package/build/Compiler.js +32 -47
  4. package/build/Compiler.js.map +1 -1
  5. package/build/CompilerError.js +11 -0
  6. package/build/CompilerError.js.map +1 -0
  7. package/build/Scope.js +17 -7
  8. package/build/Scope.js.map +1 -1
  9. package/build/bin.js +45 -12
  10. package/build/bin.js.map +1 -1
  11. package/build/handlers/BlockStatement.js.map +1 -1
  12. package/build/handlers/CallExpression.js.map +1 -1
  13. package/build/handlers/File.js +9 -0
  14. package/build/handlers/File.js.map +1 -0
  15. package/build/handlers/ForStatement.js.map +1 -1
  16. package/build/handlers/Function.js +20 -9
  17. package/build/handlers/Function.js.map +1 -1
  18. package/build/handlers/IfStatement.js.map +1 -1
  19. package/build/handlers/Literal.js +11 -14
  20. package/build/handlers/Literal.js.map +1 -1
  21. package/build/handlers/Object.js +16 -5
  22. package/build/handlers/Object.js.map +1 -1
  23. package/build/handlers/OperationExpressions.js +6 -1
  24. package/build/handlers/OperationExpressions.js.map +1 -1
  25. package/build/handlers/Program.js +1 -1
  26. package/build/handlers/Program.js.map +1 -1
  27. package/build/handlers/Statements.js.map +1 -1
  28. package/build/handlers/TemplateExpression.js.map +1 -1
  29. package/build/handlers/VariableDeclaration.js +25 -9
  30. package/build/handlers/VariableDeclaration.js.map +1 -1
  31. package/build/handlers/WhileStatement.js.map +1 -1
  32. package/build/handlers/index.js +1 -0
  33. package/build/handlers/index.js.map +1 -1
  34. package/build/index.js +5 -5
  35. package/build/index.js.map +1 -1
  36. package/build/initScope.js +40 -0
  37. package/build/initScope.js.map +1 -0
  38. package/build/instructions/InstructionBase.js +1 -1
  39. package/build/instructions/InstructionBase.js.map +1 -1
  40. package/build/instructions/JumpInstruction.js +1 -1
  41. package/build/instructions/JumpInstruction.js.map +1 -1
  42. package/build/instructions/OperationInstruction.js.map +1 -1
  43. package/build/macros/Building.js +16 -8
  44. package/build/macros/Building.js.map +1 -1
  45. package/build/macros/Function.js +1 -1
  46. package/build/macros/Function.js.map +1 -1
  47. package/build/macros/Math.js +13 -8
  48. package/build/macros/Math.js.map +1 -1
  49. package/build/macros/Memory.js +7 -5
  50. package/build/macros/Memory.js.map +1 -1
  51. package/build/macros/Namespace.js +24 -11
  52. package/build/macros/Namespace.js.map +1 -1
  53. package/build/macros/Other.js +2 -1
  54. package/build/macros/Other.js.map +1 -1
  55. package/build/macros/RawValue.js +2 -1
  56. package/build/macros/RawValue.js.map +1 -1
  57. package/build/macros/commands/{control.js → Control.js} +4 -3
  58. package/build/macros/commands/Control.js.map +1 -0
  59. package/build/macros/commands/Draw.js +4 -3
  60. package/build/macros/commands/Draw.js.map +1 -1
  61. package/build/macros/commands/DrawFlush.js +2 -1
  62. package/build/macros/commands/DrawFlush.js.map +1 -1
  63. package/build/macros/commands/GetLink.js +8 -4
  64. package/build/macros/commands/GetLink.js.map +1 -1
  65. package/build/macros/commands/Lookup.js +5 -4
  66. package/build/macros/commands/Lookup.js.map +1 -1
  67. package/build/macros/commands/Print.js +5 -1
  68. package/build/macros/commands/Print.js.map +1 -1
  69. package/build/macros/commands/PrintFlush.js +2 -1
  70. package/build/macros/commands/PrintFlush.js.map +1 -1
  71. package/build/macros/commands/Radar.js +16 -12
  72. package/build/macros/commands/Radar.js.map +1 -1
  73. package/build/macros/commands/Sensor.js +4 -3
  74. package/build/macros/commands/Sensor.js.map +1 -1
  75. package/build/macros/commands/UnitBind.js +2 -1
  76. package/build/macros/commands/UnitBind.js.map +1 -1
  77. package/build/macros/commands/UnitControl.js +13 -8
  78. package/build/macros/commands/UnitControl.js.map +1 -1
  79. package/build/macros/commands/UnitLocate.js +29 -8
  80. package/build/macros/commands/UnitLocate.js.map +1 -1
  81. package/build/macros/commands/UnitRadar.js +17 -10
  82. package/build/macros/commands/UnitRadar.js.map +1 -1
  83. package/build/macros/commands/Wait.js +2 -1
  84. package/build/macros/commands/Wait.js.map +1 -1
  85. package/build/operators.js.map +1 -1
  86. package/build/types.js +1 -1
  87. package/build/types.js.map +1 -1
  88. package/build/utils.js +7 -2
  89. package/build/utils.js.map +1 -1
  90. package/build/values/BaseValue.js +5 -5
  91. package/build/values/BaseValue.js.map +1 -1
  92. package/build/values/FunctionValue.js +25 -13
  93. package/build/values/FunctionValue.js.map +1 -1
  94. package/build/values/LiteralValue.js +5 -4
  95. package/build/values/LiteralValue.js.map +1 -1
  96. package/build/values/ObjectValue.js +11 -6
  97. package/build/values/ObjectValue.js.map +1 -1
  98. package/build/values/StoreValue.js +3 -2
  99. package/build/values/StoreValue.js.map +1 -1
  100. package/build/values/TempValue.js +18 -7
  101. package/build/values/TempValue.js.map +1 -1
  102. package/build/values/VoidValue.js +8 -7
  103. package/build/values/VoidValue.js.map +1 -1
  104. package/dist/bin.cjs +82 -0
  105. package/dist/bin.cjs.map +1 -0
  106. package/dist/index.cjs +2187 -0
  107. package/dist/index.cjs.map +1 -0
  108. package/dist/index.mjs +2162 -0
  109. package/dist/index.mjs.map +1 -0
  110. package/dist/types/Compiler.d.ts +26 -0
  111. package/dist/types/CompilerError.d.ts +9 -0
  112. package/dist/types/Scope.d.ts +24 -0
  113. package/dist/types/bin.d.ts +1 -0
  114. package/dist/types/handlers/BlockStatement.d.ts +2 -0
  115. package/dist/types/handlers/CallExpression.d.ts +3 -0
  116. package/dist/types/handlers/File.d.ts +2 -0
  117. package/dist/types/handlers/ForStatement.d.ts +2 -0
  118. package/{build → dist/types}/handlers/Function.d.ts +1 -0
  119. package/{build → dist/types}/handlers/Identifier.d.ts +0 -0
  120. package/dist/types/handlers/IfStatement.d.ts +2 -0
  121. package/dist/types/handlers/Literal.d.ts +5 -0
  122. package/{build → dist/types}/handlers/Object.d.ts +2 -0
  123. package/{build → dist/types}/handlers/OperationExpressions.d.ts +1 -0
  124. package/dist/types/handlers/Program.d.ts +2 -0
  125. package/dist/types/handlers/Statements.d.ts +5 -0
  126. package/dist/types/handlers/TemplateExpression.d.ts +2 -0
  127. package/dist/types/handlers/Typescript.d.ts +7 -0
  128. package/dist/types/handlers/VariableDeclaration.d.ts +3 -0
  129. package/dist/types/handlers/WhileStatement.d.ts +3 -0
  130. package/{build → dist/types}/handlers/index.d.ts +2 -0
  131. package/dist/types/index.d.ts +2 -0
  132. package/dist/types/initScope.d.ts +5 -0
  133. package/{build → dist/types}/instructions/AddressResolver.d.ts +1 -1
  134. package/{build → dist/types}/instructions/ControlInstructions.d.ts +0 -3
  135. package/{build → dist/types}/instructions/EndInstruction.d.ts +0 -0
  136. package/{build → dist/types}/instructions/InstructionBase.d.ts +4 -4
  137. package/{build → dist/types}/instructions/JumpInstruction.d.ts +1 -1
  138. package/{build → dist/types}/instructions/OperationInstruction.d.ts +1 -1
  139. package/{build → dist/types}/instructions/SetCounterInstruction.d.ts +0 -0
  140. package/{build → dist/types}/instructions/SetInstruction.d.ts +1 -0
  141. package/{build → dist/types}/instructions/ZeroSpaceInstruction.d.ts +0 -0
  142. package/{build → dist/types}/instructions/index.d.ts +0 -0
  143. package/{build → dist/types}/macros/Building.d.ts +1 -2
  144. package/dist/types/macros/Entities.d.ts +11 -0
  145. package/dist/types/macros/Function.d.ts +13 -0
  146. package/{build/macros/Draw.d.ts → dist/types/macros/GetGlobal.d.ts} +1 -1
  147. package/{build → dist/types}/macros/Math.d.ts +0 -0
  148. package/{build → dist/types}/macros/Memory.d.ts +0 -0
  149. package/{build → dist/types}/macros/Namespace.d.ts +0 -5
  150. package/{build → dist/types}/macros/Other.d.ts +0 -0
  151. package/{build → dist/types}/macros/RawValue.d.ts +0 -0
  152. package/{build/macros/commands/Asm.d.ts → dist/types/macros/commands/Control.d.ts} +1 -1
  153. package/{build/macros/helpers/GetVar.d.ts → dist/types/macros/commands/Draw.d.ts} +1 -1
  154. package/{build → dist/types}/macros/commands/DrawFlush.d.ts +1 -1
  155. package/{build/macros/commands/Draw.d.ts → dist/types/macros/commands/End.d.ts} +1 -1
  156. package/{build → dist/types}/macros/commands/GetLink.d.ts +0 -0
  157. package/{build → dist/types}/macros/commands/Lookup.d.ts +0 -0
  158. package/{build → dist/types}/macros/commands/Print.d.ts +1 -1
  159. package/{build → dist/types}/macros/commands/PrintFlush.d.ts +1 -1
  160. package/{build → dist/types}/macros/commands/Radar.d.ts +0 -0
  161. package/{build → dist/types}/macros/commands/Sensor.d.ts +0 -0
  162. package/{build → dist/types}/macros/commands/UnitBind.d.ts +1 -1
  163. package/dist/types/macros/commands/UnitControl.d.ts +5 -0
  164. package/{build → dist/types}/macros/commands/UnitLocate.d.ts +0 -0
  165. package/{build → dist/types}/macros/commands/UnitRadar.d.ts +0 -0
  166. package/{build → dist/types}/macros/commands/Wait.d.ts +1 -1
  167. package/{build → dist/types}/macros/commands/index.d.ts +1 -0
  168. package/{build → dist/types}/macros/index.d.ts +0 -1
  169. package/{build → dist/types}/operators.d.ts +1 -1
  170. package/dist/types/types.d.ts +209 -0
  171. package/dist/types/utils.d.ts +24 -0
  172. package/dist/types/values/BaseValue.d.ts +7 -0
  173. package/dist/types/values/DestructuringValue.d.ts +17 -0
  174. package/{build → dist/types}/values/FunctionValue.d.ts +21 -8
  175. package/{build → dist/types}/values/LiteralValue.d.ts +2 -1
  176. package/dist/types/values/ObjectValue.d.ts +23 -0
  177. package/dist/types/values/SenseableValue.d.ts +23 -0
  178. package/dist/types/values/StackValue.d.ts +16 -0
  179. package/{build → dist/types}/values/StoreValue.d.ts +7 -3
  180. package/{build → dist/types}/values/TempValue.d.ts +9 -2
  181. package/dist/types/values/ValueOwner.d.ts +27 -0
  182. package/dist/types/values/VoidValue.d.ts +16 -0
  183. package/{build → dist/types}/values/index.d.ts +2 -1
  184. package/lib/commands.d.ts +532 -326
  185. package/lib/eslib/index.d.ts +3 -3
  186. package/lib/eslib/lib.d.ts +9 -9
  187. package/lib/eslib/lib.es2015.collection.d.ts +89 -89
  188. package/lib/eslib/lib.es2015.core.d.ts +16 -16
  189. package/lib/eslib/lib.es2015.d.ts +30 -30
  190. package/lib/eslib/lib.es2015.generator.d.ts +79 -79
  191. package/lib/eslib/lib.es2015.iterable.d.ts +70 -70
  192. package/lib/eslib/lib.es5.d.ts +295 -295
  193. package/lib/eslib/lib.es6.d.ts +18 -18
  194. package/lib/globals.d.ts +341 -328
  195. package/lib/helpers.d.ts +23 -23
  196. package/lib/index.d.ts +7 -7
  197. package/lib/kinds.d.ts +36 -36
  198. package/lib/memory.d.ts +17 -17
  199. package/lib/traits.d.ts +141 -121
  200. package/lib/util.d.ts +32 -32
  201. package/package.json +68 -48
  202. package/build/Compiler.d.ts +0 -18
  203. package/build/Scope.d.ts +0 -26
  204. package/build/bin.d.ts +0 -2
  205. package/build/handlers/BlockStatement.d.ts +0 -2
  206. package/build/handlers/CallExpression.d.ts +0 -3
  207. package/build/handlers/ForStatement.d.ts +0 -2
  208. package/build/handlers/IfStatement.d.ts +0 -2
  209. package/build/handlers/Literal.d.ts +0 -2
  210. package/build/handlers/Program.d.ts +0 -2
  211. package/build/handlers/Statements.d.ts +0 -5
  212. package/build/handlers/TemplateExpression.d.ts +0 -2
  213. package/build/handlers/VariableDeclaration.d.ts +0 -3
  214. package/build/handlers/WhileStatement.d.ts +0 -2
  215. package/build/index.d.ts +0 -1
  216. package/build/macros/Blocks.d.ts +0 -5
  217. package/build/macros/Blocks.js +0 -143
  218. package/build/macros/Blocks.js.map +0 -1
  219. package/build/macros/Draw.js +0 -39
  220. package/build/macros/Draw.js.map +0 -1
  221. package/build/macros/Function.d.ts +0 -12
  222. package/build/macros/Items.d.ts +0 -5
  223. package/build/macros/Items.js +0 -20
  224. package/build/macros/Items.js.map +0 -1
  225. package/build/macros/Liquids.d.ts +0 -5
  226. package/build/macros/Liquids.js +0 -18
  227. package/build/macros/Liquids.js.map +0 -1
  228. package/build/macros/Symbol.d.ts +0 -0
  229. package/build/macros/Symbol.js +0 -1
  230. package/build/macros/Symbol.js.map +0 -1
  231. package/build/macros/SymbolNamespace.d.ts +0 -0
  232. package/build/macros/SymbolNamespace.js +0 -1
  233. package/build/macros/SymbolNamespace.js.map +0 -1
  234. package/build/macros/TypeFactory.d.ts +0 -8
  235. package/build/macros/TypeFactory.js +0 -22
  236. package/build/macros/TypeFactory.js.map +0 -1
  237. package/build/macros/Units.d.ts +0 -5
  238. package/build/macros/Units.js +0 -18
  239. package/build/macros/Units.js.map +0 -1
  240. package/build/macros/Vars.d.ts +0 -5
  241. package/build/macros/Vars.js +0 -18
  242. package/build/macros/Vars.js.map +0 -1
  243. package/build/macros/commands/Asm.js +0 -21
  244. package/build/macros/commands/Asm.js.map +0 -1
  245. package/build/macros/commands/UnitControl.d.ts +0 -5
  246. package/build/macros/commands/control.d.ts +0 -5
  247. package/build/macros/commands/control.js.map +0 -1
  248. package/build/macros/commands/io.d.ts +0 -8
  249. package/build/macros/commands/io.js +0 -47
  250. package/build/macros/commands/io.js.map +0 -1
  251. package/build/macros/helpers/GetBuilding.d.ts +0 -5
  252. package/build/macros/helpers/GetBuilding.js +0 -16
  253. package/build/macros/helpers/GetBuilding.js.map +0 -1
  254. package/build/macros/helpers/GetVar.js +0 -16
  255. package/build/macros/helpers/GetVar.js.map +0 -1
  256. package/build/macros/helpers/index.d.ts +0 -2
  257. package/build/macros/helpers/index.js +0 -15
  258. package/build/macros/helpers/index.js.map +0 -1
  259. package/build/types.d.ts +0 -49
  260. package/build/utils.d.ts +0 -3
  261. package/build/values/BaseValue.d.ts +0 -5
  262. package/build/values/ObjectValue.d.ts +0 -17
  263. package/build/values/VoidValue.d.ts +0 -11
  264. package/dist/bundle.js +0 -1
@@ -5,20 +5,36 @@ const instructions_1 = require("../../instructions");
5
5
  const __1 = require("..");
6
6
  const values_1 = require("../../values");
7
7
  const Building_1 = require("../Building");
8
+ const CompilerError_1 = require("../../CompilerError");
8
9
  const validFinds = ["ore", "building", "spawn", "damaged"];
10
+ const validBuildingGroups = [
11
+ "core",
12
+ "storage",
13
+ "generator",
14
+ "turret",
15
+ "factory",
16
+ "repair",
17
+ "rally",
18
+ "battery",
19
+ "reactor",
20
+ ];
9
21
  class UnitLocate extends __1.MacroFunction {
10
22
  constructor(scope) {
11
23
  super(scope, (find, ...args) => {
12
24
  if (!(find instanceof values_1.LiteralValue && typeof find.data === "string"))
13
- throw new Error("The unitLocate find must be a string literal");
25
+ throw new CompilerError_1.CompilerError("The unitLocate find must be a string literal");
14
26
  if (!validFinds.includes(find.data))
15
- throw new Error("Invalid find value");
27
+ throw new CompilerError_1.CompilerError("Invalid find value");
16
28
  if (args.some(value => !(value instanceof values_1.StoreValue || value instanceof values_1.LiteralValue)))
17
- throw new Error("The others arguments of unitLocate must be literals or stores");
18
- const outFound = new values_1.TempValue(scope);
19
- const outX = new values_1.TempValue(scope);
20
- const outY = new values_1.TempValue(scope);
21
- const outBuilding = new values_1.TempValue(scope);
29
+ throw new CompilerError_1.CompilerError("The others arguments of unitLocate must be literals or stores");
30
+ const outFound = new values_1.TempValue({ scope });
31
+ const outX = new values_1.TempValue({ scope });
32
+ const outY = new values_1.TempValue({ scope });
33
+ const outBuilding = new Building_1.Building({
34
+ scope,
35
+ name: scope.makeTempName(),
36
+ renameable: true,
37
+ });
22
38
  const outArgs = [outX, outY, outFound, outBuilding];
23
39
  let inputArgs = [];
24
40
  switch (find.data) {
@@ -29,6 +45,11 @@ class UnitLocate extends __1.MacroFunction {
29
45
  }
30
46
  case "building": {
31
47
  const [group, enemy] = args;
48
+ if (!(group instanceof values_1.LiteralValue && typeof group.data === "string")) {
49
+ throw new CompilerError_1.CompilerError("The building group must be a string literal");
50
+ }
51
+ if (!validBuildingGroups.includes(group.data))
52
+ throw new CompilerError_1.CompilerError("Invalid building group");
32
53
  inputArgs = [find.data, group.data, enemy, "@copper"];
33
54
  break;
34
55
  }
@@ -43,7 +64,7 @@ class UnitLocate extends __1.MacroFunction {
43
64
  0: outFound,
44
65
  1: outX,
45
66
  2: outY,
46
- 3: new Building_1.Building(scope, outBuilding.name),
67
+ 3: outBuilding,
47
68
  length: new values_1.LiteralValue(scope, find.data === "ore" ? 3 : 4),
48
69
  }),
49
70
  [new instructions_1.InstructionBase("ulocate", ...inputArgs, ...outArgs)],
@@ -1 +1 @@
1
- {"version":3,"file":"UnitLocate.js","sourceRoot":"","sources":["../../../src/macros/commands/UnitLocate.ts"],"names":[],"mappings":";;;AAAA,qDAAqD;AACrD,0BAAmC;AAEnC,yCAAgF;AAEhF,0CAAuC;AAEvC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAE3D,MAAa,UAAW,SAAQ,iBAAa;IAC3C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE;YAC7B,IAAI,CAAC,CAAC,IAAI,YAAY,qBAAY,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;gBAClE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAElE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAExC,IACE,IAAI,CAAC,IAAI,CACP,KAAK,CAAC,EAAE,CACN,CAAC,CAAC,KAAK,YAAY,mBAAU,IAAI,KAAK,YAAY,qBAAY,CAAC,CAClE;gBAED,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;YAEJ,MAAM,QAAQ,GAAG,IAAI,kBAAS,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,kBAAS,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,kBAAS,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,WAAW,GAAG,IAAI,kBAAS,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YACpD,IAAI,SAAS,GAAwB,EAAE,CAAC;YACxC,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACjB,KAAK,KAAK,CAAC,CAAC;oBACV,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;oBACnB,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;oBAC7C,MAAM;iBACP;gBACD,KAAK,UAAU,CAAC,CAAC;oBACf,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAA8B,CAAC;oBACtD,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAc,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;oBAChE,MAAM;iBACP;gBACD,KAAK,OAAO,CAAC;gBACb,KAAK,SAAS,CAAC,CAAC;oBACd,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;oBACnD,MAAM;iBACP;aACF;YACD,OAAO;gBACL,IAAI,oBAAW,CAAC,KAAK,EAAE;oBACrB,CAAC,EAAE,QAAQ;oBACX,CAAC,EAAE,IAAI;oBACP,CAAC,EAAE,IAAI;oBACP,CAAC,EAAE,IAAI,mBAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC;oBACxC,MAAM,EAAE,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7D,CAAC;gBACF,CAAC,IAAI,8BAAe,CAAC,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC;aAC3D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAtDD,gCAsDC"}
1
+ {"version":3,"file":"UnitLocate.js","sourceRoot":"","sources":["../../../src/macros/commands/UnitLocate.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ const instructions_1 = require("../../instructions");
5
5
  const __1 = require("..");
6
6
  const values_1 = require("../../values");
7
7
  const Radar_1 = require("./Radar");
8
+ const CompilerError_1 = require("../../CompilerError");
9
+ const Namespace_1 = require("../Namespace");
8
10
  class UnitRadar extends __1.MacroFunction {
9
11
  constructor(scope) {
10
12
  super(scope, (filter1, filter2, filter3, order, sort) => {
@@ -14,24 +16,29 @@ class UnitRadar extends __1.MacroFunction {
14
16
  typeof filter2.data !== "string" ||
15
17
  !(filter3 instanceof values_1.LiteralValue) ||
16
18
  typeof filter3.data !== "string")
17
- throw new Error("The filters must be string literals");
19
+ throw new CompilerError_1.CompilerError("The filters must be string literals");
18
20
  if (!Radar_1.validRadarFilters.includes(filter1.data))
19
- throw new Error("Invalid value for filter1");
21
+ throw new CompilerError_1.CompilerError("Invalid value for filter1");
20
22
  if (!Radar_1.validRadarFilters.includes(filter2.data))
21
- throw new Error("Invalid value for filter2");
23
+ throw new CompilerError_1.CompilerError("Invalid value for filter2");
22
24
  if (!Radar_1.validRadarFilters.includes(filter3.data))
23
- throw new Error("Invalid value for filter3");
25
+ throw new CompilerError_1.CompilerError("Invalid value for filter3");
24
26
  if (!(order instanceof values_1.LiteralValue || order instanceof values_1.StoreValue))
25
- throw new Error("The radar order must be a literal or a store");
27
+ throw new CompilerError_1.CompilerError("The radar order must be a literal or a store");
26
28
  if (!(sort instanceof values_1.LiteralValue) || typeof sort.data !== "string")
27
- throw new Error("The radar sort must be a string literal");
29
+ throw new CompilerError_1.CompilerError("The radar sort must be a string literal");
28
30
  if (!Radar_1.validRadarSorts.includes(sort.data))
29
- throw new Error("Invalid sort value");
30
- const temp = new values_1.TempValue(scope);
31
+ throw new CompilerError_1.CompilerError("Invalid sort value");
32
+ const outUnit = new Namespace_1.Unit({
33
+ scope,
34
+ name: scope.makeTempName(),
35
+ renameable: true,
36
+ });
31
37
  return [
32
- temp,
38
+ outUnit,
33
39
  [
34
- new instructions_1.InstructionBase("uradar", filter1.data, filter2.data, filter3.data, order, sort.data, temp),
40
+ new instructions_1.InstructionBase("uradar", filter1.data, filter2.data, filter3.data, sort.data, "0", // I don't know why, but mindustry requires this extra parameter
41
+ order, outUnit),
35
42
  ],
36
43
  ];
37
44
  });
@@ -1 +1 @@
1
- {"version":3,"file":"UnitRadar.js","sourceRoot":"","sources":["../../../src/macros/commands/UnitRadar.ts"],"names":[],"mappings":";;;AAAA,qDAAqD;AACrD,0BAAmC;AAEnC,yCAAmE;AACnE,mCAA6D;AAE7D,MAAa,SAAU,SAAQ,iBAAa;IAC1C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtD,IACE,CAAC,CAAC,OAAO,YAAY,qBAAY,CAAC;gBAClC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAChC,CAAC,CAAC,OAAO,YAAY,qBAAY,CAAC;gBAClC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAChC,CAAC,CAAC,OAAO,YAAY,qBAAY,CAAC;gBAClC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAEhC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAEzD,IAAI,CAAC,yBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,IAAI,CAAC,yBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,IAAI,CAAC,yBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAE/C,IAAI,CAAC,CAAC,KAAK,YAAY,qBAAY,IAAI,KAAK,YAAY,mBAAU,CAAC;gBACjE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAElE,IAAI,CAAC,CAAC,IAAI,YAAY,qBAAY,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAClE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAE7D,IAAI,CAAC,uBAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAExC,MAAM,IAAI,GAAG,IAAI,kBAAS,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;gBACL,IAAI;gBACJ;oBACE,IAAI,8BAAe,CACjB,QAAQ,EACR,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,EACZ,KAAK,EACL,IAAI,CAAC,IAAI,EACT,IAAI,CACL;iBACF;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA9CD,8BA8CC"}
1
+ {"version":3,"file":"UnitRadar.js","sourceRoot":"","sources":["../../../src/macros/commands/UnitRadar.ts"],"names":[],"mappings":";;;AAAA,qDAAqD;AACrD,0BAAmC;AAEnC,yCAAwD;AACxD,mCAA6D;AAC7D,uDAAoD;AACpD,4CAAoC;AAEpC,MAAa,SAAU,SAAQ,iBAAa;IAC1C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtD,IACE,CAAC,CAAC,OAAO,YAAY,qBAAY,CAAC;gBAClC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAChC,CAAC,CAAC,OAAO,YAAY,qBAAY,CAAC;gBAClC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAChC,CAAC,CAAC,OAAO,YAAY,qBAAY,CAAC;gBAClC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAEhC,MAAM,IAAI,6BAAa,CAAC,qCAAqC,CAAC,CAAC;YAEjE,IAAI,CAAC,yBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC3C,MAAM,IAAI,6BAAa,CAAC,2BAA2B,CAAC,CAAC;YACvD,IAAI,CAAC,yBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC3C,MAAM,IAAI,6BAAa,CAAC,2BAA2B,CAAC,CAAC;YACvD,IAAI,CAAC,yBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC3C,MAAM,IAAI,6BAAa,CAAC,2BAA2B,CAAC,CAAC;YAEvD,IAAI,CAAC,CAAC,KAAK,YAAY,qBAAY,IAAI,KAAK,YAAY,mBAAU,CAAC;gBACjE,MAAM,IAAI,6BAAa,CAAC,8CAA8C,CAAC,CAAC;YAE1E,IAAI,CAAC,CAAC,IAAI,YAAY,qBAAY,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAClE,MAAM,IAAI,6BAAa,CAAC,yCAAyC,CAAC,CAAC;YAErE,IAAI,CAAC,uBAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBACtC,MAAM,IAAI,6BAAa,CAAC,oBAAoB,CAAC,CAAC;YAEhD,MAAM,OAAO,GAAG,IAAI,gBAAI,CAAC;gBACvB,KAAK;gBACL,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE;gBAC1B,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO;gBACP;oBACE,IAAI,8BAAe,CACjB,QAAQ,EACR,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,EACZ,IAAI,CAAC,IAAI,EACT,GAAG,EAAE,gEAAgE;oBACrE,KAAK,EACL,OAAO,CACR;iBACF;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AApDD,8BAoDC"}
@@ -4,12 +4,13 @@ exports.Wait = void 0;
4
4
  const instructions_1 = require("../../instructions");
5
5
  const __1 = require("..");
6
6
  const values_1 = require("../../values");
7
+ const CompilerError_1 = require("../../CompilerError");
7
8
  class Wait extends __1.MacroFunction {
8
9
  constructor(scope) {
9
10
  super(scope, seconds => {
10
11
  if (!(seconds instanceof values_1.StoreValue) &&
11
12
  !(seconds instanceof values_1.LiteralValue && typeof seconds.data === "number"))
12
- throw new Error("The wait seconds must be either a number literal or a store");
13
+ throw new CompilerError_1.CompilerError("The wait seconds must be either a number literal or a store");
13
14
  return [null, [new instructions_1.InstructionBase("wait", seconds)]];
14
15
  });
15
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Wait.js","sourceRoot":"","sources":["../../../src/macros/commands/Wait.ts"],"names":[],"mappings":";;;AAAA,qDAAqD;AACrD,0BAAmC;AAEnC,yCAAwD;AAExD,MAAa,IAAK,SAAQ,iBAAa;IACrC,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;YACrB,IACE,CAAC,CAAC,OAAO,YAAY,mBAAU,CAAC;gBAChC,CAAC,CAAC,OAAO,YAAY,qBAAY,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;gBAEtE,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;YAEJ,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,8BAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAdD,oBAcC"}
1
+ {"version":3,"file":"Wait.js","sourceRoot":"","sources":["../../../src/macros/commands/Wait.ts"],"names":[],"mappings":";;;AAAA,qDAAqD;AACrD,0BAAmC;AAEnC,yCAAwD;AACxD,uDAAoD;AAEpD,MAAa,IAAK,SAAQ,iBAAmB;IAC3C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;YACrB,IACE,CAAC,CAAC,OAAO,YAAY,mBAAU,CAAC;gBAChC,CAAC,CAAC,OAAO,YAAY,qBAAY,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;gBAEtE,MAAM,IAAI,6BAAa,CACrB,6DAA6D,CAC9D,CAAC;YAEJ,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,8BAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAdD,oBAcC"}
@@ -1 +1 @@
1
- {"version":3,"file":"operators.js","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":";;;AAAa,QAAA,yBAAyB,GAAG;IACvC,GAAG;IACH,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACK,CAAC;AACE,QAAA,yBAAyB,GAAG;IACvC,IAAI;IACJ,KAAK;IACL,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,GAAG;IACH,IAAI;CACI,CAAC;AACE,QAAA,sBAAsB,GAAG;IACpC,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,GAAG;IACH,GAAG;CACK,CAAC;AACE,QAAA,eAAe,GAAG;IAC7B,GAAG,iCAAyB;IAC5B,GAAG,iCAAyB;IAC5B,GAAG,8BAAsB;IACzB,YAAY;IACZ,IAAI;CACI,CAAC;AAGE,QAAA,gBAAgB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAG/C,QAAA,6BAA6B,GAAG;IAC3C,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;CACI,CAAC;AACE,QAAA,0BAA0B,GAAG,CAAC,KAAK,EAAE,KAAK,CAAU,CAAC;AACrD,QAAA,0BAA0B,GAAG;IACxC,KAAK;IACL,KAAK;IACL,MAAM;IACN,IAAI;IACJ,IAAI;CACI,CAAC;AACE,QAAA,mBAAmB,GAAG;IACjC,GAAG,qCAA6B;IAChC,GAAG,kCAA0B;IAC7B,GAAG,kCAA0B;IAC7B,GAAG;CACK,CAAC;AAGE,QAAA,kBAAkB,GAAG;IAChC,GAAG,uBAAe;IAClB,GAAG,wBAAgB;IACnB,GAAG,2BAAmB;CACd,CAAC;AAIE,QAAA,cAAc,GAAG;IAC5B,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,GAAG;CACK,CAAC;AAGE,QAAA,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAGxC,QAAA,eAAe,GAAG,CAAC,GAAG,sBAAc,EAAE,GAAG,uBAAe,CAAU,CAAC;AAInE,QAAA,SAAS,GAAG,CAAC,GAAG,0BAAkB,EAAE,GAAG,uBAAe,CAAU,CAAC;AAGjE,QAAA,WAAW,GACtB;IACE,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,aAAa;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,eAAe;IACrB,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;CACF,CAAC"}
1
+ {"version":3,"file":"operators.js","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":";;;AAAa,QAAA,yBAAyB,GAAG;IACvC,GAAG;IACH,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACK,CAAC;AACE,QAAA,yBAAyB,GAAG;IACvC,IAAI;IACJ,KAAK;IACL,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,GAAG;IACH,IAAI;CACI,CAAC;AACE,QAAA,sBAAsB,GAAG;IACpC,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,GAAG;IACH,GAAG;CACK,CAAC;AACE,QAAA,eAAe,GAAG;IAC7B,GAAG,iCAAyB;IAC5B,GAAG,iCAAyB;IAC5B,GAAG,8BAAsB;IACzB,YAAY;IACZ,IAAI;CACI,CAAC;AAGE,QAAA,gBAAgB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAG/C,QAAA,6BAA6B,GAAG;IAC3C,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;CACI,CAAC;AACE,QAAA,0BAA0B,GAAG,CAAC,KAAK,EAAE,KAAK,CAAU,CAAC;AACrD,QAAA,0BAA0B,GAAG;IACxC,KAAK;IACL,KAAK;IACL,MAAM;IACN,IAAI;IACJ,IAAI;CACI,CAAC;AACE,QAAA,mBAAmB,GAAG;IACjC,GAAG,qCAA6B;IAChC,GAAG,kCAA0B;IAC7B,GAAG,kCAA0B;IAC7B,GAAG;CACK,CAAC;AAGE,QAAA,kBAAkB,GAAG;IAChC,GAAG,uBAAe;IAClB,GAAG,wBAAgB;IACnB,GAAG,2BAAmB;CACd,CAAC;AAIE,QAAA,cAAc,GAAG;IAC5B,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,GAAG;CACK,CAAC;AAGE,QAAA,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAGxC,QAAA,eAAe,GAAG,CAAC,GAAG,sBAAc,EAAE,GAAG,uBAAe,CAAU,CAAC;AAInE,QAAA,SAAS,GAAG,CAAC,GAAG,0BAAkB,EAAE,GAAG,uBAAe,CAAU,CAAC;AAGjE,QAAA,WAAW,GAIpB;IACF,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,aAAa;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,eAAe;IACrB,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;CACF,CAAC"}
package/build/types.js CHANGED
@@ -24,5 +24,5 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.es = void 0;
27
- exports.es = __importStar(require("estree"));
27
+ exports.es = __importStar(require("@babel/types"));
28
28
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA6B"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAmC"}
package/build/utils.js CHANGED
@@ -1,9 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.camelToDashCase = exports.nodeName = void 0;
3
+ exports.camelToDashCase = exports.nodeName = exports.internalPrefix = void 0;
4
+ /**
5
+ * The prefix for internal variables inside the compiler output
6
+ */
7
+ exports.internalPrefix = "&";
4
8
  function nodeName(node) {
9
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
5
10
  const { line, column } = node.loc.start;
6
- return line + ":" + column;
11
+ return `${line}:${column}`;
7
12
  }
8
13
  exports.nodeName = nodeName;
9
14
  function camelToDashCase(name) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAEA,SAAgB,QAAQ,CAAC,IAAa;IACpC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACxC,OAAO,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC;AAC7B,CAAC;AAHD,4BAGC;AAED,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAChE,CAAC;AAFD,0CAEC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACU,QAAA,cAAc,GAAG,GAAG,CAAC;AAElC,SAAgB,QAAQ,CAAC,IAAa;IACpC,oEAAoE;IACpE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAI,CAAC,KAAK,CAAC;IACzC,OAAO,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;AAC7B,CAAC;AAJD,4BAIC;AAED,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAChE,CAAC;AAFD,0CAEC"}
@@ -7,7 +7,7 @@ const _1 = require(".");
7
7
  class BaseValue extends _1.VoidValue {
8
8
  "u-"(scope) {
9
9
  const [that, inst] = this.eval(scope);
10
- const temp = new _1.TempValue(scope);
10
+ const temp = new _1.TempValue({ scope });
11
11
  return [
12
12
  temp,
13
13
  [
@@ -47,7 +47,7 @@ for (const key in operatorMap) {
47
47
  BaseValue.prototype[key] = function (scope, value) {
48
48
  const [left, leftInst] = this.eval(scope);
49
49
  const [right, rightInst] = value.eval(scope);
50
- const temp = new _1.TempValue(scope);
50
+ const temp = new _1.TempValue({ scope });
51
51
  return [
52
52
  temp,
53
53
  [
@@ -66,8 +66,8 @@ for (const key in unaryOperatorMap) {
66
66
  const name = unaryOperatorMap[key];
67
67
  BaseValue.prototype[key] = function (scope) {
68
68
  const [that, inst] = this.eval(scope);
69
- const temp = new _1.TempValue(scope);
70
- return [temp, [...inst, new instructions_1.OperationInstruction(name, temp, that)]];
69
+ const temp = new _1.TempValue({ scope });
70
+ return [temp, [...inst, new instructions_1.OperationInstruction(name, temp, that, null)]];
71
71
  };
72
72
  }
73
73
  const assignmentToBinary = {
@@ -97,7 +97,7 @@ for (const key of operators_1.updateOperators) {
97
97
  BaseValue.prototype[key] = function (scope, prefix) {
98
98
  let [ret, inst] = this.eval(scope);
99
99
  if (!prefix) {
100
- const temp = new _1.TempValue(scope);
100
+ const temp = new _1.TempValue({ scope });
101
101
  const [tempValue, tempInst] = temp["="](scope, ret);
102
102
  ret = tempValue;
103
103
  inst.push(...tempInst);
@@ -1 +1 @@
1
- {"version":3,"file":"BaseValue.js","sourceRoot":"","sources":["../../src/values/BaseValue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseValue.js","sourceRoot":"","sources":["../../src/values/BaseValue.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FunctionValue = void 0;
4
+ const utils_1 = require("src/utils");
5
+ const CompilerError_1 = require("../CompilerError");
4
6
  const instructions_1 = require("../instructions");
5
7
  const LiteralValue_1 = require("./LiteralValue");
6
8
  const StoreValue_1 = require("./StoreValue");
7
9
  const TempValue_1 = require("./TempValue");
8
10
  const VoidValue_1 = require("./VoidValue");
9
11
  class FunctionValue extends VoidValue_1.VoidValue {
10
- constructor(scope, name, paramNames, paramStores, body, c) {
12
+ constructor({ scope, name, paramNames, paramStores, body, c, renameable = false, }) {
11
13
  super(scope);
12
14
  this.constant = true;
13
15
  this.macro = true;
14
16
  this.bundled = false;
17
+ this.initialized = false;
15
18
  this.name = name;
16
19
  this.paramNames = paramNames;
17
20
  this.paramStores = paramStores;
18
21
  this.body = body;
19
22
  this.c = c;
23
+ this.renameable = renameable;
20
24
  this.callSize = paramStores.length + 2;
21
25
  scope.function = this;
22
- this.createValues();
23
- this.createInst();
24
- }
25
- createValues() {
26
- this.addr = new LiteralValue_1.LiteralValue(this.scope, null);
27
- this.temp = new StoreValue_1.StoreValue(this.scope, "f" + this.name);
28
- this.ret = new StoreValue_1.StoreValue(this.scope, "r" + this.name);
29
26
  }
30
27
  typeof(scope) {
31
28
  return [new LiteralValue_1.LiteralValue(scope, "function"), []];
32
29
  }
33
- createInst() {
30
+ ensureInit() {
31
+ if (this.initialized)
32
+ return;
33
+ this.initialized = true;
34
+ this.addr = new LiteralValue_1.LiteralValue(this.scope, null);
35
+ this.temp = new StoreValue_1.StoreValue(this.scope, `${utils_1.internalPrefix}f${this.name}`);
36
+ this.ret = new StoreValue_1.StoreValue(this.scope, `${utils_1.internalPrefix}r${this.name}`);
34
37
  this.inst = [
35
38
  new instructions_1.AddressResolver(this.addr),
36
39
  ...this.c.handle(this.scope, this.body)[1],
@@ -58,14 +61,14 @@ class FunctionValue extends VoidValue_1.VoidValue {
58
61
  }
59
62
  inlineCall(scope, args) {
60
63
  // create return value
61
- this.inlineTemp = new TempValue_1.TempValue(scope);
64
+ this.inlineTemp = new TempValue_1.TempValue({ scope });
62
65
  this.inlineEnd = new LiteralValue_1.LiteralValue(scope, null);
63
66
  // make a copy of the function scope
64
67
  const fnScope = this.scope.copy();
65
68
  // hard set variables within the function scope
66
69
  this.paramNames.forEach((name, i) => fnScope.hardSet(name, args[i]));
67
70
  this.tryingInline = true;
68
- let inst = this.c.handle(fnScope, this.body)[1];
71
+ const inst = this.c.handle(fnScope, this.body)[1];
69
72
  this.tryingInline = false;
70
73
  // removing useless instruction
71
74
  // get the last instructions
@@ -79,8 +82,9 @@ class FunctionValue extends VoidValue_1.VoidValue {
79
82
  return [this.inlineTemp, inst];
80
83
  }
81
84
  call(scope, args) {
85
+ this.ensureInit();
82
86
  if (args.length !== this.paramStores.length)
83
- throw new Error("Cannot call: argument count not matching.");
87
+ throw new CompilerError_1.CompilerError("Cannot call: argument count not matching.");
84
88
  const inlineCall = this.inlineCall(scope, args);
85
89
  const inlineSize = inlineCall[1].filter(i => !i.hidden).length;
86
90
  if (this.inline || inlineSize <= this.callSize)
@@ -88,6 +92,7 @@ class FunctionValue extends VoidValue_1.VoidValue {
88
92
  return this.normalCall(scope, args);
89
93
  }
90
94
  return(scope, arg) {
95
+ this.ensureInit();
91
96
  if (arg && arg.macro) {
92
97
  this.inline = true;
93
98
  return [null, []];
@@ -96,9 +101,16 @@ class FunctionValue extends VoidValue_1.VoidValue {
96
101
  return this.inlineReturn(scope, arg);
97
102
  return this.normalReturn(scope, arg);
98
103
  }
99
- eval(scope) {
104
+ eval(_scope) {
100
105
  return [this, []];
101
106
  }
107
+ rename(name) {
108
+ if (!this.renameable)
109
+ return;
110
+ this.name = name;
111
+ this.scope.name = name;
112
+ this.renameable = false;
113
+ }
102
114
  }
103
115
  exports.FunctionValue = FunctionValue;
104
116
  //# sourceMappingURL=FunctionValue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FunctionValue.js","sourceRoot":"","sources":["../../src/values/FunctionValue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FunctionValue.js","sourceRoot":"","sources":["../../src/values/FunctionValue.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAE3C,oDAAiD;AACjD,kDAMyB;AASzB,iDAA8C;AAC9C,6CAA0C;AAC1C,2CAAwC;AACxC,2CAAwC;AAExC,MAAa,aAAc,SAAQ,qBAAS;IAsC1C,YAAY,EACV,KAAK,EACL,IAAI,EACJ,UAAU,EACV,WAAW,EACX,IAAI,EACJ,CAAC,EACD,UAAU,GAAG,KAAK,GASnB;QACC,KAAK,CAAC,KAAK,CAAC,CAAC;QAtDf,aAAQ,GAAG,IAAI,CAAC;QAChB,UAAK,GAAG,IAAI,CAAC;QAeL,YAAO,GAAG,KAAK,CAAC;QAEhB,gBAAW,GAAG,KAAK,CAAC;QAsC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACxB,CAAC;IA7CD,MAAM,CAAC,KAAa;QAClB,OAAO,CAAC,IAAI,2BAAY,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAa,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,IAAI,uBAAU,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,sBAAc,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,GAAG,GAAG,IAAI,uBAAU,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,sBAAc,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,GAAG;YACV,IAAI,8BAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC3C,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,oCAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IAgCO,YAAY,CAClB,KAAa,EACb,GAAkB;QAElB,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,EAAE,IAAI,oCAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,UAAU,CAAC,KAAa,EAAE,IAAc;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,kBAAkB,GAAG,IAAI,2BAAY,CAAC,KAAK,EAAE,IAAa,CAAC,CAAC;QAClE,MAAM,IAAI,GAAmB,IAAI,CAAC,WAAW;aAC1C,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAChD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;aACjC,MAAM,CACL,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAC9C,IAAI,8BAAe,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAS,CAAC,MAAM,CAAC,EAChD,IAAI,8BAAe,CAAC,kBAAkB,CAAC,CACxC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEO,YAAY,CAClB,KAAa,EACb,GAAkB;QAElB,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,EAAE,IAAI,gCAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAEO,UAAU,CAAC,KAAa,EAAE,IAAc;QAC9C,sBAAsB;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,2BAAY,CAAC,KAAK,EAAE,IAAa,CAAC,CAAC;QAExD,oCAAoC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClC,+CAA+C;QAC/C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,+BAA+B;QAC/B,4BAA4B;QAC5B,iCAAiC;QACjC,yCAAyC;QACzC,0BAA0B;QAC1B,oDAAoD;QACpD,IAAI;QAEJ,IAAI,CAAC,IAAI,CAAC,IAAI,8BAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAE/C,4BAA4B;QAC5B,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,IAAc;QAChC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM;YACzC,MAAM,IAAI,6BAAa,CAAC,2CAA2C,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAC/D,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,UAAU,CAAC;QAClE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,GAAkB;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACnB;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,MAAc;QACjB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;CACF;AA7JD,sCA6JC"}
@@ -2,10 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LiteralValue = void 0;
4
4
  const _1 = require(".");
5
+ const CompilerError_1 = require("../CompilerError");
5
6
  const literalMethods = {
6
7
  length: function (scope) {
7
8
  if (typeof this.data !== "string")
8
- throw new Error("Length method only works on string literal values.");
9
+ throw new CompilerError_1.CompilerError("Length method only works on string literal values.");
9
10
  return new LiteralValue(scope, this.data.length);
10
11
  },
11
12
  };
@@ -15,7 +16,7 @@ class LiteralValue extends _1.BaseValue {
15
16
  this.constant = true;
16
17
  this.data = data;
17
18
  }
18
- eval(scope) {
19
+ eval(_scope) {
19
20
  return [this, []];
20
21
  }
21
22
  toString() {
@@ -26,7 +27,7 @@ class LiteralValue extends _1.BaseValue {
26
27
  return super.get(scope, name);
27
28
  const method = literalMethods[name.data];
28
29
  if (!method)
29
- throw new Error(`Method ${name.data} does not exist on literal values.`);
30
+ throw new CompilerError_1.CompilerError(`Method ${name.data} does not exist on literal values.`);
30
31
  return [method.apply(this, [scope]), []];
31
32
  }
32
33
  get num() {
@@ -55,7 +56,7 @@ const operatorMap = {
55
56
  "*": (a, b) => a * b,
56
57
  "/": (a, b) => a / b,
57
58
  "%": (a, b) => a % b,
58
- "**": (a, b) => Math.pow(a, b),
59
+ "**": (a, b) => a ** b,
59
60
  "|": (a, b) => a | b,
60
61
  "&": (a, b) => a & b,
61
62
  "^": (a, b) => a ^ b,
@@ -1 +1 @@
1
- {"version":3,"file":"LiteralValue.js","sourceRoot":"","sources":["../../src/values/LiteralValue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LiteralValue.js","sourceRoot":"","sources":["../../src/values/LiteralValue.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ObjectValue = void 0;
4
+ const CompilerError_1 = require("../CompilerError");
4
5
  const operators_1 = require("../operators");
5
6
  const LiteralValue_1 = require("./LiteralValue");
6
7
  const VoidValue_1 = require("./VoidValue");
@@ -15,12 +16,16 @@ class ObjectValue extends VoidValue_1.VoidValue {
15
16
  return [new LiteralValue_1.LiteralValue(scope, "object"), []];
16
17
  }
17
18
  get(scope, key) {
18
- const member = this.data[key.data];
19
- if (member)
19
+ // avoids naming collisions with keys like
20
+ // constructor or toString
21
+ if (Object.prototype.hasOwnProperty.call(this.data, key.data)) {
22
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
23
+ const member = this.data[key.data];
20
24
  return [member, []];
25
+ }
21
26
  const { $get } = this.data;
22
27
  if (!$get)
23
- throw new Error("Cannot get undefined member.");
28
+ throw new CompilerError_1.CompilerError("Cannot get undefined member.");
24
29
  return $get.call(scope, [key]);
25
30
  }
26
31
  eval(scope) {
@@ -39,11 +44,11 @@ class ObjectValue extends VoidValue_1.VoidValue {
39
44
  exports.ObjectValue = ObjectValue;
40
45
  for (const op of operators_1.operators) {
41
46
  ObjectValue.prototype[op] = function (...args) {
42
- const $ = this.data["$" + op];
47
+ const $ = this.data[`$${op}`];
48
+ // eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-unsafe-return
43
49
  if (!$)
44
50
  return VoidValue_1.VoidValue.prototype[op].apply(this, args);
45
- let [scope, ...fnArgs] = args;
46
- // @ts-ignore
51
+ const [scope, ...fnArgs] = args;
47
52
  return $.call(scope, fnArgs);
48
53
  };
49
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectValue.js","sourceRoot":"","sources":["../../src/values/ObjectValue.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AAEzC,iDAA8C;AAC9C,2CAAwC;AAExC,MAAa,WAAY,SAAQ,qBAAS;IAKxC,YAAY,KAAa,EAAE,OAAgC,EAAE;QAC3D,KAAK,CAAC,KAAK,CAAC,CAAC;QALf,aAAQ,GAAG,IAAI,CAAC;QAChB,UAAK,GAAG,IAAI,CAAC;QAKX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,OAAO,CAAC,IAAI,2BAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,GAAiB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,IAAc;QAChC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;CACF;AAjCD,kCAiCC;AAED,KAAK,MAAM,EAAE,IAAI,qBAAS,EAAE;IAC1B,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,UAA6B,GAAG,IAAW;QACrE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC;YAAE,OAAO,qBAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;QAC9B,aAAa;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC;CACH"}
1
+ {"version":3,"file":"ObjectValue.js","sourceRoot":"","sources":["../../src/values/ObjectValue.ts"],"names":[],"mappings":";;;AAAA,oDAAiD;AAEjD,4CAAyC;AAOzC,iDAA8C;AAC9C,2CAAwC;AAOxC,MAAa,WAAY,SAAQ,qBAAS;IAKxC,YAAY,KAAa,EAAE,OAAyB,EAAE;QACpD,KAAK,CAAC,KAAK,CAAC,CAAC;QALf,aAAQ,GAAG,IAAI,CAAC;QAChB,UAAK,GAAG,IAAI,CAAC;QAKX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,OAAO,CAAC,IAAI,2BAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,GAAiB;QAClC,0CAA0C;QAC1C,0BAA0B;QAC1B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YAC7D,oEAAoE;YACpE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;YACpC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACrB;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,6BAAa,CAAC,8BAA8B,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,IAAc;QAChC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;CACF;AAtCD,kCAsCC;AAED,KAAK,MAAM,EAAE,IAAI,qBAAS,EAAE;IAC1B,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,UAE1B,GAAG,IAA0B;QAE7B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9B,6FAA6F;QAC7F,IAAI,CAAC,CAAC;YAAE,OAAQ,qBAAS,CAAC,SAAS,CAAC,EAAE,CAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;QAChC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC;CACH"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StoreValue = void 0;
4
4
  const _1 = require(".");
5
+ const CompilerError_1 = require("../CompilerError");
5
6
  const instructions_1 = require("../instructions");
6
7
  class StoreValue extends _1.BaseValue {
7
8
  constructor(scope, name) {
@@ -14,13 +15,13 @@ class StoreValue extends _1.BaseValue {
14
15
  }
15
16
  "="(scope, value) {
16
17
  if (this.constant)
17
- throw new Error(`Cannot assign to unmutable store '${this.name}'.`);
18
+ throw new CompilerError_1.CompilerError(`Cannot assign to unmutable store '${this.name}'.`);
18
19
  if (value instanceof _1.TempValue && value.canProxy)
19
20
  return value.proxy(this);
20
21
  const [evalValue, evalInst] = value.eval(scope);
21
22
  return [this, [...evalInst, new instructions_1.SetInstruction(this, evalValue)]];
22
23
  }
23
- eval(scope) {
24
+ eval(_scope) {
24
25
  return [this, []];
25
26
  }
26
27
  toString() {
@@ -1 +1 @@
1
- {"version":3,"file":"StoreValue.js","sourceRoot":"","sources":["../../src/values/StoreValue.ts"],"names":[],"mappings":";;;AAAA,wBAAuD;AACvD,kDAAiD;AAIjD,MAAa,UAAW,SAAQ,YAAS;IAGvC,YAAY,KAAa,EAAE,IAAY;QACrC,KAAK,CAAC,KAAK,CAAC,CAAC;QAFf,aAAQ,GAAG,KAAK,CAAC;QAGf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,OAAO,CAAC,IAAI,eAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,KAAa;QAC9B,IAAI,IAAI,CAAC,QAAQ;YACf,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACtE,IAAI,KAAK,YAAY,YAAS,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,IAAI,6BAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,KAAa;QAChB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAzBD,gCAyBC"}
1
+ {"version":3,"file":"StoreValue.js","sourceRoot":"","sources":["../../src/values/StoreValue.ts"],"names":[],"mappings":";;;AAAA,wBAAuD;AACvD,oDAAiD;AACjD,kDAAiD;AAGjD,MAAa,UAAW,SAAQ,YAAS;IAGvC,YAAY,KAAa,EAAE,IAAY;QACrC,KAAK,CAAC,KAAK,CAAC,CAAC;QAFf,aAAQ,GAAG,KAAK,CAAC;QAGf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,OAAO,CAAC,IAAI,eAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,KAAa;QAC9B,IAAI,IAAI,CAAC,QAAQ;YACf,MAAM,IAAI,6BAAa,CACrB,qCAAqC,IAAI,CAAC,IAAI,IAAI,CACnD,CAAC;QACJ,IAAI,KAAK,YAAY,YAAS,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,IAAI,6BAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,MAAc;QACjB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AA3BD,gCA2BC"}
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TempValue = void 0;
4
+ const CompilerError_1 = require("../CompilerError");
4
5
  const instructions_1 = require("../instructions");
5
6
  const operators_1 = require("../operators");
6
7
  const _1 = require("./");
7
8
  const LiteralValue_1 = require("./LiteralValue");
8
9
  class TempValue extends _1.StoreValue {
9
- constructor(scope, name) {
10
- super(scope, name !== null && name !== void 0 ? name : "t" + scope.ntemp + (scope.name ? ":" + scope.name : ""));
10
+ constructor({ scope, name, renameable = true }) {
11
+ super(scope, name ?? scope.makeTempName());
11
12
  this.canProxy = true;
12
- if (!name)
13
- scope.ntemp++;
13
+ this.renameable = renameable;
14
14
  }
15
15
  eval(scope) {
16
16
  return super.eval(scope);
@@ -28,10 +28,10 @@ class TempValue extends _1.StoreValue {
28
28
  proxy(value) {
29
29
  if (!this.canProxy) {
30
30
  console.log(this.proxied);
31
- throw new Error("Cannot proxy (canProxy = false).");
31
+ throw new CompilerError_1.CompilerError("Cannot proxy (canProxy = false).");
32
32
  }
33
33
  if (this.proxied)
34
- throw new Error("Cannot proxy multiple times.");
34
+ throw new CompilerError_1.CompilerError("Cannot proxy multiple times.");
35
35
  this.proxied = value;
36
36
  this.canProxy = false;
37
37
  for (const key of [
@@ -41,9 +41,13 @@ class TempValue extends _1.StoreValue {
41
41
  "call",
42
42
  "toString",
43
43
  "proxy",
44
+ "rename",
44
45
  ]) {
45
46
  if (key !== "=" && key in value)
46
- this[key] = (...args) => value[key].apply(value, args);
47
+ this[key] = (...args) => {
48
+ // eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-unsafe-return
49
+ return value[key].apply(value, args);
50
+ };
47
51
  }
48
52
  this.setInst = new instructions_1.SetInstruction(this, value);
49
53
  this.setInst.hidden = true;
@@ -58,10 +62,17 @@ class TempValue extends _1.StoreValue {
58
62
  "call",
59
63
  "toString",
60
64
  "proxy",
65
+ "rename",
61
66
  ]) {
62
67
  this[key] = TempValue.prototype[key];
63
68
  }
64
69
  }
70
+ rename(name) {
71
+ if (!this.renameable)
72
+ return;
73
+ this.name = name;
74
+ this.renameable = false;
75
+ }
65
76
  }
66
77
  exports.TempValue = TempValue;
67
78
  //# sourceMappingURL=TempValue.js.map