ranger-compiler 2.1.70 → 3.0.4

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 +114 -0
  2. package/README.md +956 -133
  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/{compiler/bin/output.js → dist/rgrc.js} +15377 -7936
  46. package/dist/stdops.rgr +168 -0
  47. package/package.json +196 -39
  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/bin/output.js +0 -23819
  150. package/compiler/ColorConsole.clj +0 -22
  151. package/compiler/ContextOperators.clj +0 -75
  152. package/compiler/FlowEnterVarDef.clj +0 -223
  153. package/compiler/InputFileSystem.clj +0 -276
  154. package/compiler/RangerDocs.clj +0 -7
  155. package/compiler/TFactory.clj +0 -146
  156. package/compiler/TFiles.clj +0 -23
  157. package/compiler/TFlow.clj +0 -39
  158. package/compiler/TNodeFactory.clj +0 -84
  159. package/compiler/TTypes.clj +0 -188
  160. package/compiler/VirtualCompiler.clj +0 -807
  161. package/compiler/bin/ng_Compiler.js +0 -23779
  162. package/compiler/commonmark_plugin.clj +0 -359
  163. package/compiler/feat2.bat +0 -2
  164. package/compiler/feats.bat +0 -9
  165. package/compiler/feature_tests.clj +0 -192
  166. package/compiler/index.js +0 -2
  167. package/compiler/issue_57.clj +0 -25
  168. package/compiler/makefile_plugin.clj +0 -135
  169. package/compiler/markdown_plugin.clj +0 -386
  170. package/compiler/maven_plugin.clj +0 -162
  171. package/compiler/ng_AndroidPageWriter.clj +0 -299
  172. package/compiler/ng_CodeNode.clj +0 -756
  173. package/compiler/ng_CodeNodeCompilerExtensions.clj +0 -839
  174. package/compiler/ng_Compiler.clj +0 -49
  175. package/compiler/ng_CompilerGeneric.clj +0 -260
  176. package/compiler/ng_CompilerOrig.clj +0 -854
  177. package/compiler/ng_DictNode.clj +0 -346
  178. package/compiler/ng_DictNode2.clj +0 -316
  179. package/compiler/ng_Execute.clj +0 -138
  180. package/compiler/ng_Execute1.clj +0 -129
  181. package/compiler/ng_FlowWork.clj +0 -3951
  182. package/compiler/ng_LiveCompiler.clj +0 -1109
  183. package/compiler/ng_RagnerJavaScriptClassWriter.clj +0 -402
  184. package/compiler/ng_RangerActiveOperators.clj +0 -86
  185. package/compiler/ng_RangerAppClassDesc.clj +0 -400
  186. package/compiler/ng_RangerAppEnums.clj +0 -86
  187. package/compiler/ng_RangerAppFunctionDesc.clj +0 -127
  188. package/compiler/ng_RangerAppMessages.clj +0 -15
  189. package/compiler/ng_RangerAppOperatorDesc.clj +0 -20
  190. package/compiler/ng_RangerAppParamDesc.clj +0 -388
  191. package/compiler/ng_RangerAppWriterContext.clj +0 -1793
  192. package/compiler/ng_RangerArgMatch.clj +0 -638
  193. package/compiler/ng_RangerCSharpClassWriter.clj +0 -484
  194. package/compiler/ng_RangerCppClassWriter.clj +0 -1023
  195. package/compiler/ng_RangerDocGenerator.clj +0 -305
  196. package/compiler/ng_RangerFlowParser.clj +0 -4992
  197. package/compiler/ng_RangerFlowParserOrig.clj +0 -4002
  198. package/compiler/ng_RangerGenericClassWriter.clj +0 -573
  199. package/compiler/ng_RangerGolangClassWriter.clj +0 -1766
  200. package/compiler/ng_RangerImmutableExtension.clj +0 -77
  201. package/compiler/ng_RangerJava7ClassWriter.clj +0 -961
  202. package/compiler/ng_RangerJavaScriptClassWriter.clj +0 -1040
  203. package/compiler/ng_RangerKotlinClassWriter.clj +0 -372
  204. package/compiler/ng_RangerLanguageWriters.clj +0 -14
  205. package/compiler/ng_RangerLispParser.clj +0 -873
  206. package/compiler/ng_RangerPHPClassWriter.clj +0 -643
  207. package/compiler/ng_RangerPlugin.clj +0 -41
  208. package/compiler/ng_RangerRangerClassWriter.clj +0 -357
  209. package/compiler/ng_RangerRustClassWriter.clj +0 -420
  210. package/compiler/ng_RangerScalaClassWriter.clj +0 -818
  211. package/compiler/ng_RangerSerializeClass.clj +0 -502
  212. package/compiler/ng_RangerServiceBuilder.clj +0 -63
  213. package/compiler/ng_RangerSwift3ClassWriter.clj +0 -809
  214. package/compiler/ng_RangerSwiftClassWriter.clj +0 -0
  215. package/compiler/ng_RangerTypeClass.clj +0 -45
  216. package/compiler/ng_SourceParser.clj +0 -241
  217. package/compiler/ng_SourceParser2.clj +0 -214
  218. package/compiler/ng_WebPageWriter.clj +0 -39
  219. package/compiler/ng_jsonParser.clj +0 -340
  220. package/compiler/ng_p_test.clj +0 -1711
  221. package/compiler/ng_parser.clj +0 -911
  222. package/compiler/ng_parser2.clj +0 -735
  223. package/compiler/ng_parser2_backup.clj +0 -1679
  224. package/compiler/ng_parser_backup.clj +0 -886
  225. package/compiler/ng_parser_ok.clj +0 -1718
  226. package/compiler/ng_parser_ok2.clj +0 -1717
  227. package/compiler/ng_parser_std_match.clj +0 -687
  228. package/compiler/ng_parser_std_match2.clj +0 -1012
  229. package/compiler/ng_parser_v2.clj +0 -1251
  230. package/compiler/ng_ui.clj +0 -403
  231. package/compiler/ng_ui_test.clj +0 -18
  232. package/compiler/ng_writer.clj +0 -338
  233. package/compiler/ng_xmlParser.clj +0 -472
  234. package/compiler/ng_xmlParser2.clj +0 -317
  235. package/compiler/ng_xmlParser3.clj +0 -251
  236. package/compiler/opdoc.bat +0 -4
  237. package/compiler/operators.md +0 -290
  238. package/compiler/p.bat +0 -4
  239. package/compiler/package.json +0 -10
  240. package/compiler/pcmd.bat +0 -4
  241. package/compiler/pcmd2.bat +0 -3
  242. package/compiler/plaintext_plugin.clj +0 -69
  243. package/compiler/plugin.bat +0 -19
  244. package/compiler/plugin2.bat +0 -4
  245. package/compiler/plugin_app.bat +0 -3
  246. package/compiler/plugin_apps.clj +0 -27
  247. package/compiler/plugins.bat +0 -10
  248. package/compiler/reveal_plugin.clj +0 -409
  249. package/compiler/simplePlugin.clj +0 -780
  250. package/compiler/t.bat +0 -3
  251. package/compiler/test_any.clj +0 -43
  252. package/compiler/test_call.clj +0 -141
  253. package/compiler/test_chain.clj +0 -79
  254. package/compiler/test_json.clj +0 -10
  255. package/compiler/test_lambda.clj +0 -153
  256. package/compiler/test_pcmd.clj +0 -32
  257. package/compiler/test_pcmd2.clj +0 -29
  258. package/compiler/test_plugin.clj +0 -237
  259. package/compiler/test_readfile.clj +0 -13
  260. package/compiler/test_reveal.clj +0 -19
  261. package/compiler/test_slides.clj +0 -312
  262. package/compiler/test_types.clj +0 -143
  263. package/compiler/test_types2.clj +0 -49
  264. package/compiler/test_types3.clj +0 -53
  265. package/compiler/test_var.clj +0 -40
  266. package/compiler/tonpm.bat +0 -14
  267. package/compiler/tonpm2.bat +0 -12
  268. package/compiler/ui_plugin.clj +0 -507
  269. package/compiler/ui_plugin2.clj +0 -427
  270. package/compiler/update-git.bat +0 -3
  271. package/compiler/vcomp.bat +0 -4
  272. package/compiler/viewbuilder_Android.clj +0 -176
  273. package/compiler/viewbuilder_Web.clj +0 -105
  274. package/dist/bin/api.js +0 -32422
  275. package/dist/bin/compiler.d.ts +0 -1638
  276. package/dist/bin/compiler.js +0 -32444
  277. package/examples/3D/bin/test_3d.js +0 -329
  278. package/examples/3D/test_3d.clj +0 -385
  279. package/examples/EVGColor/EVGColor.clj +0 -310
  280. package/examples/EVGColor/EVGColorContext.clj +0 -176
  281. package/examples/EVGColor/bin/EVGColor.js +0 -286
  282. package/examples/EVGColor/bin/minimized.js +0 -286
  283. package/examples/SVGPath/SVGPath.clj +0 -625
  284. package/examples/SVGPath/Vec2.clj +0 -103
  285. package/examples/SVGPath/bin/SVGPath.cpp +0 -887
  286. package/examples/SVGPath/bin/SVGPath.js +0 -682
  287. package/examples/SVGPath/bin/SVGPath.ts +0 -711
  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
- }