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
@@ -1,687 +0,0 @@
1
-
2
- extension RangerFlowParser {
3
-
4
- fn findLanguageOper@(optional weak):CodeNode (details:CodeNode ctx:RangerAppWriterContext) {
5
- def langName:string (ctx.getTargetLang())
6
- def rv:CodeNode
7
- for details.children det:CodeNode i {
8
- if ( (array_length det.children ) > 0) {
9
- def fc:CodeNode (itemAt det.children 0)
10
- if (fc.vref == "templates") {
11
- def tplList:CodeNode (itemAt det.children 1)
12
- for tplList.children tpl:CodeNode i {
13
- def tplName:CodeNode (tpl.getFirst())
14
- ; def tplImpl@(optional):CodeNode
15
- ; tplImpl = (tpl.getSecond())
16
- if ((tplName.vref != "*") && (tplName.vref != langName)) {
17
- continue
18
- }
19
- rv = tpl
20
- return rv
21
- }
22
- }
23
- }
24
- }
25
- return rv
26
- }
27
-
28
- fn buildMacro:CodeNode ( langOper@(optional):CodeNode args:CodeNode ctx:RangerAppWriterContext ) {
29
-
30
- def subCtx:RangerAppWriterContext (ctx.fork())
31
- def wr:CodeWriter (new CodeWriter ())
32
- def lcc:LiveCompiler (new LiveCompiler())
33
-
34
- lcc.langWriter = (new RangerRangerClassWriter ())
35
- lcc.langWriter.compiler = lcc
36
-
37
- subCtx.targetLangName = "ranger"
38
- subCtx.restartExpressionLevel()
39
-
40
- def macroNode:CodeNode (unwrap langOper)
41
- def cmdList:CodeNode (macroNode.getSecond())
42
-
43
- if false {
44
- print ""
45
- print "------------------------------------------------------------------------"
46
- print " macro before generation : " + (cmdList.getCode())
47
- print " given arguments : " + (args.getCode())
48
- print "------------------------------------------------------------------------"
49
- print ""
50
-
51
- }
52
-
53
- if(ctx.hasCompilerFlag("show-macros")) {
54
- print "Walking macro " + macroNode.vref + " : " + (cmdList.getCode())
55
- }
56
-
57
- ;walkCommandList:void (cmd:CodeNode node:CodeNode ctx:RangerAppWriterContext wr:CodeWriter) {
58
- lcc.walkCommandList( cmdList args subCtx wr )
59
-
60
- def lang_str:string (wr.getCode())
61
- if false {
62
- print ""
63
- print "------------------------------------------------------------------------"
64
- print " macro generated code : " + lang_str
65
- print "------------------------------------------------------------------------"
66
- print ""
67
- }
68
-
69
- def lang_code:SourceCode (new SourceCode ( lang_str ) )
70
- lang_code.filename = "<macro " + macroNode.vref + ">"
71
- def lang_parser:RangerLispParser (new RangerLispParser (lang_code))
72
- lang_parser.parse((ctx.hasCompilerFlag("no-op-transform")))
73
-
74
- def node@(lives):CodeNode (unwrap lang_parser.rootNode)
75
- return node
76
- }
77
-
78
- fn stdParamMatch:boolean (callArgs@(lives):CodeNode inCtx:RangerAppWriterContext wr:CodeWriter require_all_match:boolean) {
79
- stdCommands = (inCtx.getStdCommands())
80
- def callFnName:CodeNode (callArgs.getFirst())
81
- def cmds:CodeNode stdCommands
82
- def some_matched:boolean false
83
- def found_fn:boolean false
84
- def added_ns ""
85
- def missed_args:[string]
86
- def ctx:RangerAppWriterContext (inCtx.fork())
87
- def lang_name:string (ctx.getTargetLang())
88
- def expects_error:boolean false
89
- def err_cnt:int (inCtx.getErrorCount())
90
- def arg_eval_start 0
91
- if( callArgs.hasBooleanProperty("error")) {
92
- expects_error = true
93
- }
94
-
95
- ; TODO: continue pushing the operators into the methodChain
96
- ; + add into the method chain the detected operator
97
- ; + check that chain can be a mix of actual operators or calls
98
- ; surround_static( (static_fn_foo()).map() ).filter()
99
- def in_chain false
100
- def call_arg_cnt 0
101
- for callArgs.children ca:CodeNode i {
102
- def name (ca.vref)
103
- if( ( (strlen name) > 0 ) && ( ( charAt name 0) == (charcode ".")) ) {
104
- in_chain = true
105
- ca.is_part_of_chain = true
106
- }
107
- if in_chain {
108
- ca.is_part_of_chain = true
109
- } {
110
- call_arg_cnt = call_arg_cnt + 1
111
- }
112
- }
113
-
114
- if in_chain {
115
- def fc (callArgs.getFirst())
116
- def sc (callArgs.getSecond())
117
- def thrd (callArgs.getThird())
118
- def i call_arg_cnt
119
- def chainRoot:CodeNode (callArgs)
120
- def innerNode@(weak):CodeNode
121
- def newNode (callArgs.newExpressionNode())
122
- newNode.children.push( (fc.copy()) ) ;
123
- newNode.children.push( (sc.copy()) ) ;
124
- newNode.children.push( (thrd.copy()) ) ;
125
- innerNode = newNode
126
- def chain_cnt 0
127
- def chlen (array_length callArgs.children)
128
-
129
- while ( i < (chlen - 1) ) {
130
- def fc (itemAt callArgs.children i)
131
- def args@(lives) (itemAt callArgs.children (i + 1))
132
- def name (fc.vref)
133
- if( ( (strlen name) > 0 ) && ( ( charAt name 0) == (charcode ".")) ) {
134
- def method_name (substring name 1 (strlen name))
135
- def newNode (callArgs.newExpressionNode())
136
- newNode.add( (callArgs.newVRefNode("call") ) )
137
- newNode.add( (innerNode.copy() ) )
138
- newNode.add( (callArgs.newVRefNode(method_name)) )
139
- newNode.add( (args.copy()))
140
- innerNode = newNode
141
- chain_cnt = chain_cnt + 1
142
- } {
143
- ctx.addError(callArgs "Invalid chaining op")
144
- }
145
- i = i + 2
146
- }
147
- if ( chain_cnt > 0 ) {
148
- callArgs.getChildrenFrom( (unwrap innerNode ) )
149
- callArgs.tag = "chainroot"
150
- callArgs.flow_done = false
151
- this.WalkNode( callArgs ctx wr)
152
- return true
153
- } {
154
- ctx.addError( callArgs "Invalid chain")
155
- return true
156
- }
157
- }
158
-
159
- ; print "stdParamMatch -> " + callFnName.vref
160
- def op_list (ctx.getOperators(callFnName.vref))
161
-
162
- for op_list ch@(lives):CodeNode main_index {
163
- def fc:CodeNode (ch.getFirst())
164
- def nameNode:CodeNode (ch.getSecond())
165
- def args:CodeNode (ch.getThird())
166
-
167
- ; if loop is done two times, remove the old NS definition
168
- ctx.removeOpNs( added_ns )
169
- ctx.addOpNs( fc.vref )
170
- added_ns = fc.vref
171
-
172
- def line_index:int (callArgs.getLine())
173
- ; def callerArgCnt:int (((array_length callArgs.children) - 1))
174
- def callerArgCnt (call_arg_cnt - 1)
175
- def fnArgCnt:int (array_length args.children)
176
- def has_eval_ctx:boolean false
177
- def is_macro:boolean false
178
- def is_pure false
179
- def is_static_fn false
180
- def static_fn_name ""
181
- def static_class_name ""
182
- def static_nameNode@(weak):CodeNode
183
- if (nameNode.hasFlag("newcontext")) {
184
- ctx = (inCtx.fork())
185
- has_eval_ctx = true
186
- }
187
- def expanding_node:boolean (nameNode.hasFlag("expands"))
188
- if ( (callerArgCnt == fnArgCnt) || expanding_node) {
189
- def details_list:CodeNode (itemAt ch.children 3)
190
- def langOper:CodeNode (this.findLanguageOper( details_list ctx ))
191
- if(null? langOper) {
192
- ; ctx.addError( callArgs "Did not find language based operator")
193
- continue
194
- }
195
- is_pure = ( nameNode.hasFlag("pure"))
196
- if( ( langOper.hasBooleanProperty("macro") ) || ( (nameNode.hasFlag("macro"))) ) {
197
- is_macro = true
198
- }
199
- def codeDef (langOper.getSecond())
200
- ; if(codeDef.is_block_node) {
201
- ; args = (args.rebuildWithType( (new RangerArgMatch) false ))
202
- ; }
203
- def match:RangerArgMatch (new RangerArgMatch ())
204
- def last_walked:int 0
205
- def last_was_block false
206
- def walk_later:[WalkLater]
207
- def not_enough_args false
208
- def blocksToWalkLater@(weak):[CodeNode]
209
-
210
- for args.children arg@(lives):CodeNode i {
211
-
212
- if( i < arg_eval_start) {
213
- continue
214
- }
215
- arg_eval_start = i
216
-
217
- if( (array_length callArgs.children) <= (i + 1)) {
218
- not_enough_args = true
219
- break
220
- }
221
-
222
- def callArg@(lives):CodeNode (itemAt callArgs.children (i + 1))
223
- if (arg.hasFlag("define")) {
224
- def p@(lives):RangerAppParamDesc (new RangerAppParamDesc ())
225
- p.name = callArg.vref
226
- p.value_type = arg.value_type
227
- p.node = callArg
228
- p.nameNode = callArg
229
- p.is_optional = false
230
- p.init_cnt = 1
231
- ctx.defineVariable(p.name p)
232
-
233
- callArg.hasParamDesc = true
234
- callArg.ownParamDesc = p
235
- callArg.paramDesc = p
236
- if ((strlen callArg.type_name) == 0) {
237
- callArg.type_name = arg.type_name
238
- callArg.value_type = arg.value_type
239
- }
240
- callArg.eval_type = arg.value_type
241
- callArg.eval_type_name = arg.type_name
242
- }
243
- if (arg.hasFlag("ignore")) {
244
- continue _
245
- }
246
- if (arg.hasFlag("noeval")) {
247
- callArg.eval_type = callArg.value_type
248
- callArg.eval_type_name = callArg.type_name
249
- callArg.eval_array_type = callArg.array_type
250
- callArg.eval_key_type = callArg.key_type
251
- continue _
252
- }
253
- last_walked = (i + 1)
254
- if( arg.value_type == RangerNodeType.ExpressionType ) {
255
- if(codeDef.is_block_node == false) {
256
- def later (new WalkLater)
257
- later.arg = arg
258
- later.callArg = callArg
259
- push walk_later later
260
- }
261
- } {
262
- ; ctx = (inCtx.forkWithOps( (itemAt ch.children 3) ))
263
- if(arg.type_name == "block" || (arg.hasFlag("block"))) {
264
- ;def sCtx (ctx.forkWithOps( (itemAt ch.children 3) ))
265
- ;print "-- walking block with context "
266
- ;print (sCtx.getContextInfo())
267
-
268
- ; push blocksToWalkLater callArg
269
- def tmpCtx@(lives) ctx
270
- callArg.evalCtx = tmpCtx
271
- this.WalkNode(callArg ctx wr)
272
-
273
- last_was_block = true
274
- } {
275
- ; (inCtx.forkWithOps( (itemAt ch.children 3) ))
276
- ctx.setInExpr()
277
- this.WalkNode(callArg ctx wr)
278
- ctx.unsetInExpr()
279
-
280
- ; union conversion...
281
- if( (strlen arg.type_name) > 0 ) {
282
- this.convertToUnion( arg.type_name callArg ctx wr)
283
- }
284
- last_was_block = false
285
- }
286
- if( arg.hasFlag("mutates")) {
287
- if(callArg.hasParamDesc) {
288
- if(callArg.paramDesc && (!null? callArg.paramDesc.propertyClass)) {
289
- if(callArg.paramDesc.propertyClass.nameNode.hasFlag("immutable")) {
290
- def propC (callArg.paramDesc.propertyClass)
291
- def currC (ctx.getCurrentClass())
292
- if( (unwrap currC) != (unwrap propC) ) {
293
- ; --> skip as if error
294
- not_enough_args = true
295
- ; ctx.addError(callArg "Not possible to modify immutable class property")
296
- }
297
- }
298
- }
299
- }
300
- }
301
- }
302
- }
303
-
304
- if not_enough_args {
305
- continue
306
- }
307
-
308
- if expanding_node {
309
- for callArgs.children caCh:CodeNode i2 {
310
- ; do not walk immediately the blocks
311
- if(caCh.is_block_node) {
312
- def tmpCtx@(lives) ctx
313
- caCh.evalCtx = tmpCtx
314
- push blocksToWalkLater caCh
315
- continue
316
- }
317
- if(i2 > last_walked) {
318
- if last_was_block {
319
- def sCtx (ctx.forkWithOps( (itemAt ch.children 3) ))
320
- this.WalkNode(caCh sCtx wr)
321
- } {
322
- ctx.setInExpr()
323
- this.WalkNode(caCh ctx wr)
324
- ctx.unsetInExpr()
325
- }
326
- }
327
- }
328
- }
329
-
330
- def all_matched:boolean (match.matchArguments(args callArgs ctx 1))
331
- if( all_matched == false) {
332
- continue
333
- }
334
-
335
- if all_matched {
336
-
337
- for blocksToWalkLater b:CodeNode i {
338
- def localFork (b.evalCtx.fork())
339
- this.WalkNode(b localFork wr)
340
- }
341
-
342
- for walk_later later:WalkLater i {
343
- def ca (unwrap later.callArg)
344
- def aa (unwrap later.arg)
345
-
346
- def newNode:CodeNode (new CodeNode ( (unwrap ca.code) ca.sp ca.ep))
347
-
348
- ; avoid re-transforming already transformed functions
349
- if( ((ca.isFirstVref("fn")) == false ) && ((ca.isFirstVref("fun")) == false )) {
350
- ; def match:RangerArgMatch (new RangerArgMatch ())
351
- def fnDef:CodeNode (unwrap aa.expression_value)
352
- def copyOf:CodeNode (fnDef.rebuildWithType( match false ))
353
- def ffc:CodeNode (itemAt copyOf.children 0)
354
- ffc.vref = "fun"
355
- def itemCopy:CodeNode (ca.rebuildWithType (match false))
356
- push copyOf.children itemCopy
357
- def cnt:int ( array_length ca.children )
358
- while( cnt > 0) {
359
- removeLast ca.children
360
- cnt = cnt - 1
361
- }
362
- for copyOf.children ch@(lives):CodeNode i {
363
- push ca.children ch
364
- }
365
-
366
- }
367
- ; -->
368
- ; def sCtx (ctx.forkWithOps( (itemAt ch.children 3) ))
369
- def sCtx (ctx.fork())
370
-
371
- this.WalkNode(ca sCtx wr)
372
- ; last_was_block = true
373
-
374
- }
375
- }
376
- if(codeDef.is_block_node && (all_matched)) {
377
-
378
- def pure_transform (ctx.hasCompilerFlag("pure"))
379
- ; -- could do a pure function transformation here ---
380
- if ( is_pure && pure_transform ) {
381
- def argDefs (CodeNode.blockFromList(
382
- (args.children.map({
383
- def callArg (itemAt callArgs.children (index + 1))
384
- def arg item
385
- def vName (item.copy())
386
- def caCopy (callArg.copy())
387
- def prms (this.transformParams2( ([] _:CodeNode (callArg) ) ([] _:CodeNode (arg) ) (ctx) ))
388
- def first (itemAt prms 0)
389
- def ad (r.op "def" vName first )
390
- return ad
391
- }))
392
- ))
393
- def bodyStart (r.block
394
- argDefs
395
- codeDef
396
- )
397
- def newCtx (ctx.fork())
398
- def bodyCopy (bodyStart.rebuildWithType(match true))
399
- callArgs.flow_done = false
400
- callArgs.getChildrenFrom( bodyCopy )
401
- this.WalkNode ( callArgs newCtx wr)
402
- return true
403
- }
404
- ; -- could do a pure function transformation here ---
405
-
406
- def nSig ""
407
- if( (array_length args.children) > 0) {
408
- def arg0 (args.getFirst())
409
- nSig = ( (this.getNameSignature(arg0)) )
410
- } {
411
- nSig = ( (this.getVoidNameSignature()) )
412
- }
413
- ;print "---- static method ----"
414
- ;print "arg0 " + (arg0.getCode())
415
- def new_cl ( ctx.createOpStaticClass( nSig ) )
416
- this.WalkNode( (unwrap new_cl.classNode ) ctx wr)
417
- def bodyCopy (codeDef.rebuildWithType(match true))
418
- def argsCopy (args.rebuildWithType(match true))
419
- def nameCopy (nameNode.rebuildWithType(match true))
420
-
421
- def sigN (ctx.transformOpNameWord( fc.vref ))
422
- def argsSig ( sigN + (this.getArgsSignature(argsCopy)) )
423
-
424
- ; print "Args sig for " + nSig + " == " + (argsSig)
425
-
426
- if( false == (new_cl.hasStaticMethod(argsSig))) {
427
- def sMethod ( ctx.createStaticMethod( argsSig new_cl nameCopy argsCopy bodyCopy this) )
428
- static_nameNode = nameCopy
429
- def fCtx (unwrap sMethod.fnCtx)
430
- fCtx.currentMethod = sMethod
431
- fCtx.is_function = true
432
- def m:RangerAppFunctionDesc sMethod
433
- fCtx.in_static_method = true
434
- if (nameCopy.hasFlag("weak")) {
435
- m.changeStrength(0 1 nameNode)
436
- } {
437
- m.changeStrength(1 1 nameNode)
438
- }
439
- fCtx.setInMethod()
440
- for m.params v@(lives):RangerAppParamDesc i {
441
- fCtx.defineVariable(v.name v)
442
- v.nameNode.eval_type = (v.nameNode.typeNameAsType(fCtx))
443
- v.nameNode.eval_type_name = v.nameNode.type_name
444
- }
445
- this.WalkNodeChildren( bodyCopy fCtx wr)
446
- fCtx.unsetInMethod()
447
- fCtx.in_static_method = false
448
- fCtx.function_level_context = true
449
- ;if (fnBody.didReturnAtIndex == -1) {
450
- ; if (cn.type_name != "void") {
451
- ; ctx.addError(node "Function does not return any values!")
452
- ; }
453
- ;}
454
- for fCtx.localVarNames n:string i {
455
- def p:RangerAppParamDesc (get fCtx.localVariables n)
456
- if (p.set_cnt > 0) {
457
- if(p.is_immutable) {
458
- ctx.addError( callArgs "Immutable variable was assigned")
459
- }
460
- def defNode:CodeNode p.node
461
- defNode.setFlag("mutable")
462
- def nNode:CodeNode p.nameNode
463
- nNode.setFlag("mutable")
464
- }
465
- }
466
- } {
467
- def sMethod ( new_cl.findStaticMethod( argsSig ) )
468
- static_nameNode = sMethod.nameNode
469
- }
470
- is_static_fn = true
471
- static_fn_name = argsSig
472
- static_class_name = new_cl.name
473
- }
474
- if all_matched {
475
-
476
- if is_static_fn {
477
-
478
- ; --> transfer code to static function call
479
-
480
- ;is_static_fn = true
481
- ;static_fn_name = sMethod.name
482
-
483
- def firstArg (callArgs.getFirst())
484
- firstArg.vref = static_class_name + "." + static_fn_name
485
-
486
- firstArg.flow_done = false
487
- firstArg.value_type = RangerNodeType.VRef
488
- clear firstArg.ns
489
- push firstArg.ns static_class_name
490
- push firstArg.ns static_fn_name
491
-
492
- def newArgs:CodeNode (new CodeNode ( (unwrap callArgs.code) callArgs.sp callArgs.ep) )
493
- ; note: noeval flag is used here to mark a parameter which is matched but not evaluated
494
- ; if(arg.hasFlag("noeval"))
495
- for callArgs.children ca:CodeNode i {
496
- if ca.is_part_of_chain {
497
- continue
498
- }
499
- if( i > 0) {
500
- def arg (itemAt args.children (i - 1))
501
- if( arg.hasFlag("noeval")) {
502
- continue
503
- }
504
- push newArgs.children ca
505
- }
506
- }
507
- def arg_len:int (array_length callArgs.children)
508
- while (arg_len > 1 ) {
509
- removeLast callArgs.children
510
- arg_len = arg_len - 1
511
- }
512
- push callArgs.children newArgs
513
-
514
- callArgs.flow_done = false
515
- this.WalkNode ( callArgs ctx wr)
516
- match.setRvBasedOn((unwrap static_nameNode) callArgs)
517
- ctx.removeOpNs( added_ns )
518
- return true
519
- }
520
-
521
- if is_macro {
522
- ; TODO: check the effect of chaining here...
523
- def macroNode:CodeNode ( this.buildMacro( langOper callArgs ctx ) )
524
- ; print "macro: " + (macroNode.getCode())
525
- def arg_len:int (array_length callArgs.children)
526
- while (arg_len > 0 ) {
527
- removeLast callArgs.children
528
- arg_len = arg_len - 1
529
- }
530
- push callArgs.children macroNode
531
- macroNode.parent = callArgs
532
- this.WalkNode( macroNode ctx wr)
533
- match.setRvBasedOn(nameNode callArgs)
534
- ; print "--- macro was walked -- "
535
- ctx.removeOpNs( added_ns )
536
- return true
537
- }
538
-
539
- if (nameNode.hasFlag("moves")) {
540
- def moves_opt@(optional):CodeNode (nameNode.getFlag("moves"))
541
- def moves:CodeNode (unwrap moves_opt)
542
- def ann:CodeNode moves.vref_annotation
543
- def from:CodeNode (ann.getFirst())
544
- def to:CodeNode (ann.getSecond())
545
- def cA:CodeNode (itemAt callArgs.children from.int_value)
546
- def cA2:CodeNode (itemAt callArgs.children to.int_value)
547
- if cA.hasParamDesc {
548
- def pp:RangerAppParamDesc cA.paramDesc
549
- def pp2:RangerAppParamDesc cA2.paramDesc
550
- pp.moveRefTo(callArgs (unwrap pp2) ctx)
551
- }
552
- }
553
- if (nameNode.hasFlag("returns")) {
554
- ; print "==> returns flag for " + (callArgs.getLineAsString())
555
- def activeFn:RangerAppFunctionDesc (ctx.getCurrentMethod())
556
- if ( (activeFn.nameNode.type_name != "void") || (activeFn.nameNode.value_type == RangerNodeType.ExpressionType)) {
557
-
558
- if ( (array_length callArgs.children) < 2 ) {
559
- ctx.addError(callArgs " missing return value !!!")
560
- } {
561
- def returnedValue:CodeNode (itemAt callArgs.children 1)
562
- def validated_returnvalue false
563
- if(activeFn.nameNode.value_type == RangerNodeType.ExpressionType) {
564
- validated_returnvalue = true
565
- ; lambda format of the called function
566
- def fnExpr (activeFn.nameNode.expression_value)
567
- if(null? fnExpr) {
568
- ctx.addError( (unwrap activeFn.nameNode) "returned anonymous function should have a method signature")
569
- } {
570
- if( (returnedValue.value_type != RangerNodeType.ExpressionType ) &&
571
- (returnedValue.eval_type != RangerNodeType.ExpressionType) ) {
572
- ctx.addError(returnedValue "Function should return anonymous function!")
573
- } {
574
-
575
- if( returnedValue.hasParamDesc && (!null? returnedValue.paramDesc.nameNode)) {
576
- def rExpr returnedValue.paramDesc.nameNode.expression_value
577
- this.matchLambdaArgs( (unwrap fnExpr) (unwrap rExpr) ctx wr )
578
- } {
579
- def rExpr returnedValue.expression_value
580
- this.matchLambdaArgs( (unwrap fnExpr) (unwrap rExpr) ctx wr )
581
- }
582
- }
583
- }
584
- }
585
-
586
- if( validated_returnvalue == false ) {
587
- if ((match.doesMatch( (unwrap activeFn.nameNode) returnedValue ctx)) == false) {
588
- if(activeFn.nameNode.ifNoTypeSetToEvalTypeOf( returnedValue)) {
589
- ; sets the type
590
- } {
591
- ctx.addError(returnedValue "invalid return value type!!!")
592
- }
593
- }
594
- }
595
- def argNode:CodeNode (unwrap activeFn.nameNode)
596
- if( returnedValue.hasFlag("optional")) {
597
- if ( false == (argNode.hasFlag("optional")) ) {
598
- ctx.addError(callArgs ( "function return value optionality does not match, expected non-optional return value, optional given at " + (argNode.getCode())) )
599
- }
600
- }
601
-
602
- if( argNode.hasFlag("optional")) {
603
- if ( false == (returnedValue.hasFlag("optional")) ) {
604
- ctx.addError(callArgs ( "function return value optionality does not match, expected optional return value " + (argNode.getCode())) )
605
- }
606
- }
607
-
608
- def pp:RangerAppParamDesc returnedValue.paramDesc
609
- if (!null? pp) {
610
- pp.moveRefTo(callArgs activeFn ctx)
611
- }
612
-
613
-
614
- }
615
- }
616
- if (null? callArgs.parent) {
617
- ctx.addError(callArgs "did not have parent")
618
- print ("no parent => " + (callArgs.getCode()))
619
- }
620
- callArgs.parent.didReturnAtIndex = (indexOf callArgs.parent.children callArgs)
621
- }
622
- if ((nameNode.hasFlag("returns")) == false) {
623
- match.setRvBasedOn(nameNode callArgs)
624
- }
625
- if has_eval_ctx {
626
- def tmpCtx@(lives) ctx
627
- callArgs.evalCtx = tmpCtx
628
- }
629
- def nodeP:CodeNode callArgs.parent
630
- if (!null? nodeP) {
631
- } {
632
- }
633
- def sig:string (nameNode.buildTypeSignatureUsingMatch(match))
634
- ; def ts:RangerTypeClass (callArgs.createTypeSignatureForName(sig ctx))
635
- ; callArgs.typeClass = ts
636
- some_matched = true
637
- callArgs.has_operator = true
638
- callArgs.op_index = main_index
639
- callArgs.operator_node = ch
640
- for args.children arg:CodeNode arg_index {
641
- if arg.has_vref_annotation {
642
- def anns:CodeNode arg.vref_annotation
643
- for anns.children ann:CodeNode i {
644
- if (ann.vref == "mutates") {
645
- def theArg:CodeNode (itemAt callArgs.children (arg_index + 1))
646
- if theArg.hasParamDesc {
647
- theArg.paramDesc.set_cnt = (theArg.paramDesc.set_cnt + 1)
648
- }
649
- }
650
- }
651
- }
652
- }
653
- ; print "some_matched for op operator_node -> " + (ch.getLineAsString())
654
- break _
655
- }
656
- }
657
-
658
- }
659
- if ( require_all_match == true && some_matched == false) {
660
- ;print "===================== MATCH ERROR 2 ====================="
661
- ;print ("stdMatch -> Could not match argument types for " + callFnName.vref)
662
- ;print (callArgs.getCode())
663
- ;def line_index:int (callArgs.getLine())
664
- ;print ((callArgs.getFilename()) + " Line: " + line_index)
665
- ;for callArgs.children ca:CodeNode i {
666
- ; print ((((((("arg " + i) + " eval_type : ") + ca.eval_type) + " eval_type_name = ") + ca.eval_type_name) + " type : ") + ca.type_name)
667
- ;}
668
- ctx.addError(callArgs ("Could not match argument types for " + callFnName.vref))
669
- } {
670
- ; match OK
671
- }
672
- if(expects_error) {
673
- def cnt_now:int (ctx.getErrorCount())
674
- if (cnt_now == err_cnt) {
675
- ctx.addParserError( callArgs "LANGUAGE_PARSER_ERROR: expected generated error, err counts : " + err_cnt + " : " +cnt_now)
676
- }
677
- } {
678
- def cnt_now:int (ctx.getErrorCount())
679
- if (cnt_now > err_cnt) {
680
- ctx.addParserError( callArgs "LANGUAGE_PARSER_ERROR: did not expect generated error, err counts : " + err_cnt + " : " +cnt_now)
681
- }
682
- }
683
- ctx.removeOpNs( added_ns )
684
- return some_matched
685
- }
686
-
687
- }