ranger-compiler 2.1.69 → 3.0.3

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 (363) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/README.md +991 -96
  3. package/{compiler/Lang.clj → dist/Lang.rgr} +2345 -75
  4. package/dist/README.md +116 -0
  5. package/dist/{bin/api.d.ts → api.d.ts} +430 -154
  6. package/dist/api.js +34345 -0
  7. package/{lib/Ajax.clj → dist/lib/Ajax.rgr} +1 -1
  8. package/{lib/CmdParams.clj → dist/lib/CmdParams.rgr} +72 -72
  9. package/{lib/Crypto.clj → dist/lib/Crypto.rgr} +1 -1
  10. package/{lib/DOMLib.clj → dist/lib/DOMLib.rgr} +2 -2
  11. package/{lib/Engine3D.clj → dist/lib/Engine3D.rgr} +1 -1
  12. package/{lib/ImmutableVector.clj → dist/lib/ImmutableVector.rgr} +364 -364
  13. package/{lib/IndexedDB.clj → dist/lib/IndexedDB.rgr} +1 -1
  14. package/{lib/JSON.clj → dist/lib/JSON.rgr} +105 -2
  15. package/{lib/JinxProcess.clj → dist/lib/JinxProcess.rgr} +3 -3
  16. package/{lib/Storage.clj → dist/lib/Storage.rgr} +1 -1
  17. package/{lib/Timers.clj → dist/lib/Timers.rgr} +176 -170
  18. package/{lib/ViewLib.clj → dist/lib/ViewLib.rgr} +1 -1
  19. package/dist/lib/lib/ACEEditor.rgr +5 -0
  20. package/dist/lib/lib/Ajax.rgr +196 -0
  21. package/dist/lib/lib/CmdParams.rgr +72 -0
  22. package/dist/lib/lib/Crypto.rgr +90 -0
  23. package/dist/lib/lib/DOMLib.rgr +307 -0
  24. package/{examples/3D/Engine3D.clj → dist/lib/lib/Engine3D.rgr} +870 -857
  25. package/dist/lib/lib/ImmutableVector.rgr +364 -0
  26. package/dist/lib/lib/IndexedDB.rgr +32 -0
  27. package/{compiler/JSON.clj → dist/lib/lib/JSON.rgr} +106 -3
  28. package/dist/lib/lib/JinxProcess.rgr +838 -0
  29. package/dist/lib/lib/SQL.rgr +44 -0
  30. package/dist/lib/lib/ServiceLib.rgr +9 -0
  31. package/dist/lib/lib/Storage.rgr +89 -0
  32. package/dist/lib/lib/Time.rgr +75 -0
  33. package/dist/lib/lib/Timers.rgr +176 -0
  34. package/dist/lib/lib/TypedArrays.rgr +14 -0
  35. package/dist/lib/lib/ViewLib.rgr +851 -0
  36. package/dist/lib/lib/WebLib.rgr +47 -0
  37. package/dist/lib/lib/WebServerLib.rgr +137 -0
  38. package/{lib/ranger-dir.clj → dist/lib/lib/ranger-dir.rgr} +1 -1
  39. package/{compiler/stdlib.clj → dist/lib/lib/stdlib.rgr} +42 -19
  40. package/{lib/stdops.clj → dist/lib/lib/stdops.rgr} +1 -1
  41. package/dist/lib/ranger-dir.rgr +175 -0
  42. package/{lib/stdlib.clj → dist/lib/stdlib.rgr} +2 -2
  43. package/dist/lib/stdops.rgr +168 -0
  44. package/dist/package.json +47 -0
  45. package/{bin/output.js → dist/rgrc.js} +15377 -7935
  46. package/dist/stdops.rgr +168 -0
  47. package/package.json +196 -38
  48. package/adventofcode/day1/bin/LambdaSignature1.java +0 -3
  49. package/adventofcode/day1/bin/LambdaSignature2.java +0 -3
  50. package/adventofcode/day1/bin/LambdaSignature3.java +0 -3
  51. package/adventofcode/day1/bin/day1.cpp +0 -124
  52. package/adventofcode/day1/bin/day1.go +0 -75
  53. package/adventofcode/day1/bin/day1.js +0 -45
  54. package/adventofcode/day1/bin/day1.php +0 -46
  55. package/adventofcode/day1/bin/day1.scala +0 -48
  56. package/adventofcode/day1/bin/day1.swift +0 -48
  57. package/adventofcode/day1/bin/day1_part2.cpp +0 -180
  58. package/adventofcode/day1/bin/day1_part2.go +0 -123
  59. package/adventofcode/day1/bin/day1_part2.js +0 -76
  60. package/adventofcode/day1/bin/day1_part2.php +0 -88
  61. package/adventofcode/day1/bin/day1_part2.scala +0 -81
  62. package/adventofcode/day1/bin/day1_part2.swift +0 -91
  63. package/adventofcode/day1/bin/day_one.java +0 -38
  64. package/adventofcode/day1/bin/day_one_part_two.java +0 -57
  65. package/adventofcode/day1/bin/operatorsOf.java +0 -37
  66. package/adventofcode/day1/bin/operatorsOf_5.java +0 -10
  67. package/adventofcode/day1/bin/operatorsOfboolean_5.java +0 -10
  68. package/adventofcode/day1/bin/variant.hpp +0 -2416
  69. package/adventofcode/day1/compile.bat +0 -7
  70. package/adventofcode/day1/compile2.bat +0 -7
  71. package/adventofcode/day1/day1.clj +0 -19
  72. package/adventofcode/day1/day1_part2.clj +0 -43
  73. package/adventofcode/day1/input1.txt +0 -1
  74. package/adventofcode/day2/bin/LambdaSignature1.class +0 -0
  75. package/adventofcode/day2/bin/LambdaSignature1.java +0 -3
  76. package/adventofcode/day2/bin/LambdaSignature2.class +0 -0
  77. package/adventofcode/day2/bin/LambdaSignature2.java +0 -3
  78. package/adventofcode/day2/bin/day2.cpp +0 -133
  79. package/adventofcode/day2/bin/day2.go +0 -85
  80. package/adventofcode/day2/bin/day2.js +0 -45
  81. package/adventofcode/day2/bin/day2.php +0 -59
  82. package/adventofcode/day2/bin/day2.scala +0 -54
  83. package/adventofcode/day2/bin/day2.swift +0 -62
  84. package/adventofcode/day2/bin/day2_part2.cpp +0 -150
  85. package/adventofcode/day2/bin/day2_part2.go +0 -101
  86. package/adventofcode/day2/bin/day2_part2.js +0 -54
  87. package/adventofcode/day2/bin/day2_part2.php +0 -80
  88. package/adventofcode/day2/bin/day2_part2.scala +0 -68
  89. package/adventofcode/day2/bin/day2_part2.swift +0 -82
  90. package/adventofcode/day2/bin/day_two.java +0 -61
  91. package/adventofcode/day2/bin/day_two_part_two$1$1$1.class +0 -0
  92. package/adventofcode/day2/bin/day_two_part_two$1$1.class +0 -0
  93. package/adventofcode/day2/bin/day_two_part_two$1.class +0 -0
  94. package/adventofcode/day2/bin/day_two_part_two.class +0 -0
  95. package/adventofcode/day2/bin/day_two_part_two.java +0 -80
  96. package/adventofcode/day2/bin/operatorsOf.class +0 -0
  97. package/adventofcode/day2/bin/operatorsOf.java +0 -18
  98. package/adventofcode/day2/bin/variant.hpp +0 -2416
  99. package/adventofcode/day2/compile.bat +0 -7
  100. package/adventofcode/day2/compile2.bat +0 -7
  101. package/adventofcode/day2/day2.clj +0 -60
  102. package/adventofcode/day2/day2_part2.clj +0 -69
  103. package/adventofcode/day2/input1.txt +0 -1
  104. package/adventofcode/day3/bin/Grid.java +0 -92
  105. package/adventofcode/day3/bin/GridRow.java +0 -5
  106. package/adventofcode/day3/bin/LambdaSignature1.java +0 -3
  107. package/adventofcode/day3/bin/LambdaSignature2.java +0 -3
  108. package/adventofcode/day3/bin/LambdaSignature3.java +0 -3
  109. package/adventofcode/day3/bin/day3.cpp +0 -64
  110. package/adventofcode/day3/bin/day3.go +0 -55
  111. package/adventofcode/day3/bin/day3.js +0 -42
  112. package/adventofcode/day3/bin/day3.php +0 -41
  113. package/adventofcode/day3/bin/day3.scala +0 -52
  114. package/adventofcode/day3/bin/day3.swift +0 -43
  115. package/adventofcode/day3/bin/day3_part2.cpp +0 -216
  116. package/adventofcode/day3/bin/day3_part2.go +0 -188
  117. package/adventofcode/day3/bin/day3_part2.js +0 -123
  118. package/adventofcode/day3/bin/day3_part2.php +0 -135
  119. package/adventofcode/day3/bin/day3_part2.swift +0 -131
  120. package/adventofcode/day3/bin/day_three_part_two.java +0 -43
  121. package/adventofcode/day3/bin/day_two.java +0 -42
  122. package/adventofcode/day3/bin/operatorsOf.java +0 -14
  123. package/adventofcode/day3/bin/variant.hpp +0 -2416
  124. package/adventofcode/day3/compile.bat +0 -7
  125. package/adventofcode/day3/compile2.bat +0 -7
  126. package/adventofcode/day3/day3.clj +0 -42
  127. package/adventofcode/day3/day3_part2.clj +0 -112
  128. package/adventofcode/day4/bin/LambdaSignature1.java +0 -3
  129. package/adventofcode/day4/bin/day4.cpp +0 -118
  130. package/adventofcode/day4/bin/day4.go +0 -75
  131. package/adventofcode/day4/bin/day4.js +0 -40
  132. package/adventofcode/day4/bin/day4.php +0 -52
  133. package/adventofcode/day4/bin/day4.scala +0 -47
  134. package/adventofcode/day4/bin/day4.swift +0 -56
  135. package/adventofcode/day4/bin/day4_part2.go +0 -129
  136. package/adventofcode/day4/bin/day4_part2.js +0 -72
  137. package/adventofcode/day4/bin/day_four.java +0 -41
  138. package/adventofcode/day4/bin/inputData.java +0 -7
  139. package/adventofcode/day4/bin/operatorsOf.java +0 -11
  140. package/adventofcode/day4/bin/variant.hpp +0 -2416
  141. package/adventofcode/day4/compile.bat +0 -7
  142. package/adventofcode/day4/compile2.bat +0 -7
  143. package/adventofcode/day4/day4.clj +0 -32
  144. package/adventofcode/day4/day4_part2.clj +0 -44
  145. package/adventofcode/day4/input.clj +0 -519
  146. package/adventofcode/day4/input.txt +0 -512
  147. package/bin/api.ts +0 -24471
  148. package/bin/compiler.ts +0 -24482
  149. package/compiler/ColorConsole.clj +0 -22
  150. package/compiler/ContextOperators.clj +0 -75
  151. package/compiler/FlowEnterVarDef.clj +0 -223
  152. package/compiler/InputFileSystem.clj +0 -276
  153. package/compiler/RangerDocs.clj +0 -7
  154. package/compiler/TFactory.clj +0 -146
  155. package/compiler/TFiles.clj +0 -23
  156. package/compiler/TFlow.clj +0 -39
  157. package/compiler/TNodeFactory.clj +0 -84
  158. package/compiler/TTypes.clj +0 -188
  159. package/compiler/VirtualCompiler.clj +0 -800
  160. package/compiler/bin/ng_Compiler.js +0 -23779
  161. package/compiler/commonmark_plugin.clj +0 -359
  162. package/compiler/feat2.bat +0 -2
  163. package/compiler/feats.bat +0 -9
  164. package/compiler/feature_tests.clj +0 -192
  165. package/compiler/index.js +0 -2
  166. package/compiler/issue_57.clj +0 -25
  167. package/compiler/makefile_plugin.clj +0 -135
  168. package/compiler/markdown_plugin.clj +0 -386
  169. package/compiler/maven_plugin.clj +0 -162
  170. package/compiler/ng_AndroidPageWriter.clj +0 -299
  171. package/compiler/ng_CodeNode.clj +0 -756
  172. package/compiler/ng_CodeNodeCompilerExtensions.clj +0 -839
  173. package/compiler/ng_Compiler.clj +0 -49
  174. package/compiler/ng_CompilerGeneric.clj +0 -260
  175. package/compiler/ng_CompilerOrig.clj +0 -854
  176. package/compiler/ng_DictNode.clj +0 -346
  177. package/compiler/ng_DictNode2.clj +0 -316
  178. package/compiler/ng_Execute.clj +0 -138
  179. package/compiler/ng_Execute1.clj +0 -129
  180. package/compiler/ng_FlowWork.clj +0 -3951
  181. package/compiler/ng_LiveCompiler.clj +0 -1109
  182. package/compiler/ng_RagnerJavaScriptClassWriter.clj +0 -402
  183. package/compiler/ng_RangerActiveOperators.clj +0 -86
  184. package/compiler/ng_RangerAppClassDesc.clj +0 -400
  185. package/compiler/ng_RangerAppEnums.clj +0 -86
  186. package/compiler/ng_RangerAppFunctionDesc.clj +0 -127
  187. package/compiler/ng_RangerAppMessages.clj +0 -15
  188. package/compiler/ng_RangerAppOperatorDesc.clj +0 -20
  189. package/compiler/ng_RangerAppParamDesc.clj +0 -388
  190. package/compiler/ng_RangerAppWriterContext.clj +0 -1793
  191. package/compiler/ng_RangerArgMatch.clj +0 -638
  192. package/compiler/ng_RangerCSharpClassWriter.clj +0 -484
  193. package/compiler/ng_RangerCppClassWriter.clj +0 -1023
  194. package/compiler/ng_RangerDocGenerator.clj +0 -305
  195. package/compiler/ng_RangerFlowParser.clj +0 -4992
  196. package/compiler/ng_RangerFlowParserOrig.clj +0 -4002
  197. package/compiler/ng_RangerGenericClassWriter.clj +0 -573
  198. package/compiler/ng_RangerGolangClassWriter.clj +0 -1766
  199. package/compiler/ng_RangerImmutableExtension.clj +0 -77
  200. package/compiler/ng_RangerJava7ClassWriter.clj +0 -961
  201. package/compiler/ng_RangerJavaScriptClassWriter.clj +0 -1042
  202. package/compiler/ng_RangerKotlinClassWriter.clj +0 -372
  203. package/compiler/ng_RangerLanguageWriters.clj +0 -14
  204. package/compiler/ng_RangerLispParser.clj +0 -873
  205. package/compiler/ng_RangerPHPClassWriter.clj +0 -643
  206. package/compiler/ng_RangerPlugin.clj +0 -41
  207. package/compiler/ng_RangerRangerClassWriter.clj +0 -357
  208. package/compiler/ng_RangerRustClassWriter.clj +0 -420
  209. package/compiler/ng_RangerScalaClassWriter.clj +0 -818
  210. package/compiler/ng_RangerSerializeClass.clj +0 -502
  211. package/compiler/ng_RangerServiceBuilder.clj +0 -63
  212. package/compiler/ng_RangerSwift3ClassWriter.clj +0 -809
  213. package/compiler/ng_RangerSwiftClassWriter.clj +0 -0
  214. package/compiler/ng_RangerTypeClass.clj +0 -45
  215. package/compiler/ng_SourceParser.clj +0 -241
  216. package/compiler/ng_SourceParser2.clj +0 -214
  217. package/compiler/ng_WebPageWriter.clj +0 -39
  218. package/compiler/ng_jsonParser.clj +0 -340
  219. package/compiler/ng_p_test.clj +0 -1711
  220. package/compiler/ng_parser.clj +0 -911
  221. package/compiler/ng_parser2.clj +0 -735
  222. package/compiler/ng_parser2_backup.clj +0 -1679
  223. package/compiler/ng_parser_backup.clj +0 -886
  224. package/compiler/ng_parser_ok.clj +0 -1718
  225. package/compiler/ng_parser_ok2.clj +0 -1717
  226. package/compiler/ng_parser_std_match.clj +0 -687
  227. package/compiler/ng_parser_std_match2.clj +0 -1012
  228. package/compiler/ng_parser_v2.clj +0 -1251
  229. package/compiler/ng_ui.clj +0 -403
  230. package/compiler/ng_ui_test.clj +0 -18
  231. package/compiler/ng_writer.clj +0 -338
  232. package/compiler/ng_xmlParser.clj +0 -472
  233. package/compiler/ng_xmlParser2.clj +0 -317
  234. package/compiler/ng_xmlParser3.clj +0 -251
  235. package/compiler/opdoc.bat +0 -4
  236. package/compiler/operators.md +0 -290
  237. package/compiler/p.bat +0 -4
  238. package/compiler/package.json +0 -10
  239. package/compiler/pcmd.bat +0 -4
  240. package/compiler/pcmd2.bat +0 -3
  241. package/compiler/plaintext_plugin.clj +0 -69
  242. package/compiler/plugin.bat +0 -19
  243. package/compiler/plugin2.bat +0 -4
  244. package/compiler/plugin_app.bat +0 -3
  245. package/compiler/plugin_apps.clj +0 -27
  246. package/compiler/plugins.bat +0 -10
  247. package/compiler/reveal_plugin.clj +0 -409
  248. package/compiler/simplePlugin.clj +0 -780
  249. package/compiler/t.bat +0 -3
  250. package/compiler/test_any.clj +0 -43
  251. package/compiler/test_call.clj +0 -141
  252. package/compiler/test_chain.clj +0 -79
  253. package/compiler/test_json.clj +0 -10
  254. package/compiler/test_lambda.clj +0 -153
  255. package/compiler/test_pcmd.clj +0 -32
  256. package/compiler/test_pcmd2.clj +0 -29
  257. package/compiler/test_plugin.clj +0 -237
  258. package/compiler/test_readfile.clj +0 -13
  259. package/compiler/test_reveal.clj +0 -19
  260. package/compiler/test_slides.clj +0 -312
  261. package/compiler/test_types.clj +0 -143
  262. package/compiler/test_types2.clj +0 -49
  263. package/compiler/test_types3.clj +0 -53
  264. package/compiler/test_var.clj +0 -40
  265. package/compiler/tonpm.bat +0 -14
  266. package/compiler/tonpm2.bat +0 -12
  267. package/compiler/ui_plugin.clj +0 -507
  268. package/compiler/ui_plugin2.clj +0 -427
  269. package/compiler/update-git.bat +0 -3
  270. package/compiler/vcomp.bat +0 -4
  271. package/compiler/viewbuilder_Android.clj +0 -176
  272. package/compiler/viewbuilder_Web.clj +0 -105
  273. package/dist/bin/api.js +0 -32422
  274. package/dist/bin/api.js.map +0 -1
  275. package/dist/bin/compiler.d.ts +0 -1638
  276. package/dist/bin/compiler.js +0 -32444
  277. package/dist/bin/compiler.js.map +0 -1
  278. package/examples/3D/bin/test_3d.js +0 -329
  279. package/examples/3D/test_3d.clj +0 -385
  280. package/examples/EVGColor/EVGColor.clj +0 -310
  281. package/examples/EVGColor/EVGColorContext.clj +0 -176
  282. package/examples/EVGColor/bin/EVGColor.js +0 -286
  283. package/examples/EVGColor/bin/minimized.js +0 -286
  284. package/examples/SVGPath/SVGPath.clj +0 -625
  285. package/examples/SVGPath/Vec2.clj +0 -103
  286. package/examples/SVGPath/bin/SVGPath.cpp +0 -887
  287. package/examples/SVGPath/bin/SVGPath.js +0 -682
  288. package/examples/SVGPath/bin/minimized.js +0 -578
  289. package/examples/SVGPath/bin/variant.hpp +0 -2416
  290. package/examples/minification/Vec2.clj +0 -103
  291. package/examples/minification/bin/minified.js +0 -44
  292. package/examples/minification/bin/test.js +0 -117
  293. package/examples/minification/test.clj +0 -13
  294. package/fiddle/VirtualCompiler.js +0 -23495
  295. package/fiddle/browser_editor.js +0 -13240
  296. package/fiddle/compileEnv.js +0 -1
  297. package/fiddle/compileEnv.json +0 -1
  298. package/fiddle/lang_data.js +0 -1
  299. package/index.html +0 -18
  300. package/native/httpd/HttpTester.clj +0 -33
  301. package/native/httpd/RangerWebService.clj +0 -81
  302. package/operators.md +0 -290
  303. package/tsconfig.json +0 -29
  304. package/versions/cpp/compiler.cpp +0 -15032
  305. package/versions/es6/compiler.js +0 -12860
  306. package/versions/go/compiler.go +0 -21338
  307. package/versions/java/AfterCodeNode.java +0 -4
  308. package/versions/java/ClassJoinPoint.java +0 -6
  309. package/versions/java/CodeFile.java +0 -42
  310. package/versions/java/CodeFileSystem.java +0 -72
  311. package/versions/java/CodeNode.java +0 -807
  312. package/versions/java/CodeSlice.java +0 -13
  313. package/versions/java/CodeWriter.java +0 -185
  314. package/versions/java/ColorConsole.java +0 -8
  315. package/versions/java/CompilerInterface.java +0 -213
  316. package/versions/java/DictNode.java +0 -353
  317. package/versions/java/LiveCompiler.java +0 -772
  318. package/versions/java/NodeEvalState.java +0 -24
  319. package/versions/java/OpFindResult.java +0 -6
  320. package/versions/java/RangerAppArrayValue.java +0 -7
  321. package/versions/java/RangerAppClassDesc.java +0 -217
  322. package/versions/java/RangerAppEnum.java +0 -14
  323. package/versions/java/RangerAppFunctionDesc.java +0 -20
  324. package/versions/java/RangerAppHashValue.java +0 -11
  325. package/versions/java/RangerAppInterfaceImpl.java +0 -6
  326. package/versions/java/RangerAppMethodVariants.java +0 -6
  327. package/versions/java/RangerAppParamDesc.java +0 -321
  328. package/versions/java/RangerAppTodo.java +0 -6
  329. package/versions/java/RangerAppValue.java +0 -10
  330. package/versions/java/RangerAppWriterContext.java +0 -800
  331. package/versions/java/RangerArgMatch.java +0 -317
  332. package/versions/java/RangerBackReference.java +0 -7
  333. package/versions/java/RangerCSharpClassWriter.java +0 -287
  334. package/versions/java/RangerCompilerMessage.java +0 -9
  335. package/versions/java/RangerCppClassWriter.java +0 -725
  336. package/versions/java/RangerFlowParser.java +0 -2142
  337. package/versions/java/RangerGenericClassWriter.java +0 -367
  338. package/versions/java/RangerGolangClassWriter.java +0 -1379
  339. package/versions/java/RangerJava7ClassWriter.java +0 -652
  340. package/versions/java/RangerJavaScriptClassWriter.java +0 -305
  341. package/versions/java/RangerKotlinClassWriter.java +0 -380
  342. package/versions/java/RangerLispParser.java +0 -845
  343. package/versions/java/RangerNodeValue.java +0 -9
  344. package/versions/java/RangerPHPClassWriter.java +0 -527
  345. package/versions/java/RangerParamEventHandler.java +0 -6
  346. package/versions/java/RangerParamEventList.java +0 -5
  347. package/versions/java/RangerParamEventMap.java +0 -27
  348. package/versions/java/RangerRangerClassWriter.java +0 -268
  349. package/versions/java/RangerRefForce.java +0 -7
  350. package/versions/java/RangerScalaClassWriter.java +0 -365
  351. package/versions/java/RangerSerializeClass.java +0 -148
  352. package/versions/java/RangerSwift3ClassWriter.java +0 -548
  353. package/versions/java/RangerTypeClass.java +0 -17
  354. package/versions/java/SourceCode.java +0 -65
  355. package/versions/php/compiler.php +0 -13830
  356. package/versions/swift3/compiler.swift +0 -12542
  357. /package/{lib/ACEEditor.clj → dist/lib/ACEEditor.rgr} +0 -0
  358. /package/{lib/SQL.clj → dist/lib/SQL.rgr} +0 -0
  359. /package/{lib/ServiceLib.clj → dist/lib/ServiceLib.rgr} +0 -0
  360. /package/{lib/Time.clj → dist/lib/Time.rgr} +0 -0
  361. /package/{lib/TypedArrays.clj → dist/lib/TypedArrays.rgr} +0 -0
  362. /package/{lib/WebLib.clj → dist/lib/WebLib.rgr} +0 -0
  363. /package/{lib/WebServerLib.clj → dist/lib/WebServerLib.rgr} +0 -0
package/compiler/index.js DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var RangerAppTodo=function RangerAppTodo(){_classCallCheck(this,RangerAppTodo);this.description="";};var RangerCompilerMessage=function RangerCompilerMessage(){_classCallCheck(this,RangerCompilerMessage);this.error_level=0;/** note: unused */this.code_line=0;/** note: unused */this.fileName="";/** note: unused */this.description="";};var RangerParamEventHandler=function(){function RangerParamEventHandler(){_classCallCheck(this,RangerParamEventHandler);}_createClass(RangerParamEventHandler,[{key:"callback",value:function callback(param){}}]);return RangerParamEventHandler;}();var RangerParamEventList=function RangerParamEventList(){_classCallCheck(this,RangerParamEventList);this.list=[];};var RangerParamEventMap=function(){function RangerParamEventMap(){_classCallCheck(this,RangerParamEventMap);this.events={};}_createClass(RangerParamEventMap,[{key:"clearAllEvents",value:function clearAllEvents(){}},{key:"addEvent",value:function addEvent(name,e){if((typeof this.events[name]!="undefined"&&this.events.hasOwnProperty(name))==false){this.events[name]=new RangerParamEventList();}var list=this.events[name];list.list.push(e);}},{key:"fireEvent",value:function fireEvent(name,from){if(typeof this.events[name]!="undefined"&&this.events.hasOwnProperty(name)){var list=this.events[name];for(var i=0;i<list.list.length;i++){var ev=list.list[i];ev.callback(from);};}}}]);return RangerParamEventMap;}();var RangerAppArrayValue=function RangerAppArrayValue(){_classCallCheck(this,RangerAppArrayValue);this.value_type=0;/** note: unused */this.value_type_name="";/** note: unused */this.values=[];/** note: unused */};var RangerAppHashValue=function RangerAppHashValue(){_classCallCheck(this,RangerAppHashValue);this.value_type=0;/** note: unused */this.key_type_name="";/** note: unused */this.value_type_name="";/** note: unused */this.s_values={};/** note: unused */this.i_values={};/** note: unused */this.b_values={};/** note: unused */this.d_values={};/** note: unused */};var RangerAppValue=function RangerAppValue(){_classCallCheck(this,RangerAppValue);this.double_value=0.0;/** note: unused */this.string_value="";/** note: unused */this.int_value=0;/** note: unused */this.boolean_value=false;/** note: unused */};var RangerRefForce=function RangerRefForce(){_classCallCheck(this,RangerRefForce);this.strength=0;this.lifetime=1;};var RangerAppParamDesc=function(){function RangerAppParamDesc(){_classCallCheck(this,RangerAppParamDesc);this.name="";this.compiledName="";this.debugString="";this.is_register=false;this.ref_cnt=0;this.init_cnt=0;this.set_cnt=0;this.return_cnt=0;this.prop_assign_cnt=0;/** note: unused */this.value_type=0;this.has_default=false;/** note: unused */this.isThis=false;/** note: unused */this.is_immutable=false;this.is_static=false;/** note: unused */this.ownerHistory=[];this.varType=0;this.refType=0;this.initRefType=0;this.paramIndex=0;/** note: unused */this.is_optional=false;this.is_mutating=false;/** note: unused */this.is_set=false;/** note: unused */this.is_class_variable=false;this.is_captured=false;this.description="";/** note: unused */this.git_doc="";this.has_events=false;}_createClass(RangerAppParamDesc,[{key:"addEvent",value:function addEvent(name,e){if(this.has_events==false){this.eMap=new RangerParamEventMap();this.has_events=true;}this.eMap.addEvent(name,e);}},{key:"changeStrength",value:function changeStrength(newStrength,lifeTime,changer){var entry=new RangerRefForce();entry.strength=newStrength;entry.lifetime=lifeTime;entry.changer=changer;this.ownerHistory.push(entry);}},{key:"isFunction",value:function isFunction(){return false;}},{key:"isProperty",value:function isProperty(){return true;}},{key:"isClass",value:function isClass(){return false;}},{key:"isOperator",value:function isOperator(){return false;}},{key:"doesInherit",value:function doesInherit(){return false;}},{key:"isAllocatedType",value:function isAllocatedType(){if(typeof this.nameNode!=="undefined"&&this.nameNode!=null){if(this.nameNode.eval_type!=0){if(this.nameNode.eval_type==6){return true;}if(this.nameNode.eval_type==7){return true;}if(this.nameNode.eval_type==15||this.nameNode.eval_type==14||this.nameNode.eval_type==4||this.nameNode.eval_type==2||this.nameNode.eval_type==5||this.nameNode.eval_type==3){return false;}if(this.nameNode.eval_type==13){return false;}return true;}if(this.nameNode.eval_type==13){return false;}if(this.nameNode.value_type==11){if(false==this.nameNode.isPrimitive()){return true;}}if(this.nameNode.value_type==6){return true;}if(this.nameNode.value_type==7){return true;}}return false;}},{key:"moveRefTo",value:function moveRefTo(nodeToMove,target,ctx){if(nodeToMove.ref_change_done){return;}if(false==target.isAllocatedType()){return;}if(false==this.isAllocatedType()){return;}nodeToMove.ref_change_done=true;var other_s=target.getStrength();var my_s=this.getStrength();var my_lifetime=this.getLifetime();var other_lifetime=target.getLifetime();var a_lives=false;var b_lives=false;var tmp_var=this.nameNode.hasFlag("temp");if(typeof target.nameNode!=="undefined"&&target.nameNode!=null){if(target.nameNode.hasFlag("lives")){my_lifetime=2;b_lives=true;}}if(typeof this.nameNode!=="undefined"&&this.nameNode!=null){if(this.nameNode.hasFlag("lives")){my_lifetime=2;a_lives=true;}}if(other_s>0){if(my_s==1){var lt=my_lifetime;if(other_lifetime>my_lifetime){lt=other_lifetime;}this.changeStrength(0,lt,nodeToMove);}else{if(my_s==0){if(tmp_var==false){ctx.addError(nodeToMove,"Can not move a weak reference to a strong target.");console.log("can not move weak refs to strong target:");this.debugRefChanges();}}else{ctx.addError(nodeToMove,"Can not move immutable reference to a strong target, evald type "+this.nameNode.eval_type_name);}}}else{if(a_lives||b_lives){}else{if(my_lifetime<other_lifetime&&this.return_cnt==0){if(this.nameNode.hasFlag("returnvalue")==false){ctx.addError(nodeToMove,"Can not create a weak reference if target has longer lifetime than original, current lifetime == "+my_lifetime);}}}}}},{key:"originalStrength",value:function originalStrength(){var __len=this.ownerHistory.length;if(__len>0){var firstEntry=this.ownerHistory[0];return firstEntry.strength;}return 1;}},{key:"getLifetime",value:function getLifetime(){var __len=this.ownerHistory.length;if(__len>0){var lastEntry=this.ownerHistory[__len-1];return lastEntry.lifetime;}return 1;}},{key:"getStrength",value:function getStrength(){var __len=this.ownerHistory.length;if(__len>0){var lastEntry=this.ownerHistory[__len-1];return lastEntry.strength;}return 1;}},{key:"debugRefChanges",value:function debugRefChanges(){console.log("variable "+this.name+" ref history : ");for(var i=0;i<this.ownerHistory.length;i++){var h=this.ownerHistory[i];console.log(" => change to "+h.strength+" by "+h.changer.getCode());};}},{key:"pointsToObject",value:function pointsToObject(ctx){if(typeof this.nameNode!=="undefined"&&this.nameNode!=null){var is_primitive=false;switch(this.nameNode.array_type){case"string":is_primitive=true;break;case"int":is_primitive=true;break;case"boolean":is_primitive=true;break;case"double":is_primitive=true;break;};if(is_primitive){return false;}if(this.nameNode.value_type==6||this.nameNode.value_type==7){var is_object=true;switch(this.nameNode.array_type){case"string":is_object=false;break;case"int":is_object=false;break;case"boolean":is_object=false;break;case"double":is_object=false;break;};return is_object;}if(this.nameNode.value_type==11){var is_object_1=true;switch(this.nameNode.type_name){case"string":is_object_1=false;break;case"int":is_object_1=false;break;case"boolean":is_object_1=false;break;case"double":is_object_1=false;break;};if(ctx.isEnumDefined(this.nameNode.type_name)){return false;}return is_object_1;}}return false;}},{key:"isObject",value:function isObject(){if(typeof this.nameNode!=="undefined"&&this.nameNode!=null){if(this.nameNode.value_type==11){if(false==this.nameNode.isPrimitive()){return true;}}}return false;}},{key:"isArray",value:function isArray(){if(typeof this.nameNode!=="undefined"&&this.nameNode!=null){if(this.nameNode.value_type==6){return true;}}return false;}},{key:"isHash",value:function isHash(){if(typeof this.nameNode!=="undefined"&&this.nameNode!=null){if(this.nameNode.value_type==7){return true;}}return false;}},{key:"isPrimitive",value:function isPrimitive(){if(typeof this.nameNode!=="undefined"&&this.nameNode!=null){return this.nameNode.isPrimitive();}return false;}},{key:"getRefTypeName",value:function getRefTypeName(){switch(this.refType){case 0:return"NoType";case 1:return"Weak";};return"";}},{key:"getVarTypeName",value:function getVarTypeName(){switch(this.refType){case 0:return"NoType";case 1:return"This";};return"";}},{key:"getTypeName",value:function getTypeName(){var s=this.nameNode.type_name;return s;}}]);return RangerAppParamDesc;}();var RangerAppFunctionDesc=function(_RangerAppParamDesc){_inherits(RangerAppFunctionDesc,_RangerAppParamDesc);function RangerAppFunctionDesc(){_classCallCheck(this,RangerAppFunctionDesc);var _this=_possibleConstructorReturn(this,(RangerAppFunctionDesc.__proto__||Object.getPrototypeOf(RangerAppFunctionDesc)).call(this));_this.name="";_this.ref_cnt=0;_this.params=[];_this.is_method=false;/** note: unused */_this.is_static=false;_this.is_lambda=false;_this.is_unsed=false;_this.is_called_from_main=false;_this.refType=0;_this.call_graph_done=false;/** note: unused */_this.isCalling=[];_this.isCalledBy=[];_this.isUsingClasses=[];_this.isDirectlyUsingClasses=[];_this.myLambdas=[];return _this;}_createClass(RangerAppFunctionDesc,[{key:"addCallTo",value:function addCallTo(m){if(m.isCalledBy.indexOf(this)<0){m.isCalledBy.push(this);this.isCalling.push(m);}}},{key:"addIndirectClassUsage",value:function addIndirectClassUsage(m,ctx){var _this2=this;if(this.isUsingClasses.indexOf(m)<0){this.isUsingClasses.push(m);operatorsOf.forEach_2(m.variables,function(item,index){var nn=item.nameNode;if(ctx.isDefinedClass(nn.type_name)){var cc=ctx.findClass(nn.type_name);_this2.addIndirectClassUsage(cc,ctx);}if(ctx.isDefinedClass(nn.array_type)){var cc_1=ctx.findClass(nn.array_type);_this2.addIndirectClassUsage(cc_1,ctx);}});}}},{key:"addClassUsage",value:function addClassUsage(m,ctx){var _this3=this;if(this.isUsingClasses.indexOf(m)<0){this.isUsingClasses.push(m);this.isDirectlyUsingClasses.push(m);operatorsOf.forEach_2(m.variables,function(item,index){var nn=item.nameNode;if(ctx.isDefinedClass(nn.type_name)){var cc=ctx.findClass(nn.type_name);_this3.addIndirectClassUsage(cc,ctx);}if(ctx.isDefinedClass(nn.array_type)){var cc_1=ctx.findClass(nn.array_type);_this3.addIndirectClassUsage(cc_1,ctx);}});}else{if(this.isDirectlyUsingClasses.indexOf(m)<0){this.isDirectlyUsingClasses.push(m);}}}},{key:"forOtherVersions",value:function forOtherVersions(ctx,cb){if(typeof this.container_class==="undefined"){return;}var f=this;var cc=f.container_class;operatorsOf.forEach_3(cc.extends_classes,function(item,index){var otherClass=ctx.findClass(item);if(otherClass.hasMethod(f.name)){var m=otherClass.findMethod(f.name);cb(m);}});var root=ctx.getRoot();operatorsOf_4.forEach_5(root.definedClasses,function(item,index){if(item.extends_classes.indexOf(f.container_class.name)>=0){if(item.hasMethod(f.name)){var m_1=item.findMethod(f.name);cb(m_1);}}});}},{key:"isFunction",value:function isFunction(){return true;}},{key:"isClass",value:function isClass(){return false;}},{key:"isProperty",value:function isProperty(){return false;}}]);return RangerAppFunctionDesc;}(RangerAppParamDesc);var RangerAppMethodVariants=function RangerAppMethodVariants(){_classCallCheck(this,RangerAppMethodVariants);this.name="";/** note: unused */this.variants=[];};var RangerAppInterfaceImpl=function RangerAppInterfaceImpl(){_classCallCheck(this,RangerAppInterfaceImpl);this.name="";/** note: unused */};var RangerTraitParams=function RangerTraitParams(){_classCallCheck(this,RangerTraitParams);this.param_names=[];this.values={};};var RangerAppClassDesc=function(_RangerAppParamDesc2){_inherits(RangerAppClassDesc,_RangerAppParamDesc2);function RangerAppClassDesc(){_classCallCheck(this,RangerAppClassDesc);var _this4=_possibleConstructorReturn(this,(RangerAppClassDesc.__proto__||Object.getPrototypeOf(RangerAppClassDesc)).call(this));_this4.name="";_this4.is_system=false;_this4.compiledName="";_this4.systemNames={};_this4.systemNodes={};_this4.is_interface=false;_this4.is_system_union=false;_this4.is_template=false;_this4.is_serialized=false;_this4.is_trait=false;_this4.is_operator_class=false;_this4.is_generic_instance=false;_this4.is_union=false;_this4.is_used_by_main=false;_this4.is_not_used=false;/** note: unused */_this4.variables=[];_this4.capturedLocals=[];_this4.methods=[];_this4.defined_methods={};_this4.static_methods=[];_this4.defined_static_methods={};_this4.defined_variants=[];_this4.method_variants={};_this4.has_constructor=false;_this4.has_destructor=false;/** note: unused */_this4.extends_classes=[];_this4.implements_interfaces=[];_this4.consumes_traits=[];_this4.trait_params={};_this4.is_union_of=[];_this4.contr_writers=[];/** note: unused */_this4.is_inherited=false;return _this4;}_createClass(RangerAppClassDesc,[{key:"isClass",value:function isClass(){return true;}},{key:"isProperty",value:function isProperty(){return false;}},{key:"doesInherit",value:function doesInherit(){return this.is_inherited;}},{key:"isNormalClass",value:function isNormalClass(){var special=this.is_operator_class||this.is_trait||this.is_system||this.is_generic_instance||this.is_system_union||this.is_union;return special==false;}},{key:"hasTrait",value:function hasTrait(class_name,ctx){var res=void 0;for(var i=0;i<this.consumes_traits.length;i++){var c_name=this.consumes_traits[i];var c=ctx.findClass(c_name);if(c_name==class_name){res=c;return res;}};return res;}},{key:"isSameOrParentClass",value:function isSameOrParentClass(class_name,ctx){if(ctx.isPrimitiveType(class_name)){if(this.is_union_of.indexOf(class_name)>=0){return true;}return false;}if(class_name==this.name){return true;}if(this.extends_classes.indexOf(class_name)>=0){return true;}if(this.consumes_traits.indexOf(class_name)>=0){return true;}if(this.implements_interfaces.indexOf(class_name)>=0){return true;}if(this.is_union_of.indexOf(class_name)>=0){return true;}for(var i=0;i<this.extends_classes.length;i++){var c_name=this.extends_classes[i];var c=ctx.findClass(c_name);if(c.isSameOrParentClass(class_name,ctx)){return true;}};for(var i_1=0;i_1<this.consumes_traits.length;i_1++){var c_name_1=this.consumes_traits[i_1];var c_1=ctx.findClass(c_name_1);if(c_1.isSameOrParentClass(class_name,ctx)){return true;}};for(var i_2=0;i_2<this.implements_interfaces.length;i_2++){var i_name=this.implements_interfaces[i_2];var c_2=ctx.findClass(i_name);if(c_2.isSameOrParentClass(class_name,ctx)){return true;}};for(var i_3=0;i_3<this.is_union_of.length;i_3++){var i_name_1=this.is_union_of[i_3];if(ctx.isDefinedClass(i_name_1)){var c_3=ctx.findClass(i_name_1);if(c_3.isSameOrParentClass(class_name,ctx)){return true;}}else{}};return false;}},{key:"hasOwnMethod",value:function hasOwnMethod(m_name){if(typeof this.defined_methods[m_name]!="undefined"&&this.defined_methods.hasOwnProperty(m_name)){return true;}return false;}},{key:"hasMethod",value:function hasMethod(m_name){if(typeof this.defined_methods[m_name]!="undefined"&&this.defined_methods.hasOwnProperty(m_name)){return true;}for(var i=0;i<this.extends_classes.length;i++){var cname=this.extends_classes[i];var cDesc=this.ctx.findClass(cname);if(cDesc.hasMethod(m_name)){return cDesc.hasMethod(m_name);}};return false;}},{key:"findMethod",value:function findMethod(f_name){var res=void 0;var vNames=Object.keys(this.method_variants);for(var i=0;i<vNames.length;i++){var mname=vNames[i];if(mname==f_name){var list=this.method_variants[mname];res=list.variants[0];return res;}};for(var i_1=0;i_1<this.extends_classes.length;i_1++){var cname=this.extends_classes[i_1];var cDesc=this.ctx.findClass(cname);if(cDesc.hasMethod(f_name)){return cDesc.findMethod(f_name);}};return res;}},{key:"hasStaticMethod",value:function hasStaticMethod(m_name){return typeof this.defined_static_methods[m_name]!="undefined"&&this.defined_static_methods.hasOwnProperty(m_name);}},{key:"findStaticMethod",value:function findStaticMethod(f_name){var e=void 0;for(var i=0;i<this.static_methods.length;i++){var m=this.static_methods[i];if(m.name==f_name){e=m;return e;}};for(var i_1=0;i_1<this.extends_classes.length;i_1++){var cname=this.extends_classes[i_1];var cDesc=this.ctx.findClass(cname);if(cDesc.hasStaticMethod(f_name)){return cDesc.findStaticMethod(f_name);}};return e;}},{key:"findVariable",value:function findVariable(f_name){var e=void 0;for(var i=0;i<this.variables.length;i++){var m=this.variables[i];if(m.name==f_name){e=m;return e;}};for(var i_1=0;i_1<this.extends_classes.length;i_1++){var cname=this.extends_classes[i_1];var cDesc=this.ctx.findClass(cname);return cDesc.findVariable(f_name);};return e;}},{key:"addParentClass",value:function addParentClass(p_name){this.extends_classes.push(p_name);}},{key:"createVariable",value:function createVariable(node,ctx,wr){try{var parser=ctx.getParser();var s=node.getVRefAt(1);var vDef=node.children[1];var p=new RangerAppParamDesc();if(vDef.has_type_annotation){parser.CheckTypeAnnotationOf(vDef,ctx,wr);}if(s!=ctx.transformWord(s)){}var currC=this;if(currC.is_immutable){vDef.setFlag("weak");if(vDef.value_type==6){var initNode=node.newExpressionNode();initNode.push(node.newVRefNode("new"));var tDef=node.newVRefNode("Vector");var vAnn=node.newExpressionNode();vAnn.push(node.newVRefNode(vDef.array_type));tDef.has_vref_annotation=true;tDef.vref_annotation=vAnn;initNode.push(tDef);node.children[2]=initNode;vDef.value_type=11;vDef.type_name="Vector";var tAnn=node.newExpressionNode();tAnn.push(node.newVRefNode(vDef.array_type));vDef.has_type_annotation=true;vDef.type_annotation=tAnn;parser.CheckTypeAnnotationOf(vDef,ctx,wr);parser.CheckVRefTypeAnnotationOf(tDef,ctx,wr);}if(vDef.value_type==7){var initNode_1=node.newExpressionNode();initNode_1.push(node.newVRefNode("new"));var tDef_1=node.newVRefNode("Map");var vAnn_1=node.newExpressionNode();vAnn_1.push(node.newVRefNode(vDef.key_type));vAnn_1.push(node.newVRefNode(vDef.array_type));tDef_1.has_vref_annotation=true;tDef_1.vref_annotation=vAnn_1;initNode_1.push(tDef_1);node.children[2]=initNode_1;vDef.value_type=11;vDef.type_name="Map";var tAnn_1=node.newExpressionNode();tAnn_1.push(node.newVRefNode(vDef.key_type));tAnn_1.push(node.newVRefNode(vDef.array_type));vDef.has_type_annotation=true;vDef.type_annotation=tAnn_1;parser.CheckTypeAnnotationOf(vDef,ctx,wr);parser.CheckVRefTypeAnnotationOf(tDef_1,ctx,wr);}}p.name=s;p.value_type=vDef.value_type;p.node=node;p.is_class_variable=true;p.varType=8;p.node=node;p.nameNode=vDef;vDef.hasParamDesc=true;vDef.ownParamDesc=p;vDef.paramDesc=p;node.hasParamDesc=true;node.paramDesc=p;if(vDef.hasFlag("weak")){p.changeStrength(0,2,p.nameNode);}else{p.changeStrength(2,2,p.nameNode);}if(node.children.length>2){p.set_cnt=1;p.init_cnt=1;p.def_value=node.children[2];p.is_optional=false;if(p.def_value.value_type==4){vDef.type_name="string";}if(p.def_value.value_type==3){vDef.type_name="int";}if(p.def_value.value_type==2){vDef.type_name="double";}if(p.def_value.value_type==5){vDef.type_name="boolean";}var valueNode=node.children[2];if(valueNode.children.length>0){var fc=valueNode.getFirst();if(fc.vref=="new"){var second=valueNode.getSecond();parser.CheckVRefTypeAnnotationOf(second,ctx,wr);}}}else{p.is_optional=true;if(false==(vDef.value_type==6||vDef.value_type==7)){vDef.setFlag("optional");}}currC.addVariable(p);var subCtx=currC.ctx;subCtx.defineVariable(p.name,p);p.is_class_variable=true;}catch(e){ctx.addError(node,"Could not add variable into class "+this.name);}}},{key:"addVariable",value:function addVariable(desc){this.variables.push(desc);desc.propertyClass=this;}},{key:"addMethod",value:function addMethod(desc){this.defined_methods[desc.name]=true;this.methods.push(desc);var defVs=this.method_variants[desc.name];if(typeof defVs==="undefined"){var new_v=new RangerAppMethodVariants();this.method_variants[desc.name]=new_v;this.defined_variants.push(desc.name);new_v.variants.push(desc);}else{var new_v2=defVs;new_v2.variants.push(desc);}desc.container_class=this;}},{key:"addStaticMethod",value:function addStaticMethod(desc){this.defined_static_methods[desc.name]=true;this.static_methods.push(desc);if(desc.name=="main"){var nn=desc.nameNode;if(nn.has_vref_annotation==false){var vAnn=this.node.newExpressionNode();nn.has_vref_annotation=true;nn.vref_annotation=vAnn;}nn.vref_annotation.children.push(nn.vref_annotation.newVRefNode("main"));}}}]);return RangerAppClassDesc;}(RangerAppParamDesc);var RangerTypeClass=function RangerTypeClass(){_classCallCheck(this,RangerTypeClass);this.name="";this.compiledName="";/** note: unused */this.value_type=0;this.implements_traits=[];/** note: unused */this.implements_interfaces=[];/** note: unused */this.extends_classes=[];/** note: unused */this.belongs_to_union=[];/** note: unused */this.is_empty=false;this.is_primitive=false;this.is_mutable=false;/** note: unused */this.is_optional=false;/** note: unused */this.is_union=false;/** note: unused */this.is_trait=false;/** note: unused */this.is_class=false;this.is_system=false;this.is_interface=false;/** note: unused */this.is_generic=false;/** note: unused */this.is_lambda=false;};var SourceCode=function(){function SourceCode(code_str){_classCallCheck(this,SourceCode);this.code="";this.lines=[];this.filename="";this.code=code_str;this.lines=code_str.split("\n");}_createClass(SourceCode,[{key:"getLineString",value:function getLineString(line_index){if(this.lines.length>line_index){return this.lines[line_index];}return"";}},{key:"getLine",value:function getLine(sp){var cnt=0;for(var i=0;i<this.lines.length;i++){var str=this.lines[i];cnt=cnt+(str.length+1);if(cnt>sp){return i;}};return-1;}},{key:"getColumnStr",value:function getColumnStr(sp){var cnt=0;var last_col=0;for(var i=0;i<this.lines.length;i++){var str=this.lines[i];cnt=cnt+(str.length+1);if(cnt>sp){var ll=sp-last_col;var ss="";while(ll>0){ss=ss+" ";ll=ll-1;};return ss;}last_col=cnt;};return"";}},{key:"getColumn",value:function getColumn(sp){var cnt=0;var last_col=0;for(var i=0;i<this.lines.length;i++){var str=this.lines[i];cnt=cnt+(str.length+1);if(cnt>sp){return sp-last_col;}last_col=cnt;};return-1;}}]);return SourceCode;}();var CodeNodeLiteral=function(){function CodeNodeLiteral(){_classCallCheck(this,CodeNodeLiteral);this.expression=false;this.vref="";this.is_block_node=false;this.type_name="";this.key_type="";this.array_type="";this.ns=[];this.has_vref_annotation=false;this.has_type_annotation=false;this.parsed_type=0;this.value_type=0;this.double_value=0.0;this.string_value="";this.int_value=0;this.boolean_value=false;this.props={};this.prop_keys=[];this.comments=[];this.children=[];this.attrs=[];}_createClass(CodeNodeLiteral,[{key:"toDictionary",value:function toDictionary(){var res={};try{res["expression"]=this.expression;res["vref"]=this.vref;res["is_block_node"]=this.is_block_node;res["type_name"]=this.type_name;res["key_type"]=this.key_type;res["array_type"]=this.array_type;var values=[];for(var i=0;i<this.ns.length;i++){var item=this.ns[i];values.push(item);};res["ns"]=values;res["has_vref_annotation"]=this.has_vref_annotation;if(typeof this.vref_annotation!=="undefined"&&this.vref_annotation!=null){res["vref_annotation"]=this.vref_annotation.toDictionary();}res["has_type_annotation"]=this.has_type_annotation;if(typeof this.type_annotation!=="undefined"&&this.type_annotation!=null){res["type_annotation"]=this.type_annotation.toDictionary();}res["parsed_type"]=this.parsed_type;res["value_type"]=this.value_type;res["double_value"]=this.double_value;res["string_value"]=this.string_value;res["int_value"]=this.int_value;res["boolean_value"]=this.boolean_value;if(typeof this.expression_value!=="undefined"&&this.expression_value!=null){res["expression_value"]=this.expression_value.toDictionary();}var values_1={};var keyList=Object.keys(this.props);for(var index=0;index<keyList.length;index++){var keyname=keyList[index];var item_1=this.props[keyname];var obj=item_1.toDictionary();values_1[keyname]=obj;};res["props"]=values_1;var values_2=[];for(var i_1=0;i_1<this.prop_keys.length;i_1++){var item_2=this.prop_keys[i_1];values_2.push(item_2);};res["prop_keys"]=values_2;var values_3=[];for(var i_2=0;i_2<this.comments.length;i_2++){var item_3=this.comments[i_2];var obj_1=item_3.toDictionary();values_3.push(obj_1);};res["comments"]=values_3;var values_4=[];for(var i_3=0;i_3<this.children.length;i_3++){var item_4=this.children[i_3];var obj_2=item_4.toDictionary();values_4.push(obj_2);};res["children"]=values_4;var values_5=[];for(var i_4=0;i_4<this.attrs.length;i_4++){var item_5=this.attrs[i_4];var obj_3=item_5.toDictionary();values_5.push(obj_3);};res["attrs"]=values_5;}catch(e){}return res;}}]);return CodeNodeLiteral;}();CodeNodeLiteral.fromDictionary=function(dict){var obj=new CodeNodeLiteral();try{var v=typeof dict["expression"]==="undefined"?undefined:dict["expression"];if(typeof v!=="undefined"&&v!=null){obj.expression=v;}var v_1=typeof dict["vref"]!="string"?undefined:dict["vref"];if(typeof v_1!=="undefined"&&v_1!=null){obj.vref=v_1;}var v_2=typeof dict["is_block_node"]==="undefined"?undefined:dict["is_block_node"];if(typeof v_2!=="undefined"&&v_2!=null){obj.is_block_node=v_2;}var v_3=typeof dict["type_name"]!="string"?undefined:dict["type_name"];if(typeof v_3!=="undefined"&&v_3!=null){obj.type_name=v_3;}var v_4=typeof dict["key_type"]!="string"?undefined:dict["key_type"];if(typeof v_4!=="undefined"&&v_4!=null){obj.key_type=v_4;}var v_5=typeof dict["array_type"]!="string"?undefined:dict["array_type"];if(typeof v_5!=="undefined"&&v_5!=null){obj.array_type=v_5;}var values=dict["ns"]instanceof Array?dict["ns"]:undefined;if(typeof values!=="undefined"&&values!=null){var arr=values;operatorsOfJSONArrayObject_39.forEach_40(arr,function(item,index){if(typeof item==='string')/* union case for string */{var oo=item;obj.ns.push(oo);};});}var v_6=typeof dict["has_vref_annotation"]==="undefined"?undefined:dict["has_vref_annotation"];if(typeof v_6!=="undefined"&&v_6!=null){obj.has_vref_annotation=v_6;}var theValue=dict["vref_annotation"]instanceof Object?dict["vref_annotation"]:undefined;if(typeof theValue!=="undefined"&&theValue!=null){var newObj=CodeNodeLiteral.fromDictionary(theValue);obj.vref_annotation=newObj;}var v_7=typeof dict["has_type_annotation"]==="undefined"?undefined:dict["has_type_annotation"];if(typeof v_7!=="undefined"&&v_7!=null){obj.has_type_annotation=v_7;}var theValue_1=dict["type_annotation"]instanceof Object?dict["type_annotation"]:undefined;if(typeof theValue_1!=="undefined"&&theValue_1!=null){var newObj_1=CodeNodeLiteral.fromDictionary(theValue_1);obj.type_annotation=newObj_1;}var v_8=isNaN(parseFloat(dict["double_value"]))?undefined:parseFloat(dict["double_value"]);if(typeof v_8!=="undefined"&&v_8!=null){obj.double_value=v_8;}var v_9=typeof dict["string_value"]!="string"?undefined:dict["string_value"];if(typeof v_9!=="undefined"&&v_9!=null){obj.string_value=v_9;}var v_10=isNaN(parseInt(dict["int_value"]))?undefined:parseInt(dict["int_value"]);if(typeof v_10!=="undefined"&&v_10!=null){obj.int_value=v_10;}var v_11=typeof dict["boolean_value"]==="undefined"?undefined:dict["boolean_value"];if(typeof v_11!=="undefined"&&v_11!=null){obj.boolean_value=v_11;}var theValue_2=dict["expression_value"]instanceof Object?dict["expression_value"]:undefined;if(typeof theValue_2!=="undefined"&&theValue_2!=null){var newObj_2=CodeNodeLiteral.fromDictionary(theValue_2);obj.expression_value=newObj_2;}var values_1=dict["props"]instanceof Object?dict["props"]:undefined;if(typeof values_1!=="undefined"&&values_1!=null){var theObjprops=values_1;var obj_keys=Object.keys(theObjprops);operatorsOf.forEach_3(obj_keys,function(item,index){var theValue_3=theObjprops[item]instanceof Object?theObjprops[item]:undefined;if(typeof theValue_3!=="undefined"&&theValue_3!=null){var newObj_3=CodeNodeLiteral.fromDictionary(theValue_3);obj.props[item]=newObj_3;}});}var values_2=dict["prop_keys"]instanceof Array?dict["prop_keys"]:undefined;if(typeof values_2!=="undefined"&&values_2!=null){var arr_1=values_2;operatorsOf_39.forEach_40(arr_1,function(item,index){if(typeof item==='string')/* union case for string */{var oo_1=item;obj.prop_keys.push(oo_1);};});}var values_3=dict["comments"]instanceof Array?dict["comments"]:undefined;if(typeof values_3!=="undefined"&&values_3!=null){var arr_2=values_3;operatorsOf_39.forEach_40(arr_2,function(item,index){if(item instanceof Object)/* union case */{var oo_2=item;var newObj_4=CodeNodeLiteral.fromDictionary(oo_2);obj.comments.push(newObj_4);};});}var values_4=dict["children"]instanceof Array?dict["children"]:undefined;if(typeof values_4!=="undefined"&&values_4!=null){var arr_3=values_4;operatorsOf_39.forEach_40(arr_3,function(item,index){if(item instanceof Object)/* union case */{var oo_3=item;var newObj_5=CodeNodeLiteral.fromDictionary(oo_3);obj.children.push(newObj_5);};});}var values_5=dict["attrs"]instanceof Array?dict["attrs"]:undefined;if(typeof values_5!=="undefined"&&values_5!=null){var arr_4=values_5;operatorsOf_39.forEach_40(arr_4,function(item,index){if(item instanceof Object)/* union case */{var oo_4=item;var newObj_6=CodeNodeLiteral.fromDictionary(oo_4);obj.attrs.push(newObj_6);};});}}catch(e){}return obj;};var CodeNode=function(){function CodeNode(source,start,end){_classCallCheck(this,CodeNode);this.sp=0;this.ep=0;this.row=0;this.col=0;/** note: unused */this.has_operator=false;this.disabled_node=false;this.op_index=0;this.is_array_literal=false;this.is_system_class=false;this.is_plugin=false;this.is_direct_method_call=false;this.mutable_def=false;this.expression=false;this.vref="";this.is_block_node=false;this.infix_operator=false;this.infix_subnode=false;this.has_lambda=false;this.has_lambda_call=false;this.has_call=false;this.operator_pred=0;this.to_the_right=false;this.type_type="";this.type_name="";this.key_type="";this.array_type="";this.ns=[];this.has_vref_annotation=false;this.has_type_annotation=false;this.parsed_type=0;this.value_type=0;this.ref_type=0;this.ref_need_assign=0;/** note: unused */this.double_value=0.0;this.string_value="";this.int_value=0;this.boolean_value=false;this.props={};this.prop_keys=[];this.comments=[];this.children=[];this.attrs=[];this.appGUID="";this.register_name="";this.register_expressions=[];this.after_expression=[];/** note: unused */this.nsp=[];this.eval_type=0;this.eval_type_name="";this.eval_key_type="";this.eval_array_type="";this.flow_done=false;this.ref_change_done=false;this.didReturnAtIndex=-1;this.hasVarDef=false;this.hasClassDescription=false;this.hasNewOper=false;this.hasFnCall=false;this.hasParamDesc=false;this.is_part_of_chain=false;this.methodChain=[];this.register_set=false;this.reg_compiled_name="";this.tag="";this.sp=start;this.ep=end;this.code=source;}_createClass(CodeNode,[{key:"childCnt",value:function childCnt(){return this.children.length;}},{key:"getChild",value:function getChild(index){var res=void 0;if(index>=0&&this.children.length>index){res=this.children[index];}return res;}},{key:"chlen",value:function chlen(){return this.children.length;}},{key:"forTree",value:function forTree(callback){for(var i=0;i<this.children.length;i++){var ch=this.children[i];callback(ch,i);ch.forTree(callback);};}},{key:"parallelTree",value:function parallelTree(otherTree,callback){var left_cnt=this.children.length;var right_cnt=otherTree.children.length;var cnt=left_cnt<right_cnt?right_cnt:left_cnt;var i=0;while(i<cnt){var left=void 0;var right=void 0;if(i<left_cnt){left=this.children[i];}if(i<right_cnt){right=otherTree.children[i];}callback(left,right,i);if(typeof left!=="undefined"&&left!=null&&typeof right!=="undefined"&&right!=null){if(left.children.length>0){left.parallelTree(right,callback);}}i=i+1;};}},{key:"walkTreeUntil",value:function walkTreeUntil(callback){for(var i=0;i<this.children.length;i++){var ch=this.children[i];if(callback(ch,i)){ch.walkTreeUntil(callback);}};}},{key:"getParsedString",value:function getParsedString(){return this.code.code.substring(this.sp,this.ep);}},{key:"getFilename",value:function getFilename(){return this.code.filename;}},{key:"getFlag",value:function getFlag(flagName){var res=void 0;if(false==this.has_vref_annotation){return res;}for(var i=0;i<this.vref_annotation.children.length;i++){var ch=this.vref_annotation.children[i];if(ch.vref==flagName){res=ch;return res;}};return res;}},{key:"hasFlag",value:function hasFlag(flagName){if(false==this.has_vref_annotation){return false;}for(var i=0;i<this.vref_annotation.children.length;i++){var ch=this.vref_annotation.children[i];if(ch.vref==flagName){return true;}};return false;}},{key:"setFlag",value:function setFlag(flagName){if(false==this.has_vref_annotation){this.vref_annotation=new CodeNode(this.code,this.sp,this.ep);}if(this.hasFlag(flagName)){return;}var flag=new CodeNode(this.code,this.sp,this.ep);flag.vref=flagName;flag.value_type=11;flag.parsed_type=flag.value_type;this.vref_annotation.children.push(flag);this.has_vref_annotation=true;}},{key:"getTypeInformationString",value:function getTypeInformationString(){var s="";if(this.vref.length>0){s=s+"<vref:"+this.vref+">";}else{s=s+"<no.vref>";}if(this.type_name.length>0){s=s+"<type_name:"+this.type_name+">";}else{s=s+"<no.type_name>";}if(this.array_type.length>0){s=s+"<array_type:"+this.array_type+">";}else{s=s+"<no.array_type>";}if(this.key_type.length>0){s=s+"<key_type:"+this.key_type+">";}else{s=s+"<no.key_type>";}switch(this.value_type){case 5:s=s+"<value_type=Boolean>";break;case 4:s=s+"<value_type=String>";break;};return s;}},{key:"getLine",value:function getLine(){return this.code.getLine(this.sp);}},{key:"getLineString",value:function getLineString(line_index){return this.code.getLineString(line_index);}},{key:"getColStartString",value:function getColStartString(){return this.code.getColumnStr(this.sp);}},{key:"getLineAsString",value:function getLineAsString(){var idx=this.getLine();var line_name_idx=idx+1;return this.getFilename()+", line "+line_name_idx+" : "+this.code.getLineString(idx);}},{key:"getSource",value:function getSource(){if(this.ep>this.sp){var start=this.sp;var end=this.ep;return this.code.code.substring(start,end);}return"";}},{key:"getPositionalString",value:function getPositionalString(){if(this.ep>this.sp&&this.ep-this.sp<50){var start=this.sp;var end=this.ep;start=start-100;end=end+50;if(start<0){start=0;}if(end>=this.code.code.length){end=this.code.code.length-1;}return this.code.code.substring(start,end);}return"";}},{key:"isPrimitive",value:function isPrimitive(){switch(this.value_type){case 2:return true;case 4:return true;case 3:return true;case 5:return true;case 14:return true;case 15:return true;case 13:return true;};return false;}},{key:"getFirst",value:function getFirst(){return this.children[0];}},{key:"getSecond",value:function getSecond(){return this.children[1];}},{key:"getThird",value:function getThird(){return this.children[2];}},{key:"isSecondExpr",value:function isSecondExpr(){if(this.children.length>1){var second=this.children[1];if(second.expression){return true;}}return false;}},{key:"getOperator",value:function getOperator(){var s="";if(this.children.length>0){var fc=this.children[0];if(fc.value_type==11){return fc.vref;}}return s;}},{key:"getVRefAt",value:function getVRefAt(idx){var s="";if(this.children.length>idx){var fc=this.children[idx];return fc.vref;}return s;}},{key:"getStringAt",value:function getStringAt(idx){var s="";if(this.children.length>idx){var fc=this.children[idx];if(fc.value_type==4){return fc.string_value;}}return s;}},{key:"hasExpressionProperty",value:function hasExpressionProperty(name){var ann=this.props[name];if(typeof ann!=="undefined"&&ann!=null){return ann.expression;}return false;}},{key:"getExpressionProperty",value:function getExpressionProperty(name){var ann=this.props[name];if(typeof ann!=="undefined"&&ann!=null){return ann;}return ann;}},{key:"hasIntProperty",value:function hasIntProperty(name){var ann=this.props[name];if(typeof ann!=="undefined"&&ann!=null){var fc=ann.children[0];if(fc.value_type==3){return true;}}return false;}},{key:"getIntProperty",value:function getIntProperty(name){var ann=this.props[name];if(typeof ann!=="undefined"&&ann!=null){var fc=ann.children[0];if(fc.value_type==3){return fc.int_value;}}return 0;}},{key:"hasDoubleProperty",value:function hasDoubleProperty(name){var ann=this.props[name];if(typeof ann!=="undefined"&&ann!=null){if(ann.value_type==2){return true;}}return false;}},{key:"getDoubleProperty",value:function getDoubleProperty(name){var ann=this.props[name];if(typeof ann!=="undefined"&&ann!=null){if(ann.value_type==2){return ann.double_value;}}return 0.0;}},{key:"setStringProperty",value:function setStringProperty(name,value){this.props[name]=CodeNode.newStr(value);}},{key:"hasStringProperty",value:function hasStringProperty(name){if(false==(typeof this.props[name]!="undefined"&&this.props.hasOwnProperty(name))){return false;}var ann=this.props[name];if(typeof ann!=="undefined"&&ann!=null){if(ann.value_type==4){return true;}}return false;}},{key:"getStringProperty",value:function getStringProperty(name){var ann=this.props[name];if(typeof ann!=="undefined"&&ann!=null){if(ann.value_type==4){return ann.string_value;}}return"";}},{key:"hasBooleanProperty",value:function hasBooleanProperty(name){var ann=this.props[name];if(typeof ann!=="undefined"&&ann!=null){if(ann.value_type==5){return true;}}return false;}},{key:"getBooleanProperty",value:function getBooleanProperty(name){var ann=this.props[name];if(typeof ann!=="undefined"&&ann!=null){if(ann.value_type==5){return ann.boolean_value;}}return false;}},{key:"isFirstTypeVref",value:function isFirstTypeVref(vrefName){if(this.children.length>0){var fc=this.children[0];if(fc.value_type==11){return true;}}return false;}},{key:"isFirstVref",value:function isFirstVref(vrefName){if(this.children.length>0){var fc=this.children[0];if(fc.vref==vrefName){return true;}}return false;}},{key:"getString",value:function getString(){return this.code.code.substring(this.sp,this.ep);}},{key:"walk",value:function walk(){switch(this.value_type){case 2:console.log("Double : "+this.double_value);break;case 4:console.log("String : "+this.string_value);break;};if(this.expression){console.log("(");}else{console.log(this.code.code.substring(this.sp,this.ep));}for(var i=0;i<this.children.length;i++){var item=this.children[i];item.walk();};if(this.expression){console.log(")");}}},{key:"isParsedAsPrimitive",value:function isParsedAsPrimitive(){return TTypes.isPrimitive(this.parsed_type);}},{key:"isPrimitiveType",value:function isPrimitiveType(){return TTypes.isPrimitive(TTypes.nameToValue(this.type_name));}},{key:"isAPrimitiveType",value:function isAPrimitiveType(){return TTypes.isPrimitive(TTypes.nameToValue(this.array_type));}},{key:"writeCode",value:function writeCode(wr){switch(this.value_type){case 2:wr.out(this.double_value.toString(),false);break;case 4:wr.out(String.fromCharCode(34)+this.string_value+String.fromCharCode(34),false);break;case 3:wr.out(""+this.int_value,false);break;case 5:if(this.boolean_value){wr.out("true",false);}else{wr.out("false",false);}break;case 11:wr.out(this.vref,false);if(this.type_name.length>0){wr.out(":"+this.type_name,false);}break;case 7:wr.out(this.vref,false);wr.out(":["+this.key_type+":"+this.array_type+"]",false);break;case 6:wr.out(this.vref,false);wr.out(":["+this.array_type+"]",false);break;case 17:wr.out("(fn--> ",false);for(var i=0;i<this.children.length;i++){var ch=this.children[i];ch.writeCode(wr);};wr.out(")",false);break;default:if(this.expression){wr.out("(",false);for(var i_1=0;i_1<this.children.length;i_1++){var ch_1=this.children[i_1];if(i_1>0){wr.out(" ",false);}ch_1.writeCode(wr);};wr.out(")",false);}else{if(this.is_block_node){wr.out("{",true);for(var i_2=0;i_2<this.children.length;i_2++){var ch_2=this.children[i_2];ch_2.writeCode(wr);};wr.out("}",true);}else{wr.out("<unknown>",false);wr.out("{",true);for(var i_3=0;i_3<this.children.length;i_3++){var ch_3=this.children[i_3];ch_3.writeCode(wr);};wr.out("}",true);}}break;};}},{key:"createChainTarget",value:function createChainTarget(){var chCnt=this.children.length;if(chCnt>2){var fc=this.getFirst();if(fc.vref=="def"){this.chainTarget=this.getThird();}if(fc.vref=="="){this.chainTarget=this.getThird();}}}},{key:"inferDefExpressionTypeFromValue",value:function inferDefExpressionTypeFromValue(node){var cn=node.children[1];var nodeValue=node.children[2];if(typeof cn.expression_value!=="undefined"&&cn.expression_value!=null){cn.value_type=17;cn.parsed_type=17;cn.has_vref_annotation=true;}if(nodeValue.eval_type==17){if(typeof nodeValue.expression_value!=="undefined"&&nodeValue.expression_value!=null){cn.expression_value=nodeValue.expression_value.copy();}else{if(typeof node.expression_value==="undefined"){var copyOf=nodeValue.rebuildWithType(new RangerArgMatch(),false);copyOf.children.pop();cn.expression_value=copyOf;}}cn.value_type=17;}}},{key:"inferDefTypeFromValue",value:function inferDefTypeFromValue(node){var cn=node.children[1];var nodeValue=node.children[2];cn.value_type=nodeValue.eval_type;cn.type_name=nodeValue.eval_type_name;cn.array_type=nodeValue.eval_array_type;cn.key_type=nodeValue.eval_key_type;if(nodeValue.eval_type==17){if(typeof nodeValue.expression_value!=="undefined"&&nodeValue.expression_value!=null){cn.expression_value=nodeValue.expression_value.copy();}else{if(typeof node.expression_value==="undefined"){var copyOf=nodeValue.rebuildWithType(new RangerArgMatch(),false);copyOf.children.pop();cn.expression_value=copyOf;}}cn.type_name="";}}},{key:"getCode",value:function getCode(){var wr=new CodeWriter();this.writeCode(wr);return wr.getCode();}},{key:"cleanNode",value:function cleanNode(){var cp=this;cp.evalTypeClass=undefined;cp.lambda_ctx=undefined;cp.nsp.length=0;cp.eval_type=0;cp.eval_type_name="";cp.eval_key_type="";cp.eval_array_type="";cp.eval_function=undefined;cp.flow_done=false;cp.ref_change_done=false;cp.eval_type_node=undefined;cp.didReturnAtIndex=-1;cp.hasVarDef=false;cp.hasClassDescription=false;cp.hasNewOper=false;cp.clDesc=undefined;cp.hasFnCall=false;cp.fnDesc=undefined;cp.hasParamDesc=false;cp.paramDesc=undefined;cp.ownParamDesc=undefined;cp.evalCtx=undefined;cp.evalState=undefined;cp.operator_node=undefined;cp.flow_ctx=undefined;cp.is_part_of_chain=false;cp.methodChain.length=0;cp.chainTarget=undefined;cp.tag="";cp.has_operator=false;cp.disabled_node=false;cp.op_index=0;cp.is_array_literal=false;cp.is_system_class=false;cp.is_plugin=false;cp.mutable_def=false;cp.has_lambda=false;cp.has_lambda_call=false;cp.has_call=false;cp.type_type=this.type_type;cp.value_type=this.parsed_type;operatorsOf.forEach_6(cp.children,function(item,index){item.cleanNode();});}},{key:"cleanCopy",value:function cleanCopy(){var match=new RangerArgMatch();var cp=this.rebuildWithType(match,false);cp.cleanNode();return cp;}},{key:"copy",value:function copy(){var match=new RangerArgMatch();var cp=this.rebuildWithType(match,false);cp.register_expressions=operatorsOf.clone_30(this.register_expressions);return cp;}},{key:"clone",value:function clone(){var match=new RangerArgMatch();var cp=this.cloneWithType(match,false);return cp;}},{key:"push",value:function push(node){this.children.push(node);node.parent=this;}},{key:"add",value:function add(node){this.children.push(node);node.parent=this;}},{key:"newVRefNode",value:function newVRefNode(name){var newNode=new CodeNode(this.code,this.sp,this.ep);newNode.vref=name;newNode.value_type=11;newNode.parsed_type=11;newNode.ns=name.split(".");return newNode;}},{key:"newStringNode",value:function newStringNode(name){var newNode=new CodeNode(this.code,this.sp,this.ep);newNode.string_value=name;newNode.value_type=4;newNode.parsed_type=11;return newNode;}},{key:"newExpressionNode",value:function newExpressionNode(){var newNode=new CodeNode(this.code,this.sp,this.ep);newNode.expression=true;return newNode;}},{key:"getChildrenFrom",value:function getChildrenFrom(otherNode){this.children.length=0;for(var i=0;i<otherNode.children.length;i++){var ch=otherNode.children[i];this.push(ch);ch.parent=this;};otherNode.children.length=0;}},{key:"cloneWithType",value:function cloneWithType(match,changeVref){var newNode=new CodeNode(this.code,this.sp,this.ep);if(typeof match.nodes[this.vref]!="undefined"&&match.nodes.hasOwnProperty(this.vref)){var ast=match.nodes[this.vref];return ast.rebuildWithType(match,true);}newNode.has_operator=this.has_operator;newNode.op_index=this.op_index;newNode.mutable_def=this.mutable_def;newNode.expression=this.expression;newNode.register_name=this.register_name;newNode.operator_node=this.operator_node;if(changeVref){newNode.vref=match.getTypeName(this.vref);}else{newNode.vref=this.vref;}newNode.is_block_node=this.is_block_node;newNode.type_type=match.getTypeName(this.type_type);newNode.type_name=match.getTypeName(this.type_name);newNode.key_type=match.getTypeName(this.key_type);newNode.array_type=match.getTypeName(this.array_type);newNode.value_type=this.value_type;newNode.parsed_type=this.parsed_type;newNode.copyEvalResFrom(this);newNode.register_expressions=operatorsOf.clone_30(this.register_expressions);if(this.has_vref_annotation){newNode.has_vref_annotation=true;var ann=this.vref_annotation;newNode.vref_annotation=ann.cloneWithType(match,true);}if(this.has_type_annotation){newNode.has_type_annotation=true;var t_ann=this.type_annotation;newNode.type_annotation=t_ann.cloneWithType(match,true);}for(var i=0;i<this.ns.length;i++){var n=this.ns[i];if(changeVref){var new_ns=match.getTypeName(n);newNode.ns.push(new_ns);}else{newNode.vref=this.vref;newNode.ns.push(n);}};switch(this.value_type){case 2:newNode.double_value=this.double_value;break;case 4:newNode.string_value=this.string_value;break;case 3:newNode.int_value=this.int_value;break;case 5:newNode.boolean_value=this.boolean_value;break;case 17:if(typeof this.expression_value!=="undefined"&&this.expression_value!=null){newNode.expression_value=this.expression_value.cloneWithType(match,changeVref);}break;};for(var i_1=0;i_1<this.prop_keys.length;i_1++){var key=this.prop_keys[i_1];newNode.prop_keys.push(key);var oldp=this.props[key];var np=oldp.cloneWithType(match,changeVref);newNode.props[key]=np;};for(var i_2=0;i_2<this.children.length;i_2++){var ch=this.children[i_2];var newCh=ch.cloneWithType(match,changeVref);newCh.parent=newNode;newNode.children.push(newCh);};return newNode;}},{key:"rebuildWithType",value:function rebuildWithType(match,changeVref){var newNode=new CodeNode(this.code,this.sp,this.ep);if(typeof match.nodes[this.vref]!="undefined"&&match.nodes.hasOwnProperty(this.vref)){var ast=match.nodes[this.vref];return ast.rebuildWithType(match,true);}newNode.has_operator=this.has_operator;newNode.op_index=this.op_index;newNode.mutable_def=this.mutable_def;newNode.expression=this.expression;newNode.register_name=this.register_name;newNode.reg_compiled_name=this.reg_compiled_name;newNode.operator_node=this.operator_node;if(changeVref){newNode.vref=match.getTypeName(this.vref);}else{newNode.vref=this.vref;}newNode.is_block_node=this.is_block_node;newNode.type_type=match.getTypeName(this.type_type);newNode.type_name=match.getTypeName(this.type_name);newNode.key_type=match.getTypeName(this.key_type);newNode.array_type=match.getTypeName(this.array_type);newNode.value_type=this.value_type;newNode.parsed_type=this.parsed_type;if(this.has_vref_annotation){newNode.has_vref_annotation=true;var ann=this.vref_annotation;newNode.vref_annotation=ann.rebuildWithType(match,true);}if(this.has_type_annotation){newNode.has_type_annotation=true;var t_ann=this.type_annotation;newNode.type_annotation=t_ann.rebuildWithType(match,true);}for(var i=0;i<this.ns.length;i++){var n=this.ns[i];if(changeVref){var new_ns=match.getTypeName(n);newNode.ns.push(new_ns);}else{newNode.vref=this.vref;newNode.ns.push(n);}};switch(this.value_type){case 2:newNode.double_value=this.double_value;break;case 4:newNode.string_value=this.string_value;break;case 3:newNode.int_value=this.int_value;break;case 5:newNode.boolean_value=this.boolean_value;break;case 17:if(typeof this.expression_value!=="undefined"&&this.expression_value!=null){newNode.expression_value=this.expression_value.rebuildWithType(match,changeVref);}break;};for(var i_1=0;i_1<this.prop_keys.length;i_1++){var key=this.prop_keys[i_1];newNode.prop_keys.push(key);var oldp=this.props[key];var np=oldp.rebuildWithType(match,changeVref);newNode.props[key]=np;};for(var i_2=0;i_2<this.children.length;i_2++){var ch=this.children[i_2];var newCh=ch.rebuildWithType(match,changeVref);newCh.parent=newNode;newNode.children.push(newCh);};return newNode;}},{key:"buildTypeSignatureUsingMatch",value:function buildTypeSignatureUsingMatch(match){var tName=match.getTypeName(this.type_name);switch(tName){case"double":return"double";case"string":return"string";case"integer":return"int";case"boolean":return"boolean";};var s="";if(this.value_type==6){s=s+"[";s=s+match.getTypeName(this.array_type);s=s+this.getTypeSignatureWithMatch(match);s=s+"]";return s;}if(this.value_type==7){s=s+"[";s=s+match.getTypeName(this.key_type);s=s+":";s=s+match.getTypeName(this.array_type);s=s+this.getTypeSignatureWithMatch(match);s=s+"]";return s;}s=match.getTypeName(this.type_name);s=s+this.getVRefSignatureWithMatch(match);return s;}},{key:"buildTypeSignature",value:function buildTypeSignature(){if(TTypes.isPrimitive(this.value_type)){return TTypes.valueAsString(this.value_type);}var s="";if(this.value_type==6){s=s+"[";s=s+this.array_type;s=s+this.getTypeSignature();s=s+"]";return s;}if(this.value_type==7){s=s+"[";s=s+this.key_type;s=s+":";s=s+this.array_type;s=s+this.getTypeSignature();s=s+"]";return s;}if(this.value_type==17){var fnNode=this.expression_value.getFirst();var argNode=this.expression_value.getSecond();s=s+"(_:"+fnNode.buildTypeSignature();s=s+" ("+operatorsOf.map_31(argNode.children,function(item,index){return"_:"+item.buildTypeSignature();}).join(" ")+"))";return s;}s=this.type_name;return s;}},{key:"getVRefSignatureWithMatch",value:function getVRefSignatureWithMatch(match){if(this.has_vref_annotation){var nn=this.vref_annotation.rebuildWithType(match,true);return"@"+nn.getCode();}return"";}},{key:"getVRefSignature",value:function getVRefSignature(){if(this.has_vref_annotation){return"@"+this.vref_annotation.getCode();}return"";}},{key:"getTypeSignatureWithMatch",value:function getTypeSignatureWithMatch(match){if(this.has_type_annotation){var nn=this.type_annotation.rebuildWithType(match,true);return"@"+nn.getCode();}return"";}},{key:"getTypeSignature",value:function getTypeSignature(){if(this.has_type_annotation){return"@"+this.type_annotation.getCode();}return"";}},{key:"typeNameAsType",value:function typeNameAsType(ctx){if(this.value_type==17||this.eval_type==17){return 17;}var conv=TTypes.nameToValue(this.type_name);if(conv!=0){return conv;}if(true==this.expression){return 17;}if(this.value_type==11){if(ctx.isEnumDefined(this.type_name)){return 13;}if(ctx.isDefinedClass(this.type_name)){return 10;}}return this.value_type;}},{key:"copyEvalResFrom",value:function copyEvalResFrom(node){if(node.hasParamDesc){this.hasParamDesc=node.hasParamDesc;this.paramDesc=node.paramDesc;}if(typeof node.evalTypeClass!=="undefined"&&node.evalTypeClass!=null){this.evalTypeClass=node.evalTypeClass;}this.eval_type=node.eval_type;this.eval_type_name=node.eval_type_name;if(typeof node.operator_node!=="undefined"&&node.operator_node!=null){var nn=node.operator_node.children[1];if(nn.hasFlag("optional")){this.setFlag("optional");}if(nn.hasFlag("immutable")){this.setFlag("immutable");}}else{if(node.hasFlag("optional")){this.setFlag("optional");}if(node.hasFlag("immutable")){this.setFlag("immutable");}}if(node.value_type==7){this.eval_key_type=node.eval_key_type;this.eval_array_type=node.eval_array_type;this.eval_type=7;}if(node.value_type==6){this.eval_key_type=node.eval_key_type;this.eval_array_type=node.eval_array_type;this.eval_type=6;}if(node.value_type==17){this.eval_type=17;this.eval_function=node.eval_function;}}},{key:"defineNodeTypeTo",value:function defineNodeTypeTo(node,ctx){if(node.value_type==17||node.eval_type==17){return;}switch(this.type_name){case"double":node.value_type=2;node.eval_type=2;node.eval_type_name="double";break;case"int":node.value_type=3;node.eval_type=3;node.eval_type_name="int";break;case"char":node.value_type=14;node.eval_type=14;node.eval_type_name="char";break;case"charbuffer":node.value_type=15;node.eval_type=15;node.eval_type_name="charbuffer";break;case"string":node.value_type=4;node.eval_type=4;node.eval_type_name="string";break;case"boolean":node.value_type=5;node.eval_type=5;node.eval_type_name="string";break;default:if(true==this.expression){node.value_type=17;node.eval_type=17;node.expression=true;}if(this.value_type==6){node.value_type=6;node.eval_type=6;node.eval_type_name=this.type_name;node.eval_array_type=this.array_type;}if(this.value_type==7){node.value_type=7;node.eval_type=7;node.eval_type_name=this.type_name;node.eval_array_type=this.array_type;node.key_type=this.key_type;}if(this.value_type==13){node.value_type=13;node.eval_type=13;node.eval_type_name=this.type_name;}if(this.value_type==11){if(ctx.isEnumDefined(this.type_name)){node.value_type=13;node.eval_type=13;node.eval_type_name=this.type_name;}if(ctx.isDefinedClass(this.type_name)){node.value_type=10;node.eval_type=10;node.eval_type_name=this.type_name;}}break;};}},{key:"ifNoTypeSetToVoid",value:function ifNoTypeSetToVoid(){if(this.type_name.length==0&&this.key_type.length==0&&this.array_type.length==0){this.type_name="void";}}},{key:"ifNoTypeSetToEvalTypeOf",value:function ifNoTypeSetToEvalTypeOf(node){if(this.type_name.length==0&&this.key_type.length==0&&this.array_type.length==0){this.type_name=node.eval_type_name;this.array_type=node.eval_array_type;this.key_type=node.eval_key_type;this.value_type=node.eval_type;this.eval_type=node.eval_type;this.eval_type_name=node.eval_type_name;this.eval_array_type=node.eval_array_type;this.eval_key_type=node.eval_key_type;if(node.value_type==17){if(typeof this.expression_value==="undefined"){var copyOf=node.rebuildWithType(new RangerArgMatch(),false);copyOf.children.pop();this.expression_value=copyOf;}}return true;}return false;}}]);return CodeNode;}();CodeNode.vref1=function(name){var code=new SourceCode(name);var newNode=new CodeNode(code,0,name.length);newNode.vref=name;newNode.value_type=11;newNode.parsed_type=11;newNode.ns=name.split(".");return newNode;};CodeNode.vref2=function(name,typeName){var code=new SourceCode(name);var newNode=new CodeNode(code,0,name.length);newNode.vref=name;newNode.type_name=typeName;newNode.value_type=11;newNode.parsed_type=11;newNode.ns=name.split(".");return newNode;};CodeNode.newStr=function(name){var code=new SourceCode("");var newNode=new CodeNode(code,0,0);newNode.string_value=name;newNode.value_type=4;newNode.parsed_type=4;return newNode;};CodeNode.newBool=function(value){var code=new SourceCode("");var newNode=new CodeNode(code,0,0);newNode.boolean_value=value;newNode.value_type=5;newNode.parsed_type=5;return newNode;};CodeNode.newInt=function(value){var code=new SourceCode("");var newNode=new CodeNode(code,0,0);newNode.int_value=value;newNode.value_type=3;newNode.parsed_type=3;return newNode;};CodeNode.newDouble=function(value){var code=new SourceCode("");var newNode=new CodeNode(code,0,0);newNode.double_value=value;newNode.value_type=2;newNode.parsed_type=2;return newNode;};CodeNode.op=function(opName){var code=new SourceCode("");var newNode=new CodeNode(code,0,0);newNode.expression=true;var opNode=CodeNode.vref1(opName);newNode.children.push(opNode);return newNode;};CodeNode.op2=function(opName,param1){var code=new SourceCode("");var newNode=new CodeNode(code,0,0);newNode.expression=true;var opNode=CodeNode.vref1(opName);newNode.children.push(opNode);newNode.children.push(param1);return newNode;};CodeNode.op3=function(opName,list){var code=new SourceCode("");var newNode=new CodeNode(code,0,0);newNode.expression=true;var opNode=CodeNode.vref1(opName);newNode.children.push(opNode);for(var i=0;i<list.length;i++){var item=list[i];newNode.children.push(item);};return newNode;};CodeNode.fromList=function(list){var code=new SourceCode("");var newNode=new CodeNode(code,0,0);newNode.expression=true;for(var i=0;i<list.length;i++){var item=list[i];newNode.children.push(item);item.parent=newNode;};return newNode;};CodeNode.expressionNode=function(){var code=new SourceCode("");var newNode=new CodeNode(code,0,0);newNode.expression=true;return newNode;};CodeNode.blockNode=function(){var code=new SourceCode("");var newNode=new CodeNode(code,0,0);newNode.is_block_node=true;newNode.expression=true;return newNode;};CodeNode.blockFromList=function(list){var code=new SourceCode("");var newNode=new CodeNode(code,0,0);newNode.is_block_node=true;newNode.expression=true;for(var i=0;i<list.length;i++){var item=list[i];newNode.children.push(item);item.parent=newNode;};return newNode;};var TypeCounts=function TypeCounts(){_classCallCheck(this,TypeCounts);this.b_counted=false;this.interface_cnt=0;this.operator_cnt=0;this.immutable_cnt=0;this.register_cnt=0;};var RangerNodeValue=function RangerNodeValue(){_classCallCheck(this,RangerNodeValue);};var RangerBackReference=function RangerBackReference(){_classCallCheck(this,RangerBackReference);};var RangerAppEnum=function(){function RangerAppEnum(){_classCallCheck(this,RangerAppEnum);this.name="";/** note: unused */this.cnt=0;this.values={};}_createClass(RangerAppEnum,[{key:"add",value:function add(n){this.values[n]=this.cnt;this.cnt=this.cnt+1;}}]);return RangerAppEnum;}();var OpFindResult=function OpFindResult(){_classCallCheck(this,OpFindResult);this.did_find=false;/** note: unused */};var RangerOperatorList=function RangerOperatorList(){_classCallCheck(this,RangerOperatorList);this.items=[];};var RangerNodeList=function RangerNodeList(){_classCallCheck(this,RangerNodeList);this.items=[];};var RangerRegisteredPlugin=function RangerRegisteredPlugin(){_classCallCheck(this,RangerRegisteredPlugin);this.name="";this.features=[];};var RangerAppWriterContext=function(){function RangerAppWriterContext(){_classCallCheck(this,RangerAppWriterContext);this.op_list={};this.intRootCounter=1;/** note: unused */this.targetLangName="";this.defined_imports=[];/** note: unused */this.already_imported={};this.is_function=false;this.class_level_context=false;this.function_level_context=false;this.in_main=false;this.is_block=false;/** note: unused */this.is_lambda=false;this.is_capturing=false;this.is_catch_block=false;this.is_try_block=false;this.captured_variables=[];this.has_block_exited=false;/** note: unused */this.in_expression=false;/** note: unused */this.expr_stack=[];this.expr_restart=false;this.expr_restart_block=false;this.in_method=false;/** note: unused */this.method_stack=[];this.typeNames=[];/** note: unused */this.typeClasses={};this.in_class=false;this.in_static_method=false;this.thisName="this";this.definedEnums={};this.definedInterfaces={};/** note: unused */this.definedInterfaceList=[];/** note: unused */this.definedClasses={};this.definedClassList=[];this.definedTasks={};/** note: unused */this.templateClassNodes={};this.templateClassList=[];this.classSignatures={};this.classToSignature={};this.templateClasses={};/** note: unused */this.classStaticWriters={};this.localVariables={};this.localVarNames=[];this.contextFlags={};this.settings={};this.compilerFlags={};this.compilerSettings={};this.parserErrors=[];this.compilerErrors=[];this.compilerMessages=[];this.compilerLog={};/** note: unused */this.todoList=[];this.definedMacro={};/** note: unused */this.defCounts={};this.refTransform={};this.staticClassBodies=[];this.pluginSpecificOperators={};this.viewClassBody={};this.appPages={};this.appServices={};this.opNs=[];this.langFilePath="";/** note: unused */this.libraryPaths=[];this.outputPath="";/** note: unused */this.counters=new TypeCounts();this.pluginNodes={};this.typedNodes={};this.registered_plugins=[];this.opFnsList={};this.rootFile="--not-defined--";}_createClass(RangerAppWriterContext,[{key:"addOpFn",value:function addOpFn(name,code){if(false==(typeof this.opFnsList[name]!="undefined"&&this.opFnsList.hasOwnProperty(name))){this.opFnsList[name]=CodeNode.expressionNode();}var rootNode=this.opFnsList[name];rootNode.children.push(code);}},{key:"getOpFns",value:function getOpFns(name){var rv=[];if(typeof this.opFnsList[name]!="undefined"&&this.opFnsList.hasOwnProperty(name)){var ol=this.opFnsList[name];operatorsOf.forEach_6(ol.children,function(item,index){var tmp=item;rv.push(tmp);});}if(typeof this.parent!=="undefined"&&this.parent!=null){var list2=this.parent.getOpFns(name);operatorsOf.forEach_6(list2,function(item,index){var tmp_1=item;rv.push(tmp_1);});}return rv;}},{key:"getLastBlockOp",value:function getLastBlockOp(){if(typeof this.lastBlockOp!=="undefined"&&this.lastBlockOp!=null){return this.lastBlockOp;}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.getLastBlockOp();}return this.lastBlockOp;}},{key:"removePluginOp",value:function removePluginOp(name){var root=this.getRoot();root.pluginSpecificOperators[name]=false;}},{key:"isPluginOp",value:function isPluginOp(node){if(node.children.length>0){var fc=node.getFirst();if(fc.ns.length>0){var firstNS=fc.ns[0];var root=this.getRoot();if(typeof root.pluginSpecificOperators[firstNS]!="undefined"&&root.pluginSpecificOperators.hasOwnProperty(firstNS)){return root.pluginSpecificOperators[firstNS];}}}return false;}},{key:"addPlugin",value:function addPlugin(p){var root=this.getRoot();root.registered_plugins.push(p);}},{key:"findPluginsFor",value:function findPluginsFor(featureName){var res=[];for(var i=0;i<this.registered_plugins.length;i++){var p=this.registered_plugins[i];if(p.features.indexOf(featureName)>=0){res.push(p.name);}};return res;}},{key:"addTypeClass",value:function addTypeClass(name){var root=this.getRoot();if(false==(typeof root.typeClasses[name]!="undefined"&&root.typeClasses.hasOwnProperty(name))){var newClass=new RangerTypeClass();root.typeClasses[name]=newClass;return newClass;}return root.typeClasses[name];}},{key:"getTypeClass",value:function getTypeClass(name){var root=this.getRoot();return root.typeClasses[name];}},{key:"getParser",value:function getParser(){if(typeof this.parser==="undefined"){if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.getParser();}}return this.parser;}},{key:"getCompiler",value:function getCompiler(){if(typeof this.compiler==="undefined"){if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.getCompiler();}}return this.compiler;}},{key:"getTypedNodes",value:function getTypedNodes(name){var root=this.getRoot();var res=[];var list=root.typedNodes[name];if(typeof list!=="undefined"&&list!=null){operatorsOf.forEach_6(list.items,function(item,index){var tmp=item;res.push(tmp);});}return res;}},{key:"addTypedNode",value:function addTypedNode(name,op){var root=this.getRoot();if(typeof root.typedNodes[name]!="undefined"&&root.typedNodes.hasOwnProperty(name)){var orig_list=root.typedNodes[name];orig_list.items.push(op);}else{var new_list=new RangerNodeList();new_list.items.push(op);root.typedNodes[name]=new_list;}}},{key:"getPluginNodes",value:function getPluginNodes(name){var root=this.getRoot();var res=[];var list=root.pluginNodes[name];if(typeof list!=="undefined"&&list!=null){operatorsOf.forEach_6(list.items,function(item,index){var tmp=item;res.push(tmp);});}return res;}},{key:"addPluginNode",value:function addPluginNode(name,op){var root=this.getRoot();if(typeof root.pluginNodes[name]!="undefined"&&root.pluginNodes.hasOwnProperty(name)){var orig_list=root.pluginNodes[name];orig_list.items.push(op);}else{var new_list=new RangerNodeList();new_list.items.push(op);root.pluginNodes[name]=new_list;}}},{key:"addOperator",value:function addOperator(op){var root=this.getRoot();if(op.name.length>0){if(typeof root.op_list[op.name]!="undefined"&&root.op_list.hasOwnProperty(op.name)){var orig_list=root.op_list[op.name];orig_list.items.push(op);}else{var new_list=new RangerOperatorList();new_list.items.push(op);root.op_list[op.name]=new_list;}}}},{key:"getAllOperators",value:function getAllOperators(){var root=this.getRoot();var res=[];operatorsOf_4.forEach_7(root.op_list,function(item,index){operatorsOf.forEach_8(item.items,function(item,index){var tmp=item;res.push(tmp);});});return res;}},{key:"getOperatorsOf",value:function getOperatorsOf(name){var root=this.getRoot();var res=[];var list=root.op_list[name];if(typeof list!=="undefined"&&list!=null){return operatorsOf.clone_9(list.items);}return res;}},{key:"initOpList",value:function initOpList(){var _this5=this;var root=this.getRoot();if(typeof root.operators!=="undefined"&&root.operators!=null){var op=root.operators;op.initializeOpCache();var foo=op.getOperators("+");if(foo.length>0){operatorsOf_4.forEach_10(op.opHash,function(item,index){var op_name=index;operatorsOf.forEach_6(item.list,function(item,index){/** unused: const fc = item.getFirst() **/var nameNode=item.getSecond();var args=item.getThird();var newOp=new RangerAppOperatorDesc();newOp.name=op_name;newOp.node=item;newOp.nameNode=nameNode;newOp.op_params=args.children;if(args.children.length>0){newOp.firstArg=args.children[0];}_this5.addOperator(newOp);});});}}else{}}},{key:"incLambdaCnt",value:function incLambdaCnt(){var root=this.getRoot();root.counters.interface_cnt=root.counters.interface_cnt+1;}},{key:"createNewRegName",value:function createNewRegName(){var root=this.findFunctionCtx();root.counters.register_cnt=root.counters.register_cnt+1;return"__REGx"+root.counters.register_cnt;}},{key:"isTryBlock",value:function isTryBlock(){if(this.expr_restart){return false;}if(this.is_try_block){return true;}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.isTryBlock();}return false;}},{key:"isCatchBlock",value:function isCatchBlock(){if(this.expr_restart){return false;}if(this.is_catch_block){return true;}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.isCatchBlock();}return false;}},{key:"pushAndCollectAst",value:function pushAndCollectAst(rootNode,wr){var myParser=new RangerFlowParser();myParser.CollectMethods(rootNode,this,wr);}},{key:"pushAndCompileAst",value:function pushAndCompileAst(rootNode,wr){var myParser=new RangerFlowParser();myParser.CollectMethods(rootNode,this,wr);myParser.StartWalk(rootNode,this,wr);}},{key:"pushAst",value:function pushAst(source_code,node,wr){var code=new SourceCode(source_code);code.filename="dynamically_generated";var parser_1=new RangerLispParser(code);parser_1.parse(this.hasCompilerFlag("no-op-transform"));if(typeof parser_1.rootNode!="undefined"){var root=parser_1.rootNode;node.children.push(root);}}},{key:"pushAndCollectCode",value:function pushAndCollectCode(source_code,wr){var code=new SourceCode(source_code);code.filename="dynamically_generated";var parser_1=new RangerLispParser(code);parser_1.parse(this.hasCompilerFlag("no-op-transform"));if(typeof parser_1.rootNode!="undefined"){var root=parser_1.rootNode;var myParser=new RangerFlowParser();var rootCtx=this.getRoot();myParser.CollectMethods(root,rootCtx,wr);}}},{key:"pushCode",value:function pushCode(source_code,wr){var code=new SourceCode(source_code);code.filename="dynamically_generated";var parser_1=new RangerLispParser(code);parser_1.parse(this.hasCompilerFlag("no-op-transform"));if(typeof parser_1.rootNode!="undefined"){var root=parser_1.rootNode;var myParser=new RangerFlowParser();var rootCtx=this.getRoot();myParser.CollectMethods(root,rootCtx,wr);myParser.StartWalk(root,rootCtx,wr);}}},{key:"addViewClassBody",value:function addViewClassBody(name,classDef){var root=this.getRoot();root.viewClassBody[name]=classDef;}},{key:"addPage",value:function addPage(name,classDef){var root=this.getRoot();root.appPages[name]=classDef;}},{key:"addService",value:function addService(name,classDef){var root=this.getRoot();root.appServices[name]=classDef;}},{key:"getViewClass",value:function getViewClass(s_name){var res=void 0;if(typeof this.viewClassBody[s_name]!="undefined"&&this.viewClassBody.hasOwnProperty(s_name)){res=this.viewClassBody[s_name];return res;}if(typeof this.parent==="undefined"){return res;}return this.parent.getViewClass(s_name);}},{key:"addOpNs",value:function addOpNs(n){this.opNs.push(n);}},{key:"removeOpNs",value:function removeOpNs(n){var idx=this.opNs.indexOf(n);if(idx>=0){this.opNs.splice(idx,1).pop();}}},{key:"inLambda",value:function inLambda(){if(this.is_lambda){return true;}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.inLambda();}return false;}},{key:"writeContextVars",value:function writeContextVars(wr){var _this6=this;operatorsOf_4.forEach_11(this.localVariables,function(item,index){wr.out("def "+index+":",false);if(typeof item.nameNode!=="undefined"&&item.nameNode!=null){var r=new RangerRangerClassWriter();r.writeTypeDef(item.nameNode,_this6,wr);}wr.out("("+item.compiledName+")",false);wr.out("",true);});}},{key:"writeContextInfo",value:function writeContextInfo(wr){var cList=[];var c=this;cList.push(c);while(typeof c.parent!=="undefined"&&c.parent!=null){c=c.parent;cList.push(c);};var idx=cList.length;var cnt=idx;while(idx>0){idx=idx-1;wr.out("{",true);wr.indent(1);var cc=cList[idx];cc.writeContextVars(wr);};while(cnt>0){wr.indent(-1);wr.out("}",true);cnt=cnt-1;};}},{key:"getContextInfo",value:function getContextInfo(){var wr=new CodeWriter();this.writeContextInfo(wr);return wr.getCode();}},{key:"isCapturing",value:function isCapturing(){if(this.is_capturing){return true;}if(typeof this.parent!="undefined"){return this.parent.isCapturing();}return false;}},{key:"forkWithOps",value:function forkWithOps(opNode){var ops=this.getOperatorDef();var new_ops=ops.fork(opNode);var new_ctx=this.fork();new_ctx.operators=new_ops;return new_ctx;}},{key:"getOperatorDef",value:function getOperatorDef(){if(typeof this.operators!=="undefined"&&this.operators!=null){return this.operators;}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.getOperatorDef();}var nothingFound=new RangerActiveOperators();return nothingFound;}},{key:"getOperators",value:function getOperators(name){var _this7=this;var root=this.getRoot();var cc=this;var opNamespace=[];if(this.opNs.length>0){for(var i=0;i<this.opNs.length;i++){var nsName=this.opNs[i];opNamespace.push(nsName);};}while(typeof cc.parent!=="undefined"&&cc.parent!=null){cc=cc.parent;if(cc.opNs.length>0){for(var i_1=0;i_1<cc.opNs.length;i_1++){var nsName_1=cc.opNs[i_1];opNamespace.push(nsName_1);};}};if(typeof root.operators!=="undefined"&&root.operators!=null){var ss;var ns_op;var ppn;var _ret=function(){var op=root.operators;var listOfOps=[];var handled={};for(var i_2=0;i_2<opNamespace.length;i_2++){ss=opNamespace[i_2];if(typeof handled[ss]!="undefined"&&handled.hasOwnProperty(ss)){continue;}handled[ss]=true;var nsOps=op.getOperators(ss+"."+name);for(var i_3=0;i_3<nsOps.length;i_3++){ns_op=nsOps[i_3];listOfOps.push(ns_op);};};var plainOps=op.getOperators(name);for(var i_4=0;i_4<plainOps.length;i_4++){ppn=plainOps[i_4];listOfOps.push(ppn);};var cc_2=void 0;cc_2=_this7;while(typeof cc_2!=="undefined"&&cc_2!=null){if(typeof cc_2.operatorFunction!=="undefined"&&cc_2.operatorFunction!=null){var opFn=cc_2.operatorFunction;var suggestedOp=opFn(name);operatorsOf.forEach_6(suggestedOp.children,function(item,index){listOfOps.splice(0,0,item.copy());});}cc_2=cc_2.parent;};return{v:listOfOps};}();if((typeof _ret==="undefined"?"undefined":_typeof(_ret))==="object")return _ret.v;}var nothingFound=[];return nothingFound;}},{key:"isLocalToCapture",value:function isLocalToCapture(name){if(typeof this.localVariables[name]!="undefined"&&this.localVariables.hasOwnProperty(name)){return true;}if(this.is_capturing){return false;}if(typeof this.parent!="undefined"){return this.parent.isLocalToCapture(name);}return false;}},{key:"addCapturedVariable",value:function addCapturedVariable(name){if(this.is_capturing){if(this.captured_variables.indexOf(name)<0){this.captured_variables.push(name);}return;}if(typeof this.parent!="undefined"){this.parent.addCapturedVariable(name);}}},{key:"getCapturedVariables",value:function getCapturedVariables(){if(this.is_capturing){return this.captured_variables;}if(typeof this.parent!="undefined"){var r=this.parent.getCapturedVariables();return r;}var res=[];return res;}},{key:"transformOpNameWord",value:function transformOpNameWord(input_word){var __len=input_word.length;var i=0;var res="";while(i<__len){var cc=input_word.charCodeAt(i);if(cc>=97&&cc<=122||cc>=65&&cc<=89){res=res+String.fromCharCode(cc);}else{res=res+"c"+cc;}i=i+1;};return res;}},{key:"transformWord",value:function transformWord(input_word){switch(input_word){case"map":return"_map";default:break;};var root=this.getRoot();root.initReservedWords();if(typeof this.refTransform[input_word]!="undefined"&&this.refTransform.hasOwnProperty(input_word)){return this.refTransform[input_word];}return input_word;}},{key:"initReservedWords",value:function initReservedWords(){if(typeof this.reservedWords!=="undefined"&&this.reservedWords!=null){return true;}var main=this.langOperators;var lang=void 0;for(var i=0;i<main.children.length;i++){var m=main.children[i];var fc=m.getFirst();if(fc.vref=="language"){lang=m;}};/** unused: let cmds **/var langNodes=lang.children[1];for(var i_1=0;i_1<langNodes.children.length;i_1++){var lch=langNodes.children[i_1];var fc_1=lch.getFirst();if(fc_1.vref=="reserved_words"){/** unused: const n = lch.getSecond() **/this.reservedWords=lch.getSecond();for(var i_2=0;i_2<this.reservedWords.children.length;i_2++){var ch=this.reservedWords.children[i_2];var word=ch.getFirst();var transform=ch.getSecond();this.refTransform[word.vref]=transform.vref;};}};return true;}},{key:"initStdCommands",value:function initStdCommands(){if(typeof this.stdCommands!=="undefined"&&this.stdCommands!=null){return true;}if(typeof this.langOperators==="undefined"){return true;}var main=this.langOperators;var lang=void 0;for(var i=0;i<main.children.length;i++){var m=main.children[i];var fc=m.getFirst();if(fc.vref=="language"){lang=m;}};/** unused: let cmds **/var langNodes=lang.children[1];for(var i_1=0;i_1<langNodes.children.length;i_1++){var lch=langNodes.children[i_1];var fc_1=lch.getFirst();if(fc_1.vref=="commands"){/** unused: const n = lch.getSecond() **/this.stdCommands=lch.getSecond();}};return true;}},{key:"transformTypeName",value:function transformTypeName(typeName){if(this.isPrimitiveType(typeName)){return typeName;}if(this.isEnumDefined(typeName)){return typeName;}if(this.isDefinedClass(typeName)){var cl=this.findClass(typeName);if(cl.is_system){return cl.systemNames[operatorsOfRangerAppWriterContext_12.getTargetLang_13(this)];}}return typeName;}},{key:"isPrimitiveType",value:function isPrimitiveType(typeName){if(typeName=="double"||typeName=="string"||typeName=="int"||typeName=="char"||typeName=="charbuffer"||typeName=="boolean"){return true;}return false;}},{key:"isDefinedType",value:function isDefinedType(typeName){if(typeName=="Any"){return true;}if(typeName=="double"||typeName=="string"||typeName=="int"||typeName=="char"||typeName=="charbuffer"||typeName=="boolean"){return true;}if(this.isEnumDefined(typeName)){return true;}if(this.isDefinedClass(typeName)){return true;}return false;}},{key:"hadValidType",value:function hadValidType(node){if(node.isPrimitiveType()||node.isPrimitive()){return true;}if(node.value_type==6){if(this.isDefinedType(node.array_type)){return true;}else{this.addError(node,"Unknown type for array values: "+node.array_type);return false;}}if(node.value_type==7){if(this.isDefinedType(node.array_type)&&this.isPrimitiveType(node.key_type)){return true;}else{if(this.isDefinedType(node.array_type)==false){this.addError(node,"Unknown type for map values: "+node.array_type);}if(this.isDefinedType(node.key_type)==false){this.addError(node,"Unknown type for map keys: "+node.key_type);}return false;}}if(this.isEnumDefined(node.type_name)){return true;}if(this.isDefinedType(node.type_name)){return true;}else{if(node.value_type==17){}else{this.addError(node,"Unknown type: "+node.type_name+" type ID : "+node.value_type);}}return false;}},{key:"findOperator",value:function findOperator(node){var root=this.getRoot();root.initStdCommands();if(typeof node.operator_node!=="undefined"&&node.operator_node!=null){return node.operator_node;}return root.stdCommands.children[node.op_index];}},{key:"getStdCommands",value:function getStdCommands(){var root=this.getRoot();root.initStdCommands();return root.stdCommands;}},{key:"findOperatorsWithName",value:function findOperatorsWithName(name){var res=[];operatorsOf.forEach_6(this.getStdCommands().children,function(item,index){if(item.isFirstVref(name)){res.push(item);}});return res;}},{key:"findClassWithSign",value:function findClassWithSign(node){var root=this.getRoot();var tplArgs=node.vref_annotation;var sign=node.vref+tplArgs.getCode();var theName=root.classSignatures[sign];return this.findClass(theName);}},{key:"createSignature",value:function createSignature(origClass,classSig){if(typeof this.classSignatures[classSig]!="undefined"&&this.classSignatures.hasOwnProperty(classSig)){return this.classSignatures[classSig];}var ii=1;var sigName=origClass+"V"+ii;while(typeof this.classToSignature[sigName]!="undefined"&&this.classToSignature.hasOwnProperty(sigName)){ii=ii+1;sigName=origClass+"V"+ii;};this.classToSignature[sigName]=classSig;this.classSignatures[classSig]=sigName;return sigName;}},{key:"createStaticMethod",value:function createStaticMethod(withName,currC,nameNode,argsNode,fnBody,parser,wr){var s=withName;var m=new RangerAppFunctionDesc();m.name=s;m.compiledName=this.transformWord(s);m.node=nameNode;m.nameNode=nameNode;var rCtx=this.getRoot();m.fnCtx=rCtx.fork();m.is_static=true;m.nameNode.ifNoTypeSetToVoid();var args=argsNode;m.fnBody=fnBody;parser.CheckTypeAnnotationOf(m.nameNode,rCtx,wr);for(var ii=0;ii<args.children.length;ii++){var arg=args.children[ii];if(arg.hasFlag("noeval")){continue;}var p=new RangerAppParamDesc();p.name=arg.vref;if(p.name=="self"){p.compiledName="__self";}p.value_type=arg.value_type;p.node=arg;p.init_cnt=1;p.nameNode=arg;parser.CheckTypeAnnotationOf(arg,rCtx,wr);p.refType=1;p.varType=4;m.params.push(p);arg.hasParamDesc=true;arg.paramDesc=p;arg.eval_type=arg.value_type;arg.eval_type_name=arg.type_name;if(arg.hasFlag("strong")){p.changeStrength(1,1,p.nameNode);}else{arg.setFlag("lives");p.changeStrength(0,1,p.nameNode);}};currC.addStaticMethod(m);return m;}},{key:"canUseTypeInference",value:function canUseTypeInference(nameNode){var b_allow_ti=this.hasCompilerFlag("allowti");var b_multitype=false;if(b_allow_ti){var t_name=nameNode.type_name;if(nameNode.eval_type_name.length>0){t_name=nameNode.eval_type_name;}if(this.isDefinedClass(t_name)){var cc=this.findClass(t_name);b_multitype=cc.is_union||cc.is_system||cc.is_system_union||cc.is_trait||cc.is_inherited||cc.extends_classes.length>0;}}return b_allow_ti&&false==b_multitype;}},{key:"createOpStaticClass",value:function createOpStaticClass(name){var nameWillBe="operatorsOf"+name;var str="";var i=0;var __len=nameWillBe.length;while(i<__len){var c=nameWillBe.charCodeAt(i);if(c==".".charCodeAt(0)){str=str+"_";}else{str=str+nameWillBe.substring(i,i+1);}i=i+1;};if(this.isDefinedClass(str)){return this.findClass(str);}var tpl_code="class "+str+" {\n}";var code=new SourceCode(tpl_code);code.filename=str+".ranger";var parser_1=new RangerLispParser(code);parser_1.parse(false);var classRoot=parser_1.rootNode.children[0];var classNameNode=classRoot.getSecond();classNameNode.vref=str;var new_class=new RangerAppClassDesc();new_class.name=str;new_class.compiledName=str;new_class.is_operator_class=true;new_class.nameNode=classNameNode;new_class.classNode=classRoot;var subCtx=this.fork();subCtx.setCurrentClass(new_class);new_class.ctx=subCtx;var root=this.getRoot();root.addClass(str,new_class);classNameNode.clDesc=new_class;this.staticClassBodies.push(classRoot);return new_class;}},{key:"createTraitInstanceClass",value:function createTraitInstanceClass(traitName,instanceName,initParams,flowParser,wr){var res=void 0;var ctx=this.fork();if(this.isDefinedClass(instanceName)){return res;}if(this.isDefinedClass(traitName)==false){this.addError(initParams,"Could not find the trait "+traitName);return res;}var tpl_code="class "+instanceName+" {\n}";var code=new SourceCode(tpl_code);code.filename=instanceName+".ranger";var parser_1=new RangerLispParser(code);parser_1.parse(false);var classRoot=parser_1.rootNode.children[0];var classNameNode=classRoot.getSecond();classNameNode.vref=instanceName;var new_class=new RangerAppClassDesc();new_class.name=instanceName;new_class.compiledName=instanceName;new_class.nameNode=classNameNode;new_class.node=classRoot;new_class.classNode=classRoot;new_class.is_generic_instance=true;new_class.consumes_traits.push(traitName);var root=this.getRoot();new_class.ctx=root.fork();root.addClass(instanceName,new_class);classNameNode.clDesc=new_class;var cl=new_class;var t=this.findClass(traitName);var traitClassDef=t.node;var name=t.name;var t_2=ctx.findClass(name);if(t_2.extends_classes.length>0){ctx.addError(traitClassDef,"Can not join trait "+name+" because it is inherited. Currently on base classes can be used as traits.");return res;}if(t_2.has_constructor){ctx.addError(traitClassDef,"Can not join trait "+name+" because it has a constructor function");}else{var origBody=cl.node.children[2];var match=new RangerArgMatch();var params=t_2.node.getExpressionProperty("params");var traitParams=new RangerTraitParams();if(typeof params!=="undefined"&&params!=null){for(var i=0;i<params.children.length;i++){var typeName=params.children[i];var set_value="";if(initParams.children.length>i){var pArg=initParams.children[i];match.add(typeName.vref,pArg.vref,ctx);set_value=pArg.vref;}else{match.add(typeName.vref,instanceName,ctx);set_value=instanceName;}traitParams.param_names.push(typeName.vref);traitParams.values[typeName.vref]=set_value;};cl.trait_params[name]=traitParams;}else{match.add("T",cl.name,ctx);}ctx.setCurrentClass(cl);var traitClass=t_2;for(var i_1=0;i_1<traitClass.variables.length;i_1++){var pvar=traitClass.variables[i_1];var ccopy=pvar.node.rebuildWithType(match,true);flowParser.WalkCollectMethods(ccopy,ctx,wr);origBody.children.push(ccopy);};for(var i_2=0;i_2<traitClass.defined_variants.length;i_2++){var fnVar=traitClass.defined_variants[i_2];var mVs=traitClass.method_variants[fnVar];for(var i_3=0;i_3<mVs.variants.length;i_3++){var variant=mVs.variants[i_3];var ccopy_1=variant.node.rebuildWithType(match,true);flowParser.WalkCollectMethods(ccopy_1,ctx,wr);origBody.children.push(ccopy_1);};};res=new_class;/** unused: const rootCtx = this.getRoot() **/flowParser.WalkNode(new_class.node,ctx,wr);}return res;}},{key:"createOperator",value:function createOperator(fromNode){var root=this.getRoot();if(root.initStdCommands()){root.stdCommands.children.push(fromNode);}}},{key:"findClassMethod",value:function findClassMethod(cname,fname){var res=void 0;if(this.isDefinedClass(cname)){var cl=this.findClass(cname);for(var i=0;i<cl.defined_variants.length;i++){var fnVar=cl.defined_variants[i];if(fnVar==fname){var mVs=cl.method_variants[fnVar];for(var i_1=0;i_1<mVs.variants.length;i_1++){var variant=mVs.variants[i_1];res=variant;return res;};}};}return res;}},{key:"getFileWriter",value:function getFileWriter(path,fileName){var root=this.getRoot();var fs=root.fileSystem;var file=fs.getFile(path,fileName);var wr=void 0;wr=file.getWriter();return wr;}},{key:"addTodo",value:function addTodo(node,descr){var e=new RangerAppTodo();e.description=descr;e.todonode=node;var root=this.getRoot();root.todoList.push(e);}},{key:"setThisName",value:function setThisName(the_name){var root=this.getRoot();root.thisName=the_name;}},{key:"getThisName",value:function getThisName(){var root=this.getRoot();return root.thisName;}},{key:"printLogs",value:function printLogs(logName){}},{key:"log",value:function log(node,logName,descr){}},{key:"addMessage",value:function addMessage(node,descr){var e=new RangerCompilerMessage();e.description=descr;e.node=node;var root=this.getRoot();root.compilerMessages.push(e);}},{key:"addError",value:function addError(targetnode,descr){var e=new RangerCompilerMessage();e.description=descr;e.node=targetnode;var root=this.getRoot();root.compilerErrors.push(e);}},{key:"addParserError",value:function addParserError(targetnode,descr){var e=new RangerCompilerMessage();e.description=descr;e.node=targetnode;var root=this.getRoot();root.parserErrors.push(e);}},{key:"addTemplateClass",value:function addTemplateClass(name,node){var root=this.getRoot();root.templateClassList.push(name);root.templateClassNodes[name]=node;}},{key:"hasTemplateNode",value:function hasTemplateNode(name){var root=this.getRoot();return typeof root.templateClassNodes[name]!="undefined"&&root.templateClassNodes.hasOwnProperty(name);}},{key:"findTemplateNode",value:function findTemplateNode(name){var root=this.getRoot();return root.templateClassNodes[name];}},{key:"setStaticWriter",value:function setStaticWriter(className,writer){var root=this.getRoot();root.classStaticWriters[className]=writer;}},{key:"getStaticWriter",value:function getStaticWriter(className){var root=this.getRoot();return root.classStaticWriters[className];}},{key:"isEnumDefined",value:function isEnumDefined(n){if(typeof this.definedEnums[n]!="undefined"&&this.definedEnums.hasOwnProperty(n)){return true;}if(typeof this.parent==="undefined"){return false;}return this.parent.isEnumDefined(n);}},{key:"getEnum",value:function getEnum(n){var res=void 0;if(typeof this.definedEnums[n]!="undefined"&&this.definedEnums.hasOwnProperty(n)){res=this.definedEnums[n];return res;}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.getEnum(n);}return res;}},{key:"isVarDefined",value:function isVarDefined(name){if(typeof this.localVariables[name]!="undefined"&&this.localVariables.hasOwnProperty(name)){return true;}if(typeof this.parent==="undefined"){return false;}return this.parent.isVarDefined(name);}},{key:"setFlag",value:function setFlag(name,value){this.contextFlags[name]=value;}},{key:"getFlag",value:function getFlag(name){if(typeof this.contextFlags[name]!="undefined"&&this.contextFlags.hasOwnProperty(name)){return this.contextFlags[name];}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.getFlag(name);}return false;}},{key:"setSetting",value:function setSetting(name,value){this.settings[name]=value;}},{key:"hasSetting",value:function hasSetting(name){if(typeof this.settings[name]!="undefined"&&this.settings.hasOwnProperty(name)){return true;}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.hasSetting(name);}return false;}},{key:"getSetting",value:function getSetting(name){if(typeof this.settings[name]!="undefined"&&this.settings.hasOwnProperty(name)){return this.settings[name];}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.getSetting(name);}return"";}},{key:"setCompilerFlag",value:function setCompilerFlag(name,value){var root=this.getRoot();root.compilerFlags[name]=value;}},{key:"hasCompilerFlag",value:function hasCompilerFlag(s_name){if(typeof this.compilerFlags[s_name]!="undefined"&&this.compilerFlags.hasOwnProperty(s_name)){return this.compilerFlags[s_name];}if(typeof this.parent==="undefined"){return false;}return this.parent.hasCompilerFlag(s_name);}},{key:"setCompilerSetting",value:function setCompilerSetting(name,value){var root=this.getRoot();root.compilerSettings[name]=value;}},{key:"getCompilerSetting",value:function getCompilerSetting(s_name){if(typeof this.compilerSettings[s_name]!="undefined"&&this.compilerSettings.hasOwnProperty(s_name)){return this.compilerSettings[s_name];}if(typeof this.parent==="undefined"){return"";}return this.parent.getCompilerSetting(s_name);}},{key:"hasCompilerSetting",value:function hasCompilerSetting(s_name){if(typeof this.compilerSettings[s_name]!="undefined"&&this.compilerSettings.hasOwnProperty(s_name)){return true;}if(typeof this.parent==="undefined"){return false;}return this.parent.hasCompilerSetting(s_name);}},{key:"getVariableDef",value:function getVariableDef(name){if(typeof this.localVariables[name]!="undefined"&&this.localVariables.hasOwnProperty(name)){return this.localVariables[name];}if(typeof this.parent==="undefined"){var tmp=new RangerAppParamDesc();return tmp;}return this.parent.getVariableDef(name);}},{key:"findFunctionCtx",value:function findFunctionCtx(){if(this.is_function){return this;}if(typeof this.parent==="undefined"){return this;}return this.parent.findFunctionCtx();}},{key:"getFnVarCnt",value:function getFnVarCnt(name){var fnCtx=this.findFunctionCtx();var ii=0;if(typeof fnCtx.defCounts[name]!="undefined"&&fnCtx.defCounts.hasOwnProperty(name)){ii=fnCtx.defCounts[name];ii=1+ii;}else{fnCtx.defCounts[name]=ii;return 0;}var scope_has=this.isVarDefined(name+"_"+ii);while(scope_has){ii=1+ii;scope_has=this.isVarDefined(name+"_"+ii);};fnCtx.defCounts[name]=ii;return ii;}},{key:"debugVars",value:function debugVars(){console.log("--- context vars ---");for(var i=0;i<this.localVarNames.length;i++){var na=this.localVarNames[i];console.log("var => "+na);};if(typeof this.parent!=="undefined"&&this.parent!=null){this.parent.debugVars();}}},{key:"getVarTotalCnt",value:function getVarTotalCnt(name){var fnCtx=this;var ii=0;if(typeof fnCtx.defCounts[name]!="undefined"&&fnCtx.defCounts.hasOwnProperty(name)){ii=fnCtx.defCounts[name];}if(typeof fnCtx.parent!=="undefined"&&fnCtx.parent!=null){ii=ii+fnCtx.parent.getVarTotalCnt(name);}if(this.isVarDefined(name)){ii=ii+1;}return ii;}},{key:"getFnVarCnt2",value:function getFnVarCnt2(name){var fnCtx=this;var ii=0;if(typeof fnCtx.defCounts[name]!="undefined"&&fnCtx.defCounts.hasOwnProperty(name)){ii=fnCtx.defCounts[name];ii=1+ii;fnCtx.defCounts[name]=ii;}else{fnCtx.defCounts[name]=1;}if(typeof fnCtx.parent!=="undefined"&&fnCtx.parent!=null){ii=ii+fnCtx.parent.getFnVarCnt2(name);}var scope_has=this.isVarDefined(name);if(scope_has){ii=1+ii;}var scope_has_2=this.isVarDefined(name+"_"+ii);while(scope_has_2){ii=1+ii;scope_has_2=this.isVarDefined(name+"_"+ii);};return ii;}},{key:"getFnVarCnt3",value:function getFnVarCnt3(name){var classLevel=this.findMethodLevelContext();var fnCtx=this;var ii=0;if(typeof fnCtx.defCounts[name]!="undefined"&&fnCtx.defCounts.hasOwnProperty(name)){ii=fnCtx.defCounts[name];fnCtx.defCounts[name]=ii+1;}else{fnCtx.defCounts[name]=1;}if(classLevel.isVarDefined(name)){ii=ii+1;}var scope_has=this.isVarDefined(name+"_"+ii);while(scope_has){ii=1+ii;scope_has=this.isVarDefined(name+"_"+ii);};return ii;}},{key:"isMemberVariable",value:function isMemberVariable(name){if(this.isVarDefined(name)){var vDef=this.getVariableDef(name);if(vDef.varType==8){return true;}}return false;}},{key:"defineVariable",value:function defineVariable(name,desc){var cnt=0;var fnLevel=this.findMethodLevelContext();if(false==(desc.varType==8||desc.varType==4||desc.varType==10)){cnt=fnLevel.getFnVarCnt3(name);}if(0==cnt){switch(name){case"self":desc.compiledName="__self";break;case"process":desc.compiledName="_process";break;case"len":desc.compiledName="__len";break;default:desc.compiledName=name;break;};}else{desc.compiledName=name+"_"+cnt;}if(desc.varType==8){}this.localVariables[name]=desc;this.localVarNames.push(name);}},{key:"isDefinedClass",value:function isDefinedClass(name){if(typeof this.definedClasses[name]!="undefined"&&this.definedClasses.hasOwnProperty(name)){return true;}else{if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.isDefinedClass(name);}}return false;}},{key:"getRoot",value:function getRoot(){if(typeof this.parent==="undefined"){return this;}return this.parent.getRoot();}},{key:"getClasses",value:function getClasses(){var list=[];for(var i=0;i<this.definedClassList.length;i++){var n=this.definedClassList[i];list.push(this.definedClasses[n]);};return list;}},{key:"addClass",value:function addClass(name,desc){var root=this.getRoot();if(typeof root.definedClasses[name]!="undefined"&&root.definedClasses.hasOwnProperty(name)){}else{root.definedClasses[name]=desc;root.definedClassList.push(name);}}},{key:"findClass",value:function findClass(name){var root=this.getRoot();return root.definedClasses[name];}},{key:"hasClass",value:function hasClass(name){var root=this.getRoot();return typeof root.definedClasses[name]!="undefined"&&root.definedClasses.hasOwnProperty(name);}},{key:"getCurrentMethod",value:function getCurrentMethod(){if(typeof this.currentMethod!=="undefined"&&this.currentMethod!=null){return this.currentMethod;}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.getCurrentMethod();}return new RangerAppFunctionDesc();}},{key:"setCurrentClass",value:function setCurrentClass(cc){this.in_class=true;this.currentClass=cc;}},{key:"disableCurrentClass",value:function disableCurrentClass(){if(this.in_class){this.in_class=false;}if(typeof this.parent!=="undefined"&&this.parent!=null){this.parent.disableCurrentClass();}}},{key:"hasCurrentClass",value:function hasCurrentClass(){if(this.in_class&&typeof this.currentClass!=="undefined"&&this.currentClass!=null){return true;}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.hasCurrentClass();}return false;}},{key:"getCurrentClass",value:function getCurrentClass(){var non=this.currentClass;if(this.in_class&&typeof non!=="undefined"&&non!=null){return non;}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.getCurrentClass();}return non;}},{key:"restartExpressionLevel",value:function restartExpressionLevel(){this.expr_restart=true;}},{key:"newBlock",value:function newBlock(){this.expr_restart_block=true;}},{key:"isInExpression",value:function isInExpression(){if(this.expr_stack.length>0){return true;}if(typeof this.parent!=="undefined"&&this.parent!=null&&this.expr_restart_block==false&&this.expr_restart==false){return this.parent.isInExpression();}return false;}},{key:"expressionLevel",value:function expressionLevel(){var level=this.expr_stack.length;if(typeof this.parent!=="undefined"&&this.parent!=null&&this.expr_restart==false&&this.expr_restart_block==false){return level+this.parent.expressionLevel();}return level;}},{key:"setInExpr",value:function setInExpr(){this.expr_stack.push(true);}},{key:"unsetInExpr",value:function unsetInExpr(){this.expr_stack.pop();}},{key:"getErrorCount",value:function getErrorCount(){var cnt=this.compilerErrors.length;if(typeof this.parent!="undefined"){cnt=cnt+this.parent.getErrorCount();}return cnt;}},{key:"isInStatic",value:function isInStatic(){if(this.in_static_method){return true;}if(typeof this.parent!="undefined"){return this.parent.isInStatic();}return false;}},{key:"isInMain",value:function isInMain(){if(this.in_main){return true;}if(typeof this.parent!="undefined"){return this.parent.isInMain();}return false;}},{key:"isInMethod",value:function isInMethod(){if(this.method_stack.length>0){return true;}if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.isInMethod();}return false;}},{key:"setInMethod",value:function setInMethod(){this.method_stack.push(true);}},{key:"unsetInMethod",value:function unsetInMethod(){this.method_stack.pop();}},{key:"findMethodLevelContext",value:function findMethodLevelContext(){var res=void 0;if(this.function_level_context){res=this;return res;}if(typeof this.parent!="undefined"){return this.parent.findMethodLevelContext();}res=this;return res;}},{key:"findClassLevelContext",value:function findClassLevelContext(){var res=void 0;if(this.class_level_context){res=this;return res;}if(typeof this.parent!="undefined"){return this.parent.findClassLevelContext();}res=this;return res;}},{key:"fork",value:function fork(){var new_ctx=new RangerAppWriterContext();new_ctx.parent=this;return new_ctx;}},{key:"getRootFile",value:function getRootFile(){var root=this.getRoot();return root.rootFile;}},{key:"setRootFile",value:function setRootFile(file_name){var root=this.getRoot();root.rootFile=file_name;}}]);return RangerAppWriterContext;}();var CodeFile=function(){function CodeFile(filePath,fileName){_classCallCheck(this,CodeFile);this.path_name="";this.name="";this.import_list={};this.import_names=[];this.name=fileName;this.path_name=filePath;this.writer=new CodeWriter();this.writer.createTag("imports");}_createClass(CodeFile,[{key:"addImport",value:function addImport(import_name){if(false==(typeof this.import_list[import_name]!="undefined"&&this.import_list.hasOwnProperty(import_name))){this.import_list[import_name]=import_name;this.import_names.push(import_name);}}},{key:"rewrite",value:function rewrite(newString){this.writer.rewrite(newString);}},{key:"testCreateWriter",value:function testCreateWriter(){return new CodeWriter();}},{key:"getImports",value:function getImports(){return this.import_names;}},{key:"getWriter",value:function getWriter(){this.writer.ownerFile=this;return this.writer;}},{key:"getCode",value:function getCode(){return this.writer.getCode();}}]);return CodeFile;}();var CodeFileSystem=function(){function CodeFileSystem(){_classCallCheck(this,CodeFileSystem);this.files=[];}_createClass(CodeFileSystem,[{key:"getFile",value:function getFile(path,name){for(var idx=0;idx<this.files.length;idx++){var file=this.files[idx];if(file.path_name==path&&file.name==name){return file;}};var new_file=new CodeFile(path,name);new_file.fileSystem=this;this.files.push(new_file);return new_file;}},{key:"mkdir",value:function mkdir(path){var parts=path.split("/");var curr_path="";for(var i=0;i<parts.length;i++){var p=parts[i];curr_path=curr_path+p+"/";if(false==require("fs").existsSync(curr_path)){require("fs").mkdirSync(curr_path);}};}},{key:"saveTo",value:function saveTo(path,verbose){console.log("Saving results to path : "+path);for(var idx=0;idx<this.files.length;idx++){var file=this.files[idx];var file_path=path+"/"+file.path_name;this.mkdir(file_path);if(verbose){console.log("Writing to file "+file_path+"/"+file.name);}var file_content=file.getCode();if(file_content.length>0){require("fs").writeFileSync(file_path+"/"+file.name.trim(),file_content);}};}}]);return CodeFileSystem;}();var CodeSlice=function(){function CodeSlice(){_classCallCheck(this,CodeSlice);this.code="";}_createClass(CodeSlice,[{key:"getCode",value:function getCode(){if(typeof this.writer==="undefined"){return this.code;}return this.writer.getCode();}}]);return CodeSlice;}();var CodeWriter=function(){function CodeWriter(){_classCallCheck(this,CodeWriter);this.tagName="";/** note: unused */this.codeStr="";/** note: unused */this.currentLine="";this.tabStr=" ";this.nlStr="\n";this.lineNumber=1;/** note: unused */this.indentAmount=0;this.compiledTags={};this.tags={};this.slices=[];this.forks=[];this.tagOffset=0;/** note: unused */this.had_nl=true;/** note: unused */var new_slice=new CodeSlice();this.slices.push(new_slice);this.current_slice=new_slice;}_createClass(CodeWriter,[{key:"rewrite",value:function rewrite(newString){this.slices.length=0;this.forks.length=0;this.currentLine="";var new_slice=new CodeSlice();this.slices.push(new_slice);new_slice.code=newString;this.current_slice=new_slice;}},{key:"getFilesystem",value:function getFilesystem(){if(typeof this.ownerFile==="undefined"){if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.getFilesystem();}return new CodeFileSystem();}var fs=this.ownerFile.fileSystem;return fs;}},{key:"getFileWriter",value:function getFileWriter(path,fileName){if(typeof this.ownerFile==="undefined"){if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.getFileWriter(path,fileName);}}var fs=this.ownerFile.fileSystem;var file=fs.getFile(path,fileName);var wr=file.getWriter();return wr;}},{key:"getImports",value:function getImports(){var p=this;while(typeof p.ownerFile==="undefined"&&typeof p.parent!=="undefined"&&p.parent!=null){p=p.parent;};if(typeof p.ownerFile!=="undefined"&&p.ownerFile!=null){var f=p.ownerFile;return f.import_names;}var nothing=[];return nothing;}},{key:"addImport",value:function addImport(name){if(typeof this.ownerFile!=="undefined"&&this.ownerFile!=null){this.ownerFile.addImport(name);}else{if(typeof this.parent!=="undefined"&&this.parent!=null){this.parent.addImport(name);}}}},{key:"indent",value:function indent(delta){this.indentAmount=this.indentAmount+delta;if(this.indentAmount<0){this.indentAmount=0;}}},{key:"addIndent",value:function addIndent(){var i=0;if(0==this.currentLine.length){while(i<this.indentAmount){this.currentLine=this.currentLine+this.tabStr;i=i+1;};}}},{key:"createTag",value:function createTag(name){var new_writer=new CodeWriter();var new_slice=new CodeSlice();this.tags[name]=this.slices.length;this.slices.push(new_slice);new_slice.writer=new_writer;new_writer.indentAmount=this.indentAmount;var new_active_slice=new CodeSlice();this.slices.push(new_active_slice);this.current_slice=new_active_slice;new_writer.parent=this;return new_writer;}},{key:"getTag",value:function getTag(name){if(typeof this.tags[name]!="undefined"&&this.tags.hasOwnProperty(name)){var idx=this.tags[name];var slice=this.slices[idx];return slice.writer;}else{if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.getTag(name);}}return this;}},{key:"hasTag",value:function hasTag(name){if(typeof this.tags[name]!="undefined"&&this.tags.hasOwnProperty(name)){return true;}else{if(typeof this.parent!=="undefined"&&this.parent!=null){return this.parent.hasTag(name);}}return false;}},{key:"fork",value:function fork(){var new_writer=new CodeWriter();var new_slice=new CodeSlice();this.slices.push(new_slice);new_slice.writer=new_writer;new_writer.indentAmount=this.indentAmount;new_writer.parent=this;var new_active_slice=new CodeSlice();this.slices.push(new_active_slice);this.current_slice=new_active_slice;return new_writer;}},{key:"newline",value:function newline(){if(this.currentLine.length>0){this.out("",true);}}},{key:"line_end",value:function line_end(str){if(this.currentLine.length>0){if(str.charCodeAt(0)!=this.currentLine.charCodeAt(this.currentLine.length-1)){this.out(str,false);}}}},{key:"writeSlice",value:function writeSlice(str,newLine){this.addIndent();this.currentLine=this.currentLine+str;if(newLine){this.current_slice.code=this.current_slice.code+this.currentLine+this.nlStr;this.currentLine="";}}},{key:"out",value:function out(str,newLine){var lines=str.split("\n");var rowCnt=lines.length;if(rowCnt==1){this.writeSlice(str,newLine);}else{for(var idx=0;idx<lines.length;idx++){var row=lines[idx];this.addIndent();if(idx<rowCnt-1){this.writeSlice(row.trim(),true);}else{this.writeSlice(row,newLine);}};}}},{key:"raw",value:function raw(str,newLine){var lines=str.split("\n");var rowCnt=lines.length;if(rowCnt==1){this.writeSlice(str,newLine);}else{for(var idx=0;idx<lines.length;idx++){var row=lines[idx];this.addIndent();if(idx<rowCnt-1){this.writeSlice(row,true);}else{this.writeSlice(row,newLine);}};}}},{key:"getCode",value:function getCode(){var res="";for(var idx=0;idx<this.slices.length;idx++){var slice=this.slices[idx];res=res+slice.getCode();};res=res+this.currentLine;return res;}}]);return CodeWriter;}();CodeWriter.emptyWithFS=function(){var wr=new CodeWriter();var file=new CodeFile(".","emptyFile.txt");file.writer=wr;file.fileSystem=new CodeFileSystem();wr.ownerFile=file;return wr;};var RangerLispParser=function(){function RangerLispParser(code_module){_classCallCheck(this,RangerLispParser);this.__len=0;this.i=0;this.last_line_start=0;/** note: unused */this.current_line_index=0;this.parents=[];this.paren_cnt=0;this.get_op_pred=0;/** note: unused */this.had_error=false;this.disableOperators=false;this.buff=code_module.code;this.code=code_module;this.__len=this.buff.length;this.rootNode=new CodeNode(this.code,0,0);this.rootNode.is_block_node=true;this.rootNode.expression=true;this.curr_node=this.rootNode;this.parents.push(this.curr_node);this.paren_cnt=1;}_createClass(RangerLispParser,[{key:"joo",value:function joo(cm){/** unused: const ll = cm.code.length **/}},{key:"parse_raw_annotation",value:function parse_raw_annotation(){var sp=this.i;var ep=this.i;this.i=this.i+1;sp=this.i;ep=this.i;if(this.i<this.__len){var a_node2=new CodeNode(this.code,sp,ep);a_node2.expression=true;a_node2.row=this.current_line_index;this.curr_node=a_node2;this.parents.push(a_node2);this.i=this.i+1;this.paren_cnt=this.paren_cnt+1;this.parse(false);return a_node2;}else{}return new CodeNode(this.code,sp,ep);}},{key:"skip_space",value:function skip_space(is_block_parent){var s=this.buff;var did_break=false;if(this.i>=this.__len){return true;}var c=s.charCodeAt(this.i);/** unused: const bb = c == (46) **/while(this.i<this.__len&&c<=32){if(c<8){this.i=this.__len;return true;}if(is_block_parent&&(c==10||c==13)){this.end_expression();this.current_line_index=this.current_line_index+1;did_break=true;break;}var had_break=false;while(this.i<this.__len&&c==10||c==13){had_break=true;this.i=this.i+1;if(this.i>=this.__len){return true;}c=s.charCodeAt(this.i);if(c==10||c==13){}};if(had_break){this.current_line_index=this.current_line_index+1;}else{this.i=1+this.i;if(this.i>=this.__len){return true;}c=s.charCodeAt(this.i);}};return did_break;}},{key:"end_expression",value:function end_expression(){this.i=1+this.i;if(this.i>=this.__len){return false;}this.paren_cnt=this.paren_cnt-1;if(this.paren_cnt<0){console.log("Parser error ) mismatch");}this.parents.pop();if(typeof this.curr_node!=="undefined"&&this.curr_node!=null){this.curr_node.ep=this.i;this.curr_node.infix_operator=false;}if(this.parents.length>0){this.curr_node=this.parents[this.parents.length-1];}else{this.curr_node=this.rootNode;}this.curr_node.infix_operator=false;return true;}},{key:"getOperator",value:function getOperator(disabled){if(disabled){return 0;}var s=this.buff;if(this.i+2>=this.__len){return 0;}var c=s.charCodeAt(this.i);var c2=s.charCodeAt(this.i+1);switch(c){case 42:this.i=this.i+1;return 14;case 47:this.i=this.i+1;return 14;case 37:this.i=this.i+1;return 14;case 43:this.i=this.i+1;return 13;case 45:this.i=this.i+1;return 13;case 60:if(c2==61){this.i=this.i+2;return 11;}this.i=this.i+1;return 11;case 62:if(c2==61){this.i=this.i+2;return 11;}this.i=this.i+1;return 11;case 33:if(c2==61){this.i=this.i+2;return 10;}return 0;case 61:if(c2==61){this.i=this.i+2;return 10;}this.i=this.i+1;return 3;case 38:if(c2==38){this.i=this.i+2;return 6;}return 0;case 124:if(c2==124){this.i=this.i+2;return 5;}return 0;default:break;};return 0;}},{key:"isOperator",value:function isOperator(disabled){if(disabled){return 0;}var s=this.buff;if(this.i-2>this.__len){return 0;}var c=s.charCodeAt(this.i);var c2=s.charCodeAt(this.i+1);switch(c){case 42:return 1;case 47:return 14;case 43:return 13;case 37:return 14;case 45:return 13;case 60:if(c2==61){return 11;}return 11;case 62:if(c2==61){return 11;}return 11;case 33:if(c2==61){return 10;}return 0;case 61:if(c2==61){return 10;}return 3;case 38:if(c2==38){return 6;}return 0;case 124:if(c2==124){return 5;}return 0;default:break;};return 0;}},{key:"getOperatorPred",value:function getOperatorPred(str,disabled){if(disabled){return 0;}switch(str){case"<":return 11;case">":return 11;case"<=":return 11;case">=":return 11;case"==":return 10;case"!=":return 10;case"=":return 3;case"&&":return 6;case"||":return 5;case"+":return 13;case"-":return 13;case"%":return 14;case"*":return 14;case"/":return 14;default:break;};return 0;}},{key:"insert_node",value:function insert_node(p_node){var push_target=this.curr_node;if(this.curr_node.infix_operator){push_target=this.curr_node.infix_node;if(push_target.to_the_right){push_target=push_target.right_node;p_node.parent=push_target;}}push_target.children.push(p_node);}},{key:"parse_attributes",value:function parse_attributes(){var s=this.buff;var last_i=0;var do_break=false;/** unused: const attr_name = "" **/var sp=this.i;var ep=this.i;var c=0;var cc1=0;var cc2=0;cc1=s.charCodeAt(this.i);while(this.i<this.__len){last_i=this.i;while(this.i<this.__len&&s.charCodeAt(this.i)<=32){this.i=1+this.i;};cc1=s.charCodeAt(this.i);cc2=s.charCodeAt(this.i+1);if(this.i>=this.__len){break;}if(cc1==62){return do_break;}if(cc1==47&&cc2==62){this.i=2+this.i;return true;}sp=this.i;ep=this.i;c=s.charCodeAt(this.i);while(this.i<this.__len&&(c>=65&&c<=90||c>=97&&c<=122||c>=48&&c<=57||c==95||c==45)){this.i=1+this.i;c=s.charCodeAt(this.i);};this.i=this.i-1;var an_sp=sp;var an_ep=this.i;c=s.charCodeAt(this.i);while(this.i<this.__len&&c!=61){this.i=1+this.i;c=s.charCodeAt(this.i);};if(c==61){this.i=1+this.i;}while(this.i<this.__len&&s.charCodeAt(this.i)<=32){this.i=1+this.i;};if(this.i>=this.__len){break;}c=s.charCodeAt(this.i);if(c==123){console.log("--> attribute had a code child....");var cNode=this.curr_node;var new_attr=new CodeNode(this.code,sp,ep);new_attr.value_type=21;new_attr.parsed_type=new_attr.value_type;new_attr.vref=s.substring(an_sp,an_ep+1);new_attr.string_value=s.substring(sp,ep);this.curr_node.attrs.push(new_attr);this.curr_node=new_attr;this.paren_cnt=this.paren_cnt+1;var new_qnode=new CodeNode(this.code,this.i,this.i);new_qnode.expression=true;this.insert_node(new_qnode);this.parents.push(new_qnode);this.curr_node=new_qnode;this.i=1+this.i;this.parse(false);this.curr_node=cNode;continue;}if(c==34||c==39){this.i=this.i+1;sp=this.i;ep=this.i;c=s.charCodeAt(this.i);while(this.i<this.__len&&c!=34&&c!=39){this.i=1+this.i;c=s.charCodeAt(this.i);};ep=this.i;if(this.i<this.__len&&ep>sp){var new_attr_1=new CodeNode(this.code,sp,ep);new_attr_1.value_type=21;new_attr_1.parsed_type=new_attr_1.value_type;new_attr_1.vref=s.substring(an_sp,an_ep+1);new_attr_1.string_value=s.substring(sp,ep);this.curr_node.attrs.push(new_attr_1);}this.i=1+this.i;}if(last_i==this.i){this.i=1+this.i;}};return do_break;}},{key:"parseXML",value:function parseXML(){var s=this.buff;var c=0;/** unused: const next_c = 0 **//** unused: const fc = 0 **//** unused: let new_node **/var sp=this.i;var ep=this.i;var last_i=0;var cc1=0;var cc2=0;var tag_depth=0;while(this.i<this.__len){last_i=this.i;if(this.i>=this.__len-1){break;}cc1=s.charCodeAt(this.i);cc2=s.charCodeAt(this.i+1);if(cc1==123){var cNode=this.curr_node;this.paren_cnt=this.paren_cnt+1;var new_qnode=new CodeNode(this.code,this.i,this.i);new_qnode.expression=true;this.insert_node(new_qnode);this.parents.push(new_qnode);this.curr_node=new_qnode;this.i=1+this.i;this.parse(false);this.curr_node=cNode;continue;}if(cc1==62){this.i=this.i+1;cc1=s.charCodeAt(this.i);cc2=s.charCodeAt(this.i+1);continue;}if(47==cc1&&cc2==62){tag_depth=tag_depth-1;this.i=this.i+2;if(tag_depth<=0){this.parents.pop();var p_cnt=this.parents.length;var last_parent=this.parents[p_cnt-1];this.curr_node=last_parent;return;}continue;}if(this.i>=this.__len){break;}if(60==cc1&&cc2==47){tag_depth=tag_depth-1;this.i=this.i+2;sp=this.i;ep=this.i;c=s.charCodeAt(this.i);while(this.i<this.__len&&c>32&&c!=62){this.i=1+this.i;c=s.charCodeAt(this.i);};ep=this.i;this.parents.pop();var p_cnt_1=this.parents.length;var last_parent_1=this.parents[p_cnt_1-1];this.curr_node=last_parent_1;if(tag_depth<=0){return;}continue;}if(cc1==60){this.i=this.i+1;sp=this.i;ep=this.i;c=s.charCodeAt(this.i);while(this.i<this.__len&&c!=62&&(c>=65&&c<=90||c>=97&&c<=122||c>=48&&c<=57||c==95||c==46||c==64)){this.i=1+this.i;c=s.charCodeAt(this.i);};tag_depth=tag_depth+1;ep=this.i;var new_tag=s.substring(sp,ep);if(typeof this.curr_node==="undefined"){var new_rnode=new CodeNode(this.code,sp,ep);new_rnode.vref=new_tag;new_rnode.value_type=19;new_rnode.parsed_type=new_rnode.value_type;this.rootNode=new_rnode;this.parents.push(new_rnode);this.curr_node=new_rnode;}else{var new_node_2=new CodeNode(this.code,sp,ep);new_node_2.vref=new_tag;new_node_2.value_type=19;new_node_2.parsed_type=new_node_2.value_type;this.curr_node.children.push(new_node_2);new_node_2.parent=this.curr_node;this.parents.push(new_node_2);this.curr_node=new_node_2;}if(this.parse_attributes()){this.parents.pop();var p_cnt_2=this.parents.length;var last_parent_2=this.parents[p_cnt_2-1];this.curr_node=last_parent_2;tag_depth=tag_depth-1;if(tag_depth<=0){return;}continue;}continue;}if(typeof this.curr_node!=="undefined"&&this.curr_node!=null){sp=this.i;ep=this.i;c=s.charCodeAt(this.i);while(this.i<this.__len&&c!=60&&c!=123){this.i=1+this.i;c=s.charCodeAt(this.i);};ep=this.i;if(ep>sp){var new_node_3=new CodeNode(this.code,sp,ep);new_node_3.string_value=s.substring(sp,ep);new_node_3.value_type=20;new_node_3.parsed_type=new_node_3.value_type;this.curr_node.children.push(new_node_3);new_node_3.parent=this.curr_node;}}if(last_i==this.i){this.i=1+this.i;}};}},{key:"parse",value:function parse(disable_ops){var s=this.buff;var c=s.charCodeAt(0);/** unused: const next_c = 0 **/var fc=0;var new_node=void 0;var sp=0;var ep=0;var last_i=0;var had_lf=false;var disable_ops_set=disable_ops;while(this.i<this.__len){if(typeof this.curr_node!=="undefined"&&this.curr_node!=null){if(this.curr_node.value_type==21){return;}if(this.curr_node.value_type==19){return;}}if(this.had_error){break;}last_i=this.i;var is_block_parent=false;if(had_lf){had_lf=false;this.end_expression();break;}if(typeof this.curr_node!=="undefined"&&this.curr_node!=null){if(typeof this.curr_node.parent!=="undefined"&&this.curr_node.parent!=null){var nodeParent=this.curr_node.parent;if(nodeParent.is_block_node){is_block_parent=true;}}}if(this.skip_space(is_block_parent)){break;}had_lf=false;c=s.charCodeAt(this.i);if(this.i<this.__len){c=s.charCodeAt(this.i);if(60==c){if(this.i+1<this.__len){var next_c_2=s.charCodeAt(this.i+1);if(65<next_c_2&&122>next_c_2){/** unused: const spos = this.i **/this.parseXML();this.i=this.i+1;continue;}}if(this.i>0){var prev_c=s.charCodeAt(this.i-1);if(62==prev_c){}}}if(c==59){sp=this.i+1;while(this.i<this.__len&&s.charCodeAt(this.i)>31){this.i=1+this.i;};if(this.i>=this.__len){break;}new_node=new CodeNode(this.code,sp,this.i);new_node.parsed_type=12;new_node.value_type=12;new_node.string_value=s.substring(sp,this.i);this.curr_node.comments.push(new_node);continue;}if(this.i<this.__len-1){fc=s.charCodeAt(this.i+1);if(c==40||c==123){this.paren_cnt=this.paren_cnt+1;if(typeof this.curr_node==="undefined"){this.rootNode=new CodeNode(this.code,this.i,this.i);this.curr_node=this.rootNode;this.curr_node.expression=true;this.parents.push(this.curr_node);}else{var new_qnode=new CodeNode(this.code,this.i,this.i);new_qnode.expression=true;this.insert_node(new_qnode);this.parents.push(new_qnode);this.curr_node=new_qnode;}if(c==123){this.curr_node.is_block_node=true;}this.i=1+this.i;this.parse(disable_ops_set);continue;}}sp=this.i;ep=this.i;fc=s.charCodeAt(this.i);if(fc==45&&s.charCodeAt(this.i+1)>=46&&s.charCodeAt(this.i+1)<=57||fc>=48&&fc<=57){var is_double=false;sp=this.i;this.i=1+this.i;c=s.charCodeAt(this.i);while(this.i<this.__len&&(c>=48&&c<=57||c==46||this.i==sp&&(c==43||c==45))){if(c==46){is_double=true;}this.i=1+this.i;c=s.charCodeAt(this.i);};ep=this.i;var new_num_node=new CodeNode(this.code,sp,ep);if(is_double){new_num_node.parsed_type=2;new_num_node.value_type=2;new_num_node.double_value=isNaN(parseFloat(s.substring(sp,ep)))?undefined:parseFloat(s.substring(sp,ep));}else{new_num_node.parsed_type=3;new_num_node.value_type=3;new_num_node.int_value=isNaN(parseInt(s.substring(sp,ep)))?undefined:parseInt(s.substring(sp,ep));}this.insert_node(new_num_node);continue;}var str_limit=fc;var b_had_str=fc==34||fc==96||fc==39;if(b_had_str){sp=this.i+1;ep=sp;c=s.charCodeAt(this.i);var must_encode=false;while(this.i<this.__len){this.i=1+this.i;c=s.charCodeAt(this.i);if(c==str_limit){break;}if(c==92){this.i=1+this.i;if(this.i<this.__len){must_encode=true;c=s.charCodeAt(this.i);}else{break;}}};ep=this.i;if(this.i<this.__len){var encoded_str="";if(must_encode){var subs=s.substring(sp,ep);var orig_str=subs;var str_length=orig_str.length;var ii=0;while(ii<str_length){var cc=orig_str.charCodeAt(ii);if(cc==92){var next_ch=orig_str.charCodeAt(ii+1);switch(next_ch){case 34:encoded_str=encoded_str+String.fromCharCode(34);break;case 92:encoded_str=encoded_str+String.fromCharCode(92);break;case 47:encoded_str=encoded_str+String.fromCharCode(47);break;case 98:encoded_str=encoded_str+String.fromCharCode(8);break;case 102:encoded_str=encoded_str+String.fromCharCode(12);break;case 110:encoded_str=encoded_str+String.fromCharCode(10);break;case 114:encoded_str=encoded_str+String.fromCharCode(13);break;case 116:encoded_str=encoded_str+String.fromCharCode(9);break;case 117:ii=ii+4;break;default:break;};ii=ii+2;}else{encoded_str=encoded_str+orig_str.substring(ii,1+ii);ii=ii+1;}};}else{}var new_str_node=new CodeNode(this.code,sp,ep);new_str_node.parsed_type=4;new_str_node.value_type=4;if(must_encode){new_str_node.string_value=encoded_str;}else{new_str_node.string_value=s.substring(sp,ep);}this.insert_node(new_str_node);this.i=1+this.i;continue;}}if(fc==116&&s.charCodeAt(this.i+1)==114&&s.charCodeAt(this.i+2)==117&&s.charCodeAt(this.i+3)==101){var new_true_node=new CodeNode(this.code,sp,sp+4);new_true_node.value_type=5;new_true_node.parsed_type=5;new_true_node.boolean_value=true;this.insert_node(new_true_node);this.i=this.i+4;continue;}if(fc==102&&s.charCodeAt(this.i+1)==97&&s.charCodeAt(this.i+2)==108&&s.charCodeAt(this.i+3)==115&&s.charCodeAt(this.i+4)==101){var new_f_node=new CodeNode(this.code,sp,sp+5);new_f_node.value_type=5;new_f_node.parsed_type=5;new_f_node.boolean_value=false;this.insert_node(new_f_node);this.i=this.i+5;continue;}if(fc==64){this.i=this.i+1;sp=this.i;ep=this.i;c=s.charCodeAt(this.i);while(this.i<this.__len&&s.charCodeAt(this.i)>32&&c!=40&&c!=41&&c!=125){this.i=1+this.i;c=s.charCodeAt(this.i);};ep=this.i;if(this.i<this.__len&&ep>sp){var a_node2=new CodeNode(this.code,sp,ep);var a_name=s.substring(sp,ep);if(a_name=="noinfix"){disable_ops_set=true;}a_node2.expression=true;this.curr_node=a_node2;this.parents.push(a_node2);this.i=this.i+1;this.paren_cnt=this.paren_cnt+1;this.parse(disable_ops_set);var use_first=false;if(1==a_node2.children.length){var ch1=a_node2.children[0];use_first=ch1.isPrimitive();}if(use_first){var theNode=a_node2.children.splice(0,1).pop();this.curr_node.props[a_name]=theNode;}else{this.curr_node.props[a_name]=a_node2;}this.curr_node.prop_keys.push(a_name);continue;}}var ns_list=[];var last_ns=this.i;var ns_cnt=1;var vref_had_type_ann=false;var vref_ann_node=void 0;var vref_end=this.i;if(this.i<this.__len&&s.charCodeAt(this.i)>32&&c!=58&&c!=40&&c!=41&&c!=125){if(this.curr_node.is_block_node==true){var new_expr_node=new CodeNode(this.code,sp,ep);new_expr_node.parent=this.curr_node;new_expr_node.expression=true;this.curr_node.children.push(new_expr_node);this.curr_node=new_expr_node;this.parents.push(new_expr_node);this.paren_cnt=1+this.paren_cnt;this.parse(disable_ops_set);continue;}}var op_c=0;op_c=this.getOperator(disable_ops_set);var last_was_newline=false;if(op_c>0){}else{while(this.i<this.__len&&s.charCodeAt(this.i)>32&&c!=58&&c!=40&&c!=41&&c!=125){if(this.i>sp){var is_opchar=this.isOperator(disable_ops_set);if(is_opchar>0){break;}}this.i=1+this.i;c=s.charCodeAt(this.i);if(c==10||c==13){last_was_newline=true;break;}if(c==46){ns_list.push(s.substring(last_ns,this.i));last_ns=this.i+1;ns_cnt=1+ns_cnt;}if(this.i>vref_end&&c==64){vref_had_type_ann=true;vref_end=this.i;vref_ann_node=this.parse_raw_annotation();c=s.charCodeAt(this.i);break;}};}ep=this.i;if(vref_had_type_ann){ep=vref_end;}ns_list.push(s.substring(last_ns,ep));c=s.charCodeAt(this.i);while(this.i<this.__len&&c<=32&&false==last_was_newline){this.i=1+this.i;c=s.charCodeAt(this.i);if(is_block_parent&&(c==10||c==13)){this.i=this.i-1;c=s.charCodeAt(this.i);had_lf=true;break;}};if(false==disable_ops_set&&c==58){this.i=this.i+1;while(this.i<this.__len&&s.charCodeAt(this.i)<=32){this.i=1+this.i;};var vt_sp=this.i;var vt_ep=this.i;c=s.charCodeAt(this.i);if(c==40){var vann_arr2=this.parse_raw_annotation();vann_arr2.expression=true;var new_expr_node_1=new CodeNode(this.code,sp,vt_ep);new_expr_node_1.vref=s.substring(sp,ep);new_expr_node_1.ns=ns_list;new_expr_node_1.expression_value=vann_arr2;new_expr_node_1.parsed_type=17;new_expr_node_1.value_type=17;if(vref_had_type_ann){new_expr_node_1.vref_annotation=vref_ann_node;new_expr_node_1.has_vref_annotation=true;}this.curr_node.children.push(new_expr_node_1);continue;}if(c==91){this.i=this.i+1;vt_sp=this.i;var hash_sep=0;var had_array_type_ann=false;c=s.charCodeAt(this.i);while(this.i<this.__len&&c>32&&c!=93){this.i=1+this.i;c=s.charCodeAt(this.i);if(c==58){hash_sep=this.i;}if(c==64){had_array_type_ann=true;break;}};vt_ep=this.i;if(hash_sep>0){vt_ep=this.i;var type_name=s.substring(1+hash_sep,vt_ep);var key_type_name=s.substring(vt_sp,hash_sep);var new_hash_node=new CodeNode(this.code,sp,vt_ep);new_hash_node.vref=s.substring(sp,ep);new_hash_node.ns=ns_list;new_hash_node.parsed_type=7;new_hash_node.value_type=7;new_hash_node.array_type=type_name;new_hash_node.key_type=key_type_name;if(vref_had_type_ann){new_hash_node.vref_annotation=vref_ann_node;new_hash_node.has_vref_annotation=true;}if(had_array_type_ann){var vann_hash=this.parse_raw_annotation();new_hash_node.type_annotation=vann_hash;new_hash_node.has_type_annotation=true;}new_hash_node.parent=this.curr_node;this.curr_node.children.push(new_hash_node);this.i=1+this.i;continue;}else{vt_ep=this.i;var type_name_1=s.substring(vt_sp,vt_ep);var new_arr_node=new CodeNode(this.code,sp,vt_ep);new_arr_node.vref=s.substring(sp,ep);new_arr_node.ns=ns_list;new_arr_node.parsed_type=6;new_arr_node.value_type=6;new_arr_node.array_type=type_name_1;new_arr_node.parent=this.curr_node;this.curr_node.children.push(new_arr_node);if(vref_had_type_ann){new_arr_node.vref_annotation=vref_ann_node;new_arr_node.has_vref_annotation=true;}if(had_array_type_ann){var vann_arr=this.parse_raw_annotation();new_arr_node.type_annotation=vann_arr;new_arr_node.has_type_annotation=true;console.log("--> parsed ARRAY TYPE annotation");}this.i=1+this.i;continue;}}var had_type_ann=false;while(this.i<this.__len&&operatorsOfchar_14.isc95notc95limiter_15(c)){this.i=1+this.i;c=s.charCodeAt(this.i);if(c==64){had_type_ann=true;break;}};if(this.i<this.__len){vt_ep=this.i;/** unused: const type_name_2 = s.substring(vt_sp, vt_ep ) **/var new_ref_node=new CodeNode(this.code,sp,ep);new_ref_node.vref=s.substring(sp,ep);new_ref_node.ns=ns_list;new_ref_node.parsed_type=11;new_ref_node.value_type=11;new_ref_node.type_name=s.substring(vt_sp,vt_ep);new_ref_node.parent=this.curr_node;if(vref_had_type_ann){new_ref_node.vref_annotation=vref_ann_node;new_ref_node.has_vref_annotation=true;}this.curr_node.children.push(new_ref_node);if(had_type_ann){var vann=this.parse_raw_annotation();new_ref_node.type_annotation=vann;new_ref_node.has_type_annotation=true;}continue;}}else{if(this.i<this.__len&&ep>sp){var new_vref_node=new CodeNode(this.code,sp,ep);new_vref_node.vref=s.substring(sp,ep);new_vref_node.parsed_type=11;new_vref_node.value_type=11;new_vref_node.ns=ns_list;new_vref_node.parent=this.curr_node;var op_pred=this.getOperatorPred(new_vref_node.vref,disable_ops_set);if(new_vref_node.vref==","){this.curr_node.infix_operator=false;continue;}var pTarget=this.curr_node;if(this.curr_node.infix_operator){var iNode=this.curr_node.infix_node;if(op_pred>0||iNode.to_the_right==false){pTarget=iNode;}else{var rn=iNode.right_node;new_vref_node.parent=rn;pTarget=rn;}}pTarget.children.push(new_vref_node);if(vref_had_type_ann){new_vref_node.vref_annotation=vref_ann_node;new_vref_node.has_vref_annotation=true;}if(this.i+1<this.__len){if(s.charCodeAt(this.i+1)==40||s.charCodeAt(this.i+0)==40){if(0==op_pred&&this.curr_node.infix_operator&&1==this.curr_node.children.length){}}}if(op_pred>0&&this.curr_node.infix_operator||op_pred>0&&this.curr_node.children.length>=2){if(op_pred==3&&2==this.curr_node.children.length){var n_ch=this.curr_node.children.splice(0,1).pop();this.curr_node.children.push(n_ch);}else{if(false==this.curr_node.infix_operator){var if_node=new CodeNode(this.code,sp,ep);this.curr_node.infix_node=if_node;this.curr_node.infix_operator=true;if_node.infix_subnode=true;this.curr_node.value_type=0;this.curr_node.parsed_type=this.curr_node.value_type;this.curr_node.expression=true;if_node.expression=true;var ch_cnt=this.curr_node.children.length;var ii_1=0;var start_from=ch_cnt-2;var keep_nodes=new CodeNode(this.code,sp,ep);while(ch_cnt>0){var n_ch_1=this.curr_node.children.splice(0,1).pop();var p_target=if_node;if(ii_1<start_from||n_ch_1.infix_subnode){p_target=keep_nodes;}p_target.children.push(n_ch_1);ch_cnt=ch_cnt-1;ii_1=1+ii_1;};for(var i2=0;i2<keep_nodes.children.length;i2++){var keep=keep_nodes.children[i2];this.curr_node.children.push(keep);};this.curr_node.children.push(if_node);}var ifNode=this.curr_node.infix_node;var new_op_node=new CodeNode(this.code,sp,ep);new_op_node.expression=true;new_op_node.parent=ifNode;var until_index=ifNode.children.length-1;var to_right=false;var just_continue=false;if(ifNode.operator_pred>0&&ifNode.operator_pred<op_pred){to_right=true;}if(ifNode.operator_pred>0&&ifNode.operator_pred>op_pred){ifNode.to_the_right=false;}if(ifNode.operator_pred>0&&ifNode.operator_pred==op_pred){to_right=ifNode.to_the_right;}/** unused: const opTarget = ifNode **/if(to_right){var op_node=ifNode.children.splice(until_index,1).pop();var last_value=ifNode.children.splice(until_index-1,1).pop();new_op_node.children.push(op_node);new_op_node.children.push(last_value);}else{if(false==just_continue){while(until_index>0){var what_to_add=ifNode.children.splice(0,1).pop();new_op_node.children.push(what_to_add);until_index=until_index-1;};}}if(to_right||false==just_continue){ifNode.children.push(new_op_node);}if(to_right){ifNode.right_node=new_op_node;ifNode.to_the_right=true;}ifNode.operator_pred=op_pred;continue;}}continue;}}if(c==41||c==125){if(c==125&&is_block_parent&&this.curr_node.children.length>0){this.end_expression();}this.i=1+this.i;this.paren_cnt=this.paren_cnt-1;if(this.paren_cnt<0){break;}this.parents.pop();if(typeof this.curr_node!=="undefined"&&this.curr_node!=null){this.curr_node.ep=this.i;}if(this.parents.length>0){this.curr_node=this.parents[this.parents.length-1];}else{this.curr_node=this.rootNode;}break;}if(last_i==this.i){this.i=1+this.i;}}};}}]);return RangerLispParser;}();var RangerArgMatch=function(){function RangerArgMatch(){_classCallCheck(this,RangerArgMatch);this._debug=false;this.matched={};this.nodes={};this.matchedLambdas={};}_createClass(RangerArgMatch,[{key:"matchArguments",value:function matchArguments(args,callArgs,ctx,firstArgIndex){/** unused: const fc = callArgs.children[0] **/var missed_args=[];var all_matched=true;if(args.children.length==0&&callArgs.children.length>1){return false;}var lastArg=void 0;for(var i=0;i<callArgs.children.length;i++){var callArg=callArgs.children[i];if(i==0){continue;}if(callArg.is_part_of_chain){continue;}var arg_index=i-1;if(arg_index<args.children.length){lastArg=args.children[arg_index];}var arg=lastArg;if(arg.hasFlag("ignore")){continue;}if(arg.hasFlag("keyword")){if(callArg.vref==arg.vref){continue;}else{all_matched=false;break;}}if(arg.isPrimitiveType()){if(callArg.value_type==17||callArg.eval_type==17){all_matched=false;break;}}var call_arg_immutable=false;if(callArg.hasParamDesc){var pa=callArg.paramDesc;if(typeof pa.nameNode!=="undefined"&&pa.nameNode!=null){var b_immutable=pa.nameNode.hasFlag("immutable");if(arg.hasFlag("immutable")!=b_immutable){all_matched=false;}call_arg_immutable=b_immutable;}else{call_arg_immutable=pa.is_immutable;}}if(callArg.hasFlag("immutable")){call_arg_immutable=true;}if(arg.hasFlag("immutable")){if(false==call_arg_immutable){all_matched=false;break;}}if(true){if(arg.type_name=="block"||arg.hasFlag("block")){if(callArg.is_block_node){continue;}else{all_matched=false;}}}if(arg.hasFlag("mutable")){if(callArg.hasParamDesc){var pa_1=callArg.paramDesc;var b=pa_1.nameNode.hasFlag("mutable");if(b==false){missed_args.push("was mutable");all_matched=false;}}else{all_matched=false;}}if(arg.hasFlag("union")){if(ctx.isDefinedClass(callArg.eval_type_name)){var cc=ctx.findClass(callArg.eval_type_name);if(cc.is_union==false&&cc.is_system_union==false){all_matched=false;}}else{all_matched=false;}}if(arg.hasFlag("optional")){if(callArg.hasParamDesc){var pa_2=callArg.paramDesc;var b_1=pa_2.nameNode.hasFlag("optional");if(b_1==false){missed_args.push("optional was missing");all_matched=false;}}else{if(callArg.hasFlag("optional")){}else{all_matched=false;}}}if(callArg.hasFlag("optional")){if(false==arg.hasFlag("optional")){if(callArg.is_block_node){}else{all_matched=false;}}}if(arg.value_type!=7&&arg.value_type!=6){if(typeof callArg.paramDesc!=="undefined"&&callArg.paramDesc!=null){if(typeof callArg.paramDesc.nameNode!=="undefined"&&callArg.paramDesc.nameNode!=null&&typeof callArg.paramDesc.nameNode.expression_value!=="undefined"&&callArg.paramDesc.nameNode.expression_value!=null){this.matched[arg.type_name]="";this.matchedLambdas[arg.type_name]=callArg.paramDesc.nameNode.expression_value;continue;}}if(callArg.eval_type==13){if(arg.type_name=="enum"){continue;}}if(this._debug){console.log("-> trying to add type "+arg.type_name);}if(false==this.add(arg.type_name,callArg.eval_type_name,ctx)){all_matched=false;return all_matched;}}if(arg.value_type==6){if(false==this.add_atype(arg.array_type,callArg.eval_array_type,ctx)){all_matched=false;}}if(arg.value_type==7){if(false==this.add(arg.key_type,callArg.eval_key_type,ctx)){all_matched=false;}if(false==this.add_atype(arg.array_type,callArg.eval_array_type,ctx)){all_matched=false;}}var did_match=false;if(this.doesMatch(arg,callArg,ctx)){did_match=true;}else{missed_args.push("matching arg "+arg.vref+" faileg against "+callArg.vref);}if(false==did_match){all_matched=false;}};return all_matched;}},{key:"force_add",value:function force_add(tplKeyword,typeName,ctx){this.matched[tplKeyword]=typeName;}},{key:"addNode",value:function addNode(name,node){this.nodes[name]=node;}},{key:"add",value:function add(tplKeyword,typeName,ctx){switch(tplKeyword){case"string":return true;case"int":return true;case"double":return true;case"boolean":return true;case"enum":return true;case"char":return true;case"charbuffer":return true;};if(tplKeyword.length>1){return true;}if(typeof this.matched[tplKeyword]!="undefined"&&this.matched.hasOwnProperty(tplKeyword)){var s=this.matched[tplKeyword];if(this.areEqualTypes(s,typeName,ctx)){return true;}if(s==typeName){return true;}else{return false;}}this.matched[tplKeyword]=typeName;return true;}},{key:"add_atype",value:function add_atype(tplKeyword,typeName,ctx){switch(tplKeyword){case"string":return true;case"int":return true;case"double":return true;case"boolean":return true;case"enum":return true;case"char":return true;case"charbuffer":return true;};if(tplKeyword.length>1){return true;}if(typeof this.matched[tplKeyword]!="undefined"&&this.matched.hasOwnProperty(tplKeyword)){var s=this.matched[tplKeyword];if(this.areEqualATypes(s,typeName,ctx)){return true;}if(s==typeName){return true;}else{return false;}}this.matched[tplKeyword]=typeName;return true;}},{key:"doesDefsMatch",value:function doesDefsMatch(arg,node,ctx){if(node.value_type==13){if(arg.type_name=="enum"){return true;}else{return false;}}if(arg.value_type!=7&&arg.value_type!=6){var eq=this.areEqualTypes(arg.type_name,node.type_name,ctx);var t_name=arg.type_name;switch(t_name){case"expression":return node.expression;case"block":return node.expression;case"arguments":return node.expression;case"keyword":return node.eval_type==11;case"T.name":return node.eval_type_name==t_name;};return eq;}if(arg.value_type==6&&node.eval_type==6){var same_arrays=this.areEqualTypes(arg.array_type,node.array_type,ctx);return same_arrays;}if(arg.value_type==7&&node.eval_type==7){var same_arrays_1=this.areEqualTypes(arg.array_type,node.array_type,ctx);var same_keys=this.areEqualTypes(arg.key_type,node.key_type,ctx);return same_arrays_1&&same_keys;}return false;}},{key:"doesMatch",value:function doesMatch(arg,node,ctx){if(node.value_type==13){if(arg.type_name=="enum"){return true;}else{return false;}}if(arg.value_type!=7&&arg.value_type!=6){var eq=this.areEqualTypes(arg.type_name,node.eval_type_name,ctx);var t_name=arg.type_name;switch(t_name){case"expression":return node.expression;case"block":return node.expression;case"arguments":return node.expression;case"keyword":return node.eval_type==11;case"T.name":return node.eval_type_name==t_name;};return eq;}if(arg.value_type==6&&node.eval_type==6){var same_arrays=this.areEqualTypes(arg.array_type,node.eval_array_type,ctx);return same_arrays;}if(arg.value_type==7&&node.eval_type==7){var same_arrays_1=this.areEqualTypes(arg.array_type,node.eval_array_type,ctx);var same_keys=this.areEqualTypes(arg.key_type,node.eval_key_type,ctx);return same_arrays_1&&same_keys;}return false;}},{key:"areEqualTypes",value:function areEqualTypes(type1,type2,ctx){var t_name=type1;if(typeof this.matched[type1]!="undefined"&&this.matched.hasOwnProperty(type1)){t_name=this.matched[type1];}switch(t_name){case"string":return type2=="string";case"int":return type2=="int";case"double":return type2=="double";case"boolean":return type2=="boolean";case"enum":return type2=="enum";case"char":return type2=="char";case"charbuffer":return type2=="charbuffer";};if(ctx.isDefinedClass(t_name)&&ctx.isDefinedClass(type2)){var c1=ctx.findClass(t_name);var c2=ctx.findClass(type2);var trait1=c1.hasTrait(type2,ctx);if(c2.is_union==true&&c1.is_union==false){return false;}if(c2.is_system_union==true&&c1.is_system_union==false){return false;}if(typeof trait1!=="undefined"&&trait1!=null){this.force_add(type2,c1.name,ctx);if(typeof c1.trait_params[type2]!="undefined"&&c1.trait_params.hasOwnProperty(type2)){var pms=c1.trait_params[type2];for(var i=0;i<pms.param_names.length;i++){var pn=pms.param_names[i];var pn_value=pms.values[pn];this.add(pn,pn_value,ctx);};}}var trait1_1=c2.hasTrait(t_name,ctx);if(typeof trait1_1!=="undefined"&&trait1_1!=null){this.force_add(t_name,c2.name,ctx);if(typeof c2.trait_params[t_name]!="undefined"&&c2.trait_params.hasOwnProperty(t_name)){var pms_1=c2.trait_params[t_name];for(var i_1=0;i_1<pms_1.param_names.length;i_1++){var pn_1=pms_1.param_names[i_1];var pn_value_1=pms_1.values[pn_1];this.add(pn_1,pn_value_1,ctx);};}else{}}if(c1.isSameOrParentClass(type2,ctx)){return true;}if(c2.isSameOrParentClass(t_name,ctx)){return true;}}else{if(ctx.isDefinedClass(t_name)){var c1_1=ctx.findClass(t_name);if(c1_1.isSameOrParentClass(type2,ctx)){return true;}}}return t_name==type2;}},{key:"areEqualATypes",value:function areEqualATypes(type1,type2,ctx){var t_name=type1;if(typeof this.matched[type1]!="undefined"&&this.matched.hasOwnProperty(type1)){t_name=this.matched[type1];}switch(t_name){case"string":return type2=="string";case"int":return type2=="int";case"double":return type2=="double";case"boolean":return type2=="boolean";case"enum":return type2=="enum";case"char":return type2=="char";case"charbuffer":return type2=="charbuffer";};if(ctx.isDefinedClass(t_name)&&ctx.isDefinedClass(type2)){var c1=ctx.findClass(t_name);var c2=ctx.findClass(type2);var trait1=c1.hasTrait(type2,ctx);if(c2.is_union==true&&c1.is_union==false){return false;}if(c2.is_system_union==true&&c1.is_system_union==false){return false;}if(typeof trait1!=="undefined"&&trait1!=null){this.force_add(type2,c1.name,ctx);if(typeof c1.trait_params[type2]!="undefined"&&c1.trait_params.hasOwnProperty(type2)){var pms=c1.trait_params[type2];for(var i=0;i<pms.param_names.length;i++){var pn=pms.param_names[i];var pn_value=pms.values[pn];this.add(pn,pn_value,ctx);};}}var trait1_1=c2.hasTrait(t_name,ctx);if(typeof trait1_1!=="undefined"&&trait1_1!=null){this.force_add(t_name,c2.name,ctx);if(typeof c2.trait_params[t_name]!="undefined"&&c2.trait_params.hasOwnProperty(t_name)){var pms_1=c2.trait_params[t_name];for(var i_1=0;i_1<pms_1.param_names.length;i_1++){var pn_1=pms_1.param_names[i_1];var pn_value_1=pms_1.values[pn_1];this.add(pn_1,pn_value_1,ctx);};}else{}}if(c1.isSameOrParentClass(type2,ctx)){return true;}if(c2.isSameOrParentClass(t_name,ctx)){return true;}}else{}return t_name==type2;}},{key:"getTypeName",value:function getTypeName(n){var t_name=n;if(typeof this.matched[t_name]!="undefined"&&this.matched.hasOwnProperty(t_name)){t_name=this.matched[t_name];}if(0==t_name.length){return"";}return t_name;}},{key:"getType",value:function getType(n){var t_name=n;if(typeof this.matched[t_name]!="undefined"&&this.matched.hasOwnProperty(t_name)){t_name=this.matched[t_name];}if(0==t_name.length){return 0;}switch(t_name){case"expression":return 16;case"block":return 16;case"arguments":return 16;case"string":return 4;case"int":return 3;case"char":return 14;case"charbuffer":return 15;case"boolean":return 5;case"double":return 2;case"enum":return 13;};return 10;}},{key:"setRvBasedOn",value:function setRvBasedOn(arg,node){if(arg.hasFlag("optional")){node.setFlag("optional");}if(arg.hasFlag("immutable")){node.setFlag("immutable");}if(arg.value_type!=7&&arg.value_type!=6){if(typeof this.matchedLambdas[arg.type_name]!="undefined"&&this.matchedLambdas.hasOwnProperty(arg.type_name)){var lam=this.matchedLambdas[arg.type_name];node.eval_type=17;node.expression_value=lam.copy();return true;}node.eval_type=this.getType(arg.type_name);node.eval_type_name=this.getTypeName(arg.type_name);return true;}if(arg.value_type==6){node.eval_type=6;node.eval_array_type=this.getTypeName(arg.array_type);return true;}if(arg.value_type==7){node.eval_type=7;node.eval_key_type=this.getTypeName(arg.key_type);node.eval_array_type=this.getTypeName(arg.array_type);return true;}return false;}}]);return RangerArgMatch;}();var DictNode=function(){function DictNode(){_classCallCheck(this,DictNode);this.is_property=false;this.is_property_value=false;this.vref="";this.value_type=6;this.double_value=0.0;this.int_value=0;this.string_value="";this.boolean_value=false;this.children=[];this.objects={};this.dict_keys=[];}_createClass(DictNode,[{key:"EncodeString",value:function EncodeString(orig_str){var encoded_str="";/** unused: const str_length = orig_str.length **/var ii=0;var buff=orig_str;var cb_len=buff.length;while(ii<cb_len){var cc=buff.charCodeAt(ii);switch(cc){case 8:encoded_str=encoded_str+String.fromCharCode(92)+String.fromCharCode(98);break;case 9:encoded_str=encoded_str+String.fromCharCode(92)+String.fromCharCode(116);break;case 10:encoded_str=encoded_str+String.fromCharCode(92)+String.fromCharCode(110);break;case 12:encoded_str=encoded_str+String.fromCharCode(92)+String.fromCharCode(102);break;case 13:encoded_str=encoded_str+String.fromCharCode(92)+String.fromCharCode(114);break;case 34:encoded_str=encoded_str+String.fromCharCode(92)+"\"";break;case 92:encoded_str=encoded_str+String.fromCharCode(92)+String.fromCharCode(92);break;case 47:encoded_str=encoded_str+String.fromCharCode(92)+String.fromCharCode(47);break;default:encoded_str=encoded_str+String.fromCharCode(cc);break;};ii=1+ii;};return encoded_str;}},{key:"addString",value:function addString(key,value){if(this.value_type==6){var v=new DictNode();v.string_value=value;v.value_type=3;v.vref=key;v.is_property=true;this.dict_keys.push(key);this.objects[key]=v;}}},{key:"addDouble",value:function addDouble(key,value){if(this.value_type==6){var v=new DictNode();v.double_value=value;v.value_type=1;v.vref=key;v.is_property=true;this.dict_keys.push(key);this.objects[key]=v;}}},{key:"addInt",value:function addInt(key,value){if(this.value_type==6){var v=new DictNode();v.int_value=value;v.value_type=2;v.vref=key;v.is_property=true;this.dict_keys.push(key);this.objects[key]=v;}}},{key:"addBoolean",value:function addBoolean(key,value){if(this.value_type==6){var v=new DictNode();v.boolean_value=value;v.value_type=4;v.vref=key;v.is_property=true;this.dict_keys.push(key);this.objects[key]=v;}}},{key:"addObject",value:function addObject(key){var v=void 0;if(this.value_type==6){var p=new DictNode();v=new DictNode();p.value_type=6;p.vref=key;p.is_property=true;v.value_type=6;v.vref=key;v.is_property_value=true;p.object_value=v;this.dict_keys.push(key);this.objects[key]=p;return v;}return v;}},{key:"setObject",value:function setObject(key,value){if(this.value_type==6){var p=new DictNode();p.value_type=6;p.vref=key;p.is_property=true;value.is_property_value=true;value.vref=key;p.object_value=value;this.dict_keys.push(key);this.objects[key]=p;}}},{key:"addArray",value:function addArray(key){var v=void 0;if(this.value_type==6){v=new DictNode();v.value_type=5;v.vref=key;v.is_property=true;this.dict_keys.push(key);this.objects[key]=v;return v;}return v;}},{key:"push",value:function push(obj){if(this.value_type==5){this.children.push(obj);}}},{key:"getDoubleAt",value:function getDoubleAt(index){if(index<this.children.length){var k=this.children[index];return k.double_value;}return 0.0;}},{key:"getStringAt",value:function getStringAt(index){if(index<this.children.length){var k=this.children[index];return k.string_value;}return"";}},{key:"getIntAt",value:function getIntAt(index){if(index<this.children.length){var k=this.children[index];return k.int_value;}return 0;}},{key:"getBooleanAt",value:function getBooleanAt(index){if(index<this.children.length){var k=this.children[index];return k.boolean_value;}return false;}},{key:"getString",value:function getString(key){var res=void 0;if(typeof this.objects[key]!="undefined"&&this.objects.hasOwnProperty(key)){var k=this.objects[key];res=k.string_value;}return res;}},{key:"getDouble",value:function getDouble(key){var res=void 0;if(typeof this.objects[key]!="undefined"&&this.objects.hasOwnProperty(key)){var k=this.objects[key];res=k.double_value;}return res;}},{key:"getInt",value:function getInt(key){var res=void 0;if(typeof this.objects[key]!="undefined"&&this.objects.hasOwnProperty(key)){var k=this.objects[key];res=k.int_value;}return res;}},{key:"getBoolean",value:function getBoolean(key){var res=void 0;if(typeof this.objects[key]!="undefined"&&this.objects.hasOwnProperty(key)){var k=this.objects[key];res=k.boolean_value;}return res;}},{key:"getArray",value:function getArray(key){var res=void 0;if(typeof this.objects[key]!="undefined"&&this.objects.hasOwnProperty(key)){var obj=this.objects[key];if(obj.is_property){res=obj.object_value;}}return res;}},{key:"getArrayAt",value:function getArrayAt(index){var res=void 0;if(index<this.children.length){res=this.children[index];}return res;}},{key:"getObject",value:function getObject(key){var res=void 0;if(typeof this.objects[key]!="undefined"&&this.objects.hasOwnProperty(key)){var obj=this.objects[key];if(obj.is_property){res=obj.object_value;}}return res;}},{key:"getObjectAt",value:function getObjectAt(index){var res=void 0;if(index<this.children.length){res=this.children[index];}return res;}},{key:"stringify",value:function stringify(){if(this.is_property){if(this.value_type==7){return"\""+this.vref+"\""+":null";}if(this.value_type==4){if(this.boolean_value){return"\""+this.vref+"\""+":"+"true";}else{return"\""+this.vref+"\""+":"+"false";}}if(this.value_type==1){return"\""+this.vref+"\""+":"+this.double_value;}if(this.value_type==2){return"\""+this.vref+"\""+":"+this.int_value;}if(this.value_type==3){return"\""+this.vref+"\""+":"+"\""+this.EncodeString(this.string_value)+"\"";}}else{if(this.value_type==7){return"null";}if(this.value_type==1){return""+this.double_value;}if(this.value_type==2){return""+this.int_value;}if(this.value_type==3){return"\""+this.EncodeString(this.string_value)+"\"";}if(this.value_type==4){if(this.boolean_value){return"true";}else{return"false";}}}if(this.value_type==5){var str="";if(this.is_property){str="\""+this.vref+"\""+":[";}else{str="[";}for(var i=0;i<this.children.length;i++){var item=this.children[i];if(i>0){str=str+",";}str=str+item.stringify();};str=str+"]";return str;}if(this.value_type==6){var str_1="";if(this.is_property){return"\""+this.vref+"\""+":"+this.object_value.stringify();}else{str_1="{";for(var i_1=0;i_1<this.dict_keys.length;i_1++){var key=this.dict_keys[i_1];if(i_1>0){str_1=str_1+",";}var item_1=this.objects[key];str_1=str_1+item_1.stringify();};str_1=str_1+"}";return str_1;}}return"";}}]);return DictNode;}();DictNode.createEmptyObject=function(){var v=new DictNode();v.value_type=6;return v;};var RangerSerializeClass=function(){function RangerSerializeClass(){_classCallCheck(this,RangerSerializeClass);}_createClass(RangerSerializeClass,[{key:"isSerializedClass",value:function isSerializedClass(cName,ctx){if(ctx.hasClass(cName)){var clDecl=ctx.findClass(cName);if(clDecl.is_serialized){return true;}}return false;}},{key:"createWRWriter",value:function createWRWriter(pvar,nn,ctx,wr){wr.out("def key@(lives):DictNode (new DictNode())",true);wr.out("key.addString(\"n\" \""+pvar.name+"\")",true);if(nn.value_type==6){if(this.isSerializedClass(nn.array_type,ctx)){wr.out("def values:DictNode (obj_keys.addArray(\""+pvar.compiledName+"\"))",true);wr.out("for this."+pvar.compiledName+" item:"+nn.array_type+" i {",true);wr.indent(1);wr.out("def obj@(lives):DictNode (item.serializeToDict())",true);wr.out("values.push( obj )",true);wr.indent(-1);wr.out("}",true);}return;}if(nn.value_type==7){if(this.isSerializedClass(nn.array_type,ctx)){wr.out("def values:DictNode (obj_keys.addObject(\""+pvar.compiledName+"\"))",true);wr.out("for this."+pvar.compiledName+" keyname {",true);wr.indent(1);wr.out("def item:DictNode (unwrap (get this."+pvar.compiledName+" keyname))",true);wr.out("def obj@(lives):DictNode (item.serializeToDict())",true);wr.out("values.setObject( obj )",true);wr.indent(-1);wr.out("}",true);}if(nn.key_type=="string"){wr.out("def values:DictNode (obj_keys.addObject(\""+pvar.compiledName+"\"))",true);wr.out("for this."+pvar.compiledName+" keyname {",true);wr.indent(1);if(nn.array_type=="string"){wr.out("values.addString(keyname (unwrap (get this."+pvar.compiledName+" keyname)))",true);}if(nn.array_type=="int"){wr.out("values.addInt(keyname (unwrap (get this."+pvar.compiledName+" keyname)))",true);}if(nn.array_type=="boolean"){wr.out("values.addBoolean(keyname (unwrap (get this."+pvar.compiledName+" keyname)))",true);}if(nn.array_type=="double"){wr.out("values.addDouble(keyname (unwrap (get this."+pvar.compiledName+" keyname)))",true);}if(nn.value_type==13){wr.out("values.addInt(keyname (unwrap (get this."+pvar.compiledName+" keyname)))",true);}wr.indent(-1);wr.out("}",true);return;}return;}if(nn.type_name=="string"){wr.out("obj_keys.addString(\""+pvar.compiledName+"\" (this."+pvar.compiledName+"))",true);return;}if(nn.type_name=="double"){wr.out("obj_keys.addDouble(\""+pvar.compiledName+"\" (this."+pvar.compiledName+"))",true);return;}if(nn.type_name=="int"){wr.out("obj_keys.addInt(\""+pvar.compiledName+"\" (this."+pvar.compiledName+"))",true);return;}if(nn.type_name=="boolean"){wr.out("obj_keys.addBoolean(\""+pvar.compiledName+"\" (this."+pvar.compiledName+"))",true);return;}if(nn.value_type==13){wr.out("obj_keys.addInt(\""+pvar.compiledName+"\" (this."+pvar.compiledName+"))",true);return;}if(this.isSerializedClass(nn.type_name,ctx)){wr.out("def value@(lives):DictNode (this."+pvar.compiledName+".serializeToDict())",true);wr.out("obj_keys.setObject(\""+pvar.compiledName+"\" value)",true);}}},{key:"createJSONSerializerFn",value:function createJSONSerializerFn(cl,ctx,wr){var declaredVariable={};wr.out("Import \"ng_DictNode.clj\"",true);wr.out("extension "+cl.name+" {",true);wr.indent(1);wr.out("fn unserializeFromDict@(strong):"+cl.name+" (dict:DictNode) {",true);wr.indent(1);wr.out("def obj:"+cl.name+" (new "+cl.name+"())",true);wr.out("return obj",true);wr.indent(-1);wr.out("}",true);wr.newline();wr.out("fn serializeToDict:DictNode () {",true);wr.indent(1);wr.out("def res:DictNode (new DictNode ())",true);wr.out("res.addString(\"n\" \""+cl.name+"\")",true);wr.out("def obj_keys:DictNode (res.addObject(\"data\"))",true);if(cl.extends_classes.length>0){for(var i=0;i<cl.extends_classes.length;i++){var pName=cl.extends_classes[i];var pC=ctx.findClass(pName);for(var i_1=0;i_1<pC.variables.length;i_1++){var pvar=pC.variables[i_1];declaredVariable[pvar.name]=true;var nn=pvar.nameNode;if(nn.isPrimitive()){wr.out("; extended ",true);wr.out("def key@(lives):DictNode (new DictNode())",true);wr.out("key.addString(\"n\" \""+pvar.name+"\")",true);wr.out("key.addString(\"t\" \""+pvar.value_type+"\")",true);wr.out("obj_keys.push(key)",true);}};};}for(var i_2=0;i_2<cl.variables.length;i_2++){var pvar_1=cl.variables[i_2];if(typeof declaredVariable[pvar_1.name]!="undefined"&&declaredVariable.hasOwnProperty(pvar_1.name)){continue;}var nn_1=pvar_1.nameNode;if(nn_1.hasFlag("optional")){wr.out("; optional variable",true);wr.out("if (!null? this."+pvar_1.name+") {",true);wr.indent(1);this.createWRWriter(pvar_1,nn_1,ctx,wr);wr.indent(-1);wr.out("} {",true);wr.indent(1);wr.indent(-1);wr.out("}",true);continue;}wr.out("; not extended ",true);this.createWRWriter(pvar_1,nn_1,ctx,wr);};wr.out("return res",true);wr.indent(-1);wr.out("}",true);wr.indent(-1);wr.out("}",true);}},{key:"createWRWriter2",value:function createWRWriter2(pvar,nn,ctx,wr){if(nn.value_type==6){if(this.isSerializedClass(nn.array_type,ctx)){wr.out("def values:JSONArrayObject (json_array)",true);wr.out("for this."+pvar.compiledName+" item:"+nn.array_type+" i {",true);wr.indent(1);wr.out("def obj@(lives):JSONDataObject (item.toDictionary())",true);wr.out("push values obj",true);wr.indent(-1);wr.out("}",true);wr.out("set res \""+pvar.name+"\" values ",true);}else{wr.out("def values:JSONArrayObject (json_array)",true);wr.out("for this."+pvar.compiledName+" item:"+nn.array_type+" i {",true);wr.indent(1);wr.out("push values item",true);wr.indent(-1);wr.out("}",true);wr.out("set res \""+pvar.name+"\" values ",true);}return;}if(nn.value_type==7){if(this.isSerializedClass(nn.array_type,ctx)){wr.out("def values:JSONDataObject (json_object)",true);wr.out("def keyList (keys this."+pvar.compiledName+")",true);wr.out("for keyList keyname:string index {",true);wr.indent(1);wr.out("def item (unwrap (get this."+pvar.compiledName+" keyname))",true);if(ctx.isDefinedClass(nn.array_type)){wr.out("def obj@(lives):JSONDataObject (item.toDictionary())",true);wr.out("set values keyname obj ",true);}else{wr.out("set values keyname item ",true);}wr.indent(-1);wr.out("}",true);wr.out("set res \""+pvar.name+"\" values ",true);}else{if(ctx.isDefinedClass(nn.array_type)==false){wr.out("def values:JSONDataObject (json_object)",true);wr.out("def keyList (keys this."+pvar.compiledName+")",true);wr.out("for keyList keyname:string index {",true);wr.indent(1);wr.out("def item (unwrap (get this."+pvar.compiledName+" keyname))",true);wr.out("set values keyname item ",true);wr.indent(-1);wr.out("}",true);wr.out("set res \""+pvar.name+"\" values ",true);}}return;}if(nn.hasFlag("optional")){if(ctx.isDefinedClass(nn.type_name)==false){wr.out("set res \""+pvar.name+"\" (unwrap this."+pvar.compiledName+") ",true);}else{wr.out("set res \""+pvar.name+"\" (call (unwrap this."+pvar.compiledName+") toDictionary ()) ",true);}}else{if(ctx.isDefinedClass(nn.type_name)==false){wr.out("set res \""+pvar.name+"\" (this."+pvar.compiledName+") ",true);}else{wr.out("set res \""+pvar.name+"\" (this."+pvar.compiledName+".toDictionary()) ",true);}}}},{key:"createWRReader2",value:function createWRReader2(pvar,nn,ctx,wr){if(nn.value_type==6){if(this.isSerializedClass(nn.array_type,ctx)){wr.out("def values:JSONArrayObject (getArray dict \""+pvar.name+"\")",true);wr.out("if(!null? values) {",true);wr.indent(1);wr.out("def arr (unwrap values)",true);wr.out("arr.forEach({",true);wr.indent(1);wr.out("case item oo:JSONDataObject {",true);wr.indent(1);wr.out("def newObj ("+nn.array_type+".fromDictionary(oo))",true);wr.out("push obj."+pvar.name+" newObj",true);wr.indent(-1);wr.out("}",true);wr.indent(-1);wr.out("})",true);wr.indent(-1);wr.out("}",true);}else{wr.out("def values:JSONArrayObject (getArray dict \""+pvar.name+"\")",true);wr.out("if(!null? values) {",true);wr.indent(1);wr.out("def arr (unwrap values)",true);wr.out("arr.forEach({",true);wr.indent(1);wr.out("case item oo:"+nn.array_type+" {",true);wr.indent(1);wr.out("push obj."+pvar.name+" oo",true);wr.indent(-1);wr.out("}",true);wr.indent(-1);wr.out("})",true);wr.indent(-1);wr.out("}",true);}return;}if(nn.value_type==7){if(this.isSerializedClass(nn.array_type,ctx)){wr.out("def values (getObject dict \""+pvar.name+"\")",true);wr.out("if(!null? values) {",true);wr.indent(1);wr.out("def theObj"+pvar.name+" (unwrap values)",true);wr.out("def obj_keys (keys theObj"+pvar.name+")",true);wr.out("obj_keys.forEach({",true);wr.indent(1);if(ctx.isDefinedClass(nn.array_type)){wr.out("def theValue (getObject theObj"+pvar.name+" item ) ",true);wr.out("if(!null? theValue) {",true);wr.indent(1);wr.out("def newObj@(lives) ("+nn.array_type+".fromDictionary((unwrap theValue)))",true);wr.out("set obj."+pvar.name+" item newObj ",true);wr.indent(-1);wr.out("}",true);}else{}wr.indent(-1);wr.out("})",true);wr.indent(-1);wr.out("}",true);}else{wr.out("def values (getObject dict \""+pvar.name+"\")",true);wr.out("if(!null? values) {",true);wr.indent(1);wr.out("def theObj"+pvar.name+" (unwrap values)",true);wr.out("def obj_keys (keys theObj"+pvar.name+")",true);wr.out("obj_keys.forEach({",true);wr.indent(1);if(ctx.isDefinedClass(nn.array_type)){}else{switch(nn.array_type){case"string":wr.out("def v (getStr theObj"+pvar.name+" item)",true);wr.out("if(!null? v) {",true);wr.indent(1);wr.out("set obj."+pvar.name+" item (unwrap v) ",true);wr.indent(-1);wr.out("}",true);break;case"int":wr.out("def v (getInt theObj"+pvar.name+" item)",true);wr.out("if(!null? v) {",true);wr.indent(1);wr.out("set obj."+pvar.name+" item (unwrap v) ",true);wr.indent(-1);wr.out("}",true);break;case"double":wr.out("def v (getDouble theObj"+pvar.name+" item)",true);wr.out("if(!null? v) {",true);wr.indent(1);wr.out("set obj."+pvar.name+" item (unwrap v) ",true);wr.indent(-1);wr.out("}",true);break;case"boolean":wr.out("def v (getBoolean theObj"+pvar.name+" item)",true);wr.out("if(!null? v) {",true);wr.indent(1);wr.out("set obj."+pvar.name+" item (unwrap v) ",true);wr.indent(-1);wr.out("}",true);break;};}wr.indent(-1);wr.out("})",true);wr.indent(-1);wr.out("}",true);}return;}switch(nn.type_name){case"string":wr.out("def v (getStr dict \""+pvar.name+"\")",true);wr.out("if(!null? v) {",true);wr.indent(1);wr.out("obj."+pvar.name+" = (unwrap v) ",true);wr.indent(-1);wr.out("}",true);break;case"int":wr.out("def v (getInt dict \""+pvar.name+"\")",true);wr.out("if(!null? v) {",true);wr.indent(1);wr.out("obj."+pvar.name+" = (unwrap v) ",true);wr.indent(-1);wr.out("}",true);break;case"double":wr.out("def v (getDouble dict \""+pvar.name+"\")",true);wr.out("if(!null? v) {",true);wr.indent(1);wr.out("obj."+pvar.name+" = (unwrap v) ",true);wr.indent(-1);wr.out("}",true);break;case"boolean":wr.out("def v (getBoolean dict \""+pvar.name+"\")",true);wr.out("if(!null? v) {",true);wr.indent(1);wr.out("obj."+pvar.name+" = (unwrap v) ",true);wr.indent(-1);wr.out("}",true);break;};if(ctx.isDefinedClass(nn.type_name)){wr.out("def theValue (getObject dict \""+pvar.name+"\") ",true);wr.out("if(!null? theValue) {",true);wr.indent(1);wr.out("def newObj@(lives) ("+nn.type_name+".fromDictionary((unwrap theValue)))",true);wr.out("obj."+pvar.name+" = newObj ",true);wr.indent(-1);wr.out("}",true);}else{}if(nn.value_type==13){wr.out("def v (getInt dict \""+pvar.name+"\")",true);wr.out("if(!null? v) {",true);wr.indent(1);wr.out("obj."+pvar.name+" = (unwrap v) ",true);wr.indent(-1);wr.out("}",true);}}},{key:"createJSONSerializerFn2",value:function createJSONSerializerFn2(cl,ctx,wr){var use_exceptions=operatorsOf_12.getTargetLang_13(ctx)!="swift3";var declaredVariable={};wr.out("extension "+cl.name+" {",true);wr.indent(1);wr.out("static fn fromDictionary@(strong):"+cl.name+" (dict:JSONDataObject) {",true);wr.indent(1);wr.out("def obj:"+cl.name+" (new "+cl.name+"())",true);if(use_exceptions){wr.out("try {",true);wr.indent(1);}for(var i=0;i<cl.variables.length;i++){var pvar=cl.variables[i];if(typeof declaredVariable[pvar.name]!="undefined"&&declaredVariable.hasOwnProperty(pvar.name)){continue;}var nn=pvar.nameNode;this.createWRReader2(pvar,nn,ctx,wr);};if(use_exceptions){wr.indent(-1);wr.out("} {",true);wr.out("}",true);}wr.out("return obj",true);wr.indent(-1);wr.out("}",true);wr.newline();wr.out("fn toDictionary:JSONDataObject () {",true);wr.indent(1);wr.out("def res:JSONDataObject (json_object)",true);if(use_exceptions){wr.out("try {",true);wr.indent(1);}if(cl.extends_classes.length>0){for(var i_1=0;i_1<cl.extends_classes.length;i_1++){var pName=cl.extends_classes[i_1];var pC=ctx.findClass(pName);for(var i_2=0;i_2<pC.variables.length;i_2++){var pvar_1=pC.variables[i_2];declaredVariable[pvar_1.name]=true;/** unused: const nn_1 = pvar_1.nameNode **/};};}for(var i_3=0;i_3<cl.variables.length;i_3++){var pvar_2=cl.variables[i_3];if(typeof declaredVariable[pvar_2.name]!="undefined"&&declaredVariable.hasOwnProperty(pvar_2.name)){continue;}var nn_2=pvar_2.nameNode;if(nn_2.hasFlag("optional")){wr.out("; optional variable",true);wr.out("if (!null? this."+pvar_2.compiledName+") {",true);wr.indent(1);this.createWRWriter2(pvar_2,nn_2,ctx,wr);wr.indent(-1);wr.out("}",true);continue;}wr.out("; not extended ",true);this.createWRWriter2(pvar_2,nn_2,ctx,wr);};if(use_exceptions){wr.indent(-1);wr.out("} {",true);wr.indent(1);wr.out("",true);wr.indent(-1);wr.out("}",true);}wr.out("return res",true);wr.indent(-1);wr.out("}",true);wr.indent(-1);wr.out("}",true);}}]);return RangerSerializeClass;}();var RangerImmutableExtension=function(){function RangerImmutableExtension(){_classCallCheck(this,RangerImmutableExtension);}_createClass(RangerImmutableExtension,[{key:"typeDefOf",value:function typeDefOf(p){var nn=p.nameNode;if(p.value_type==6){return"["+nn.array_type+"]";}if(p.value_type==7){return"["+nn.key_type+":"+nn.array_type+"]";}if(nn.value_type==6){return"["+nn.array_type+"]";}if(nn.value_type==7){return"["+nn.key_type+":"+nn.array_type+"]";}return nn.type_name;}},{key:"createImmutableExtension",value:function createImmutableExtension(cl,ctx,wr){var declaredVariable={};wr.out("extension "+cl.name+" {",true);wr.indent(1);if(cl.extends_classes.length>0){for(var i=0;i<cl.extends_classes.length;i++){var pName=cl.extends_classes[i];var pC=ctx.findClass(pName);for(var i_1=0;i_1<pC.variables.length;i_1++){var pvar=pC.variables[i_1];declaredVariable[pvar.name]=true;/** unused: const nn = pvar.nameNode **/};};}wr.out("fn __CopySelf:"+cl.name+" () {",true);wr.indent(1);wr.out("def res (new "+cl.name+")",true);for(var ii=0;ii<cl.variables.length;ii++){var ivar=cl.variables[ii];wr.out("res."+ivar.compiledName+" = this."+ivar.compiledName,true);};wr.out("return res",true);wr.indent(-1);wr.out("}",true);for(var i_2=0;i_2<cl.variables.length;i_2++){var pvar_1=cl.variables[i_2];if(typeof declaredVariable[pvar_1.name]!="undefined"&&declaredVariable.hasOwnProperty(pvar_1.name)){continue;}/** unused: const nn_1 = pvar_1.nameNode **/if(true){wr.out("fn set_"+pvar_1.name+":"+cl.name+" (new_value_of_"+pvar_1.name+":"+this.typeDefOf(pvar_1)+") {",true);wr.indent(1);wr.out("def res (this.__CopySelf())",true);for(var ii_1=0;ii_1<cl.variables.length;ii_1++){var ivar_1=cl.variables[ii_1];if(ivar_1==pvar_1){wr.out("res."+pvar_1.compiledName+" = new_value_of_"+pvar_1.name,true);}};wr.out("return res",true);wr.indent(-1);wr.out("}",true);}else{}};wr.indent(-1);wr.out("}",true);}}]);return RangerImmutableExtension;}();var RangerServiceBuilder=function(){function RangerServiceBuilder(){_classCallCheck(this,RangerServiceBuilder);}_createClass(RangerServiceBuilder,[{key:"createOpStaticClass",value:function createOpStaticClass(ctx,name){var nameWillBe=name;var str="";var i=0;var __len=nameWillBe.length;while(i<__len){var c=nameWillBe.charCodeAt(i);if(c==".".charCodeAt(0)){str=str+"_";}else{str=str+nameWillBe.substring(i,i+1);}i=i+1;};if(ctx.isDefinedClass(str)){return ctx.findClass(str);}var tpl_code="class "+str+" {\r\n}";var code=new SourceCode(tpl_code);code.filename=str+".ranger";var parser=new RangerLispParser(code);parser.parse(false);var classRoot=parser.rootNode.children[0];var classNameNode=classRoot.getSecond();classNameNode.vref=str;var new_class=new RangerAppClassDesc();new_class.name=str;new_class.is_operator_class=true;new_class.nameNode=classNameNode;new_class.classNode=classRoot;var subCtx=ctx.fork();subCtx.setCurrentClass(new_class);new_class.ctx=subCtx;var root=ctx.getRoot();root.addClass(str,new_class);classNameNode.clDesc=new_class;root.staticClassBodies.push(classRoot);return new_class;}},{key:"CreateServices",value:function CreateServices(parser,ctx,orig_wr){if(ctx.hasCompilerFlag("client")||ctx.hasCompilerSetting("client")){console.log("--> could create Client services for Java here...");var root=ctx.getRoot();var cl=this.createOpStaticClass(ctx,"RangerAppService");console.log("created "+cl.name);operatorsOf_4.forEach_16(root.appServices,function(item,index){console.log(" - service "+index);});}}}]);return RangerServiceBuilder;}();var RangerAppOperatorDesc=function(_RangerAppParamDesc3){_inherits(RangerAppOperatorDesc,_RangerAppParamDesc3);function RangerAppOperatorDesc(){_classCallCheck(this,RangerAppOperatorDesc);var _this8=_possibleConstructorReturn(this,(RangerAppOperatorDesc.__proto__||Object.getPrototypeOf(RangerAppOperatorDesc)).call(this));_this8.name="";_this8.ref_cnt=0;/** note: unused */_this8.op_params=[];return _this8;}_createClass(RangerAppOperatorDesc,[{key:"isOperator",value:function isOperator(){return true;}},{key:"isProperty",value:function isProperty(){return false;}}]);return RangerAppOperatorDesc;}(RangerAppParamDesc);var TFiles=function TFiles(){_classCallCheck(this,TFiles);};TFiles.search=function(paths,fileName){for(var i=0;i<paths.length;i++){var path=paths[i];if(require("fs").existsSync(path+"/"+fileName)){return path;}};return"";};var TTypes=function TTypes(){_classCallCheck(this,TTypes);};TTypes.nameToValue=function(name){switch(name){case"double":return 2;case"int":return 3;case"string":return 4;case"boolean":return 5;case"char":return 14;case"charbuffer":return 15;};return 0;};TTypes.isPrimitive=function(valueType){switch(valueType){case 2:return true;case 4:return true;case 3:return true;case 5:return true;case 14:return true;case 15:return true;case 13:return true;};return false;};TTypes.valueAsString=function(valueType){switch(valueType){case 2:return"double";case 4:return"string";case 3:return"int";case 5:return"boolean";case 14:return"char";case 15:return"charbuffer";case 0:return"<no type>";case 1:return"<invalid type>";case 6:return"[]";case 7:return"[:]";case 8:return"ImmutableArray";case 9:return"ImmutableHash";case 10:return"Object";case 11:return"VRef";case 13:return"Enum";case 12:return"Comment";case 16:return"Expression";case 17:return"ExpressionType";case 18:return"Lambda";case 19:return"XMLNode";case 20:return"XMLText";case 21:return"XMLAttr";case 22:return"XMLAttr";case 23:return"Dictionary";case 24:return"Any";case 25:return"Class";case 26:return"GenericClass";case 27:return"ClassRef";case 28:return"Method";case 29:return"ClassVar";case 30:return"ClassVar";case 31:return"Literal";case 32:return"Quasiliteral";case 33:return"Null";case 34:return"ArrayLiteral";default:return"InvalidValueTypeEnum";break;};return"";};TTypes.baseTypeAsEval=function(node,ctx,wr){var vType=node.value_type;node.eval_type=vType;if(TTypes.isPrimitive(node.value_type)){node.eval_type_name=TTypes.valueAsString(node.value_type);}else{var vType_2=node.type_name;node.eval_type_name=vType_2;}var vType1=node.array_type;var vType2=node.key_type;node.eval_array_type=vType1;node.eval_key_type=vType2;};var ClassJoinPoint=function ClassJoinPoint(){_classCallCheck(this,ClassJoinPoint);};var WalkLater=function WalkLater(){_classCallCheck(this,WalkLater);};var RangerFlowParser=function(){function RangerFlowParser(){_classCallCheck(this,RangerFlowParser);this.hasRootPath=false;/** note: unused */this.rootPath="";/** note: unused */this._debug=false;/** note: unused */this.collectWalkAtEnd=[];/** note: unused */this.walkAlso=[];this.serializedClasses=[];this.immutableClasses=[];this.classesWithTraits=[];this.collectedIntefaces=[];this.definedInterfaces={};/** note: unused */this.signatureCnt=0;this.argSignatureCnt=0;/** note: unused */this.mainCnt=0;this.isDefinedSignature={};this.isDefinedArgSignature={};this.extendedClasses={};}_createClass(RangerFlowParser,[{key:"WalkNodeChildren",value:function WalkNodeChildren(node,ctx,wr){if(node.hasStringProperty("todo")){ctx.addTodo(node,node.getStringProperty("todo"));}if(node.expression){var is_chaining=false;var last_is_assign=false;var chainRoot=void 0;var innerNode=void 0;var assignNode=void 0;var newNode=void 0;var ch_len=node.children.length;for(var i=0;i<node.children.length;i++){var item=node.children[i];var did_find=false;if(item.children.length>0){var fc=item.getFirst();var name=fc.vref;if(name.length>0&&name.charCodeAt(0)==".".charCodeAt(0)){did_find=true;if(i>0){var last_line=node.children[i-1];if(is_chaining==false){last_line.createChainTarget();is_chaining=true;if(typeof last_line.chainTarget!=="undefined"&&last_line.chainTarget!=null){chainRoot=last_line.chainTarget;innerNode=last_line.chainTarget;assignNode=last_line;last_is_assign=true;}else{chainRoot=last_line;innerNode=last_line;}}var method_name=name.substring(1,name.length);var mArgs=item.getSecond();if(last_is_assign){assignNode.children.push(fc.copy());assignNode.children.push(mArgs.copy());}else{newNode=node.newExpressionNode();newNode.add(node.newVRefNode("call"));newNode.add(innerNode.copy());newNode.add(node.newVRefNode(method_name));newNode.add(mArgs.copy());innerNode=newNode;}item.is_part_of_chain=true;}}}if(did_find==false||i==ch_len-1){if(is_chaining&&last_is_assign==false){chainRoot.getChildrenFrom(innerNode);chainRoot.tag="chainroot";}is_chaining=false;last_is_assign=false;}};for(var i_1=0;i_1<node.children.length;i_1++){var item_1=node.children[i_1];if(ctx.expressionLevel()==0){ctx.lastBlockOp=item_1;}item_1.parent=node;this.WalkNode(item_1,ctx,wr);node.copyEvalResFrom(item_1);};}}},{key:"WalkNode",value:function WalkNode(node,ctx,wr){/** unused: const line_index = node.getLine() **/if(node.flow_done){return true;}if(ctx.isPluginOp(node)){return true;}node.flow_ctx=ctx;node.flow_done=true;this.lastProcessedNode=node;if(node.hasStringProperty("todo")){ctx.addTodo(node,node.getStringProperty("todo"));}if(node.is_part_of_chain){return true;}if(node.isPrimitive()){if(ctx.expressionLevel()==0){if(false==ctx.hasCompilerFlag("voidexpr")){ctx.addError(node,"Primitive element at top level!");}}this.WriteScalarValue(node,ctx,wr);return true;}if(node.value_type==11||node.value_type==7||node.value_type==6){this.WriteVRef(node,ctx,wr);return true;}if(node.value_type==12){return true;}if(node.children.length>0){var fc=node.getFirst();if(fc.ns.length>1){if(fc.ns[0]=="plugin"){if(node.is_plugin){return true;}node.is_plugin=true;var pName=fc.ns[1];ctx.addPluginNode(pName,node);return true;}}}if(node.children.length==1){var fc_1=node.children[0];if(ctx.isVarDefined(fc_1.vref)){fc_1.parent=node;if(typeof fc_1.evalCtx!=="undefined"&&fc_1.evalCtx!=null){this.WalkNode(fc_1,fc_1.evalCtx,wr);}else{this.WalkNode(fc_1,ctx,wr);}node.copyEvalResFrom(fc_1);return true;}}var skip_if=["Extends","operator","extends","operators","systemclass","systemunion","union","flag","trait","enum","Import"];if(node.children.length>0){var fc_2=node.children[0];if(skip_if.indexOf(fc_2.vref)>=0){return true;}var b_found=true;var opFn=ctx.getOpFns(fc_2.vref);if(opFn.length>0){this.TranformOpFn(opFn,node,ctx,wr);return true;}switch(fc_2.vref){case"page":var sc=node.getSecond();ctx.addPage(sc.vref,node);break;case"def":operatorsOfRangerFlowParser_17.EnterVarDef_18(this,node,ctx,wr);break;case"var":operatorsOf_17.EnterVarDef_18(this,node,ctx,wr);break;case"let":operatorsOf_17.EnterVarDef_18(this,node,ctx,wr);break;case"property":this.GetProperty(node,ctx,wr);break;case"CreateClass":this.EnterClass(node,ctx,wr);break;case"class":this.EnterClass(node,ctx,wr);break;case"defn":this.DefineOpFn(node,ctx,wr);break;case"fn":if(ctx.isInMethod()){this.EnterLambdaMethod(node,ctx,wr);}else{this.EnterMethod(node,ctx,wr);}break;case"sfn":this.EnterStaticMethod(node,ctx,wr);break;case"static":this.EnterStaticMethod(node,ctx,wr);break;case"=":this.cmdAssign(node,ctx,wr);break;case"constructor":this.Constructor(node,ctx,wr);break;case"Constructor":this.Constructor(node,ctx,wr);break;case"new":this.cmdNew(node,ctx,wr);break;case"[]":this.cmdArray(node,ctx,wr);break;case"call":this.cmdCall(node,ctx,wr);break;case"fun":this.EnterLambdaMethod(node,ctx,wr);break;case"extension":this.EnterClass(node,ctx,wr);break;case"service":try{var sc_1=node.getSecond();var params=node.getThird();ctx.addService(sc_1.vref,node);var paramClass=params.getFirst();var rvClassDef=ctx.findClass(sc_1.type_name);var paramClassDef=ctx.findClass(paramClass.type_name);node.appGUID=sc_1.vref+"_"+require('crypto').createHash('sha256').update(rvClassDef.node.getCode()+paramClassDef.node.getCode()).digest('hex');}catch(e){ctx.addError(node,"invalid service definition");}break;default:b_found=false;break;};if(b_found){return true;}}if(this.matchNode(node,ctx,wr)){return true;}if(node.children.length>0){var fc_3=node.children[0];if(fc_3.expression&&node.children.length==2){var sec=node.getSecond();if(sec.vref.length>0&&sec.vref[0]=="."){this.WalkNode(fc_3,ctx,wr);if(fc_3.eval_type_name.length>0&&ctx.isDefinedClass(fc_3.eval_type_name)){var parts=sec.vref.substring(1,sec.vref.length).split(".");var method_name=parts[0];var classDesc=ctx.findClass(fc_3.eval_type_name);/** unused: const objExpr = fc_3.copy() **/var calledItem=CodeNode.fromList([CodeNode.vref1("property"),fc_3.copy(),CodeNode.vref1(method_name)]);operatorsOf.forEach_3(parts,function(item,index){if(index>0){try{var p=classDesc.findVariable(method_name);classDesc=ctx.findClass(p.nameNode.type_name);calledItem=CodeNode.fromList([CodeNode.vref1("property"),calledItem.copy(),CodeNode.vref1(item)]);method_name=item;}catch(e){ctx.addError(sec,"invalid property");}}});var m=classDesc.findVariable(method_name);if(typeof m!=="undefined"&&m!=null){node.getChildrenFrom(calledItem);node.flow_done=false;this.WalkNode(node,ctx,wr);return true;}var m_1=classDesc.findMethod(method_name);if(typeof m_1!=="undefined"&&m_1!=null){node.getChildrenFrom(calledItem);node.flow_done=false;this.transformMethodToLambda(node,m_1,ctx,wr);return true;}}}}if(fc_3.expression&&node.children.length==3){var sec_1=node.getSecond();var third=node.getThird();if(sec_1.vref.length>0&&sec_1.vref[0]=="."){this.WalkNode(fc_3,ctx,wr);var parts_1=sec_1.vref.substring(1,sec_1.vref.length).split(".");var method_name_1=parts_1[parts_1.length-1];var classDesc_1=ctx.findClass(fc_3.eval_type_name);/** unused: const objExpr_1 = fc_3.copy() **/var calledItem_1=fc_3.copy();operatorsOf.forEach_3(parts_1,function(item,index){if(index<parts_1.length-1){try{calledItem_1=CodeNode.fromList([CodeNode.vref1("property"),calledItem_1.copy(),CodeNode.vref1(item)]);var p_1=classDesc_1.findVariable(item);classDesc_1=ctx.findClass(p_1.nameNode.type_name);}catch(e){ctx.addError(sec_1,"invalid property "+item);}}});var calledItem_2=CodeNode.fromList([CodeNode.vref1("call"),calledItem_1,CodeNode.vref1(method_name_1),third.copy()]);node.getChildrenFrom(calledItem_2);node.flow_done=false;this.WalkNode(node,ctx,wr);return true;}}if(fc_3.value_type==11){var was_called=true;switch(fc_3.vref){case"Enum":was_called=true;break;default:was_called=false;break;};if(was_called){return true;}if(node.children.length>1){if(this.cmdLocalCall(node,ctx,wr)){return true;}}}}if(node.expression){for(var i=0;i<node.children.length;i++){var item=node.children[i];if(ctx.expressionLevel()==0){ctx.lastBlockOp=item;}item.parent=node;if(typeof item.evalCtx!=="undefined"&&item.evalCtx!=null){this.WalkNode(item,item.evalCtx,wr);}else{this.WalkNode(item,ctx,wr);}node.copyEvalResFrom(item);if(i==0&&node.children.length==2){if(item.eval_type==28&&typeof item.paramDesc!=="undefined"&&item.paramDesc!=null){var pDesc=item.paramDesc;var mDesc=pDesc;node.eval_type=mDesc.nameNode.value_type;node.eval_type_name=mDesc.nameNode.type_name;node.eval_array_type=mDesc.nameNode.array_type;node.eval_key_type=mDesc.nameNode.eval_key_type;node.is_direct_method_call=true;return true;}}if(typeof item.expression_value!=="undefined"&&item.expression_value!=null||item.value_type==17||item.eval_type==17){if(i==0&&node.children.length==2){node.has_lambda_call=true;var second=node.children[1];ctx.setInExpr();this.WalkNode(second,ctx,wr);ctx.unsetInExpr();if(typeof item.expression_value!=="undefined"&&item.expression_value!=null){var lambdaNode=item.expression_value;var nn=lambdaNode.children[0];node.eval_type=nn.typeNameAsType(ctx);node.eval_type_name=nn.type_name;node.eval_array_type=nn.array_type;node.eval_key_type=nn.key_type;if(node.eval_type==17){node.expression_value=nn.expression_value.copy();}if(nn.hasFlag("optional")){node.setFlag("optional");}this.testLambdaCallArgs(lambdaNode,second,ctx,wr);}break;}}};return true;}if(node.value_type==19){var viewName="";operatorsOf.forEach_6(node.attrs,function(item,index){if(item.vref=="name"){viewName=item.string_value;}});if(viewName.length>0){ctx.addViewClassBody(viewName,node);}return true;}ctx.addError(node,"Could not understand this part");return true;}},{key:"getVoidNameSignature",value:function getVoidNameSignature(){var s="void";if(typeof this.isDefinedSignature[s]!="undefined"&&this.isDefinedSignature.hasOwnProperty(s)){var cc=this.isDefinedSignature[s];return"void_"+cc;}this.signatureCnt=this.signatureCnt+1;this.isDefinedSignature[s]=this.signatureCnt;return"void_"+this.signatureCnt;}},{key:"getNameSignature",value:function getNameSignature(node){var s=node.type_name+node.buildTypeSignature();if(typeof this.isDefinedSignature[s]!="undefined"&&this.isDefinedSignature.hasOwnProperty(s)){var cc=this.isDefinedSignature[s];if(cc==1){return node.type_name;}return"_"+cc;}this.signatureCnt=this.signatureCnt+1;this.isDefinedSignature[s]=this.signatureCnt;if(this.signatureCnt==1){return node.type_name;}return node.type_name+"_"+this.signatureCnt;}},{key:"getArgsSignature",value:function getArgsSignature(node){var exp_s="";for(var i=0;i<node.children.length;i++){var arg=node.children[i];exp_s=exp_s+arg.buildTypeSignature();exp_s=exp_s+",";};if(typeof this.isDefinedArgSignature[exp_s]!="undefined"&&this.isDefinedArgSignature.hasOwnProperty(exp_s)){var cc=this.isDefinedArgSignature[exp_s];if(cc==1){return"";}return"_"+cc;}this.signatureCnt=this.signatureCnt+1;this.isDefinedArgSignature[exp_s]=this.signatureCnt;if(this.signatureCnt==1){return"";}return"_"+this.signatureCnt;}},{key:"getThisName",value:function getThisName(){return"this";}},{key:"GetProperty",value:function GetProperty(node,ctx,wr){if(node.children.length!=3){ctx.addError(node,"Invalid property descriptor");return;}var obj=node.getSecond();var prop=node.getThird();this.WalkNode(obj,ctx,wr);if(ctx.isDefinedClass(obj.eval_type_name)){try{var currC=ctx.findClass(obj.eval_type_name);var varDef=currC.findVariable(prop.vref);if(typeof varDef!=="undefined"&&varDef!=null){prop.flow_done=true;prop.eval_type=11;node.hasParamDesc=true;node.ownParamDesc=varDef;node.paramDesc=varDef;varDef.ref_cnt=1+varDef.ref_cnt;var vNameNode=varDef.nameNode;if(typeof vNameNode!=="undefined"&&vNameNode!=null){if(vNameNode.hasFlag("optional")){node.setFlag("optional");}node.eval_type=vNameNode.typeNameAsType(ctx);node.eval_type_name=vNameNode.type_name;if(vNameNode.value_type==6){node.eval_type=6;node.eval_array_type=vNameNode.array_type;}if(vNameNode.value_type==7){node.eval_type=7;node.eval_key_type=vNameNode.key_type;node.eval_array_type=vNameNode.array_type;}}return;}var mDef=currC.findMethod(prop.vref);if(typeof mDef!=="undefined"&&mDef!=null){node.eval_type=28;node.hasParamDesc=true;node.ownParamDesc=mDef;node.paramDesc=mDef;mDef.ref_cnt=1+mDef.ref_cnt;return;}ctx.addError(node,"Did not find property from class "+currC.name);}catch(e){ctx.addError(node,"Not valid property access");}}else{ctx.addError(obj,"Can not access property of a non-class value");}}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){if(node.vref=="_"){return;}var rootObjName=node.ns[0];if(ctx.isInStatic()){if(rootObjName=="this"){ctx.addError(node,"This can not be used in static context");}}if(ctx.isEnumDefined(rootObjName)){var enumName=node.ns[1];var ee=ctx.getEnum(rootObjName);var e=ee;if(typeof e.values[enumName]!="undefined"&&e.values.hasOwnProperty(enumName)){node.eval_type=13;node.eval_type_name=rootObjName;node.int_value=e.values[enumName];}else{ctx.addError(node,"Undefined Enum "+rootObjName+"."+enumName);node.eval_type=1;}return;}if(node.vref==this.getThisName()){var cd=ctx.getCurrentClass();var thisClassDesc=cd;node.eval_type=10;node.eval_type_name=thisClassDesc.name;node.ref_type=4;return;}if(ctx.isCapturing()){if(ctx.isVarDefined(rootObjName)){if(ctx.isLocalToCapture(rootObjName)==false){var captDef=ctx.getVariableDef(rootObjName);var cd_1=ctx.getCurrentClass();cd_1.capturedLocals.push(captDef);captDef.is_captured=true;ctx.addCapturedVariable(rootObjName);}}}if(rootObjName=="this"||ctx.isVarDefined(rootObjName)){/** unused: const vDef2 = ctx.getVariableDef(rootObjName) **//** unused: const activeFn = ctx.getCurrentMethod() **/var vDef=this.findParamDesc(node,ctx,wr);if(typeof vDef!=="undefined"&&vDef!=null){node.hasParamDesc=true;node.ownParamDesc=vDef;node.paramDesc=vDef;vDef.ref_cnt=1+vDef.ref_cnt;var vNameNode=vDef.nameNode;if(ctx.isDefinedClass(node.type_name)){var m=ctx.getCurrentMethod();m.addClassUsage(ctx.findClass(node.type_name),ctx);}if(ctx.isDefinedClass(node.eval_type_name)){var m_1=ctx.getCurrentMethod();m_1.addClassUsage(ctx.findClass(node.eval_type_name),ctx);}if(typeof vNameNode!=="undefined"&&vNameNode!=null){if(vNameNode.hasFlag("optional")){node.setFlag("optional");}node.eval_type=vNameNode.typeNameAsType(ctx);node.eval_type_name=vNameNode.type_name;if(vNameNode.value_type==6){node.eval_type=6;node.eval_array_type=vNameNode.array_type;}if(vNameNode.value_type==7){node.eval_type=7;node.eval_key_type=vNameNode.key_type;node.eval_array_type=vNameNode.array_type;}}}else{ctx.addError(node,"Undefined variable");}}else{var class_or_this=rootObjName==this.getThisName();if(ctx.isDefinedClass(rootObjName)){class_or_this=true;node.eval_type=25;node.eval_type_name=rootObjName;var m_2=ctx.getCurrentMethod();m_2.addClassUsage(ctx.findClass(rootObjName),ctx);}if(ctx.hasTemplateNode(rootObjName)){class_or_this=true;}if(false==class_or_this){var udesc=ctx.getCurrentClass();var desc=udesc;if(node.vref=="fun"||node.vref=="fn"){}else{ctx.addError(node,"WriteVREF -> Undefined variable "+node.vref+" in class "+desc.name+" node : "+node.getCode());ctx.addError(node,"WriteVREF -> Undefined variable "+rootObjName+" in class "+desc.name+" node : "+node.parent.getCode());if(typeof node.parent.parent!=="undefined"&&node.parent.parent!=null){ctx.addError(node,"WriteVREF -> Undefined variable "+rootObjName+" in class "+desc.name+" node : "+node.parent.parent.getCode());}}}return;}}},{key:"EnterFn",value:function EnterFn(node,ctx,wr,callback){try{if(node.children.length<4){ctx.addError(node,"Function has too few arguments");return;}/** unused: let nameNode **/var idx=0;operatorsOf.forEach_6(node.children,function(item,index){if(item.vref=="static"){idx=idx+1;}});var currClass=ctx.getCurrentClass();if(typeof currClass==="undefined"){ctx.addError(node,"Current class was not defined when entering method");return;}callback(node,ctx,wr,node.children[idx+1],node.children[idx+2],node.children[idx+3],currClass);}catch(e){ctx.addError(node,"Error parsing function "+e.toString());}}},{key:"Constructor",value:function Constructor(node,ctx,wr){this.shouldHaveChildCnt(3,node,ctx,"Method expexts four arguments");/** unused: const cn = node.children[1] **/var fnBody=node.children[2];var udesc=ctx.getCurrentClass();var desc=udesc;var m=desc.constructor_fn;var subCtx=m.fnCtx;subCtx.is_function=true;subCtx.currentMethod=m;subCtx.setInMethod();for(var i=0;i<m.params.length;i++){var v=m.params[i];subCtx.defineVariable(v.name,v);};this.WalkNodeChildren(fnBody,subCtx,wr);subCtx.unsetInMethod();if(fnBody.didReturnAtIndex>=0){ctx.addError(node,"constructor should not return any values!");}for(var i_1=0;i_1<subCtx.localVarNames.length;i_1++){var n=subCtx.localVarNames[i_1];var p=subCtx.localVariables[n];if(p.set_cnt>0){if(p.is_immutable){ctx.addError(node,"Immutable variable was assigned a value");}var defNode=p.node;defNode.setFlag("mutable");var nNode=p.nameNode;nNode.setFlag("mutable");}};}},{key:"WriteScalarValue",value:function WriteScalarValue(node,ctx,wr){TTypes.baseTypeAsEval(node,ctx,wr);node.evalTypeClass=TFactory.new_scalar_signature(node,ctx,wr);}},{key:"cmdNew",value:function cmdNew(node,ctx,wr){if(node.children.length<2){ctx.addError(node,"the new operator expects at lest two arguments");return;}if(node.children.length<3){var expr=new CodeNode(node.code,node.sp,node.ep);expr.expression=true;node.children.push(expr);}var obj=node.getSecond();var params=node.getThird();var currC=void 0;var b_template=false;var expects_error=false;var err_cnt=ctx.getErrorCount();if(node.hasBooleanProperty("error")){expects_error=true;}if(obj.has_vref_annotation){this.CheckVRefTypeAnnotationOf(obj,ctx,wr);}this.WalkNode(obj,ctx,wr);for(var i=0;i<params.children.length;i++){var arg=params.children[i];ctx.setInExpr();this.WalkNode(arg,ctx,wr);ctx.unsetInExpr();};node.eval_type=10;node.eval_type_name=obj.vref;if(b_template==false){currC=ctx.findClass(obj.vref);var currM=ctx.getCurrentMethod();currM.addClassUsage(currC,ctx);}node.hasNewOper=true;node.clDesc=currC;var fnDescr=currC.constructor_fn;if(typeof fnDescr!=="undefined"&&fnDescr!=null){if(fnDescr.params.length>params.children.length){ctx.addError(node,"Not enough arguments for class constructor "+fnDescr.node.getLineAsString());return;}for(var i_1=0;i_1<fnDescr.params.length;i_1++){var param=fnDescr.params[i_1];var has_default=false;if(param.nameNode.hasFlag("default")){has_default=true;}if(params.children.length<=i_1){if(has_default){continue;}ctx.addError(node,"Missing arguments for function");ctx.addError(param.nameNode,"To fix the previous error: Check original function declaration");}var argNode=params.children[i_1];if(false==this.areEqualTypes(param.nameNode,argNode,ctx,wr)){ctx.addError(argNode,"ERROR, invalid argument type for "+currC.name+" constructor ");}var pNode=param.nameNode;if(pNode.hasFlag("optional")){if(false==argNode.hasFlag("optional")){ctx.addError(node,"new parameter optionality does not match, expected optional parameter"+argNode.getCode());}}if(argNode.hasFlag("optional")){if(false==pNode.hasFlag("optional")){ctx.addError(node,"new parameter optionality does not match, expected non-optional, optional given"+argNode.getCode());}}};}if(expects_error){var cnt_now=ctx.getErrorCount();if(cnt_now==err_cnt){ctx.addParserError(node,"LANGUAGE_PARSER_ERROR: expected generated error, err counts : "+err_cnt+" : "+cnt_now);}}else{var cnt_now_1=ctx.getErrorCount();if(cnt_now_1>err_cnt){ctx.addParserError(node,"LANGUAGE_PARSER_ERROR: did not expect generated error, err counts : "+err_cnt+" : "+cnt_now_1);}}}},{key:"transformParams",value:function transformParams(list,fnArgs,ctx){var res=[];for(var i=0;i<list.length;i++){var item=list[i];if(item.is_block_node){/** unused: const newNode = new CodeNode(item.code, item.sp, item.ep) **/var fnArg=fnArgs[i];var nn=fnArg.nameNode;if(typeof nn.expression_value==="undefined"){ctx.addError(item,"Parameter is not lambda expression");break;}var fnDef=nn.expression_value;var match=new RangerArgMatch();var copyOf=fnDef.rebuildWithType(match,false);var fc=copyOf.children[0];fc.vref="fun";var itemCopy=item.rebuildWithType(match,false);copyOf.children.push(itemCopy);var cnt=item.children.length;while(cnt>0){item.children.pop();cnt=cnt-1;};for(var i_1=0;i_1<copyOf.children.length;i_1++){var ch=copyOf.children[i_1];item.children.push(ch);};}res.push(item);};return res;}},{key:"transformParams2",value:function transformParams2(list,fnArgs,ctx){var res=[];for(var i=0;i<list.length;i++){var item=list[i];if(item.is_block_node){console.log("Transforming --> "+item.getCode());/** unused: const newNode = new CodeNode(item.code, item.sp, item.ep) **/var nn=fnArgs[i];if(typeof nn.expression_value==="undefined"){ctx.addError(item,"Parameter is not lambda expression");break;}var fnDef=nn.expression_value;var match=new RangerArgMatch();var copyOf=fnDef.rebuildWithType(match,false);var fc=copyOf.children[0];fc.vref="fun";var itemCopy=item.rebuildWithType(match,false);copyOf.children.push(itemCopy);var cnt=item.children.length;while(cnt>0){item.children.pop();cnt=cnt-1;};for(var i_1=0;i_1<copyOf.children.length;i_1++){var ch=copyOf.children[i_1];item.children.push(ch);};}res.push(item);};return res;}},{key:"CreateCTTI",value:function CreateCTTI(node,ctx,orig_wr){var root=ctx.getRoot();var wr=new CodeWriter();operatorsOf_4.forEach_5(root.definedClasses,function(item,index){if(item.isNormalClass()){wr.raw("\n operators {\n class_name _:string ( "+item.name+"@(keyword) ) {\n templates {\n * ( '\""+item.name+"\"' )\n }\n }\n } \n ",true);}});root.pushAndCollectCode(wr.getCode(),orig_wr);}},{key:"CreateRTTI",value:function CreateRTTI(node,ctx,orig_wr){var root=ctx.getRoot();var wr=new CodeWriter();wr.out("operator type:void all {",true);wr.indent(1);wr.out("fn rtti_get_classes:[string] () {",true);wr.indent(1);wr.out("return ([] ",false);operatorsOf_4.forEach_5(root.definedClasses,function(item,index){if(item.isNormalClass()){wr.out("'"+item.name+"' ",false);}});wr.out(")",true);wr.indent(-1);wr.out("}",true);wr.out("fn rtti_get_fields:[RTTIClassField] (className:string) {",true);wr.indent(1);wr.out("def fields:[RTTIClassField]",true);operatorsOf_4.forEach_5(root.definedClasses,function(item,index){if(item.isNormalClass()){wr.out("if(className == '"+item.name+"') {",true);wr.indent(1);operatorsOf.forEach_2(item.variables,function(item,index){wr.out("def f (new RTTIClassField)",true);wr.out("f.name = `"+item.compiledName+"`",true);wr.out("f.type_name = `"+item.nameNode.type_name+"`",true);wr.out("push fields f",true);});wr.indent(-1);wr.out("}",true);}});wr.out("return fields",true);wr.indent(-1);wr.out("}",true);wr.indent(-1);wr.out("}",true);root.pushAndCollectCode(wr.getCode(),orig_wr);}},{key:"SolveAsyncFuncs",value:function SolveAsyncFuncs(node,ctx,wr){var root=ctx.getRoot();operatorsOf_4.forEach_5(root.definedClasses,function(item,index){operatorsOf.forEach_20(item.static_methods,function(item,index){var thisFn=item;var _set_async=function set_async(f){};_set_async=function set_async(f){if(f==thisFn){return;}if(typeof f.nameNode!=="undefined"&&f.nameNode!=null){f.nameNode.setFlag("async");}operatorsOf.forEach_20(f.isCalledBy,function(item,index){_set_async(item);});if(typeof f.insideFn!=="undefined"&&f.insideFn!=null){_set_async(f.insideFn);}};if(typeof item.nameNode!=="undefined"&&item.nameNode!=null){if(item.nameNode.hasFlag("async")){operatorsOf.forEach_20(item.isCalledBy,function(item,index){_set_async(item);});item.forOtherVersions(ctx,function(item){_set_async(item);});if(typeof item.insideFn!=="undefined"&&item.insideFn!=null){_set_async(item.insideFn);}}}operatorsOf.forEach_20(item.myLambdas,function(item,index){if(typeof item.nameNode!=="undefined"&&item.nameNode!=null){if(item.nameNode.hasFlag("async")){operatorsOf.forEach_20(item.isCalledBy,function(item,index){_set_async(item);});if(typeof item.insideFn!=="undefined"&&item.insideFn!=null){_set_async(item.insideFn);}}}});});operatorsOf_4.forEach_21(item.method_variants,function(item,index){operatorsOf.forEach_20(item.variants,function(item,index){var thisFn_1=item;var _set_async_=function set_async_1(f){};_set_async_=function set_async_1(f){if(f==thisFn_1){return;}if(typeof f.nameNode!=="undefined"&&f.nameNode!=null){f.nameNode.setFlag("async");}f.forOtherVersions(ctx,function(item){_set_async_(item);});operatorsOf.forEach_20(f.isCalledBy,function(item,index){_set_async_(item);});if(typeof f.insideFn!=="undefined"&&f.insideFn!=null){_set_async_(f.insideFn);}};if(typeof item.nameNode!=="undefined"&&item.nameNode!=null){if(item.nameNode.hasFlag("async")){operatorsOf.forEach_20(item.isCalledBy,function(item,index){_set_async_(item);});item.forOtherVersions(ctx,function(item){_set_async_(item);});if(typeof item.insideFn!=="undefined"&&item.insideFn!=null){_set_async_(item.insideFn);}}}operatorsOf.forEach_20(item.myLambdas,function(item,index){if(typeof item.nameNode!=="undefined"&&item.nameNode!=null){if(item.nameNode.hasFlag("async")){operatorsOf.forEach_20(item.isCalledBy,function(item,index){_set_async_(item);});if(typeof item.insideFn!=="undefined"&&item.insideFn!=null){_set_async_(item.insideFn);}}}});});});});var notUsedFunctionCnt=0;operatorsOf_4.forEach_5(root.definedClasses,function(item,index){operatorsOf_4.forEach_21(item.method_variants,function(item,index){operatorsOf.forEach_20(item.variants,function(item,index){if(item.isCalledBy.length==0){if(typeof item.container_class!=="undefined"&&item.container_class!=null){var cc=item.container_class;if(cc.extends_classes.length>0||cc.is_inherited){var eC=cc.extends_classes[0];ctx.findClass(eC);}else{notUsedFunctionCnt=notUsedFunctionCnt+1;item.is_unsed=true;}}}});});});var add_dce_fn=function add_dce_fn(theFn){var _set_called=function set_called(f){};_set_called=function set_called(f){if(f.is_called_from_main){return;}f.is_called_from_main=true;operatorsOf.forEach_22(f.isUsingClasses,function(item,index){item.is_used_by_main=true;if(typeof item.constructor_fn!=="undefined"&&item.constructor_fn!=null){_set_called(item.constructor_fn);}});f.forOtherVersions(ctx,function(item){_set_called(item);});operatorsOf.forEach_20(f.isCalling,function(item,index){_set_called(item);});operatorsOf.forEach_20(f.myLambdas,function(item,index){_set_called(item);});if(typeof f.container_class!=="undefined"&&f.container_class!=null){if(typeof f.container_class.constructor_fn!=="undefined"&&f.container_class.constructor_fn!=null){_set_called(f.container_class.constructor_fn);}}};_set_called(theFn);};var use_dce=false;if(ctx.hasCompilerFlag("dead4main")){var mainFn=void 0;operatorsOf_4.forEach_5(root.definedClasses,function(item,index){var cl=item;for(var i=0;i<cl.static_methods.length;i++){var variant=cl.static_methods[i];ctx.disableCurrentClass();if(variant.nameNode.hasFlag("main")&&variant.nameNode.code.filename==ctx.getRootFile()){mainFn=variant;mainFn.addClassUsage(cl,ctx);}};});if(typeof mainFn!=="undefined"&&mainFn!=null){add_dce_fn(mainFn);use_dce=true;}}if(ctx.hasCompilerSetting("dceclass")){var dc=ctx.getCompilerSetting("dceclass");console.log("DCE : "+dc);operatorsOf_4.forEach_5(root.definedClasses,function(item,index){var cl_1=item;if(cl_1.name==dc){use_dce=true;cl_1.is_used_by_main=true;for(var i_1=0;i_1<cl_1.static_methods.length;i_1++){var variant_1=cl_1.static_methods[i_1];add_dce_fn(variant_1);};operatorsOf_4.forEach_21(item.method_variants,function(item,index){operatorsOf.forEach_20(item.variants,function(item,index){add_dce_fn(item);});});}});}if(use_dce){var verbose=ctx.hasCompilerFlag("verbose");operatorsOf_4.forEach_5(root.definedClasses,function(item,index){if(item.is_used_by_main==false&&verbose){console.log("class not used by main : "+item.name);}item.static_methods=operatorsOf.filter_23(item.static_methods,function(item,index){var cc_1=item.container_class;if(item.is_called_from_main==false){if(verbose){console.log("removing as dead "+item.name+" from "+cc_1.name);}}return item.is_called_from_main;});operatorsOf_4.forEach_21(item.method_variants,function(item,index){item.variants=operatorsOf.filter_23(item.variants,function(item,index){var cc_2=item.container_class;if(item.is_called_from_main==false){if(verbose){console.log("removing as dead "+item.name+" from "+cc_2.name);}}return item.is_called_from_main;});});});}if(ctx.hasCompilerFlag("deadcode")){operatorsOf_4.forEach_5(root.definedClasses,function(item,index){operatorsOf_4.forEach_21(item.method_variants,function(item,index){item.variants=operatorsOf.filter_23(item.variants,function(item,index){return item.is_unsed==false;});});});}}},{key:"cmdCall",value:function cmdCall(node,ctx,wr){var obj=node.getSecond();var method=node.getThird();var callArgs=node.children[3];var possible_cmd=method.vref;var altVersion=node.newExpressionNode();var origCopy=node.copy();altVersion.add(node.newVRefNode(possible_cmd));altVersion.add(obj.copy());for(var i=0;i<callArgs.children.length;i++){var ca=callArgs.children[i];altVersion.add(ca.copy());};altVersion.parent=node;node.getChildrenFrom(altVersion);if(this.stdParamMatch(node,ctx,wr,false)){return true;}else{node.getChildrenFrom(origCopy);}var obj_2=node.getSecond();var method_2=node.getThird();var callArgs_2=node.children[3];this.WalkNode(obj_2,ctx,wr);if(ctx.isDefinedClass(obj_2.eval_type_name)){var cl=ctx.findClass(obj_2.eval_type_name);var m=cl.findMethod(method_2.vref);if(typeof m!=="undefined"&&m!=null){node.has_call=true;var currM=ctx.getCurrentMethod();currM.addCallTo(m);ctx.setInExpr();for(var i_1=0;i_1<callArgs_2.children.length;i_1++){var callArg=callArgs_2.children[i_1];this.WalkNode(callArg,ctx,wr);};ctx.unsetInExpr();var nn=m.nameNode;node.eval_type=nn.typeNameAsType(ctx);node.eval_type_name=nn.type_name;node.eval_array_type=nn.array_type;node.eval_key_type=nn.key_type;if(m.nameNode.hasFlag("throws")){if(false==ctx.isTryBlock()){ctx.addError(obj_2,"The method "+m.name+" potentially throws an exception, try { } block is required");}}if(nn.value_type==17){node.expression_value=nn.expression_value.copy();}if(nn.hasFlag("optional")){node.setFlag("optional");}return true;}else{ctx.addError(node,"Class "+obj_2.eval_type_name+" does not have method "+method_2.vref);return false;}}else{ctx.addError(node,"can not call non-class type");}return true;}},{key:"matchLambdaArgs",value:function matchLambdaArgs(n1,n2,ctx,wr){var _this9=this;var chLen1=n1.children.length;var chLen2=n2.children.length;if(chLen1<2){ctx.addError(n1,"Invalid Lambda definition, missing args or return value");return false;}if(chLen2<2){ctx.addError(n2,"Invalid Lambda definition, missing args or return value");return false;}var rv1=n1.getFirst();var args1=n1.getSecond();var rv2=n2.getFirst();var args2=n2.getSecond();var rvExpr1=n1.newExpressionNode();rvExpr1.push(rv1.copy());var rvExpr2=n2.newExpressionNode();rvExpr2.push(rv2.copy());var argsExpr1=args1.copy();var argsExpr2=args2.copy();var all_matched=true;if(argsExpr1.children.length!=argsExpr2.children.length){ctx.addError(n2,"Invalid parameter count for the lambda expression");return false;}operatorsOf.forEach_6(argsExpr1.children,function(item,index){var item2=argsExpr2.children[index];if(item2.value_type!=item.value_type){all_matched=false;}if(item2.type_name!=item.type_name){all_matched=false;}if(item2.array_type!=item.array_type){all_matched=false;}if(item2.key_type!=item.key_type){all_matched=false;}if(all_matched&&item.value_type==17){if(false==_this9.matchLambdaArgs(item.expression_value,item2.expression_value,ctx,wr)){all_matched=false;}}});if(all_matched==false){ctx.addError(n2,"Invalid lambda argument types");return false;}operatorsOf.forEach_6(rvExpr1.children,function(item,index){var item2_1=rvExpr2.children[index];if(item2_1.value_type!=item.value_type){all_matched=false;}if(item2_1.type_name!=item.type_name){all_matched=false;}if(item2_1.array_type!=item.array_type){all_matched=false;}if(item2_1.key_type!=item.key_type){all_matched=false;}if(all_matched&&item.value_type==17){if(false==_this9.matchLambdaArgs(item.expression_value,item2_1.expression_value,ctx,wr)){all_matched=false;}}});if(all_matched==false){ctx.addError(n2,"Invalid lambda return value type");return false;}return true;}},{key:"testLambdaCallArgs",value:function testLambdaCallArgs(lambda_expression,callParams,ctx,wr){/** unused: const lambdaDef = lambda_expression.children[0] **/var lambdaArgs=lambda_expression.children[1];var all_matched=true;if(callParams.children.length!=lambdaArgs.children.length){ctx.addError(callParams,"Invalid parameter count for the lambda expression ");ctx.addError(callParams," ^ expected : "+lambdaArgs.getCode());all_matched=false;}operatorsOf.forEach_6(lambdaArgs.children,function(item,index){var item2=callParams.children[index];if(item2.eval_type_name!=item.type_name){if(item.type_name!="Any"){ctx.addError(item2,"Argument of wrong type given for the lambda parameter "+index);all_matched=false;}}if(item2.eval_array_type!=item.array_type){ctx.addError(item2,"Argument of wrong type given for the lambda parameter "+index);all_matched=false;}if(item2.eval_key_type!=item.key_type){ctx.addError(item2,"Argument of wrong type given for the lambda parameter "+index);all_matched=false;}});if(all_matched==false){ctx.addError(callParams,"Invalid types for lambda call");}return all_matched;}},{key:"cmdLocalCall",value:function cmdLocalCall(node,ctx,wr){var _this10=this;var fnNode=node.getFirst();var udesc=ctx.getCurrentClass();var desc=udesc;var expects_error=false;var err_cnt=ctx.getErrorCount();if(node.hasBooleanProperty("error")){expects_error=true;}var chlen=node.children.length;if(chlen>2){var i=2;/** unused: const chainRoot = node **/var innerNode=void 0;var newNode=node.newExpressionNode();var sc=node.getSecond();newNode.add(fnNode.copy());newNode.add(sc.copy());innerNode=newNode;var chain_cnt=0;var b_valid=true;while(i<chlen-1){var fc=node.children[i];var args=node.children[i+1];var name=fc.vref;if(name.length>0&&name.charCodeAt(0)==".".charCodeAt(0)){var method_name=name.substring(1,name.length);var newNode_1=node.newExpressionNode();newNode_1.add(node.newVRefNode("call"));newNode_1.add(innerNode.copy());newNode_1.add(node.newVRefNode(method_name));newNode_1.add(args.copy());innerNode=newNode_1;chain_cnt=chain_cnt+1;}else{b_valid=false;}i=i+2;};if(b_valid&&chain_cnt>0){node.getChildrenFrom(innerNode);node.tag="chainroot";node.flow_done=false;this.WalkNode(node,ctx,wr);return true;}}if(fnNode.ns.length>1){var arg;var param;var _ret2=function(){var rootName=fnNode.ns[0];var vDef2=ctx.getVariableDef(rootName);if(rootName!="this"&&vDef2.init_cnt==0&&vDef2.set_cnt==0){if(vDef2.is_class_variable==false&&ctx.isDefinedClass(rootName)==false){ctx.addError(node,"Call to uninitialized object "+rootName);}}var vFnDef=_this10.findFunctionDesc(fnNode,ctx,wr);if(typeof vFnDef!=="undefined"&&vFnDef!=null){if(vFnDef.nameNode.hasFlag("throws")){if(false==ctx.isTryBlock()){ctx.addError(node,"The method "+vFnDef.name+" potentially throws an exception, try { } block is required");}}var currM=ctx.getCurrentMethod();currM.addCallTo(vFnDef);vFnDef.ref_cnt=vFnDef.ref_cnt+1;var subCtx=ctx.fork();node.hasFnCall=true;node.fnDesc=vFnDef;var p=new RangerAppParamDesc();p.name=fnNode.vref;p.value_type=fnNode.value_type;p.node=fnNode;p.nameNode=fnNode;p.varType=10;subCtx.defineVariable(p.name,p);_this10.WalkNode(fnNode,subCtx,wr);var callParams=node.children[1];var nodeList=_this10.transformParams(callParams.children,vFnDef.params,subCtx);if(ctx.hasCompilerFlag("dbg")){console.log("Local: "+vFnDef.name);}for(var i_1=0;i_1<nodeList.length;i_1++){arg=nodeList[i_1];ctx.setInExpr();var was_lambda=false;if(arg.isFirstVref("fun")){arg.flow_done=false;arg.forTree(function(item,i){item.flow_done=false;});was_lambda=true;}_this10.WalkNode(arg,subCtx,wr);if(was_lambda){(function(){var currM_1=ctx.getCurrentMethod();if(typeof arg.lambdaFnDesc!=="undefined"&&arg.lambdaFnDesc!=null){vFnDef.addCallTo(arg.lambdaFnDesc);currM_1.addCallTo(vFnDef);currM_1.myLambdas.push(arg.lambdaFnDesc);vFnDef.myLambdas.push(arg.lambdaFnDesc);}arg.forTree(function(item,i){if(typeof item.lambdaFnDesc!=="undefined"&&item.lambdaFnDesc!=null){item.lambdaFnDesc.insideFn=currM_1;}if(typeof item.fnDesc!=="undefined"&&item.fnDesc!=null){if(typeof arg.lambdaFnDesc!=="undefined"&&arg.lambdaFnDesc!=null){arg.lambdaFnDesc.addCallTo(item.fnDesc);}vFnDef.addCallTo(item.fnDesc);}});})();}ctx.unsetInExpr();var fnArg=vFnDef.params[i_1];var callArgP=arg.paramDesc;if(typeof callArgP!=="undefined"&&callArgP!=null){callArgP.moveRefTo(node,fnArg,ctx);}};var cp_len=callParams.children.length;if(cp_len>vFnDef.params.length){var lastCallParam=callParams.children[cp_len-1];ctx.addError(lastCallParam,"Too many arguments for function");ctx.addError(vFnDef.nameNode,"NOTE: To fix the previous error: Check original function declaration which was");}for(var i_2=0;i_2<vFnDef.params.length;i_2++){param=vFnDef.params[i_2];if(callParams.children.length<=i_2){if(param.nameNode.hasFlag("default")){continue;}ctx.addError(node,"Missing arguments for function");ctx.addError(param.nameNode,"NOTE: To fix the previous error: Check original function declaration which was");break;}var argNode=callParams.children[i_2];if(false==_this10.areEqualTypes(param.nameNode,argNode,ctx,wr)){ctx.addError(argNode,"ERROR, invalid argument type for method "+vFnDef.name);}var pNode=param.nameNode;if(pNode.hasFlag("optional")){if(false==argNode.hasFlag("optional")){ctx.addError(node,"function parameter optionality does not match, consider making parameter optional "+argNode.getCode());}}if(argNode.hasFlag("optional")){if(false==pNode.hasFlag("optional")){ctx.addError(node,"function parameter optionality does not match, consider unwrapping "+argNode.getCode());}}};var nn=vFnDef.nameNode;node.eval_type=nn.typeNameAsType(ctx);node.eval_type_name=nn.type_name;node.eval_array_type=nn.array_type;node.eval_key_type=nn.key_type;if(node.eval_type==17){node.expression_value=nn.expression_value.copy();}if(nn.hasFlag("optional")){node.setFlag("optional");}if(expects_error){var cnt_now=ctx.getErrorCount();if(cnt_now==err_cnt){ctx.addParserError(node,"LANGUAGE_PARSER_ERROR: expected generated error, err counts : "+err_cnt+" : "+cnt_now);}}else{var cnt_now_1=ctx.getErrorCount();if(cnt_now_1>err_cnt){ctx.addParserError(node,"LANGUAGE_PARSER_ERROR: did not expect generated error, err counts : "+err_cnt+" : "+cnt_now_1);}}return{v:true};}else{ctx.addError(node,"Called Object or Property was not defined");}}();if((typeof _ret2==="undefined"?"undefined":_typeof(_ret2))==="object")return _ret2.v;}if(desc.hasMethod(fnNode.vref)){var fnDescr=desc.findMethod(fnNode.vref);if(fnDescr.nameNode.hasFlag("throws")){if(false==ctx.isTryBlock()){ctx.addError(node,"The method "+fnDescr.name+" potentially throws an exception, try { } block is required");}}var currM_2=ctx.getCurrentMethod();currM_2.addCallTo(fnDescr);if(ctx.hasCompilerFlag("dbg")){console.log("Local 2 : "+fnDescr.name);}var subCtx_1=ctx.fork();node.hasFnCall=true;node.fnDesc=fnDescr;var p_1=new RangerAppParamDesc();p_1.name=fnNode.vref;p_1.value_type=fnNode.value_type;p_1.node=fnNode;p_1.nameNode=fnNode;p_1.varType=10;subCtx_1.defineVariable(p_1.name,p_1);this.WalkNode(fnNode,subCtx_1,wr);for(var i_3=0;i_3<node.children.length;i_3++){var arg_1=node.children[i_3];if(i_3<1){continue;}ctx.setInExpr();this.WalkNode(arg_1,subCtx_1,wr);ctx.unsetInExpr();};for(var i_4=0;i_4<fnDescr.params.length;i_4++){var param_1=fnDescr.params[i_4];if(node.children.length<=i_4+1){ctx.addError(node,"Argument was not defined");break;}var argNode_1=node.children[i_4+1];if(false==this.areEqualTypes(param_1.nameNode,argNode_1,ctx,wr)){ctx.addError(argNode_1,"ERROR, invalid argument type for "+desc.name+" method "+fnDescr.name);}};var nn_1=fnDescr.nameNode;nn_1.defineNodeTypeTo(node,ctx);if(expects_error){var cnt_now_2=ctx.getErrorCount();if(cnt_now_2==err_cnt){ctx.addParserError(node,"LANGUAGE_PARSER_ERROR: expected generated error, err counts : "+err_cnt+" : "+cnt_now_2);}}else{var cnt_now_3=ctx.getErrorCount();if(cnt_now_3>err_cnt){ctx.addParserError(node,"LANGUAGE_PARSER_ERROR: did not expect generated error, err counts : "+err_cnt+" : "+cnt_now_3);}}return true;}if(ctx.isVarDefined(fnNode.vref)){var d=ctx.getVariableDef(fnNode.vref);d.ref_cnt=1+d.ref_cnt;if(d.nameNode.hasFlag("optional")){ctx.addError(node,"Can not call optional lambda function, unwrap the function first!");}if(d.nameNode.value_type==17){var cnNode1=node.children[0];this.WalkNode(cnNode1,ctx,wr);/** unused: const lambdaDefArgs = d.nameNode.expression_value.children[1] **/var callParams_1=node.children[1];for(var i_5=0;i_5<callParams_1.children.length;i_5++){var arg_2=callParams_1.children[i_5];ctx.setInExpr();this.WalkNode(arg_2,ctx,wr);ctx.unsetInExpr();};this.testLambdaCallArgs(d.nameNode.expression_value,callParams_1,ctx,wr);var lambdaDef=d.nameNode.expression_value.children[0];node.has_lambda_call=true;node.eval_type=lambdaDef.typeNameAsType(ctx);node.eval_type_name=lambdaDef.type_name;node.eval_array_type=lambdaDef.array_type;node.eval_key_type=lambdaDef.key_type;if(node.eval_type==17){if(typeof lambdaDef.expression_value!=="undefined"&&lambdaDef.expression_value!=null){node.expression_value=lambdaDef.expression_value.copy();}}return true;}}return false;ctx.addError(node,"ERROR, could not find class "+desc.name+" method "+fnNode.vref);ctx.addError(node,"definition : "+node.getCode());if(expects_error){var cnt_now_4=ctx.getErrorCount();if(cnt_now_4==err_cnt){ctx.addParserError(node,"LANGUAGE_PARSER_ERROR: expected generated error, err counts : "+err_cnt+" : "+cnt_now_4);}}else{var cnt_now_5=ctx.getErrorCount();if(cnt_now_5>err_cnt){ctx.addParserError(node,"LANGUAGE_PARSER_ERROR: did not expect generated error, err counts : "+err_cnt+" : "+cnt_now_5);}}return false;}},{key:"transformImmutableAssigment",value:function transformImmutableAssigment(node){var target=node.getSecond();var assign_value=node.getThird();var root=node.newExpressionNode();root.add(node.newVRefNode("="));root.add(node.newVRefNode(target.ns[0]));var i=1;var cnt=target.ns.length;/** unused: const valueExpression = node.newExpressionNode() **/var obj_ref=target.ns[0];var currentParent=root;while(i<cnt){var callExpr=node.newExpressionNode();callExpr.add(node.newVRefNode("call"));callExpr.add(node.newVRefNode(obj_ref));var next_ref=target.ns[i];var set_ref="set_"+next_ref;callExpr.add(node.newVRefNode(set_ref));i=i+1;if(i<cnt){obj_ref=obj_ref+"."+next_ref;var paramsNode=node.newExpressionNode();paramsNode.add(callExpr);currentParent.add(paramsNode);currentParent=callExpr;}else{var callParams=node.newExpressionNode();callParams.add(assign_value.copy());callExpr.add(callParams);var paramsNode_1=node.newExpressionNode();paramsNode_1.add(callExpr.copy());currentParent.add(paramsNode_1);}};return root;}},{key:"cmdAssign",value:function cmdAssign(node,ctx,wr){var target=node.getSecond();this.WalkNode(target,ctx,wr);if(target.hasParamDesc){if(typeof target.paramDesc.propertyClass!=="undefined"&&target.paramDesc.propertyClass!=null){var nn=target.paramDesc.propertyClass.nameNode;if(nn.hasFlag("immutable")){var do_transform=false;var propC=target.paramDesc.propertyClass;var currC=ctx.getCurrentClass();if(currC==propC){if(target.ns[0]=="this"){do_transform=true;}}else{do_transform=true;}if(do_transform){var n1=node.getSecond();var n2=node.getThird();this.WalkNode(n1,ctx,wr);ctx.setInExpr();this.WalkNode(n2,ctx,wr);ctx.unsetInExpr();this.convertToUnion(n1.eval_type_name,n2,ctx,wr);this.shouldBeEqualTypes(n1,n2,ctx,"Can not assign variable.");var immAss=this.transformImmutableAssigment(node);node.getChildrenFrom(immAss);this.cmdAssign(node,ctx,wr);return;}}}}/** unused: const chlen = node.children.length **/wr.newline();var n1_1=node.getSecond();var n2_1=node.getThird();this.WalkNode(n1_1,ctx,wr);ctx.setInExpr();this.WalkNode(n2_1,ctx,wr);ctx.unsetInExpr();if(n1_1.hasParamDesc){n1_1.paramDesc.ref_cnt=n1_1.paramDesc.ref_cnt+1;n1_1.paramDesc.set_cnt=n1_1.paramDesc.set_cnt+1;}if(n2_1.hasParamDesc){n2_1.paramDesc.ref_cnt=n2_1.paramDesc.ref_cnt+1;}if(n2_1.hasFlag("optional")){if(false==n1_1.hasFlag("optional")){ctx.addError(node,"Can not assign optional to non-optional type");}}this.stdParamMatch(node,ctx,wr,true);this.convertToUnion(n1_1.eval_type_name,n2_1,ctx,wr);this.shouldBeEqualTypes(n1_1,n2_1,ctx,"Can not assign variable.");}},{key:"EnterTemplateClass",value:function EnterTemplateClass(node,ctx,wr){}},{key:"EnterClass",value:function EnterClass(node,ctx,wr){var body_index=node.chlen()-1;if(node.children.length!=3){if(node.chlen()==5){}else{ctx.addError(node,"Invalid class declaration");return;}}if(node.hasBooleanProperty("trait")){return;}var cn=node.children[1];var cBody=node.children[body_index];var desc=ctx.findClass(cn.vref);var subCtx=desc.ctx;subCtx.setCurrentClass(desc);subCtx.class_level_context=true;for(var i=0;i<desc.variables.length;i++){var p=desc.variables[i];var vNode=p.node;if(vNode.children.length>2){var value=vNode.children[2];ctx.setInExpr();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}p.is_class_variable=true;p.nameNode.eval_type=p.nameNode.typeNameAsType(ctx);p.nameNode.eval_type_name=p.nameNode.type_name;};for(var i_1=0;i_1<cBody.children.length;i_1++){var fNode=cBody.children[i_1];if(fNode.isFirstVref("fn")||fNode.isFirstVref("constructor")||fNode.isFirstVref("Constructor")){this.WalkNode(fNode,subCtx,wr);}};for(var i_2=0;i_2<cBody.children.length;i_2++){var fNode_1=cBody.children[i_2];if(fNode_1.isFirstVref("fn")||fNode_1.isFirstVref("PublicMethod")){this.WalkNode(fNode_1,subCtx,wr);}};var staticCtx=ctx.fork();staticCtx.setCurrentClass(desc);for(var i_3=0;i_3<cBody.children.length;i_3++){var fNode_2=cBody.children[i_3];if(fNode_2.isFirstVref("sfn")||fNode_2.isFirstVref("StaticMethod")||fNode_2.isFirstVref("static")){this.WalkNode(fNode_2,staticCtx,wr);}};operatorsOf.forEach_6(cBody.children,function(item,index){try{if(item.isFirstVref("doc")){var sc=item.getSecond();var fndesc=desc.findMethod(sc.vref);if(typeof fndesc!="undefined"){var third=item.getThird();fndesc.git_doc=third.string_value;}}}catch(e){}});node.hasClassDescription=true;node.clDesc=desc;desc.classNode=node;}},{key:"walkFunctionBody",value:function walkFunctionBody(m,fnBody,ctx,subCtx,wr){/** unused: const prev_fnc = subCtx.function_level_context **//** unused: const prev_isfn = subCtx.is_function **/subCtx.function_level_context=true;subCtx.is_function=true;subCtx.currentMethod=m;for(var i=0;i<m.params.length;i++){var v=m.params[i];if(false==subCtx.isVarDefined(v.name)){subCtx.defineVariable(v.name,v);}v.nameNode.eval_type=v.nameNode.typeNameAsType(subCtx);v.nameNode.eval_type_name=v.nameNode.type_name;ctx.hadValidType(v.nameNode);if(ctx.isDefinedClass(v.nameNode.type_name)){var cl=ctx.findClass(v.nameNode.type_name);m.addClassUsage(cl,ctx);}if(ctx.isDefinedClass(v.nameNode.array_type)){var cl_1=ctx.findClass(v.nameNode.array_type);m.addClassUsage(cl_1,ctx);}};subCtx.setInMethod();this.WalkNodeChildren(fnBody,subCtx,wr);subCtx.unsetInMethod();if(fnBody.didReturnAtIndex==-1){if(m.nameNode.type_name!="void"){if(false==ctx.getFlag("in_task")){ctx.addError(m.nameNode,"Function does not return any values!");}}}else{if(m.nameNode.type_name=="void"||m.nameNode.type_name.length>0==false&&m.nameNode.array_type.length>0==false){if(false==ctx.getFlag("in_task")){var rvNode=fnBody.children[fnBody.didReturnAtIndex];if(rvNode.children.length>1){ctx.addError(m.nameNode,"No return value type defined for a function which returns value");ctx.addError(rvNode,"Returning value from a function without set return value");}}}}for(var i_1=0;i_1<subCtx.localVarNames.length;i_1++){var n=subCtx.localVarNames[i_1];var p=subCtx.localVariables[n];if(p.set_cnt>0){if(p.is_immutable){ctx.addError(p.nameNode,"Immutable variable was assigned a value");}var defNode=p.node;defNode.setFlag("mutable");var nNode=p.nameNode;nNode.setFlag("mutable");}};}},{key:"EnterMethod",value:function EnterMethod(node,ctx,wr){var _this11=this;this.EnterFn(node,ctx,wr,function(node,ctx,wr,nameNode,fnArgs,fnBody,desc){var m=desc.findMethod(nameNode.vref);var subCtx=m.fnCtx;_this11.walkFunctionBody(m,fnBody,ctx,subCtx,wr);});}},{key:"EnterStaticMethod",value:function EnterStaticMethod(node,ctx,wr){var _this12=this;this.EnterFn(node,ctx,wr,function(node,ctx,wr,nameNode,fnArgs,fnBody,desc){var m=desc.findStaticMethod(nameNode.vref);var subCtx=ctx.fork();m.fnCtx=subCtx;subCtx.in_static_method=true;_this12.walkFunctionBody(m,fnBody,ctx,subCtx,wr);subCtx.in_static_method=false;});}},{key:"DefineOpFn",value:function DefineOpFn(node,ctx,wr){if(node.children.length<4){ctx.addError(node,"invalid operator function");return;}var fnName=node.children[1];if(false==fnName.vref.length>0){ctx.addError(node,"operator function has no name");return;}ctx.addOpFn(fnName.vref,node);node.disabled_node=true;node.flow_done=true;}},{key:"TranformOpFn",value:function TranformOpFn(opFnList,origNode,ctx,wr){var _this13=this;var ok=false;var rootCtx=ctx.getRoot();var errCnt=rootCtx.compilerErrors.length;operatorsOf.forEach_6(opFnList,function(item,index){if(ok){return;}else{var errDelta=rootCtx.compilerErrors.length-errCnt;while(errDelta>0){rootCtx.compilerErrors.pop();errDelta=errDelta-1;};}var node=origNode.copy();var opFn=item;var opParams=opFn.children[2];var opBody=opFn.children[3];var xValue=node.copy();xValue.children.splice(0,1);var regToArg={};var am=new RangerArgMatch();opParams.parallelTree(xValue,function(left,right,i){if(typeof left!=="undefined"&&left!=null&&typeof right!=="undefined"&&right!=null){if(left.vref.length>0){var v=right;if(v.expression){regToArg[left.vref]=right;}am.nodes[left.vref]=right;}}});var opParamSet={};var regParams={};var regNames={};if(false==node.register_name.length>0){opBody.forTree(function(item,i){if(typeof regToArg[item.vref]!="undefined"&&regToArg.hasOwnProperty(item.vref)){if(typeof opParamSet[item.vref]!="undefined"&&opParamSet.hasOwnProperty(item.vref)){if(false==(typeof regParams[item.vref]!="undefined"&&regParams.hasOwnProperty(item.vref))){var realArg=regToArg[item.vref];if(realArg.register_name.length>0){}else{var regName=ctx.createNewRegName();regNames[item.vref]=regName;var argCopy=realArg.copy();var regExpr=CodeNode.fromList([CodeNode.vref1("def"),CodeNode.vref1(regName),argCopy]);_this13.WalkNode(regExpr,ctx,wr);var regArg=regExpr.children[1];var realRegName=regExpr.children[1].paramDesc.compiledName;regArg.paramDesc.set_cnt=1;regArg.paramDesc.ref_cnt=1;var BlockOP=ctx.getLastBlockOp();BlockOP.register_expressions.push(regExpr);realArg.register_name=regName;realArg.reg_compiled_name=realRegName;}}regParams[item.vref]=true;}opParamSet[item.vref]=true;}});}var newNode=opBody.rebuildWithType(am,true);node.getChildrenFrom(newNode);node.flow_done=false;if(opBody.is_block_node){var blockCtx=ctx.fork();blockCtx.newBlock();_this13.WalkNode(node,blockCtx,wr);}else{_this13.WalkNode(node,ctx,wr);}if(errCnt==rootCtx.compilerErrors.length){ok=true;var newNode_1=opBody.rebuildWithType(am,true);origNode.getChildrenFrom(newNode_1);origNode.flow_done=false;if(opBody.is_block_node){var blockCtx_1=ctx.fork();blockCtx_1.newBlock();_this13.WalkNode(origNode,blockCtx_1,wr);}else{_this13.WalkNode(origNode,ctx,wr);}}});}},{key:"cmdArray",value:function cmdArray(node,ctx,wr){if(node.children.length==3){var sc=node.getSecond();if(sc.vref.length>0&&sc.type_name.length>0){node.eval_array_type=sc.type_name;node.eval_type=6;var items=node.getThird();var b_union=false;var union_types=[];if(ctx.isDefinedClass(sc.type_name)){var cl=ctx.findClass(sc.type_name);if(cl.is_union){b_union=true;union_types=cl.is_union_of;}}var arrayItems=node.newExpressionNode();for(var i=0;i<items.children.length;i++){var it=items.children[i];var itemCopy=it.copy();this.WalkNode(itemCopy,ctx,wr);if(itemCopy.eval_type_name!=sc.type_name){if(b_union){if(union_types.indexOf(itemCopy.eval_type_name)>=0){}else{ctx.addError(it,itemCopy.eval_type_name+" is Not part of union "+sc.type_name);break;}}else{ctx.addError(it,"The array type should be "+sc.type_name);break;}}arrayItems.children.push(itemCopy);};node.getChildrenFrom(arrayItems);node.is_array_literal=true;return;}}var arrayItems_1=node.newExpressionNode();var types=[];for(var i_1=0;i_1<node.children.length;i_1++){var it_1=node.children[i_1];if(i_1==0){continue;}var itemCopy_1=it_1.copy();this.WalkNode(itemCopy_1,ctx,wr);if(types.indexOf(itemCopy_1.eval_type_name)<0){types.push(itemCopy_1.eval_type_name);}arrayItems_1.children.push(itemCopy_1);};var typeCnt=types.length;if(typeCnt==0){ctx.addError(node,"Invalid array types");return;}node.eval_type=6;if(types.length>1){node.eval_array_type="Any";}else{node.eval_array_type=types[0];}node.is_array_literal=true;node.getChildrenFrom(arrayItems_1);}},{key:"EnterLambdaMethod",value:function EnterLambdaMethod(node,ctx,wr){var args=node.children[1];var body=node.children[2];var subCtx=ctx.fork();if(false==args.expression){ctx.addError(node,"Invalid anonymous function: second param should be an expression");}ctx.incLambdaCnt();subCtx.is_capturing=true;node.evalTypeClass=TFactory.new_lambda_signature(node,ctx,wr);var currM=ctx.getCurrentMethod();var cn=node.children[0];var m=new RangerAppFunctionDesc();m.name="lambda";m.node=node;m.is_lambda=true;m.nameNode=node.children[0];m.insideFn=currM;subCtx.newBlock();currM.myLambdas.push(m);subCtx.is_function=true;subCtx.currentMethod=m;if(cn.hasFlag("weak")){m.changeStrength(0,1,node);}else{m.changeStrength(1,1,node);}m.fnBody=node.children[2];for(var ii=0;ii<args.children.length;ii++){var arg=args.children[ii];this.CheckTypeAnnotationOf(arg,subCtx,wr);var p2=new RangerAppParamDesc();p2.name=arg.vref;p2.value_type=arg.value_type;p2.node=arg;p2.nameNode=arg;p2.init_cnt=1;p2.refType=1;p2.initRefType=1;if(args.hasBooleanProperty("strong")){p2.refType=2;p2.initRefType=2;}p2.varType=4;m.params.push(p2);arg.hasParamDesc=true;arg.paramDesc=p2;arg.eval_type=arg.value_type;arg.eval_type_name=arg.type_name;if(arg.hasFlag("strong")){p2.changeStrength(1,1,p2.nameNode);}else{arg.setFlag("lives");p2.changeStrength(0,1,p2.nameNode);}subCtx.defineVariable(p2.name,p2);};/** unused: const cnt = body.children.length **/for(var i=0;i<body.children.length;i++){var item=body.children[i];this.WalkNode(item,subCtx,wr);if(i==body.children.length-1){if(item.children.length>0){var fc=item.getFirst();if(fc.vref!="return"){cn.type_name="void";}}}};node.has_lambda=true;node.lambda_ctx=subCtx;node.eval_type=17;node.eval_function=node;node.expression_value=node.copy();node.lambdaFnDesc=m;if(ctx.isCapturing()){operatorsOf.forEach_3(node.lambda_ctx.captured_variables,function(item,index){if(ctx.isVarDefined(item)){if(ctx.isLocalToCapture(item)==false){ctx.addCapturedVariable(item);}}});}}},{key:"CheckVRefTypeAnnotationOf",value:function CheckVRefTypeAnnotationOf(node,ctx,wr){if(node.has_vref_annotation){var tAnn=node.vref_annotation;if(false==ctx.isDefinedClass(node.vref)){ctx.addError(node,"Trait class "+node.vref+" is not defined");}else{var testC=ctx.findClass(node.vref);if(testC.is_trait){if(testC.node.hasExpressionProperty("params")){/** unused: const params = testC.node.getExpressionProperty("params") **//** unused: const cnt = tAnn.children.length **/var tstr="";for(var i=0;i<tAnn.children.length;i++){var ch=tAnn.children[i];this.CheckVRefTypeAnnotationOf(ch,ctx,wr);tstr=tstr+"_"+ch.vref;};var my_class_name=testC.name+tstr;var ann=tAnn;ctx.createTraitInstanceClass(testC.name,my_class_name,ann,this,wr);node.vref=my_class_name;node.has_vref_annotation=false;return true;}}}}return false;}},{key:"CheckTypeAnnotationOf",value:function CheckTypeAnnotationOf(node,ctx,wr){if(node.has_type_annotation){var tAnn=node.type_annotation;if(false==ctx.isDefinedClass(node.type_name)){ctx.addError(node,"Trait class "+node.type_name+" is not defined");}else{var testC=ctx.findClass(node.type_name);if(testC.is_trait){if(testC.node.hasExpressionProperty("params")){/** unused: const params = testC.node.getExpressionProperty("params") **//** unused: const cnt = tAnn.children.length **/var tstr="";for(var i=0;i<tAnn.children.length;i++){var ch=tAnn.children[i];this.CheckVRefTypeAnnotationOf(ch,ctx,wr);tstr=tstr+"_"+ch.vref;};var my_class_name=testC.name+tstr;var ann=tAnn;ctx.createTraitInstanceClass(testC.name,my_class_name,ann,this,wr);node.type_name=my_class_name;node.has_type_annotation=false;return true;}}}}return false;}},{key:"matchNode",value:function matchNode(node,ctx,wr){if(0==node.children.length){return false;}var fc=node.getFirst();this.stdCommands=ctx.getStdCommands();var op_list=ctx.getOperators(fc.vref);for(var i=0;i<op_list.length;i++){var cmd=op_list[i];var cmdName=cmd.getFirst();if(cmdName.vref==fc.vref&&false==ctx.isVarDefined(cmdName.vref)){this.stdParamMatch(node,ctx,wr,true);if(typeof node.parent!=="undefined"&&node.parent!=null){}return true;}};if(fc.ns.length>1&&node.children.length>1){var possible_cmd=fc.ns[fc.ns.length-1];var op_list_2=ctx.getOperators(possible_cmd);if(op_list_2.length>0){var args=node.getSecond();var nn=fc.copy();nn.ns.pop();var objName=nn.ns.join(".");var newNode=node.newExpressionNode();newNode.add(node.newVRefNode("call"));newNode.add(node.newVRefNode(objName));newNode.add(node.newVRefNode(possible_cmd));newNode.add(args.copy());node.getChildrenFrom(newNode);if(ctx.expressionLevel()==0){ctx.lastBlockOp=node;}node.flow_done=false;this.WalkNode(node,ctx,wr);return true;}}return false;}},{key:"StartWalk",value:function StartWalk(node,ctx,wr){this.WalkNode(node,ctx,wr);for(var i=0;i<this.walkAlso.length;i++){var ch=this.walkAlso[i];this.WalkNode(ch,ctx,wr);};}},{key:"clearImports",value:function clearImports(node,ctx,wr){if(node.isFirstVref("Import")){node.expression=true;node.vref="";node.children.pop();node.children.pop();}else{for(var i=0;i<node.children.length;i++){var item=node.children[i];this.clearImports(item,ctx,wr);};}}},{key:"mergeImports",value:function mergeImports(node,ctx,wr){if(node.isFirstVref("Import")){var fNameNode=node.children[1];var import_file=fNameNode.string_value;if(typeof ctx.already_imported[import_file]!="undefined"&&ctx.already_imported.hasOwnProperty(import_file)){return;}var source_code="";var ppList=ctx.findPluginsFor("import_loader");if(ppList.length>0){try{operatorsOf.forEach_3(ppList,function(item,index){var plugin=require(item);var ss=new plugin.Plugin()["import_loader"](node,ctx,wr);if(typeof ss==='string')/* union case for string */{var str=ss;console.log("--> import "+str);source_code=str;};});}catch(e){}}ctx.already_imported[import_file]=true;var rootCtx=ctx.getRoot();if(source_code.length==0){var filePathIs=TFiles.search(rootCtx.libraryPaths,import_file);if(require("fs").existsSync(filePathIs+"/"+import_file)==false){if(ctx.hasCompilerFlag("verbose")){console.log("import did not find the file: "+import_file);}ctx.addError(node,"Could not import file "+import_file);return;}if(ctx.hasCompilerFlag("verbose")){console.log("importing "+import_file);}var c=require('fs').readFileSync(filePathIs+'/'+import_file,'utf8');source_code=c;}var code=new SourceCode(source_code);code.filename=import_file;var parser=new RangerLispParser(code);parser.parse(ctx.hasCompilerFlag("no-op-transform"));node.expression=true;node.vref="";node.children.pop();node.children.pop();if(ctx.hasCompilerFlag("copysrc")){console.log("--> copying "+import_file);var fileWr=wr.getFileWriter(".",import_file);fileWr.raw(source_code,false);}var rn=parser.rootNode;this.mergeImports(rn,ctx,wr);node.children.push(rn);}else{for(var i=0;i<node.children.length;i++){var item=node.children[i];this.mergeImports(item,ctx,wr);};}}},{key:"CollectMethods",value:function CollectMethods(node,ctx,wr){this.WalkCollectMethods(node,ctx,wr);var allTypes=[];var serviceBuilder=new RangerServiceBuilder();serviceBuilder.CreateServices(this,ctx,wr);operatorsOf_4.forEach_24(this.extendedClasses,function(item,index){var ch=ctx.findClass(index);var parent=ctx.findClass(item);ch.addParentClass(item);parent.is_inherited=true;operatorsOf.forEach_2(parent.variables,function(item,index){ch.ctx.defineVariable(item.name,item);});});for(var i=0;i<this.classesWithTraits.length;i++){var point=this.classesWithTraits[i];var cl=point.class_def;/** unused: const joinPoint = point.node **/var traitClassDef=point.node.children[1];var name=traitClassDef.vref;var t=ctx.findClass(name);if(t.extends_classes.length>0){ctx.addError(point.node,"Can not join class "+name+" because it is inherited. Currently on base classes can be used as traits.");continue;}if(t.has_constructor){ctx.addError(point.node,"Can not join class "+name+" because it has a constructor function");}else{var origBody=cl.node.children[2];var match=new RangerArgMatch();var params=t.node.getExpressionProperty("params");var initParams=point.node.getExpressionProperty("params");var traitParams=new RangerTraitParams();if(typeof params!=="undefined"&&params!=null&&typeof initParams!=="undefined"&&initParams!=null){for(var i_1=0;i_1<params.children.length;i_1++){var typeName=params.children[i_1];var pArg=initParams.children[i_1];if(0==pArg.vref.length){match.addNode(typeName.vref,pArg);}else{match.add(typeName.vref,pArg.vref,ctx);}traitParams.param_names.push(typeName.vref);traitParams.values[typeName.vref]=pArg.vref;};cl.trait_params[name]=traitParams;}else{match.add("T",cl.name,ctx);}ctx.setCurrentClass(cl);var traitClass=ctx.findClass(traitClassDef.vref);for(var i_2=0;i_2<traitClass.variables.length;i_2++){var pvar=traitClass.variables[i_2];var ccopy=pvar.node.rebuildWithType(match,true);this.WalkCollectMethods(ccopy,ctx,wr);origBody.children.push(ccopy);};for(var i_3=0;i_3<traitClass.defined_variants.length;i_3++){var fnVar=traitClass.defined_variants[i_3];var mVs=traitClass.method_variants[fnVar];for(var i_4=0;i_4<mVs.variants.length;i_4++){var variant=mVs.variants[i_4];var ccopy_1=variant.node.rebuildWithType(match,true);this.WalkCollectMethods(ccopy_1,ctx,wr);origBody.children.push(ccopy_1);};};for(var i_5=0;i_5<traitClass.static_methods.length;i_5++){var variant_1=traitClass.static_methods[i_5];var ccopy_2=variant_1.node.rebuildWithType(match,true);this.WalkCollectMethods(ccopy_2,ctx,wr);origBody.children.push(ccopy_2);};}};var cClassList=this.serializedClasses.slice().sort(function(left,right){var left_had=false;var right_had=false;operatorsOf.forEach_2(left.variables,function(item,index){if(item.nameNode.type_name==right.name||item.nameNode.array_type==right.name){left_had=true;}});operatorsOf.forEach_2(right.variables,function(item,index){if(item.nameNode.type_name==left.name||item.nameNode.array_type==left.name){right_had=true;}});if(left_had){return 1;}if(right_had){return-1;}return 0;});for(var i_6=0;i_6<cClassList.length;i_6++){var cl_1=cClassList[i_6];cl_1.is_serialized=true;var ser=new RangerSerializeClass();var extWr=new CodeWriter();ser.createJSONSerializerFn2(cl_1,cl_1.ctx,extWr);var theCode=extWr.getCode();var code=new SourceCode(theCode);code.filename="extension "+ctx.currentClass.name;var parser=new RangerLispParser(code);parser.parse(ctx.hasCompilerFlag("no-op-transform"));var rn=parser.rootNode;this.WalkCollectMethods(rn,cl_1.ctx,wr);this.walkAlso.push(rn);};for(var i_7=0;i_7<this.immutableClasses.length;i_7++){var cl_2=this.immutableClasses[i_7];var ser_1=new RangerImmutableExtension();var extWr_1=new CodeWriter();ser_1.createImmutableExtension(cl_2,cl_2.ctx,extWr_1);var theCode_1=extWr_1.getCode();var code_1=new SourceCode(theCode_1);code_1.filename="extension "+cl_2.name;var parser_1=new RangerLispParser(code_1);parser_1.parse(ctx.hasCompilerFlag("no-op-transform"));var rn_1=parser_1.rootNode;this.WalkCollectMethods(rn_1,cl_2.ctx,wr);this.walkAlso.push(rn_1);};for(var i_8=0;i_8<ctx.definedClassList.length;i_8++){var cname=ctx.definedClassList[i_8];allTypes.push(cname);var c=ctx.definedClasses[cname];if(c.is_system||c.is_interface||c.is_template||c.is_trait){continue;}for(var i_9=0;i_9<c.variables.length;i_9++){var p=c.variables[i_9];ctx.hadValidType(p.nameNode);};};for(var i_10=0;i_10<ctx.definedClassList.length;i_10++){var cname_1=ctx.definedClassList[i_10];allTypes.push(cname_1);};allTypes.push("int");allTypes.push("string");allTypes.push("boolean");allTypes.push("double");var Anynn=node.newVRefNode("Any");var rootCtx=ctx.getRoot();var new_class=new RangerAppClassDesc();new_class.name="Any";new_class.nameNode=Anynn;rootCtx.addClass("Any",new_class);new_class.is_union=true;var did_push={};for(var i_11=0;i_11<allTypes.length;i_11++){var typeName_1=allTypes[i_11];if(typeof did_push[typeName_1]!="undefined"&&did_push.hasOwnProperty(typeName_1)){continue;}new_class.is_union_of.push(typeName_1);did_push[typeName_1]=true;};Anynn.clDesc=new_class;}},{key:"defineFunctionParam",value:function defineFunctionParam(method,arg,ctx,wr){this.CheckTypeAnnotationOf(arg,ctx,wr);var p=new RangerAppParamDesc();p.name=arg.vref;p.value_type=arg.value_type;p.node=arg;p.init_cnt=1;p.nameNode=arg;p.refType=1;p.varType=4;method.params.push(p);arg.hasParamDesc=true;arg.paramDesc=p;arg.eval_type=arg.value_type;arg.eval_type_name=arg.type_name;if(arg.hasFlag("strong")){p.changeStrength(1,1,p.nameNode);}else{arg.setFlag("lives");p.changeStrength(0,1,p.nameNode);}}},{key:"spliceFunctionBody",value:function spliceFunctionBody(startIndex,node,ctx,wr){var block_index=startIndex;var ch_len=node.children.length-1;if(ch_len==startIndex){return node;}for(var i=0;i<node.children.length;i++){var cb=node.children[i];if(i>startIndex){if(cb.vref.length>0){if(ctx.hasCompilerFlag(cb.vref)&&i<ch_len){block_index=i+1;}}}};var copyOf=node.copy();while(node.children.length>startIndex+1){node.children.pop();};if(block_index>startIndex){var replacer=copyOf.children[block_index];node.children.pop();node.children.push(replacer.copy());}return node;}},{key:"CreateFunctionObject",value:function CreateFunctionObject(orig_node,ctx,wr){var subCtx=ctx.fork();var node=this.spliceFunctionBody(3,orig_node,subCtx,wr);var cn=node.getSecond();/** unused: const s = node.getVRefAt(1) **/cn.ifNoTypeSetToVoid();var m=operatorsOfCodeNode_25.rc46funcdesc_26(node,ctx);subCtx.is_function=true;subCtx.currentMethod=m;m.fnCtx=subCtx;if(cn.hasFlag("weak")){m.changeStrength(0,1,node);}else{m.changeStrength(1,1,node);}var args=node.children[2];m.fnBody=node.children[3];this.CheckTypeAnnotationOf(m.nameNode,ctx,wr);for(var ii=0;ii<args.children.length;ii++){var arg=args.children[ii];this.CheckTypeAnnotationOf(arg,subCtx,wr);var p2=new RangerAppParamDesc();p2.name=arg.vref;p2.value_type=arg.value_type;p2.node=arg;p2.nameNode=arg;p2.init_cnt=1;p2.refType=1;p2.initRefType=1;p2.debugString="--> collected ";if(args.hasBooleanProperty("strong")){p2.refType=2;p2.initRefType=2;}p2.varType=4;m.params.push(p2);arg.hasParamDesc=true;arg.paramDesc=p2;arg.eval_type=arg.value_type;arg.eval_type_name=arg.type_name;if(arg.hasFlag("strong")){p2.changeStrength(1,1,p2.nameNode);}else{arg.setFlag("lives");p2.changeStrength(0,1,p2.nameNode);}subCtx.defineVariable(p2.name,p2);};return m;}},{key:"WalkCollectMethods",value:function WalkCollectMethods(node,ctx,wr){var _this14=this;var find_more=true;if(node.children.length>0){var fc=node.getFirst();if(fc.ns.length>1){if(fc.ns[0]=="plugin"){if(node.is_plugin){return;}node.is_plugin=true;var pName=fc.ns[1];ctx.addPluginNode(pName,node);return;}}}if(node.isFirstVref("flag")){return;}if(node.isFirstVref("page")){return;}if(node.isFirstVref("service")){return;}if(node.isFirstVref("operator")){var nameNode=node.getSecond();/** unused: const opClassName = nameNode.vref **/if(nameNode.vref=="class"){var new_class=new RangerAppClassDesc();new_class.name=nameNode.type_name;new_class.nameNode=nameNode;nameNode.vref=nameNode.type_name;ctx.addClass(nameNode.vref,new_class);var cSig=TFactory.new_class_signature(nameNode,ctx,wr);cSig.is_system=true;new_class.is_system=true;nameNode.clDesc=new_class;}var b_is_void=nameNode.type_name=="void";var opLang=node.children[2];var opsList=node.children[3];for(var i=0;i<opsList.children.length;i++){var op=opsList.children[i];var fc_1=op.getFirst();if(fc_1.vref=="fn"){var nn=op.getSecond();var args=op.getThird();var opCode=op.children[3];var opN=new CodeNode(op.code,op.sp,op.ep);var opName=nn.copy();var opSig=nn.rebuildWithType(new RangerArgMatch(),false);var opArgs=args.rebuildWithType(new RangerArgMatch(),false);var opTpls=new CodeNode(op.code,op.sp,op.ep);opTpls.is_block_node=true;var opTemplatesMain=new CodeNode(op.code,op.sp,op.ep);var opTemplatesVRef=new CodeNode(op.code,op.sp,op.ep);var opTemplatesList=new CodeNode(op.code,op.sp,op.ep);opTemplatesVRef.vref="templates";opTemplatesMain.children.push(opTemplatesVRef);opTemplatesMain.children.push(opTemplatesList);opTpls.children.push(opTemplatesMain);opN.children.push(opName);if(nn.hasFlag("newcontext")){opName.setFlag("newcontext");}opSig.vref=nn.vref;opN.children.push(opSig);var opThisNode=nameNode.rebuildWithType(new RangerArgMatch(),false);opThisNode.vref="self";if(nameNode.hasFlag("mutates")){opThisNode.setFlag("mutates");}if(nameNode.hasFlag("immutable")){opThisNode.setFlag("immutable");}if(b_is_void){}else{opArgs.children.splice(0,0,opThisNode);}opN.children.push(opArgs);opN.children.push(opTpls);if(op.hasStringProperty("doc")){opN.setStringProperty("doc",op.getStringProperty("doc"));}var opCodeNode=opCode.rebuildWithType(new RangerArgMatch(),false);var actualCode=new CodeNode(opCode.code,op.sp,op.ep);var opLangDef=opLang.rebuildWithType(new RangerArgMatch(),false);if(opLangDef.vref=="all"){opLangDef.vref="*";}actualCode.children.push(opLangDef);actualCode.children.push(opCodeNode);if(opLangDef.vref=="*"){if(opCode.is_block_node==false){opSig.setFlag("macro");}}if(nameNode.hasFlag("macro")){opSig.setFlag("macro");}if(nn.hasFlag("pure")){opSig.setFlag("pure");}opTemplatesList.children.push(actualCode);ctx.createOperator(opN);}};return;var instances=node.getThird();var new_class_1=new RangerAppClassDesc();new_class_1.name=nameNode.vref;new_class_1.nameNode=nameNode;ctx.addClass(nameNode.vref,new_class_1);new_class_1.is_system_union=true;for(var i_1=0;i_1<instances.children.length;i_1++){var ch=instances.children[i_1];new_class_1.is_union_of.push(ch.vref);};nameNode.clDesc=new_class_1;return;}if(node.isFirstVref("union")){var nameNode_1=node.getSecond();var instances_1=node.getThird();var new_class_2=new RangerAppClassDesc();new_class_2.name=nameNode_1.vref;new_class_2.nameNode=nameNode_1;ctx.addClass(nameNode_1.vref,new_class_2);new_class_2.is_union=true;for(var i_2=0;i_2<instances_1.children.length;i_2++){var ch_1=instances_1.children[i_2];new_class_2.is_union_of.push(ch_1.vref);};nameNode_1.clDesc=new_class_2;return;}if(node.isFirstVref("systemunion")){var nameNode_2=node.getSecond();if(ctx.isDefinedClass(nameNode_2.vref)){var cl=ctx.findClass(nameNode_2.vref);if(cl.is_system==false){ctx.addError(node,"Only system classes can be systemunions");}cl.is_system_union=true;var instances_2=node.getThird();for(var i_3=0;i_3<instances_2.children.length;i_3++){var ch_2=instances_2.children[i_3];cl.is_union_of.push(ch_2.vref);};return;}var nameNode_3=node.getSecond();var instances_3=node.getThird();var new_class_3=new RangerAppClassDesc();new_class_3.name=nameNode_3.vref;new_class_3.nameNode=nameNode_3;ctx.addClass(nameNode_3.vref,new_class_3);new_class_3.is_system_union=true;for(var i_4=0;i_4<instances_3.children.length;i_4++){var ch_3=instances_3.children[i_4];new_class_3.is_union_of.push(ch_3.vref);};nameNode_3.clDesc=new_class_3;return;}if(node.isFirstVref("systemclass")){var nameNode_4=node.getSecond();if(ctx.isDefinedClass(nameNode_4.vref)){var cl_1=ctx.findClass(nameNode_4.vref);if(cl_1.is_system_union==false){ctx.addError(node,"Class already defined and it was not a systemunion.");}cl_1.is_system=true;var instances_4=node.getThird();for(var i_5=0;i_5<instances_4.children.length;i_5++){var ch_4=instances_4.children[i_5];var langName=ch_4.getFirst();var langClassName=ch_4.getSecond();cl_1.systemNodes[langName.vref]=ch_4;if(langClassName.vref.length>0){cl_1.systemNames[langName.vref]=langClassName.vref;}if(langClassName.string_value.length>0){cl_1.systemNames[langName.vref]=langClassName.string_value;}};return;}var instances_5=node.getThird();var new_class_4=new RangerAppClassDesc();new_class_4.name=nameNode_4.vref;new_class_4.nameNode=nameNode_4;ctx.addClass(nameNode_4.vref,new_class_4);new_class_4.is_system=true;for(var i_6=0;i_6<instances_5.children.length;i_6++){var ch_5=instances_5.children[i_6];var langName_1=ch_5.getFirst();var langClassName_1=ch_5.getSecond();new_class_4.systemNodes[langName_1.vref]=ch_5;if(langClassName_1.vref.length>0){new_class_4.systemNames[langName_1.vref]=langClassName_1.vref;}if(langClassName_1.string_value.length>0){new_class_4.systemNames[langName_1.vref]=langClassName_1.string_value;}};nameNode_4.is_system_class=true;nameNode_4.clDesc=new_class_4;return;}if(node.isFirstVref("extends")){if(node.children.length>1){var ee=node.getSecond();var currC=ctx.currentClass;currC.addParentClass(ee.vref);var ParentClass=ctx.findClass(ee.vref);ParentClass.is_inherited=true;}find_more=false;}if(node.isFirstVref("Extends")){var extList=node.children[1];var currC_1=ctx.currentClass;for(var ii=0;ii<extList.children.length;ii++){var ee_1=extList.children[ii];currC_1.addParentClass(ee_1.vref);var ParentClass_1=ctx.findClass(ee_1.vref);ParentClass_1.is_inherited=true;};}if(node.isFirstVref("constructor")||node.isFirstVref("Constructor")){var currC_2=ctx.currentClass;var subCtx=currC_2.ctx.fork();currC_2.has_constructor=true;currC_2.constructor_node=node;var m=new RangerAppFunctionDesc();m.name="Constructor";m.node=node;m.nameNode=node.children[0];m.fnBody=node.children[2];m.fnCtx=subCtx;var args_1=node.children[1];for(var ii_1=0;ii_1<args_1.children.length;ii_1++){var arg=args_1.children[ii_1];var p=new RangerAppParamDesc();p.name=arg.vref;p.value_type=arg.value_type;p.node=arg;p.nameNode=arg;p.refType=1;p.varType=4;m.params.push(p);arg.hasParamDesc=true;arg.paramDesc=p;arg.eval_type=arg.value_type;arg.eval_type_name=arg.type_name;subCtx.defineVariable(p.name,p);};currC_2.constructor_fn=m;find_more=false;}if(node.isFirstVref("enum")){var fNameNode=node.children[1];var enumList=node.children[2];var new_enum=new RangerAppEnum();for(var i_7=0;i_7<enumList.children.length;i_7++){var item=enumList.children[i_7];var fc_2=item.getFirst();new_enum.add(fc_2.vref);};ctx.definedEnums[fNameNode.vref]=new_enum;find_more=false;}if(node.isFirstVref("Enum")){var fNameNode_1=node.children[1];var enumList_1=node.children[2];var new_enum_1=new RangerAppEnum();for(var i_8=0;i_8<enumList_1.children.length;i_8++){var item_1=enumList_1.children[i_8];new_enum_1.add(item_1.vref);};ctx.definedEnums[fNameNode_1.vref]=new_enum_1;find_more=false;}if(node.isFirstVref("trait")){var s=node.getVRefAt(1);var classNameNode=node.getSecond();var new_class_5=new RangerAppClassDesc();new_class_5.name=s;var subCtx_1=ctx.fork();ctx.setCurrentClass(new_class_5);subCtx_1.setCurrentClass(new_class_5);new_class_5.ctx=subCtx_1;new_class_5.nameNode=classNameNode;ctx.addClass(s,new_class_5);new_class_5.classNode=node;new_class_5.node=node;new_class_5.is_trait=true;}if(node.isFirstVref("CreateClass")||node.isFirstVref("class")){if(node.children.length<3){ctx.addError(node,"Not enough arguments for creating a class");return;}var s_1=node.getVRefAt(1);var classNameNode_1=node.getSecond();var new_class_6=new RangerAppClassDesc();new_class_6.name=s_1;new_class_6.compiledName=s_1;classNameNode_1.evalTypeClass=TFactory.new_class_signature(classNameNode_1,ctx,wr);var notOkNames=["main"];if(notOkNames.indexOf(s_1)>=0){ctx.addError(classNameNode_1,"Unfortunately this class name not allowed: "+s_1);}switch(s_1){case"_":new_class_6.compiledName="utiltyClass";break;};var subCtx_2=ctx.fork();ctx.setCurrentClass(new_class_6);subCtx_2.setCurrentClass(new_class_6);new_class_6.ctx=subCtx_2;new_class_6.nameNode=classNameNode_1;ctx.addClass(s_1,new_class_6);new_class_6.classNode=node;new_class_6.node=node;if(node.hasBooleanProperty("trait")){new_class_6.is_trait=true;}if(classNameNode_1.hasFlag("immutable")){this.immutableClasses.push(new_class_6);new_class_6.is_immutable=true;}var third=node.getThird();if(third.vref=="extends"){if(node.chlen()>=4){var extClass=node.children[3];if(extClass.vref.length>0){this.extendedClasses[s_1]=extClass.vref;}else{ctx.addError(node,"Invalid classname given for the extends keyword");}}}}if(node.isFirstVref("TemplateClass")){var s_2=node.getVRefAt(1);ctx.addTemplateClass(s_2,node);find_more=false;}if(node.isFirstVref("Extends")){var list=node.children[1];for(var i_9=0;i_9<list.children.length;i_9++){var cname=list.children[i_9];var extC=ctx.findClass(cname.vref);for(var i_10=0;i_10<extC.variables.length;i_10++){var vv=extC.variables[i_10];var currC_3=ctx.currentClass;var subCtx_3=currC_3.ctx;subCtx_3.defineVariable(vv.name,vv);};};find_more=false;}if(node.isFirstVref("def")||node.isFirstVref("let")){var s_3=node.getVRefAt(1);var vDef=node.children[1];var p_1=new RangerAppParamDesc();if(vDef.has_type_annotation){this.CheckTypeAnnotationOf(vDef,ctx,wr);}if(s_3!=ctx.transformWord(s_3)){}var currC_4=ctx.currentClass;if(currC_4.is_immutable){vDef.setFlag("weak");if(vDef.value_type==6){var initNode=node.newExpressionNode();initNode.push(node.newVRefNode("new"));var tDef=node.newVRefNode("Vector");var vAnn=node.newExpressionNode();vAnn.push(node.newVRefNode(vDef.array_type));tDef.has_vref_annotation=true;tDef.vref_annotation=vAnn;initNode.push(tDef);node.children[2]=initNode;vDef.value_type=11;vDef.type_name="Vector";var tAnn=node.newExpressionNode();tAnn.push(node.newVRefNode(vDef.array_type));vDef.has_type_annotation=true;vDef.type_annotation=tAnn;this.CheckTypeAnnotationOf(vDef,ctx,wr);this.CheckVRefTypeAnnotationOf(tDef,ctx,wr);}if(vDef.value_type==7){var initNode_1=node.newExpressionNode();initNode_1.push(node.newVRefNode("new"));var tDef_1=node.newVRefNode("Map");var vAnn_1=node.newExpressionNode();vAnn_1.push(node.newVRefNode(vDef.key_type));vAnn_1.push(node.newVRefNode(vDef.array_type));tDef_1.has_vref_annotation=true;tDef_1.vref_annotation=vAnn_1;initNode_1.push(tDef_1);node.children[2]=initNode_1;vDef.value_type=11;vDef.type_name="Map";var tAnn_1=node.newExpressionNode();tAnn_1.push(node.newVRefNode(vDef.key_type));tAnn_1.push(node.newVRefNode(vDef.array_type));vDef.has_type_annotation=true;vDef.type_annotation=tAnn_1;this.CheckTypeAnnotationOf(vDef,ctx,wr);this.CheckVRefTypeAnnotationOf(tDef_1,ctx,wr);}}p_1.name=s_3;p_1.value_type=vDef.value_type;p_1.node=node;p_1.is_class_variable=true;p_1.varType=8;p_1.node=node;p_1.nameNode=vDef;vDef.hasParamDesc=true;vDef.ownParamDesc=p_1;vDef.paramDesc=p_1;node.hasParamDesc=true;node.paramDesc=p_1;if(vDef.hasFlag("weak")){p_1.changeStrength(0,2,p_1.nameNode);}else{p_1.changeStrength(2,2,p_1.nameNode);}if(node.children.length>2){p_1.set_cnt=1;p_1.init_cnt=1;p_1.def_value=node.children[2];p_1.is_optional=false;if(p_1.def_value.value_type==4){vDef.type_name="string";}if(p_1.def_value.value_type==3){vDef.type_name="int";}if(p_1.def_value.value_type==2){vDef.type_name="double";}if(p_1.def_value.value_type==5){vDef.type_name="boolean";}var valueNode=node.children[2];if(valueNode.children.length>0){var fc_3=valueNode.getFirst();if(fc_3.vref=="new"){var second=valueNode.getSecond();this.CheckVRefTypeAnnotationOf(second,ctx,wr);}}}else{p_1.is_optional=true;if(false==(vDef.value_type==6||vDef.value_type==7)){vDef.setFlag("optional");}}currC_4.addVariable(p_1);var subCtx_4=currC_4.ctx;subCtx_4.defineVariable(p_1.name,p_1);p_1.is_class_variable=true;find_more=false;}if(node.isFirstVref("operators")){var listOf=node.getSecond();for(var i_11=0;i_11<listOf.children.length;i_11++){var item_2=listOf.children[i_11];ctx.createOperator(item_2);};find_more=false;}if(node.isFirstVref("Import")||node.isFirstVref("import")){var fNameNode_2=node.children[1];var import_file=fNameNode_2.string_value;if(typeof ctx.already_imported[import_file]!="undefined"&&ctx.already_imported.hasOwnProperty(import_file)){return;}else{ctx.already_imported[import_file]=true;}var rootCtx=ctx.getRoot();var filePathIs=TFiles.search(rootCtx.libraryPaths,import_file);if(require("fs").existsSync(filePathIs+"/"+import_file)==false){ctx.addError(node,"Could not import file "+import_file);return;}var c=require('fs').readFileSync(filePathIs+'/'+import_file,'utf8');var code=new SourceCode(c);code.filename=import_file;var parser=new RangerLispParser(code);parser.parse(ctx.hasCompilerFlag("no-op-transform"));var rnode=parser.rootNode;this.WalkCollectMethods(rnode,ctx,wr);find_more=false;}if(node.isFirstVref("does")){var defName=node.getSecond();var currC_5=ctx.currentClass;currC_5.consumes_traits.push(defName.vref);var joinPoint=new ClassJoinPoint();joinPoint.class_def=currC_5;joinPoint.node=node;this.classesWithTraits.push(joinPoint);}var b_is_main=false;if(node.code.filename==ctx.getRootFile()){b_is_main=true;}if(node.isFirstVref("static")){if(node.chlen()<5){ctx.addError(node,"Invalid static function declaration");return;}node=this.spliceFunctionBody(4,node,ctx,wr);var s_4=node.getVRefAt(2);if(s_4=="main"){if(b_is_main){this.mainCnt=this.mainCnt+1;if(this.mainCnt>1){ctx.addError(node,"main function can be declared only once");}}}var currC_6=ctx.currentClass;var m_1=new RangerAppFunctionDesc();m_1.name=s_4;m_1.compiledName=ctx.transformWord(s_4);m_1.node=node;m_1.is_static=true;m_1.nameNode=node.children[2];m_1.nameNode.ifNoTypeSetToVoid();var args_2=node.children[3];m_1.fnBody=node.children[4];this.CheckTypeAnnotationOf(m_1.nameNode,ctx,wr);operatorsOf.forEach_6(args_2.children,function(item,index){_this14.defineFunctionParam(m_1,item,ctx,wr);});currC_6.addStaticMethod(m_1);find_more=false;return;}if(node.isFirstVref("StaticMethod")||node.isFirstVref("sfn")){node=this.spliceFunctionBody(3,node,ctx,wr);var s_5=node.getVRefAt(1);var currC_7=ctx.currentClass;var m_2=new RangerAppFunctionDesc();m_2.name=s_5;m_2.compiledName=ctx.transformWord(s_5);m_2.node=node;m_2.is_static=true;m_2.nameNode=node.children[1];m_2.nameNode.ifNoTypeSetToVoid();var args_3=node.children[2];m_2.fnBody=node.children[3];this.CheckTypeAnnotationOf(m_2.nameNode,ctx,wr);operatorsOf.forEach_6(args_3.children,function(item,index){_this14.defineFunctionParam(m_2,item,ctx,wr);});currC_7.addStaticMethod(m_2);find_more=false;if(m_2.nameNode.hasFlag("main")){if(b_is_main){this.mainCnt=this.mainCnt+1;if(this.mainCnt>1){ctx.addError(node,"main function can be declared only once");}}}return;}if(node.isFirstVref("extension")){var s_6=node.getVRefAt(1);var old_class=ctx.findClass(s_6);ctx.setCurrentClass(old_class);}if(node.isFirstVref("PublicMethod")||node.isFirstVref("fn")){var currC_8=ctx.currentClass;var fnObj=operatorsOf_25.rc46func_27(node,currC_8.ctx,wr);var cn=fnObj.nameNode;if(currC_8.hasOwnMethod(fnObj.name)&&false==cn.hasFlag("override")){ctx.addError(node,"Error: method of same name declared earlier. Overriding function declarations is not currently allowed!");return;}if(cn.hasFlag("main")){ctx.addError(node,"Error: dynamic method declared as @(main). Use static 'sfn' instead of 'fn'.");return;}currC_8.addMethod(fnObj);find_more=false;return;}if(find_more){for(var i_12=0;i_12<node.children.length;i_12++){var item_3=node.children[i_12];this.WalkCollectMethods(item_3,ctx,wr);};}if(node.hasBooleanProperty("serialize")){this.serializedClasses.push(ctx.currentClass);}}},{key:"findFunctionDesc",value:function findFunctionDesc(obj,ctx,wr){var varDesc=void 0;var varFnDesc=void 0;if(obj.vref!=this.getThisName()){if(obj.ns.length>1){var cnt=obj.ns.length;var classRefDesc=void 0;var classDesc=void 0;for(var i=0;i<obj.ns.length;i++){var strname=obj.ns[i];if(i==0){if(strname==this.getThisName()){classDesc=ctx.getCurrentClass();}else{if(ctx.isDefinedClass(strname)){classDesc=ctx.findClass(strname);continue;}classRefDesc=ctx.getVariableDef(strname);if(typeof classRefDesc==="undefined"||typeof classRefDesc.nameNode==="undefined"){ctx.addError(obj,"Error, no description for called object: "+strname);break;}classRefDesc.ref_cnt=1+classRefDesc.ref_cnt;classDesc=ctx.findClass(classRefDesc.nameNode.type_name);if(typeof classDesc==="undefined"){return varFnDesc;}}}else{if(typeof classDesc==="undefined"){return varFnDesc;}if(i<cnt-1){varDesc=classDesc.findVariable(strname);if(typeof varDesc==="undefined"){ctx.addError(obj,"Error, no description for refenced obj: "+strname);}var subClass=varDesc.getTypeName();classDesc=ctx.findClass(subClass);continue;}if(typeof classDesc!=="undefined"&&classDesc!=null){varFnDesc=classDesc.findMethod(strname);if(typeof varFnDesc==="undefined"){varFnDesc=classDesc.findStaticMethod(strname);if(typeof varFnDesc==="undefined"){ctx.addError(obj," function variable not found "+strname);}}}}};return varFnDesc;}var udesc=ctx.getCurrentClass();var currClass=udesc;varFnDesc=currClass.findMethod(obj.vref);if(typeof varFnDesc.nameNode!=="undefined"&&varFnDesc.nameNode!=null){}else{ctx.addError(obj,"Error, no description for called function: "+obj.vref);}return varFnDesc;}return varFnDesc;}},{key:"findParamDesc",value:function findParamDesc(obj,ctx,wr){var varDesc=void 0;var set_nsp=false;var classDesc=void 0;if(0==obj.nsp.length){set_nsp=true;}if(obj.vref!=this.getThisName()){if(obj.ns.length>1){var cnt=obj.ns.length;var classRefDesc=void 0;for(var i=0;i<obj.ns.length;i++){var strname=obj.ns[i];if(i==0){if(strname==this.getThisName()){classDesc=ctx.getCurrentClass();if(set_nsp){obj.nsp.push(classDesc);}}else{if(ctx.isDefinedClass(strname)){classDesc=ctx.findClass(strname);if(set_nsp){obj.nsp.push(classDesc);}continue;}classRefDesc=ctx.getVariableDef(strname);if(typeof classRefDesc==="undefined"){ctx.addError(obj,"Error, no description for called object: "+strname);break;}if(set_nsp){obj.nsp.push(classRefDesc);}if(classRefDesc.nameNode.hasFlag("optional")){if(ctx.hasCompilerFlag("strict")){if(false==ctx.isTryBlock()){ctx.addError(obj,"Optional automatically unwrapped outside try block");}}}classRefDesc.ref_cnt=1+classRefDesc.ref_cnt;classDesc=ctx.findClass(classRefDesc.nameNode.type_name);}}else{if(i<cnt-1){varDesc=classDesc.findVariable(strname);if(i>0){if(varDesc.nameNode.hasFlag("optional")){if(ctx.hasCompilerFlag("strict")){if(false==ctx.isTryBlock()){ctx.addError(obj,"Optional automatically unwrapped outside try block");}}}}if(typeof varDesc==="undefined"){ctx.addError(obj,"Error, no description for refenced obj: "+strname);}var subClass=varDesc.getTypeName();classDesc=ctx.findClass(subClass);if(set_nsp){obj.nsp.push(varDesc);}continue;}if(typeof classDesc!=="undefined"&&classDesc!=null){varDesc=classDesc.findVariable(strname);if(typeof varDesc==="undefined"){var classMethod=classDesc.findMethod(strname);if(typeof classMethod==="undefined"){classMethod=classDesc.findStaticMethod(strname);if(typeof classMethod==="undefined"){ctx.addError(obj,"variable not found "+strname);}}if(typeof classMethod!=="undefined"&&classMethod!=null){if(set_nsp){obj.nsp.push(classMethod);}return classMethod;}}if(set_nsp){obj.nsp.push(varDesc);}}}};return varDesc;}varDesc=ctx.getVariableDef(obj.vref);if(typeof varDesc.nameNode!=="undefined"&&varDesc.nameNode!=null){}else{}return varDesc;}var cc=ctx.getCurrentClass();return cc;}},{key:"convertToUnion",value:function convertToUnion(unionName,node,ctx,wr){if(ctx.isDefinedClass(unionName)){var c1=ctx.findClass(unionName);if(c1.is_union){if(node.type_name!=c1.name&&node.eval_type_name!=c1.name){var toEx=node.newExpressionNode();var toVref=node.newVRefNode("to");var argType=node.newVRefNode("_");var targetNode=node.copy();argType.type_name=unionName;toEx.push(toVref);toEx.push(argType);toEx.push(targetNode);node.expression=true;node.flow_done=false;node.value_type=0;node.getChildrenFrom(toEx);var wr_1=new CodeWriter();this.WalkNode(node,ctx,wr_1);}}}}},{key:"transformMethodToLambda",value:function transformMethodToLambda(node,vFnDef,ctx,wr){if(vFnDef.isFunction()){var args=operatorsOf.map_28(vFnDef.params,function(item,index){return item.nameNode.copy();});var fnArg=vFnDef.nameNode.copy();fnArg.vref="fn";var subNode=node.copy();subNode.flow_done=false;var argsExpr=operatorsOf.map_29(args,function(item,index){return item.copy();});if(vFnDef.nameNode.type_name.length>0&&vFnDef.nameNode.type_name!="void"||vFnDef.nameNode.array_type.length>0){var staticLambda=CodeNode.fromList([fnArg,CodeNode.fromList(args),CodeNode.blockFromList([CodeNode.fromList([CodeNode.vref1("return"),CodeNode.fromList([subNode,CodeNode.fromList(argsExpr)])])])]);node.getChildrenFrom(staticLambda);}else{var staticLambda_1=CodeNode.fromList([fnArg,CodeNode.fromList(args),CodeNode.blockFromList([CodeNode.fromList([subNode,CodeNode.fromList(argsExpr)])])]);node.getChildrenFrom(staticLambda_1);}node.flow_done=false;node.expression=true;node.value_type=0;node.vref="";this.WalkNode(node,ctx,wr);}}},{key:"areEqualTypes",value:function areEqualTypes(n1,n2,ctx,wr){if(n1.eval_type==17){var n1Expr=n1.expression_value;var n2Expr=n2.expression_value;if(typeof n1Expr==="undefined"){if(n1.hasParamDesc&&typeof n1.paramDesc.nameNode!=="undefined"&&n1.paramDesc.nameNode!=null&&typeof n1.paramDesc.nameNode.expression_value!=="undefined"&&n1.paramDesc.nameNode.expression_value!=null){n1Expr=n1.paramDesc.nameNode.expression_value;}}if(typeof n2Expr==="undefined"){if(n2.hasParamDesc&&typeof n2.paramDesc.nameNode!=="undefined"&&n2.paramDesc.nameNode!=null&&typeof n2.paramDesc.nameNode.expression_value!=="undefined"&&n2.paramDesc.nameNode.expression_value!=null){n2Expr=n2.paramDesc.nameNode.expression_value;}}if(typeof n1Expr!=="undefined"&&n1Expr!=null&&typeof n2Expr!=="undefined"&&n2Expr!=null){return this.matchLambdaArgs(n1Expr,n2Expr,ctx,new CodeWriter());}if(n2.eval_type==28){console.log(" FOUND METHOD "+n2.getCode());var pDesc=n2.paramDesc;this.transformMethodToLambda(n2,pDesc,ctx,wr);return true;}var vFnDef=this.findFunctionDesc(n2,ctx,wr);if(typeof vFnDef!=="undefined"&&vFnDef!=null){this.transformMethodToLambda(n2,vFnDef,ctx,wr);return true;}ctx.addError(n2,"Was not able to evaluate lambda expression types!");if(typeof n1Expr!=="undefined"&&n1Expr!=null){ctx.addError(n1,"^ "+n1Expr.getCode());}else{ctx.addError(n1,"^ expression_value not found (1)");}if(typeof n2Expr!=="undefined"&&n2Expr!=null){ctx.addError(n2,"^ "+n2Expr.getCode());}else{ctx.addError(n2,"^ expression_value not found (2)");}return false;}if(n1.eval_type!=0&&n2.eval_type!=0&&n1.eval_type_name.length>0&&n2.eval_type_name.length>0){if(n1.eval_type_name==n2.eval_type_name){}else{var b_ok=false;if(ctx.isEnumDefined(n1.eval_type_name)&&n2.eval_type_name=="int"){b_ok=true;}if(ctx.isEnumDefined(n2.eval_type_name)&&n1.eval_type_name=="int"){b_ok=true;}if(n1.eval_type_name=="char"&&n2.eval_type_name=="int"){b_ok=true;}if(n1.eval_type_name=="int"&&n2.eval_type_name=="char"){b_ok=true;}if(ctx.isDefinedClass(n1.eval_type_name)&&ctx.isDefinedClass(n2.eval_type_name)){var c1=ctx.findClass(n1.eval_type_name);var c2=ctx.findClass(n2.eval_type_name);if(c1.is_union){if(c2.is_union==false){this.convertToUnion(n1.eval_type_name,n2,ctx,new CodeWriter());if(n2.eval_type_name==n1.eval_type_name){return true;}else{return false;}}}if(c2.is_union!=c1.is_union){ctx.addError(n1,"Can not convert union to type ");return false;}if(c2.is_union==true&&c1.is_union==true){ctx.addError(n1,"Union types must be the same => "+n1.eval_type_name+" <> "+n2.eval_type_name);return false;}if(c1.isSameOrParentClass(n2.eval_type_name,ctx)){return true;}if(c2.isSameOrParentClass(n1.eval_type_name,ctx)){return true;}}if(b_ok==false){if(n1.eval_type_name=="Any"){this.convertToUnion("Any",n2,ctx,new CodeWriter());if(n2.eval_type_name==n1.eval_type_name){return true;}else{return false;}}return false;}}}return true;}},{key:"shouldBeEqualTypes",value:function shouldBeEqualTypes(n1,n2,ctx,msg){if(n1.eval_type!=0&&n2.eval_type!=0&&n1.eval_type_name.length>0&&n2.eval_type_name.length>0){if(n1.eval_type_name==n2.eval_type_name){}else{var b_ok=false;if(ctx.isEnumDefined(n1.eval_type_name)&&n2.eval_type_name=="int"){b_ok=true;}if(ctx.isEnumDefined(n2.eval_type_name)&&n1.eval_type_name=="int"){b_ok=true;}if(ctx.isDefinedClass(n2.eval_type_name)){var cc=ctx.findClass(n2.eval_type_name);if(cc.isSameOrParentClass(n1.eval_type_name,ctx)){b_ok=true;}}if(n1.eval_type_name=="char"&&n2.eval_type_name=="int"){b_ok=true;}if(n1.eval_type_name=="int"&&n2.eval_type_name=="char"){b_ok=true;}if(b_ok==false){ctx.addError(n1,"Type mismatch "+n2.eval_type_name+" <> "+n1.eval_type_name+". "+msg);}}}}},{key:"shouldBeExpression",value:function shouldBeExpression(n1,ctx,msg){if(n1.expression==false){ctx.addError(n1,msg);}}},{key:"shouldHaveChildCnt",value:function shouldHaveChildCnt(cnt,n1,ctx,msg){if(n1.children.length!=cnt){ctx.addError(n1,msg);}}},{key:"findLanguageOper",value:function findLanguageOper(details,ctx,opDef){var langName=operatorsOf_12.getTargetLang_13(ctx);var rv=void 0;for(var i=0;i<details.children.length;i++){var det=details.children[i];if(det.children.length>0){var fc=det.children[0];if(fc.vref=="templates"){var tplList=det.children[1];for(var i_1=0;i_1<tplList.children.length;i_1++){var tpl=tplList.children[i_1];if(tpl.hasExpressionProperty("flags")){var _ret4=function(){var flagList=tpl.getExpressionProperty("flags");var b_matched=false;operatorsOf.forEach_6(flagList.children,function(item,index){b_matched=b_matched||ctx.hasCompilerFlag(item.vref);});if(b_matched==false){return"continue";}}();if(_ret4==="continue")continue;}var tplName=tpl.getFirst();if(tplName.vref!="*"&&tplName.vref!=langName){continue;}rv=tpl;return rv;};if(langName=="ranger"){(function(){var opNameNode=opDef.getFirst();var opArgs=opDef.getThird();var rangerTpl=CodeNode.fromList([CodeNode.newStr("("+opNameNode.vref+" ")]);var cnt=1;operatorsOf.forEach_6(opArgs.children,function(item,index){if(item.type_name=="block"){rangerTpl.children.push(CodeNode.fromList([CodeNode.vref1("block"),CodeNode.newInt(cnt)]));}else{rangerTpl.children.push(CodeNode.fromList([CodeNode.vref1("e"),CodeNode.newInt(cnt)]));}cnt=cnt+1;});rangerTpl.children.push(CodeNode.newStr(")"));rv=CodeNode.fromList([CodeNode.vref1("ranger"),rangerTpl]);})();}}}};return rv;}},{key:"buildMacro",value:function buildMacro(langOper,args,ctx){var subCtx=ctx.fork();var wr=new CodeWriter();var lcc=new LiveCompiler();lcc.langWriter=new RangerRangerClassWriter();lcc.langWriter.compiler=lcc;subCtx.targetLangName="ranger";subCtx.restartExpressionLevel();var macroNode=langOper;var cmdList=macroNode.getSecond();if(ctx.hasCompilerFlag("show-macros")){console.log("Building macro "+macroNode.vref+" : "+cmdList.getCode());console.log("Arguments : "+args.getCode());}lcc.walkCommandList(cmdList,args,subCtx,wr);var lang_str=wr.getCode();var lang_code=new SourceCode(lang_str);lang_code.filename="<macro "+macroNode.vref+">";var lang_parser=new RangerLispParser(lang_code);lang_parser.parse(ctx.hasCompilerFlag("no-op-transform"));var node=lang_parser.rootNode;if(args.register_expressions.length>0){node.register_expressions=operatorsOf.clone_30(args.register_expressions);}operatorsOf.forEach_6(args.children,function(item,index){operatorsOf.forEach_6(item.register_expressions,function(item,index){var re=item;node.register_expressions.push(re);});});return node;}},{key:"stdParamMatch",value:function stdParamMatch(callArgs,inCtx,wr,require_all_match){var _this15=this;this.stdCommands=inCtx.getStdCommands();var callFnName=callArgs.getFirst();/** unused: const cmds = this.stdCommands **/var some_matched=false;/** unused: const found_fn = false **/var added_ns="";/** unused: let missed_args = [] **/var ctx=inCtx.fork();/** unused: const lang_name = operatorsOf_12.getTargetLang_13(ctx) **/var expects_error=false;var err_cnt=inCtx.getErrorCount();var arg_eval_start=0;if(callArgs.hasBooleanProperty("error")){expects_error=true;}if(inCtx.expressionLevel()==0){inCtx.lastBlockOp=callArgs;}else{}/** unused: const in_chain = false **/var call_arg_cnt=callArgs.children.length;var op_list=ctx.getOperators(callFnName.vref);var _loop=function _loop(main_index){ch=op_list[main_index];var fc=ch.getFirst();var nameNode=ch.getSecond();var args=ch.getThird();if(inCtx.isVarDefined(fc.vref)){return{v:false};}ctx.removeOpNs(added_ns);ctx.addOpNs(fc.vref);added_ns=fc.vref;/** unused: const line_index = callArgs.getLine() **/var callerArgCnt=call_arg_cnt-1;var fnArgCnt=args.children.length;var has_eval_ctx=false;var is_macro=false;var plugin_name="operator";var plugin_fn="";var is_plugin=false;var is_pure=false;var is_static_fn=false;var static_fn_name="";var static_class_name="";var static_nameNode=void 0;if(nameNode.hasFlag("newcontext")){ctx=inCtx.fork();has_eval_ctx=true;}var throws_exception=nameNode.hasFlag("throws");var is_async=nameNode.hasFlag("async");var expanding_node=nameNode.hasFlag("expands");if(callerArgCnt==fnArgCnt||expanding_node){var _ret7=function(){var details_list=ch.children[3];var langOper=_this15.findLanguageOper(details_list,ctx,ch);if(typeof langOper==="undefined"){return{v:"continue"};}is_pure=nameNode.hasFlag("pure");if(langOper.hasBooleanProperty("macro")||nameNode.hasFlag("macro")){is_macro=true;}if(langOper.hasStringProperty("plugin")){plugin_name=langOper.getStringProperty("plugin");is_plugin=true;var pluginFn=langOper.getStringProperty("fn");if(pluginFn.length>0){plugin_fn=pluginFn;console.log("Function : "+plugin_fn);}}var codeDef=langOper.getSecond();var match=new RangerArgMatch();var last_walked=0;var last_was_block=false;var walk_later=[];var not_enough_args=false;var blocksToWalkLater=[];if(ch.hasExpressionProperty("flags")){var flagList=ch.getExpressionProperty("flags");var b_matched=false;operatorsOf.forEach_6(flagList.children,function(item,index){b_matched=b_matched||ctx.hasCompilerFlag(item.vref);});if(b_matched==false){return{v:"continue"};}}ctx.setInExpr();for(var i=0;i<args.children.length;i++){arg=args.children[i];if(i<arg_eval_start){continue;}arg_eval_start=i;if(callArgs.children.length<=i+1){not_enough_args=true;break;}var callArg=callArgs.children[i+1];if(arg.hasFlag("define")){var p=new RangerAppParamDesc();p.name=callArg.vref;p.value_type=arg.value_type;p.node=callArg;p.nameNode=callArg;p.is_optional=false;p.init_cnt=1;ctx.defineVariable(p.name,p);callArg.hasParamDesc=true;callArg.ownParamDesc=p;callArg.paramDesc=p;if(callArg.type_name.length==0){callArg.type_name=arg.type_name;callArg.value_type=arg.value_type;}callArg.eval_type=arg.value_type;callArg.eval_type_name=arg.type_name;}if(arg.hasFlag("ignore")){continue;}if(arg.hasFlag("keyword")){continue;}if(arg.hasFlag("noeval")){callArg.eval_type=callArg.value_type;callArg.eval_type_name=callArg.type_name;callArg.eval_array_type=callArg.array_type;callArg.eval_key_type=callArg.key_type;continue;}last_walked=i+1;if(arg.value_type==17){if(codeDef.is_block_node==false){var later=new WalkLater();later.arg=arg;later.callArg=callArg;walk_later.push(later);}}else{if(arg.type_name=="block"||arg.hasFlag("block")){if(arg.hasFlag("try_block")){var tmpCtx=ctx.fork();tmpCtx.is_try_block=true;callArg.evalCtx=tmpCtx;tmpCtx.newBlock();_this15.WalkNode(callArg,tmpCtx,wr);}else{var tmpCtx_1=ctx.fork();tmpCtx_1.newBlock();callArg.evalCtx=tmpCtx_1;_this15.WalkNode(callArg,tmpCtx_1,wr);}last_was_block=true;}else{ctx.setInExpr();_this15.WalkNode(callArg,ctx,wr);ctx.unsetInExpr();if(arg.type_name.length>0){_this15.convertToUnion(arg.type_name,callArg,ctx,wr);}last_was_block=false;}if(arg.hasFlag("mutates")){if(callArg.hasParamDesc){if(typeof callArg.paramDesc!="undefined"&&typeof callArg.paramDesc.propertyClass!=="undefined"&&callArg.paramDesc.propertyClass!=null){if(callArg.paramDesc.propertyClass.nameNode.hasFlag("immutable")){var propC=callArg.paramDesc.propertyClass;var currC=ctx.getCurrentClass();if(currC!=propC){not_enough_args=true;}}}}}}};ctx.unsetInExpr();if(not_enough_args){return{v:"continue"};}if(expanding_node){for(var i2=0;i2<callArgs.children.length;i2++){caCh=callArgs.children[i2];if(caCh.is_block_node){var tmpCtx_2=ctx;caCh.evalCtx=tmpCtx_2;blocksToWalkLater.push(caCh);continue;}if(i2>last_walked){if(last_was_block){var sCtx=ctx.forkWithOps(ch.children[3]);_this15.WalkNode(caCh,sCtx,wr);}else{ctx.setInExpr();_this15.WalkNode(caCh,ctx,wr);ctx.unsetInExpr();}}};}var all_matched=match.matchArguments(args,callArgs,ctx,1);if(all_matched){var expr_level=ctx.expressionLevel();var is_last=false;if(typeof callArgs.parent!=="undefined"&&callArgs.parent!=null){is_last=callArgs.parent.children.length==1+callArgs.parent.children.indexOf(callArgs);}if(fc.vref=="if"&&ctx.hasCompilerFlag("voidexpr")&&(expr_level>0||is_last)){console.log("IF expr leve == "+ctx.expressionLevel());console.log(callArgs.getCode());var thenBlock=callArgs.children[2];var lastRow=thenBlock.children[thenBlock.children.length-1];console.log("Last row == "+lastRow.getCode());var BlockOP=ctx.getLastBlockOp();var regName=ctx.createNewRegName();var regExpr=CodeNode.fromList([CodeNode.vref1("def"),CodeNode.vref2(regName,lastRow.eval_type_name)]);callArgs.eval_type=lastRow.eval_type;callArgs.eval_type_name=lastRow.eval_type_name;var fnC=ctx.findFunctionCtx();_this15.WalkNode(regExpr,fnC,wr);var realRegName=regExpr.children[1].paramDesc.compiledName;var then_regs=false;if(lastRow.register_name.length>0){var newLastRow=CodeNode.fromList([CodeNode.vref1("="),CodeNode.vref1(regName),CodeNode.vref1(lastRow.register_name)]);_this15.WalkNode(newLastRow,ctx,wr);thenBlock.children.push(newLastRow);then_regs=true;}else{var vCopy=lastRow.cleanCopy();lastRow.expression=true;lastRow.vref="";lastRow.value_type=0;lastRow.flow_done=false;lastRow.getChildrenFrom(CodeNode.fromList([CodeNode.vref1("="),CodeNode.vref1(regName),vCopy]));_this15.WalkNode(lastRow,ctx,wr);}if(callArgs.children.length==4){var elseBlock=callArgs.children[3];var lastRow_1=elseBlock.children[elseBlock.children.length-1];if(lastRow_1.register_name.length>0){var newLastRow_1=CodeNode.fromList([CodeNode.vref1("="),CodeNode.vref1(regName),CodeNode.vref1(lastRow_1.register_name)]);_this15.WalkNode(newLastRow_1,ctx,wr);elseBlock.children.push(newLastRow_1);then_regs=true;}else{var vCopy_1=lastRow_1.cleanCopy();lastRow_1.expression=true;lastRow_1.vref="";lastRow_1.value_type=0;lastRow_1.flow_done=false;lastRow_1.getChildrenFrom(CodeNode.fromList([CodeNode.vref1("="),CodeNode.vref1(regName),vCopy_1]));console.log(" lastRow value --> "+vCopy_1.getCode());_this15.WalkNode(lastRow_1,ctx,wr);}}var tmp=callArgs.clone();BlockOP.register_expressions.push(regExpr);BlockOP.register_expressions.push(tmp);callArgs.register_name=regName;callArgs.reg_compiled_name=realRegName;tmp.has_operator=true;tmp.op_index=main_index;tmp.operator_node=ch;return{v:{v:true}};}if(fc.vref!="for"&&ctx.hasCompilerFlag("new")){var opDef=langOper.getSecond();var opCnts={};var regNames={};var firstRef={};operatorsOf.forEach_6(args.children,function(item,index){var opArg=item;if(opArg.hasFlag("loopcondition")){var loopBlock=void 0;operatorsOf.forEach_6(args.children,function(item,index){if(item.hasFlag("loopblock")){var tmp_1=callArgs.children[index+1];loopBlock=tmp_1;}});if(typeof loopBlock==="undefined"){ctx.addError(args,"Invalid operator: Loop condition without block ");return;}var opName=index+1;/** unused: const item = callArgs.children[(index + 1)] **/var regName_1="";var realArg=callArgs.children[opName];if(realArg.register_name.length>0){regName_1=realArg.register_name;}else{regName_1=ctx.createNewRegName();}var argCopy=realArg.copy();var regExpr_1=CodeNode.fromList([CodeNode.vref1("def"),CodeNode.vref1(regName_1),argCopy]);ctx.lastBlockOp=callArgs;_this15.WalkNode(regExpr_1,ctx,wr);var realRegName_1=regExpr_1.children[1].paramDesc.compiledName;var regArg=regExpr_1.children[1];regArg.paramDesc.set_cnt=1;regArg.paramDesc.ref_cnt=1;var BlockOP_1=ctx.getLastBlockOp();BlockOP_1.register_expressions.push(regExpr_1);realArg.register_name=regName_1;realArg.reg_compiled_name=realRegName_1;operatorsOf.forEach_6(callArgs.children,function(item,index){if(item.is_block_node){var argCopy_1=realArg.copy();argCopy_1.register_name="";argCopy_1.forTree(function(item,i){item.register_name="";});var eval_expr=CodeNode.fromList([CodeNode.vref1("="),CodeNode.vref1(regName_1),argCopy_1]);/** unused: const lastOp = loopBlock.children[((loopBlock.children.length) - 1)] **/ctx.lastBlockOp=eval_expr;_this15.WalkNode(eval_expr,ctx,wr);item.children.push(eval_expr);}});}});operatorsOf.forEach_6(opDef.children,function(item,index){if(item.isFirstVref("e")){if(item.hasFlag("ignore")||item.hasFlag("noeval")){return;}var opName_1=item.getSecond().int_value;/** unused: const opArg_1 = args.children[(opName_1 - 1)] **/if(typeof opCnts[opName_1]!="undefined"&&opCnts.hasOwnProperty(opName_1)){var regName_2="";var realArg_1=callArgs.children[opName_1];var _just_vref=function just_vref(a){};_just_vref=function just_vref(a){if(a.vref.length>0){return true;}if(TTypes.isPrimitive(a.value_type)){return true;}if(a.children.length==1){return _just_vref(a.children[0]);}return false;};if(_just_vref(realArg_1)){return;}if(typeof regNames[opName_1]!="undefined"&&regNames.hasOwnProperty(opName_1)){if(realArg_1.register_name.length>0){regName_2=realArg_1.register_name;}else{regName_2=regNames[opName_1];}realArg_1.register_name=regName_2;}else{if(realArg_1.register_name.length>0){regName_2=realArg_1.register_name;}else{regName_2=ctx.createNewRegName();regNames[opName_1]=regName_2;var argCopy_2=realArg_1.copy();var regExpr_2=CodeNode.fromList([CodeNode.vref1("def"),CodeNode.vref1(regName_2),argCopy_2]);_this15.WalkNode(regExpr_2,ctx,wr);var regArg_1=regExpr_2.children[1];var realRegName_2=regExpr_2.children[1].paramDesc.compiledName;regArg_1.paramDesc.set_cnt=1;regArg_1.paramDesc.ref_cnt=1;var BlockOP_2=ctx.getLastBlockOp();BlockOP_2.register_expressions.push(regExpr_2);realArg_1.register_name=regName_2;realArg_1.reg_compiled_name=realRegName_2;}}}else{opCnts[opName_1]=1;firstRef[opName_1]=item;}}});}}if(all_matched){if(is_async){var activeFn=ctx.getCurrentMethod();if(typeof activeFn.nameNode!=="undefined"&&activeFn.nameNode!=null){activeFn.nameNode.setFlag("async");}while(typeof activeFn.insideFn!=="undefined"&&activeFn.insideFn!=null){activeFn=activeFn.insideFn;if(typeof activeFn.nameNode!=="undefined"&&activeFn.nameNode!=null){activeFn.nameNode.setFlag("async");}};}if(throws_exception){if(false==ctx.isTryBlock()){var activeFn_1=ctx.getCurrentMethod();if(typeof activeFn_1.nameNode!=="undefined"&&activeFn_1.nameNode!=null&&activeFn_1.nameNode.hasFlag("throws")){}else{ctx.addError(callArgs,"The operator "+fc.vref+" potentially throws an exception, try { } block is required");}}}for(var i_1=0;i_1<blocksToWalkLater.length;i_1++){b=blocksToWalkLater[i_1];var localFork=b.evalCtx.fork();_this15.WalkNode(b,localFork,wr);};for(var i_2=0;i_2<walk_later.length;i_2++){later_1=walk_later[i_2];var ca=later_1.callArg;var aa=later_1.arg;/** unused: const newNode = new CodeNode(ca.code, ca.sp, ca.ep) **/if(ca.is_block_node&&ca.isFirstVref("fn")==false&&ca.isFirstVref("fun")==false){var fnDef=aa.expression_value;var copyOf=fnDef.rebuildWithType(match,false);var ffc=copyOf.children[0];ffc.vref="fun";var itemCopy=ca.rebuildWithType(match,false);copyOf.children.push(itemCopy);var cnt=ca.children.length;while(cnt>0){ca.children.pop();cnt=cnt-1;};for(var i_3=0;i_3<copyOf.children.length;i_3++){ch_1=copyOf.children[i_3];ca.children.push(ch_1);};}var sCtx_1=ctx.fork();sCtx_1.newBlock();_this15.WalkNode(ca,sCtx_1,wr);};}var staticMethod=void 0;if(codeDef.is_block_node&&all_matched){var pure_transform=ctx.hasCompilerFlag("pure");if(is_pure&&pure_transform){var argDefs=CodeNode.blockFromList(operatorsOf.map_29(args.children,function(item,index){var callArg_1=callArgs.children[index+1];var arg_1=item;var vName=item.copy();/** unused: const caCopy = callArg_1.copy() **/var prms=_this15.transformParams2([callArg_1],[arg_1],ctx);var firstp=prms[0];var ad=CodeNode.op3("def",[vName,firstp]);return ad;}));var bodyStart=CodeNode.blockFromList([argDefs,codeDef]);var newCtx=ctx.fork();var bodyCopy=bodyStart.rebuildWithType(match,true);callArgs.flow_done=false;callArgs.getChildrenFrom(bodyCopy);_this15.WalkNode(callArgs,newCtx,wr);return{v:{v:true}};}var nSig="";if(args.children.length>0){var arg0=args.getFirst();nSig=_this15.getNameSignature(arg0);}else{nSig=_this15.getVoidNameSignature();}var new_cl=ctx.createOpStaticClass(nSig);_this15.WalkNode(new_cl.classNode,ctx,wr);var bodyCopy_1=codeDef.rebuildWithType(match,true);var argsCopy=args.rebuildWithType(match,true);var nameCopy=nameNode.rebuildWithType(match,true);var sigN=ctx.transformOpNameWord(fc.vref);var argsSig=sigN+_this15.getArgsSignature(argsCopy);if(false==new_cl.hasStaticMethod(argsSig)){var sMethod=ctx.createStaticMethod(argsSig,new_cl,nameCopy,argsCopy,bodyCopy_1,_this15,wr);staticMethod=sMethod;var currM=ctx.getCurrentMethod();currM.addCallTo(sMethod);static_nameNode=nameCopy;var fCtx=sMethod.fnCtx;fCtx.currentMethod=sMethod;fCtx.is_function=true;var m=sMethod;fCtx.in_static_method=true;if(nameCopy.hasFlag("weak")){m.changeStrength(0,1,nameNode);}else{m.changeStrength(1,1,nameNode);}fCtx.setInMethod();for(var i_4=0;i_4<m.params.length;i_4++){v=m.params[i_4];fCtx.defineVariable(v.name,v);v.nameNode.eval_type=v.nameNode.typeNameAsType(fCtx);v.nameNode.eval_type_name=v.nameNode.type_name;};_this15.WalkNodeChildren(bodyCopy_1,fCtx,wr);fCtx.unsetInMethod();fCtx.in_static_method=false;fCtx.function_level_context=true;for(var i_5=0;i_5<fCtx.localVarNames.length;i_5++){n=fCtx.localVarNames[i_5];var p_1=fCtx.localVariables[n];if(p_1.set_cnt>0){if(p_1.is_immutable){ctx.addError(callArgs,"Immutable variable was assigned");}var defNode=p_1.node;defNode.setFlag("mutable");var nNode=p_1.nameNode;nNode.setFlag("mutable");}};}else{var sMethod_1=new_cl.findStaticMethod(argsSig);static_nameNode=sMethod_1.nameNode;var currM_1=ctx.getCurrentMethod();currM_1.addCallTo(sMethod_1);staticMethod=sMethod_1;}is_static_fn=true;static_fn_name=argsSig;static_class_name=new_cl.name;}if(all_matched){if(is_static_fn){var firstArg=callArgs.getFirst();firstArg.vref=static_class_name+"."+static_fn_name;firstArg.flow_done=false;firstArg.value_type=11;firstArg.ns.length=0;firstArg.ns.push(static_class_name);firstArg.ns.push(static_fn_name);var newArgs=new CodeNode(callArgs.code,callArgs.sp,callArgs.ep);for(var i_6=0;i_6<callArgs.children.length;i_6++){ca_1=callArgs.children[i_6];if(ca_1.is_part_of_chain){continue;}if(i_6>0){var arg_2=args.children[i_6-1];if(arg_2.hasFlag("noeval")){continue;}newArgs.children.push(ca_1);}};var arg_len=callArgs.children.length;while(arg_len>1){callArgs.children.pop();arg_len=arg_len-1;};callArgs.children.push(newArgs);callArgs.flow_done=false;_this15.WalkNode(callArgs,ctx,wr);/** unused: const currMM = ctx.getCurrentMethod() **/for(var i_7=0;i_7<newArgs.children.length;i_7++){ca_2=newArgs.children[i_7];if(ca_2.eval_type==17){if(typeof ca_2.lambdaFnDesc!=="undefined"&&ca_2.lambdaFnDesc!=null){if(typeof staticMethod!=="undefined"&&staticMethod!=null){staticMethod.addCallTo(ca_2.lambdaFnDesc);if(ca_2.lambdaFnDesc.nameNode.hasFlag("async")){staticMethod.nameNode.setFlag("async");}}}}ca_2.forTree(function(item,i){if(typeof item.fnDesc!=="undefined"&&item.fnDesc!=null){if(typeof staticMethod!=="undefined"&&staticMethod!=null){staticMethod.addCallTo(item.fnDesc);}}});};match.setRvBasedOn(static_nameNode,callArgs);ctx.removeOpNs(added_ns);return{v:{v:true}};}if(is_plugin){try{var fileName=process.cwd()+"/"+plugin_name;console.log("trying to load plugin: "+fileName);var plugin=require(fileName);new plugin.Plugin()[plugin_fn](callArgs,ctx,wr);callArgs.flow_done=false;_this15.WalkNode(callArgs,ctx,wr);match.setRvBasedOn(nameNode,callArgs);ctx.removeOpNs(added_ns);console.log("plugin ready...");}catch(e){ctx.addError(callArgs,"Plugin operator failed "+e.toString());}return{v:{v:true}};}if(is_macro){var macroNode=_this15.buildMacro(langOper,callArgs,ctx);var arg_len_1=callArgs.children.length;while(arg_len_1>0){callArgs.children.pop();arg_len_1=arg_len_1-1;};callArgs.children.push(macroNode);macroNode.parent=callArgs;_this15.WalkNode(macroNode,ctx,wr);match.setRvBasedOn(nameNode,callArgs);ctx.removeOpNs(added_ns);return{v:{v:true}};}if(nameNode.hasFlag("moves")){var moves_opt=nameNode.getFlag("moves");var moves=moves_opt;var ann=moves.vref_annotation;var from=ann.getFirst();var toItem=ann.getSecond();var cA=callArgs.children[from.int_value];var cA2=callArgs.children[toItem.int_value];if(cA.hasParamDesc){var pp=cA.paramDesc;var pp2=cA2.paramDesc;pp.moveRefTo(callArgs,pp2,ctx);}}if(nameNode.hasFlag("returns")){var activeFn_2=ctx.getCurrentMethod();if(activeFn_2.nameNode.type_name!="void"||activeFn_2.nameNode.value_type==17){if(callArgs.children.length<2){ctx.addError(callArgs," missing return value !!!");}else{var returnedValue=callArgs.children[1];var validated_returnvalue=false;if(activeFn_2.nameNode.value_type==17){validated_returnvalue=true;var fnExpr=activeFn_2.nameNode.expression_value;if(typeof fnExpr==="undefined"){ctx.addError(activeFn_2.nameNode,"returned anonymous function should have a method signature");}else{if(returnedValue.value_type!=17&&returnedValue.eval_type!=17){ctx.addError(returnedValue,"Function should return anonymous function!");}else{if(returnedValue.hasParamDesc&&typeof returnedValue.paramDesc.nameNode!=="undefined"&&returnedValue.paramDesc.nameNode!=null){var rExpr=returnedValue.paramDesc.nameNode.expression_value;_this15.matchLambdaArgs(fnExpr,rExpr,ctx,wr);}else{var rExpr_1=returnedValue.expression_value;_this15.matchLambdaArgs(fnExpr,rExpr_1,ctx,wr);}}}}if(validated_returnvalue==false){if(match.doesMatch(activeFn_2.nameNode,returnedValue,ctx)==false){if(activeFn_2.nameNode.ifNoTypeSetToEvalTypeOf(returnedValue)){}else{ctx.addError(returnedValue,"invalid return value type!!! "+returnedValue.getCode());ctx.addError(returnedValue,"^ code: "+returnedValue.getCode());ctx.addError(activeFn_2.nameNode,"^ regarding to");if(returnedValue.eval_type==28){ctx.addError(activeFn_2.nameNode,"^ which was a method");}ctx.addError(activeFn_2.nameNode,"^ value type = "+returnedValue.eval_type);}}}var argNode=activeFn_2.nameNode;if(returnedValue.hasFlag("optional")){if(false==argNode.hasFlag("optional")){ctx.addError(callArgs,"function return value optionality does not match, expected non-optional return value, optional given at "+argNode.getCode());}}if(argNode.hasFlag("optional")){if(false==returnedValue.hasFlag("optional")){ctx.addError(callArgs,"function return value optionality does not match, expected optional return value "+argNode.getCode());}}var pp_1=returnedValue.paramDesc;if(typeof pp_1!=="undefined"&&pp_1!=null){pp_1.moveRefTo(callArgs,activeFn_2,ctx);}}}if(typeof callArgs.parent==="undefined"){ctx.addError(callArgs,"did not have parent");console.log("no parent => "+callArgs.getCode());}callArgs.parent.didReturnAtIndex=callArgs.parent.children.indexOf(callArgs);}if(nameNode.hasFlag("returns")==false){match.setRvBasedOn(nameNode,callArgs);callArgs.evalTypeClass=TFactory.new_def_signature(nameNode,ctx,wr);}if(has_eval_ctx){var tmpCtx_3=ctx;callArgs.evalCtx=tmpCtx_3;}var nodeP=callArgs.parent;if(typeof nodeP!=="undefined"&&nodeP!=null){}else{}/** unused: const sig = nameNode.buildTypeSignatureUsingMatch(match) **/some_matched=true;callArgs.has_operator=true;callArgs.op_index=main_index;callArgs.operator_node=ch;for(var arg_index=0;arg_index<args.children.length;arg_index++){arg_3=args.children[arg_index];if(arg_3.has_vref_annotation){var anns=arg_3.vref_annotation;for(var i_8=0;i_8<anns.children.length;i_8++){ann_1=anns.children[i_8];if(ann_1.vref=="mutates"){var theArg=callArgs.children[arg_index+1];if(theArg.hasParamDesc){theArg.paramDesc.set_cnt=theArg.paramDesc.set_cnt+1;}}};}};return{v:"break"};}}();if((typeof _ret7==="undefined"?"undefined":_typeof(_ret7))==="object")return _ret7.v;}};_loop2:for(var main_index=0;main_index<op_list.length;main_index++){var ch;var arg;var caCh;var b;var later_1;var ch_1;var v;var n;var ca_1;var ca_2;var arg_3;var ann_1;var _ret6=_loop(main_index);switch(_ret6){case"continue":continue;case"break":break _loop2;default:if((typeof _ret6==="undefined"?"undefined":_typeof(_ret6))==="object")return _ret6.v;}};if(require_all_match==true&&some_matched==false){ctx.addError(callArgs,"Could not match argument types for "+callFnName.vref);}if(expects_error){var cnt_now=ctx.getErrorCount();if(cnt_now==err_cnt){ctx.addParserError(callArgs,"LANGUAGE_PARSER_ERROR: expected generated error, err counts : "+err_cnt+" : "+cnt_now);}}else{var cnt_now_1=ctx.getErrorCount();if(cnt_now_1>err_cnt){ctx.addParserError(callArgs,"LANGUAGE_PARSER_ERROR: did not expect generated error, err counts : "+err_cnt+" : "+cnt_now_1);}}ctx.removeOpNs(added_ns);return some_matched;}}]);return RangerFlowParser;}();var TFactory=function TFactory(){_classCallCheck(this,TFactory);};TFactory.new_class_signature=function(node,ctx,wr){var sig=node.vref;var tc=ctx.getTypeClass(sig);if(typeof tc==="undefined"){var newTC=ctx.addTypeClass(sig);newTC.value_type=node.value_type;newTC.is_class=true;newTC.name=sig;return newTC;}return tc;};TFactory.new_lambda_signature=function(node,ctx,wr){var sig=TFactory.lambdaSignature(node);var tc=ctx.getTypeClass(sig);if(typeof tc==="undefined"){var newTC=ctx.addTypeClass(sig);newTC.value_type=node.value_type;newTC.is_lambda=true;newTC.name=sig;return newTC;}return tc;};TFactory.new_def_signature_from_simple_string=function(sig,ctx,wr){var tc=ctx.getTypeClass(sig);if(typeof tc==="undefined"){var newTC=ctx.addTypeClass(sig);newTC.is_primitive=TTypes.isPrimitive(TTypes.nameToValue(sig));newTC.value_type=TTypes.nameToValue(sig);newTC.name=sig;if(sig.length>0==false){newTC.is_empty=true;}return newTC;}return tc;};TFactory.sig=function(sig,ctx,wr){return TFactory.new_def_signature_from_simple_string(sig,ctx,wr);};TFactory.new_def_signature=function(node,ctx,wr){var sig=TFactory.baseSignature(node);var tc=ctx.getTypeClass(sig);if(typeof tc==="undefined"){var newTC=ctx.addTypeClass(sig);newTC.value_type=node.value_type;newTC.is_primitive=TTypes.isPrimitive(node.value_type);if(node.value_type==17){newTC.is_lambda=true;}if(node.value_type==6){newTC.arrayType=TFactory.new_def_signature_from_simple_string(node.array_type,ctx,wr);}if(node.value_type==7){newTC.keyType=TFactory.new_def_signature_from_simple_string(node.key_type,ctx,wr);newTC.arrayType=TFactory.new_def_signature_from_simple_string(node.array_type,ctx,wr);}newTC.name=sig;if(sig.length>0==false){newTC.is_empty=true;}return newTC;}return tc;};TFactory.new_scalar_signature=function(node,ctx,wr){var sig=TFactory.baseSignature(node);var tc=ctx.getTypeClass(sig);if(typeof tc==="undefined"){var newTC=ctx.addTypeClass(sig);newTC.is_primitive=true;newTC.value_type=node.value_type;newTC.name=sig;return newTC;}return tc;};TFactory.type_annotation=function(node){if(node.has_type_annotation){return"@("+TFactory.baseSignature(node.type_annotation)+")";}return"";};TFactory.lambdaSignature=function(node){var fnNode=node.getFirst();var argNode=node.getSecond();var s="";s=s+"(_:"+TFactory.baseSignature(fnNode);s=s+" ("+operatorsOf.map_31(argNode.children,function(item,index){return"_:"+TFactory.baseSignature(item);}).join(" ")+"))";return s;};TFactory.baseSignature=function(node){if(TTypes.isPrimitive(node.value_type)){return TTypes.valueAsString(node.value_type);}var s="";if(node.value_type==6){s=s+"[";s=s+node.array_type;s=s+"]";return s;}if(node.value_type==7){s=s+"[";s=s+node.key_type;s=s+":";s=s+node.array_type;s=s+"]";return s;}if(node.value_type==17){var fnNode=node.expression_value.getFirst();var argNode=node.expression_value.getSecond();s=s+"(_:"+TFactory.baseSignature(fnNode);s=s+" ("+operatorsOf.map_31(argNode.children,function(item,index){return"_:"+TFactory.baseSignature(item);}).join(" ")+"))";return s;}s=node.type_name+TFactory.type_annotation(node);return s;};var CallChain=function CallChain(){_classCallCheck(this,CallChain);this.methodName="";};var NodeEvalState=function NodeEvalState(){_classCallCheck(this,NodeEvalState);this.is_running=false;/** note: unused */this.child_index=-1;/** note: unused */this.cmd_index=-1;/** note: unused */this.is_ready=false;/** note: unused */this.is_waiting=false;/** note: unused */this.exit_after=false;/** note: unused */this.expand_args=false;/** note: unused */this.ask_expand=false;/** note: unused */this.eval_rest=false;/** note: unused */this.exec_cnt=0;/** note: unused */this.b_debugger=false;/** note: unused */this.b_top_node=false;/** note: unused */this.ask_eval=false;/** note: unused */this.param_eval_on=false;/** note: unused */this.eval_index=-1;/** note: unused */this.eval_end_index=-1;/** note: unused */this.ask_eval_start=0;/** note: unused */this.ask_eval_end=0;/** note: unused */};var RangerGenericClassWriter=function(){function RangerGenericClassWriter(){_classCallCheck(this,RangerGenericClassWriter);this.compFlags={};}_createClass(RangerGenericClassWriter,[{key:"lineEnding",value:function lineEnding(){return"";}},{key:"addSystemImport",value:function addSystemImport(cl,ctx,wr){if(cl.is_system){var langName=operatorsOf_12.getTargetLang_13(ctx);if(typeof cl.systemNodes[langName]!="undefined"&&cl.systemNodes.hasOwnProperty(langName)){var sNode=cl.systemNodes[langName];if(sNode.children.length>2){var impDefs=sNode.children[2];impDefs.forTree(function(item,i){if(item.isFirstVref("imp")){var name=item.getSecond();wr.addImport(name.string_value);}});}}}}},{key:"EncodeString",value:function EncodeString(node,ctx,wr){/** unused: const encoded_str = "" **/var str_length=node.string_value.length;var encoded_str_2="";var ii=0;while(ii<str_length){var cc=node.string_value.charCodeAt(ii);switch(cc){case 8:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(98);break;case 9:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(116);break;case 10:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(110);break;case 12:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(102);break;case 13:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(114);break;case 34:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(34);break;case 92:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(92);break;default:encoded_str_2=encoded_str_2+String.fromCharCode(cc);break;};ii=ii+1;};return encoded_str_2;}},{key:"CustomOperator",value:function CustomOperator(node,ctx,wr){}},{key:"WriteSetterVRef",value:function WriteSetterVRef(node,ctx,wr){}},{key:"writeArrayTypeDef",value:function writeArrayTypeDef(node,ctx,wr){}},{key:"WriteEnum",value:function WriteEnum(node,ctx,wr){if(node.eval_type==13){var rootObjName=node.ns[0];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){var enumName=node.ns[1];wr.out(""+e.values[enumName],false);}else{if(node.hasParamDesc){var pp=node.paramDesc;var nn=pp.nameNode;this.WriteVRef(nn,ctx,wr);}}}}},{key:"WriteScalarValue",value:function WriteScalarValue(node,ctx,wr){switch(node.value_type){case 2:var dd_str=""+node.double_value;var ii_str=""+Math.floor(node.double_value);if(dd_str==ii_str){wr.out(""+node.double_value+".0",false);}else{wr.out(""+node.double_value,false);}break;case 4:var s=this.EncodeString(node,ctx,wr);wr.out("\""+s+"\"",false);break;case 3:wr.out(""+node.int_value,false);break;case 5:if(node.boolean_value){wr.out("true",false);}else{wr.out("false",false);}break;};}},{key:"getTypeString",value:function getTypeString(type_string){return type_string;}},{key:"import_lib",value:function import_lib(lib_name,ctx,wr){wr.addImport(lib_name);}},{key:"getObjectTypeString",value:function getObjectTypeString(type_string,ctx){switch(type_string){case"int":return"Integer";case"string":return"String";case"chararray":return"byte[]";case"char":return"byte";case"boolean":return"Boolean";case"double":return"Double";};return type_string;}},{key:"release_local_vars",value:function release_local_vars(node,ctx,wr){for(var i=0;i<ctx.localVarNames.length;i++){var n=ctx.localVarNames[i];var p=ctx.localVariables[n];if(p.ref_cnt==0){continue;}if(p.isAllocatedType()){if(1==p.getStrength()){if(p.nameNode.eval_type==7){}if(p.nameNode.eval_type==6){}if(p.nameNode.eval_type!=6&&p.nameNode.eval_type!=7){}}if(0==p.getStrength()){if(p.nameNode.eval_type==7){}if(p.nameNode.eval_type==6){}if(p.nameNode.eval_type!=6&&p.nameNode.eval_type!=7){}}}};if(ctx.is_function){return;}if(typeof ctx.parent!=="undefined"&&ctx.parent!=null){this.release_local_vars(node,ctx.parent,wr);}}},{key:"WalkNode",value:function WalkNode(node,ctx,wr){operatorsOf.forEach_6(node.children,function(item,index){if(typeof item.evalCtx!=="undefined"&&item.evalCtx!=null){if(operatorsOf_12.getTargetLang_13(item.evalCtx)!=operatorsOf_12.getTargetLang_13(ctx)){item.evalCtx.targetLangName=operatorsOf_12.getTargetLang_13(ctx);}}});if(typeof node.evalCtx!=="undefined"&&node.evalCtx!=null){this.compiler.WalkNode(node,node.evalCtx,wr);}else{this.compiler.WalkNode(node,ctx,wr);}}},{key:"writeTypeDef",value:function writeTypeDef(node,ctx,wr){wr.out(node.type_name,false);}},{key:"writeRawTypeDef",value:function writeRawTypeDef(node,ctx,wr){this.writeTypeDef(node,ctx,wr);}},{key:"adjustType",value:function adjustType(tn){return tn;}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){if(node.eval_type==13){if(node.ns.length>1){var rootObjName=node.ns[0];var enumName=node.ns[1];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){wr.out(""+e.values[enumName],false);return;}}}if(node.nsp.length>0){for(var i=0;i<node.nsp.length;i++){var p=node.nsp[i];if(i>0){wr.out(".",false);}if(p.compiledName.length>0){wr.out(this.adjustType(p.compiledName),false);}else{if(p.name.length>0){wr.out(this.adjustType(p.name),false);}else{wr.out(this.adjustType(node.ns[i]),false);}}};return;}for(var i_1=0;i_1<node.ns.length;i_1++){var part=node.ns[i_1];if(i_1>0){wr.out(".",false);}wr.out(this.adjustType(part),false);};}},{key:"writeVarDef",value:function writeVarDef(node,ctx,wr){if(node.hasParamDesc){var p=node.paramDesc;if(p.set_cnt>0){wr.out("var "+p.name,false);}else{wr.out("const "+p.name,false);}if(node.children.length>2){wr.out(" = ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();wr.out(";",true);}else{wr.out(";",true);}}}},{key:"CreateCallExpression",value:function CreateCallExpression(node,ctx,wr){if(node.has_call){var obj=node.getSecond();var method=node.getThird();var _args=node.children[3];wr.out("(",false);ctx.setInExpr();this.WalkNode(obj,ctx,wr);ctx.unsetInExpr();wr.out(").",false);wr.out(method.vref,false);wr.out("(",false);ctx.setInExpr();for(var i=0;i<_args.children.length;i++){var arg=_args.children[i];if(i>0){wr.out(", ",false);}this.WalkNode(arg,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);if(ctx.expressionLevel()==0){wr.out(";",true);}}}},{key:"CreateMethodCall",value:function CreateMethodCall(node,ctx,wr){var obj=node.getFirst();var args=node.getSecond();ctx.setInExpr();this.WalkNode(obj,ctx,wr);ctx.unsetInExpr();wr.out("(",false);ctx.setInExpr();for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(", ",false);}this.WalkNode(arg,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);}},{key:"CreatePropertyGet",value:function CreatePropertyGet(node,ctx,wr){var obj=node.getSecond();var prop=node.getThird();wr.out("(",false);ctx.setInExpr();this.WalkNode(obj,ctx,wr);ctx.unsetInExpr();wr.out(").",false);this.WalkNode(prop,ctx,wr);}},{key:"isPackaged",value:function isPackaged(ctx){var package_name=ctx.getCompilerSetting("package");if(package_name.length>0){return true;}return false;}},{key:"CreateUnions",value:function CreateUnions(parser,ctx,orig_wr){}},{key:"CreateServices",value:function CreateServices(parser,ctx,orig_wr){}},{key:"CreatePages",value:function CreatePages(parser,ctx,orig_wr){}},{key:"CreatePage",value:function CreatePage(parser,node,ctx,orig_wr){ctx.addError(node,"CreatePage not implemented for the build target");}},{key:"CreateLambdaCall",value:function CreateLambdaCall(node,ctx,wr){var fName=node.children[0];var args=node.children[1];ctx.setInExpr();this.WalkNode(fName,ctx,wr);wr.out("(",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(", ",false);}this.WalkNode(arg,ctx,wr);};wr.out(")",false);ctx.unsetInExpr();if(ctx.expressionLevel()==0){wr.out(";",true);}}},{key:"CreateLambda",value:function CreateLambda(node,ctx,wr){var lambdaCtx=node.lambda_ctx;var args=node.children[1];var body=node.children[2];wr.out("(",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(", ",false);}if(arg.flow_done==false){this.compiler.parser.WalkNode(arg,lambdaCtx,wr);}this.WalkNode(arg,lambdaCtx,wr);};wr.out(")",false);wr.out(" => { ",true);wr.indent(1);lambdaCtx.restartExpressionLevel();for(var i_1=0;i_1<body.children.length;i_1++){var item=body.children[i_1];this.WalkNode(item,lambdaCtx,wr);};wr.newline();wr.indent(-1);wr.out("}",true);}},{key:"writeFnCall",value:function writeFnCall(node,ctx,wr){if(node.hasFnCall){var _fc=node.getFirst();this.WriteVRef(_fc,ctx,wr);wr.out("(",false);var givenArgs=node.getSecond();ctx.setInExpr();for(var i=0;i<node.fnDesc.params.length;i++){var arg=node.fnDesc.params[i];if(i>0){wr.out(", ",false);}if(givenArgs.children.length<=i){var defVal=arg.nameNode.getFlag("default");if(typeof defVal!=="undefined"&&defVal!=null){var fc_1=defVal.vref_annotation.getFirst();this.WalkNode(fc_1,ctx,wr);}else{ctx.addError(node,"Default argument was missing");}continue;}var n=givenArgs.children[i];this.WalkNode(n,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);if(node.methodChain.length>0){for(var i_1=0;i_1<node.methodChain.length;i_1++){var cc=node.methodChain[i_1];wr.out("."+cc.methodName,false);wr.out("(",false);ctx.setInExpr();for(var i_2=0;i_2<cc.args.children.length;i_2++){var arg_1=cc.args.children[i_2];if(i_2>0){wr.out(", ",false);}this.WalkNode(arg_1,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);};}if(ctx.expressionLevel()==0){wr.out(";",true);}}}},{key:"writeNewCall",value:function writeNewCall(node,ctx,wr){if(node.hasNewOper){var cl=node.clDesc;/** unused: const fc = node.getSecond() **/wr.out("new "+node.clDesc.name,false);wr.out("(",false);var constr=cl.constructor_fn;var givenArgs=node.getThird();if(typeof constr!=="undefined"&&constr!=null){for(var i=0;i<constr.params.length;i++){var arg=constr.params[i];var n=givenArgs.children[i];if(i>0){wr.out(", ",false);}if(true||typeof arg.nameNode!=="undefined"&&arg.nameNode!=null){this.WalkNode(n,ctx,wr);}};}wr.out(")",false);}}},{key:"writeInterface",value:function writeInterface(cl,ctx,wr){}},{key:"disabledVarDef",value:function disabledVarDef(node,ctx,wr){}},{key:"writeArrayLiteral",value:function writeArrayLiteral(node,ctx,wr){var _this16=this;wr.out("[",false);operatorsOf.forEach_6(node.children,function(item,index){if(index>0){wr.out(", ",false);}_this16.WalkNode(item,ctx,wr);});wr.out("]",false);}},{key:"writeClass",value:function writeClass(node,ctx,wr){var cl=node.clDesc;if(typeof cl==="undefined"){return;}wr.out("class "+cl.name+" { ",true);wr.indent(1);for(var i=0;i<cl.variables.length;i++){var pvar=cl.variables[i];wr.out("/* var "+pvar.name+" => "+pvar.nameNode.parent.getCode()+" */ ",true);};for(var i_1=0;i_1<cl.static_methods.length;i_1++){var pvar_1=cl.static_methods[i_1];wr.out("/* static "+pvar_1.name+" */ ",true);};for(var i_2=0;i_2<cl.defined_variants.length;i_2++){var fnVar=cl.defined_variants[i_2];var mVs=cl.method_variants[fnVar];for(var i_3=0;i_3<mVs.variants.length;i_3++){var variant=mVs.variants[i_3];wr.out("function "+variant.name+"() {",true);wr.indent(1);wr.newline();var subCtx=ctx.fork();this.WalkNode(variant.fnBody,subCtx,wr);wr.newline();wr.indent(-1);wr.out("}",true);};};wr.indent(-1);wr.out("}",true);}}]);return RangerGenericClassWriter;}();var AndroidPageWriter=function(){function AndroidPageWriter(){_classCallCheck(this,AndroidPageWriter);}_createClass(AndroidPageWriter,[{key:"BuildAST",value:function BuildAST(code_string){var lang_code=new SourceCode(code_string);lang_code.filename="<AST>";var lang_parser=new RangerLispParser(lang_code);lang_parser.parse(false);var node=lang_parser.rootNode;return node;}},{key:"CreatePage",value:function CreatePage(parser,node,ctx,orig_wr){var sc=node.getSecond();var pageName=sc.vref;var wr=orig_wr.getFileWriter(".",pageName+".java");wr.out("// created by AndroidPageWriter ",true);var package_name=ctx.getCompilerSetting("package");if(package_name.length>0){wr.out("package "+package_name+";",true);}var importFork=wr.fork();this.classWriter.import_lib("android.content.Context",ctx,wr);this.classWriter.import_lib("android.support.v7.app.AppCompatActivity",ctx,wr);this.classWriter.import_lib("android.widget.LinearLayout",ctx,wr);this.classWriter.import_lib("android.view.LayoutInflater",ctx,wr);this.classWriter.import_lib("android.os.Bundle",ctx,wr);this.classWriter.import_lib("android.support.v4.app.Fragment",ctx,wr);this.classWriter.import_lib("android.view.ViewGroup",ctx,wr);this.classWriter.import_lib("android.view.View",ctx,wr);var package_name_2=ctx.getCompilerSetting("package");if(this.classWriter.isPackaged(ctx)){this.classWriter.import_lib(package_name_2+".interfaces.*",ctx,wr);this.classWriter.import_lib(package_name_2+".operators.*",ctx,wr);this.classWriter.import_lib(package_name_2+".immutables.*",ctx,wr);}wr.out("public class "+pageName+" extends Fragment {",true);wr.indent(1);wr.out("public JinxProcess mainProcess; ",true);wr.out("@Override ",true);wr.out("public void onDestroyView() { ",true);wr.indent(1);wr.out("super.onDestroyView(); ",true);wr.out("if( mainProcess != null) mainProcess.abort();",true);wr.indent(-1);wr.out("}",true);wr.out("@Override",true);wr.out("public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {",true);wr.indent(1);wr.out("final View view = inflater.inflate(R.layout.activity_"+pageName+", container, false);",true);var fnBody=node.children[2];var subCtx=ctx.fork();subCtx.is_function=true;subCtx.in_static_method=true;subCtx.setInMethod();var rootCtx=subCtx.getRoot();var errCnt=rootCtx.compilerErrors.length;var copyOf=fnBody.copy();parser.WalkNodeChildren(fnBody,subCtx,wr);subCtx.unsetInMethod();subCtx.in_static_method=false;subCtx.function_level_context=true;var errCnt2=rootCtx.compilerErrors.length;var cnt=errCnt2-errCnt;while(cnt>0){rootCtx.compilerErrors.pop();cnt=cnt-1;};var preBody=fnBody.newExpressionNode();var mainBody=fnBody.newExpressionNode();var newBody=fnBody.newExpressionNode();var stdCode=fnBody.newExpressionNode();var stdBody=fnBody.newExpressionNode();var in_stdCode=false;var pushed_std=false;var first_lines=true;var pRef=fnBody.newVRefNode("process");var pName=fnBody.newStringNode(pageName);newBody.children.push(pRef);newBody.children.push(pName);if(pageName!="notme"){operatorsOf.forEach_6(fnBody.children,function(item,index){if(item.isFirstVref("ui")||item.eval_type_name=="JinxProcess"){if(in_stdCode){newBody.children.push(stdCode);in_stdCode=false;}first_lines=false;}if(item.isFirstVref("ui")){first_lines=false;var taskNode=copyOf.children[index];var codeToRun=taskNode.getSecond();var uiNode=CodeNode.op2("task.call",CodeNode.blockFromList([CodeNode.op3("def",[CodeNode.vref1("uictx"),CodeNode.op2("unwrap",CodeNode.op3("get",[CodeNode.vref1("ctx.anyValues"),CodeNode.newStr("uicontext")]))]),CodeNode.op2("print",CodeNode.newStr("after this should be ui_thread")),CodeNode.op3("case",[CodeNode.vref1("uictx"),CodeNode.vref2("c","UIContextHandle"),CodeNode.blockFromList([CodeNode.op3("ui_thread",[CodeNode.vref1("c"),codeToRun])])])]));newBody.children.push(uiNode);return;}if(item.eval_type_name=="JinxProcess"){var taskNode_1=copyOf.children[index];newBody.children.push(taskNode_1);}else{if(first_lines){var tt=copyOf.children[index];preBody.children.push(tt);}else{if(in_stdCode==false){stdCode=fnBody.newExpressionNode();stdCode.children.push(fnBody.newVRefNode("task.call"));var callBody=fnBody.newExpressionNode();callBody.is_block_node=true;var tryC=fnBody.newExpressionNode();var catchC=fnBody.newExpressionNode();catchC.is_block_node=true;tryC.children.push(fnBody.newVRefNode("try"));stdBody=fnBody.newExpressionNode();stdBody.is_block_node=true;tryC.children.push(stdBody);tryC.children.push(catchC);callBody.children.push(tryC);stdCode.children.push(callBody);in_stdCode=true;pushed_std=false;}var taskNode_2=copyOf.children[index];stdBody.children.push(taskNode_2);}}});}if(in_stdCode){newBody.children.push(stdCode);}var ast=this.BuildAST("\r\n def ctx (new JinxProcessCtx)\r\n ctx.anyValues = (set ctx.anyValues \"view\" view)\r\n ctx.anyValues = (set ctx.anyValues \"uicontext\" (getUIContext))\r\n ctx.anyValues = (set ctx.anyValues \"process\" mainProcess)\r\n mainProcess.start(ctx)\r\n ");operatorsOf.forEach_6(ast.children,function(item,index){var n=item;mainBody.children.push(n);});var mainPN=fnBody.newVRefNode("mainProcess");mainPN.type_name="JinxProcess";var p=new RangerAppParamDesc();p.name="mainProcess";p.compiledName="mainProcess";p.value_type=11;p.node=mainPN;p.nameNode=mainPN;p.is_optional=false;p.init_cnt=1;subCtx.defineVariable(p.name,p);var mainPN_2=fnBody.newVRefNode("view");mainPN_2.type_name="View";var p_2=new RangerAppParamDesc();p_2.name="view";p_2.compiledName="view";p_2.value_type=11;p_2.node=mainPN_2;p_2.nameNode=mainPN_2;p_2.is_optional=false;p_2.init_cnt=1;subCtx.defineVariable(p_2.name,p_2);var mainPN_3=fnBody.newVRefNode("ctx");mainPN_3.type_name="JinxProcessCtx";var p_3=new RangerAppParamDesc();p_3.name="ctx";p_3.compiledName="ctx";p_3.value_type=11;p_3.node=mainPN_3;p_3.nameNode=mainPN_3;p_3.is_optional=false;p_3.init_cnt=1;subCtx.defineVariable(p_3.name,p_3);subCtx.is_function=true;subCtx.in_static_method=true;subCtx.setInMethod();parser.WalkNode(preBody,subCtx,wr);parser.WalkNode(newBody,subCtx,wr);parser.WalkNode(mainBody,subCtx,wr);subCtx.unsetInMethod();subCtx.in_static_method=false;subCtx.function_level_context=true;this.classWriter.WalkNode(preBody,subCtx,wr);wr.out("mainProcess = (",false);subCtx.setInExpr();this.classWriter.WalkNode(newBody,subCtx,wr);subCtx.unsetInExpr();wr.out(");",true);this.classWriter.WalkNode(mainBody,subCtx,wr);wr.out("return view;",true);wr.indent(-1);wr.out("}",true);wr.indent(-1);wr.out("}",true);var import_list=wr.getImports();for(var i=0;i<import_list.length;i++){var codeStr=import_list[i];importFork.out("import "+codeStr+";",true);};}}]);return AndroidPageWriter;}();var RangerJava7ClassWriter=function(_RangerGenericClassWr){_inherits(RangerJava7ClassWriter,_RangerGenericClassWr);function RangerJava7ClassWriter(){_classCallCheck(this,RangerJava7ClassWriter);var _this17=_possibleConstructorReturn(this,(RangerJava7ClassWriter.__proto__||Object.getPrototypeOf(RangerJava7ClassWriter)).call(this));_this17.signatures={};_this17.signature_cnt=0;_this17.iface_created={};return _this17;}_createClass(RangerJava7ClassWriter,[{key:"getSignatureInterface",value:function getSignatureInterface(s){var idx=this.signatures[s];if(typeof idx!=="undefined"&&idx!=null){return"LambdaSignature"+idx;}this.signature_cnt=this.signature_cnt+1;this.signatures[s]=this.signature_cnt;return"LambdaSignature"+this.signature_cnt;}},{key:"adjustType",value:function adjustType(tn){if(tn=="this"){return"this";}return tn;}},{key:"getObjectTypeString2",value:function getObjectTypeString2(type_string,ctx,wr){switch(type_string){case"int":return"Integer";case"string":return"String";case"charbuffer":return"byte[]";case"char":return"byte";case"boolean":return"Boolean";case"double":return"Double";};if(ctx.isDefinedClass(type_string)){var cc=ctx.findClass(type_string);if(cc.is_system){/** unused: const current_sys = ctx **/var sName=cc.systemNames["java7"];this.addSystemImport(cc,ctx,wr);return sName;}if(cc.is_union){return"Object";}}return type_string;}},{key:"getTypeString",value:function getTypeString(type_string){switch(type_string){case"int":return"Integer";case"string":return"String";case"charbuffer":return"byte[]";case"char":return"byte";case"boolean":return"Boolean";case"double":return"Double";};return type_string;}},{key:"writeTypeDef",value:function writeTypeDef(node,ctx,wr){var v_type=node.value_type;var t_name=node.type_name;var a_name=node.array_type;var k_name=node.key_type;if(v_type==10||v_type==11||v_type==0){v_type=node.typeNameAsType(ctx);}if(node.eval_type!=0){v_type=node.eval_type;if(node.eval_type_name.length>0){t_name=node.eval_type_name;}if(node.eval_array_type.length>0){a_name=node.eval_array_type;}if(node.eval_key_type.length>0){k_name=node.eval_key_type;}}if(node.hasFlag("optional")){switch(v_type){case 17:var sig=this.buildLambdaSignature(node.expression_value);var iface_name=this.getSignatureInterface(sig);wr.out(iface_name,false);if(this.isPackaged(ctx)){var package_name=ctx.getCompilerSetting("package");wr.addImport(package_name+".interfaces.*");}if((typeof this.iface_created[iface_name]!="undefined"&&this.iface_created.hasOwnProperty(iface_name))==false){var fnNode=node.expression_value.children[0];var _args2=node.expression_value.children[1];this.iface_created[iface_name]=true;var iface_dir=".";if(this.isPackaged(ctx)){iface_dir="./interfaces/";}var utilWr=wr.getFileWriter(iface_dir,iface_name+".java");if(this.isPackaged(ctx)){var package_name_1=ctx.getCompilerSetting("package");if(package_name_1.length>0){utilWr.out("package "+package_name_1+".interfaces;",true);utilWr.out("import "+package_name_1+".*;",true);}}var importFork=utilWr.fork();utilWr.out("public interface "+iface_name+" { ",true);utilWr.indent(1);utilWr.out("public ",false);this.writeTypeDef(fnNode,ctx,utilWr);utilWr.out(" run(",false);for(var i=0;i<_args2.children.length;i++){var arg=_args2.children[i];if(i>0){utilWr.out(", ",false);}utilWr.out(" final ",false);this.writeTypeDef(arg,ctx,utilWr);utilWr.out(" ",false);utilWr.out(arg.vref,false);};utilWr.out(");",true);utilWr.indent(-1);utilWr.out("}",true);operatorsOf.forEach_3(utilWr.getImports(),function(item,index){importFork.out("import "+item+";",true);});}break;case 13:wr.out("Integer",false);break;case 3:wr.out("Integer",false);break;case 2:wr.out("Double",false);break;case 4:wr.out("String",false);break;case 5:wr.out("Boolean",false);break;case 14:wr.out("byte",false);break;case 15:wr.out("byte[]",false);break;case 7:wr.out("HashMap<"+this.getObjectTypeString2(k_name,ctx,wr)+","+this.getObjectTypeString2(a_name,ctx,wr)+">",false);wr.addImport("java.util.*");break;case 6:wr.out("ArrayList<"+this.getObjectTypeString2(a_name,ctx,wr)+">",false);wr.addImport("java.util.*");break;default:if(t_name=="void"){wr.out("void",false);}else{wr.out(this.getObjectTypeString2(t_name,ctx,wr),false);}if(ctx.isDefinedClass(t_name)){var cc=ctx.findClass(t_name);if(cc.is_system){this.addSystemImport(cc,ctx,wr);}}break;};}else{switch(v_type){case 17:var sig_1=this.buildLambdaSignature(node.expression_value);var iface_name_1=this.getSignatureInterface(sig_1);wr.out(iface_name_1,false);/** unused: const package_name_2 = ctx.getCompilerSetting("package") **/if((typeof this.iface_created[iface_name_1]!="undefined"&&this.iface_created.hasOwnProperty(iface_name_1))==false){var fnNode_1=node.expression_value.children[0];var args_1=node.expression_value.children[1];this.iface_created[iface_name_1]=true;var iface_dir_1=".";if(this.isPackaged(ctx)){iface_dir_1="./interfaces/";}var utilWr_1=wr.getFileWriter(iface_dir_1,iface_name_1+".java");if(this.isPackaged(ctx)){var package_name_3=ctx.getCompilerSetting("package");if(package_name_3.length>0){utilWr_1.out("package "+package_name_3+".interfaces;",true);utilWr_1.out("import "+package_name_3+".*;",true);}}var importFork_1=utilWr_1.fork();utilWr_1.out("public interface "+iface_name_1+" { ",true);utilWr_1.indent(1);utilWr_1.out("public ",false);this.writeTypeDef(fnNode_1,ctx,utilWr_1);utilWr_1.out(" run(",false);for(var i_1=0;i_1<args_1.children.length;i_1++){var arg_1=args_1.children[i_1];if(i_1>0){utilWr_1.out(", ",false);}utilWr_1.out(" final ",false);this.writeTypeDef(arg_1,ctx,utilWr_1);utilWr_1.out(" ",false);utilWr_1.out(arg_1.vref,false);};utilWr_1.out(");",true);utilWr_1.indent(-1);utilWr_1.out("}",true);operatorsOf.forEach_3(utilWr_1.getImports(),function(item,index){importFork_1.out("import "+item+";",true);});}break;case 13:wr.out("Integer",false);break;case 3:wr.out("Integer",false);break;case 2:wr.out("Double",false);break;case 14:wr.out("byte",false);break;case 15:wr.out("byte[]",false);break;case 4:wr.out("String",false);break;case 5:wr.out("Boolean",false);break;case 7:wr.out("HashMap<"+this.getObjectTypeString2(k_name,ctx,wr)+","+this.getObjectTypeString2(a_name,ctx,wr)+">",false);wr.addImport("java.util.*");break;case 6:wr.out("ArrayList<"+this.getObjectTypeString2(a_name,ctx,wr)+">",false);wr.addImport("java.util.*");break;default:var b_object_set=false;if(ctx.isDefinedClass(t_name)){var cc_1=ctx.findClass(t_name);if(cc_1.is_union){wr.out("Object",false);b_object_set=true;}if(cc_1.is_system){this.addSystemImport(cc_1,ctx,wr);var sName=cc_1.systemNames["java7"];wr.out(sName,false);return;}}if(b_object_set==false){if(t_name=="void"){wr.out("void",false);}else{wr.out(this.getTypeString(t_name),false);}}break;};}}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){if(node.vref=="this"){if(ctx.inLambda()){var currC=ctx.getCurrentClass();wr.out(currC.name+".this",false);}else{wr.out("this",false);}return;}if(node.eval_type==13){if(node.ns.length>1){var rootObjName=node.ns[0];var enumName=node.ns[1];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){wr.out(""+e.values[enumName],false);return;}}}var max_len=node.ns.length;if(node.nsp.length>0){for(var i=0;i<node.nsp.length;i++){var p=node.nsp[i];if(i==0){var p_captured_mutable=p.set_cnt>0&&p.is_captured&&p.is_class_variable==false;if(p.nameNode.value_type==7||p.nameNode.value_type==6){p_captured_mutable=false;}var part=node.ns[0];if(part=="this"){if(ctx.inLambda()){var currC_1=ctx.getCurrentClass();wr.out(currC_1.name+".this",false);}else{var currC_2=ctx.getCurrentClass();wr.out(currC_2.name+".this",false);}continue;}if(p_captured_mutable){wr.out("[0]",false);}}if(i>0){wr.out(".",false);}if(p.compiledName.length>0){wr.out(this.adjustType(p.compiledName),false);}else{if(p.name.length>0){wr.out(this.adjustType(p.name),false);}else{wr.out(this.adjustType(node.ns[i]),false);}}if(i<max_len-1){if(p.nameNode.hasFlag("optional")){}}};return;}if(node.hasParamDesc){var p_1=node.paramDesc;wr.out(p_1.compiledName,false);var p_captured_mutable_1=p_1.set_cnt>0&&p_1.is_captured&&p_1.is_class_variable==false;if(p_1.nameNode.value_type==7||p_1.nameNode.value_type==6){p_captured_mutable_1=false;}if(p_captured_mutable_1){wr.out("[0]",false);}return;}for(var i_1=0;i_1<node.ns.length;i_1++){var part_1=node.ns[i_1];if(i_1>0){wr.out(".",false);}if(part_1=="this"){if(ctx.inLambda()){var currC_3=ctx.getCurrentClass();wr.out(currC_3.name+".this",false);continue;}}wr.out(this.adjustType(part_1),false);};}},{key:"disabledVarDef",value:function disabledVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;if(p.ref_cnt==0&&p.is_class_variable==false){wr.out("/** unused: ",false);}wr.out(p.compiledName,false);if(node.children.length>2){wr.out(" = ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}else{var b_was_set=false;if(nn.value_type==6){wr.out(" = new ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out("()",false);b_was_set=true;}if(nn.value_type==7){wr.out(" = new ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out("()",false);b_was_set=true;}if(b_was_set==false&&nn.hasFlag("optional")){wr.out(" = null",false);}}if(p.ref_cnt==0&&p.is_class_variable==true){wr.out(" /** note: unused */",false);}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out(" **/ ;",true);}else{wr.out(";",false);wr.newline();}}}},{key:"writeVarDef",value:function writeVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;var p_captured_mutable=p.set_cnt>0&&p.is_captured&&p.is_class_variable==false;if(nn.value_type==7||nn.value_type==6){p_captured_mutable=false;}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out("/** unused: ",false);}if(p.is_captured&&p.is_class_variable==false&&(nn.value_type==7||nn.value_type==6)){wr.out("final ",false);}else{if(p_captured_mutable==false&&(p.set_cnt>0||p.is_class_variable)){wr.out("",false);}else{wr.out("final ",false);}}this.writeTypeDef(p.nameNode,ctx,wr);if(p_captured_mutable){wr.out("[]",false);}wr.out(" ",false);wr.out(p.compiledName,false);if(node.children.length>2){wr.out(" = ",false);ctx.setInExpr();var value=node.getThird();if(p_captured_mutable){wr.out(" new ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out("[]{",false);}this.WalkNode(value,ctx,wr);if(p_captured_mutable){wr.out("}",false);}ctx.unsetInExpr();}else{if(p_captured_mutable){wr.out(" = new ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out("[]{ null }",false);}else{var b_was_set=false;if(nn.value_type==6){wr.out(" = new ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out("()",false);b_was_set=true;}if(nn.value_type==7){wr.out(" = new ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out("()",false);b_was_set=true;}if(b_was_set==false&&nn.hasFlag("optional")){wr.out(" = null",false);}}}if(p.ref_cnt==0&&p.is_class_variable==true){wr.out(" /** note: unused */",false);}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out(" **/ ;",true);}else{wr.out(";",false);wr.newline();}}}},{key:"writeArgsDef",value:function writeArgsDef(fnDesc,ctx,wr){for(var i=0;i<fnDesc.params.length;i++){var arg=fnDesc.params[i];if(i>0){wr.out(",",false);}wr.out(" final ",false);this.writeTypeDef(arg.nameNode,ctx,wr);wr.out(" "+arg.compiledName+" ",false);};}},{key:"CustomOperator",value:function CustomOperator(node,ctx,wr){var fc=node.getFirst();var cmd=fc.vref;if(cmd=="return"){wr.newline();if(node.children.length>1){var value=node.getSecond();wr.out("return ",false);ctx.setInExpr();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();wr.out(";",true);}else{wr.out("return;",true);}}}},{key:"buildLambdaSignature",value:function buildLambdaSignature(node){var exp=node;var exp_s="";var fc=exp.getFirst();var args=exp.getSecond();exp_s=exp_s+fc.buildTypeSignature();exp_s=exp_s+"(";for(var i=0;i<args.children.length;i++){var arg=args.children[i];exp_s=exp_s+arg.buildTypeSignature();exp_s=exp_s+",";};exp_s=exp_s+")";return exp_s;}},{key:"CreateLambdaCall",value:function CreateLambdaCall(node,ctx,wr){var fName=node.children[0];var givenArgs=node.children[1];var rv=void 0;var args=void 0;if(typeof fName.expression_value!=="undefined"&&fName.expression_value!=null){rv=fName.expression_value.children[0];args=fName.expression_value.children[1];}else{var param=ctx.getVariableDef(fName.vref);rv=param.nameNode.expression_value.children[0];args=param.nameNode.expression_value.children[1];}this.WalkNode(fName,ctx,wr);wr.out(".run(",false);ctx.setInExpr();for(var i=0;i<args.children.length;i++){var arg=args.children[i];var n=givenArgs.children[i];if(i>0){wr.out(", ",false);}if(arg.value_type!=0){this.WalkNode(n,ctx,wr);}};ctx.unsetInExpr();if(ctx.expressionLevel()==0){wr.out(");",true);}else{wr.out(")",false);}}},{key:"writeArrayLiteral",value:function writeArrayLiteral(node,ctx,wr){var _this18=this;wr.addImport("java.util.*");wr.out("new ArrayList<",false);wr.out(this.getObjectTypeString2(node.eval_array_type,ctx,wr),false);wr.out(">(Arrays.asList( new ",false);wr.out(this.getObjectTypeString2(node.eval_array_type,ctx,wr),false);wr.out("[] {",false);operatorsOf.forEach_6(node.children,function(item,index){if(index>0){wr.out(", ",false);}_this18.WalkNode(item,ctx,wr);});wr.out("}))",false);}},{key:"CreateLambda",value:function CreateLambda(node,ctx,wr){var lambdaCtx=node.lambda_ctx;var fnNode=node.children[0];var args=node.children[1];var body=node.children[2];var sig=this.buildLambdaSignature(node);var iface_name=this.getSignatureInterface(sig);/** unused: const package_name = ctx.getCompilerSetting("package") **/if((typeof this.iface_created[iface_name]!="undefined"&&this.iface_created.hasOwnProperty(iface_name))==false){this.iface_created[iface_name]=true;/** unused: const utilWr = wr.getFileWriter("./interfaces/", (iface_name + ".java")) **/var iface_dir=".";if(this.isPackaged(ctx)){iface_dir="./interfaces/";}var utilWr_1=wr.getFileWriter(iface_dir,iface_name+".java");if(this.isPackaged(ctx)){var package_name_2=ctx.getCompilerSetting("package");if(package_name_2.length>0){utilWr_1.out("package "+package_name_2+".interfaces;",true);utilWr_1.out("import "+package_name_2+".*;",true);}}var importFork=utilWr_1.fork();utilWr_1.out("public interface "+iface_name+" { ",true);utilWr_1.indent(1);utilWr_1.out("public ",false);this.writeTypeDef(fnNode,ctx,utilWr_1);utilWr_1.out(" run(",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){utilWr_1.out(", ",false);}utilWr_1.out(" final ",false);this.writeTypeDef(arg,lambdaCtx,utilWr_1);utilWr_1.out(" ",false);utilWr_1.out(arg.vref,false);};utilWr_1.out(");",true);utilWr_1.indent(-1);utilWr_1.out("}",true);operatorsOf.forEach_3(utilWr_1.getImports(),function(item,index){importFork.out("import "+item+";",true);});}wr.out("new "+iface_name+"() { ",true);wr.indent(1);wr.out("public ",false);this.writeTypeDef(fnNode,ctx,wr);wr.out(" run(",false);for(var i_1=0;i_1<args.children.length;i_1++){var arg_1=args.children[i_1];if(i_1>0){wr.out(", ",false);}wr.out(" final ",false);this.writeTypeDef(arg_1,lambdaCtx,wr);wr.out(" ",false);wr.out(arg_1.vref,false);};wr.out(") {",true);wr.indent(1);lambdaCtx.restartExpressionLevel();lambdaCtx.is_lambda=true;for(var i_2=0;i_2<body.children.length;i_2++){var item=body.children[i_2];this.WalkNode(item,lambdaCtx,wr);};wr.newline();for(var i_3=0;i_3<lambdaCtx.captured_variables.length;i_3++){var cname=lambdaCtx.captured_variables[i_3];wr.out("// captured var "+cname,true);};wr.indent(-1);wr.out("}",true);wr.indent(-1);wr.out("}",false);}},{key:"getCounters",value:function getCounters(ctx){var root=ctx.getRoot();var counters=root.counters;if(counters.b_counted==false){var list=Object.keys(root.definedClasses);for(var i=0;i<list.length;i++){var name=list[i];if(name.indexOf("operatorsOf")==0){counters.operator_cnt=counters.operator_cnt+1;}if(name.indexOf("Map_")==0){counters.immutable_cnt=counters.immutable_cnt+1;}if(name.indexOf("Vector_")==0){counters.immutable_cnt=counters.immutable_cnt+1;}};}counters.b_counted=true;return counters;}},{key:"writeClass",value:function writeClass(node,ctx,orig_wr){var cl=node.clDesc;if(typeof cl==="undefined"){return;}var declaredVariable={};if(cl.extends_classes.length>0){for(var i=0;i<cl.extends_classes.length;i++){var pName=cl.extends_classes[i];var pC=ctx.findClass(pName);for(var i_1=0;i_1<pC.variables.length;i_1++){var pvar=pC.variables[i_1];declaredVariable[pvar.name]=true;};};}var class_dir=".";var package_end="";if(this.isPackaged(ctx)){if(cl.name.indexOf("operatorsOf")==0){class_dir="./operators/";package_end=".operators";}if(cl.name.indexOf("Map_")==0){class_dir="./immutables/";package_end=".immutables";}if(cl.name.indexOf("Vector_")==0){class_dir="./immutables/";package_end=".immutables";}}var wr=orig_wr.getFileWriter(class_dir,cl.name+".java");var package_name=ctx.getCompilerSetting("package");if(this.isPackaged(ctx)){if(package_name.length>0){wr.out("package "+package_name+package_end+";",true);}}var importFork=wr.fork();if(this.isPackaged(ctx)){var counters=this.getCounters(ctx);if(counters.interface_cnt>0){importFork.addImport(package_name+".interfaces.*");}if(counters.immutable_cnt>0){importFork.addImport(package_name+".immutables.*");}if(counters.operator_cnt>0){importFork.addImport(package_name+".operators.*");}if(package_end.length>0){importFork.addImport(package_name+".*");}}for(var i_2=0;i_2<cl.capturedLocals.length;i_2++){var dd=cl.capturedLocals[i_2];if(dd.is_class_variable==false){if(dd.set_cnt>0){if(ctx.hasCompilerFlag("allow-mutate")){}else{}}}};wr.out("",true);wr.out("public class "+cl.name,false);if(cl.extends_classes.length>0){wr.out(" extends ",false);for(var i_3=0;i_3<cl.extends_classes.length;i_3++){var pName_1=cl.extends_classes[i_3];wr.out(pName_1,false);};}wr.out(" { ",true);wr.indent(1);wr.createTag("utilities");for(var i_4=0;i_4<cl.variables.length;i_4++){var pvar_1=cl.variables[i_4];if(typeof declaredVariable[pvar_1.name]!="undefined"&&declaredVariable.hasOwnProperty(pvar_1.name)){continue;}wr.out("public ",false);this.writeVarDef(pvar_1.node,ctx,wr);};if(cl.has_constructor){var constr=cl.constructor_fn;wr.out("",true);wr.out(cl.name+"(",false);this.writeArgsDef(constr,ctx,wr);wr.out(" ) {",true);wr.indent(1);wr.newline();var subCtx=constr.fnCtx;subCtx.is_function=true;this.WalkNode(constr.fnBody,subCtx,wr);wr.newline();wr.indent(-1);wr.out("}",true);}for(var i_5=0;i_5<cl.static_methods.length;i_5++){var variant=cl.static_methods[i_5];wr.out("",true);if(variant.nameNode.hasFlag("main")&&variant.nameNode.code.filename!=ctx.getRootFile()){continue;}if(variant.nameNode.hasFlag("main")){ctx.setCompilerSetting("mainclass",cl.name);wr.out("public static void main(String [] args ) {",true);}else{wr.out("public static ",false);this.writeTypeDef(variant.nameNode,ctx,wr);wr.out(" ",false);wr.out(variant.compiledName+"(",false);this.writeArgsDef(variant,ctx,wr);wr.out(") {",true);}wr.indent(1);wr.newline();var subCtx_1=variant.fnCtx;subCtx_1.is_function=true;this.WalkNode(variant.fnBody,subCtx_1,wr);wr.newline();wr.indent(-1);wr.out("}",true);};for(var i_6=0;i_6<cl.defined_variants.length;i_6++){var fnVar=cl.defined_variants[i_6];var mVs=cl.method_variants[fnVar];for(var i_7=0;i_7<mVs.variants.length;i_7++){var variant_1=mVs.variants[i_7];wr.out("",true);wr.out("public ",false);this.writeTypeDef(variant_1.nameNode,ctx,wr);wr.out(" ",false);wr.out(variant_1.compiledName+"(",false);this.writeArgsDef(variant_1,ctx,wr);wr.out(") {",true);wr.indent(1);wr.newline();var subCtx_2=variant_1.fnCtx;subCtx_2.is_function=true;this.WalkNode(variant_1.fnBody,subCtx_2,wr);wr.newline();wr.indent(-1);wr.out("}",true);};};wr.indent(-1);wr.out("}",true);var import_list=wr.getImports();for(var i_8=0;i_8<import_list.length;i_8++){var codeStr=import_list[i_8];importFork.out("import "+codeStr+";",true);};}},{key:"CreateServices",value:function CreateServices(parser,ctx,orig_wr){return;}},{key:"CreatePages",value:function CreatePages(parser,ctx,orig_wr){var _this19=this;operatorsOf_4.forEach_16(ctx.appPages,function(item,index){_this19.CreatePage(parser,item,ctx,orig_wr);});}},{key:"CreatePage",value:function CreatePage(parser,node,ctx,orig_wr){var writer=new AndroidPageWriter();writer.classWriter=this;writer.CreatePage(parser,node,ctx,orig_wr);}}]);return RangerJava7ClassWriter;}(RangerGenericClassWriter);var RangerSwift3ClassWriter=function(_RangerGenericClassWr2){_inherits(RangerSwift3ClassWriter,_RangerGenericClassWr2);function RangerSwift3ClassWriter(){_classCallCheck(this,RangerSwift3ClassWriter);var _this20=_possibleConstructorReturn(this,(RangerSwift3ClassWriter.__proto__||Object.getPrototypeOf(RangerSwift3ClassWriter)).call(this));_this20.header_created=false;return _this20;}_createClass(RangerSwift3ClassWriter,[{key:"adjustType",value:function adjustType(tn){if(tn=="this"){return"self";}return tn;}},{key:"getObjectTypeString",value:function getObjectTypeString(type_string,ctx){if(ctx.isDefinedClass(type_string)){var cc=ctx.findClass(type_string);if(cc.is_union){return"Any";}if(cc.is_system){var sysName=cc.systemNames["swift3"];if(typeof sysName!=="undefined"&&sysName!=null){return sysName;}else{var node=new CodeNode(new SourceCode(""),0,0);ctx.addError(node,"No system class "+type_string+"defined for Swift ");}}}switch(type_string){case"int":return"Int";case"string":return"String";case"charbuffer":return"[UInt8]";case"char":return"UInt8";case"boolean":return"Bool";case"double":return"Double";};return type_string;}},{key:"getTypeString",value:function getTypeString(type_string){switch(type_string){case"int":return"Int";case"string":return"String";case"charbuffer":return"[UInt8]";case"char":return"UInt8";case"boolean":return"Bool";case"double":return"Double";};return type_string;}},{key:"writeTypeDef",value:function writeTypeDef(node,ctx,wr){var v_type=node.value_type;var t_name=node.type_name;var a_name=node.array_type;var k_name=node.key_type;if(v_type==10||v_type==11||v_type==0){v_type=node.typeNameAsType(ctx);}if(node.eval_type!=0){v_type=node.eval_type;if(node.eval_type_name.length>0){t_name=node.eval_type_name;}if(node.eval_array_type.length>0){a_name=node.eval_array_type;}if(node.eval_key_type.length>0){k_name=node.eval_key_type;}}switch(v_type){case 17:var rv=node.expression_value.children[0];var sec=node.expression_value.children[1];/** unused: const fc = sec.getFirst() **/wr.out("(",false);wr.out("(",false);for(var i=0;i<sec.children.length;i++){var arg=sec.children[i];if(i>0){wr.out(", ",false);}wr.out(" _ : ",false);this.writeTypeDef(arg,ctx,wr);};wr.out(") -> ",false);this.writeTypeDef(rv,ctx,wr);wr.out(")",false);break;case 13:wr.out("Int",false);break;case 3:wr.out("Int",false);break;case 2:wr.out("Double",false);break;case 4:wr.out("String",false);break;case 14:wr.out("UInt8",false);break;case 15:wr.out("[UInt8]",false);break;case 5:wr.out("Bool",false);break;case 7:wr.out("["+this.getObjectTypeString(k_name,ctx)+":"+this.getObjectTypeString(a_name,ctx)+"]",false);break;case 6:wr.out("["+this.getObjectTypeString(a_name,ctx)+"]",false);break;default:if(t_name=="void"){wr.out("Void",false);return;}if(ctx.isDefinedClass(t_name)){var cc=ctx.findClass(t_name);if(cc.is_union){wr.out("Any",false);if(node.hasFlag("optional")){wr.out("?",false);}return;}if(cc.is_system){var sysName=cc.systemNames["swift3"];if(typeof sysName!=="undefined"&&sysName!=null){wr.out(sysName,false);}else{ctx.addError(node,"No system class "+t_name+"defined for Swift ");}if(node.hasFlag("optional")){wr.out("?",false);}return;}}wr.out(this.getTypeString(t_name),false);break;};if(node.hasFlag("optional")){wr.out("?",false);}}},{key:"WriteEnum",value:function WriteEnum(node,ctx,wr){if(node.eval_type==13){var rootObjName=node.ns[0];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){var enumName=node.ns[1];wr.out(""+e.values[enumName],false);}else{if(node.hasParamDesc){var pp=node.paramDesc;var nn=pp.nameNode;wr.out(nn.vref,false);}}}}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){if(node.vref=="this"){wr.out("self",false);return;}if(node.eval_type==13){if(node.ns.length>1){var rootObjName=node.ns[0];var enumName=node.ns[1];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){wr.out(""+e.values[enumName],false);return;}}}var max_len=node.ns.length;if(node.nsp.length>0){for(var i=0;i<node.nsp.length;i++){var p=node.nsp[i];if(i==0){var part=node.ns[0];if(part=="this"){wr.out("self",false);continue;}if(part!="this"&&ctx.isMemberVariable(part)){var uc=ctx.getCurrentClass();var currC=uc;var up=currC.findVariable(part);if(typeof up!=="undefined"&&up!=null){if(false==ctx.isInStatic()){wr.out("self.",false);}}}}if(i>0){wr.out(".",false);}if(p.compiledName.length>0){wr.out(this.adjustType(p.compiledName),false);}else{if(p.name.length>0){wr.out(this.adjustType(p.name),false);}else{wr.out(this.adjustType(node.ns[i]),false);}}if(i<max_len-1){if(p.nameNode.hasFlag("optional")){wr.out("!",false);}}};return;}if(node.hasParamDesc){var p_1=node.paramDesc;var part_1=node.ns[0];if(part_1!="this"&&ctx.isMemberVariable(part_1)){var uc_1=ctx.getCurrentClass();var currC_1=uc_1;var up_1=currC_1.findVariable(part_1);if(typeof up_1!=="undefined"&&up_1!=null){if(false==ctx.isInStatic()){wr.out("self.",false);}}}wr.out(p_1.compiledName,false);return;}for(var i_1=0;i_1<node.ns.length;i_1++){var part_2=node.ns[i_1];if(i_1==0){if(part_2!="this"&&ctx.isMemberVariable(part_2)){var uc_2=ctx.getCurrentClass();var currC_2=uc_2;var up_2=currC_2.findVariable(part_2);if(typeof up_2!=="undefined"&&up_2!=null){if(false==ctx.isInStatic()){wr.out("self.",false);}}}if(ctx.hasClass(part_2)){var classDesc=ctx.findClass(part_2);wr.out(classDesc.compiledName,false);continue;}}if(i_1>0){wr.out(".",false);}wr.out(this.adjustType(part_2),false);};}},{key:"writeVarDef",value:function writeVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;if(nn.hasFlag("optional")){if(p.set_cnt==1&&p.ref_cnt==2&&p.is_class_variable==false){ctx.addError(node,"Optional variable is only set but never read.");}}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out("/** unused: ",false);}if(p.set_cnt>0||p.is_class_variable){wr.out("var "+p.compiledName+" : ",false);}else{wr.out("let "+p.compiledName+" : ",false);}this.writeTypeDef(p.nameNode,ctx,wr);if(node.children.length>2){wr.out(" = ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}else{if(nn.value_type==6){wr.out(" = ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out("()",false);}if(nn.value_type==7){wr.out(" = ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out("()",false);}}if(p.ref_cnt==0&&p.is_class_variable==true){wr.out(" /** note: unused */",false);}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out(" **/ ",true);}else{wr.newline();}}}},{key:"writeArgsDef",value:function writeArgsDef(fnDesc,ctx,wr){for(var i=0;i<fnDesc.params.length;i++){var arg=fnDesc.params[i];if(i>0){wr.out(", ",false);}wr.out(arg.compiledName+" : ",false);var nn=arg.nameNode;if(nn.value_type==17){wr.out(" @escaping ",false);}this.writeTypeDef(arg.nameNode,ctx,wr);};}},{key:"writeArgsDefWithLocals",value:function writeArgsDefWithLocals(fnDesc,localFnDesc,ctx,wr){if(fnDesc.params.length!=localFnDesc.params.length){ctx.addError(localFnDesc.node,"Parameter count does not match with the function prototype");return;}for(var i=0;i<fnDesc.params.length;i++){var arg=fnDesc.params[i];if(i>0){wr.out(", ",false);}var local=localFnDesc.params[i];if(local.name!=arg.name){wr.out(arg.compiledName+" ",false);}wr.out(local.compiledName+" : ",false);var nn=arg.nameNode;if(nn.hasFlag("strong")){if(nn.value_type==17){wr.out(" @escaping ",false);}}this.writeTypeDef(arg.nameNode,ctx,wr);};}},{key:"CreateCallExpression",value:function CreateCallExpression(node,ctx,wr){if(node.has_call){var obj=node.getSecond();var method=node.getThird();var _args3=node.children[3];wr.out("(",false);ctx.setInExpr();this.WalkNode(obj,ctx,wr);ctx.unsetInExpr();wr.out(").",false);wr.out(method.vref,false);wr.out("(",false);ctx.setInExpr();for(var i=0;i<_args3.children.length;i++){var arg=_args3.children[i];if(i>0){wr.out(", ",false);}if(ctx.isDefinedClass(obj.eval_type_name)){var clDef=ctx.findClass(obj.eval_type_name);var clMethod=clDef.findMethod(method.vref);if(typeof clMethod!=="undefined"&&clMethod!=null){var mm=clMethod;var pDesc=mm.params[i];wr.out(pDesc.compiledName+" : ",false);this.WalkNode(arg,ctx,wr);continue;}}else{ctx.addError(arg,"Could not find evaluated class for the call");}this.WalkNode(arg,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);if(ctx.expressionLevel()==0){wr.out(";",true);}}}},{key:"writeFnCall",value:function writeFnCall(node,ctx,wr){if(node.hasFnCall){var _fc2=node.getFirst();var fnName=node.fnDesc.nameNode;if(ctx.expressionLevel()==0){if(fnName.type_name!="void"){wr.out("_ = ",false);}}this.WriteVRef(_fc2,ctx,wr);wr.out("(",false);ctx.setInExpr();var givenArgs=node.getSecond();for(var i=0;i<node.fnDesc.params.length;i++){var arg=node.fnDesc.params[i];if(i>0){wr.out(", ",false);}if(givenArgs.children.length<=i){var defVal=arg.nameNode.getFlag("default");if(typeof defVal!=="undefined"&&defVal!=null){var fc_1=defVal.vref_annotation.getFirst();this.WalkNode(fc_1,ctx,wr);}else{ctx.addError(node,"Default argument was missing");}continue;}var n=givenArgs.children[i];wr.out(arg.compiledName+" : ",false);this.WalkNode(n,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);if(ctx.expressionLevel()==0){wr.newline();}}}},{key:"CreateLambdaCall",value:function CreateLambdaCall(node,ctx,wr){var fName=node.children[0];var givenArgs=node.children[1];var rv=void 0;var args=void 0;if(typeof fName.expression_value!=="undefined"&&fName.expression_value!=null){rv=fName.expression_value.children[0];args=fName.expression_value.children[1];}else{var param=ctx.getVariableDef(fName.vref);rv=param.nameNode.expression_value.children[0];args=param.nameNode.expression_value.children[1];}if(ctx.expressionLevel()==0){if(rv.type_name!="void"){wr.out("_ = ",false);}}ctx.setInExpr();this.WalkNode(fName,ctx,wr);wr.out("(",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];var n=givenArgs.children[i];if(i>0){wr.out(", ",false);}if(arg.value_type!=0){this.WalkNode(n,ctx,wr);}};ctx.unsetInExpr();wr.out(")",false);if(ctx.expressionLevel()==0){wr.out(";",true);}}},{key:"CreateLambda",value:function CreateLambda(node,ctx,wr){var lambdaCtx=node.lambda_ctx;var fnNode=node.children[0];var args=node.children[1];var body=node.children[2];wr.out("({ (",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(", ",false);}wr.out(arg.vref,false);};wr.out(") -> ",false);this.writeTypeDef(fnNode,lambdaCtx,wr);wr.out(" in ",true);wr.indent(1);lambdaCtx.restartExpressionLevel();for(var i_1=0;i_1<body.children.length;i_1++){var item=body.children[i_1];this.WalkNode(item,lambdaCtx,wr);};wr.newline();for(var i_2=0;i_2<lambdaCtx.captured_variables.length;i_2++){var cname=lambdaCtx.captured_variables[i_2];wr.out("// captured var "+cname,true);};wr.indent(-1);wr.out("})",false);}},{key:"writeNewCall",value:function writeNewCall(node,ctx,wr){if(node.hasNewOper){var cl=node.clDesc;/** unused: const fc = node.getSecond() **/wr.out(node.clDesc.name,false);wr.out("(",false);var constr=cl.constructor_fn;var givenArgs=node.getThird();if(typeof constr!=="undefined"&&constr!=null){for(var i=0;i<constr.params.length;i++){var arg=constr.params[i];var n=givenArgs.children[i];if(i>0){wr.out(", ",false);}wr.out(arg.name+" : ",false);this.WalkNode(n,ctx,wr);};}wr.out(")",false);}}},{key:"haveSameSig",value:function haveSameSig(fn1,fn2,ctx){if(fn1.name!=fn2.name){return false;}var match=new RangerArgMatch();var n1=fn1.nameNode;var n2=fn1.nameNode;if(match.doesDefsMatch(n1,n2,ctx)==false){return false;}if(fn1.params.length!=fn2.params.length){return false;}for(var i=0;i<fn1.params.length;i++){var p=fn1.params[i];var p2=fn2.params[i];if(match.doesDefsMatch(p.nameNode,p2.nameNode,ctx)==false){return false;}};return true;}},{key:"CustomOperator",value:function CustomOperator(node,ctx,wr){var fc=node.getFirst();var cmd=fc.vref;if(cmd=="switch"){var condition=node.getSecond();var case_nodes=node.getThird();wr.newline();wr.out("switch (",false);this.WalkNode(condition,ctx,wr);wr.out(") {",true);wr.indent(1);var found_default=false;for(var i=0;i<case_nodes.children.length;i++){var ch=case_nodes.children[i];var blockName=ch.getFirst();if(blockName.vref=="default"){found_default=true;this.WalkNode(ch,ctx,wr);}else{this.WalkNode(ch,ctx,wr);}};if(false==found_default){wr.newline();wr.out("default :",true);wr.indent(1);wr.out("break",true);wr.indent(-1);}wr.indent(-1);wr.out("}",true);}}},{key:"writeClass",value:function writeClass(node,ctx,wr){var cl=node.clDesc;if(typeof cl==="undefined"){return;}var declaredVariable={};var dblDeclaredFunction={};var declaredFunction={};var declaredStaticFunction={};var parentFunction={};if(cl.extends_classes.length>0){for(var i=0;i<cl.extends_classes.length;i++){var pName=cl.extends_classes[i];var pC=ctx.findClass(pName);for(var i_1=0;i_1<pC.variables.length;i_1++){var pvar=pC.variables[i_1];declaredVariable[pvar.name]=true;};for(var i_2=0;i_2<pC.defined_variants.length;i_2++){var fnVar=pC.defined_variants[i_2];var mVs=pC.method_variants[fnVar];for(var i_3=0;i_3<mVs.variants.length;i_3++){var variant=mVs.variants[i_3];declaredFunction[variant.name]=true;parentFunction[variant.name]=variant;};};for(var i_4=0;i_4<pC.static_methods.length;i_4++){var variant_1=pC.static_methods[i_4];declaredStaticFunction[variant_1.name]=true;};};}if(this.header_created==false){wr.createTag("utilities");this.header_created=true;}wr.out("func ==(l: "+cl.compiledName+", r: "+cl.compiledName+") -> Bool {",true);wr.indent(1);wr.out("return l === r",true);wr.indent(-1);wr.out("}",true);wr.out("class "+cl.compiledName,false);var parentClass=void 0;if(cl.extends_classes.length>0){wr.out(" : ",false);for(var i_5=0;i_5<cl.extends_classes.length;i_5++){var pName_1=cl.extends_classes[i_5];parentClass=ctx.findClass(pName_1);wr.out(parentClass.compiledName,false);};}else{wr.out(" : Equatable ",false);}wr.out(" { ",true);wr.indent(1);for(var i_6=0;i_6<cl.variables.length;i_6++){var pvar_1=cl.variables[i_6];if(typeof declaredVariable[pvar_1.name]!="undefined"&&declaredVariable.hasOwnProperty(pvar_1.name)){wr.out("// WAS DECLARED : "+pvar_1.name,true);continue;}this.writeVarDef(pvar_1.node,ctx,wr);};if(cl.has_constructor){var constr=cl.constructor_fn;var b_must_override=false;if(typeof parentClass!="undefined"){if(constr.params.length==0){b_must_override=true;}else{if(parentClass.has_constructor){var p_constr=parentClass.constructor_fn;if(this.haveSameSig(constr,p_constr,ctx)){b_must_override=true;}}}}if(b_must_override){wr.out("override ",false);}wr.out("init(",false);this.writeArgsDef(constr,ctx,wr);wr.out(" ) {",true);wr.indent(1);if(typeof parentClass!="undefined"){wr.out("super.init()",true);}wr.newline();var subCtx=constr.fnCtx;subCtx.is_function=true;this.WalkNode(constr.fnBody,subCtx,wr);wr.newline();wr.indent(-1);wr.out("}",true);}for(var i_7=0;i_7<cl.static_methods.length;i_7++){var variant_2=cl.static_methods[i_7];if(variant_2.nameNode.hasFlag("main")){continue;}if(typeof declaredStaticFunction[variant_2.name]!="undefined"&&declaredStaticFunction.hasOwnProperty(variant_2.name)){wr.out("override ",false);}wr.out("class func "+variant_2.compiledName+"(",false);this.writeArgsDef(variant_2,ctx,wr);wr.out(") -> ",false);this.writeTypeDef(variant_2.nameNode,ctx,wr);wr.out(" {",true);wr.indent(1);wr.newline();var subCtx_1=variant_2.fnCtx;subCtx_1.is_function=true;this.WalkNode(variant_2.fnBody,subCtx_1,wr);wr.newline();wr.indent(-1);wr.out("}",true);};for(var i_8=0;i_8<cl.defined_variants.length;i_8++){var fnVar_1=cl.defined_variants[i_8];var mVs_1=cl.method_variants[fnVar_1];for(var i_9=0;i_9<mVs_1.variants.length;i_9++){var variant_3=mVs_1.variants[i_9];if(typeof dblDeclaredFunction[variant_3.name]!="undefined"&&dblDeclaredFunction.hasOwnProperty(variant_3.name)){continue;}if(typeof declaredFunction[variant_3.name]!="undefined"&&declaredFunction.hasOwnProperty(variant_3.name)){wr.out("override ",false);}dblDeclaredFunction[variant_3.name]=true;wr.out("func "+variant_3.compiledName+"(",false);if(typeof parentFunction[variant_3.name]!="undefined"&&parentFunction.hasOwnProperty(variant_3.name)){this.writeArgsDefWithLocals(parentFunction[variant_3.name],variant_3,ctx,wr);}else{this.writeArgsDef(variant_3,ctx,wr);}wr.out(") -> ",false);this.writeTypeDef(variant_3.nameNode,ctx,wr);wr.out(" {",true);wr.indent(1);wr.newline();var subCtx_2=variant_3.fnCtx;subCtx_2.is_function=true;this.WalkNode(variant_3.fnBody,subCtx_2,wr);wr.newline();wr.indent(-1);wr.out("}",true);};};wr.indent(-1);wr.out("}",true);for(var i_10=0;i_10<cl.static_methods.length;i_10++){var variant_4=cl.static_methods[i_10];if(variant_4.nameNode.hasFlag("main")&&variant_4.nameNode.code.filename==ctx.getRootFile()){var theEnd=wr.getTag("file_end");theEnd.newline();theEnd.out("func __main__swift() {",true);theEnd.indent(1);var subCtx_3=variant_4.fnCtx;subCtx_3.is_function=true;this.WalkNode(variant_4.fnBody,subCtx_3,theEnd);theEnd.newline();theEnd.indent(-1);theEnd.out("}",true);theEnd.out("// call the main function",true);theEnd.out("__main__swift()",true);if(ctx.hasCompilerFlag("forever")){theEnd.out("CFRunLoopRun()",true);}}};}}]);return RangerSwift3ClassWriter;}(RangerGenericClassWriter);var RangerCppClassWriter=function(_RangerGenericClassWr3){_inherits(RangerCppClassWriter,_RangerGenericClassWr3);function RangerCppClassWriter(){_classCallCheck(this,RangerCppClassWriter);var _this21=_possibleConstructorReturn(this,(RangerCppClassWriter.__proto__||Object.getPrototypeOf(RangerCppClassWriter)).call(this));_this21.header_created=false;return _this21;}_createClass(RangerCppClassWriter,[{key:"adjustType",value:function adjustType(tn){if(tn=="this"){return"this";}return tn;}},{key:"WriteScalarValue",value:function WriteScalarValue(node,ctx,wr){switch(node.value_type){case 2:wr.out(""+node.double_value,false);break;case 4:var s=this.EncodeString(node,ctx,wr);wr.out("std::string("+("\""+s+"\"")+")",false);break;case 3:wr.out(""+node.int_value,false);break;case 5:if(node.boolean_value){wr.out("true",false);}else{wr.out("false",false);}break;};}},{key:"getObjectTypeString",value:function getObjectTypeString(type_string,ctx){switch(type_string){case"char":return"char";case"charbuffer":return"const char*";case"int":return"int";case"string":return"std::string";case"boolean":return"bool";case"double":return"double";};if(ctx.isEnumDefined(type_string)){return"int";}if(ctx.isDefinedClass(type_string)){var cc=ctx.findClass(type_string);if(cc.is_union){return"r_union_"+type_string;}return"std::shared_ptr<"+type_string+">";}return type_string;}},{key:"getTypeString2",value:function getTypeString2(type_string,ctx){switch(type_string){case"char":return"char";case"charbuffer":return"const char*";case"int":return"int";case"string":return"std::string";case"boolean":return"bool";case"double":return"double";};if(ctx.isEnumDefined(type_string)){return"int";}return type_string;}},{key:"writePtr",value:function writePtr(node,ctx,wr){if(node.type_name=="void"){return;}}},{key:"writeTypeDef",value:function writeTypeDef(node,ctx,wr){var v_type=node.value_type;var t_name=node.type_name;var a_name=node.array_type;var k_name=node.key_type;if(v_type==10||v_type==11||v_type==0){v_type=node.typeNameAsType(ctx);}if(node.eval_type!=0){v_type=node.eval_type;if(node.eval_type_name.length>0){t_name=node.eval_type_name;}if(node.eval_array_type.length>0){a_name=node.eval_array_type;}if(node.eval_key_type.length>0){k_name=node.eval_key_type;}}switch(v_type){case 17:var rv=node.expression_value.children[0];var sec=node.expression_value.children[1];/** unused: const fc = sec.getFirst() **/this.import_lib("<functional>",ctx,wr);wr.out("std::function<",false);this.writeTypeDef(rv,ctx,wr);wr.out("(",false);for(var i=0;i<sec.children.length;i++){var arg=sec.children[i];if(i>0){wr.out(", ",false);}this.writeTypeDef(arg,ctx,wr);};wr.out(")>",false);break;case 13:wr.out("int",false);break;case 3:if(node.hasFlag("optional")){wr.out(" r_optional_primitive<int> ",false);}else{wr.out("int",false);}break;case 14:wr.out("char",false);break;case 15:wr.out("const char*",false);break;case 2:if(node.hasFlag("optional")){wr.out(" r_optional_primitive<double> ",false);}else{wr.out("double",false);}break;case 4:wr.addImport("<string>");wr.out("std::string",false);break;case 5:wr.out("bool",false);break;case 7:wr.out("std::map<"+this.getObjectTypeString(k_name,ctx)+","+this.getObjectTypeString(a_name,ctx)+">",false);wr.addImport("<map>");break;case 6:wr.out("std::vector<"+this.getObjectTypeString(a_name,ctx)+">",false);wr.addImport("<vector>");break;default:if(node.type_name=="void"){wr.out("void",false);return;}if(ctx.isDefinedClass(t_name)){var cc=ctx.findClass(t_name);if(cc.is_union){wr.out("r_union_",false);wr.out(t_name,false);return;}var cc_1=ctx.findClass(t_name);wr.out("std::shared_ptr<",false);wr.out(cc_1.name,false);wr.out(">",false);return;}if(node.hasFlag("optional")){wr.out("std::shared_ptr<std::vector<",false);wr.out(this.getTypeString2(t_name,ctx),false);wr.out(">",false);return;}wr.out(this.getTypeString2(t_name,ctx),false);break;};}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){if(node.vref=="this"){var currC=ctx.getCurrentClass();if(typeof currC!=="undefined"&&currC!=null){var cc=currC;if(cc.extends_classes.length>0){wr.out("std::dynamic_pointer_cast<"+cc.name+">(shared_from_this())",false);return;}}wr.out("shared_from_this()",false);return;}if(node.eval_type==13){var rootObjName=node.ns[0];if(node.ns.length>1){var enumName=node.ns[1];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){wr.out(""+e.values[enumName],false);return;}}}var had_static=false;if(node.nsp.length>0){for(var i=0;i<node.nsp.length;i++){var p=node.nsp[i];if(i>0){if(had_static){wr.out("::",false);}else{wr.out("->",false);}}if(i==0){var part=node.ns[0];if(part=="this"){wr.out("this",false);continue;}}if(p.compiledName.length>0){wr.out(this.adjustType(p.compiledName),false);}else{if(p.name.length>0){wr.out(this.adjustType(p.name),false);}else{wr.out(this.adjustType(node.ns[i]),false);}}if(p.isClass()){had_static=true;}};return;}if(node.hasParamDesc){var p_1=node.paramDesc;wr.out(p_1.compiledName,false);return;}for(var i_1=0;i_1<node.ns.length;i_1++){var part_1=node.ns[i_1];if(i_1>0){if(had_static){wr.out("::",false);}else{wr.out("->",false);}}if(ctx.hasClass(part_1)){had_static=true;}else{had_static=false;}wr.out(this.adjustType(part_1),false);};}},{key:"writeVarDef",value:function writeVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;if(p.ref_cnt==0&&p.is_class_variable==false){wr.out("/** unused: ",false);}if(p.set_cnt>0||p.is_class_variable){wr.out("",false);}else{wr.out("",false);}this.writeTypeDef(p.nameNode,ctx,wr);wr.out(" ",false);wr.out(p.compiledName,false);if(node.children.length>2){wr.out(" = ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}else{}if(p.ref_cnt==0&&p.is_class_variable==true){wr.out(" /** note: unused */",false);}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out(" **/ ;",true);}else{wr.out(";",false);wr.newline();}}}},{key:"disabledVarDef",value:function disabledVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;if(p.set_cnt>0||p.is_class_variable){wr.out("",false);}else{wr.out("",false);}wr.out(p.compiledName,false);if(node.children.length>2){wr.out(" = ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}else{}wr.out(";",false);wr.newline();}}},{key:"CreateCallExpression",value:function CreateCallExpression(node,ctx,wr){if(node.has_call){var obj=node.getSecond();var method=node.getThird();var _args4=node.children[3];wr.out("(",false);ctx.setInExpr();this.WalkNode(obj,ctx,wr);ctx.unsetInExpr();wr.out(")->",false);wr.out(method.vref,false);wr.out("(",false);ctx.setInExpr();for(var i=0;i<_args4.children.length;i++){var arg=_args4.children[i];if(i>0){wr.out(", ",false);}this.WalkNode(arg,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);if(ctx.expressionLevel()==0){wr.out(";",true);}}}},{key:"CustomOperator",value:function CustomOperator(node,ctx,wr){var fc=node.getFirst();var cmd=fc.vref;if(cmd=="return"){if(ctx.isInMain()){wr.out("return 0;",true);}else{wr.out("return;",true);}return;}if(cmd=="switch"){var condition=node.getSecond();var case_nodes=node.getThird();wr.newline();var p=new RangerAppParamDesc();p.name="caseMatched";p.value_type=5;ctx.defineVariable(p.name,p);var b_has_default=false;for(var i=0;i<case_nodes.children.length;i++){var ch=case_nodes.children[i];var blockName=ch.getFirst();if(blockName.vref=="default"){b_has_default=true;}};if(b_has_default){wr.out("bool "+p.compiledName+" = false;",true);}for(var i_1=0;i_1<case_nodes.children.length;i_1++){var ch_1=case_nodes.children[i_1];var blockName_1=ch_1.getFirst();if(blockName_1.vref=="default"){var defBlock=ch_1.getSecond();wr.out("if( ! ",false);wr.out(p.compiledName,false);wr.out(") {",true);wr.indent(1);this.WalkNode(defBlock,ctx,wr);wr.indent(-1);wr.out("}",true);}else{var caseValue=ch_1.getSecond();var caseBlock=ch_1.getThird();wr.out("if( ",false);this.WalkNode(condition,ctx,wr);wr.out(" == ",false);this.WalkNode(caseValue,ctx,wr);wr.out(") {",true);wr.indent(1);if(b_has_default){wr.out(p.compiledName+" = true;",true);}this.WalkNode(caseBlock,ctx,wr);wr.indent(-1);wr.out("}",true);}};}}},{key:"CreateMethodCall",value:function CreateMethodCall(node,ctx,wr){var obj=node.getFirst();var args=node.getSecond();ctx.setInExpr();this.WalkNode(obj,ctx,wr);ctx.unsetInExpr();wr.out("(",false);ctx.setInExpr();for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(", ",false);}this.WalkNode(arg,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);}},{key:"CreatePropertyGet",value:function CreatePropertyGet(node,ctx,wr){var obj=node.getSecond();var prop=node.getThird();wr.out("(",false);ctx.setInExpr();this.WalkNode(obj,ctx,wr);ctx.unsetInExpr();wr.out(")->",false);this.WalkNode(prop,ctx,wr);}},{key:"CreateLambdaCall",value:function CreateLambdaCall(node,ctx,wr){var fName=node.children[0];var givenArgs=node.children[1];var args=void 0;if(typeof fName.expression_value!=="undefined"&&fName.expression_value!=null){args=fName.expression_value.children[1];}else{var param=ctx.getVariableDef(fName.vref);args=param.nameNode.expression_value.children[1];}ctx.setInExpr();this.WalkNode(fName,ctx,wr);wr.out("(",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];var n=givenArgs.children[i];if(i>0){wr.out(", ",false);}if(arg.value_type!=0){this.WalkNode(n,ctx,wr);}};wr.out(")",false);ctx.unsetInExpr();if(ctx.expressionLevel()==0){wr.out(";",true);}}},{key:"CreateLambda",value:function CreateLambda(node,ctx,wr){this.import_lib("<functional>",ctx,wr);var lambdaCtx=node.lambda_ctx;/** unused: const fnNode = node.children[0] **/var args=node.children[1];var body=node.children[2];wr.out("[&",false);for(var i=0;i<lambdaCtx.captured_variables.length;i++){var cname=lambdaCtx.captured_variables[i];var vD=lambdaCtx.getVariableDef(cname);if(vD.varType==4){wr.out(", ",false);wr.out(vD.compiledName,false);}};wr.out("](",false);for(var i_1=0;i_1<args.children.length;i_1++){var arg=args.children[i_1];if(i_1>0){wr.out(", ",false);}this.writeTypeDef(arg,ctx,wr);wr.out(" ",false);wr.out(arg.vref,false);};wr.out(") mutable { ",true);wr.indent(1);lambdaCtx.restartExpressionLevel();for(var i_2=0;i_2<body.children.length;i_2++){var item=body.children[i_2];this.WalkNode(item,lambdaCtx,wr);};wr.newline();wr.indent(-1);wr.out("}",false);}},{key:"writeCppHeaderVar",value:function writeCppHeaderVar(node,ctx,wr,do_initialize){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;if(p.ref_cnt==0&&p.is_class_variable==false){wr.out("/** unused: ",false);}if(p.set_cnt>0||p.is_class_variable){wr.out("",false);}else{wr.out("",false);}this.writeTypeDef(p.nameNode,ctx,wr);wr.out(" ",false);wr.out(p.compiledName,false);if(p.ref_cnt==0&&p.is_class_variable==true){wr.out(" /** note: unused */",false);}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out(" **/ ;",true);}else{wr.out(";",false);wr.newline();}}}},{key:"writeArgsDef",value:function writeArgsDef(fnDesc,ctx,wr){for(var i=0;i<fnDesc.params.length;i++){var arg=fnDesc.params[i];if(i>0){wr.out(",",false);}wr.out(" ",false);this.writeTypeDef(arg.nameNode,ctx,wr);wr.out(" "+arg.compiledName+" ",false);};}},{key:"writeFnCall",value:function writeFnCall(node,ctx,wr){if(node.hasFnCall){var _fc3=node.getFirst();this.WriteVRef(_fc3,ctx,wr);wr.out("(",false);ctx.setInExpr();var givenArgs=node.getSecond();for(var i=0;i<node.fnDesc.params.length;i++){var arg=node.fnDesc.params[i];if(i>0){wr.out(", ",false);}if(i>=givenArgs.children.length){var defVal=arg.nameNode.getFlag("default");if(typeof defVal!=="undefined"&&defVal!=null){var fc_1=defVal.vref_annotation.getFirst();this.WalkNode(fc_1,ctx,wr);}else{ctx.addError(node,"Default argument was missing");}continue;}var n=givenArgs.children[i];this.WalkNode(n,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);if(ctx.expressionLevel()==0){wr.out(";",true);}}}},{key:"writeNewCall",value:function writeNewCall(node,ctx,wr){if(node.hasNewOper){var cl=node.clDesc;/** unused: const fc = node.getSecond() **/wr.out(" std::make_shared<",false);wr.out(node.clDesc.name,false);wr.out(">(",false);var constr=cl.constructor_fn;var givenArgs=node.getThird();if(typeof constr!=="undefined"&&constr!=null){for(var i=0;i<constr.params.length;i++){var arg=constr.params[i];var n=givenArgs.children[i];if(i>0){wr.out(", ",false);}if(true||typeof arg.nameNode!=="undefined"&&arg.nameNode!=null){this.WalkNode(n,ctx,wr);}};}wr.out(")",false);}}},{key:"writeArrayLiteral",value:function writeArrayLiteral(node,ctx,wr){var _this22=this;this.compiler.createPolyfill("\ntemplate< typename T, size_t N >\nstd::vector<T> r_make_vector_from_array( const T (&data)[N] )\n{\n return std::vector<T>(data, data+N);\n}\n",ctx,wr);wr.out("r_make_vector_from_array( (",false);wr.out(this.getObjectTypeString(node.eval_array_type,ctx),false);wr.out("[] ) {",false);operatorsOf.forEach_6(node.children,function(item,index){if(index>0){wr.out(", ",false);}_this22.WalkNode(item,ctx,wr);});wr.out("} )",false);}},{key:"writeClassHeader",value:function writeClassHeader(node,ctx,wr){var cl=node.clDesc;if(typeof cl==="undefined"){return;}var inheritedVars={};wr.out("class "+cl.name,false);if(cl.extends_classes.length>0){wr.out(" : ",false);for(var i=0;i<cl.extends_classes.length;i++){var pName=cl.extends_classes[i];wr.out("public ",false);wr.out(pName,false);var extC=ctx.findClass(pName);for(var i_1=0;i_1<extC.variables.length;i_1++){var pvar=extC.variables[i_1];inheritedVars[pvar.name]=true;};};}else{wr.out(" : public std::enable_shared_from_this<"+cl.name+"> ",false);}wr.out(" { ",true);wr.indent(1);wr.out("public :",true);wr.indent(1);for(var i_2=0;i_2<cl.variables.length;i_2++){var pvar_1=cl.variables[i_2];if((typeof inheritedVars[pvar_1.name]!="undefined"&&inheritedVars.hasOwnProperty(pvar_1.name))==false){this.writeCppHeaderVar(pvar_1.node,ctx,wr,false);}};wr.out("/* class constructor */ ",true);wr.out(cl.name+"(",false);if(cl.has_constructor){var constr=cl.constructor_fn;this.writeArgsDef(constr,ctx,wr);}wr.out(" );",true);for(var i_3=0;i_3<cl.static_methods.length;i_3++){var variant=cl.static_methods[i_3];if(i_3==0){wr.out("/* static methods */ ",true);}wr.out("static ",false);this.writeTypeDef(variant.nameNode,ctx,wr);wr.out(" "+variant.compiledName+"(",false);this.writeArgsDef(variant,ctx,wr);wr.out(");",true);};for(var i_4=0;i_4<cl.defined_variants.length;i_4++){var fnVar=cl.defined_variants[i_4];if(i_4==0){wr.out("/* instance methods */ ",true);}var mVs=cl.method_variants[fnVar];for(var i_5=0;i_5<mVs.variants.length;i_5++){var variant_1=mVs.variants[i_5];if(cl.is_inherited){wr.out("virtual ",false);}this.writeTypeDef(variant_1.nameNode,ctx,wr);wr.out(" "+variant_1.compiledName+"(",false);this.writeArgsDef(variant_1,ctx,wr);wr.out(");",true);};};wr.indent(-1);wr.indent(-1);wr.out("};",true);}},{key:"CreateUnions",value:function CreateUnions(parser,ctx,wr){var _this23=this;var root=ctx.getRoot();operatorsOf_4.forEach_5(root.definedClasses,function(item,index){if(item.is_union){_this23.compiler.installFile("variant.hpp",ctx,wr);ctx.addPluginNode("makefile",CodeNode.fromList([CodeNode.fromList([CodeNode.vref1("dep"),CodeNode.newStr("variant.hpp"),CodeNode.newStr("https://github.com/mpark/variant/releases/download/v1.2.2/variant.hpp")])]));wr.out("typedef mpark::variant<",false);wr.indent(1);var cnt=0;operatorsOf.forEach_3(item.is_union_of,function(item,index){if(ctx.isDefinedClass(item)){var cl=ctx.findClass(item);if(false==cl.isNormalClass()){return;}if(cnt>0){wr.out(", ",false);}wr.out(_this23.getObjectTypeString(item,ctx),false);cnt=cnt+1;}else{if(cnt>0){wr.out(", ",false);}wr.out(_this23.getObjectTypeString(item,ctx),false);cnt=cnt+1;}});wr.indent(-1);wr.out("> r_union_"+index+";",true);wr.addImport("\"variant.hpp\"");}});}},{key:"writeClass",value:function writeClass(node,ctx,orig_wr){var cl=node.clDesc;var wr=orig_wr;if(typeof cl==="undefined"){return;}this.import_lib("<memory>",ctx,wr);for(var i=0;i<cl.capturedLocals.length;i++){var dd=cl.capturedLocals[i];if(dd.is_class_variable==false){if(dd.set_cnt>0){if(ctx.hasCompilerFlag("dont-allow-mutate")){ctx.addError(dd.nameNode,"Mutating captured variable is not allowed");return;}}}};if(this.header_created==false){wr.createTag("c++Imports");wr.out("",true);wr.out("// define classes here to avoid compiler errors",true);wr.createTag("c++ClassDefs");wr.out("",true);wr.createTag("c++unions");wr.createTag("utilities");wr.out("",true);wr.out("// header definitions",true);wr.createTag("c++Header");wr.out("",true);wr.out("int __g_argc;",true);wr.out("char **__g_argv;",true);this.CreateUnions(this.compiler.parser,ctx,wr.getTag("c++unions"));this.header_created=true;}var classWriter=orig_wr.getTag("c++ClassDefs");var headerWriter=orig_wr.getTag("c++Header");/** unused: const projectName = "project" **/classWriter.out("class "+cl.name+";",true);this.writeClassHeader(node,ctx,headerWriter);wr.out(cl.name+"::"+cl.name+"(",false);if(cl.has_constructor){var constr=cl.constructor_fn;this.writeArgsDef(constr,ctx,wr);}wr.out(" ) ",false);if(cl.extends_classes.length>0){for(var i_1=0;i_1<cl.extends_classes.length;i_1++){var pName=cl.extends_classes[i_1];var pcc=ctx.findClass(pName);if(pcc.has_constructor){wr.out(" : "+pcc.name+"(",false);var constr_1=cl.constructor_fn;for(var i_2=0;i_2<constr_1.params.length;i_2++){var arg=constr_1.params[i_2];if(i_2>0){wr.out(",",false);}wr.out(" ",false);wr.out(" "+arg.name+" ",false);};wr.out(")",false);}};}wr.out("{",true);wr.indent(1);for(var i_3=0;i_3<cl.variables.length;i_3++){var pvar=cl.variables[i_3];var nn=pvar.node;if(nn.children.length>2){var valueNode=nn.children[2];wr.out("this->"+pvar.compiledName+" = ",false);this.WalkNode(valueNode,ctx,wr);wr.out(";",true);}};if(cl.has_constructor){var constr_2=cl.constructor_fn;wr.newline();var subCtx=constr_2.fnCtx;subCtx.is_function=true;this.WalkNode(constr_2.fnBody,subCtx,wr);wr.newline();}wr.indent(-1);wr.out("}",true);for(var i_4=0;i_4<cl.static_methods.length;i_4++){var variant=cl.static_methods[i_4];if(variant.nameNode.hasFlag("main")){continue;}this.writeTypeDef(variant.nameNode,ctx,wr);wr.out(" ",false);wr.out(" "+cl.name+"::",false);wr.out(variant.compiledName+"(",false);this.writeArgsDef(variant,ctx,wr);wr.out(") {",true);wr.indent(1);wr.newline();var subCtx_1=variant.fnCtx;subCtx_1.is_function=true;this.WalkNode(variant.fnBody,subCtx_1,wr);wr.newline();wr.indent(-1);wr.out("}",true);};for(var i_5=0;i_5<cl.defined_variants.length;i_5++){var fnVar=cl.defined_variants[i_5];var mVs=cl.method_variants[fnVar];for(var i_6=0;i_6<mVs.variants.length;i_6++){var variant_1=mVs.variants[i_6];this.writeTypeDef(variant_1.nameNode,ctx,wr);wr.out(" ",false);wr.out(" "+cl.name+"::",false);wr.out(variant_1.compiledName+"(",false);this.writeArgsDef(variant_1,ctx,wr);wr.out(") {",true);wr.indent(1);wr.newline();var subCtx_2=variant_1.fnCtx;subCtx_2.is_function=true;this.WalkNode(variant_1.fnBody,subCtx_2,wr);wr.newline();wr.indent(-1);wr.out("}",true);};};for(var i_7=0;i_7<cl.static_methods.length;i_7++){var variant_2=cl.static_methods[i_7];if(variant_2.nameNode.hasFlag("main")&&variant_2.nameNode.code.filename==ctx.getRootFile()){ctx.setCompilerSetting("mainclass",cl.name);wr.out("int main(int argc, char* argv[]) {",true);wr.indent(1);wr.out("__g_argc = argc;",true);wr.out("__g_argv = argv;",true);var subCtx_3=variant_2.fnCtx;subCtx_3.in_main=true;subCtx_3.is_function=true;this.WalkNode(variant_2.fnBody,subCtx_3,wr);wr.newline();wr.out("return 0;",true);wr.indent(-1);wr.out("}",true);}};}}]);return RangerCppClassWriter;}(RangerGenericClassWriter);var RangerKotlinClassWriter=function(_RangerGenericClassWr4){_inherits(RangerKotlinClassWriter,_RangerGenericClassWr4);function RangerKotlinClassWriter(){_classCallCheck(this,RangerKotlinClassWriter);return _possibleConstructorReturn(this,(RangerKotlinClassWriter.__proto__||Object.getPrototypeOf(RangerKotlinClassWriter)).call(this));}_createClass(RangerKotlinClassWriter,[{key:"WriteScalarValue",value:function WriteScalarValue(node,ctx,wr){switch(node.value_type){case 2:wr.out(node.getParsedString(),false);break;case 4:var s=this.EncodeString(node,ctx,wr);wr.out("\""+s+"\"",false);break;case 3:wr.out(""+node.int_value,false);break;case 5:if(node.boolean_value){wr.out("true",false);}else{wr.out("false",false);}break;};}},{key:"adjustType",value:function adjustType(tn){if(tn=="this"){return"this";}return tn;}},{key:"getObjectTypeString",value:function getObjectTypeString(type_string,ctx){switch(type_string){case"int":return"Integer";case"string":return"String";case"chararray":return"CharArray";case"char":return"char";case"boolean":return"Boolean";case"double":return"Double";};return type_string;}},{key:"getTypeString",value:function getTypeString(type_string){switch(type_string){case"int":return"Integer";case"string":return"String";case"chararray":return"CharArray";case"char":return"Char";case"boolean":return"Boolean";case"double":return"Double";};return type_string;}},{key:"writeTypeDef",value:function writeTypeDef(node,ctx,wr){var v_type=node.value_type;if(node.eval_type!=0){v_type=node.eval_type;}switch(v_type){case 13:wr.out("Int",false);break;case 3:wr.out("Int",false);break;case 2:wr.out("Double",false);break;case 14:wr.out("Char",false);break;case 15:wr.out("CharArray",false);break;case 4:wr.out("String",false);break;case 5:wr.out("Boolean",false);break;case 7:wr.out("MutableMap<"+this.getObjectTypeString(node.key_type,ctx)+","+this.getObjectTypeString(node.array_type,ctx)+">",false);break;case 6:wr.out("MutableList<"+this.getObjectTypeString(node.array_type,ctx)+">",false);break;default:if(node.type_name=="void"){wr.out("Unit",false);}else{wr.out(this.getTypeString(node.type_name),false);}break;};if(node.hasFlag("optional")){wr.out("?",false);}}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){if(node.eval_type==13){if(node.ns.length>1){var rootObjName=node.ns[0];var enumName=node.ns[1];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){wr.out(""+e.values[enumName],false);return;}}}if(node.nsp.length>0){for(var i=0;i<node.nsp.length;i++){var p=node.nsp[i];if(i>0){wr.out(".",false);}if(p.compiledName.length>0){wr.out(this.adjustType(p.compiledName),false);}else{if(p.name.length>0){wr.out(this.adjustType(p.name),false);}else{wr.out(this.adjustType(node.ns[i]),false);}}if(i==0){if(p.nameNode.hasFlag("optional")){wr.out("!!",false);}}};return;}if(node.hasParamDesc){var p_1=node.paramDesc;wr.out(p_1.compiledName,false);return;}for(var i_1=0;i_1<node.ns.length;i_1++){var part=node.ns[i_1];if(i_1>0){wr.out(".",false);}wr.out(this.adjustType(part),false);};}},{key:"writeVarDef",value:function writeVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;if(p.ref_cnt==0&&p.is_class_variable==false){wr.out("/** unused: ",false);}if(p.set_cnt>0||p.is_class_variable){wr.out("var ",false);}else{wr.out("val ",false);}wr.out(p.compiledName,false);wr.out(" : ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out(" ",false);if(node.children.length>2){wr.out(" = ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}else{if(nn.value_type==6){wr.out(" = arrayListOf()",false);}if(nn.value_type==7){wr.out(" = hashMapOf()",false);}}if(p.ref_cnt==0&&p.is_class_variable==true){wr.out(" /** note: unused */",false);}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out(" **/ ;",true);}else{wr.out(";",false);wr.newline();}}}},{key:"writeArgsDef",value:function writeArgsDef(fnDesc,ctx,wr){for(var i=0;i<fnDesc.params.length;i++){var arg=fnDesc.params[i];if(i>0){wr.out(",",false);}wr.out(" ",false);wr.out(arg.name+" : ",false);this.writeTypeDef(arg.nameNode,ctx,wr);};}},{key:"writeFnCall",value:function writeFnCall(node,ctx,wr){if(node.hasFnCall){var _fc4=node.getFirst();this.WriteVRef(_fc4,ctx,wr);wr.out("(",false);var givenArgs=node.getSecond();for(var i=0;i<node.fnDesc.params.length;i++){var arg=node.fnDesc.params[i];if(i>0){wr.out(", ",false);}if(givenArgs.children.length<=i){var defVal=arg.nameNode.getFlag("default");if(typeof defVal!=="undefined"&&defVal!=null){var fc_1=defVal.vref_annotation.getFirst();this.WalkNode(fc_1,ctx,wr);}else{ctx.addError(node,"Default argument was missing");}continue;}var n=givenArgs.children[i];this.WalkNode(n,ctx,wr);};wr.out(")",false);if(ctx.expressionLevel()==0){wr.out(";",true);}}}},{key:"writeNewCall",value:function writeNewCall(node,ctx,wr){if(node.hasNewOper){var cl=node.clDesc;/** unused: const fc = node.getSecond() **/wr.out(" ",false);wr.out(node.clDesc.name,false);wr.out("(",false);var constr=cl.constructor_fn;var givenArgs=node.getThird();if(typeof constr!=="undefined"&&constr!=null){for(var i=0;i<constr.params.length;i++){var arg=constr.params[i];var n=givenArgs.children[i];if(i>0){wr.out(", ",false);}if(true||typeof arg.nameNode!=="undefined"&&arg.nameNode!=null){this.WalkNode(n,ctx,wr);}};}wr.out(")",false);}}},{key:"writeClass",value:function writeClass(node,ctx,orig_wr){var cl=node.clDesc;if(typeof cl==="undefined"){return;}var wr=orig_wr;/** unused: const importFork = wr.fork() **/wr.out("",true);wr.out("class "+cl.name,false);if(cl.has_constructor){var constr=cl.constructor_fn;wr.out("(",false);this.writeArgsDef(constr,ctx,wr);wr.out(" ) ",true);}wr.out(" {",true);wr.indent(1);for(var i=0;i<cl.variables.length;i++){var pvar=cl.variables[i];this.writeVarDef(pvar.node,ctx,wr);};if(cl.has_constructor){var constr_1=cl.constructor_fn;wr.out("",true);wr.out("init {",true);wr.indent(1);wr.newline();var subCtx=constr_1.fnCtx;subCtx.is_function=true;this.WalkNode(constr_1.fnBody,subCtx,wr);wr.newline();wr.indent(-1);wr.out("}",true);}if(cl.static_methods.length>0){wr.out("companion object {",true);wr.indent(1);}for(var i_1=0;i_1<cl.static_methods.length;i_1++){var variant=cl.static_methods[i_1];wr.out("",true);if(variant.nameNode.hasFlag("main")){continue;}wr.out("fun ",false);wr.out(" ",false);wr.out(variant.name+"(",false);this.writeArgsDef(variant,ctx,wr);wr.out(") : ",false);this.writeTypeDef(variant.nameNode,ctx,wr);wr.out(" {",true);wr.indent(1);wr.newline();var subCtx_1=variant.fnCtx;subCtx_1.is_function=true;this.WalkNode(variant.fnBody,subCtx_1,wr);wr.newline();wr.indent(-1);wr.out("}",true);};if(cl.static_methods.length>0){wr.indent(-1);wr.out("}",true);}for(var i_2=0;i_2<cl.defined_variants.length;i_2++){var fnVar=cl.defined_variants[i_2];var mVs=cl.method_variants[fnVar];for(var i_3=0;i_3<mVs.variants.length;i_3++){var variant_1=mVs.variants[i_3];wr.out("",true);wr.out("fun ",false);wr.out(" ",false);wr.out(variant_1.name+"(",false);this.writeArgsDef(variant_1,ctx,wr);wr.out(") : ",false);this.writeTypeDef(variant_1.nameNode,ctx,wr);wr.out(" {",true);wr.indent(1);wr.newline();var subCtx_2=variant_1.fnCtx;subCtx_2.is_function=true;this.WalkNode(variant_1.fnBody,subCtx_2,wr);wr.newline();wr.indent(-1);wr.out("}",true);};};wr.indent(-1);wr.out("}",true);for(var i_4=0;i_4<cl.static_methods.length;i_4++){var variant_2=cl.static_methods[i_4];wr.out("",true);if(variant_2.nameNode.hasFlag("main")&&variant_2.nameNode.code.filename==ctx.getRootFile()){wr.out("fun main(args : Array<String>) {",true);wr.indent(1);wr.newline();var subCtx_3=variant_2.fnCtx;subCtx_3.is_function=true;this.WalkNode(variant_2.fnBody,subCtx_3,wr);wr.newline();wr.indent(-1);wr.out("}",true);}};}}]);return RangerKotlinClassWriter;}(RangerGenericClassWriter);var RangerCSharpClassWriter=function(_RangerGenericClassWr5){_inherits(RangerCSharpClassWriter,_RangerGenericClassWr5);function RangerCSharpClassWriter(){_classCallCheck(this,RangerCSharpClassWriter);return _possibleConstructorReturn(this,(RangerCSharpClassWriter.__proto__||Object.getPrototypeOf(RangerCSharpClassWriter)).call(this));}_createClass(RangerCSharpClassWriter,[{key:"adjustType",value:function adjustType(tn){if(tn=="this"){return"this";}return tn;}},{key:"getObjectTypeString",value:function getObjectTypeString(type_string,ctx){if(ctx.isDefinedClass(type_string)){var cc=ctx.findClass(type_string);if(cc.is_union){return"dynamic";}if(cc.is_system){var sysName=cc.systemNames["csharp"];if(typeof sysName!=="undefined"&&sysName!=null){return sysName;}else{var node=new CodeNode(new SourceCode(""),0,0);ctx.addError(node,"No system class "+type_string+"defined for C# ");}}}switch(type_string){case"int":return"int";case"string":return"String";case"chararray":return"byte[]";case"char":return"byte";case"boolean":return"bool";case"double":return"double";};return type_string;}},{key:"getTypeString",value:function getTypeString(type_string){switch(type_string){case"int":return"int";case"string":return"String";case"chararray":return"byte[]";case"char":return"byte";case"boolean":return"bool";case"double":return"double";};return type_string;}},{key:"writeLambdaType",value:function writeLambdaType(expression_value,ctx,wr){var rv=expression_value.children[0];var sec=expression_value.children[1];/** unused: const fc = sec.getFirst() **/var is_void=false;if(rv.type_name=="void"||rv.eval_type_name=="void"){is_void=true;}if(is_void){wr.out("Action",false);if(sec.children.length>0){wr.out("<",false);}}else{wr.out("Func<",false);}for(var i=0;i<sec.children.length;i++){var arg=sec.children[i];if(i>0){wr.out(", ",false);}this.writeTypeDef(arg,ctx,wr);};if(is_void==false){if(sec.children.length>0){wr.out(", ",false);}this.writeTypeDef(rv,ctx,wr);}if(is_void){if(sec.children.length>0){wr.out(">",false);}}else{wr.out(">",false);}}},{key:"writeTypeDef",value:function writeTypeDef(node,ctx,wr){var v_type=node.value_type;var t_name=node.type_name;var a_name=node.array_type;var k_name=node.key_type;if(v_type==10||v_type==11||v_type==0){v_type=node.typeNameAsType(ctx);}if(node.eval_type!=0){v_type=node.eval_type;if(node.eval_type_name.length>0){t_name=node.eval_type_name;}if(node.eval_array_type.length>0){a_name=node.eval_array_type;}if(node.eval_key_type.length>0){k_name=node.eval_key_type;}}switch(v_type){case 17:this.writeLambdaType(node.expression_value,ctx,wr);break;case 13:wr.out("int",false);break;case 3:wr.out("int",false);break;case 2:wr.out("double",false);break;case 14:wr.out("byte",false);break;case 15:wr.out("byte[]",false);break;case 4:wr.out("String",false);break;case 5:wr.out("bool",false);break;case 7:wr.out("Dictionary<"+this.getObjectTypeString(k_name,ctx)+","+this.getObjectTypeString(a_name,ctx)+">",false);wr.addImport("System.Collections");wr.addImport("System.Collections.Generic");break;case 6:wr.out("List<"+this.getObjectTypeString(a_name,ctx)+">",false);wr.addImport("System.Collections");wr.addImport("System.Collections.Generic");break;default:if(node.type_name=="void"){wr.out("void",false);return;}if(ctx.isDefinedClass(t_name)){var cc=ctx.findClass(t_name);if(cc.is_union){wr.out("dynamic",false);return;}if(cc.is_system){var sysName=cc.systemNames["csharp"];if(typeof sysName!=="undefined"&&sysName!=null){wr.out(sysName,false);}else{ctx.addError(node,"No system class "+t_name+"defined for C# ");}return;}}wr.out(this.getTypeString(node.type_name),false);break;};}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){if(node.eval_type==13){if(node.ns.length>1){var rootObjName=node.ns[0];var enumName=node.ns[1];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){wr.out(""+e.values[enumName],false);return;}}}if(node.nsp.length>0){for(var i=0;i<node.nsp.length;i++){var p=node.nsp[i];if(i>0){wr.out(".",false);}if(i==0){var part=node.ns[0];if(part=="this"){if(ctx.inLambda()){wr.out("this",false);}else{wr.out("this",false);}continue;}}if(i==0){if(p.nameNode.hasFlag("optional")){}}if(p.compiledName.length>0){wr.out(this.adjustType(p.compiledName),false);}else{if(p.name.length>0){wr.out(this.adjustType(p.name),false);}else{wr.out(this.adjustType(node.ns[i]),false);}}};return;}if(node.hasParamDesc){var p_1=node.paramDesc;wr.out(p_1.compiledName,false);return;}for(var i_1=0;i_1<node.ns.length;i_1++){var part_1=node.ns[i_1];if(i_1>0){wr.out(".",false);}wr.out(this.adjustType(part_1),false);};}},{key:"writeVarDef",value:function writeVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;if(p.ref_cnt==0&&p.is_class_variable==false){wr.out("/** unused: ",false);}if(p.set_cnt>0||p.is_class_variable){wr.out("",false);}else{wr.out("",false);}this.writeTypeDef(p.nameNode,ctx,wr);wr.out(" ",false);wr.out(p.compiledName,false);if(node.children.length>2){wr.out(" = ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}else{if(nn.value_type==6){wr.out(" = new ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out("()",false);}if(nn.value_type==7){wr.out(" = new ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out("()",false);}}if(p.ref_cnt==0&&p.is_class_variable==true){wr.out(" /** note: unused */",false);}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out(" **/ ;",true);}else{wr.out(";",false);wr.newline();}}}},{key:"CreateLambda",value:function CreateLambda(node,ctx,wr){var lambdaCtx=node.lambda_ctx;/** unused: const fName = node.children[1] **/var body=node.children[2];var args=node.children[1];wr.out("(",false);wr.out("(",false);this.writeLambdaType(node,ctx,wr);wr.out(")",false);wr.out("(",false);wr.out("(",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(", ",false);}if(arg.flow_done==false){this.compiler.parser.WalkNode(arg,lambdaCtx,wr);}this.WalkNode(arg,lambdaCtx,wr);};wr.out(")",false);wr.out(" => { ",true);wr.indent(1);lambdaCtx.restartExpressionLevel();for(var i_1=0;i_1<body.children.length;i_1++){var item=body.children[i_1];this.WalkNode(item,lambdaCtx,wr);};wr.newline();wr.indent(-1);wr.out("}",false);wr.out("))",false);if(ctx.expressionLevel()==0){wr.out(";",true);}}},{key:"writeArgsDef",value:function writeArgsDef(fnDesc,ctx,wr){for(var i=0;i<fnDesc.params.length;i++){var arg=fnDesc.params[i];if(i>0){wr.out(",",false);}wr.out(" ",false);this.writeTypeDef(arg.nameNode,ctx,wr);wr.out(" "+arg.compiledName+" ",false);};}},{key:"writeArrayLiteral",value:function writeArrayLiteral(node,ctx,wr){var _this26=this;wr.out("new List<",false);wr.out(this.getObjectTypeString(node.eval_array_type,ctx),false);wr.out("> {",false);operatorsOf.forEach_6(node.children,function(item,index){if(index>0){wr.out(", ",false);}_this26.WalkNode(item,ctx,wr);});wr.out("}",false);}},{key:"writeClass",value:function writeClass(node,ctx,orig_wr){var cl=node.clDesc;if(typeof cl==="undefined"){return;}var wr=orig_wr;this.import_lib("System",ctx,wr);wr.out("class "+cl.name+" ",false);if(cl.extends_classes.length>0){wr.out(" : ",false);for(var i=0;i<cl.extends_classes.length;i++){var pName=cl.extends_classes[i];wr.out(pName,false);};}wr.out(" {",true);wr.indent(1);wr.createTag("utilities");for(var i_1=0;i_1<cl.variables.length;i_1++){var pvar=cl.variables[i_1];wr.out("public ",false);this.writeVarDef(pvar.node,ctx,wr);};if(cl.has_constructor){var constr=cl.constructor_fn;wr.out(cl.name+"(",false);this.writeArgsDef(constr,ctx,wr);wr.out(" ) {",true);wr.indent(1);wr.newline();var subCtx=constr.fnCtx;subCtx.is_function=true;this.WalkNode(constr.fnBody,subCtx,wr);wr.newline();wr.indent(-1);wr.out("}",true);}for(var i_2=0;i_2<cl.static_methods.length;i_2++){var variant=cl.static_methods[i_2];if(variant.nameNode.hasFlag("main")&&variant.nameNode.code.filename!=ctx.getRootFile()){continue;}if(variant.nameNode.hasFlag("main")){wr.out("static void Main( string [] args ) {",true);}else{wr.out("public static ",false);this.writeTypeDef(variant.nameNode,ctx,wr);wr.out(" ",false);wr.out(variant.name+"(",false);this.writeArgsDef(variant,ctx,wr);wr.out(") {",true);}wr.indent(1);wr.newline();var subCtx_1=variant.fnCtx;subCtx_1.is_function=true;this.WalkNode(variant.fnBody,subCtx_1,wr);wr.newline();wr.indent(-1);wr.out("}",true);};for(var i_3=0;i_3<cl.defined_variants.length;i_3++){var fnVar=cl.defined_variants[i_3];var mVs=cl.method_variants[fnVar];for(var i_4=0;i_4<mVs.variants.length;i_4++){var variant_1=mVs.variants[i_4];wr.out("public ",false);this.writeTypeDef(variant_1.nameNode,ctx,wr);wr.out(" ",false);wr.out(variant_1.name+"(",false);this.writeArgsDef(variant_1,ctx,wr);wr.out(") {",true);wr.indent(1);var subCtx_2=variant_1.fnCtx;subCtx_2.is_function=true;this.WalkNode(variant_1.fnBody,subCtx_2,wr);wr.indent(-1);wr.out("}",true);};};wr.indent(-1);wr.out("}",true);}}]);return RangerCSharpClassWriter;}(RangerGenericClassWriter);var RangerScalaClassWriter=function(_RangerGenericClassWr6){_inherits(RangerScalaClassWriter,_RangerGenericClassWr6);function RangerScalaClassWriter(){_classCallCheck(this,RangerScalaClassWriter);var _this27=_possibleConstructorReturn(this,(RangerScalaClassWriter.__proto__||Object.getPrototypeOf(RangerScalaClassWriter)).call(this));_this27.init_done=false;return _this27;}_createClass(RangerScalaClassWriter,[{key:"getObjectTypeString",value:function getObjectTypeString(type_string,ctx){if(ctx.isDefinedClass(type_string)){var cc=ctx.findClass(type_string);if(cc.is_union){return"Any";}}switch(type_string){case"int":return"Int";case"string":return"String";case"boolean":return"Boolean";case"double":return"Double";case"chararray":return"Array[Byte]";case"char":return"byte";};return type_string;}},{key:"getTypeString",value:function getTypeString(type_string){switch(type_string){case"int":return"Int";case"string":return"String";case"boolean":return"Boolean";case"double":return"Double";case"chararray":return"Array[Byte]";case"char":return"byte";};return type_string;}},{key:"writeTypeDef",value:function writeTypeDef(node,ctx,wr){if(node.hasFlag("optional")){wr.out("Option[",false);}var v_type=node.value_type;var t_name=node.type_name;var a_name=node.array_type;var k_name=node.key_type;if(v_type==10||v_type==11||v_type==0){v_type=node.typeNameAsType(ctx);}if(node.eval_type!=0){v_type=node.eval_type;if(node.eval_type_name.length>0){t_name=node.eval_type_name;}if(node.eval_array_type.length>0){a_name=node.eval_array_type;}if(node.eval_key_type.length>0){k_name=node.eval_key_type;}}switch(v_type){case 17:var rv=node.expression_value.children[0];var sec=node.expression_value.children[1];/** unused: const fc = sec.getFirst() **/var is_void=false;if(rv.type_name=="void"||rv.eval_type_name=="void"){is_void=true;}wr.out("(",false);for(var i=0;i<sec.children.length;i++){var arg=sec.children[i];if(i>0){wr.out(", ",false);}this.writeTypeDef(arg,ctx,wr);};wr.out(")",false);if(is_void){wr.out("=> Unit",false);}else{wr.out("=> ",false);this.writeTypeDef(rv,ctx,wr);}break;case 13:wr.out("Int",false);break;case 3:wr.out("Int",false);break;case 2:wr.out("Double",false);break;case 4:wr.out("String",false);break;case 5:wr.out("Boolean",false);break;case 14:wr.out("Byte",false);break;case 15:wr.out("Array[Byte]",false);break;case 7:wr.addImport("scala.collection.mutable");wr.out("collection.mutable.HashMap["+this.getObjectTypeString(k_name,ctx)+", "+this.getObjectTypeString(a_name,ctx)+"]",false);break;case 6:wr.addImport("scala.collection.mutable");wr.out("collection.mutable.ArrayBuffer["+this.getObjectTypeString(a_name,ctx)+"]",false);break;default:if(ctx.isDefinedClass(t_name)){var cc=ctx.findClass(t_name);if(cc.is_union){wr.out("Any",false);if(node.hasFlag("optional")){wr.out("]",false);}return;}}if(node.type_name=="void"){wr.out("Unit",false);return;}wr.out(this.getTypeString(t_name),false);break;};if(node.hasFlag("optional")){wr.out("]",false);}}},{key:"writeTypeDefNoOption",value:function writeTypeDefNoOption(node,ctx,wr){var v_type=node.value_type;if(node.eval_type!=0){v_type=node.eval_type;}switch(v_type){case 17:var rv=node.expression_value.children[0];var sec=node.expression_value.children[1];/** unused: const fc = sec.getFirst() **/var is_void=false;if(rv.type_name=="void"||rv.eval_type_name=="void"){is_void=true;}wr.out("(",false);for(var i=0;i<sec.children.length;i++){var arg=sec.children[i];if(i>0){wr.out(", ",false);}this.writeTypeDef(arg,ctx,wr);};wr.out(")",false);if(is_void){wr.out("=> Unit",false);}else{wr.out("=> ",false);this.writeTypeDef(rv,ctx,wr);}break;case 13:wr.out("Int",false);break;case 3:wr.out("Int",false);break;case 2:wr.out("Double",false);break;case 4:wr.out("String",false);break;case 5:wr.out("Boolean",false);break;case 14:wr.out("Byte",false);break;case 15:wr.out("Array[Byte]",false);break;case 7:wr.addImport("scala.collection.mutable");wr.out("collection.mutable.HashMap["+this.getObjectTypeString(node.key_type,ctx)+", "+this.getObjectTypeString(node.array_type,ctx)+"]",false);break;case 6:wr.addImport("scala.collection.mutable");wr.out("collection.mutable.ArrayBuffer["+this.getObjectTypeString(node.array_type,ctx)+"]",false);break;default:if(node.type_name=="void"){wr.out("Unit",false);return;}wr.out(this.getTypeString(node.type_name),false);break;};}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){if(node.vref=="this"){wr.out("this",false);return;}if(node.eval_type==13){if(node.ns.length>1){var rootObjName=node.ns[0];var enumName=node.ns[1];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){wr.out(""+e.values[enumName],false);return;}}}if(node.nsp.length>0){for(var i=0;i<node.nsp.length;i++){var p=node.nsp[i];if(i==0){var part=node.ns[0];if(part=="this"){wr.out("this",false);continue;}}if(i>0){wr.out(".",false);}if(p.compiledName.length>0){wr.out(this.adjustType(p.compiledName),false);}else{if(p.name.length>0){wr.out(this.adjustType(p.name),false);}else{wr.out(this.adjustType(node.ns[i]),false);}}if(i==0){if(p.nameNode.hasFlag("optional")){wr.out(".get",false);}}};return;}if(node.hasParamDesc){var p_1=node.paramDesc;wr.out(p_1.compiledName,false);return;}for(var i_1=0;i_1<node.ns.length;i_1++){var part_1=node.ns[i_1];if(i_1>0){wr.out(".",false);}wr.out(this.adjustType(part_1),false);};}},{key:"writeVarDef",value:function writeVarDef(node,ctx,wr){if(node.hasParamDesc){var p=node.paramDesc;/** unused: const nn = node.children[1] **/if(p.ref_cnt==0&&p.is_class_variable==false){wr.out("/** unused ",false);}if(p.set_cnt>0||p.is_class_variable){wr.out("var "+p.compiledName+" ",false);}else{wr.out("val "+p.compiledName+" ",false);}var ti_ok=ctx.canUseTypeInference(p.nameNode);if(false==ti_ok||false==p.nameNode.hasFlag("optional")&&node.children.length==2){wr.out(": ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out(" ",false);}if(node.children.length>2){wr.out("= ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}else{var b_inited=false;if(p.nameNode.value_type==6){b_inited=true;wr.out("= new collection.mutable.ArrayBuffer()",false);}if(p.nameNode.value_type==7){b_inited=true;wr.out("= new collection.mutable.HashMap()",false);}if(p.nameNode.hasFlag("optional")){wr.out(" = Option.empty[",false);this.writeTypeDefNoOption(p.nameNode,ctx,wr);wr.out("]",false);}else{if(b_inited==false){wr.out("= _",false);}}}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out("**/ ",true);}else{wr.newline();}}}},{key:"writeArgsDef",value:function writeArgsDef(fnDesc,ctx,wr){for(var i=0;i<fnDesc.params.length;i++){var arg=fnDesc.params[i];if(i>0){wr.out(",",false);}wr.out(" ",false);wr.out(arg.compiledName+" : ",false);this.writeTypeDef(arg.nameNode,ctx,wr);};}},{key:"writeFnEnd",value:function writeFnEnd(node,ctx,wr){wr.indent(-1);wr.out("} catch {",true);wr.indent(1);wr.out("case rv:ScalaReturnValue => {",true);wr.indent(1);wr.out("__returns__ = rv.value",true);wr.indent(-1);wr.out("}",true);wr.indent(-1);wr.out("}",true);wr.out("__returns__.asInstanceOf[",false);this.writeTypeDef(node,ctx,wr);wr.out("]",true);}},{key:"writeFnStart",value:function writeFnStart(node,ctx,wr){wr.out("var __returns__ : Any = null",true);wr.out("try {",true);wr.indent(1);}},{key:"CustomOperator",value:function CustomOperator(node,ctx,wr){var fc=node.getFirst();var cmd=fc.vref;if(cmd=="for"){var listNode=node.children[1];var itemNode=node.children[2];var indexNode=node.children[3];var bodyNode=node.children[4];var break_cnt=0;var continue_cnt=0;bodyNode.forTree(function(item,i){if(item.isFirstVref("break")){break_cnt=break_cnt+1;}if(item.isFirstVref("continue")){continue_cnt=continue_cnt+1;}});if(continue_cnt>0){ctx.addError(node,"oops, sorry. Currently Scala output can not handle for-loops with continue :/");return;}if(break_cnt>0){wr.addImport("scala.util.control._");wr.out("try {",true);wr.indent(1);wr.out("val __break__ = new Breaks",true);wr.out("__break__.breakable {",true);wr.indent(1);}wr.out("for( ",false);this.WalkNode(indexNode,ctx,wr);wr.out(" <- 0 until ",false);this.WalkNode(listNode,ctx,wr);wr.out(".length ) {",true);wr.indent(1);wr.out("val ",false);this.WalkNode(itemNode,ctx,wr);wr.out(" = ",false);this.WalkNode(listNode,ctx,wr);wr.out("(",false);this.WalkNode(indexNode,ctx,wr);wr.out(")",true);this.WalkNode(bodyNode,ctx,wr);wr.indent(-1);wr.out("}",true);if(break_cnt>0){wr.indent(-1);wr.out("}",true);wr.indent(-1);wr.out("}",true);}return;}if(cmd=="try"){var tryBlock=node.getSecond();var catchBlock=node.getThird();wr.out("try {",true);wr.indent(1);this.WalkNode(tryBlock,ctx,wr);wr.indent(-1);wr.out("} catch {",true);wr.indent(1);if(ctx.inLambda()){wr.out("case rv:ScalaReturnValue => {",true);wr.indent(1);wr.out("throw new ScalaReturnValue(rv.value)",true);wr.indent(-1);wr.out("}",true);}wr.out("case e: Exception => {",true);wr.indent(1);this.WalkNode(catchBlock,ctx,wr);wr.indent(-1);wr.out("}",true);wr.indent(-1);wr.out("}",true);return;}if(cmd=="return"){if(node.children.length>1){var rValue=node.getSecond();if(ctx.getFlag("last_returns")){this.WalkNode(rValue,ctx,wr);return;}if(ctx.inLambda()){wr.out("throw new ScalaReturnValue(",false);ctx.setInExpr();this.WalkNode(rValue,ctx,wr);ctx.unsetInExpr();wr.out(")",true);}else{wr.out("return ",false);ctx.setInExpr();this.WalkNode(rValue,ctx,wr);ctx.unsetInExpr();wr.out(" ",true);}}else{if(ctx.inLambda()){wr.out("throw new ScalaReturnValue(null)",true);}else{wr.out("return",true);}}return;}}},{key:"CreateLambda",value:function CreateLambda(node,ctx,wr){var lambdaCtx=node.lambda_ctx;var fnDef=node.children[0];var args=node.children[1];var body=node.children[2];lambdaCtx.is_lambda=true;wr.out("((",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(", ",false);}if(arg.flow_done==false){this.compiler.parser.WalkNode(arg,lambdaCtx,wr);}this.WalkNode(arg,lambdaCtx,wr);wr.out(" : ",false);this.writeTypeDef(arg,ctx,wr);};wr.out(")",false);var return_cnt=0;var line_cnt=body.children.length;body.forTree(function(item,i){if(item.isFirstVref("return")){return_cnt=return_cnt+1;}});if(line_cnt==1){return_cnt=1;}if(fnDef.type_name!="void"){if(return_cnt==1){if(line_cnt>1){wr.out(" => { ",true);wr.indent(1);lambdaCtx.restartExpressionLevel();}else{wr.out(" => ",false);lambdaCtx.setInExpr();}lambdaCtx.setFlag("last_returns",true);for(var i_1=0;i_1<body.children.length;i_1++){var item=body.children[i_1];this.WalkNode(item,lambdaCtx,wr);};if(line_cnt>1){wr.newline();wr.indent(-1);wr.out("}",false);}else{lambdaCtx.unsetInExpr();}wr.out(")",false);return;}}if(line_cnt>1||return_cnt>1){wr.out(" => { ",true);wr.indent(1);lambdaCtx.restartExpressionLevel();}else{wr.out(" => ",false);lambdaCtx.setInExpr();}if(fnDef.type_name!="void"){this.writeFnStart(fnDef,ctx,wr);}for(var i_2=0;i_2<body.children.length;i_2++){var item_1=body.children[i_2];this.WalkNode(item_1,lambdaCtx,wr);};if(fnDef.type_name!="void"){this.writeFnEnd(fnDef,ctx,wr);}if(line_cnt>1||return_cnt>1){wr.newline();wr.indent(-1);wr.out("}",false);}else{lambdaCtx.unsetInExpr();}wr.out(")",false);}},{key:"writeArrayLiteral",value:function writeArrayLiteral(node,ctx,wr){var _this28=this;wr.out("collection.mutable.ArrayBuffer(",false);operatorsOf.forEach_6(node.children,function(item,index){if(index>0){wr.out(", ",false);}_this28.WalkNode(item,ctx,wr);});wr.out(")",false);}},{key:"writeClass",value:function writeClass(node,ctx,orig_wr){var _this29=this;var declaredFunction={};var cl=node.clDesc;if(typeof cl==="undefined"){return;}var wr=orig_wr;if(this.init_done==false){wr.out("case class ScalaReturnValue(value:Any) extends Exception",true);wr.createTag("imports");this.init_done=true;wr.createTag("beginning");}/** unused: const importFork = wr.getTag("imports") **/var b_class_has_content=cl.has_constructor||cl.variables.length>0||cl.defined_variants.length>0||cl.extends_classes.length>0;if(b_class_has_content){if(cl.extends_classes.length>0){for(var i=0;i<cl.extends_classes.length;i++){var pName=cl.extends_classes[i];var pC=ctx.findClass(pName);for(var i_1=0;i_1<pC.defined_variants.length;i_1++){var fnVar=pC.defined_variants[i_1];var mVs=pC.method_variants[fnVar];for(var i_2=0;i_2<mVs.variants.length;i_2++){var variant=mVs.variants[i_2];declaredFunction[variant.name]=true;};};};}wr.out("class "+cl.name+" ",false);if(cl.has_constructor){wr.out("(",false);var constr=cl.constructor_fn;for(var i_3=0;i_3<constr.params.length;i_3++){var arg=constr.params[i_3];if(i_3>0){wr.out(", ",false);}wr.out(arg.name+" : ",false);this.writeTypeDef(arg.nameNode,ctx,wr);};wr.out(")",false);}if(cl.extends_classes.length>0){wr.out(" extends ",false);for(var i_4=0;i_4<cl.extends_classes.length;i_4++){var pName_1=cl.extends_classes[i_4];wr.out(pName_1,false);};}wr.out(" {",true);wr.indent(1);for(var i_5=0;i_5<cl.variables.length;i_5++){var pvar=cl.variables[i_5];this.writeVarDef(pvar.node,ctx,wr);};if(cl.has_constructor){var constr_1=cl.constructor_fn;wr.newline();var subCtx=constr_1.fnCtx;subCtx.is_function=true;this.WalkNode(constr_1.fnBody,subCtx,wr);wr.newline();}for(var i_6=0;i_6<cl.defined_variants.length;i_6++){var fnVar_1=cl.defined_variants[i_6];var mVs_1=cl.method_variants[fnVar_1];var _loop3=function _loop3(i_7){variant_1=mVs_1.variants[i_7];if(typeof declaredFunction[variant_1.name]!="undefined"&&declaredFunction.hasOwnProperty(variant_1.name)){wr.out("override ",false);}wr.out("def ",false);wr.out(" ",false);wr.out(variant_1.name+"(",false);_this29.writeArgsDef(variant_1,ctx,wr);wr.out(") : ",false);_this29.writeTypeDef(variant_1.nameNode,ctx,wr);wr.out(" = ",false);var return_cnt=0;var line_cnt=variant_1.fnBody.children.length;variant_1.fnBody.forTree(function(item,i){if(item.isFirstVref("return")){return_cnt=return_cnt+1;}});var subCtx_1=variant_1.fnCtx;subCtx_1.is_function=true;if(return_cnt<=1){subCtx_1.setFlag("last_returns",true);if(line_cnt>1){wr.out(" { ",true);wr.indent(1);}else{subCtx_1.setInExpr();}_this29.WalkNode(variant_1.fnBody,subCtx_1,wr);if(line_cnt>1){wr.newline();wr.indent(-1);wr.out("}",true);}else{subCtx_1.unsetInExpr();wr.newline();}}else{wr.out(" {",true);wr.indent(1);wr.newline();_this29.WalkNode(variant_1.fnBody,subCtx_1,wr);wr.newline();wr.indent(-1);wr.out("}",true);}};for(var i_7=0;i_7<mVs_1.variants.length;i_7++){var variant_1;_loop3(i_7);};};wr.indent(-1);wr.out("}",true);}var b_has_non_main_static=false;var b_had_app=false;var app_obj=void 0;operatorsOf.forEach_20(cl.static_methods,function(item,index){if(item.name!="main"){b_has_non_main_static=true;}else{b_had_app=true;var it=item;app_obj=it;}});if(b_has_non_main_static){wr.out("",true);wr.out("// companion object for static methods of "+cl.name+" static cnt == "+cl.static_methods.length,true);wr.out("object "+cl.name+" {",true);wr.indent(1);for(var i_8=0;i_8<cl.static_methods.length;i_8++){var variant_2=cl.static_methods[i_8];if(variant_2.nameNode.hasFlag("main")){continue;}wr.out("def ",false);wr.out(" ",false);wr.out(variant_2.name+"(",false);this.writeArgsDef(variant_2,ctx,wr);wr.out(") : ",false);this.writeTypeDef(variant_2.nameNode,ctx,wr);wr.out(" = {",true);wr.indent(1);wr.newline();var subCtx_2=variant_2.fnCtx;subCtx_2.is_function=true;this.WalkNode(variant_2.fnBody,subCtx_2,wr);wr.newline();wr.indent(-1);wr.out("}",true);};wr.newline();wr.indent(-1);wr.out("}",true);}if(b_had_app){var variant_3=app_obj;var b_scalafiddle=ctx.hasCompilerFlag("scalafiddle");var theEnd=wr.getTag("file_end");if(b_scalafiddle){theEnd=wr.getTag("beginning");theEnd.out("",true);theEnd.out("// ----------- the scalafiddle main function begins ---------",true);}if(b_scalafiddle==false){theEnd.out("",true);theEnd.out("// application main function for "+cl.name,true);theEnd.out("object App"+cl.name+" extends App {",true);theEnd.indent(1);theEnd.newline();}var subCtx_3=variant_3.fnCtx;subCtx_3.is_function=true;this.WalkNode(variant_3.fnBody,subCtx_3,theEnd);if(b_scalafiddle){theEnd.out("// ----------- the scalafiddle main function ends ---------",true);theEnd.out("",true);}if(b_scalafiddle==false){theEnd.newline();theEnd.indent(-1);theEnd.out("}",true);}}}}]);return RangerScalaClassWriter;}(RangerGenericClassWriter);var RangerGolangClassWriter=function(_RangerGenericClassWr7){_inherits(RangerGolangClassWriter,_RangerGenericClassWr7);function RangerGolangClassWriter(){_classCallCheck(this,RangerGolangClassWriter);var _this30=_possibleConstructorReturn(this,(RangerGolangClassWriter.__proto__||Object.getPrototypeOf(RangerGolangClassWriter)).call(this));_this30.thisName="this";_this30.write_raw_type=false;_this30.did_write_nullable=false;return _this30;}_createClass(RangerGolangClassWriter,[{key:"WriteScalarValue",value:function WriteScalarValue(node,ctx,wr){switch(node.value_type){case 2:wr.out(node.getParsedString(),false);break;case 4:var s=this.EncodeString(node,ctx,wr);wr.out("\""+s+"\"",false);break;case 3:wr.out("int64("+node.int_value+")",false);break;case 5:if(node.boolean_value){wr.out("true",false);}else{wr.out("false",false);}break;};}},{key:"getObjectTypeString",value:function getObjectTypeString(type_string,ctx){if(type_string=="this"){return this.thisName;}if(ctx.isDefinedClass(type_string)){var cc=ctx.findClass(type_string);if(cc.is_union){return"interface{}";}if(cc.doesInherit()){return"IFACE_"+ctx.transformTypeName(type_string);}}switch(type_string){case"int":return"int64";case"string":return"string";case"boolean":return"bool";case"double":return"float64";case"char":return"byte";case"charbuffer":return"[]byte";};return ctx.transformTypeName(type_string);}},{key:"getTypeString2",value:function getTypeString2(type_string,ctx){if(type_string=="this"){return this.thisName;}switch(type_string){case"int":return"int64";case"string":return"string";case"boolean":return"bool";case"double":return"float64";case"char":return"byte";case"charbuffer":return"[]byte";};if(ctx.isDefinedClass(type_string)){var cc=ctx.findClass(type_string);if(cc.is_union){return"interface{}";}}return ctx.transformTypeName(type_string);}},{key:"writeRawTypeDef",value:function writeRawTypeDef(node,ctx,wr){this.write_raw_type=true;this.writeTypeDef(node,ctx,wr);this.write_raw_type=false;}},{key:"writeTypeDef",value:function writeTypeDef(node,ctx,wr){this.writeTypeDef2(node,ctx,wr);}},{key:"writeArrayTypeDef",value:function writeArrayTypeDef(node,ctx,wr){var v_type=node.value_type;var a_name=node.array_type;if(v_type==10||v_type==11||v_type==0){v_type=node.typeNameAsType(ctx);}if(node.eval_type!=0){v_type=node.eval_type;if(node.eval_array_type.length>0){a_name=node.eval_array_type;}}switch(v_type){case 7:if(ctx.isDefinedClass(a_name)){var cc=ctx.findClass(a_name);if(cc.is_union){wr.out("interface{}",false);return;}if(cc.doesInherit()){wr.out("IFACE_"+this.getTypeString2(a_name,ctx),false);return;}}if(ctx.isPrimitiveType(a_name)==false){wr.out("*",false);}wr.out(this.getObjectTypeString(a_name,ctx)+"",false);break;case 6:if(ctx.isDefinedClass(a_name)){var cc_1=ctx.findClass(a_name);if(cc_1.is_union){wr.out("interface{}",false);return;}if(cc_1.doesInherit()){wr.out("IFACE_"+this.getTypeString2(a_name,ctx),false);return;}}if(this.write_raw_type==false&&ctx.isPrimitiveType(a_name)==false){wr.out("*",false);}wr.out(this.getObjectTypeString(a_name,ctx)+"",false);break;default:break;};}},{key:"writeTypeDef2",value:function writeTypeDef2(node,ctx,wr){var v_type=node.value_type;var t_name=node.type_name;var a_name=node.array_type;var k_name=node.key_type;if(v_type==10||v_type==11||v_type==0){v_type=node.typeNameAsType(ctx);}if(node.eval_type!=0){v_type=node.eval_type;if(node.eval_type_name.length>0){t_name=node.eval_type_name;}if(node.eval_array_type.length>0){a_name=node.eval_array_type;}if(node.eval_key_type.length>0){k_name=node.eval_key_type;}}switch(v_type){case 17:var rv=node.expression_value.children[0];var sec=node.expression_value.children[1];/** unused: const fc = sec.getFirst() **/wr.out("func(",false);for(var i=0;i<sec.children.length;i++){var arg=sec.children[i];if(i>0){wr.out(", ",false);}this.writeTypeDef2(arg,ctx,wr);};wr.out(") ",false);this.writeTypeDef2(rv,ctx,wr);break;case 13:wr.out("int64",false);break;case 3:wr.out("int64",false);break;case 2:wr.out("float64",false);break;case 4:wr.out("string",false);break;case 5:wr.out("bool",false);break;case 14:wr.out("byte",false);break;case 15:wr.out("[]byte",false);break;case 7:if(this.write_raw_type){wr.out(this.getObjectTypeString(a_name,ctx)+"",false);}else{wr.out("map["+this.getObjectTypeString(k_name,ctx)+"]",false);if(ctx.isDefinedClass(a_name)){var cc=ctx.findClass(a_name);if(cc.is_union){wr.out("interface{}",false);return;}if(cc.doesInherit()){wr.out("IFACE_"+this.getTypeString2(a_name,ctx),false);return;}}if(this.write_raw_type==false&&ctx.isPrimitiveType(a_name)==false){wr.out("*",false);}wr.out(this.getObjectTypeString(a_name,ctx)+"",false);}break;case 6:if(false==this.write_raw_type){wr.out("[]",false);}if(ctx.isDefinedClass(a_name)){var cc_1=ctx.findClass(a_name);if(cc_1.is_union){wr.out("interface{}",false);return;}if(cc_1.doesInherit()){wr.out("IFACE_"+this.getTypeString2(a_name,ctx),false);return;}}if(this.write_raw_type==false&&ctx.isPrimitiveType(a_name)==false){wr.out("*",false);}wr.out(this.getObjectTypeString(a_name,ctx)+"",false);break;default:if(node.type_name=="void"||false==node.type_name.length>0){wr.out("()",false);return;}var b_iface=false;if(ctx.isDefinedClass(t_name)){var cc_2=ctx.findClass(t_name);b_iface=cc_2.is_interface;if(cc_2.is_system){var sysName=cc_2.systemNames["go"];if(typeof sysName!=="undefined"&&sysName!=null){wr.out(sysName,false);}else{ctx.addError(node,"No system class "+t_name+"defined for Go ");}return;}}if(ctx.isDefinedClass(t_name)){var cc_3=ctx.findClass(t_name);if(cc_3.is_union){wr.out("interface{}",false);return;}if(cc_3.doesInherit()){wr.out("IFACE_"+this.getTypeString2(t_name,ctx),false);return;}}if(this.write_raw_type==false&&node.isPrimitiveType()==false&&b_iface==false){wr.out("*",false);}wr.out(this.getTypeString2(t_name,ctx),false);break;};}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){if(node.vref=="this"){wr.out(this.thisName,false);return;}if(node.eval_type==13){if(node.ns.length>1){var rootObjName=node.ns[0];var enumName=node.ns[1];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){wr.out(""+e.values[enumName],false);return;}}}var next_is_gs=false;/** unused: const last_was_setter = false **/var needs_par=false;var ns_last=node.ns.length-1;if(node.nsp.length>0){var had_static=false;for(var i=0;i<node.nsp.length;i++){var p=node.nsp[i];if(next_is_gs){if(p.isProperty()){wr.out(".Get_",false);needs_par=true;}else{needs_par=false;}next_is_gs=false;}if(needs_par==false){if(i>0){if(had_static){wr.out("_static_",false);}else{wr.out(".",false);}}}if(typeof p.nameNode!=="undefined"&&p.nameNode!=null&&ctx.isDefinedClass(p.nameNode.type_name)){var c=ctx.findClass(p.nameNode.type_name);if(c.doesInherit()){next_is_gs=true;}}if(i==0){var part=node.ns[0];if(part=="this"){wr.out(this.thisName,false);continue;}var cc=ctx.getCurrentClass();if(part!=this.thisName&&typeof cc!=="undefined"&&cc!=null&&false==ctx.isInStatic()){var currC=cc;var up=currC.findVariable(part);var lvDef=ctx.getVariableDef(part);if(typeof up!=="undefined"&&up!=null&&lvDef.is_class_variable){/** unused: const p3 = up **/wr.out(this.thisName+".",false);}}}if(p.compiledName.length>0){wr.out(this.adjustType(p.compiledName),false);}else{if(p.name.length>0){wr.out(this.adjustType(p.name),false);}else{wr.out(this.adjustType(node.ns[i]),false);}}if(needs_par){wr.out("()",false);needs_par=false;}if(typeof p.nameNode!=="undefined"&&p.nameNode!=null&&p.nameNode.hasFlag("optional")&&i!=ns_last){wr.out(".value.(",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out(")",false);}if(p.isClass()){had_static=true;}};return;}if(node.hasParamDesc){var part_1=node.ns[0];var cc_1=ctx.getCurrentClass();if(part_1!=this.thisName&&typeof cc_1!=="undefined"&&cc_1!=null&&false==ctx.isInStatic()){var currC_1=cc_1;var up_1=currC_1.findVariable(part_1);var lvDef_1=ctx.getVariableDef(part_1);if(typeof up_1!=="undefined"&&up_1!=null&&lvDef_1.is_class_variable){/** unused: const p3_1 = up_1 **/wr.out(this.thisName+".",false);}}var p_1=node.paramDesc;wr.out(p_1.compiledName,false);return;}var b_was_static=false;for(var i_1=0;i_1<node.ns.length;i_1++){var part_2=node.ns[i_1];if(i_1>0){if(i_1==1&&b_was_static){wr.out("_static_",false);}else{wr.out(".",false);}}if(i_1==0){if(part_2=="this"){wr.out(this.thisName,false);continue;}if(ctx.hasClass(part_2)){b_was_static=true;}var cc_2=ctx.getCurrentClass();if(part_2!="this"&&typeof cc_2!=="undefined"&&cc_2!=null&&false==ctx.isInStatic()){var currC_2=cc_2;var up_2=currC_2.findVariable(part_2);var lvDef_2=ctx.getVariableDef(part_2);if(typeof up_2!=="undefined"&&up_2!=null&&lvDef_2.is_class_variable){/** unused: const p3_2 = up_2 **/wr.out(this.thisName+".",false);}}}wr.out(this.adjustType(part_2),false);};}},{key:"WriteSetterVRef",value:function WriteSetterVRef(node,ctx,wr){if(node.vref=="this"){wr.out(this.thisName,false);return;}if(node.eval_type==13){var rootObjName=node.ns[0];var enumName=node.ns[1];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){wr.out(""+e.values[enumName],false);return;}}var next_is_gs=false;/** unused: const last_was_setter = false **/var needs_par=false;var ns_len=node.ns.length-1;if(node.nsp.length>0){var had_static=false;for(var i=0;i<node.nsp.length;i++){var p=node.nsp[i];if(next_is_gs){if(p.isProperty()){wr.out(".Get_",false);needs_par=true;}else{needs_par=false;}next_is_gs=false;}if(needs_par==false){if(i>0){if(had_static){wr.out("_static_",false);}else{wr.out(".",false);}}}if(ctx.isDefinedClass(p.nameNode.type_name)){var c=ctx.findClass(p.nameNode.type_name);if(c.doesInherit()){next_is_gs=true;}}if(i==0){var part=node.ns[0];if(part=="this"){wr.out(this.thisName,false);continue;}var cc=ctx.getCurrentClass();if(part!=this.thisName&&typeof cc!=="undefined"&&cc!=null&&false==ctx.isInStatic()){var currC=cc;var up=currC.findVariable(part);var lvDef=ctx.getVariableDef(part);if(typeof up!=="undefined"&&up!=null&&lvDef.is_class_variable){/** unused: const p3 = up **/wr.out(this.thisName+".",false);}}}if(p.compiledName.length>0){wr.out(this.adjustType(p.compiledName),false);}else{if(p.name.length>0){wr.out(this.adjustType(p.name),false);}else{wr.out(this.adjustType(node.ns[i]),false);}}if(needs_par){wr.out("()",false);needs_par=false;}if(i<ns_len){if(p.nameNode.hasFlag("optional")){wr.out(".value.(",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out(")",false);}}if(p.isClass()){had_static=true;}};return;}if(node.hasParamDesc){var part_1=node.ns[0];var cc_1=ctx.getCurrentClass();if(part_1!=this.thisName&&typeof cc_1!=="undefined"&&cc_1!=null&&false==ctx.isInStatic()){var currC_1=cc_1;var up_1=currC_1.findVariable(part_1);var lvDef_1=ctx.getVariableDef(part_1);if(typeof up_1!=="undefined"&&up_1!=null&&lvDef_1.is_class_variable){/** unused: const p3_1 = up_1 **/wr.out(this.thisName+".",false);}}var p_1=node.paramDesc;wr.out(p_1.compiledName,false);return;}var b_was_static=false;for(var i_1=0;i_1<node.ns.length;i_1++){var part_2=node.ns[i_1];if(i_1>0){if(i_1==1&&b_was_static){wr.out("_static_",false);}else{wr.out(".",false);}}if(i_1==0){if(part_2=="this"){wr.out(this.thisName,false);continue;}if(ctx.hasClass(part_2)){b_was_static=true;}var cc_2=ctx.getCurrentClass();if(part_2!="this"&&typeof cc_2!=="undefined"&&cc_2!=null&&false==ctx.isInStatic()){var currC_2=cc_2;var up_2=currC_2.findVariable(part_2);var lvDef_2=ctx.getVariableDef(part_2);if(typeof up_2!=="undefined"&&up_2!=null&&lvDef_2.is_class_variable){/** unused: const p3_2 = up_2 **/wr.out(this.thisName+".",false);}}}wr.out(this.adjustType(part_2),false);};}},{key:"goExtractAssign",value:function goExtractAssign(value,p,ctx,wr){var arr_node=value.children[1];wr.newline();wr.out("",true);wr.out("// array_extract operator ",true);wr.out("var ",false);var pArr=new RangerAppParamDesc();pArr.name="_arrTemp";pArr.node=arr_node;pArr.nameNode=arr_node;pArr.is_optional=false;ctx.defineVariable(p.name,pArr);wr.out(pArr.compiledName,false);wr.out(" ",false);this.writeTypeDef(arr_node,ctx,wr);wr.newline();wr.out(p.compiledName+" , "+pArr.compiledName+" = ",false);ctx.setInExpr();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();wr.out(";",true);var left=arr_node;var a_len=left.ns.length-1;/** unused: const last_part = left.ns[a_len] **/var next_is_gs=false;var last_was_setter=false;var needs_par=false;var b_was_static=false;for(var i=0;i<left.ns.length;i++){var part=left.ns[i];if(next_is_gs){if(i==a_len){wr.out(".Set_",false);last_was_setter=true;}else{wr.out(".Get_",false);needs_par=true;next_is_gs=false;last_was_setter=false;}}if(last_was_setter==false&&needs_par==false){if(i>0){if(i==1&&b_was_static){wr.out("_static_",false);}else{wr.out(".",false);}}}if(i==0){if(part=="this"){wr.out(this.thisName,false);continue;}if(ctx.hasClass(part)){b_was_static=true;}var partDef=ctx.getVariableDef(part);if(typeof partDef.nameNode!=="undefined"&&partDef.nameNode!=null){if(ctx.isDefinedClass(partDef.nameNode.type_name)){var c=ctx.findClass(partDef.nameNode.type_name);if(c.doesInherit()){next_is_gs=true;}}}var cc=ctx.getCurrentClass();if(part!="this"&&typeof cc!=="undefined"&&cc!=null&&false==ctx.isInStatic()){var currC=cc;var up=currC.findVariable(part);var lvDef=ctx.getVariableDef(part);if(typeof up!=="undefined"&&up!=null&&lvDef.is_class_variable){/** unused: const p3 = up **/wr.out(this.thisName+".",false);}}}if(left.nsp.length>0){var p_1=left.nsp[i];wr.out(this.adjustType(p_1.compiledName),false);}else{if(left.hasParamDesc){wr.out(left.paramDesc.compiledName,false);}else{wr.out(this.adjustType(part),false);}}if(needs_par){wr.out("()",false);needs_par=false;}if(left.nsp.length>=i+1){var pp=left.nsp[i];if(pp.nameNode.hasFlag("optional")){wr.out(".value.(",false);this.writeTypeDef(pp.nameNode,ctx,wr);wr.out(")",false);}}};if(last_was_setter){wr.out("(",false);wr.out(pArr.compiledName,false);wr.out("); ",true);}else{wr.out(" = ",false);wr.out(pArr.compiledName,false);wr.out("; ",true);}wr.out("",true);}},{key:"writeStructField",value:function writeStructField(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;wr.out(p.compiledName+" ",false);if(p.nameNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(p.nameNode,ctx,wr);}if(p.ref_cnt==0){wr.out(" /** unused **/ ",false);}wr.out(" `json:\""+p.name+"\"` ",false);wr.out("",true);if(p.nameNode.hasFlag("optional")){}}}},{key:"writeVarDef",value:function writeVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;var b_not_used=false;if(p.ref_cnt==0&&p.is_class_variable==false){var b_can_skip=true;if(node.children.length>2){var value=node.getThird();if(value.has_call||value.has_lambda_call){b_can_skip=false;}value.forTree(function(item,i){if(item.has_call||item.has_lambda_call){b_can_skip=false;}});if(b_can_skip==false){wr.out(" _ = ",false);ctx.setInExpr();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();wr.out("",true);return;}}if(b_can_skip){wr.out("/** unused: "+p.compiledName+"*/",true);b_not_used=true;return;}}var map_or_hash=nn.value_type==6||nn.value_type==7;if(nn.hasFlag("optional")){wr.out("var "+p.compiledName+" *GoNullable = new(GoNullable); ",true);if(node.children.length>2){var value_1=node.children[2];if(value_1.hasParamDesc){var pnn=value_1.paramDesc.nameNode;if(pnn.hasFlag("optional")){wr.out(p.compiledName+".value = ",false);ctx.setInExpr();var value_2=node.getThird();this.WalkNode(value_2,ctx,wr);ctx.unsetInExpr();wr.out(".value;",true);wr.out(p.compiledName+".has_value = ",false);ctx.setInExpr();var value_3=node.getThird();this.WalkNode(value_3,ctx,wr);ctx.unsetInExpr();wr.out(".has_value;",true);return;}else{wr.out(p.compiledName+".value = ",false);ctx.setInExpr();var value_4=node.getThird();this.WalkNode(value_4,ctx,wr);ctx.unsetInExpr();wr.out(";",true);wr.out(p.compiledName+".has_value = true;",true);return;}}else{wr.out(p.compiledName+" = ",false);ctx.setInExpr();var value_5=node.getThird();this.WalkNode(value_5,ctx,wr);ctx.unsetInExpr();wr.out(";",true);return;}}return;}else{if(p.set_cnt>0||p.is_class_variable||map_or_hash){wr.out("var "+p.compiledName+" ",false);}else{wr.out("var "+p.compiledName+" ",false);}}var ti_ok=ctx.canUseTypeInference(p.nameNode);if(false==ti_ok||false==p.nameNode.hasFlag("optional")&&node.children.length==2){this.writeTypeDef2(p.nameNode,ctx,wr);}if(node.children.length>2){var value_6=node.getThird();if(value_6.expression&&value_6.children.length>1){var _fc5=value_6.children[0];if(_fc5.vref=="array_extract"){this.goExtractAssign(value_6,p,ctx,wr);return;}}wr.out("= ",false);ctx.setInExpr();if(p.nameNode.eval_type_name=="char"){wr.out("byte(",false);}this.WalkNode(value_6,ctx,wr);if(p.nameNode.eval_type_name=="char"){wr.out(")",false);}ctx.unsetInExpr();}else{if(nn.value_type==6){wr.out(" = make(",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out(", 0)",false);}if(nn.value_type==7){wr.out(" = make(",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out(")",false);}}wr.out(";",false);if(p.ref_cnt==0&&p.is_class_variable==true){wr.out(" /** note: unused */",false);}if(p.ref_cnt==0&&p.is_class_variable==false){}else{wr.newline();}if(b_not_used==false){if(nn.hasFlag("optional")){wr.addImport("errors");}}}}},{key:"writeArgsDef",value:function writeArgsDef(fnDesc,ctx,wr){for(var i=0;i<fnDesc.params.length;i++){var arg=fnDesc.params[i];if(i>0){wr.out(", ",false);}wr.out(arg.compiledName+" ",false);if(arg.nameNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(arg.nameNode,ctx,wr);}};}},{key:"writeNewCall",value:function writeNewCall(node,ctx,wr){if(node.hasNewOper){var cl=node.clDesc;/** unused: const fc = node.getSecond() **/wr.out("CreateNew_"+node.clDesc.name+"(",false);var constr=cl.constructor_fn;var givenArgs=node.getThird();if(typeof constr!=="undefined"&&constr!=null){for(var i=0;i<constr.params.length;i++){var arg=constr.params[i];var n=givenArgs.children[i];if(i>0){wr.out(", ",false);}if(true||typeof arg.nameNode!=="undefined"&&arg.nameNode!=null){this.WalkNode(n,ctx,wr);}};}wr.out(")",false);}}},{key:"writeArrayLiteral",value:function writeArrayLiteral(node,ctx,wr){var _this31=this;this.writeTypeDef(node,ctx,wr);wr.out(" {",false);operatorsOf.forEach_6(node.children,function(item,index){if(index>0){wr.out(", ",false);}_this31.WalkNode(item,ctx,wr);});wr.out("}",false);}},{key:"CreateLambdaCall",value:function CreateLambdaCall(node,ctx,wr){var fName=node.children[0];var givenArgs=node.children[1];var args=void 0;if(typeof fName.expression_value!=="undefined"&&fName.expression_value!=null){args=fName.expression_value.children[1];}else{var param=ctx.getVariableDef(fName.vref);args=param.nameNode.expression_value.children[1];}ctx.setInExpr();this.WalkNode(fName,ctx,wr);wr.out("(",false);var subCtx=ctx.fork();for(var i=0;i<args.children.length;i++){var arg=args.children[i];var n=givenArgs.children[i];if(i>0){wr.out(", ",false);}if(arg.value_type!=0){this.WalkNode(n,subCtx,wr);}else{this.WalkNode(n,subCtx,wr);}};ctx.unsetInExpr();wr.out(")",false);if(ctx.expressionLevel()==0){wr.out(";",true);}}},{key:"CreateLambda",value:function CreateLambda(node,ctx,wr){var lambdaCtx=node.lambda_ctx;var fnNode=node.children[0];var args=node.children[1];var body=node.children[2];wr.out("func (",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(", ",false);}wr.out(arg.vref,false);wr.out(" ",false);if(arg.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(arg,lambdaCtx,wr);}};wr.out(") ",false);if(fnNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(fnNode,lambdaCtx,wr);}wr.out(" {",true);wr.indent(1);lambdaCtx.restartExpressionLevel();for(var i_1=0;i_1<body.children.length;i_1++){var item=body.children[i_1];this.WalkNode(item,lambdaCtx,wr);};wr.newline();wr.indent(-1);wr.out("}",false);}},{key:"CustomOperator",value:function CustomOperator(node,ctx,wr){var fc=node.getFirst();var cmd=fc.vref;if(cmd=="return"){if(node.children.length>1){var rValue=node.getSecond();if(ctx.isCatchBlock()||ctx.isTryBlock()){wr.out("__ex_returned = true",true);wr.out("__exReturn = ",false);ctx.setInExpr();this.WalkNode(rValue,ctx,wr);ctx.unsetInExpr();wr.newline();if(ctx.isTryBlock()){wr.out("return __ex_returned, __exReturn",true);}}else{wr.out("return ",false);ctx.setInExpr();this.WalkNode(rValue,ctx,wr);ctx.unsetInExpr();wr.newline();}}else{if(ctx.isCatchBlock()){wr.out("__ex_returned = true",true);}if(ctx.isTryBlock()){wr.out("return false, nil",true);}wr.out("return",true);}return;}if(cmd=="try"){var tryBlock=node.getSecond();var catchBlock=node.getThird();var currFn=ctx.getCurrentMethod();var ex2=operatorsOf_12.createc95var_32(ctx,"did_return","boolean");var ex3=operatorsOf_12.createc95var_33(ctx,"ex_result",currFn.nameNode);if(currFn.nameNode.type_name=="void"){wr.out(ex2.compiledName+", _ := (func () ( __ex_returned bool, __exReturn interface{}) {",true);}else{wr.out(ex2.compiledName+", "+ex3.compiledName+" := (func () ( __ex_returned bool, __exReturn interface{}) {",true);}wr.indent(1);wr.out("defer func() {",true);wr.indent(1);wr.out("if r:= recover(); r != nil {",true);wr.indent(1);var subCtx=ctx.fork();subCtx.is_catch_block=true;this.WalkNode(catchBlock,subCtx,wr);wr.indent(-1);wr.out("}",true);wr.indent(-1);wr.out("}()",true);var _subCtx_=ctx.fork();_subCtx_.is_try_block=true;this.WalkNode(tryBlock,_subCtx_,wr);wr.out("return __ex_returned, __exReturn",true);wr.indent(-1);wr.out("})()",true);if(currFn.nameNode.type_name!="void"){wr.out("if "+ex2.compiledName+" {",true);wr.indent(1);wr.out("return "+ex3.compiledName,false);wr.out(".(",false);this.writeTypeDef(currFn.nameNode,ctx,wr);wr.out(")",true);wr.indent(-1);wr.out("}",true);}else{wr.out("if "+ex2.compiledName+" {",true);wr.indent(1);wr.out("return ",true);wr.indent(-1);wr.out("}",true);}return;}if(cmd=="="||cmd=="push"||cmd=="removeLast"){var left=node.getSecond();var right=left;if(cmd=="="||cmd=="push"){right=node.getThird();}wr.newline();var b_was_static=false;if(left.hasParamDesc){var a_len=left.ns.length-1;/** unused: const last_part = left.ns[a_len] **/var next_is_gs=false;var last_was_setter=false;var needs_par=false;for(var i=0;i<left.ns.length;i++){var part=left.ns[i];if(next_is_gs){if(i==a_len){wr.out(".Set_",false);last_was_setter=true;}else{wr.out(".Get_",false);needs_par=true;next_is_gs=false;last_was_setter=false;}}if(last_was_setter==false&&needs_par==false){if(i>0){if(i==1&&b_was_static){wr.out("_static_",false);}else{wr.out(".",false);}}}if(i==0){if(part=="this"){wr.out(this.thisName,false);continue;}if(ctx.hasClass(part)){b_was_static=true;}var cc=ctx.getCurrentClass();if(part!="this"&&typeof cc!=="undefined"&&cc!=null&&false==ctx.isInStatic()){var currC=cc;var up=currC.findVariable(part);var lvDef=ctx.getVariableDef(part);if(typeof up!=="undefined"&&up!=null&&lvDef.is_class_variable){/** unused: const p3 = up **/wr.out(this.thisName+".",false);}}}var partDef=ctx.getVariableDef(part);if(left.nsp.length>i){partDef=left.nsp[i];}if(typeof partDef.nameNode!=="undefined"&&partDef.nameNode!=null){if(ctx.isDefinedClass(partDef.nameNode.type_name)){var c=ctx.findClass(partDef.nameNode.type_name);if(c.doesInherit()){next_is_gs=true;}}}if(left.nsp.length>0){var p=left.nsp[i];wr.out(this.adjustType(p.compiledName),false);}else{if(left.hasParamDesc){wr.out(left.paramDesc.compiledName,false);}else{wr.out(this.adjustType(part),false);}}if(needs_par){wr.out("()",false);needs_par=false;}if(left.nsp.length>=i+1){var pp=left.nsp[i];if(pp.nameNode.hasFlag("optional")){if(left.nsp.length>i+1){wr.out(".value.(",false);this.writeTypeDef(pp.nameNode,ctx,wr);wr.out(")",false);}else{wr.out(".value",false);if(right.hasFlag("optional")==false){wr.out(" /* right is not optional, should set the has_value -> true */",false);}}}}};if(cmd=="removeLast"){if(last_was_setter){wr.out("(",false);ctx.setInExpr();this.WalkNode(left,ctx,wr);wr.out("[:len(",false);this.WalkNode(left,ctx,wr);wr.out(")-1]",false);ctx.unsetInExpr();wr.out("); ",true);}else{wr.out(" = ",false);ctx.setInExpr();this.WalkNode(left,ctx,wr);wr.out("[:len(",false);this.WalkNode(left,ctx,wr);wr.out(")-1]",false);ctx.unsetInExpr();wr.out("; ",true);}return;}if(cmd=="push"){if(last_was_setter){wr.out("(",false);ctx.setInExpr();wr.out("append(",false);this.WalkNode(left,ctx,wr);wr.out(",",false);this.WalkNode(right,ctx,wr);ctx.unsetInExpr();wr.out(")); ",true);}else{wr.out(" = ",false);wr.out("append(",false);ctx.setInExpr();this.WalkNode(left,ctx,wr);wr.out(",",false);this.WalkNode(right,ctx,wr);ctx.unsetInExpr();wr.out("); ",true);}return;}if(last_was_setter){wr.out("(",false);ctx.setInExpr();this.WalkNode(right,ctx,wr);ctx.unsetInExpr();wr.out("); ",true);}else{wr.out(" = ",false);ctx.setInExpr();this.WalkNode(right,ctx,wr);ctx.unsetInExpr();wr.out("; ",true);}return;}this.WriteSetterVRef(left,ctx,wr);wr.out(" = ",false);ctx.setInExpr();this.WalkNode(right,ctx,wr);ctx.unsetInExpr();wr.out("; /* custom */",true);}}},{key:"writeInterface",value:function writeInterface(cl,ctx,wr){wr.out("type "+cl.name+" interface { ",true);wr.indent(1);for(var i=0;i<cl.defined_variants.length;i++){var fnVar=cl.defined_variants[i];var mVs=cl.method_variants[fnVar];for(var i_1=0;i_1<mVs.variants.length;i_1++){var variant=mVs.variants[i_1];wr.out(variant.compiledName+"(",false);this.writeArgsDef(variant,ctx,wr);wr.out(") ",false);if(variant.nameNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(variant.nameNode,ctx,wr);}wr.out("",true);};};wr.indent(-1);wr.out("}",true);}},{key:"writeClass",value:function writeClass(node,ctx,orig_wr){var cl=node.clDesc;if(typeof cl==="undefined"){return;}var wr=orig_wr;if(this.did_write_nullable==false){wr.raw("\r\ntype GoNullable struct { \r\n value interface{}\r\n has_value bool\r\n}\r\n",true);wr.createTag("utilities");this.did_write_nullable=true;}var declaredVariable={};var declaredFunction={};var declaredIfFunction={};wr.out("type "+cl.name+" struct { ",true);wr.indent(1);for(var i=0;i<cl.variables.length;i++){var pvar=cl.variables[i];this.writeStructField(pvar.node,ctx,wr);declaredVariable[pvar.name]=true;};if(cl.extends_classes.length>0){for(var i_1=0;i_1<cl.extends_classes.length;i_1++){var pName=cl.extends_classes[i_1];var pC=ctx.findClass(pName);wr.out("// inherited from parent class "+pName,true);for(var i_2=0;i_2<pC.variables.length;i_2++){var pvar_1=pC.variables[i_2];if(typeof declaredVariable[pvar_1.name]!="undefined"&&declaredVariable.hasOwnProperty(pvar_1.name)){continue;}this.writeStructField(pvar_1.node,ctx,wr);};};}wr.indent(-1);wr.out("}",true);if(cl.doesInherit()||cl.extends_classes.length>0){wr.out("type IFACE_"+cl.name+" interface { ",true);wr.indent(1);for(var i_3=0;i_3<cl.variables.length;i_3++){var p=cl.variables[i_3];wr.out("Get_",false);wr.out(p.compiledName+"() ",false);if(p.nameNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(p.nameNode,ctx,wr);}wr.out("",true);wr.out("Set_",false);wr.out(p.compiledName+"(value ",false);if(p.nameNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(p.nameNode,ctx,wr);}wr.out(") ",true);};for(var i_4=0;i_4<cl.defined_variants.length;i_4++){var fnVar=cl.defined_variants[i_4];var mVs=cl.method_variants[fnVar];for(var i_5=0;i_5<mVs.variants.length;i_5++){var variant=mVs.variants[i_5];if(typeof declaredIfFunction[variant.name]!="undefined"&&declaredIfFunction.hasOwnProperty(variant.name)){continue;}declaredIfFunction[variant.name]=true;wr.out(variant.compiledName+"(",false);this.writeArgsDef(variant,ctx,wr);wr.out(") ",false);if(variant.nameNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(variant.nameNode,ctx,wr);}wr.out("",true);};};wr.indent(-1);wr.out("}",true);}this.thisName="me";wr.out("",true);wr.out("func CreateNew_"+cl.name+"(",false);if(cl.has_constructor){var constr=cl.constructor_fn;for(var i_6=0;i_6<constr.params.length;i_6++){var arg=constr.params[i_6];if(i_6>0){wr.out(", ",false);}wr.out(arg.name+" ",false);this.writeTypeDef(arg.nameNode,ctx,wr);};}wr.out(") *"+cl.name+" {",true);wr.indent(1);wr.newline();wr.out("me := new("+cl.name+")",true);if(cl.extends_classes.length>0){for(var i_7=0;i_7<cl.extends_classes.length;i_7++){var pName_1=cl.extends_classes[i_7];var pC_1=ctx.findClass(pName_1);for(var i_8=0;i_8<pC_1.variables.length;i_8++){var pvar_2=pC_1.variables[i_8];var nn=pvar_2.node;if(nn.children.length>2){var valueNode=nn.children[2];wr.out("me."+pvar_2.compiledName+" = ",false);this.WalkNode(valueNode,ctx,wr);wr.out("",true);}else{var pNameN=pvar_2.nameNode;if(pNameN.value_type==6){wr.out("me."+pvar_2.compiledName+" = ",false);wr.out("make(",false);this.writeTypeDef(pvar_2.nameNode,ctx,wr);wr.out(",0)",true);}if(pNameN.value_type==7){wr.out("me."+pvar_2.compiledName+" = ",false);wr.out("make(",false);this.writeTypeDef(pvar_2.nameNode,ctx,wr);wr.out(")",true);}}};for(var i_9=0;i_9<pC_1.variables.length;i_9++){var pvar_3=pC_1.variables[i_9];if(pvar_3.nameNode.hasFlag("optional")){wr.out("me."+pvar_3.compiledName+" = new(GoNullable);",true);}};if(pC_1.has_constructor){var constr_1=pC_1.constructor_fn;var subCtx=constr_1.fnCtx;subCtx.is_function=true;this.WalkNode(constr_1.fnBody,subCtx,wr);}};}for(var i_10=0;i_10<cl.variables.length;i_10++){var pvar_4=cl.variables[i_10];var nn_1=pvar_4.node;if(nn_1.children.length>2){var valueNode_1=nn_1.children[2];wr.out("me."+pvar_4.compiledName+" = ",false);this.WalkNode(valueNode_1,ctx,wr);wr.out("",true);}else{var pNameN_1=pvar_4.nameNode;if(pNameN_1.value_type==6){wr.out("me."+pvar_4.compiledName+" = ",false);wr.out("make(",false);this.writeTypeDef(pvar_4.nameNode,ctx,wr);wr.out(",0)",true);}if(pNameN_1.value_type==7){wr.out("me."+pvar_4.compiledName+" = ",false);wr.out("make(",false);this.writeTypeDef(pvar_4.nameNode,ctx,wr);wr.out(")",true);}}};for(var i_11=0;i_11<cl.variables.length;i_11++){var pvar_5=cl.variables[i_11];if(pvar_5.nameNode.hasFlag("optional")){wr.out("me."+pvar_5.compiledName+" = new(GoNullable);",true);}};if(cl.has_constructor){var constr_2=cl.constructor_fn;var _subCtx_2=constr_2.fnCtx;_subCtx_2.is_function=true;this.WalkNode(constr_2.fnBody,_subCtx_2,wr);}wr.out("return me;",true);wr.indent(-1);wr.out("}",true);this.thisName="this";for(var i_12=0;i_12<cl.static_methods.length;i_12++){var variant_1=cl.static_methods[i_12];if(variant_1.nameNode.hasFlag("main")){continue;}wr.newline();wr.out("func "+cl.name+"_static_"+variant_1.compiledName+"(",false);this.writeArgsDef(variant_1,ctx,wr);wr.out(") ",false);var vnn=variant_1.nameNode;if(vnn.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(vnn,ctx,wr);}wr.out(" {",true);wr.indent(1);wr.newline();var subCtx_2=variant_1.fnCtx;subCtx_2.is_function=true;subCtx_2.in_static_method=true;this.WalkNode(variant_1.fnBody,subCtx_2,wr);subCtx_2.in_static_method=false;wr.newline();wr.indent(-1);wr.out("}",true);};var declaredFn={};for(var i_13=0;i_13<cl.defined_variants.length;i_13++){var fnVar_1=cl.defined_variants[i_13];var mVs_1=cl.method_variants[fnVar_1];for(var i_14=0;i_14<mVs_1.variants.length;i_14++){var variant_2=mVs_1.variants[i_14];if(typeof declaredFunction[variant_2.name]!="undefined"&&declaredFunction.hasOwnProperty(variant_2.name)){continue;}declaredFunction[variant_2.name]=true;declaredFn[variant_2.name]=true;wr.out("func (this *"+cl.name+") "+variant_2.compiledName+" (",false);this.writeArgsDef(variant_2,ctx,wr);wr.out(") ",false);if(variant_2.nameNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(variant_2.nameNode,ctx,wr);}wr.out(" {",true);wr.indent(1);wr.newline();var subCtx_3=variant_2.fnCtx;subCtx_3.is_function=true;this.WalkNode(variant_2.fnBody,subCtx_3,wr);wr.newline();wr.indent(-1);wr.out("}",true);};};if(cl.extends_classes.length>0){for(var i_15=0;i_15<cl.extends_classes.length;i_15++){var pName_2=cl.extends_classes[i_15];var pC_2=ctx.findClass(pName_2);wr.out("// inherited methods from parent class "+pName_2,true);for(var i_16=0;i_16<pC_2.defined_variants.length;i_16++){var fnVar_2=pC_2.defined_variants[i_16];var mVs_2=pC_2.method_variants[fnVar_2];for(var i_17=0;i_17<mVs_2.variants.length;i_17++){var variant_3=mVs_2.variants[i_17];if(typeof declaredFn[variant_3.name]!="undefined"&&declaredFn.hasOwnProperty(variant_3.name)){continue;}wr.out("func (this *"+cl.name+") "+variant_3.compiledName+" (",false);this.writeArgsDef(variant_3,ctx,wr);wr.out(") ",false);if(variant_3.nameNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(variant_3.nameNode,ctx,wr);}wr.out(" {",true);wr.indent(1);wr.newline();var subCtx_4=variant_3.fnCtx;subCtx_4.is_function=true;this.WalkNode(variant_3.fnBody,subCtx_4,wr);wr.newline();wr.indent(-1);wr.out("}",true);};};};}var declaredGetter={};if(cl.doesInherit()||cl.extends_classes.length>0){for(var i_18=0;i_18<cl.variables.length;i_18++){var p_1=cl.variables[i_18];declaredGetter[p_1.name]=true;wr.newline();wr.out("// getter for variable "+p_1.name,true);wr.out("func (this *"+cl.name+") ",false);wr.out("Get_",false);wr.out(p_1.compiledName+"() ",false);if(p_1.nameNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(p_1.nameNode,ctx,wr);}wr.out(" {",true);wr.indent(1);wr.out("return this."+p_1.compiledName,true);wr.indent(-1);wr.out("}",true);wr.newline();wr.out("// setter for variable "+p_1.name,true);wr.out("func (this *"+cl.name+") ",false);wr.out("Set_",false);wr.out(p_1.compiledName+"( value ",false);if(p_1.nameNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(p_1.nameNode,ctx,wr);}wr.out(") ",false);wr.out(" {",true);wr.indent(1);wr.out("this."+p_1.compiledName+" = value ",true);wr.indent(-1);wr.out("}",true);};if(cl.extends_classes.length>0){for(var i_19=0;i_19<cl.extends_classes.length;i_19++){var pName_3=cl.extends_classes[i_19];var pC_3=ctx.findClass(pName_3);wr.out("// inherited getters and setters from the parent class "+pName_3,true);for(var i_20=0;i_20<pC_3.variables.length;i_20++){var p_2=pC_3.variables[i_20];if(typeof declaredGetter[p_2.name]!="undefined"&&declaredGetter.hasOwnProperty(p_2.name)){continue;}wr.newline();wr.out("// getter for variable "+p_2.name,true);wr.out("func (this *"+cl.name+") ",false);wr.out("Get_",false);wr.out(p_2.compiledName+"() ",false);if(p_2.nameNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(p_2.nameNode,ctx,wr);}wr.out(" {",true);wr.indent(1);wr.out("return this."+p_2.compiledName,true);wr.indent(-1);wr.out("}",true);wr.newline();wr.out("// getter for variable "+p_2.name,true);wr.out("func (this *"+cl.name+") ",false);wr.out("Set_",false);wr.out(p_2.compiledName+"( value ",false);if(p_2.nameNode.hasFlag("optional")){wr.out("*GoNullable",false);}else{this.writeTypeDef(p_2.nameNode,ctx,wr);}wr.out(") ",false);wr.out(" {",true);wr.indent(1);wr.out("this."+p_2.compiledName+" = value ",true);wr.indent(-1);wr.out("}",true);};};}}for(var i_21=0;i_21<cl.static_methods.length;i_21++){var variant_4=cl.static_methods[i_21];if(variant_4.nameNode.hasFlag("main")&&variant_4.nameNode.code.filename==ctx.getRootFile()){wr.out("func main() {",true);wr.indent(1);wr.newline();var subCtx_5=variant_4.fnCtx;subCtx_5.is_function=true;subCtx_5.in_static_method=true;this.WalkNode(variant_4.fnBody,subCtx_5,wr);subCtx_5.in_static_method=false;if(ctx.hasCompilerFlag("forever")){wr.out("for {}",true);}wr.newline();wr.indent(-1);wr.out("}",true);}};}}]);return RangerGolangClassWriter;}(RangerGenericClassWriter);var RangerPHPClassWriter=function(_RangerGenericClassWr8){_inherits(RangerPHPClassWriter,_RangerGenericClassWr8);function RangerPHPClassWriter(){_classCallCheck(this,RangerPHPClassWriter);var _this32=_possibleConstructorReturn(this,(RangerPHPClassWriter.__proto__||Object.getPrototypeOf(RangerPHPClassWriter)).call(this));_this32.thisName="this";_this32.wrote_header=false;return _this32;}_createClass(RangerPHPClassWriter,[{key:"adjustType",value:function adjustType(tn){if(tn=="this"){return"this";}return tn;}},{key:"EncodeString",value:function EncodeString(node,ctx,wr){/** unused: const encoded_str = "" **/var str_length=node.string_value.length;var encoded_str_2="";var ii=0;while(ii<str_length){var cc=node.string_value.charCodeAt(ii);switch(cc){case 8:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(98);break;case 9:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(116);break;case 10:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(110);break;case 12:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(102);break;case 13:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(114);break;case 34:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(34);break;case 36:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(34);break;case 92:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(92);break;default:encoded_str_2=encoded_str_2+String.fromCharCode(cc);break;};ii=ii+1;};return encoded_str_2;}},{key:"WriteScalarValue",value:function WriteScalarValue(node,ctx,wr){switch(node.value_type){case 2:wr.out(""+node.double_value,false);break;case 4:var s=this.EncodeString(node,ctx,wr);wr.out("\""+s+"\"",false);break;case 3:wr.out(""+node.int_value,false);break;case 5:if(node.boolean_value){wr.out("true",false);}else{wr.out("false",false);}break;};}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){if(node.vref=="this"){wr.out("$this",false);return;}if(node.eval_type==13){if(node.ns.length>1){var rootObjName=node.ns[0];var enumName=node.ns[1];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){wr.out(""+e.values[enumName],false);return;}}}if(node.nsp.length>0){for(var i=0;i<node.nsp.length;i++){var p=node.nsp[i];if(i==0){var part=node.ns[0];if(part=="this"){wr.out("$this",false);continue;}}if(i>0){wr.out("->",false);}if(i==0){wr.out("$",false);if(p.nameNode.hasFlag("optional")){}var part_1=node.ns[0];if(part_1!="this"&&ctx.isMemberVariable(part_1)){var uc=ctx.getCurrentClass();var currC=uc;var up=currC.findVariable(part_1);if(typeof up!=="undefined"&&up!=null){if(false==ctx.isInStatic()){wr.out(this.thisName+"->",false);}}}}if(p.compiledName.length>0){wr.out(this.adjustType(p.compiledName),false);}else{if(p.name.length>0){wr.out(this.adjustType(p.name),false);}else{wr.out(this.adjustType(node.ns[i]),false);}}};return;}if(node.hasParamDesc){wr.out("$",false);var part_2=node.ns[0];if(part_2!="this"&&ctx.isMemberVariable(part_2)){var uc_1=ctx.getCurrentClass();var currC_1=uc_1;var up_1=currC_1.findVariable(part_2);if(typeof up_1!=="undefined"&&up_1!=null){if(false==ctx.isInStatic()){wr.out(this.thisName+"->",false);}}}var p_1=node.paramDesc;wr.out(p_1.compiledName,false);return;}var b_was_static=false;for(var i_1=0;i_1<node.ns.length;i_1++){var part_3=node.ns[i_1];if(i_1>0){if(i_1==1&&b_was_static){wr.out("::",false);}else{wr.out("->",false);}}if(i_1==0){if(ctx.hasClass(part_3)){b_was_static=true;}else{wr.out("$",false);}if(part_3!="this"&&ctx.hasCurrentClass()){var uc_2=ctx.getCurrentClass();var currC_2=uc_2;var up_2=currC_2.findVariable(part_3);if(typeof up_2!=="undefined"&&up_2!=null){if(false==ctx.isInStatic()){wr.out(this.thisName+"->",false);}}}}wr.out(this.adjustType(part_3),false);};}},{key:"writeVarInitDef",value:function writeVarInitDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;if(p.ref_cnt==0&&p.is_class_variable==false){wr.out("/** unused: ",false);}wr.out("$this->"+p.compiledName,false);if(node.children.length>2){wr.out(" = ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}else{if(nn.value_type==6){wr.out(" = array()",false);}if(nn.value_type==7){wr.out(" = array()",false);}}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out(" **/",true);return;}wr.out(";",false);if(p.ref_cnt==0&&p.is_class_variable==true){wr.out(" /** note: unused */",false);}wr.newline();}}},{key:"writeVarDef",value:function writeVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;if(p.ref_cnt==0&&p.is_class_variable==false){wr.out("/** unused: ",false);}wr.out("$"+p.compiledName,false);if(node.children.length>2){wr.out(" = ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}else{if(nn.value_type==6){wr.out(" = array()",false);}else{if(nn.value_type==7){wr.out(" = array()",false);}else{wr.out(" = null",false);}}}if(p.ref_cnt==0&&p.is_class_variable==true){wr.out(" /** note: unused */",false);}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out(" **/ ;",true);}else{wr.out(";",false);wr.newline();}}}},{key:"disabledVarDef",value:function disabledVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;wr.out("$this->"+p.compiledName,false);if(node.children.length>2){wr.out(" = ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}else{if(nn.value_type==6){wr.out(" = array()",false);}if(nn.value_type==7){wr.out(" = array()",false);}}wr.out(";",false);wr.newline();}}},{key:"CreateMethodCall",value:function CreateMethodCall(node,ctx,wr){var obj=node.getFirst();var args=node.getSecond();ctx.setInExpr();this.WalkNode(obj,ctx,wr);ctx.unsetInExpr();wr.out("(",false);ctx.setInExpr();for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(", ",false);}this.WalkNode(arg,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);}},{key:"CreatePropertyGet",value:function CreatePropertyGet(node,ctx,wr){var obj=node.getSecond();var prop=node.getThird();wr.out("(",false);ctx.setInExpr();this.WalkNode(obj,ctx,wr);ctx.unsetInExpr();wr.out(")",false);wr.out("->",false);wr.out(prop.vref,false);}},{key:"CreateLambdaCall",value:function CreateLambdaCall(node,ctx,wr){var fName=node.children[0];var givenArgs=node.children[1];var args=void 0;if(typeof fName.expression_value!=="undefined"&&fName.expression_value!=null){args=fName.expression_value.children[1];}else{var param=ctx.getVariableDef(fName.vref);args=param.nameNode.expression_value.children[1];}ctx.setInExpr();wr.out("call_user_func(",false);this.WalkNode(fName,ctx,wr);for(var i=0;i<args.children.length;i++){var arg=args.children[i];var n=givenArgs.children[i];if(i>=0){wr.out(", ",false);}if(arg.value_type!=0){this.WalkNode(n,ctx,wr);}};ctx.unsetInExpr();if(ctx.expressionLevel()==0){wr.out(");",true);}else{wr.out(")",false);}}},{key:"CreateLambda",value:function CreateLambda(node,ctx,wr){var lambdaCtx=node.lambda_ctx;/** unused: const fnNode = node.children[0] **/var args=node.children[1];var body=node.children[2];wr.out("(function (",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(", ",false);}this.WalkNode(arg,lambdaCtx,wr);};wr.out(") ",false);var captCnt=0;for(var i_1=0;i_1<lambdaCtx.captured_variables.length;i_1++){var cname=lambdaCtx.captured_variables[i_1];var pp=lambdaCtx.getVariableDef(cname);if(pp.set_cnt>=0){if(captCnt==0){wr.out("use (",false);}else{wr.out(", ",false);}wr.out(" &$"+cname,false);captCnt=captCnt+1;}else{if(pp.varType==4){ctx.addError(node,"Mutating captured function parameter is not allowed");}}};if(captCnt>0){wr.out(")",false);}wr.out(" {",true);wr.indent(1);lambdaCtx.restartExpressionLevel();for(var i_2=0;i_2<body.children.length;i_2++){var item=body.children[i_2];this.WalkNode(item,lambdaCtx,wr);};wr.newline();for(var i_3=0;i_3<lambdaCtx.captured_variables.length;i_3++){var cname_1=lambdaCtx.captured_variables[i_3];wr.out("// captured var "+cname_1,true);};wr.indent(-1);if(ctx.expressionLevel()==0){wr.out("});",true);}else{wr.out("})",false);}}},{key:"writeClassVarDef",value:function writeClassVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;wr.out("var $"+p.compiledName+";",true);}}},{key:"writeArgsDef",value:function writeArgsDef(fnDesc,ctx,wr){for(var i=0;i<fnDesc.params.length;i++){var arg=fnDesc.params[i];if(i>0){wr.out(",",false);}wr.out(" $"+arg.compiledName+" ",false);};}},{key:"writeArrayLiteral",value:function writeArrayLiteral(node,ctx,wr){var _this33=this;wr.out("array(",false);operatorsOf.forEach_6(node.children,function(item,index){if(index>0){wr.out(", ",false);}_this33.WalkNode(item,ctx,wr);});wr.out(")",false);}},{key:"writeFnCall",value:function writeFnCall(node,ctx,wr){if(node.hasFnCall){var _fc6=node.getFirst();this.WriteVRef(_fc6,ctx,wr);wr.out("(",false);var givenArgs=node.getSecond();ctx.setInExpr();for(var i=0;i<node.fnDesc.params.length;i++){var arg=node.fnDesc.params[i];if(i>0){wr.out(", ",false);}if(givenArgs.children.length<=i){var defVal=arg.nameNode.getFlag("default");if(typeof defVal!=="undefined"&&defVal!=null){var fc_1=defVal.vref_annotation.getFirst();this.WalkNode(fc_1,ctx,wr);}else{ctx.addError(node,"Default argument was missing");}continue;}var n=givenArgs.children[i];this.WalkNode(n,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);if(ctx.expressionLevel()==0){wr.out(";",true);}}}},{key:"writeNewCall",value:function writeNewCall(node,ctx,wr){if(node.hasNewOper){var cl=node.clDesc;/** unused: const fc = node.getSecond() **/wr.out(" new ",false);wr.out(node.clDesc.name,false);wr.out("(",false);var constr=cl.constructor_fn;var givenArgs=node.getThird();if(typeof constr!=="undefined"&&constr!=null){for(var i=0;i<constr.params.length;i++){var arg=constr.params[i];var n=givenArgs.children[i];if(i>0){wr.out(", ",false);}if(true||typeof arg.nameNode!=="undefined"&&arg.nameNode!=null){this.WalkNode(n,ctx,wr);}};}wr.out(")",false);}}},{key:"CreateCallExpression",value:function CreateCallExpression(node,ctx,wr){if(node.has_call){var obj=node.getSecond();var method=node.getThird();var _args5=node.children[3];wr.out("",false);ctx.setInExpr();if(ctx.hasCompilerFlag("php54")){wr.out("call_user_method(\""+method.vref+"\",",false);this.WalkNode(obj,ctx,wr);}else{wr.out("(",false);this.WalkNode(obj,ctx,wr);wr.out(")",false);ctx.unsetInExpr();wr.out("->",false);wr.out(method.vref,false);wr.out("(",false);ctx.setInExpr();}for(var i=0;i<_args5.children.length;i++){var arg=_args5.children[i];if(i>0){wr.out(", ",false);}this.WalkNode(arg,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);if(ctx.expressionLevel()==0){wr.out(";",true);}}}},{key:"writeClass",value:function writeClass(node,ctx,orig_wr){var cl=node.clDesc;if(typeof cl==="undefined"){return;}var declaredFunction={};var wr=orig_wr;/** unused: const importFork = wr.fork() **/for(var i=0;i<cl.capturedLocals.length;i++){var dd=cl.capturedLocals[i];if(dd.is_class_variable==false){if(dd.set_cnt>0){}}};if(this.wrote_header==false){wr.out("<?php ",true);wr.out("",true);this.wrote_header=true;}wr.out("class "+cl.name,false);var parentClass=void 0;if(cl.extends_classes.length>0){wr.out(" extends ",false);for(var i_1=0;i_1<cl.extends_classes.length;i_1++){var pName=cl.extends_classes[i_1];wr.out(pName,false);parentClass=ctx.findClass(pName);};}wr.out(" { ",true);wr.indent(1);for(var i_2=0;i_2<cl.variables.length;i_2++){var pvar=cl.variables[i_2];this.writeClassVarDef(pvar.node,ctx,wr);};wr.out("function __construct(",false);if(cl.has_constructor){var constr=cl.constructor_fn;this.writeArgsDef(constr,ctx,wr);}wr.out(" ) {",true);wr.indent(1);if(typeof parentClass!="undefined"){wr.out("parent::__construct();",true);}for(var i_3=0;i_3<cl.variables.length;i_3++){var pvar_1=cl.variables[i_3];this.writeVarInitDef(pvar_1.node,ctx,wr);};if(cl.has_constructor){var constr_1=cl.constructor_fn;wr.newline();var subCtx=constr_1.fnCtx;subCtx.is_function=true;this.WalkNode(constr_1.fnBody,subCtx,wr);}wr.newline();wr.indent(-1);wr.out("}",true);for(var i_4=0;i_4<cl.static_methods.length;i_4++){var variant=cl.static_methods[i_4];if(variant.nameNode.hasFlag("main")){continue;}else{wr.out("public static function ",false);wr.out(variant.compiledName+"(",false);this.writeArgsDef(variant,ctx,wr);wr.out(") {",true);}wr.indent(1);wr.newline();var _subCtx_3=variant.fnCtx;_subCtx_3.is_function=true;_subCtx_3.in_static_method=true;this.WalkNode(variant.fnBody,_subCtx_3,wr);_subCtx_3.in_static_method=false;wr.newline();wr.indent(-1);wr.out("}",true);};for(var i_5=0;i_5<cl.defined_variants.length;i_5++){var fnVar=cl.defined_variants[i_5];var mVs=cl.method_variants[fnVar];for(var i_6=0;i_6<mVs.variants.length;i_6++){var variant_1=mVs.variants[i_6];if(typeof declaredFunction[variant_1.name]!="undefined"&&declaredFunction.hasOwnProperty(variant_1.name)){continue;}declaredFunction[variant_1.name]=true;wr.out("function "+variant_1.compiledName+"(",false);this.writeArgsDef(variant_1,ctx,wr);wr.out(") {",true);wr.indent(1);wr.newline();var subCtx_2=variant_1.fnCtx;subCtx_2.is_function=true;subCtx_2.in_static_method=false;this.WalkNode(variant_1.fnBody,subCtx_2,wr);wr.newline();wr.indent(-1);wr.out("}",true);};};wr.indent(-1);wr.out("}",true);for(var i_7=0;i_7<cl.static_methods.length;i_7++){var variant_2=cl.static_methods[i_7];ctx.disableCurrentClass();ctx.in_static_method=true;if(variant_2.nameNode.hasFlag("main")&&variant_2.nameNode.code.filename==ctx.getRootFile()){wr.out("/* static PHP main routine */",false);wr.newline();this.WalkNode(variant_2.fnBody,ctx,wr);wr.newline();}ctx.in_static_method=false;};}}]);return RangerPHPClassWriter;}(RangerGenericClassWriter);var WebPageWriter=function(){function WebPageWriter(){_classCallCheck(this,WebPageWriter);}_createClass(WebPageWriter,[{key:"CreatePage",value:function CreatePage(parser,node,ctx,orig_wr){var sc=node.getSecond();var wr=orig_wr;wr.out("// created by WebPageWriter ",true);wr.out(sc.vref+" () {",true);wr.indent(1);wr.out("var view = document.getElementById('"+sc.vref+"');",true);var fnBody=node.children[2];var subCtx=ctx.fork();subCtx.is_function=true;subCtx.in_static_method=true;subCtx.setInMethod();parser.WalkNodeChildren(fnBody,subCtx,wr);subCtx.unsetInMethod();subCtx.in_static_method=false;subCtx.function_level_context=true;this.classWriter.WalkNode(fnBody,subCtx,wr);wr.out("return view;",true);wr.indent(-1);wr.out("}",true);}}]);return WebPageWriter;}();var RangerJavaScriptClassWriter=function(_RangerGenericClassWr9){_inherits(RangerJavaScriptClassWriter,_RangerGenericClassWr9);function RangerJavaScriptClassWriter(){_classCallCheck(this,RangerJavaScriptClassWriter);var _this34=_possibleConstructorReturn(this,(RangerJavaScriptClassWriter.__proto__||Object.getPrototypeOf(RangerJavaScriptClassWriter)).call(this));_this34.thisName="this";/** note: unused */_this34.wrote_header=false;_this34.target_flow=false;_this34.target_typescript=false;return _this34;}_createClass(RangerJavaScriptClassWriter,[{key:"lineEnding",value:function lineEnding(){return";";}},{key:"adjustType",value:function adjustType(tn){if(tn=="this"){return"this";}return tn;}},{key:"CreateTsUnions",value:function CreateTsUnions(parser,ctx,wr){var _this35=this;var root=ctx.getRoot();operatorsOf_4.forEach_5(root.definedClasses,function(item,index){if(item.is_union){wr.out("type union_"+index+" = ",false);wr.indent(1);var cnt=0;operatorsOf.forEach_3(item.is_union_of,function(item,index){if(ctx.isDefinedClass(item)){var cl=ctx.findClass(item);if(false==cl.isNormalClass()){return;}if(cnt>0){wr.out("|",false);}wr.out(_this35.getObjectTypeString(item,ctx),false);cnt=cnt+1;}else{if(cnt>0){wr.out("|",false);}wr.out(_this35.getObjectTypeString(item,ctx),false);cnt=cnt+1;}});wr.indent(-1);wr.out(";",true);}});}},{key:"writeFnCall",value:function writeFnCall(node,ctx,wr){if(node.hasFnCall){var _fc7=node.getFirst();if(typeof node.fnDesc!=="undefined"&&node.fnDesc!=null&&typeof node.fnDesc.nameNode!=="undefined"&&node.fnDesc.nameNode!=null){var fnName=node.fnDesc.nameNode;if(fnName.hasFlag("async")){wr.out("await ",false);}}this.WriteVRef(_fc7,ctx,wr);wr.out("(",false);var givenArgs=node.getSecond();ctx.setInExpr();for(var i=0;i<node.fnDesc.params.length;i++){var arg=node.fnDesc.params[i];if(i>0){wr.out(", ",false);}if(givenArgs.children.length<=i){var defVal=arg.nameNode.getFlag("default");if(typeof defVal!=="undefined"&&defVal!=null){var fc_1=defVal.vref_annotation.getFirst();this.WalkNode(fc_1,ctx,wr);}else{ctx.addError(node,"Default argument was missing");}continue;}var n=givenArgs.children[i];this.WalkNode(n,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);if(node.methodChain.length>0){for(var i_1=0;i_1<node.methodChain.length;i_1++){var cc=node.methodChain[i_1];wr.out("."+cc.methodName,false);wr.out("(",false);ctx.setInExpr();for(var i_2=0;i_2<cc.args.children.length;i_2++){var arg_1=cc.args.children[i_2];if(i_2>0){wr.out(", ",false);}this.WalkNode(arg_1,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);};}if(ctx.expressionLevel()==0){wr.out(";",true);}}}},{key:"CreateCallExpression",value:function CreateCallExpression(node,ctx,wr){if(node.has_call){var obj=node.getSecond();var method=node.getThird();var _args6=node.children[3];if(typeof node.fnDesc!=="undefined"&&node.fnDesc!=null&&typeof node.fnDesc.nameNode!=="undefined"&&node.fnDesc.nameNode!=null){var fnName=node.fnDesc.nameNode;if(fnName.hasFlag("async")){wr.out("await ",false);}}wr.out("(",false);ctx.setInExpr();this.WalkNode(obj,ctx,wr);ctx.unsetInExpr();wr.out(").",false);wr.out(method.vref,false);wr.out("(",false);ctx.setInExpr();for(var i=0;i<_args6.children.length;i++){var arg=_args6.children[i];if(i>0){wr.out(", ",false);}this.WalkNode(arg,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);if(ctx.expressionLevel()==0){wr.out(";",true);}}}},{key:"getObjectTypeString",value:function getObjectTypeString(type_string,ctx){switch(type_string){case"int":return"number";case"string":return"string";case"charbuffer":return"string";case"char":return"number";case"boolean":return"boolean";case"double":return"number";};if(ctx.isDefinedClass(type_string)){var cc=ctx.findClass(type_string);if(cc.is_system){/** unused: const current_sys = ctx **/var sName=cc.systemNames["es6"];return sName;}if(cc.is_union){return"union_"+cc.name;}}return type_string;}},{key:"getTypeString",value:function getTypeString(type_string){switch(type_string){case"int":return"number";case"string":return"string";case"charbuffer":return"string";case"char":return"number";case"boolean":return"boolean";case"double":return"number";};return type_string;}},{key:"writeTypeDef",value:function writeTypeDef(node,ctx,wr){var v_type=node.value_type;var t_name=node.type_name;var a_name=node.array_type;var k_name=node.key_type;if(v_type==10||v_type==11||v_type==0){v_type=node.typeNameAsType(ctx);}if(node.eval_type!=0){v_type=node.eval_type;if(node.eval_type_name.length>0){t_name=node.eval_type_name;}if(node.eval_array_type.length>0){a_name=node.eval_array_type;}if(node.eval_key_type.length>0){k_name=node.eval_key_type;}}switch(v_type){case 17:var rv=node.expression_value.children[0];var sec=node.expression_value.children[1];/** unused: const fc = sec.getFirst() **/wr.out("(",false);for(var i=0;i<sec.children.length;i++){var arg=sec.children[i];if(i>0){wr.out(", ",false);}this.WalkNode(arg,ctx,wr);wr.out(":",false);this.writeTypeDef(arg,ctx,wr);};wr.out(") => ",false);this.writeTypeDef(rv,ctx,wr);break;case 13:wr.out("number",false);break;case 3:wr.out("number",false);break;case 14:wr.out("number",false);break;case 15:wr.out("string",false);break;case 2:wr.out("number",false);break;case 4:wr.out("string",false);break;case 5:wr.out("boolean",false);break;case 7:wr.out("{[key:"+this.getObjectTypeString(k_name,ctx)+"]:"+this.getObjectTypeString(a_name,ctx)+"}",false);break;case 6:wr.out("Array<"+this.getObjectTypeString(a_name,ctx)+">",false);break;default:if(node.type_name=="void"){wr.out("void",false);return;}if(ctx.isDefinedClass(t_name)){var cc=ctx.findClass(t_name);if(cc.is_system){/** unused: const current_sys = ctx **/var sName=cc.systemNames["es6"];wr.out(sName,false);return;}if(cc.is_union){wr.out("union_",false);wr.out(t_name,false);return;}var cc_1=ctx.findClass(t_name);wr.out(cc_1.name,false);return;}wr.out(this.getTypeString(t_name),false);break;};}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){if(node.eval_type==13){if(node.ns.length>1){var rootObjName=node.ns[0];var enumName=node.ns[1];var e=ctx.getEnum(rootObjName);if(typeof e!=="undefined"&&e!=null){wr.out(""+e.values[enumName],false);return;}}}if(node.nsp.length>0){for(var i=0;i<node.nsp.length;i++){var p=node.nsp[i];if(i>0){wr.out(".",false);}if(i==0){var part=node.ns[0];if(part!="this"&&ctx.isMemberVariable(part)){var uc=ctx.getCurrentClass();var currC=uc;var up=currC.findVariable(part);if(typeof up!=="undefined"&&up!=null){wr.out("this.",false);}}if(part=="this"){wr.out("this",false);continue;}}if(p.compiledName.length>0){wr.out(this.adjustType(p.compiledName),false);}else{if(p.name.length>0){wr.out(this.adjustType(p.name),false);}else{wr.out(this.adjustType(node.ns[i]),false);}}};return;}if(node.hasParamDesc){var part_1=node.ns[0];if(part_1!="this"&&ctx.isMemberVariable(part_1)){var uc_1=ctx.getCurrentClass();var currC_1=uc_1;var up_1=currC_1.findVariable(part_1);if(typeof up_1!=="undefined"&&up_1!=null){wr.out("this.",false);}}var p_1=node.paramDesc;wr.out(p_1.compiledName,false);return;}var b_was_static=false;for(var i_1=0;i_1<node.ns.length;i_1++){var part_2=node.ns[i_1];if(i_1>0){if(i_1==1&&b_was_static){wr.out(".",false);}else{wr.out(".",false);}}if(i_1==0){if(ctx.hasClass(part_2)){b_was_static=true;}else{wr.out("",false);}if(part_2!="this"&&ctx.isMemberVariable(part_2)){var uc_2=ctx.getCurrentClass();var currC_2=uc_2;var up_2=currC_2.findVariable(part_2);if(typeof up_2!=="undefined"&&up_2!=null){wr.out("this.",false);}}}wr.out(this.adjustType(part_2),false);};}},{key:"writeVarInitDef",value:function writeVarInitDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;var remove_unused=ctx.hasCompilerFlag("remove-unused-class-vars");if(p.ref_cnt==0&&(remove_unused||p.is_class_variable==false)){return;}var was_set=false;if(node.children.length>2){wr.out("this."+p.compiledName+" = ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();was_set=true;}else{if(nn.value_type==6){wr.out("this."+p.compiledName,false);if(nn.hasFlag("immutable")){wr.out(" = require('immutable').List()",false);}else{wr.out(" = []",false);}was_set=true;}if(nn.value_type==7){wr.out("this."+p.compiledName,false);if(nn.hasFlag("immutable")){wr.out(" = require('immutable').Map()",false);}else{wr.out(" = {}",false);}was_set=true;}}if(was_set){wr.out(";",false);if(p.ref_cnt==0&&p.is_class_variable==true){wr.out(" /** note: unused */",false);}wr.newline();}}}},{key:"writeVarDef",value:function writeVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;/** unused: const opt_js = ctx.hasCompilerFlag("optimize-js") **/if(p.ref_cnt==0&&p.is_class_variable==false){wr.out("/** unused: ",false);}var has_value=false;if(node.children.length>2){has_value=true;}if(p.set_cnt>0||p.is_class_variable||has_value==false){wr.out("let "+p.compiledName,false);}else{wr.out("const "+p.compiledName,false);}if(this.target_typescript){wr.out(" : ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out(" ",false);}if(node.children.length>2){wr.out(" = ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}else{if(nn.value_type==6){if(nn.hasFlag("immutable")){wr.out(" = require('immutable').List()",false);}else{wr.out(" = []",false);}}if(nn.value_type==7){if(nn.hasFlag("immutable")){wr.out(" = require('immutable').Map()",false);}else{wr.out(" = {}",false);}}}if(p.ref_cnt==0&&p.is_class_variable==true){wr.out(" /** note: unused */",false);}if(p.ref_cnt==0&&p.is_class_variable==false){wr.out(" **/ ",true);}else{wr.out(";",false);wr.newline();}}}},{key:"writeClassVarDef",value:function writeClassVarDef(p,ctx,wr){if(this.target_typescript){wr.out(p.compiledName,false);wr.out(": ",false);this.writeTypeDef(p.nameNode,ctx,wr);wr.out(";",true);}}},{key:"CreateLambdaCall",value:function CreateLambdaCall(node,ctx,wr){var fName=node.children[0];var args=node.children[1];ctx.setInExpr();var currM=ctx.getCurrentMethod();if(typeof currM.nameNode!=="undefined"&&currM.nameNode!=null&&currM.nameNode.hasFlag("async")){wr.out("await ",false);}this.WalkNode(fName,ctx,wr);wr.out("(",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(", ",false);}this.WalkNode(arg,ctx,wr);};wr.out(")",false);ctx.unsetInExpr();if(ctx.expressionLevel()==0){wr.out(";",true);}}},{key:"CreateLambda",value:function CreateLambda(node,ctx,wr){var lambdaCtx=node.lambda_ctx;var fName=node.children[0];var args=node.children[1];var body=node.children[2];if(ctx.expressionLevel()>0){wr.out("(",false);}if(fName.hasFlag("async")){wr.out("async ",false);}wr.out("(",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(", ",false);}if(arg.flow_done==false){this.compiler.parser.WalkNode(arg,lambdaCtx,wr);}this.WalkNode(arg,lambdaCtx,wr);if(this.target_typescript){wr.out(" : ",false);this.writeTypeDef(arg,ctx,wr);}};wr.out(")",false);if(this.target_typescript){wr.out(":",false);this.writeTypeDef(fName,ctx,wr);}wr.out(" => { ",true);wr.indent(1);lambdaCtx.restartExpressionLevel();for(var i_1=0;i_1<body.children.length;i_1++){var item=body.children[i_1];this.WalkNode(item,lambdaCtx,wr);};wr.newline();wr.indent(-1);wr.out("}",false);if(ctx.expressionLevel()>0){wr.out(")",false);}else{wr.out("",true);}}},{key:"writeArgsDef",value:function writeArgsDef(fnDesc,ctx,wr){for(var i=0;i<fnDesc.params.length;i++){var arg=fnDesc.params[i];if(i>0){wr.out(", ",false);}wr.out(arg.compiledName,false);if(this.target_typescript){wr.out(" : ",false);this.writeTypeDef(arg.nameNode,ctx,wr);}};}},{key:"writeClass",value:function writeClass(node,ctx,orig_wr){var cl=node.clDesc;var is_react_native=false;var is_rn_default=false;if(ctx.hasCompilerFlag("dead4main")||ctx.hasCompilerSetting("dceclass")){if(cl.is_used_by_main==false){return;}}if(cl.is_interface){orig_wr.out("// interface : "+cl.name,true);return;}if(typeof cl==="undefined"){return;}if(cl.nameNode.hasFlag("ReactNative")){is_react_native=true;this.compFlags["ReactNative"]=true;}if(cl.nameNode.hasFlag("default")){is_rn_default=true;}var wr=orig_wr;/** unused: const importFork = wr.fork() **/if(this.wrote_header==false){this.wrote_header=true;if(ctx.hasCompilerFlag("nodecli")){wr.out("#!/usr/bin/env node",true);}if(ctx.hasCompilerFlag("nodemodule")){var root=ctx.getRoot();operatorsOf_4.forEach_5(root.definedClasses,function(item,index){if(ctx.hasCompilerFlag("dead4main")||ctx.hasCompilerSetting("dceclass")){if(item.is_used_by_main==false){return;}}if(item.isNormalClass()){var theEnd=wr.getTag("file_end");theEnd.out("module.exports."+item.name+" = "+item.name+";",true);}});}this.target_flow=ctx.hasCompilerFlag("flow");this.target_typescript=ctx.hasCompilerFlag("typescript");if(this.target_typescript){this.CreateTsUnions(this.compiler.parser,ctx,wr);}if(ctx.hasCompilerFlag("npm")){this.writeNpmPackage(node,ctx,wr);}}var b_extd=false;if(is_react_native){wr.out("export ",false);if(is_rn_default){wr.out(" default ",false);}}wr.out("class "+cl.name+" ",false);if(is_react_native){wr.out(" extends Component ",false);}else{for(var i=0;i<cl.extends_classes.length;i++){var pName=cl.extends_classes[i];if(i==0){wr.out(" extends ",false);}wr.out(pName,false);b_extd=true;};}wr.out(" {",true);wr.indent(1);for(var i_1=0;i_1<cl.variables.length;i_1++){var pvar=cl.variables[i_1];this.writeClassVarDef(pvar,ctx,wr);};if(is_react_native==false){wr.out("constructor(",false);if(cl.has_constructor){var constr=cl.constructor_fn;this.writeArgsDef(constr,ctx,wr);}wr.out(") {",true);wr.indent(1);if(b_extd){wr.out("super()",true);}for(var i_2=0;i_2<cl.variables.length;i_2++){var pvar_1=cl.variables[i_2];this.writeVarInitDef(pvar_1.node,ctx,wr);};if(cl.has_constructor){var constr_1=cl.constructor_fn;wr.newline();var subCtx=constr_1.fnCtx;subCtx.is_function=true;this.WalkNode(constr_1.fnBody,subCtx,wr);}wr.newline();wr.indent(-1);wr.out("}",true);}for(var i_3=0;i_3<cl.defined_variants.length;i_3++){var fnVar=cl.defined_variants[i_3];var mVs=cl.method_variants[fnVar];for(var i_4=0;i_4<mVs.variants.length;i_4++){var variant=mVs.variants[i_4];if(variant.nameNode.hasFlag("async")){wr.out("async ",false);}wr.out(""+variant.compiledName+" (",false);this.writeArgsDef(variant,ctx,wr);wr.out(")",false);if(this.target_typescript){wr.out(" : ",false);this.writeTypeDef(variant.nameNode,ctx,wr);wr.out(" ",false);}wr.out(" {",true);wr.indent(1);wr.newline();var _subCtx_4=variant.fnCtx;_subCtx_4.is_function=true;operatorsOf_4.forEach_11(_subCtx_4.localVariables,function(item,index){if(item.is_register){wr.out("// register "+item.name,true);}});this.WalkNode(variant.fnBody,_subCtx_4,wr);wr.newline();wr.indent(-1);wr.out("};",true);};};if(this.target_typescript){for(var i_5=0;i_5<cl.static_methods.length;i_5++){var variant_1=cl.static_methods[i_5];if(variant_1.nameNode.hasFlag("main")){continue;}wr.out("static ",false);wr.out(""+variant_1.compiledName+" (",false);this.writeArgsDef(variant_1,ctx,wr);wr.out(")",false);wr.out(" : ",false);this.writeTypeDef(variant_1.nameNode,ctx,wr);wr.out(" ",false);wr.out(" {",true);wr.indent(1);wr.newline();var subCtx_2=variant_1.fnCtx;subCtx_2.is_function=true;this.WalkNode(variant_1.fnBody,subCtx_2,wr);wr.newline();wr.indent(-1);wr.out("};",true);};}wr.indent(-1);wr.out("}",true);if(this.target_typescript==false){for(var i_6=0;i_6<cl.static_methods.length;i_6++){var variant_2=cl.static_methods[i_6];if(variant_2.nameNode.hasFlag("main")){continue;}else{var asyncKeyword="";if(variant_2.nameNode.hasFlag("async")){asyncKeyword="async ";}wr.out(cl.name+"."+variant_2.compiledName+" = "+asyncKeyword+"function(",false);this.writeArgsDef(variant_2,ctx,wr);wr.out(") {",true);}wr.indent(1);wr.newline();var subCtx_3=variant_2.fnCtx;subCtx_3.is_function=true;this.WalkNode(variant_2.fnBody,subCtx_3,wr);wr.newline();wr.indent(-1);wr.out("};",true);};}if(ctx.hasCompilerFlag("nodemodule")==false){for(var i_7=0;i_7<cl.static_methods.length;i_7++){var variant_3=cl.static_methods[i_7];ctx.disableCurrentClass();if(variant_3.nameNode.hasFlag("main")&&variant_3.nameNode.code.filename==ctx.getRootFile()){var asyncKeyword_1="";if(variant_3.nameNode.hasFlag("async")){asyncKeyword_1="async ";}var theEnd_1=wr.getTag("file_end");theEnd_1.out("/* static JavaSript main routine at the end of the JS file */",false);theEnd_1.newline();theEnd_1.out(asyncKeyword_1+"function __js_main() {",true);theEnd_1.indent(1);this.WalkNode(variant_3.fnBody,ctx,theEnd_1);theEnd_1.newline();theEnd_1.indent(-1);theEnd_1.out("}",true);theEnd_1.out("__js_main();",true);}};}}},{key:"BuildAST",value:function BuildAST(code_string){var lang_code=new SourceCode(code_string);lang_code.filename="services";var lang_parser=new RangerLispParser(lang_code);lang_parser.parse(false);var node=lang_parser.rootNode;return node;}},{key:"CreateServices",value:function CreateServices(parser,ctx,orig_wr){if(ctx.hasCompilerFlag("client")){ctx.addError(CodeNode.blockNode(),"client service writing for target JavaScript is not implemented");return;}var root=ctx.getRoot();var serviceBlock=CodeNode.blockNode();var wr=new CodeWriter();wr.out("class test_webservice {",true);wr.indent(1);wr.out("fn run () {",true);wr.indent(1);wr.out("def www (create_web_server)",true);wr.out("prepare_server www",true);operatorsOf_4.forEach_16(root.appServices,function(item,index){try{var paramList=item.getThird();var param=paramList.getFirst();wr.out("www.post_route(\"/"+item.appGUID+"\" {",true);wr.indent(1);wr.out("def obj ("+param.type_name+".fromDictionary( (from_string (get_post_data req ))) )",true);wr.out("def service (new appServices)",true);wr.out("def data (service."+item.appGUID+"(obj))",true);wr.out("res.send((to_string (data.toDictionary())))",true);wr.indent(-1);wr.out("})",true);var nn=item.getSecond();nn.vref=item.appGUID;var params=item.getThird();var block_index=3;var ch_len=item.children.length-1;for(var i=0;i<item.children.length;i++){var cb=item.children[i];if(i>3){if(cb.vref.length>0){if(ctx.hasCompilerFlag(cb.vref)&&i<ch_len){block_index=i+1;}}}};var codeBlock=item.getChild(block_index);serviceBlock.children.push(CodeNode.op3("fn",[nn,params,codeBlock]));}catch(e){ctx.addError(item,"Invalid service function");}});wr.indent(-1);wr.out("www.startServer( 1777, {",true);wr.indent(1);wr.out("print \"Server started\"",true);wr.indent(-1);wr.out("}",true);wr.out("}",true);wr.indent(-1);wr.out("}",true);var codeNode=this.BuildAST(wr.getCode());var serviceClassDef=CodeNode.op3("class",[CodeNode.vref1("appServices"),serviceBlock]);/** unused: const subCtx = root.fork() **/var theEnd=orig_wr.getTag("file_end");parser.WalkCollectMethods(serviceClassDef,root,theEnd);parser.WalkCollectMethods(codeNode,root,theEnd);parser.WalkNode(serviceClassDef,root,theEnd);parser.WalkNode(codeNode,root,theEnd);theEnd.out("(new test_webservice).run();",true);}},{key:"CreatePages",value:function CreatePages(parser,ctx,orig_wr){var _this36=this;var wr=orig_wr.getFileWriter(".","pages.js");wr.out("class theApplicationClass {",true);wr.indent(1);operatorsOf_4.forEach_16(ctx.appPages,function(item,index){_this36.CreatePage(parser,item,ctx,wr);});wr.indent(-1);wr.out("}",true);}},{key:"CreatePage",value:function CreatePage(parser,node,ctx,orig_wr){var writer=new WebPageWriter();writer.classWriter=this;writer.CreatePage(parser,node,ctx,orig_wr);}},{key:"writeNpmPackage",value:function writeNpmPackage(node,ctx,orig_wr){var wr=orig_wr.getFileWriter(".","package.json");var opts=["name","version","description","author","license"];wr.out("{",true);wr.indent(1);operatorsOf.forEach_3(opts,function(item,index){if(ctx.hasCompilerSetting(item)==false){ctx.addError(node,"NPM package requires option -"+item+"=<value>");}else{wr.out("\""+item+"\" : \""+ctx.getCompilerSetting(item)+"\",",true);}});var target_file=ctx.getCompilerSetting("o");if(ctx.hasCompilerFlag("nodecli")){wr.out("\"bin\": {\""+ctx.getCompilerSetting("name")+"\":\""+target_file+"\"},",true);}wr.out("\"scripts\":{},",true);wr.out("\"main\":\""+target_file+"\"",true);wr.indent(-1);wr.out("}",true);}}]);return RangerJavaScriptClassWriter;}(RangerGenericClassWriter);var RangerRangerClassWriter=function(_RangerGenericClassWr10){_inherits(RangerRangerClassWriter,_RangerGenericClassWr10);function RangerRangerClassWriter(){_classCallCheck(this,RangerRangerClassWriter);return _possibleConstructorReturn(this,(RangerRangerClassWriter.__proto__||Object.getPrototypeOf(RangerRangerClassWriter)).call(this));}_createClass(RangerRangerClassWriter,[{key:"adjustType",value:function adjustType(tn){if(tn=="this"){return"this";}return tn;}},{key:"getObjectTypeString",value:function getObjectTypeString(type_string,ctx){return type_string;}},{key:"getTypeString",value:function getTypeString(type_string){return type_string;}},{key:"writeArrayLiteral",value:function writeArrayLiteral(node,ctx,wr){var _this38=this;wr.out("([] ",false);operatorsOf.forEach_6(node.children,function(item,index){if(index>0){wr.out(" ",false);}_this38.WalkNode(item,ctx,wr);});wr.out(")",false);}},{key:"writeTypeDef",value:function writeTypeDef(node,ctx,wr){var v_type=node.value_type;var t_name=node.type_name;var a_name=node.array_type;var k_name=node.key_type;if(v_type==10||v_type==11||v_type==0){v_type=node.typeNameAsType(ctx);}if(node.eval_type!=0){v_type=node.eval_type;if(node.eval_type_name.length>0){t_name=node.eval_type_name;}if(node.eval_array_type.length>0){a_name=node.eval_array_type;}if(node.eval_key_type.length>0){k_name=node.eval_key_type;}}if(v_type==7){wr.out("["+k_name+":"+a_name+"]",false);return;}if(v_type==6){wr.out("["+a_name+"]",false);return;}wr.out(t_name,false);}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){wr.out(node.vref,false);}},{key:"WriteVRefWithOpt",value:function WriteVRefWithOpt(node,ctx,wr){wr.out(node.vref,false);var flags=["optional","weak","strong","temp","lives","returns","returnvalue"];var some_set=false;for(var i=0;i<flags.length;i++){var flag=flags[i];if(node.hasFlag(flag)){if(false==some_set){wr.out("@(",false);some_set=true;}else{wr.out(" ",false);}wr.out(flag,false);}};if(some_set){wr.out(")",false);}}},{key:"writeVarDef",value:function writeVarDef(node,ctx,wr){if(node.hasParamDesc){var nn=node.children[1];var p=nn.paramDesc;wr.out("def ",false);this.WriteVRefWithOpt(nn,ctx,wr);wr.out(":",false);this.writeTypeDef(p.nameNode,ctx,wr);if(node.children.length>2){wr.out(" ",false);ctx.setInExpr();var value=node.getThird();this.WalkNode(value,ctx,wr);ctx.unsetInExpr();}wr.newline();}}},{key:"CreateLambdaCall",value:function CreateLambdaCall(node,ctx,wr){var fName=node.children[0];var args=node.children[1];this.WriteVRef(fName,ctx,wr);wr.out("(",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(" ",false);}this.WalkNode(arg,ctx,wr);};wr.out(")",false);if(ctx.expressionLevel()==0){wr.out(" ",true);}}},{key:"CreateLambda",value:function CreateLambda(node,ctx,wr){var lambdaCtx=node.lambda_ctx;var nn=node.children[0];var args=node.children[1];var body=node.children[2];wr.out("(fn:",false);this.writeTypeDef(nn,ctx,wr);wr.out(" (",false);for(var i=0;i<args.children.length;i++){var arg=args.children[i];if(i>0){wr.out(" ",false);}this.WriteVRefWithOpt(arg,ctx,wr);wr.out(":",false);this.writeTypeDef(arg,ctx,wr);};wr.out(")",false);wr.out(" { ",true);wr.indent(1);lambdaCtx.restartExpressionLevel();var newLambdaCtx=lambdaCtx.fork();newLambdaCtx.targetLangName="ranger";for(var i_1=0;i_1<body.children.length;i_1++){var item=body.children[i_1];this.WalkNode(item,newLambdaCtx,wr);};wr.newline();wr.indent(-1);wr.out("})",true);}},{key:"writeFnCall",value:function writeFnCall(node,ctx,wr){if(node.hasFnCall){if(ctx.expressionLevel()>0){wr.out("(",false);}var _fc8=node.getFirst();this.WriteVRef(_fc8,ctx,wr);wr.out("(",false);var givenArgs=node.getSecond();ctx.setInExpr();for(var i=0;i<node.fnDesc.params.length;i++){var arg=node.fnDesc.params[i];if(i>0){wr.out(" ",false);}if(givenArgs.children.length<=i){var defVal=arg.nameNode.getFlag("default");if(typeof defVal!=="undefined"&&defVal!=null){var fc_1=defVal.vref_annotation.getFirst();this.WalkNode(fc_1,ctx,wr);}else{ctx.addError(node,"Default argument was missing");}continue;}var n=givenArgs.children[i];this.WalkNode(n,ctx,wr);};ctx.unsetInExpr();wr.out(")",false);if(ctx.expressionLevel()>0){wr.out(")",false);}if(ctx.expressionLevel()==0){wr.newline();}}}},{key:"writeNewCall",value:function writeNewCall(node,ctx,wr){if(node.hasNewOper){var cl=node.clDesc;/** unused: const fc = node.getSecond() **/wr.out("(new "+node.clDesc.name,false);wr.out("(",false);var constr=cl.constructor_fn;var givenArgs=node.getThird();if(typeof constr!=="undefined"&&constr!=null){for(var i=0;i<constr.params.length;i++){var arg=constr.params[i];var n=givenArgs.children[i];if(i>0){wr.out(" ",false);}if(true||typeof arg.nameNode!=="undefined"&&arg.nameNode!=null){this.WalkNode(n,ctx,wr);}};}wr.out("))",false);}}},{key:"writeArgsDef",value:function writeArgsDef(fnDesc,ctx,wr){for(var i=0;i<fnDesc.params.length;i++){var arg=fnDesc.params[i];if(i>0){wr.out(",",false);}wr.out(" ",false);this.WriteVRefWithOpt(arg.nameNode,ctx,wr);wr.out(":",false);this.writeTypeDef(arg.nameNode,ctx,wr);};}},{key:"CreateCallExpression",value:function CreateCallExpression(node,ctx,wr){if(node.has_call){var obj=node.getSecond();var method=node.getThird();var _args7=node.children[3];wr.out("(call ",false);ctx.setInExpr();this.WalkNode(obj,ctx,wr);ctx.unsetInExpr();wr.out(" ",false);wr.out(method.vref,false);wr.out("(",false);ctx.setInExpr();for(var i=0;i<_args7.children.length;i++){var arg=_args7.children[i];if(i>0){wr.out(" ",false);}this.WalkNode(arg,ctx,wr);};ctx.unsetInExpr();wr.out("))",false);if(ctx.expressionLevel()==0){}}}},{key:"writeClass",value:function writeClass(node,ctx,orig_wr){var cl=node.clDesc;if(typeof cl==="undefined"){return;}var wr=orig_wr;var importFork=wr.fork();wr.out("",true);wr.out("class "+cl.name,false);wr.out(" { ",true);wr.indent(1);if(cl.extends_classes.length>0){wr.out("Extends(",false);for(var i=0;i<cl.extends_classes.length;i++){var pName=cl.extends_classes[i];wr.out(pName,false);};wr.out(")",true);}wr.createTag("utilities");for(var i_1=0;i_1<cl.variables.length;i_1++){var pvar=cl.variables[i_1];this.writeVarDef(pvar.node,ctx,wr);};if(cl.has_constructor){var constr=cl.constructor_fn;wr.out("",true);wr.out("Constructor (",false);this.writeArgsDef(constr,ctx,wr);wr.out(" ) {",true);wr.indent(1);wr.newline();var subCtx=constr.fnCtx;subCtx.is_function=true;this.WalkNode(constr.fnBody,subCtx,wr);wr.newline();wr.indent(-1);wr.out("}",true);}for(var i_2=0;i_2<cl.static_methods.length;i_2++){var variant=cl.static_methods[i_2];wr.out("",true);if(variant.nameNode.hasFlag("main")){wr.out("sfn m@(main):void () {",true);}else{wr.out("sfn ",false);this.WriteVRefWithOpt(variant.nameNode,ctx,wr);wr.out(":",false);this.writeTypeDef(variant.nameNode,ctx,wr);wr.out(" (",false);this.writeArgsDef(variant,ctx,wr);wr.out(") {",true);}wr.indent(1);wr.newline();var _subCtx_5=variant.fnCtx;_subCtx_5.is_function=true;this.WalkNode(variant.fnBody,_subCtx_5,wr);wr.newline();wr.indent(-1);wr.out("}",true);};for(var i_3=0;i_3<cl.defined_variants.length;i_3++){var fnVar=cl.defined_variants[i_3];var mVs=cl.method_variants[fnVar];for(var i_4=0;i_4<mVs.variants.length;i_4++){var variant_1=mVs.variants[i_4];wr.out("",true);wr.out("fn ",false);this.WriteVRefWithOpt(variant_1.nameNode,ctx,wr);wr.out(":",false);this.writeTypeDef(variant_1.nameNode,ctx,wr);wr.out(" ",false);wr.out("(",false);this.writeArgsDef(variant_1,ctx,wr);wr.out(") {",true);wr.indent(1);wr.newline();var subCtx_2=variant_1.fnCtx;subCtx_2.is_function=true;this.WalkNode(variant_1.fnBody,subCtx_2,wr);wr.newline();wr.indent(-1);wr.out("}",true);};};wr.indent(-1);wr.out("}",true);var import_list=wr.getImports();for(var i_5=0;i_5<import_list.length;i_5++){var codeStr=import_list[i_5];importFork.out("Import \""+codeStr+"\"",true);};}}]);return RangerRangerClassWriter;}(RangerGenericClassWriter);var OpList=function OpList(){_classCallCheck(this,OpList);this.list=[];};var RangerActiveOperators=function(){function RangerActiveOperators(){_classCallCheck(this,RangerActiveOperators);this.opHash={};this.initialized=false;}_createClass(RangerActiveOperators,[{key:"fork",value:function fork(fromOperator){var newOps=new RangerActiveOperators();newOps.parent=this;for(var i=0;i<fromOperator.children.length;i++){var lch=fromOperator.children[i];var _fc9=lch.getFirst();if(_fc9.vref=="operators"){var n=lch.getSecond();newOps.stdCommands=n;}};return newOps;}},{key:"initializeOpCache",value:function initializeOpCache(){operatorsOf_4.forEach_10(this.opHash,function(item,index){item.list.length=0;});for(var i=0;i<this.stdCommands.children.length;i++){var lch=this.stdCommands.children[i];var _fc10=lch.getFirst();if(typeof this.opHash[_fc10.vref]!="undefined"&&this.opHash.hasOwnProperty(_fc10.vref)){var opList=this.opHash[_fc10.vref];opList.list.push(lch);}else{var newOpList=new OpList();this.opHash[_fc10.vref]=newOpList;newOpList.list.push(lch);}};this.initialized=true;}},{key:"getOperators",value:function getOperators(name){var results=[];if(false==this.initialized){this.initializeOpCache();}var items=this.opHash[name];if(typeof items!=="undefined"&&items!=null){return items.list;}return results;}},{key:"initFrom",value:function initFrom(main){var lang=void 0;for(var i=0;i<main.children.length;i++){var m=main.children[i];var _fc11=m.getFirst();if(_fc11.vref=="language"){lang=m;}};if(typeof lang==="undefined"){return;}/** unused: let cmds **/var langNodes=lang.children[1];for(var i_1=0;i_1<langNodes.children.length;i_1++){var lch=langNodes.children[i_1];var fc_1=lch.getFirst();if(fc_1.vref=="commands"){/** unused: const n = lch.getSecond() **/this.stdCommands=lch.getSecond();}};return;}}]);return RangerActiveOperators;}();var LiveCompiler=function(){function LiveCompiler(){_classCallCheck(this,LiveCompiler);this.hasCreatedPolyfill={};/** note: unused */this.repeat_index=0;this.installedFile={};}_createClass(LiveCompiler,[{key:"initWriter",value:function initWriter(ctx){if(typeof this.langWriter!=="undefined"&&this.langWriter!=null){return;}var langName=operatorsOf_12.getTargetLang_13(ctx);console.log("Livecompiler starting with language => "+langName);switch(langName){case"go":this.langWriter=new RangerGolangClassWriter();break;case"scala":this.langWriter=new RangerScalaClassWriter();break;case"java7":this.langWriter=new RangerJava7ClassWriter();break;case"swift3":this.langWriter=new RangerSwift3ClassWriter();break;case"kotlin":this.langWriter=new RangerKotlinClassWriter();break;case"php":this.langWriter=new RangerPHPClassWriter();break;case"cpp":this.langWriter=new RangerCppClassWriter();break;case"csharp":this.langWriter=new RangerCSharpClassWriter();break;case"es6":this.langWriter=new RangerJavaScriptClassWriter();break;case"ranger":this.langWriter=new RangerRangerClassWriter();break;};if(typeof this.langWriter!=="undefined"&&this.langWriter!=null){this.langWriter.compiler=this;}else{this.langWriter=new RangerGenericClassWriter();this.langWriter.compiler=this;}}},{key:"EncodeString",value:function EncodeString(node,ctx,wr){/** unused: const encoded_str = "" **/var str_length=node.string_value.length;var encoded_str_2="";var ii=0;while(ii<str_length){var ch=node.string_value.charCodeAt(ii);var cc=ch;switch(cc){case 8:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(98);break;case 9:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(116);break;case 10:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(110);break;case 12:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(102);break;case 13:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(114);break;case 34:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(34);break;case 92:encoded_str_2=encoded_str_2+String.fromCharCode(92)+String.fromCharCode(92);break;default:encoded_str_2=encoded_str_2+String.fromCharCode(ch);break;};ii=ii+1;};return encoded_str_2;}},{key:"WriteScalarValue",value:function WriteScalarValue(node,ctx,wr){this.langWriter.WriteScalarValue(node,ctx,wr);}},{key:"adjustType",value:function adjustType(tn){if(tn=="this"){return"self";}return tn;}},{key:"WriteVRef",value:function WriteVRef(node,ctx,wr){this.langWriter.WriteVRef(node,ctx,wr);}},{key:"writeTypeDef",value:function writeTypeDef(node,ctx,wr){this.langWriter.writeTypeDef(node,ctx,wr);}},{key:"CreateLambdaCall",value:function CreateLambdaCall(node,ctx,wr){this.langWriter.CreateLambdaCall(node,ctx,wr);}},{key:"CreateCallExpression",value:function CreateCallExpression(node,ctx,wr){this.langWriter.CreateCallExpression(node,ctx,wr);}},{key:"CreateLambda",value:function CreateLambda(node,ctx,wr){this.langWriter.CreateLambda(node,ctx,wr);}},{key:"getTypeString",value:function getTypeString(str,ctx){return"";}},{key:"createPolyfill",value:function createPolyfill(code,ctx,wr){var p_write=wr.getTag("utilities");if((typeof p_write.compiledTags[code]!="undefined"&&p_write.compiledTags.hasOwnProperty(code))==false){p_write.raw(code,true);p_write.compiledTags[code]=true;}}},{key:"installFile",value:function installFile(filename,ctx,wr){if(typeof this.installedFile[filename]!="undefined"&&this.installedFile.hasOwnProperty(filename)){return;}this.installedFile[filename]=true;/** unused: const fName = ((__dirname) + "/") + filename **/if(require("fs").existsSync(__dirname+"/"+"/"+filename)){var fileData=require('fs').readFileSync(__dirname+"/"+'/'+filename,'utf8');if(typeof fileData!=="undefined"&&fileData!=null){var file_wr=wr.getFileWriter(".",filename);file_wr.raw(fileData,false);}else{console.log("did not get contents of "+filename);}}else{console.log("did not find installed file "+__dirname+filename);}}},{key:"findOpCode",value:function findOpCode(op,node,ctx,wr){var fnName=op.children[1];var args=op.children[2];if(op.children.length>3){var details=op.children[3];for(var i=0;i<details.children.length;i++){var det=details.children[i];if(det.children.length>0){var _fc12=det.children[0];if(_fc12.vref=="code"){var match=new RangerArgMatch();var all_matched=match.matchArguments(args,node,ctx,1);if(all_matched==false){return;}var origCode=det.children[1];var theCode=origCode.rebuildWithType(match,true);var appCtx=ctx.getRoot();var stdFnName=appCtx.createSignature(fnName.vref,fnName.vref+theCode.getCode());var stdClass=ctx.findClass("RangerStaticMethods");var runCtx=appCtx.fork();var b_failed=false;if(false==(typeof stdClass.defined_static_methods[stdFnName]!="undefined"&&stdClass.defined_static_methods.hasOwnProperty(stdFnName))){runCtx.setInMethod();var m=new RangerAppFunctionDesc();m.name=stdFnName;m.node=op;m.is_static=true;m.nameNode=fnName;m.fnBody=theCode;for(var ii=0;ii<args.children.length;ii++){var arg=args.children[ii];var p=new RangerAppParamDesc();p.name=arg.vref;p.value_type=arg.value_type;p.node=arg;p.nameNode=arg;p.refType=1;p.varType=4;m.params.push(p);arg.hasParamDesc=true;arg.paramDesc=p;arg.eval_type=arg.value_type;arg.eval_type_name=arg.type_name;runCtx.defineVariable(p.name,p);};stdClass.addStaticMethod(m);var err_cnt=ctx.compilerErrors.length;var flowParser=new RangerFlowParser();var TmpWr=new CodeWriter();flowParser.WalkNode(theCode,runCtx,TmpWr);runCtx.unsetInMethod();var err_delta=ctx.compilerErrors.length-err_cnt;if(err_delta>0){b_failed=true;console.log("Had following compiler errors:");for(var i_1=0;i_1<ctx.compilerErrors.length;i_1++){var e=ctx.compilerErrors[i_1];if(i_1<err_cnt){continue;}var line_index=e.node.getLine();console.log(e.node.getFilename()+" Line: "+line_index);console.log(e.description);console.log(e.node.getLineString(line_index));};}else{console.log("no errors found");}}if(b_failed){wr.out("/* custom operator compilation failed */ ",false);}else{wr.out("RangerStaticMethods."+stdFnName+"(",false);for(var i_2=0;i_2<node.children.length;i_2++){var cc=node.children[i_2];if(i_2==0){continue;}if(i_2>1){wr.out(", ",false);}this.WalkNode(cc,ctx,wr);};wr.out(")",false);}return;}}};}}},{key:"findOpTemplate",value:function findOpTemplate(op,node,ctx,wr){/** unused: const fnName = op.children[1] **//** unused: const root = ctx.getRoot() **/var langName=operatorsOf_12.getTargetLang_13(ctx);var rv=void 0;var opDef=op;if(op.children.length>3){var details=op.children[3];for(var i=0;i<details.children.length;i++){var det=details.children[i];if(det.children.length>0){var _fc13=det.children[0];if(_fc13.vref=="templates"){var tplList=det.children[1];for(var i_1=0;i_1<tplList.children.length;i_1++){var tpl=tplList.children[i_1];var tplName=tpl.getFirst();var tplImpl=void 0;tplImpl=tpl.getSecond();if(tplName.vref!="*"&&tplName.vref!=langName){continue;}if(tplName.hasFlag("mutable")){if(false==node.hasFlag("mutable")){continue;}}rv=tplImpl;return rv;};if(langName=="ranger"){(function(){var opNameNode=opDef.getFirst();var opArgs=opDef.getThird();var rangerTpl=CodeNode.fromList([CodeNode.newStr("("+opNameNode.vref+" ")]);var cnt=1;operatorsOf.forEach_6(opArgs.children,function(item,index){if(item.type_name=="block"){rangerTpl.children.push(CodeNode.fromList([CodeNode.vref1("block"),CodeNode.newInt(cnt)]));}else{rangerTpl.children.push(CodeNode.fromList([CodeNode.vref1("e"),CodeNode.newInt(cnt)]));}cnt=cnt+1;});rangerTpl.children.push(CodeNode.newStr(")"));rv=rangerTpl;})();}}}};}return rv;}},{key:"localCall",value:function localCall(node,ctx,wr){if(node.hasFnCall){if(typeof this.langWriter!=="undefined"&&this.langWriter!=null){this.langWriter.writeFnCall(node,ctx,wr);return true;}}if(node.hasNewOper){this.langWriter.writeNewCall(node,ctx,wr);return true;}if(node.hasVarDef){if(node.disabled_node){this.langWriter.disabledVarDef(node,ctx,wr);}else{this.langWriter.writeVarDef(node,ctx,wr);}return true;}if(node.hasClassDescription){this.langWriter.writeClass(node,ctx,wr);return true;}return false;}},{key:"WalkNode",value:function WalkNode(node,in_ctx,wr){var _this39=this;this.initWriter(in_ctx);if(node.disabled_node){return;}var ctx=in_ctx;if(typeof node.evalCtx!=="undefined"&&node.evalCtx!=null){ctx=node.evalCtx;}if(node.register_name.length>0){if(ctx.expressionLevel()>0){if(node.reg_compiled_name.length>0){wr.out(node.reg_compiled_name,false);}else{console.log("Could not find compiled name for "+node.register_name+" at "+node.getCode());}}else{console.log("zero level reg "+node.register_name);}return;}var liveNodes=[];/** unused: const rootItem = node **/if(node.register_expressions.length>0){operatorsOf.forEach_6(node.register_expressions,function(item,index){liveNodes.push(item);});}operatorsOf.forEach_6(liveNodes,function(item,index){if(item.register_set==false){item.register_set=true;_this39.WalkNode(item,ctx,wr);}});if(node.value_type==12){return;}if(node.isPrimitive()){this.WriteScalarValue(node,ctx,wr);return;}this.lastProcessedNode=node;if(node.isFirstVref("property")){this.langWriter.CreatePropertyGet(node,ctx,wr);return;}if(node.is_plugin){return;}if(node.is_array_literal){this.langWriter.writeArrayLiteral(node,ctx,wr);return;}if(node.value_type==11||node.value_type==7||node.value_type==6){this.WriteVRef(node,ctx,wr);return;}if(node.value_type==18){this.WriteVRef(node,ctx,wr);return;}if(node.children.length>0){if(node.has_operator){var op=ctx.findOperator(node);/** unused: const fc = op.getFirst() **/var tplImpl=this.findOpTemplate(op,node,ctx,wr);var evalCtx=ctx;if(typeof node.evalCtx!=="undefined"&&node.evalCtx!=null){evalCtx=node.evalCtx;}if(typeof tplImpl!=="undefined"&&tplImpl!=null){var opName=op.getSecond();if(opName.hasFlag("returns")){this.langWriter.release_local_vars(node,evalCtx,wr);}this.walkCommandList(tplImpl,node,evalCtx,wr);}else{this.findOpCode(op,node,evalCtx,wr);}return;}if(node.is_direct_method_call){this.langWriter.CreateMethodCall(node,ctx,wr);return;}if(node.has_lambda){this.CreateLambda(node,ctx,wr);return;}if(node.has_lambda_call){this.CreateLambdaCall(node,ctx,wr);return;}if(node.is_part_of_chain){return;}if(node.has_call){this.CreateCallExpression(node,ctx,wr);return;}if(node.children.length>1){if(this.localCall(node,ctx,wr)){return;}}/** unused: const fc_1 = node.getFirst() **/}if(node.expression){for(var i=0;i<node.children.length;i++){var item=node.children[i];if(node.didReturnAtIndex>=0&&node.didReturnAtIndex<i){break;}if(node.is_block_node){(function(){var liveNodes_2=[];/** unused: const rootItem_2 = item **/if(item.register_expressions.length>0){operatorsOf.forEach_6(item.register_expressions,function(item,index){liveNodes_2.push(item);});}item.walkTreeUntil(function(item,i){if(item.is_block_node){return false;}if(item.register_expressions.length>0){operatorsOf.forEach_6(item.register_expressions,function(item,index){liveNodes_2.splice(0,0,item);});}return true;});operatorsOf.forEach_6(liveNodes_2,function(item,index){if(item.register_set==false){item.register_set=true;_this39.WalkNode(item,ctx,wr);}});})();}this.WalkNode(item,ctx,wr);};}else{if(node.value_type==17){this.WriteVRef(node,ctx,wr);}}}},{key:"walkCommandList",value:function walkCommandList(cmd,node,ctx,wr){if(ctx.expressionLevel()==0){wr.newline();if(operatorsOf_12.getTargetLang_13(ctx)=="swift3"){var opn=node.operator_node;var nn=opn.getSecond();if(nn.type_name!="void"){wr.out("_ = ",false);}}}if(ctx.expressionLevel()>1){wr.out("(",false);}for(var i=0;i<cmd.children.length;i++){var c=cmd.children[i];this.walkCommand(c,node,ctx,wr);};if(ctx.expressionLevel()>1){wr.out(")",false);}if(ctx.expressionLevel()==0){wr.line_end(this.langWriter.lineEnding());wr.newline();}}},{key:"walkCommand",value:function walkCommand(cmd,node,ctx,wr){if(cmd.expression){if(cmd.children.length<2){ctx.addError(node,"Invalid command");ctx.addError(cmd,"Invalid command");return;}var cmdE=cmd.getFirst();var cmdArg=cmd.getSecond();switch(cmdE.vref){case"service_id":var idx=cmdArg.int_value;if(node.children.length>=idx){var arg=node.children[idx];var root=ctx.getRoot();var sNode=root.appServices[arg.vref];if(typeof sNode!=="undefined"&&sNode!=null){wr.out(sNode.appGUID,false);}else{ctx.addError(arg,"Service not found");}}else{ctx.addError(node,"Service not found");}break;case"log":console.log(cmdArg.string_value);break;case"str":var idx_1=cmdArg.int_value;if(node.children.length>idx_1){var arg_1=node.children[idx_1];wr.out(arg_1.string_value,false);}break;case"block":var idx_2=cmdArg.int_value;if(node.children.length>idx_2){var arg_2=node.children[idx_2];var sCtx=ctx.fork();sCtx.restartExpressionLevel();this.WalkNode(arg_2,sCtx,wr);}break;case"varname":if(ctx.isVarDefined(cmdArg.vref)){var p=ctx.getVariableDef(cmdArg.vref);wr.out(p.compiledName,false);}break;case"defvar":var p_1=new RangerAppParamDesc();p_1.name=cmdArg.vref;p_1.value_type=cmdArg.value_type;p_1.node=cmdArg;p_1.nameNode=cmdArg;p_1.is_optional=false;ctx.defineVariable(p_1.name,p_1);break;case"cc":var idx_3=cmdArg.int_value;if(node.children.length>idx_3){var arg_3=node.children[idx_3];var cc=arg_3.string_value.charCodeAt(0);wr.out(""+cc,false);}break;case"optional_option":var idx_4=cmdArg.int_value;if(node.children.length>idx_4){var arg_4=node.children[idx_4];if(ctx.hasCompilerSetting(arg_4.string_value)){var setting=ctx.getCompilerSetting(arg_4.string_value);wr.out(setting,false);}}break;case"required_option":var idx_5=cmdArg.int_value;if(node.children.length>idx_5){var arg_5=node.children[idx_5];if(ctx.hasCompilerSetting(arg_5.string_value)){var setting_1=ctx.getCompilerSetting(arg_5.string_value);wr.out(setting_1,false);}else{ctx.addError(node,"This source code requires compiler option -"+arg_5.string_value+"=<> to be set ");}}break;case"java_case":var idx_6=cmdArg.int_value;if(node.children.length>idx_6){var arg_6=node.children[idx_6];this.WalkNode(arg_6,ctx,wr);if(arg_6.didReturnAtIndex<0){wr.newline();wr.out("break;",true);}}break;case"plugin":if(cmd.children.length>2){var cmdData=cmd.getThird();var name=cmdArg.string_value;ctx.addPluginNode(name,cmdData);}break;case"lambda":var idx_7=cmdArg.int_value;if(node.children.length>idx_7){var arg_7=node.children[idx_7];ctx.setInExpr();this.WalkNode(arg_7,ctx,wr);ctx.unsetInExpr();}break;case"e":var idx_8=cmdArg.int_value;if(node.children.length>idx_8){var arg_8=node.children[idx_8];ctx.setInExpr();this.WalkNode(arg_8,ctx,wr);ctx.unsetInExpr();}break;case"goset":var idx_9=cmdArg.int_value;if(node.children.length>idx_9){var arg_9=node.children[idx_9];ctx.setInExpr();this.langWriter.WriteSetterVRef(arg_9,ctx,wr);ctx.unsetInExpr();}break;case"pe":var idx_10=cmdArg.int_value;if(node.children.length>idx_10){var arg_10=node.children[idx_10];this.WalkNode(arg_10,ctx,wr);}break;case"ptr":var idx_11=cmdArg.int_value;if(node.children.length>idx_11){var arg_11=node.children[idx_11];if(arg_11.hasParamDesc){if(arg_11.paramDesc.nameNode.isAPrimitiveType()==false){wr.out("*",false);}}else{if(arg_11.isAPrimitiveType()==false){wr.out("*",false);}}}break;case"ptrsrc":var idx_12=cmdArg.int_value;if(node.children.length>idx_12){var arg_12=node.children[idx_12];if(arg_12.isPrimitiveType()==false&&arg_12.isPrimitive()==false){wr.out("&",false);}}break;case"nameof":var idx_13=cmdArg.int_value;if(node.children.length>idx_13){var arg_13=node.children[idx_13];wr.out(arg_13.vref,false);}break;case"list":var idx_14=cmdArg.int_value;if(node.children.length>idx_14){var arg_14=node.children[idx_14];for(var i=0;i<arg_14.children.length;i++){var ch=arg_14.children[i];if(i>0){wr.out(" ",false);}ctx.setInExpr();this.WalkNode(ch,ctx,wr);ctx.unsetInExpr();};}break;case"repeat":var idx_15=cmdArg.int_value;this.repeat_index=idx_15;if(node.children.length>=idx_15){var cmdToRepeat=cmd.getThird();var i_1=idx_15;while(i_1<node.children.length){if(i_1>=idx_15){for(var ii=0;ii<cmdToRepeat.children.length;ii++){var cc_1=cmdToRepeat.children[ii];if(cc_1.children.length>0){var _fc14=cc_1.getFirst();if(_fc14.vref=="e"){var dc=cc_1.getSecond();dc.int_value=i_1;}if(_fc14.vref=="block"){var dc_1=cc_1.getSecond();dc_1.int_value=i_1;}}};this.walkCommandList(cmdToRepeat,node,ctx,wr);}i_1=i_1+1;};}break;case"repeat_from":var idx_16=cmdArg.int_value;this.repeat_index=idx_16;if(node.children.length>=idx_16){var cmdToRepeat_1=cmd.getThird();var i_2=idx_16;while(i_2<node.children.length){if(i_2>=idx_16){for(var ii_1=0;ii_1<cmdToRepeat_1.children.length;ii_1++){var cc_2=cmdToRepeat_1.children[ii_1];if(cc_2.children.length>0){var fc_1=cc_2.getFirst();if(fc_1.vref=="e"){var dc_2=cc_2.getSecond();dc_2.int_value=i_2;}if(fc_1.vref=="block"){var dc_3=cc_2.getSecond();dc_3.int_value=i_2;}}};this.walkCommandList(cmdToRepeat_1,node,ctx,wr);if(i_2+1<node.children.length){wr.out(",",false);}}i_2=i_2+1;};}break;case"comma":var idx_17=cmdArg.int_value;if(node.children.length>idx_17){var arg_15=node.children[idx_17];for(var i_3=0;i_3<arg_15.children.length;i_3++){var ch_1=arg_15.children[i_3];if(i_3>0){wr.out(",",false);}ctx.setInExpr();this.WalkNode(ch_1,ctx,wr);ctx.unsetInExpr();};}break;case"swift_rc":var idx_18=cmdArg.int_value;if(node.children.length>idx_18){var arg_16=node.children[idx_18];if(arg_16.hasParamDesc){if(arg_16.paramDesc.ref_cnt==0){wr.out("_",false);}else{var p_2=ctx.getVariableDef(arg_16.vref);wr.out(p_2.compiledName,false);}}else{wr.out(arg_16.vref,false);}}break;case"r_ktype":var idx_19=cmdArg.int_value;if(node.children.length>idx_19){var arg_17=node.children[idx_19];if(arg_17.hasParamDesc){var ss=this.langWriter.getObjectTypeString(arg_17.paramDesc.nameNode.key_type,ctx);wr.out(ss,false);}else{var ss_1=this.langWriter.getObjectTypeString(arg_17.key_type,ctx);wr.out(ss_1,false);}}break;case"r_atype":var idx_20=cmdArg.int_value;if(node.children.length>idx_20){var arg_18=node.children[idx_20];if(arg_18.hasParamDesc){var ss_2=this.langWriter.getObjectTypeString(arg_18.paramDesc.nameNode.array_type,ctx);wr.out(ss_2,false);}else{var ss_3=this.langWriter.getObjectTypeString(arg_18.array_type,ctx);wr.out(ss_3,false);}}break;case"r_atype_fname":var idx_21=cmdArg.int_value;if(node.children.length>idx_21){var arg_19=node.children[idx_21];if(arg_19.hasParamDesc){var ss_4=this.langWriter.getObjectTypeString(arg_19.paramDesc.nameNode.array_type,ctx);if(ss_4=="interface{}"){ss_4="interface";}wr.out(ss_4,false);}else{var ss_5=this.langWriter.getObjectTypeString(arg_19.array_type,ctx);if(ss_5=="interface{}"){ss_5="interface";}wr.out(ss_5,false);}}break;case"custom":this.langWriter.CustomOperator(node,ctx,wr);break;case"arraytype":var idx_22=cmdArg.int_value;if(node.children.length>idx_22){var arg_20=node.children[idx_22];if(arg_20.hasParamDesc){this.langWriter.writeArrayTypeDef(arg_20.paramDesc.nameNode,ctx,wr);}else{this.langWriter.writeArrayTypeDef(arg_20,ctx,wr);}}break;case"java_class":try{var fName=cmdArg.string_value+".java";var p_write=wr.getTag("utilities");if((typeof p_write.compiledTags[fName]!="undefined"&&p_write.compiledTags.hasOwnProperty(fName))==false){var code=cmd.getThird();var classWr=wr.getFileWriter(".",fName);if(classWr.getCode().length>0){}else{var package_name=ctx.getCompilerSetting("package");classWr.out("package "+package_name+";",true);classWr.raw(code.string_value,false);p_write.compiledTags[fName]=true;}}}catch(e){}break;case"rawtype":var idx_23=cmdArg.int_value;if(node.children.length>idx_23){var arg_21=node.children[idx_23];if(arg_21.hasParamDesc){this.langWriter.writeRawTypeDef(arg_21.paramDesc.nameNode,ctx,wr);}else{this.langWriter.writeRawTypeDef(arg_21,ctx,wr);}}break;case"macro":var p_write_1=wr.getTag("utilities");var newWriter=new CodeWriter();var testCtx=ctx.fork();testCtx.restartExpressionLevel();testCtx.targetLangName="ranger";this.walkCommandList(cmdArg,node,testCtx,newWriter);var p_str=newWriter.getCode();/** unused: const root_1 = ctx.getRoot() **/if((typeof p_write_1.compiledTags[p_str]!="undefined"&&p_write_1.compiledTags.hasOwnProperty(p_str))==false){p_write_1.compiledTags[p_str]=true;var mCtx=ctx.fork();mCtx.restartExpressionLevel();mCtx.targetLangName="ranger";this.walkCommandList(cmdArg,node,mCtx,p_write_1);}break;case"install_file":this.installFile(cmdArg.string_value,ctx,wr);break;case"create_polyfill":this.createPolyfill(cmdArg.string_value,ctx,wr);break;case"typeof":var idx_24=cmdArg.int_value;if(node.children.length>=idx_24){var arg_22=node.children[idx_24];if(arg_22.hasParamDesc){this.writeTypeDef(arg_22.paramDesc.nameNode,ctx,wr);}else{this.writeTypeDef(arg_22,ctx,wr);}}break;case"imp":this.langWriter.import_lib(cmdArg.string_value,ctx,wr);break;case"atype":var idx_25=cmdArg.int_value;if(node.children.length>=idx_25){var arg_23=node.children[idx_25];var p_3=this.findParamDesc(arg_23,ctx,wr);var _nameNode=p_3.nameNode;var tn=_nameNode.array_type;wr.out(this.getTypeString(tn,ctx),false);}break;};}else{if(cmd.value_type==11){switch(cmd.vref){case"nl":wr.newline();break;case"space":wr.out(" ",false);break;case"I":wr.indent(1);break;case"i":wr.indent(-1);break;case"op":var fc_2=node.getFirst();wr.out(fc_2.vref,false);break;};}else{if(cmd.value_type==4){wr.out(cmd.string_value,false);}}}}},{key:"compile",value:function compile(node,ctx,wr){}},{key:"findParamDesc",value:function findParamDesc(obj,ctx,wr){var varDesc=void 0;var set_nsp=false;var classDesc=void 0;if(0==obj.nsp.length){set_nsp=true;}if(obj.vref!="this"){if(obj.ns.length>1){var cnt=obj.ns.length;var classRefDesc=void 0;for(var i=0;i<obj.ns.length;i++){var strname=obj.ns[i];if(i==0){if(strname=="this"){classDesc=ctx.getCurrentClass();if(set_nsp){obj.nsp.push(classDesc);}}else{if(ctx.isDefinedClass(strname)){classDesc=ctx.findClass(strname);if(set_nsp){obj.nsp.push(classDesc);}continue;}classRefDesc=ctx.getVariableDef(strname);if(typeof classRefDesc==="undefined"){ctx.addError(obj,"Error, no description for called object: "+strname);break;}if(set_nsp){obj.nsp.push(classRefDesc);}classRefDesc.ref_cnt=1+classRefDesc.ref_cnt;classDesc=ctx.findClass(classRefDesc.nameNode.type_name);}}else{if(i<cnt-1){varDesc=classDesc.findVariable(strname);if(typeof varDesc==="undefined"){ctx.addError(obj,"Error, no description for refenced obj: "+strname);}var subClass=varDesc.getTypeName();classDesc=ctx.findClass(subClass);if(set_nsp){obj.nsp.push(varDesc);}continue;}if(typeof classDesc!=="undefined"&&classDesc!=null){varDesc=classDesc.findVariable(strname);if(typeof varDesc==="undefined"){var classMethod=classDesc.findMethod(strname);if(typeof classMethod==="undefined"){classMethod=classDesc.findStaticMethod(strname);if(typeof classMethod==="undefined"){ctx.addError(obj,"variable not found "+strname);}}if(typeof classMethod!=="undefined"&&classMethod!=null){if(set_nsp){obj.nsp.push(classMethod);}return classMethod;}}if(set_nsp){obj.nsp.push(varDesc);}}}};return varDesc;}varDesc=ctx.getVariableDef(obj.vref);if(typeof varDesc.nameNode!=="undefined"&&varDesc.nameNode!=null){}else{console.log("findParamDesc : description not found for "+obj.vref);if(typeof varDesc!=="undefined"&&varDesc!=null){console.log("Vardesc was found though..."+varDesc.name);}ctx.addError(obj,"Error, no description for called object: "+obj.vref);}return varDesc;}var cc=ctx.getCurrentClass();return cc;}}]);return LiveCompiler;}();var ColorConsole=function(){function ColorConsole(){_classCallCheck(this,ColorConsole);}_createClass(ColorConsole,[{key:"out",value:function out(color,str){console.log(str);}}]);return ColorConsole;}();var CmdParams=function(){function CmdParams(){_classCallCheck(this,CmdParams);this.flags={};this.params={};this.values=[];}_createClass(CmdParams,[{key:"hasParam",value:function hasParam(name){return typeof this.params[name]!="undefined"&&this.params.hasOwnProperty(name);}},{key:"getParam",value:function getParam(name){return this.params[name];}},{key:"collect",value:function collect(){var cnt=process.argv.length-2;var i=0;while(cnt>0){var argStr=process.argv[2+i];var firstC=argStr.charCodeAt(0);if(firstC==45){var pS=argStr.substring(1,argStr.length);var parts=pS.split("=");if(parts.length==1){var flag=parts[0];this.flags[flag]=true;}else{var name=parts[0];parts.splice(0,1).pop();var value=parts.join("=");this.params[name]=value;}}else{this.values.push(argStr);}cnt=cnt-1;i=i+1;};}}]);return CmdParams;}();var test_cmdparams=function(){function test_cmdparams(){_classCallCheck(this,test_cmdparams);}_createClass(test_cmdparams,[{key:"run",value:function run(){var prms=new CmdParams();prms.collect();console.log("--- params ----");var pNames=Object.keys(prms.params);for(var i=0;i<pNames.length;i++){var v=pNames[i];console.log(v+" = "+prms.params[v]);};console.log("--- flags ----");var flagNames=Object.keys(prms.flags);for(var i_1=0;i_1<flagNames.length;i_1++){var v_1=flagNames[i_1];console.log(v_1);};console.log("--- values ----");for(var i_2=0;i_2<prms.values.length;i_2++){var v_2=prms.values[i_2];console.log(v_2);};}}]);return test_cmdparams;}();var RangerDocGenerator=function(){function RangerDocGenerator(){_classCallCheck(this,RangerDocGenerator);}_createClass(RangerDocGenerator,[{key:"writeTypeDef",value:function writeTypeDef(item,ctx,wr){var _this40=this;if(item.hasFlag("optional")){wr.out("<optional>",false);}switch(item.value_type){case 6:wr.out("["+item.array_type+"]",false);break;case 7:wr.out("["+item.key_type+":"+item.array_type+"]",false);break;case 17:wr.out("(fn:",false);try{var rv=item.expression_value.children[0];var _args8=item.expression_value.children[1];this.writeTypeDef(rv,ctx,wr);wr.out(" (",false);operatorsOf.forEach_6(_args8.children,function(item,index){if(index>0){wr.out(", ",false);}wr.out(item.vref,false);wr.out(": ",false);_this40.writeTypeDef(item,ctx,wr);});wr.out(")",false);}catch(e){}wr.out(")",false);break;default:if(item.type_name.length>0){wr.out(""+item.type_name,false);}break;};}},{key:"writeArgDefs",value:function writeArgDefs(node,ctx,wr){var _this41=this;operatorsOf.forEach_6(node.children,function(item,index){if(index>0){wr.out(" ",false);}wr.out("`"+item.vref+"`",false);wr.out(":",false);_this41.writeTypeDef(item,ctx,wr);wr.out(" ",false);});}},{key:"createClassDoc",value:function createClassDoc(node,ctx,orig_wr){var _this42=this;if(ctx.hasCompilerSetting("classdoc")){var b_only_documented=false==ctx.hasCompilerFlag("allowempty");var wr=orig_wr.getFileWriter(".",ctx.getCompilerSetting("classdoc"));if(b_only_documented==false){wr.out("# Classes",true);}var root=ctx.getRoot();operatorsOf_4.forEach_5(root.definedClasses,function(item,index){if(false==item.isNormalClass()){return;}if(b_only_documented==false){wr.out("## "+index,true);}var theClass=item;operatorsOf_4.forEach_21(item.method_variants,function(item,index){operatorsOf.forEach_20(item.variants,function(item,index){if(b_only_documented){if(item.git_doc.length==0){return;}}wr.out("#### ",false);if(typeof item.nameNode!="undefined"){if(item.nameNode.type_name!="void"){wr.out("`",false);_this42.writeTypeDef(item.nameNode,ctx,wr);wr.out("` ",false);}}wr.out(theClass.name+":: "+item.name,false);wr.out("(",false);for(var i=0;i<item.params.length;i++){var arg=item.params[i];if(i>0){wr.out(" ",false);}wr.out("`"+arg.compiledName+"`",false);wr.out(":",false);_this42.writeTypeDef(arg.nameNode,ctx,wr);};wr.out(")",false);wr.out("",true);wr.out(item.git_doc,false);wr.out("",true);});});});}}},{key:"writeOpDesc",value:function writeOpDesc(item,ctx,wr){var fc=item.getFirst();var nameNode=item.getSecond();var args=item.getThird();wr.out("| ",false);var name=fc.vref;if(fc.vref=="||"){name="&#124;&#124;";}if(fc.vref=="|"){name="&#124;";}wr.out(name,false);wr.out(" | ",false);if(nameNode.type_name!="void"){wr.out("`",false);this.writeTypeDef(nameNode,ctx,wr);wr.out("` ",false);}wr.out("| ",false);wr.out(" (",false);this.writeArgDefs(args,ctx,wr);wr.out(" )",false);wr.out("| ",false);if(item.hasStringProperty("doc")){wr.out(item.getStringProperty("doc"),false);}wr.out("| ",false);wr.out("",true);}},{key:"writeTypeDoc",value:function writeTypeDoc(list,tester,ctx,wr){var _this43=this;var www=wr.fork();wr.out("",true);wr.out("",true);wr.out("| operator | returns | arguments | description |",true);wr.out("| -------- | ------- | --------- | ------------| ",true);var cnt=0;operatorsOf.forEach_8(list,function(item,index){if(tester(item)){if(cnt>0){www.out(", ",false);}www.out(" `"+item.name+"` ",false);_this43.writeOpDesc(item.node,ctx,wr);cnt=cnt+1;}});}},{key:"createOperatorDoc",value:function createOperatorDoc(node,ctx,orig_wr){if(ctx.hasCompilerSetting("operatordoc")){var wr=orig_wr.getFileWriter(".",ctx.getCompilerSetting("operatordoc"));var allOps=ctx.getAllOperators();var statements=operatorsOf.filter_34(allOps,function(item,index){var is_map_array=false;if(typeof item.firstArg!="undefined"){is_map_array=item.firstArg.value_type==6||item.firstArg.value_type==7;}if(item.name.indexOf("if_")==0){return false;}return item.nameNode.type_name=="void"&&false==is_map_array;});var lang_statements=operatorsOf.filter_34(allOps,function(item,index){if(item.name.indexOf("if_")==0){return true;}return false;});statements=operatorsOf.groupBy_35(statements,function(item){return item.name;});var operator_list=operatorsOf.filter_34(allOps,function(item,index){var is_map_array_1=false;if(typeof item.firstArg!="undefined"){is_map_array_1=item.firstArg.value_type==6||item.firstArg.value_type==7;}return is_map_array_1||item.nameNode.type_name!="void";});var nList=operatorsOf.groupBy_35(operator_list,function(item){var key=item.name;var fc=item.firstArg;if(typeof fc!="undefined"){key=key+(":"+fc.type_name+":"+fc.key_type+":"+fc.array_type);}return key;});wr.out("## Statements",true);this.writeTypeDoc(statements,function(item){return true;},ctx,wr);wr.out("",true);wr.out("## Language switches",true);this.writeTypeDoc(lang_statements,function(item){return true;},ctx,wr);wr.out("",true);wr.out("## Operators without arguments",true);this.writeTypeDoc(nList,function(item){return typeof item.firstArg==="undefined";},ctx,wr);wr.out("",true);wr.out("## Generic operators",true);this.writeTypeDoc(nList,function(item){if(typeof item.firstArg!="undefined"){return item.firstArg.type_name=="T";}return false;},ctx,wr);wr.out("",true);wr.out("## Numeric operators",true);this.writeTypeDoc(nList,function(item){if(typeof item.firstArg!="undefined"){return(item.firstArg.type_name=="int"||item.firstArg.type_name=="double")&&(item.nameNode.type_name=="int"||item.nameNode.type_name=="double");}return false;},ctx,wr);wr.out("",true);wr.out("## Miscellaneous operators",true);this.writeTypeDoc(nList,function(item){if(typeof item.firstArg!="undefined"){return(item.firstArg.type_name=="int"||item.firstArg.type_name=="double")&&item.nameNode.type_name!="int"&&item.nameNode.type_name!="double"&&item.nameNode.type_name!="boolean";}return false;},ctx,wr);wr.out("",true);wr.out("## String operators",true);this.writeTypeDoc(nList,function(item){if(typeof item.firstArg!="undefined"){return item.firstArg.type_name=="string";}return false;},ctx,wr);wr.out("",true);wr.out("",true);wr.out("## Array operators",true);this.writeTypeDoc(nList,function(item){if(typeof item.firstArg!="undefined"){return item.firstArg.value_type==6;}return false;},ctx,wr);wr.out("",true);wr.out("## Map operators",true);this.writeTypeDoc(nList,function(item){if(typeof item.firstArg!="undefined"){return item.firstArg.value_type==7;}return false;},ctx,wr);wr.out("",true);wr.out("## Boolean / test operators",true);this.writeTypeDoc(nList,function(item){if(typeof item.firstArg!="undefined"){return item.nameNode.type_name=="boolean";}return false;},ctx,wr);}}}]);return RangerDocGenerator;}();var viewbuilder_Android=function(){function viewbuilder_Android(){_classCallCheck(this,viewbuilder_Android);}_createClass(viewbuilder_Android,[{key:"_attr",value:function _attr(wr,name,value){wr.out("android:"+name+"="+"\""+value+"\" ",true);}},{key:"elWithText",value:function elWithText(name,node,wr){var _this44=this;wr.out("<"+name+" ",true);wr.indent(1);var width="match_parent";var height="wrap_content";var weight="";operatorsOf.forEach_6(node.children,function(item,index){switch(item.value_type){case 20:_this44._attr(wr,"text",item.string_value);break;};});operatorsOf.forEach_6(node.attrs,function(item,index){if(item.vref=="font-size"){_this44._attr(wr,"textSize",item.string_value+"dp");}if(item.vref=="id"){_this44._attr(wr,"id","@+id/"+item.string_value);}if(item.vref=="width-pros"){weight=item.string_value;}if(item.vref=="width"){width=item.string_value+"dp";}});this._attr(wr,"layout_width",width);this._attr(wr,"layout_height",height);if(weight.length>0){this._attr(wr,"layout_weight",weight);}wr.out("/>",true);wr.indent(-1);}},{key:"WalkNode",value:function WalkNode(node,ctx,wr){var _this45=this;switch(node.vref){case"ScrollView":wr.out("<ScrollView ",true);wr.indent(1);this._attr(wr,"layout_width","match_parent");this._attr(wr,"layout_height","wrap_content");operatorsOf.forEach_6(node.attrs,function(item,index){if(item.vref=="id"){_this45._attr(wr,"id","@+id/"+item.string_value);}});wr.out(">",true);wr.indent(1);operatorsOf.forEach_6(node.children,function(item,index){_this45.WalkNode(item,ctx,wr);});wr.indent(-1);wr.out("</ScrollView>",true);wr.indent(-1);break;case"LinearLayout":wr.out("<LinearLayout ",true);wr.indent(1);this._attr(wr,"layout_width","match_parent");this._attr(wr,"layout_height","wrap_content");var orientation="vertical";operatorsOf.forEach_6(node.attrs,function(item,index){if(item.vref=="id"){_this45._attr(wr,"id","@+id/"+item.string_value);}if(item.vref=="direction"){orientation=item.string_value;}});this._attr(wr,"orientation",orientation);this._attr(wr,"weightSum","100");wr.out(">",true);wr.indent(1);operatorsOf.forEach_6(node.children,function(item,index){_this45.WalkNode(item,ctx,wr);});wr.indent(-1);wr.out("</LinearLayout>",true);wr.indent(-1);break;case"Button":this.elWithText("Button",node,wr);break;case"Text":this.elWithText("TextView",node,wr);break;case"Input":wr.out("<EditText ",true);wr.indent(1);this._attr(wr,"layout_width","match_parent");this._attr(wr,"layout_height","wrap_content");operatorsOf.forEach_6(node.attrs,function(item,index){if(item.vref=="hint"){_this45._attr(wr,"hint",item.string_value);}if(item.vref=="id"){_this45._attr(wr,"id","@+id/"+item.string_value);}if(item.vref=="type"&&item.string_value=="password"){_this45._attr(wr,"inputType","textPassword");}});operatorsOf.forEach_6(node.children,function(item,index){switch(item.value_type){case 20:_this45._attr(wr,"text",item.string_value);break;};});wr.out("/>",true);wr.indent(-1);break;};}},{key:"writeClass",value:function writeClass(node,ctx,orig_wr){var _this46=this;var viewName="";var b_scroll=false;operatorsOf.forEach_6(node.attrs,function(item,index){if(item.vref=="name"){viewName=item.string_value;}if(item.vref=="type"){if(item.string_value=="scroll"){b_scroll=true;}}});var wr=orig_wr.getFileWriter("layout","activity_"+viewName+".xml");wr.out("<?xml version=\"1.0\" encoding=\"utf-8\"?>",true);var viewTag="LinearLayout";if(b_scroll){viewTag="ScrollView";}wr.out("<"+viewTag+" xmlns:android=\"http://schemas.android.com/apk/res/android\" ",true);wr.indent(1);this._attr(wr,"layout_width","match_parent");this._attr(wr,"layout_height","match_parent");if(b_scroll==false){this._attr(wr,"paddingLeft","16dp");this._attr(wr,"paddingRight","16dp");this._attr(wr,"orientation","vertical");}this._attr(wr,"id","@+id/view_id_"+viewName);wr.out(">",true);operatorsOf.forEach_6(node.children,function(item,index){_this46.WalkNode(item,ctx,wr);});wr.indent(-1);wr.out("</"+viewTag+">",true);}}]);return viewbuilder_Android;}();var viewbuilder_Web=function(){function viewbuilder_Web(){_classCallCheck(this,viewbuilder_Web);}_createClass(viewbuilder_Web,[{key:"_attr",value:function _attr(wr,name,value){wr.out(" "+name+"="+"\""+value+"\" ",false);}},{key:"tagAttrs",value:function tagAttrs(node,ctx,wr){var _this47=this;operatorsOf.forEach_6(node.attrs,function(item,index){if(item.vref=="id"){_this47._attr(wr,"x-id",item.string_value);}if(item.vref=="hint"){_this47._attr(wr,"tooltip",item.string_value);_this47._attr(wr,"title",item.string_value);_this47._attr(wr,"placeholder",item.string_value);}});}},{key:"tagText",value:function tagText(node,ctx,wr){operatorsOf.forEach_6(node.children,function(item,index){switch(item.value_type){case 20:wr.out(item.string_value,false);break;};});}},{key:"tag",value:function tag(name,node,ctx,wr){wr.out("<"+name,false);this.tagAttrs(node,ctx,wr);wr.out(">",false);this.tagText(node,ctx,wr);wr.out("</"+name+">",true);}},{key:"WalkNode",value:function WalkNode(node,ctx,wr){switch(node.vref){case"LinearLayout":this.tag("div",node,ctx,wr);break;case"Button":wr.out("<div><a class='waves-effect waves-light btn' ",false);this.tagAttrs(node,ctx,wr);wr.out(">",false);this.tagText(node,ctx,wr);wr.out("</a></div>",false);break;case"Text":this.tag("div",node,ctx,wr);break;case"Input":wr.out("<div>",true);this.tag("input",node,ctx,wr);wr.out("</div>",true);break;};}},{key:"CreateViews",value:function CreateViews(ctx,wr){var _this48=this;wr.out("<!DOCTYPE html>",true);wr.out("<html>",true);wr.indent(1);wr.out("<head>",true);wr.indent(1);wr.out("\r\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css\">\r\n <script src=\"https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js\"></script> \r\n ",true);wr.indent(-1);wr.out("</head>",true);wr.out("<body>",true);operatorsOf_4.forEach_16(ctx.viewClassBody,function(item,index){_this48.writeClass(item,ctx,wr);});wr.out("</body>",true);wr.out("</html>",true);}},{key:"writeClass",value:function writeClass(node,ctx,wr){var _this49=this;var viewName="";operatorsOf.forEach_6(node.attrs,function(item,index){if(item.vref=="name"){viewName=item.string_value;}});wr.out("",true);wr.out("<div id=\""+viewName+"\">",true);wr.indent(1);operatorsOf.forEach_6(node.children,function(item,index){_this49.WalkNode(item,ctx,wr);});wr.indent(-1);wr.out("</div>",true);}}]);return viewbuilder_Web;}();var CompilerInterface=function(){function CompilerInterface(){_classCallCheck(this,CompilerInterface);}_createClass(CompilerInterface,[{key:"getEnvVar",value:function getEnvVar(name){var r_lib=process.env[name];/** unused: let res = [] **/if(typeof r_lib!=="undefined"&&r_lib!=null){return r_lib;}return"";}},{key:"possiblePaths",value:function possiblePaths(envVarName){var res=[];var parts=envVarName.split(";");res.push("./");for(var i=0;i<parts.length;i++){var str=parts[i];var s=str.trim();if(s.length>0){var dirNames=s.split("/");dirNames.pop();var theDir=dirNames.join("/");res.push(theDir);}};res.push(__dirname);return res;}},{key:"searchLib",value:function searchLib(paths,libname){for(var i=0;i<paths.length;i++){var path=paths[i];if(require("fs").existsSync(path+"/"+libname)){return path;}};return"";}},{key:"fillStr",value:function fillStr(cnt){var s="";var i=cnt;while(i>0){s=s+" ";i=i-1;};return s;}},{key:"run",value:function run(params){var allowed_languages=["es6","go","scala","java7","swift3","cpp","php","csharp"];var platform=params.getParam("p");if(typeof platform!=="undefined"&&platform!=null){console.log("platform == "+platform);}var the_file="";var plugins_only=false;var valid_options=["l","Selected language, one of "+allowed_languages.join(", "),"d","output directory, default directory is \"bin/\"","o","output file, default is \"output.<language>\"","classdoc","write class documentation .md file","operatordoc","write operator documention into .md file"];var valid_flags=["deadcode","Eliminate functions which are not called by any other functions","dead4main","Eliminate functions and classes which are unreachable from the main function","forever","Leave the main program into eternal loop (Go, Swift)","allowti","Allow type inference at target lang (creates slightly smaller code)","plugins-only","ignore built-in language output and use only plugins","plugins","(node compiler only) run specified npm plugins -plugins=\"plugin1,plugin2\"","strict","Strict mode. Do not allow automatic unwrapping of optionals outside of try blocks.","typescript","Writes JavaScript code with TypeScript annotations","npm","Write the package.json to the output directory","nodecli","Insert node.js command line header #!/usr/bin/env node to the beginning of the JavaScript file","nodemodule","Export the classes as node.js modules (this option will disable the static main function)","client","the code is ment to be run in the client environment","scalafiddle","scalafiddle.io compatible output","compiler","recompile the compiler","copysrc","copy all the source codes into the target directory"];var parser_pragmas=["@noinfix(true)","disable operator infix parsing and automatic type definition checking "];if(typeof params.flags["compiler"]!="undefined"&&params.flags.hasOwnProperty("compiler")){console.log("---------------------------------------------");console.log(" re-compiling the compiler itself ");console.log("---------------------------------------------");the_file="ng_Compiler.clj";}else{if(params.values.length<1){console.log("Ranger compiler, version "+"2.1.61");console.log("Installed at: "+__dirname);console.log("Usage: <file> <options> <flags>");console.log("Options: -<option>=<value> ");var optCnt=0;while(optCnt<valid_options.length){var option=valid_options[optCnt];var optionDesc=valid_options[optCnt+1];console.log(" -"+option+"=<value> "+this.fillStr(13-option.length)+optionDesc);optCnt=optCnt+2;};console.log("Flags: -<flag> ");var optCnt_1=0;while(optCnt_1<valid_flags.length){var option_1=valid_flags[optCnt_1];var optionDesc_1=valid_flags[optCnt_1+1];console.log(" -"+option_1+" "+this.fillStr(13-option_1.length)+optionDesc_1);optCnt_1=optCnt_1+2;};console.log("Pragmas: (inside the source code files) ");var optCnt_2=0;while(optCnt_2<parser_pragmas.length){var option_2=parser_pragmas[optCnt_2];var optionDesc_2=parser_pragmas[optCnt_2+1];console.log(" "+option_2+" "+this.fillStr(16-option_2.length)+optionDesc_2);optCnt_2=optCnt_2+2;};return;}the_file=params.values[0];}var root_file=the_file;var the_lang_file="Lang.clj";var the_lang="es6";var the_target_dir=process.cwd()+"/bin";var the_target="output";var package_name="";var comp_attrs={};var outDir=params.getParam("o");if(typeof outDir!=="undefined"&&outDir!=null){the_target=outDir;}var langLibEnv=process.env["RANGER_LIB"];if(typeof langLibEnv==="undefined"){console.log("note: RANGER_LIB environment variable not defined");}var theFilePaths=this.possiblePaths(this.getEnvVar("RANGER_LIB"));var theFilePath=this.searchLib(theFilePaths,the_file);if(require("fs").existsSync(theFilePath+"/"+the_file)==false){console.log("Could not compile.");console.log("File not found: "+the_file);return;}var langFilePaths=this.possiblePaths(this.getEnvVar("RANGER_LIB"));var langFilePath=this.searchLib(langFilePaths,the_lang_file);if(require("fs").existsSync(langFilePath+"/"+the_lang_file)==false){console.log("language file "+the_lang_file+" not found! Check the library directory or RANGER_LIB enviroment variable");console.log("currently pointing at : "+langLibEnv);console.log("download: https://raw.githubusercontent.com/terotests/Ranger/master/compiler/Lang.clj");return;}else{console.log("Using language file from : "+langFilePath);}console.log("File to be compiled: "+the_file);var langFileDirs=this.possiblePaths(this.getEnvVar("RANGER_LIB"));var c=require('fs').readFileSync(theFilePath+'/'+the_file,'utf8');var code=new SourceCode(c);code.filename=the_file;var parser=new RangerLispParser(code);if(typeof params.flags["no-op-transform"]!="undefined"&&params.flags.hasOwnProperty("no-op-transform")){parser.disableOperators=true;}parser.parse(typeof params.flags["no-op-transform"]!="undefined"&&params.flags.hasOwnProperty("no-op-transform"));var root=parser.rootNode;console.log("--> ready to compile");var flags=Object.keys(params.flags);for(var ci=0;ci<root.children.length;ci++){var ch=root.children[ci];var inserted_nodes=[];if(ch.children.length>2){var _fc15=ch.getFirst();if(_fc15.vref=="flag"){var fName=ch.getSecond();for(var i=0;i<flags.length;i++){var flag_name=flags[i];if(flag_name==fName.vref){var compInfo=ch.getThird();var i_1=0;var cnt=compInfo.children.length;while(i_1<cnt-1){var fc_1=compInfo.children[i_1];var sc=compInfo.children[i_1+1];switch(fc_1.vref){case"libpath":langFileDirs=this.possiblePaths(sc.string_value);break;case"output":the_target=sc.string_value;break;case"root-file":root_file=sc.string_value;break;case"language":the_lang=sc.string_value;break;case"absolute_output_dir":the_target_dir=sc.string_value;break;case"relative_output_dir":the_target_dir=process.cwd()+"/"+sc.string_value;break;case"package":package_name=sc.string_value;break;case"android_res_dir":comp_attrs[fc_1.vref]=sc.string_value;break;case"web_res_dir":comp_attrs[fc_1.vref]=sc.string_value;break;case"Import":inserted_nodes.push(CodeNode.fromList([CodeNode.vref1("Import"),CodeNode.newStr(sc.string_value)]));break;default:if(sc.string_value.length>0){comp_attrs[fc_1.vref]=sc.string_value;}break;};i_1=i_1+2;};}};ch.children.length=0;for(var i_2=0;i_2<inserted_nodes.length;i_2++){var new_node=inserted_nodes[i_2];console.log(" *** Inserting "+new_node.getCode());root.children.splice(0,0,new_node);};}}};root.children.splice(0,0,CodeNode.fromList([CodeNode.vref1("Import"),CodeNode.newStr("stdlib.clj")]));var outDir_2=params.getParam("o");if(typeof outDir_2!=="undefined"&&outDir_2!=null){the_target=outDir_2;}comp_attrs["o"]=the_target;var outDir_3=params.getParam("d");if(typeof outDir_3!=="undefined"&&outDir_3!=null){the_target_dir=process.cwd()+"/"+outDir_3;}comp_attrs["d"]=the_target_dir;var pLang=params.getParam("l");if(typeof pLang!=="undefined"&&pLang!=null){the_lang=pLang;}var appCtx=new RangerAppWriterContext();appCtx.libraryPaths=langFileDirs;appCtx.compilerSettings["package"]=package_name;if(appCtx.hasCompilerFlag("verbose")){for(var i_3=0;i_3<appCtx.libraryPaths.length;i_3++){var include_path=appCtx.libraryPaths[i_3];console.log("include-path : "+include_path);};}operatorsOf_4.forEach_36(params.flags,function(item,index){var n=index;appCtx.compilerFlags[n]=true;});operatorsOf_4.forEach_24(params.params,function(item,index){var v=item;comp_attrs[index]=v;});operatorsOf_4.forEach_24(comp_attrs,function(item,index){var n_1=item;appCtx.compilerSettings[index]=n_1;});if(allowed_languages.indexOf(the_lang)<0){console.log("Invalid language : "+the_lang);/** unused: const s = "" **/console.log("allowed languages: "+allowed_languages.join(" "));return;}appCtx.compilerSettings["l"]=the_lang;if(the_target=="output"){var root_parts=root_file.split(".");if(root_parts.length==2){the_target=root_parts[0];}switch(the_lang){case"es6":the_target=the_target+".js";if(appCtx.hasCompilerFlag("typescript")){the_target=the_target+".ts";}break;case"swift3":the_target=the_target+".swift";break;case"php":the_target=the_target+".php";break;case"csharp":the_target=the_target+".cs";break;case"java7":the_target=the_target+".java";break;case"go":the_target=the_target+".go";break;case"scala":the_target=the_target+".scala";break;case"cpp":the_target=the_target+".cpp";break;};}appCtx.compilerSettings["o"]=the_target;var lcc=new LiveCompiler();var node=parser.rootNode;var flowParser=new RangerFlowParser();var fileSystem=new CodeFileSystem();var file=fileSystem.getFile(".",the_target);var wr=file.getWriter();if(appCtx.hasCompilerFlag("copysrc")){console.log("--> copying "+code.filename);var fileWr=wr.getFileWriter(".",code.filename);fileWr.raw(code.code,false);}appCtx.parser=flowParser;appCtx.compiler=lcc;lcc.parser=flowParser;if(appCtx.hasCompilerSetting("plugins")){var val=appCtx.getCompilerSetting("plugins");var list=val.split(",");operatorsOf.forEach_3(list,function(item,index){try{var plugin=require(item);var features=new plugin.Plugin().features();if(appCtx.hasCompilerFlag("verbose")){console.log("Plugin "+item+" registered with features ");operatorsOf.forEach_3(features,function(item,index){console.log(" [x] "+item);});}var regPlug=new RangerRegisteredPlugin();regPlug.name=item;regPlug.features=operatorsOf.clone_37(features);appCtx.addPlugin(regPlug);}catch(e){console.log("Failed to register plugin "+item);}});}plugins_only=appCtx.hasCompilerFlag("plugins-only");console.time("Compile time in seconds ");try{flowParser.mergeImports(node,appCtx,wr);var lang_str=require('fs').readFileSync(langFilePath+'/'+the_lang_file,'utf8');var lang_code=new SourceCode(lang_str);lang_code.filename=the_lang_file;var lang_parser=new RangerLispParser(lang_code);lang_parser.parse(false);appCtx.langOperators=lang_parser.rootNode;appCtx.setRootFile(root_file);var ops=new RangerActiveOperators();ops.initFrom(lang_parser.rootNode);appCtx.operators=ops;appCtx.targetLangName=the_lang;lcc.initWriter(appCtx);var ppList=appCtx.findPluginsFor("generate_ast");operatorsOf.forEach_3(ppList,function(item,index){try{var plugin_1=require(item);new plugin_1.Plugin()["generate_ast"](root,appCtx,wr);}catch(e){}});console.log("1. Collecting available methods.");flowParser.CollectMethods(node,appCtx,wr);if(appCtx.compilerErrors.length>0){CompilerInterface.displayCompilerErrors(appCtx);return;}flowParser.CreateCTTI(node,appCtx,wr);if(appCtx.hasCompilerFlag("rtti")){flowParser.CreateRTTI(node,appCtx,wr);}var ppList_1=appCtx.findPluginsFor("pre_flow");operatorsOf.forEach_3(ppList_1,function(item,index){try{var plugin_2=require(item);new plugin_2.Plugin()["pre_flow"](root,appCtx,wr);}catch(e){}});appCtx.initOpList();console.log("2. Analyzing the code.");console.log("selected language is "+appCtx.targetLangName);flowParser.StartWalk(node,appCtx,wr);if(appCtx.hasCompilerFlag("showtypes")){console.log("--> checking if any node has typeClass");var cnt_1=0;var totalCnt=0;/** unused: const typeCnt = 0 **/node.forTree(function(item,i){totalCnt=totalCnt+1;if(typeof item.evalTypeClass!=="undefined"&&item.evalTypeClass!=null){if(cnt_1<10){console.log(" -- type class "+item.evalTypeClass.name+" at "+item.getCode());}cnt_1=cnt_1+1;}});console.log("TOTAL number of typed nodes : "+cnt_1+" / "+totalCnt);operatorsOf_4.forEach_38(appCtx.typeClasses,function(item,index){console.log(" typeClass : "+index);if(typeof item.keyType!=="undefined"&&item.keyType!=null){console.log("^ key type "+item.keyType.name);}if(typeof item.arrayType!=="undefined"&&item.arrayType!=null){console.log("^ array type "+item.arrayType.name);}});}if(plugins_only==false){if(appCtx.compilerErrors.length>0){CompilerInterface.displayCompilerErrors(appCtx);return;}}var ppList_2=appCtx.findPluginsFor("preprocess");operatorsOf.forEach_3(ppList_2,function(item,index){try{var plugin_3=require(item);new plugin_3.Plugin()["preprocess"](root,appCtx,wr);}catch(e){}});if(plugins_only){console.log("3. Plugins only enabled, ignoring the source code generation");}else{flowParser.SolveAsyncFuncs(root,appCtx,wr);console.log("3. Compiling the source code.");switch(appCtx.targetLangName){case"java7":if(typeof comp_attrs["android_res_dir"]!="undefined"&&comp_attrs.hasOwnProperty("android_res_dir")){console.log("--> had android res dir");var resDir=comp_attrs["android_res_dir"];var resFs=new CodeFileSystem();var file_2=resFs.getFile(".","README.txt");var wr_2=file_2.getWriter();var builder=new viewbuilder_Android();operatorsOf_4.forEach_16(appCtx.viewClassBody,function(item,index){builder.writeClass(item,appCtx,wr_2);});resFs.saveTo(resDir,appCtx.hasCompilerFlag("show-writes"));}break;case"es6":if(typeof comp_attrs["web_res_dir"]!="undefined"&&comp_attrs.hasOwnProperty("web_res_dir")){console.log("--> had web res dir");var resDir_1=comp_attrs["web_res_dir"];var resFs_1=new CodeFileSystem();var file_3=resFs_1.getFile(".","webviews.html");var wr_3=file_3.getWriter();var builder_1=new viewbuilder_Web();builder_1.CreateViews(appCtx,wr_3);resFs_1.saveTo(resDir_1,appCtx.hasCompilerFlag("show-writes"));}break;};var staticMethods=void 0;var importFork=wr.fork();var contentFork=wr.fork();/** unused: const theEnd = wr.createTag("file_end") **/wr=contentFork;var handledClasses={};for(var i_4=0;i_4<appCtx.definedClassList.length;i_4++){var cName=appCtx.definedClassList[i_4];if(cName=="RangerStaticMethods"){staticMethods=appCtx.definedClasses[cName];continue;}var cl=appCtx.definedClasses[cName];if(cl.is_operator_class){continue;}if(cl.is_trait){continue;}if(cl.is_system){continue;}if(cl.is_generic_instance){continue;}if(cl.is_system_union){continue;}if(cl.is_union){continue;}if(typeof handledClasses[cName]!="undefined"&&handledClasses.hasOwnProperty(cName)){continue;}handledClasses[cName]=true;if(cl.extends_classes.length>0){for(var i_5=0;i_5<cl.extends_classes.length;i_5++){var eClassName=cl.extends_classes[i_5];if(typeof handledClasses[eClassName]!="undefined"&&handledClasses.hasOwnProperty(eClassName)){continue;}var parentCl=appCtx.definedClasses[eClassName];lcc.WalkNode(parentCl.classNode,appCtx,wr);handledClasses[eClassName]=true;};}lcc.WalkNode(cl.classNode,appCtx,wr);};if(typeof staticMethods!=="undefined"&&staticMethods!=null){lcc.WalkNode(staticMethods.classNode,appCtx,wr);}for(var i_6=0;i_6<flowParser.collectedIntefaces.length;i_6++){var ifDesc=flowParser.collectedIntefaces[i_6];console.log("should define also interface "+ifDesc.name);lcc.langWriter.writeInterface(ifDesc,appCtx,wr);};var ppList_3=appCtx.findPluginsFor("apps");operatorsOf.forEach_3(ppList_3,function(item,index){try{var plugin_4=require(item);new plugin_4.Plugin()["apps"](root,appCtx,wr);}catch(e){}});if(typeof params.flags["services"]!="undefined"&&params.flags.hasOwnProperty("services")){lcc.langWriter.CreateServices(flowParser,appCtx,wr);}if(typeof params.flags["pages"]!="undefined"&&params.flags.hasOwnProperty("pages")){lcc.langWriter.CreatePages(flowParser,appCtx,wr);}for(var i_7=0;i_7<appCtx.definedClassList.length;i_7++){var cName_1=appCtx.definedClassList[i_7];if(typeof handledClasses[cName_1]!="undefined"&&handledClasses.hasOwnProperty(cName_1)){continue;}if(cName_1=="RangerStaticMethods"){staticMethods=appCtx.definedClasses[cName_1];continue;}var cl_1=appCtx.definedClasses[cName_1];if(cl_1.is_operator_class){continue;}if(cl_1.is_generic_instance){lcc.WalkNode(cl_1.classNode,appCtx,wr);}if(cl_1.is_trait){continue;}if(cl_1.is_system){continue;}if(cl_1.is_operator_class){continue;}if(cl_1.is_generic_instance){continue;}if(cl_1.is_system_union){continue;}if(cl_1.is_union){continue;}lcc.WalkNode(cl_1.classNode,appCtx,wr);};for(var i_8=0;i_8<appCtx.definedClassList.length;i_8++){var cName_2=appCtx.definedClassList[i_8];var cl_2=appCtx.definedClasses[cName_2];if(cl_2.is_operator_class){lcc.WalkNode(cl_2.classNode,appCtx,wr);}};var import_list=wr.getImports();if(appCtx.targetLangName=="go"){importFork.out("package main",true);importFork.newline();importFork.out("import (",true);importFork.indent(1);}var added_import={};if(appCtx.targetLangName=="es6"){if(typeof lcc.langWriter.compFlags["ReactNative"]!="undefined"&&lcc.langWriter.compFlags.hasOwnProperty("ReactNative")){importFork.out("import React, { Component } from 'react';",true);}}for(var i_9=0;i_9<import_list.length;i_9++){var codeStr=import_list[i_9];if(typeof added_import[codeStr]!="undefined"&&added_import.hasOwnProperty(codeStr)){continue;}added_import[codeStr]=true;switch(appCtx.targetLangName){case"es6":var parts=codeStr.split(".");if(parts.length>1){importFork.out("import { "+parts[1]+" } from '"+parts[0]+"';",true);}break;case"go":if(codeStr.charCodeAt(0)=="_".charCodeAt(0)){importFork.out(" _ \""+codeStr.substring(1,codeStr.length)+"\"",true);}else{importFork.out("\""+codeStr+"\"",true);}break;case"csharp":importFork.out("using "+codeStr+";",true);break;case"rust":importFork.out("use "+codeStr+";",true);break;case"java7":importFork.out("import "+codeStr+";",true);break;case"cpp":importFork.out("#include "+codeStr,true);break;default:importFork.out("import "+codeStr,true);break;};};if(appCtx.targetLangName=="go"){importFork.indent(-1);importFork.out(")",true);}if(appCtx.hasCompilerSetting("classdoc")){var gen=new RangerDocGenerator();gen.createClassDoc(root,appCtx,wr);}if(appCtx.hasCompilerSetting("operatordoc")){var gen_1=new RangerDocGenerator();gen_1.createOperatorDoc(root,appCtx,wr);}}var ppList_4=appCtx.findPluginsFor("postprocess");operatorsOf.forEach_3(ppList_4,function(item,index){try{var plugin_5=require(item);new plugin_5.Plugin()["postprocess"](root,appCtx,wr);}catch(e){}});fileSystem.saveTo(the_target_dir,appCtx.hasCompilerFlag("show-writes"));console.log("Ready.");CompilerInterface.displayCompilerErrors(appCtx);}catch(e){console.log(e.toString());if(typeof lcc.lastProcessedNode!="undefined"){console.log("Got compiler error close to");console.log(lcc.lastProcessedNode.getLineAsString());return;}if(typeof flowParser.lastProcessedNode!="undefined"){console.log("Got compiler error close to");console.log(flowParser.lastProcessedNode.getLineAsString());return;}console.log("Got unknown compiler error");return;}console.timeEnd("Compile time in seconds ");}}]);return CompilerInterface;}();CompilerInterface.displayCompilerErrors=function(appCtx){var cons=new ColorConsole();for(var i=0;i<appCtx.compilerErrors.length;i++){var e=appCtx.compilerErrors[i];var line_index=e.node.getLine();cons.out("gray",e.node.getFilename()+" Line: "+(1+line_index));cons.out("gray",e.description);cons.out("gray",e.node.getLineString(line_index));cons.out("",e.node.getColStartString()+"^-------");};};CompilerInterface.displayParserErrors=function(appCtx){if(appCtx.parserErrors.length==0){console.log("no language test errors");return;}console.log("LANGUAGE TEST ERRORS:");for(var i=0;i<appCtx.parserErrors.length;i++){var e=appCtx.parserErrors[i];var line_index=e.node.getLine();console.log(e.node.getFilename()+" Line: "+(1+line_index));console.log(e.description);console.log(e.node.getLineString(line_index));};};var operatorsOf=function operatorsOf(){_classCallCheck(this,operatorsOf);};operatorsOf.forEach_2=function(__self,cb){for(var i=0;i<__self.length;i++){var it=__self[i];cb(it,i);};};operatorsOf.forEach_3=function(__self,cb){for(var i_1=0;i_1<__self.length;i_1++){var it_1=__self[i_1];cb(it_1,i_1);};};operatorsOf.forEach_6=function(__self,cb){for(var i_3=0;i_3<__self.length;i_3++){var it_2=__self[i_3];cb(it_2,i_3);};};operatorsOf.forEach_8=function(__self,cb){for(var i_5=0;i_5<__self.length;i_5++){var it_3=__self[i_5];cb(it_3,i_5);};};operatorsOf.clone_9=function(__self){var res=[];for(var i_6=0;i_6<__self.length;i_6++){var it_4=__self[i_6];res.push(it_4);};return res;};operatorsOf.forEach_20=function(__self,cb){for(var i_10=0;i_10<__self.length;i_10++){var it_5=__self[i_10];cb(it_5,i_10);};};operatorsOf.forEach_22=function(__self,cb){for(var i_12=0;i_12<__self.length;i_12++){var it_6=__self[i_12];cb(it_6,i_12);};};operatorsOf.filter_23=function(__self,cb){var res_1=[];for(var i_13=0;i_13<__self.length;i_13++){var it_7=__self[i_13];if(cb(it_7,i_13)){res_1.push(it_7);}};return res_1;};operatorsOf.map_28=function(__self,cb){/** unused: const __len = __self.length **/var res_2=[];for(var i_15=0;i_15<__self.length;i_15++){var it_8=__self[i_15];res_2.push(cb(it_8,i_15));};return res_2;};operatorsOf.map_29=function(__self,cb){/** unused: const len_1 = __self.length **/var res_3=[];for(var i_16=0;i_16<__self.length;i_16++){var it_9=__self[i_16];res_3.push(cb(it_9,i_16));};return res_3;};operatorsOf.clone_30=function(__self){var res_4=[];for(var i_17=0;i_17<__self.length;i_17++){var it_10=__self[i_17];res_4.push(it_10);};return res_4;};operatorsOf.map_31=function(__self,cb){/** unused: const len_2 = __self.length **/var res_5=[];for(var i_18=0;i_18<__self.length;i_18++){var it_11=__self[i_18];res_5.push(cb(it_11,i_18));};return res_5;};operatorsOf.filter_34=function(__self,cb){var res_6=[];for(var i_19=0;i_19<__self.length;i_19++){var it_12=__self[i_19];if(cb(it_12,i_19)){res_6.push(it_12);}};return res_6;};operatorsOf.groupBy_35=function(__self,cb){var res_7=[];var mapper={};for(var i_20=0;i_20<__self.length;i_20++){var it_13=__self[i_20];var key=cb(it_13);if(false==(typeof mapper[key]!="undefined"&&mapper.hasOwnProperty(key))){res_7.push(it_13);mapper[key]=true;}};return res_7;};operatorsOf.clone_37=function(__self){var res_8=[];for(var i_22=0;i_22<__self.length;i_22++){var it_14=__self[i_22];res_8.push(it_14);};return res_8;};var operatorsOf_4=function operatorsOf_4(){_classCallCheck(this,operatorsOf_4);};operatorsOf_4.forEach_5=function(__self,cb){var list=Object.keys(__self);for(var i_2=0;i_2<list.length;i_2++){var kk=list[i_2];var value=__self[kk];cb(value,kk);};};operatorsOf_4.forEach_7=function(__self,cb){var list_1=Object.keys(__self);for(var i_4=0;i_4<list_1.length;i_4++){var kk_1=list_1[i_4];var value_1=__self[kk_1];cb(value_1,kk_1);};};operatorsOf_4.forEach_10=function(__self,cb){var list_2=Object.keys(__self);for(var i_7=0;i_7<list_2.length;i_7++){var kk_2=list_2[i_7];var value_2=__self[kk_2];cb(value_2,kk_2);};};operatorsOf_4.forEach_11=function(__self,cb){var list_3=Object.keys(__self);for(var i_8=0;i_8<list_3.length;i_8++){var kk_3=list_3[i_8];var value_3=__self[kk_3];cb(value_3,kk_3);};};operatorsOf_4.forEach_16=function(__self,cb){var list_4=Object.keys(__self);for(var i_9=0;i_9<list_4.length;i_9++){var kk_4=list_4[i_9];var value_4=__self[kk_4];cb(value_4,kk_4);};};operatorsOf_4.forEach_21=function(__self,cb){var list_5=Object.keys(__self);for(var i_11=0;i_11<list_5.length;i_11++){var kk_5=list_5[i_11];var value_5=__self[kk_5];cb(value_5,kk_5);};};operatorsOf_4.forEach_24=function(__self,cb){var list_6=Object.keys(__self);for(var i_14=0;i_14<list_6.length;i_14++){var kk_6=list_6[i_14];var value_6=__self[kk_6];cb(value_6,kk_6);};};operatorsOf_4.forEach_36=function(__self,cb){var list_7=Object.keys(__self);for(var i_21=0;i_21<list_7.length;i_21++){var kk_7=list_7[i_21];var value_7=__self[kk_7];cb(value_7,kk_7);};};operatorsOf_4.forEach_38=function(__self,cb){var list_8=Object.keys(__self);for(var i_23=0;i_23<list_8.length;i_23++){var kk_8=list_8[i_23];var value_8=__self[kk_8];cb(value_8,kk_8);};};var operatorsOfRangerAppWriterContext_12=function operatorsOfRangerAppWriterContext_12(){_classCallCheck(this,operatorsOfRangerAppWriterContext_12);};operatorsOfRangerAppWriterContext_12.getTargetLang_13=function(__self){if(__self.targetLangName.length>0){return __self.targetLangName;}if(typeof __self.parent!="undefined"){return operatorsOf_12.getTargetLang_13(__self.parent);}return"ranger";};var operatorsOf_12=function operatorsOf_12(){_classCallCheck(this,operatorsOf_12);};operatorsOf_12.getTargetLang_13=function(__self){if(__self.targetLangName.length>0){return __self.targetLangName;}if(typeof __self.parent!="undefined"){return operatorsOf_12.getTargetLang_13(__self.parent);}return"ranger";};operatorsOf_12.addUsage_19=function(__self,cn){var ctx=__self;var currM=ctx.getCurrentMethod();if(ctx.isDefinedClass(cn.type_name)){var cl=ctx.findClass(cn.type_name);currM.addClassUsage(cl,ctx);}if(ctx.isDefinedClass(cn.eval_type_name)){var cl_1=ctx.findClass(cn.eval_type_name);currM.addClassUsage(cl_1,ctx);}if(ctx.isDefinedClass(cn.eval_array_type)){var cl_2=ctx.findClass(cn.eval_array_type);currM.addClassUsage(cl_2,ctx);}};operatorsOf_12.createc95var_32=function(__self,name,type_name){var fieldNode=CodeNode.vref2(name,type_name);fieldNode.value_type=fieldNode.typeNameAsType(__self);var p_2=new RangerAppParamDesc();p_2.name=name;p_2.value_type=fieldNode.value_type;p_2.node=fieldNode;p_2.nameNode=fieldNode;p_2.is_optional=false;__self.defineVariable(p_2.name,p_2);return p_2;};operatorsOf_12.createc95var_33=function(__self,name,usingNode){/** unused: const fieldNode_1 = CodeNode.vref1(name) **/var p_3=new RangerAppParamDesc();p_3.name=name;p_3.value_type=usingNode.value_type;p_3.node=usingNode;p_3.nameNode=usingNode;p_3.is_optional=false;__self.defineVariable(p_3.name,p_3);return p_3;};var operatorsOfchar_14=function operatorsOfchar_14(){_classCallCheck(this,operatorsOfchar_14);};operatorsOfchar_14.isc95notc95limiter_15=function(c){return c>32&&c!=59&&c!=41&&c!=40&&c!=125&&c!=44;};var operatorsOfRangerFlowParser_17=function operatorsOfRangerFlowParser_17(){_classCallCheck(this,operatorsOfRangerFlowParser_17);};operatorsOfRangerFlowParser_17.EnterVarDef_18=function(__self,node,ctx,wr){if(ctx.isInMethod()){if(node.children.length<2){ctx.addError(node,"invalid variable definition");return;}var tName=node.getSecond();__self.CheckTypeAnnotationOf(tName,ctx,wr);if(tName.expression){node.children.splice(1,1);operatorsOf.forEach_6(tName.children,function(item,index){if(index==1){if(item.expression){node.children.push(item.children[0].copy());}else{node.children.push(item.copy());}}if(index>1){node.children.push(item.copy());}});}if(node.children.length>3){ctx.addError(node,"invalid variable definition");return;}var cn=node.children[1];var p=new RangerAppParamDesc();var defaultArg=void 0;var is_immutable=false;cn.definedTypeClass=TFactory.new_def_signature(cn,ctx,wr);if(node.children.length==2){if(cn.value_type!=6&&cn.value_type!=7){if(false==cn.hasFlag("unwrap")){cn.setFlag("optional");}}}if(cn.vref.length==0){ctx.addError(node,"invalid variable definition");}if(cn.hasFlag("weak")){p.changeStrength(0,1,node);}else{p.changeStrength(1,1,node);}node.hasVarDef=true;if(node.children.length>2){p.init_cnt=1;p.def_value=node.children[2];p.is_optional=false;defaultArg=node.children[2];ctx.setInExpr();__self.WalkNode(defaultArg,ctx,wr);ctx.unsetInExpr();if(defaultArg.hasFlag("optional")){cn.setFlag("optional");}if(defaultArg.hasFlag("immutable")){cn.setFlag("immutable");}if(defaultArg.hasParamDesc){var paramDesc=defaultArg.paramDesc;if(typeof paramDesc.propertyClass!=="undefined"&&paramDesc.propertyClass!=null){if(paramDesc.propertyClass.nameNode.hasFlag("immutable")){if(defaultArg.eval_type==6||defaultArg.eval_type==7){is_immutable=true;}}}if(paramDesc.is_immutable){is_immutable=true;}}if(defaultArg.eval_type==6){node.op_index=1;}if(cn.value_type==13){cn.eval_type_name=defaultArg.ns[0];}if(cn.value_type==14){if(defaultArg.eval_type!=3&&defaultArg.eval_type!=14){ctx.addError(defaultArg,"Char should be assigned char or integer value --> "+defaultArg.getCode());}else{defaultArg.eval_type=14;}}}else{if(cn.value_type!=7&&cn.value_type!=6&&false==cn.hasFlag("optional")){if(cn.hasFlag("unwrap")){}else{cn.setFlag("optional");}}}if(node.children.length>2){if(cn.type_name.length==0&&cn.array_type.length==0){cn.inferDefTypeFromValue(node);if(cn.value_type==17){cn.eval_type=17;}}}ctx.hadValidType(cn);cn.defineNodeTypeTo(cn,ctx);p.name=cn.vref;if(p.value_type==0){if(0==cn.type_name.length&&typeof defaultArg!=="undefined"&&defaultArg!=null){p.value_type=defaultArg.eval_type;cn.type_name=defaultArg.eval_type_name;cn.eval_type_name=defaultArg.eval_type_name;cn.value_type=defaultArg.eval_type;}}else{p.value_type=cn.value_type;}p.node=node;p.nameNode=cn;p.varType=5;if(is_immutable){p.is_immutable=is_immutable;}if(cn.has_vref_annotation){ctx.log(node,"ann","At a variable -> Found has_vref_annotation annotated reference ");var ann=cn.vref_annotation;if(ann.children.length>0){var _fc16=ann.children[0];ctx.log(node,"ann","value of first annotation "+_fc16.vref+" and variable name "+cn.vref);}}if(cn.has_type_annotation){ctx.log(node,"ann","At a variable -> Found annotated reference ");var ann_1=cn.type_annotation;if(ann_1.children.length>0){var fc_1=ann_1.children[0];ctx.log(node,"ann","value of first annotation "+fc_1.vref+" and variable name "+cn.vref);}}cn.hasParamDesc=true;cn.ownParamDesc=p;cn.paramDesc=p;node.hasParamDesc=true;node.paramDesc=p;cn.eval_type=cn.typeNameAsType(ctx);cn.eval_type_name=cn.type_name;if(node.children.length>2){if(typeof defaultArg!=="undefined"&&defaultArg!=null){__self.convertToUnion(cn.eval_type_name,defaultArg,ctx,wr);if(typeof defaultArg.evalTypeClass!=="undefined"&&defaultArg.evalTypeClass!=null){cn.evalTypeClass=defaultArg.evalTypeClass;}}if(cn.eval_type!=defaultArg.eval_type){var b1=cn.eval_type==14&&defaultArg.eval_type==3;var b2=cn.eval_type==3&&defaultArg.eval_type==14;if(false==(b1||b2)){ctx.addError(node,"Variable was assigned an incompatible type. Types were "+cn.eval_type+" vs "+defaultArg.eval_type);}}}else{p.is_optional=true;}ctx.defineVariable(p.name,p);if(node.children.length>2){__self.shouldBeEqualTypes(cn,p.def_value,ctx,"Variable was assigned an incompatible type.");}operatorsOf_12.addUsage_19(ctx,cn);}else{var cn_1=node.children[1];cn_1.eval_type=cn_1.typeNameAsType(ctx);cn_1.eval_type_name=cn_1.type_name;if(node.children.length>2){__self.shouldBeEqualTypes(node.children[1],node.children[2],ctx,"Variable was assigned an incompatible type.");}}};var operatorsOf_17=function operatorsOf_17(){_classCallCheck(this,operatorsOf_17);};operatorsOf_17.EnterVarDef_18=function(__self,node,ctx,wr){if(ctx.isInMethod()){if(node.children.length<2){ctx.addError(node,"invalid variable definition");return;}var tName_1=node.getSecond();__self.CheckTypeAnnotationOf(tName_1,ctx,wr);if(tName_1.expression){node.children.splice(1,1);operatorsOf.forEach_6(tName_1.children,function(item,index){if(index==1){if(item.expression){node.children.push(item.children[0].copy());}else{node.children.push(item.copy());}}if(index>1){node.children.push(item.copy());}});}if(node.children.length>3){ctx.addError(node,"invalid variable definition");return;}var cn_2=node.children[1];var p_1=new RangerAppParamDesc();var defaultArg_1=void 0;var is_immutable_1=false;cn_2.definedTypeClass=TFactory.new_def_signature(cn_2,ctx,wr);if(node.children.length==2){if(cn_2.value_type!=6&&cn_2.value_type!=7){if(false==cn_2.hasFlag("unwrap")){cn_2.setFlag("optional");}}}if(cn_2.vref.length==0){ctx.addError(node,"invalid variable definition");}if(cn_2.hasFlag("weak")){p_1.changeStrength(0,1,node);}else{p_1.changeStrength(1,1,node);}node.hasVarDef=true;if(node.children.length>2){p_1.init_cnt=1;p_1.def_value=node.children[2];p_1.is_optional=false;defaultArg_1=node.children[2];ctx.setInExpr();__self.WalkNode(defaultArg_1,ctx,wr);ctx.unsetInExpr();if(defaultArg_1.hasFlag("optional")){cn_2.setFlag("optional");}if(defaultArg_1.hasFlag("immutable")){cn_2.setFlag("immutable");}if(defaultArg_1.hasParamDesc){var paramDesc_1=defaultArg_1.paramDesc;if(typeof paramDesc_1.propertyClass!=="undefined"&&paramDesc_1.propertyClass!=null){if(paramDesc_1.propertyClass.nameNode.hasFlag("immutable")){if(defaultArg_1.eval_type==6||defaultArg_1.eval_type==7){is_immutable_1=true;}}}if(paramDesc_1.is_immutable){is_immutable_1=true;}}if(defaultArg_1.eval_type==6){node.op_index=1;}if(cn_2.value_type==13){cn_2.eval_type_name=defaultArg_1.ns[0];}if(cn_2.value_type==14){if(defaultArg_1.eval_type!=3&&defaultArg_1.eval_type!=14){ctx.addError(defaultArg_1,"Char should be assigned char or integer value --> "+defaultArg_1.getCode());}else{defaultArg_1.eval_type=14;}}}else{if(cn_2.value_type!=7&&cn_2.value_type!=6&&false==cn_2.hasFlag("optional")){if(cn_2.hasFlag("unwrap")){}else{cn_2.setFlag("optional");}}}if(node.children.length>2){if(cn_2.type_name.length==0&&cn_2.array_type.length==0){cn_2.inferDefTypeFromValue(node);if(cn_2.value_type==17){cn_2.eval_type=17;}}}ctx.hadValidType(cn_2);cn_2.defineNodeTypeTo(cn_2,ctx);p_1.name=cn_2.vref;if(p_1.value_type==0){if(0==cn_2.type_name.length&&typeof defaultArg_1!=="undefined"&&defaultArg_1!=null){p_1.value_type=defaultArg_1.eval_type;cn_2.type_name=defaultArg_1.eval_type_name;cn_2.eval_type_name=defaultArg_1.eval_type_name;cn_2.value_type=defaultArg_1.eval_type;}}else{p_1.value_type=cn_2.value_type;}p_1.node=node;p_1.nameNode=cn_2;p_1.varType=5;if(is_immutable_1){p_1.is_immutable=is_immutable_1;}if(cn_2.has_vref_annotation){ctx.log(node,"ann","At a variable -> Found has_vref_annotation annotated reference ");var ann_2=cn_2.vref_annotation;if(ann_2.children.length>0){var fc_2=ann_2.children[0];ctx.log(node,"ann","value of first annotation "+fc_2.vref+" and variable name "+cn_2.vref);}}if(cn_2.has_type_annotation){ctx.log(node,"ann","At a variable -> Found annotated reference ");var ann_3=cn_2.type_annotation;if(ann_3.children.length>0){var fc_3=ann_3.children[0];ctx.log(node,"ann","value of first annotation "+fc_3.vref+" and variable name "+cn_2.vref);}}cn_2.hasParamDesc=true;cn_2.ownParamDesc=p_1;cn_2.paramDesc=p_1;node.hasParamDesc=true;node.paramDesc=p_1;cn_2.eval_type=cn_2.typeNameAsType(ctx);cn_2.eval_type_name=cn_2.type_name;if(node.children.length>2){if(typeof defaultArg_1!=="undefined"&&defaultArg_1!=null){__self.convertToUnion(cn_2.eval_type_name,defaultArg_1,ctx,wr);if(typeof defaultArg_1.evalTypeClass!=="undefined"&&defaultArg_1.evalTypeClass!=null){cn_2.evalTypeClass=defaultArg_1.evalTypeClass;}}if(cn_2.eval_type!=defaultArg_1.eval_type){var b1_1=cn_2.eval_type==14&&defaultArg_1.eval_type==3;var b2_1=cn_2.eval_type==3&&defaultArg_1.eval_type==14;if(false==(b1_1||b2_1)){ctx.addError(node,"Variable was assigned an incompatible type. Types were "+cn_2.eval_type+" vs "+defaultArg_1.eval_type);}}}else{p_1.is_optional=true;}ctx.defineVariable(p_1.name,p_1);if(node.children.length>2){__self.shouldBeEqualTypes(cn_2,p_1.def_value,ctx,"Variable was assigned an incompatible type.");}operatorsOf_12.addUsage_19(ctx,cn_2);}else{var cn_3=node.children[1];cn_3.eval_type=cn_3.typeNameAsType(ctx);cn_3.eval_type_name=cn_3.type_name;if(node.children.length>2){__self.shouldBeEqualTypes(node.children[1],node.children[2],ctx,"Variable was assigned an incompatible type.");}}};var operatorsOfCodeNode_25=function operatorsOfCodeNode_25(){_classCallCheck(this,operatorsOfCodeNode_25);};operatorsOfCodeNode_25.rc46funcdesc_26=function(node,ctx){var m=new RangerAppFunctionDesc();var cn_4=node.getSecond();m.name=cn_4.vref;m.compiledName=ctx.transformWord(cn_4.vref);m.node=node;m.nameNode=node.children[1];if(node.hasBooleanProperty("strong")){m.refType=2;}else{m.refType=1;}return m;};var operatorsOf_25=function operatorsOf_25(){_classCallCheck(this,operatorsOf_25);};operatorsOf_25.rc46func_27=function(node,ctx,wr){var parser=new RangerFlowParser();return parser.CreateFunctionObject(node,ctx,wr);};var operatorsOfJSONArrayObject_39=function operatorsOfJSONArrayObject_39(){_classCallCheck(this,operatorsOfJSONArrayObject_39);};operatorsOfJSONArrayObject_39.forEach_40=function(__self,cb){var cnt=__self.length;var i_24=0;while(cnt>0){var value_9=__self[i_24];cb(value_9,i_24);cnt=cnt-1;i_24=i_24+1;};};var operatorsOf_39=function operatorsOf_39(){_classCallCheck(this,operatorsOf_39);};operatorsOf_39.forEach_40=function(__self,cb){var cnt_1=__self.length;var i_25=0;while(cnt_1>0){var value_10=__self[i_25];cb(value_10,i_25);cnt_1=cnt_1-1;i_25=i_25+1;};};/* static JavaSript main routine at the end of the JS file */function __js_main(){var params=new CmdParams();params.collect();var o=new CompilerInterface();o.run(params);}__js_main();