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.
- package/CHANGELOG.md +114 -0
- package/README.md +956 -133
- package/{compiler/Lang.clj → dist/Lang.rgr} +2345 -75
- package/dist/README.md +116 -0
- package/dist/{bin/api.d.ts → api.d.ts} +430 -154
- package/dist/api.js +34345 -0
- package/{lib/Ajax.clj → dist/lib/Ajax.rgr} +1 -1
- package/{lib/CmdParams.clj → dist/lib/CmdParams.rgr} +72 -72
- package/{lib/Crypto.clj → dist/lib/Crypto.rgr} +1 -1
- package/{lib/DOMLib.clj → dist/lib/DOMLib.rgr} +2 -2
- package/{lib/Engine3D.clj → dist/lib/Engine3D.rgr} +1 -1
- package/{lib/ImmutableVector.clj → dist/lib/ImmutableVector.rgr} +364 -364
- package/{lib/IndexedDB.clj → dist/lib/IndexedDB.rgr} +1 -1
- package/{lib/JSON.clj → dist/lib/JSON.rgr} +105 -2
- package/{lib/JinxProcess.clj → dist/lib/JinxProcess.rgr} +3 -3
- package/{lib/Storage.clj → dist/lib/Storage.rgr} +1 -1
- package/{lib/Timers.clj → dist/lib/Timers.rgr} +176 -170
- package/{lib/ViewLib.clj → dist/lib/ViewLib.rgr} +1 -1
- package/dist/lib/lib/ACEEditor.rgr +5 -0
- package/dist/lib/lib/Ajax.rgr +196 -0
- package/dist/lib/lib/CmdParams.rgr +72 -0
- package/dist/lib/lib/Crypto.rgr +90 -0
- package/dist/lib/lib/DOMLib.rgr +307 -0
- package/{examples/3D/Engine3D.clj → dist/lib/lib/Engine3D.rgr} +870 -857
- package/dist/lib/lib/ImmutableVector.rgr +364 -0
- package/dist/lib/lib/IndexedDB.rgr +32 -0
- package/{compiler/JSON.clj → dist/lib/lib/JSON.rgr} +106 -3
- package/dist/lib/lib/JinxProcess.rgr +838 -0
- package/dist/lib/lib/SQL.rgr +44 -0
- package/dist/lib/lib/ServiceLib.rgr +9 -0
- package/dist/lib/lib/Storage.rgr +89 -0
- package/dist/lib/lib/Time.rgr +75 -0
- package/dist/lib/lib/Timers.rgr +176 -0
- package/dist/lib/lib/TypedArrays.rgr +14 -0
- package/dist/lib/lib/ViewLib.rgr +851 -0
- package/dist/lib/lib/WebLib.rgr +47 -0
- package/dist/lib/lib/WebServerLib.rgr +137 -0
- package/{lib/ranger-dir.clj → dist/lib/lib/ranger-dir.rgr} +1 -1
- package/{compiler/stdlib.clj → dist/lib/lib/stdlib.rgr} +42 -19
- package/{lib/stdops.clj → dist/lib/lib/stdops.rgr} +1 -1
- package/dist/lib/ranger-dir.rgr +175 -0
- package/{lib/stdlib.clj → dist/lib/stdlib.rgr} +2 -2
- package/dist/lib/stdops.rgr +168 -0
- package/dist/package.json +47 -0
- package/{compiler/bin/output.js → dist/rgrc.js} +15377 -7936
- package/dist/stdops.rgr +168 -0
- package/package.json +196 -39
- package/adventofcode/day1/bin/LambdaSignature1.java +0 -3
- package/adventofcode/day1/bin/LambdaSignature2.java +0 -3
- package/adventofcode/day1/bin/LambdaSignature3.java +0 -3
- package/adventofcode/day1/bin/day1.cpp +0 -124
- package/adventofcode/day1/bin/day1.go +0 -75
- package/adventofcode/day1/bin/day1.js +0 -45
- package/adventofcode/day1/bin/day1.php +0 -46
- package/adventofcode/day1/bin/day1.scala +0 -48
- package/adventofcode/day1/bin/day1.swift +0 -48
- package/adventofcode/day1/bin/day1_part2.cpp +0 -180
- package/adventofcode/day1/bin/day1_part2.go +0 -123
- package/adventofcode/day1/bin/day1_part2.js +0 -76
- package/adventofcode/day1/bin/day1_part2.php +0 -88
- package/adventofcode/day1/bin/day1_part2.scala +0 -81
- package/adventofcode/day1/bin/day1_part2.swift +0 -91
- package/adventofcode/day1/bin/day_one.java +0 -38
- package/adventofcode/day1/bin/day_one_part_two.java +0 -57
- package/adventofcode/day1/bin/operatorsOf.java +0 -37
- package/adventofcode/day1/bin/operatorsOf_5.java +0 -10
- package/adventofcode/day1/bin/operatorsOfboolean_5.java +0 -10
- package/adventofcode/day1/bin/variant.hpp +0 -2416
- package/adventofcode/day1/compile.bat +0 -7
- package/adventofcode/day1/compile2.bat +0 -7
- package/adventofcode/day1/day1.clj +0 -19
- package/adventofcode/day1/day1_part2.clj +0 -43
- package/adventofcode/day1/input1.txt +0 -1
- package/adventofcode/day2/bin/LambdaSignature1.class +0 -0
- package/adventofcode/day2/bin/LambdaSignature1.java +0 -3
- package/adventofcode/day2/bin/LambdaSignature2.class +0 -0
- package/adventofcode/day2/bin/LambdaSignature2.java +0 -3
- package/adventofcode/day2/bin/day2.cpp +0 -133
- package/adventofcode/day2/bin/day2.go +0 -85
- package/adventofcode/day2/bin/day2.js +0 -45
- package/adventofcode/day2/bin/day2.php +0 -59
- package/adventofcode/day2/bin/day2.scala +0 -54
- package/adventofcode/day2/bin/day2.swift +0 -62
- package/adventofcode/day2/bin/day2_part2.cpp +0 -150
- package/adventofcode/day2/bin/day2_part2.go +0 -101
- package/adventofcode/day2/bin/day2_part2.js +0 -54
- package/adventofcode/day2/bin/day2_part2.php +0 -80
- package/adventofcode/day2/bin/day2_part2.scala +0 -68
- package/adventofcode/day2/bin/day2_part2.swift +0 -82
- package/adventofcode/day2/bin/day_two.java +0 -61
- package/adventofcode/day2/bin/day_two_part_two$1$1$1.class +0 -0
- package/adventofcode/day2/bin/day_two_part_two$1$1.class +0 -0
- package/adventofcode/day2/bin/day_two_part_two$1.class +0 -0
- package/adventofcode/day2/bin/day_two_part_two.class +0 -0
- package/adventofcode/day2/bin/day_two_part_two.java +0 -80
- package/adventofcode/day2/bin/operatorsOf.class +0 -0
- package/adventofcode/day2/bin/operatorsOf.java +0 -18
- package/adventofcode/day2/bin/variant.hpp +0 -2416
- package/adventofcode/day2/compile.bat +0 -7
- package/adventofcode/day2/compile2.bat +0 -7
- package/adventofcode/day2/day2.clj +0 -60
- package/adventofcode/day2/day2_part2.clj +0 -69
- package/adventofcode/day2/input1.txt +0 -1
- package/adventofcode/day3/bin/Grid.java +0 -92
- package/adventofcode/day3/bin/GridRow.java +0 -5
- package/adventofcode/day3/bin/LambdaSignature1.java +0 -3
- package/adventofcode/day3/bin/LambdaSignature2.java +0 -3
- package/adventofcode/day3/bin/LambdaSignature3.java +0 -3
- package/adventofcode/day3/bin/day3.cpp +0 -64
- package/adventofcode/day3/bin/day3.go +0 -55
- package/adventofcode/day3/bin/day3.js +0 -42
- package/adventofcode/day3/bin/day3.php +0 -41
- package/adventofcode/day3/bin/day3.scala +0 -52
- package/adventofcode/day3/bin/day3.swift +0 -43
- package/adventofcode/day3/bin/day3_part2.cpp +0 -216
- package/adventofcode/day3/bin/day3_part2.go +0 -188
- package/adventofcode/day3/bin/day3_part2.js +0 -123
- package/adventofcode/day3/bin/day3_part2.php +0 -135
- package/adventofcode/day3/bin/day3_part2.swift +0 -131
- package/adventofcode/day3/bin/day_three_part_two.java +0 -43
- package/adventofcode/day3/bin/day_two.java +0 -42
- package/adventofcode/day3/bin/operatorsOf.java +0 -14
- package/adventofcode/day3/bin/variant.hpp +0 -2416
- package/adventofcode/day3/compile.bat +0 -7
- package/adventofcode/day3/compile2.bat +0 -7
- package/adventofcode/day3/day3.clj +0 -42
- package/adventofcode/day3/day3_part2.clj +0 -112
- package/adventofcode/day4/bin/LambdaSignature1.java +0 -3
- package/adventofcode/day4/bin/day4.cpp +0 -118
- package/adventofcode/day4/bin/day4.go +0 -75
- package/adventofcode/day4/bin/day4.js +0 -40
- package/adventofcode/day4/bin/day4.php +0 -52
- package/adventofcode/day4/bin/day4.scala +0 -47
- package/adventofcode/day4/bin/day4.swift +0 -56
- package/adventofcode/day4/bin/day4_part2.go +0 -129
- package/adventofcode/day4/bin/day4_part2.js +0 -72
- package/adventofcode/day4/bin/day_four.java +0 -41
- package/adventofcode/day4/bin/inputData.java +0 -7
- package/adventofcode/day4/bin/operatorsOf.java +0 -11
- package/adventofcode/day4/bin/variant.hpp +0 -2416
- package/adventofcode/day4/compile.bat +0 -7
- package/adventofcode/day4/compile2.bat +0 -7
- package/adventofcode/day4/day4.clj +0 -32
- package/adventofcode/day4/day4_part2.clj +0 -44
- package/adventofcode/day4/input.clj +0 -519
- package/adventofcode/day4/input.txt +0 -512
- package/bin/api.ts +0 -24471
- package/bin/compiler.ts +0 -24482
- package/bin/output.js +0 -23819
- package/compiler/ColorConsole.clj +0 -22
- package/compiler/ContextOperators.clj +0 -75
- package/compiler/FlowEnterVarDef.clj +0 -223
- package/compiler/InputFileSystem.clj +0 -276
- package/compiler/RangerDocs.clj +0 -7
- package/compiler/TFactory.clj +0 -146
- package/compiler/TFiles.clj +0 -23
- package/compiler/TFlow.clj +0 -39
- package/compiler/TNodeFactory.clj +0 -84
- package/compiler/TTypes.clj +0 -188
- package/compiler/VirtualCompiler.clj +0 -807
- package/compiler/bin/ng_Compiler.js +0 -23779
- package/compiler/commonmark_plugin.clj +0 -359
- package/compiler/feat2.bat +0 -2
- package/compiler/feats.bat +0 -9
- package/compiler/feature_tests.clj +0 -192
- package/compiler/index.js +0 -2
- package/compiler/issue_57.clj +0 -25
- package/compiler/makefile_plugin.clj +0 -135
- package/compiler/markdown_plugin.clj +0 -386
- package/compiler/maven_plugin.clj +0 -162
- package/compiler/ng_AndroidPageWriter.clj +0 -299
- package/compiler/ng_CodeNode.clj +0 -756
- package/compiler/ng_CodeNodeCompilerExtensions.clj +0 -839
- package/compiler/ng_Compiler.clj +0 -49
- package/compiler/ng_CompilerGeneric.clj +0 -260
- package/compiler/ng_CompilerOrig.clj +0 -854
- package/compiler/ng_DictNode.clj +0 -346
- package/compiler/ng_DictNode2.clj +0 -316
- package/compiler/ng_Execute.clj +0 -138
- package/compiler/ng_Execute1.clj +0 -129
- package/compiler/ng_FlowWork.clj +0 -3951
- package/compiler/ng_LiveCompiler.clj +0 -1109
- package/compiler/ng_RagnerJavaScriptClassWriter.clj +0 -402
- package/compiler/ng_RangerActiveOperators.clj +0 -86
- package/compiler/ng_RangerAppClassDesc.clj +0 -400
- package/compiler/ng_RangerAppEnums.clj +0 -86
- package/compiler/ng_RangerAppFunctionDesc.clj +0 -127
- package/compiler/ng_RangerAppMessages.clj +0 -15
- package/compiler/ng_RangerAppOperatorDesc.clj +0 -20
- package/compiler/ng_RangerAppParamDesc.clj +0 -388
- package/compiler/ng_RangerAppWriterContext.clj +0 -1793
- package/compiler/ng_RangerArgMatch.clj +0 -638
- package/compiler/ng_RangerCSharpClassWriter.clj +0 -484
- package/compiler/ng_RangerCppClassWriter.clj +0 -1023
- package/compiler/ng_RangerDocGenerator.clj +0 -305
- package/compiler/ng_RangerFlowParser.clj +0 -4992
- package/compiler/ng_RangerFlowParserOrig.clj +0 -4002
- package/compiler/ng_RangerGenericClassWriter.clj +0 -573
- package/compiler/ng_RangerGolangClassWriter.clj +0 -1766
- package/compiler/ng_RangerImmutableExtension.clj +0 -77
- package/compiler/ng_RangerJava7ClassWriter.clj +0 -961
- package/compiler/ng_RangerJavaScriptClassWriter.clj +0 -1040
- package/compiler/ng_RangerKotlinClassWriter.clj +0 -372
- package/compiler/ng_RangerLanguageWriters.clj +0 -14
- package/compiler/ng_RangerLispParser.clj +0 -873
- package/compiler/ng_RangerPHPClassWriter.clj +0 -643
- package/compiler/ng_RangerPlugin.clj +0 -41
- package/compiler/ng_RangerRangerClassWriter.clj +0 -357
- package/compiler/ng_RangerRustClassWriter.clj +0 -420
- package/compiler/ng_RangerScalaClassWriter.clj +0 -818
- package/compiler/ng_RangerSerializeClass.clj +0 -502
- package/compiler/ng_RangerServiceBuilder.clj +0 -63
- package/compiler/ng_RangerSwift3ClassWriter.clj +0 -809
- package/compiler/ng_RangerSwiftClassWriter.clj +0 -0
- package/compiler/ng_RangerTypeClass.clj +0 -45
- package/compiler/ng_SourceParser.clj +0 -241
- package/compiler/ng_SourceParser2.clj +0 -214
- package/compiler/ng_WebPageWriter.clj +0 -39
- package/compiler/ng_jsonParser.clj +0 -340
- package/compiler/ng_p_test.clj +0 -1711
- package/compiler/ng_parser.clj +0 -911
- package/compiler/ng_parser2.clj +0 -735
- package/compiler/ng_parser2_backup.clj +0 -1679
- package/compiler/ng_parser_backup.clj +0 -886
- package/compiler/ng_parser_ok.clj +0 -1718
- package/compiler/ng_parser_ok2.clj +0 -1717
- package/compiler/ng_parser_std_match.clj +0 -687
- package/compiler/ng_parser_std_match2.clj +0 -1012
- package/compiler/ng_parser_v2.clj +0 -1251
- package/compiler/ng_ui.clj +0 -403
- package/compiler/ng_ui_test.clj +0 -18
- package/compiler/ng_writer.clj +0 -338
- package/compiler/ng_xmlParser.clj +0 -472
- package/compiler/ng_xmlParser2.clj +0 -317
- package/compiler/ng_xmlParser3.clj +0 -251
- package/compiler/opdoc.bat +0 -4
- package/compiler/operators.md +0 -290
- package/compiler/p.bat +0 -4
- package/compiler/package.json +0 -10
- package/compiler/pcmd.bat +0 -4
- package/compiler/pcmd2.bat +0 -3
- package/compiler/plaintext_plugin.clj +0 -69
- package/compiler/plugin.bat +0 -19
- package/compiler/plugin2.bat +0 -4
- package/compiler/plugin_app.bat +0 -3
- package/compiler/plugin_apps.clj +0 -27
- package/compiler/plugins.bat +0 -10
- package/compiler/reveal_plugin.clj +0 -409
- package/compiler/simplePlugin.clj +0 -780
- package/compiler/t.bat +0 -3
- package/compiler/test_any.clj +0 -43
- package/compiler/test_call.clj +0 -141
- package/compiler/test_chain.clj +0 -79
- package/compiler/test_json.clj +0 -10
- package/compiler/test_lambda.clj +0 -153
- package/compiler/test_pcmd.clj +0 -32
- package/compiler/test_pcmd2.clj +0 -29
- package/compiler/test_plugin.clj +0 -237
- package/compiler/test_readfile.clj +0 -13
- package/compiler/test_reveal.clj +0 -19
- package/compiler/test_slides.clj +0 -312
- package/compiler/test_types.clj +0 -143
- package/compiler/test_types2.clj +0 -49
- package/compiler/test_types3.clj +0 -53
- package/compiler/test_var.clj +0 -40
- package/compiler/tonpm.bat +0 -14
- package/compiler/tonpm2.bat +0 -12
- package/compiler/ui_plugin.clj +0 -507
- package/compiler/ui_plugin2.clj +0 -427
- package/compiler/update-git.bat +0 -3
- package/compiler/vcomp.bat +0 -4
- package/compiler/viewbuilder_Android.clj +0 -176
- package/compiler/viewbuilder_Web.clj +0 -105
- package/dist/bin/api.js +0 -32422
- package/dist/bin/compiler.d.ts +0 -1638
- package/dist/bin/compiler.js +0 -32444
- package/examples/3D/bin/test_3d.js +0 -329
- package/examples/3D/test_3d.clj +0 -385
- package/examples/EVGColor/EVGColor.clj +0 -310
- package/examples/EVGColor/EVGColorContext.clj +0 -176
- package/examples/EVGColor/bin/EVGColor.js +0 -286
- package/examples/EVGColor/bin/minimized.js +0 -286
- package/examples/SVGPath/SVGPath.clj +0 -625
- package/examples/SVGPath/Vec2.clj +0 -103
- package/examples/SVGPath/bin/SVGPath.cpp +0 -887
- package/examples/SVGPath/bin/SVGPath.js +0 -682
- package/examples/SVGPath/bin/SVGPath.ts +0 -711
- package/examples/SVGPath/bin/minimized.js +0 -578
- package/examples/SVGPath/bin/variant.hpp +0 -2416
- package/examples/minification/Vec2.clj +0 -103
- package/examples/minification/bin/minified.js +0 -44
- package/examples/minification/bin/test.js +0 -117
- package/examples/minification/test.clj +0 -13
- package/fiddle/VirtualCompiler.js +0 -23495
- package/fiddle/browser_editor.js +0 -13240
- package/fiddle/compileEnv.js +0 -1
- package/fiddle/compileEnv.json +0 -1
- package/fiddle/lang_data.js +0 -1
- package/index.html +0 -18
- package/native/httpd/HttpTester.clj +0 -33
- package/native/httpd/RangerWebService.clj +0 -81
- package/operators.md +0 -290
- package/tsconfig.json +0 -29
- package/versions/cpp/compiler.cpp +0 -15032
- package/versions/es6/compiler.js +0 -12860
- package/versions/go/compiler.go +0 -21338
- package/versions/java/AfterCodeNode.java +0 -4
- package/versions/java/ClassJoinPoint.java +0 -6
- package/versions/java/CodeFile.java +0 -42
- package/versions/java/CodeFileSystem.java +0 -72
- package/versions/java/CodeNode.java +0 -807
- package/versions/java/CodeSlice.java +0 -13
- package/versions/java/CodeWriter.java +0 -185
- package/versions/java/ColorConsole.java +0 -8
- package/versions/java/CompilerInterface.java +0 -213
- package/versions/java/DictNode.java +0 -353
- package/versions/java/LiveCompiler.java +0 -772
- package/versions/java/NodeEvalState.java +0 -24
- package/versions/java/OpFindResult.java +0 -6
- package/versions/java/RangerAppArrayValue.java +0 -7
- package/versions/java/RangerAppClassDesc.java +0 -217
- package/versions/java/RangerAppEnum.java +0 -14
- package/versions/java/RangerAppFunctionDesc.java +0 -20
- package/versions/java/RangerAppHashValue.java +0 -11
- package/versions/java/RangerAppInterfaceImpl.java +0 -6
- package/versions/java/RangerAppMethodVariants.java +0 -6
- package/versions/java/RangerAppParamDesc.java +0 -321
- package/versions/java/RangerAppTodo.java +0 -6
- package/versions/java/RangerAppValue.java +0 -10
- package/versions/java/RangerAppWriterContext.java +0 -800
- package/versions/java/RangerArgMatch.java +0 -317
- package/versions/java/RangerBackReference.java +0 -7
- package/versions/java/RangerCSharpClassWriter.java +0 -287
- package/versions/java/RangerCompilerMessage.java +0 -9
- package/versions/java/RangerCppClassWriter.java +0 -725
- package/versions/java/RangerFlowParser.java +0 -2142
- package/versions/java/RangerGenericClassWriter.java +0 -367
- package/versions/java/RangerGolangClassWriter.java +0 -1379
- package/versions/java/RangerJava7ClassWriter.java +0 -652
- package/versions/java/RangerJavaScriptClassWriter.java +0 -305
- package/versions/java/RangerKotlinClassWriter.java +0 -380
- package/versions/java/RangerLispParser.java +0 -845
- package/versions/java/RangerNodeValue.java +0 -9
- package/versions/java/RangerPHPClassWriter.java +0 -527
- package/versions/java/RangerParamEventHandler.java +0 -6
- package/versions/java/RangerParamEventList.java +0 -5
- package/versions/java/RangerParamEventMap.java +0 -27
- package/versions/java/RangerRangerClassWriter.java +0 -268
- package/versions/java/RangerRefForce.java +0 -7
- package/versions/java/RangerScalaClassWriter.java +0 -365
- package/versions/java/RangerSerializeClass.java +0 -148
- package/versions/java/RangerSwift3ClassWriter.java +0 -548
- package/versions/java/RangerTypeClass.java +0 -17
- package/versions/java/SourceCode.java +0 -65
- package/versions/php/compiler.php +0 -13830
- package/versions/swift3/compiler.swift +0 -12542
- /package/{lib/ACEEditor.clj → dist/lib/ACEEditor.rgr} +0 -0
- /package/{lib/SQL.clj → dist/lib/SQL.rgr} +0 -0
- /package/{lib/ServiceLib.clj → dist/lib/ServiceLib.rgr} +0 -0
- /package/{lib/Time.clj → dist/lib/Time.rgr} +0 -0
- /package/{lib/TypedArrays.clj → dist/lib/TypedArrays.rgr} +0 -0
- /package/{lib/WebLib.clj → dist/lib/WebLib.rgr} +0 -0
- /package/{lib/WebServerLib.clj → dist/lib/WebServerLib.rgr} +0 -0
|
@@ -1,818 +0,0 @@
|
|
|
1
|
-
class RangerScalaClassWriter {
|
|
2
|
-
Extends ( RangerGenericClassWriter )
|
|
3
|
-
def compiler:LiveCompiler
|
|
4
|
-
def init_done false
|
|
5
|
-
fn getObjectTypeString:string (type_string:string ctx:RangerAppWriterContext) {
|
|
6
|
-
|
|
7
|
-
if(ctx.isDefinedClass(type_string)) {
|
|
8
|
-
def cc (ctx.findClass(type_string))
|
|
9
|
-
if(cc.is_union) {
|
|
10
|
-
return "Any"
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
switch type_string {
|
|
15
|
-
case "int" {
|
|
16
|
-
return "Int"
|
|
17
|
-
}
|
|
18
|
-
case "string" {
|
|
19
|
-
return "String"
|
|
20
|
-
}
|
|
21
|
-
case "boolean" {
|
|
22
|
-
return "Boolean"
|
|
23
|
-
}
|
|
24
|
-
case "double" {
|
|
25
|
-
return "Double"
|
|
26
|
-
}
|
|
27
|
-
case "chararray" {
|
|
28
|
-
return "Array[Byte]"
|
|
29
|
-
}
|
|
30
|
-
case "char" {
|
|
31
|
-
return "byte"
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return type_string
|
|
35
|
-
}
|
|
36
|
-
fn getTypeString:string (type_string:string) {
|
|
37
|
-
switch type_string {
|
|
38
|
-
case "int" {
|
|
39
|
-
return "Int"
|
|
40
|
-
}
|
|
41
|
-
case "string" {
|
|
42
|
-
return "String"
|
|
43
|
-
}
|
|
44
|
-
case "boolean" {
|
|
45
|
-
return "Boolean"
|
|
46
|
-
}
|
|
47
|
-
case "double" {
|
|
48
|
-
return "Double"
|
|
49
|
-
}
|
|
50
|
-
case "chararray" {
|
|
51
|
-
return "Array[Byte]"
|
|
52
|
-
}
|
|
53
|
-
case "char" {
|
|
54
|
-
return "byte"
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return type_string
|
|
58
|
-
}
|
|
59
|
-
fn writeTypeDef:void (node:CodeNode ctx:RangerAppWriterContext wr:CodeWriter) {
|
|
60
|
-
if (node.hasFlag("optional")) {
|
|
61
|
-
wr.out("Option[" false)
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
def v_type:RangerNodeType node.value_type
|
|
65
|
-
def t_name:string node.type_name
|
|
66
|
-
def a_name:string node.array_type
|
|
67
|
-
def k_name:string node.key_type
|
|
68
|
-
if ((v_type == RangerNodeType.Object) || (v_type == RangerNodeType.VRef) || (v_type == RangerNodeType.NoType)) {
|
|
69
|
-
v_type = (node.typeNameAsType(ctx))
|
|
70
|
-
}
|
|
71
|
-
if (node.eval_type != RangerNodeType.NoType) {
|
|
72
|
-
v_type = node.eval_type
|
|
73
|
-
if ( (strlen node.eval_type_name) > 0 ) {
|
|
74
|
-
t_name = node.eval_type_name
|
|
75
|
-
}
|
|
76
|
-
if ( (strlen node.eval_array_type) > 0 ) {
|
|
77
|
-
a_name = node.eval_array_type
|
|
78
|
-
}
|
|
79
|
-
if ( (strlen node.eval_key_type) > 0 ) {
|
|
80
|
-
k_name = node.eval_key_type
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
switch v_type {
|
|
84
|
-
|
|
85
|
-
case RangerNodeType.ExpressionType {
|
|
86
|
-
def rv:CodeNode (itemAt node.expression_value.children 0)
|
|
87
|
-
def sec:CodeNode (itemAt node.expression_value.children 1)
|
|
88
|
-
def fc:CodeNode (sec.getFirst())
|
|
89
|
-
; this.import_lib("<functional>" ctx wr)
|
|
90
|
-
def is_void false
|
|
91
|
-
if(rv.type_name == "void" || rv.eval_type_name == "void") {
|
|
92
|
-
is_void = true
|
|
93
|
-
}
|
|
94
|
-
wr.out("(" false)
|
|
95
|
-
for sec.children arg:CodeNode i {
|
|
96
|
-
if( i > 0 ) {
|
|
97
|
-
wr.out(", " false)
|
|
98
|
-
}
|
|
99
|
-
this.writeTypeDef( arg ctx wr)
|
|
100
|
-
}
|
|
101
|
-
wr.out(")" false)
|
|
102
|
-
if is_void {
|
|
103
|
-
wr.out("=> Unit" false)
|
|
104
|
-
} {
|
|
105
|
-
wr.out("=> " false)
|
|
106
|
-
this.writeTypeDef( rv ctx wr)
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
case RangerNodeType.Enum {
|
|
111
|
-
wr.out("Int" false)
|
|
112
|
-
}
|
|
113
|
-
case RangerNodeType.Integer {
|
|
114
|
-
wr.out("Int" false)
|
|
115
|
-
}
|
|
116
|
-
case RangerNodeType.Double {
|
|
117
|
-
wr.out("Double" false)
|
|
118
|
-
}
|
|
119
|
-
case RangerNodeType.String {
|
|
120
|
-
wr.out("String" false)
|
|
121
|
-
}
|
|
122
|
-
case RangerNodeType.Boolean {
|
|
123
|
-
wr.out("Boolean" false)
|
|
124
|
-
}
|
|
125
|
-
case RangerNodeType.Char {
|
|
126
|
-
wr.out("Byte" false)
|
|
127
|
-
}
|
|
128
|
-
case RangerNodeType.CharBuffer {
|
|
129
|
-
wr.out("Array[Byte]" false)
|
|
130
|
-
}
|
|
131
|
-
case RangerNodeType.Hash {
|
|
132
|
-
wr.addImport("scala.collection.mutable")
|
|
133
|
-
wr.out((((("collection.mutable.HashMap[" + (this.getObjectTypeString(k_name ctx))) + ", ") + (this.getObjectTypeString(a_name ctx))) + "]") false)
|
|
134
|
-
}
|
|
135
|
-
case RangerNodeType.Array {
|
|
136
|
-
wr.addImport("scala.collection.mutable")
|
|
137
|
-
wr.out((("collection.mutable.ArrayBuffer[" + (this.getObjectTypeString(a_name ctx))) + "]") false)
|
|
138
|
-
}
|
|
139
|
-
default {
|
|
140
|
-
|
|
141
|
-
if(ctx.isDefinedClass(t_name)) {
|
|
142
|
-
def cc (ctx.findClass(t_name))
|
|
143
|
-
if(cc.is_union) {
|
|
144
|
-
wr.out("Any" false)
|
|
145
|
-
if (node.hasFlag("optional")) {
|
|
146
|
-
wr.out("]" false)
|
|
147
|
-
}
|
|
148
|
-
return
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
if (node.type_name == "void") {
|
|
153
|
-
wr.out("Unit" false)
|
|
154
|
-
return
|
|
155
|
-
}
|
|
156
|
-
wr.out((this.getTypeString(t_name)) false)
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
if (node.hasFlag("optional")) {
|
|
160
|
-
wr.out("]" false)
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
fn writeTypeDefNoOption:void (node:CodeNode ctx:RangerAppWriterContext wr:CodeWriter) {
|
|
164
|
-
def v_type:RangerNodeType node.value_type
|
|
165
|
-
if (node.eval_type != RangerNodeType.NoType) {
|
|
166
|
-
v_type = node.eval_type
|
|
167
|
-
}
|
|
168
|
-
switch v_type {
|
|
169
|
-
|
|
170
|
-
case RangerNodeType.ExpressionType {
|
|
171
|
-
def rv:CodeNode (itemAt node.expression_value.children 0)
|
|
172
|
-
def sec:CodeNode (itemAt node.expression_value.children 1)
|
|
173
|
-
def fc:CodeNode (sec.getFirst())
|
|
174
|
-
def is_void false
|
|
175
|
-
if(rv.type_name == "void" || rv.eval_type_name == "void") {
|
|
176
|
-
is_void = true
|
|
177
|
-
}
|
|
178
|
-
wr.out("(" false)
|
|
179
|
-
for sec.children arg:CodeNode i {
|
|
180
|
-
if( i > 0 ) {
|
|
181
|
-
wr.out(", " false)
|
|
182
|
-
}
|
|
183
|
-
this.writeTypeDef( arg ctx wr)
|
|
184
|
-
}
|
|
185
|
-
wr.out(")" false)
|
|
186
|
-
if is_void {
|
|
187
|
-
wr.out("=> Unit" false)
|
|
188
|
-
} {
|
|
189
|
-
wr.out("=> " false)
|
|
190
|
-
this.writeTypeDef( rv ctx wr)
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
case RangerNodeType.Enum {
|
|
195
|
-
wr.out("Int" false)
|
|
196
|
-
}
|
|
197
|
-
case RangerNodeType.Integer {
|
|
198
|
-
wr.out("Int" false)
|
|
199
|
-
}
|
|
200
|
-
case RangerNodeType.Double {
|
|
201
|
-
wr.out("Double" false)
|
|
202
|
-
}
|
|
203
|
-
case RangerNodeType.String {
|
|
204
|
-
wr.out("String" false)
|
|
205
|
-
}
|
|
206
|
-
case RangerNodeType.Boolean {
|
|
207
|
-
wr.out("Boolean" false)
|
|
208
|
-
}
|
|
209
|
-
case RangerNodeType.Char {
|
|
210
|
-
wr.out("Byte" false)
|
|
211
|
-
}
|
|
212
|
-
case RangerNodeType.CharBuffer {
|
|
213
|
-
wr.out("Array[Byte]" false)
|
|
214
|
-
}
|
|
215
|
-
case RangerNodeType.Hash {
|
|
216
|
-
wr.addImport("scala.collection.mutable")
|
|
217
|
-
wr.out((((("collection.mutable.HashMap[" + (this.getObjectTypeString(node.key_type ctx))) + ", ") + (this.getObjectTypeString(node.array_type ctx))) + "]") false)
|
|
218
|
-
}
|
|
219
|
-
case RangerNodeType.Array {
|
|
220
|
-
wr.addImport("scala.collection.mutable")
|
|
221
|
-
wr.out((("collection.mutable.ArrayBuffer[" + (this.getObjectTypeString(node.array_type ctx))) + "]") false)
|
|
222
|
-
}
|
|
223
|
-
default {
|
|
224
|
-
if (node.type_name == "void") {
|
|
225
|
-
wr.out("Unit" false)
|
|
226
|
-
return
|
|
227
|
-
}
|
|
228
|
-
wr.out((this.getTypeString(node.type_name)) false)
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
fn WriteVRef:void (node:CodeNode ctx:RangerAppWriterContext wr:CodeWriter) {
|
|
233
|
-
|
|
234
|
-
if (node.vref == "this") {
|
|
235
|
-
wr.out("this" false)
|
|
236
|
-
return
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
if (node.eval_type == RangerNodeType.Enum) {
|
|
240
|
-
if( (array_length node.ns) > 1) {
|
|
241
|
-
def rootObjName:string (itemAt node.ns 0)
|
|
242
|
-
def enumName:string (itemAt node.ns 1)
|
|
243
|
-
def e@(optional):RangerAppEnum (ctx.getEnum(rootObjName))
|
|
244
|
-
if (!null? e) {
|
|
245
|
-
wr.out(("" + (unwrap (get e.values enumName))) false)
|
|
246
|
-
return
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
if ((array_length node.nsp) > 0) {
|
|
251
|
-
for node.nsp p:RangerAppParamDesc i {
|
|
252
|
-
if (i == 0) {
|
|
253
|
-
def part:string (itemAt node.ns 0)
|
|
254
|
-
if(part == "this") {
|
|
255
|
-
wr.out("this" false)
|
|
256
|
-
continue
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
if (i > 0) {
|
|
260
|
-
wr.out("." false)
|
|
261
|
-
}
|
|
262
|
-
if ((strlen p.compiledName) > 0) {
|
|
263
|
-
wr.out((this.adjustType(p.compiledName)) false)
|
|
264
|
-
} {
|
|
265
|
-
if ((strlen p.name) > 0) {
|
|
266
|
-
wr.out((this.adjustType(p.name)) false)
|
|
267
|
-
} {
|
|
268
|
-
wr.out((this.adjustType( (itemAt node.ns i))) false)
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
if (i == 0) {
|
|
272
|
-
if (p.nameNode.hasFlag("optional")) {
|
|
273
|
-
wr.out(".get" false)
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
return
|
|
278
|
-
}
|
|
279
|
-
if node.hasParamDesc {
|
|
280
|
-
def p:RangerAppParamDesc node.paramDesc
|
|
281
|
-
wr.out(p.compiledName false)
|
|
282
|
-
return
|
|
283
|
-
}
|
|
284
|
-
for node.ns part:string i {
|
|
285
|
-
if (i > 0) {
|
|
286
|
-
wr.out("." false)
|
|
287
|
-
}
|
|
288
|
-
wr.out((this.adjustType(part)) false)
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
fn writeVarDef:void (node:CodeNode ctx:RangerAppWriterContext wr:CodeWriter) {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
if node.hasParamDesc {
|
|
295
|
-
def p:RangerAppParamDesc node.paramDesc
|
|
296
|
-
def nn:CodeNode (itemAt node.children 1)
|
|
297
|
-
if ((p.ref_cnt == 0) && (p.is_class_variable == false)) {
|
|
298
|
-
wr.out("/** unused " false)
|
|
299
|
-
}
|
|
300
|
-
if ((p.set_cnt > 0) || p.is_class_variable) {
|
|
301
|
-
wr.out((("var " + p.compiledName) + " ") false)
|
|
302
|
-
} {
|
|
303
|
-
wr.out((("val " + p.compiledName) + " ") false)
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
def ti_ok (ctx.canUseTypeInference( (unwrap p.nameNode) ))
|
|
307
|
-
if( (false == ti_ok ) || ( (false == (p.nameNode.hasFlag("optional"))) && ( (array_length node.children) == 2) ) ) {
|
|
308
|
-
wr.out(": " false)
|
|
309
|
-
this.writeTypeDef(( unwrap p.nameNode ) ctx wr)
|
|
310
|
-
wr.out(" " false)
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
if ((array_length node.children) > 2) {
|
|
314
|
-
wr.out("= " false)
|
|
315
|
-
ctx.setInExpr()
|
|
316
|
-
def value:CodeNode (node.getThird())
|
|
317
|
-
this.WalkNode(value ctx wr)
|
|
318
|
-
ctx.unsetInExpr()
|
|
319
|
-
} {
|
|
320
|
-
def b_inited:boolean false
|
|
321
|
-
if (p.nameNode.value_type == RangerNodeType.Array) {
|
|
322
|
-
b_inited = true
|
|
323
|
-
wr.out("= new collection.mutable.ArrayBuffer()" false)
|
|
324
|
-
}
|
|
325
|
-
if (p.nameNode.value_type == RangerNodeType.Hash) {
|
|
326
|
-
b_inited = true
|
|
327
|
-
wr.out("= new collection.mutable.HashMap()" false)
|
|
328
|
-
}
|
|
329
|
-
if (p.nameNode.hasFlag("optional")) {
|
|
330
|
-
wr.out(" = Option.empty[" false)
|
|
331
|
-
this.writeTypeDefNoOption( ( unwrap p.nameNode ) ctx wr)
|
|
332
|
-
wr.out("]" false)
|
|
333
|
-
} {
|
|
334
|
-
if (b_inited == false) {
|
|
335
|
-
wr.out("= _" false)
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
if ((p.ref_cnt == 0) && (p.is_class_variable == false)) {
|
|
340
|
-
wr.out("**/ " true)
|
|
341
|
-
} {
|
|
342
|
-
wr.newline()
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
fn writeArgsDef:void (fnDesc:RangerAppFunctionDesc ctx:RangerAppWriterContext wr:CodeWriter) {
|
|
347
|
-
for fnDesc.params arg:RangerAppParamDesc i {
|
|
348
|
-
if (i > 0) {
|
|
349
|
-
wr.out("," false)
|
|
350
|
-
}
|
|
351
|
-
wr.out(" " false)
|
|
352
|
-
wr.out((arg.compiledName + " : ") false)
|
|
353
|
-
this.writeTypeDef( (unwrap arg.nameNode) ctx wr)
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
fn writeFnEnd (node:CodeNode ctx:RangerAppWriterContext wr:CodeWriter) {
|
|
358
|
-
wr.indent(-1)
|
|
359
|
-
wr.out("} catch {" true)
|
|
360
|
-
wr.indent(1)
|
|
361
|
-
wr.out("case rv:ScalaReturnValue => {" true)
|
|
362
|
-
wr.indent(1)
|
|
363
|
-
wr.out("__returns__ = rv.value" true)
|
|
364
|
-
wr.indent(-1)
|
|
365
|
-
wr.out("}" true)
|
|
366
|
-
wr.indent(-1)
|
|
367
|
-
wr.out("}" true)
|
|
368
|
-
|
|
369
|
-
wr.out("__returns__.asInstanceOf[" false )
|
|
370
|
-
this.writeTypeDef(node ctx wr)
|
|
371
|
-
wr.out("]" true)
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
fn writeFnStart(node:CodeNode ctx:RangerAppWriterContext wr:CodeWriter) {
|
|
375
|
-
wr.out("var __returns__ : Any = null" true)
|
|
376
|
-
wr.out("try {" true)
|
|
377
|
-
wr.indent(1)
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
fn CustomOperator:void (node:CodeNode ctx:RangerAppWriterContext wr:CodeWriter) {
|
|
381
|
-
|
|
382
|
-
def fc:CodeNode (node.getFirst())
|
|
383
|
-
def cmd:string fc.vref
|
|
384
|
-
;"
|
|
385
|
-
if(cmd == "for") {
|
|
386
|
-
; for list item:Type ...
|
|
387
|
-
def listNode (itemAt node.children 1)
|
|
388
|
-
def itemNode (itemAt node.children 2)
|
|
389
|
-
def indexNode (itemAt node.children 3)
|
|
390
|
-
def bodyNode (itemAt node.children 4)
|
|
391
|
-
|
|
392
|
-
def break_cnt 0
|
|
393
|
-
def continue_cnt 0
|
|
394
|
-
bodyNode.forTree({
|
|
395
|
-
if(item.isFirstVref('break')) {
|
|
396
|
-
break_cnt = break_cnt + 1
|
|
397
|
-
}
|
|
398
|
-
if(item.isFirstVref('continue')) {
|
|
399
|
-
continue_cnt = continue_cnt + 1
|
|
400
|
-
}
|
|
401
|
-
})
|
|
402
|
-
if( continue_cnt > 0 ) {
|
|
403
|
-
ctx.addError(node "oops, sorry. Currently Scala output can not handle for-loops with continue :/")
|
|
404
|
-
return
|
|
405
|
-
}
|
|
406
|
-
if( break_cnt > 0 ) {
|
|
407
|
-
wr.addImport("scala.util.control._")
|
|
408
|
-
wr.out('try {' true)
|
|
409
|
-
wr.indent(1)
|
|
410
|
-
wr.out('val __break__ = new Breaks' true)
|
|
411
|
-
wr.out('__break__.breakable {' true)
|
|
412
|
-
wr.indent(1)
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
wr.out( 'for( ' false )
|
|
416
|
-
this.WalkNode( indexNode ctx wr )
|
|
417
|
-
wr.out( ' <- 0 until ' false)
|
|
418
|
-
this.WalkNode( listNode ctx wr )
|
|
419
|
-
wr.out('.length ) {' true}
|
|
420
|
-
wr.indent(1)
|
|
421
|
-
; "for ( " (e 3) " <- 0 until " (e 1) ".length ) {" nl I "val " (e 2) " = " (e 1) "(" (e 3) ")" nl (block 4) nl i "}"
|
|
422
|
-
|
|
423
|
-
wr.out('val ' false)
|
|
424
|
-
this.WalkNode( itemNode ctx wr )
|
|
425
|
-
wr.out(' = ' false)
|
|
426
|
-
this.WalkNode( listNode ctx wr )
|
|
427
|
-
wr.out("(" false)
|
|
428
|
-
this.WalkNode( indexNode ctx wr )
|
|
429
|
-
wr.out(')' true)
|
|
430
|
-
|
|
431
|
-
this.WalkNode( bodyNode ctx wr )
|
|
432
|
-
wr.indent(-1)
|
|
433
|
-
wr.out("}" true)
|
|
434
|
-
|
|
435
|
-
if( break_cnt > 0 ) {
|
|
436
|
-
wr.indent(-1)
|
|
437
|
-
wr.out("}" true)
|
|
438
|
-
wr.indent(-1)
|
|
439
|
-
wr.out("}" true)
|
|
440
|
-
}
|
|
441
|
-
return
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
if(cmd == "try" ) {
|
|
445
|
-
def tryBlock:CodeNode (node.getSecond())
|
|
446
|
-
def catchBlock:CodeNode (node.getThird())
|
|
447
|
-
wr.out("try {" true)
|
|
448
|
-
wr.indent(1)
|
|
449
|
-
this.WalkNode( tryBlock ctx wr )
|
|
450
|
-
wr.indent(-1)
|
|
451
|
-
wr.out("} catch {" true)
|
|
452
|
-
wr.indent(1)
|
|
453
|
-
if( ctx.inLambda() ) {
|
|
454
|
-
wr.out("case rv:ScalaReturnValue => {" true)
|
|
455
|
-
wr.indent(1)
|
|
456
|
-
wr.out("throw new ScalaReturnValue(rv.value)" true)
|
|
457
|
-
wr.indent(-1)
|
|
458
|
-
wr.out("}" true)
|
|
459
|
-
}
|
|
460
|
-
wr.out("case e: Exception => {" true)
|
|
461
|
-
wr.indent(1)
|
|
462
|
-
this.WalkNode( catchBlock ctx wr )
|
|
463
|
-
wr.indent(-1)
|
|
464
|
-
wr.out("}" true)
|
|
465
|
-
wr.indent(-1)
|
|
466
|
-
wr.out("}" true)
|
|
467
|
-
return
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
if(cmd == "return" ) {
|
|
471
|
-
if( (array_length node.children ) > 1 ) {
|
|
472
|
-
def rValue (node.getSecond())
|
|
473
|
-
|
|
474
|
-
if( ctx.getFlag("last_returns")) {
|
|
475
|
-
this.WalkNode( rValue ctx wr )
|
|
476
|
-
return
|
|
477
|
-
}
|
|
478
|
-
if( ctx.inLambda() ) {
|
|
479
|
-
wr.out("throw new ScalaReturnValue(" false)
|
|
480
|
-
ctx.setInExpr()
|
|
481
|
-
this.WalkNode( rValue ctx wr )
|
|
482
|
-
ctx.unsetInExpr()
|
|
483
|
-
wr.out(")" true)
|
|
484
|
-
} {
|
|
485
|
-
wr.out("return " false)
|
|
486
|
-
ctx.setInExpr()
|
|
487
|
-
this.WalkNode( rValue ctx wr )
|
|
488
|
-
ctx.unsetInExpr()
|
|
489
|
-
wr.out(" " true)
|
|
490
|
-
}
|
|
491
|
-
} {
|
|
492
|
-
if( ctx.inLambda() ) {
|
|
493
|
-
wr.out("throw new ScalaReturnValue(null)" true)
|
|
494
|
-
} {
|
|
495
|
-
wr.out("return" true)
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
return
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
fn CreateLambda:void (node:CodeNode ctx:RangerAppWriterContext wr:CodeWriter) {
|
|
503
|
-
def lambdaCtx (unwrap node.lambda_ctx)
|
|
504
|
-
def fnDef:CodeNode (itemAt node.children 0)
|
|
505
|
-
def args:CodeNode (itemAt node.children 1)
|
|
506
|
-
def body:CodeNode (itemAt node.children 2)
|
|
507
|
-
lambdaCtx.is_lambda = true
|
|
508
|
-
wr.out("((" false)
|
|
509
|
-
for args.children arg:CodeNode i {
|
|
510
|
-
if (i > 0) {
|
|
511
|
-
wr.out(", " false)
|
|
512
|
-
}
|
|
513
|
-
if(arg.flow_done == false) {
|
|
514
|
-
this.compiler.parser.WalkNode( arg lambdaCtx wr)
|
|
515
|
-
}
|
|
516
|
-
this.WalkNode(arg lambdaCtx wr)
|
|
517
|
-
wr.out(" : " false)
|
|
518
|
-
this.writeTypeDef( arg ctx wr)
|
|
519
|
-
}
|
|
520
|
-
wr.out(")" false)
|
|
521
|
-
|
|
522
|
-
def return_cnt 0
|
|
523
|
-
def line_cnt (array_length body.children)
|
|
524
|
-
body.forTree({
|
|
525
|
-
if(item.isFirstVref('return')) {
|
|
526
|
-
return_cnt = return_cnt + 1
|
|
527
|
-
}
|
|
528
|
-
})
|
|
529
|
-
|
|
530
|
-
if( line_cnt == 1) {
|
|
531
|
-
return_cnt = 1
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
; disable optimizations
|
|
536
|
-
; return_cnt = 2
|
|
537
|
-
; line_cnt = 2
|
|
538
|
-
|
|
539
|
-
; test if this function can be simplified as last value is return
|
|
540
|
-
if( fnDef.type_name != "void" ) {
|
|
541
|
-
if( return_cnt == 1 ) {
|
|
542
|
-
if( line_cnt > 1) {
|
|
543
|
-
wr.out(" => { " true)
|
|
544
|
-
wr.indent(1)
|
|
545
|
-
lambdaCtx.restartExpressionLevel()
|
|
546
|
-
} {
|
|
547
|
-
wr.out(" => " false)
|
|
548
|
-
lambdaCtx.setInExpr()
|
|
549
|
-
}
|
|
550
|
-
; trivial case: we can simplify the function
|
|
551
|
-
lambdaCtx.setFlag("last_returns" true)
|
|
552
|
-
for body.children item:CodeNode i {
|
|
553
|
-
this.WalkNode(item lambdaCtx wr)
|
|
554
|
-
}
|
|
555
|
-
if( line_cnt > 1) {
|
|
556
|
-
wr.newline()
|
|
557
|
-
wr.indent(-1)
|
|
558
|
-
wr.out("}" false)
|
|
559
|
-
} {
|
|
560
|
-
lambdaCtx.unsetInExpr()
|
|
561
|
-
}
|
|
562
|
-
wr.out(')' false)
|
|
563
|
-
return
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
if( line_cnt > 1 || (return_cnt > 1) ) {
|
|
568
|
-
wr.out(" => { " true)
|
|
569
|
-
wr.indent(1)
|
|
570
|
-
lambdaCtx.restartExpressionLevel()
|
|
571
|
-
} {
|
|
572
|
-
wr.out(" => " false)
|
|
573
|
-
lambdaCtx.setInExpr()
|
|
574
|
-
}
|
|
575
|
-
if( fnDef.type_name != "void") {
|
|
576
|
-
this.writeFnStart( fnDef ctx wr )
|
|
577
|
-
}
|
|
578
|
-
for body.children item:CodeNode i {
|
|
579
|
-
this.WalkNode(item lambdaCtx wr)
|
|
580
|
-
}
|
|
581
|
-
if( fnDef.type_name != "void") {
|
|
582
|
-
this.writeFnEnd( fnDef ctx wr )
|
|
583
|
-
}
|
|
584
|
-
if( line_cnt > 1 || (return_cnt > 1) ) {
|
|
585
|
-
wr.newline()
|
|
586
|
-
wr.indent(-1)
|
|
587
|
-
wr.out("}" false)
|
|
588
|
-
} {
|
|
589
|
-
lambdaCtx.unsetInExpr()
|
|
590
|
-
}
|
|
591
|
-
wr.out(')' false)
|
|
592
|
-
|
|
593
|
-
; wr.indent(-1)
|
|
594
|
-
; wr.out("}" false)
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
fn writeArrayLiteral( node:CodeNode ctx:RangerAppWriterContext wr:CodeWriter) {
|
|
598
|
-
wr.out("collection.mutable.ArrayBuffer(" false)
|
|
599
|
-
node.children.forEach({
|
|
600
|
-
if( index > 0 ) {
|
|
601
|
-
wr.out(", " false)
|
|
602
|
-
}
|
|
603
|
-
this.WalkNode( item ctx wr )
|
|
604
|
-
})
|
|
605
|
-
wr.out(")" false)
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
fn writeClass:void (node:CodeNode ctx:RangerAppWriterContext orig_wr:CodeWriter) {
|
|
609
|
-
def declaredFunction:[string:boolean]
|
|
610
|
-
def cl:RangerAppClassDesc node.clDesc
|
|
611
|
-
if (null? cl) {
|
|
612
|
-
return
|
|
613
|
-
}
|
|
614
|
-
def wr:CodeWriter orig_wr ; (orig_wr.getFileWriter("." (cl.name + ".scala")))
|
|
615
|
-
|
|
616
|
-
if( init_done == false ) {
|
|
617
|
-
wr.out("case class ScalaReturnValue(value:Any) extends Exception" true)
|
|
618
|
-
wr.createTag("imports")
|
|
619
|
-
init_done = true
|
|
620
|
-
wr.createTag("beginning")
|
|
621
|
-
}
|
|
622
|
-
def importFork:CodeWriter (wr.getTag("imports"))
|
|
623
|
-
def b_class_has_content ( cl.has_constructor || ( has cl.variables) || (has cl.defined_variants) || (has cl.extends_classes) )
|
|
624
|
-
if b_class_has_content {
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
if ( ( array_length cl.extends_classes ) > 0 ) {
|
|
628
|
-
for cl.extends_classes pName:string i {
|
|
629
|
-
def pC:RangerAppClassDesc (ctx.findClass(pName))
|
|
630
|
-
; for pC.variables pvar:RangerAppParamDesc i {
|
|
631
|
-
; set declaredVariable pvar.name true
|
|
632
|
-
; }
|
|
633
|
-
for pC.defined_variants fnVar:string i {
|
|
634
|
-
def mVs:RangerAppMethodVariants (get pC.method_variants fnVar)
|
|
635
|
-
for mVs.variants variant:RangerAppFunctionDesc i {
|
|
636
|
-
set declaredFunction variant.name true
|
|
637
|
-
; set parentFunction variant.name variant
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
; for pC.static_methods variant:RangerAppFunctionDesc i {
|
|
641
|
-
; set declaredStaticFunction variant.name true
|
|
642
|
-
; }
|
|
643
|
-
}
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
wr.out((("class " + cl.name) + " ") false)
|
|
647
|
-
if cl.has_constructor {
|
|
648
|
-
wr.out("(" false)
|
|
649
|
-
def constr:RangerAppFunctionDesc (unwrap cl.constructor_fn)
|
|
650
|
-
for constr.params arg:RangerAppParamDesc i {
|
|
651
|
-
if (i > 0) {
|
|
652
|
-
wr.out(", " false)
|
|
653
|
-
}
|
|
654
|
-
wr.out((arg.name + " : ") false)
|
|
655
|
-
this.writeTypeDef( (unwrap arg.nameNode) ctx wr)
|
|
656
|
-
}
|
|
657
|
-
wr.out(")" false)
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
if ( ( array_length cl.extends_classes ) > 0 ) {
|
|
661
|
-
wr.out(" extends " false)
|
|
662
|
-
for cl.extends_classes pName:string i {
|
|
663
|
-
wr.out(pName false)
|
|
664
|
-
; parentClass = (ctx.findClass(pName))
|
|
665
|
-
}
|
|
666
|
-
}
|
|
667
|
-
|
|
668
|
-
wr.out(" {" true)
|
|
669
|
-
wr.indent(1)
|
|
670
|
-
for cl.variables pvar:RangerAppParamDesc i {
|
|
671
|
-
this.writeVarDef(( unwrap pvar.node ) ctx wr)
|
|
672
|
-
}
|
|
673
|
-
if cl.has_constructor {
|
|
674
|
-
def constr:RangerAppFunctionDesc cl.constructor_fn
|
|
675
|
-
wr.newline()
|
|
676
|
-
def subCtx:RangerAppWriterContext (unwrap constr.fnCtx)
|
|
677
|
-
subCtx.is_function = true
|
|
678
|
-
this.WalkNode(( unwrap constr.fnBody ) subCtx wr)
|
|
679
|
-
wr.newline()
|
|
680
|
-
}
|
|
681
|
-
for cl.defined_variants fnVar:string i {
|
|
682
|
-
def mVs:RangerAppMethodVariants (get cl.method_variants fnVar)
|
|
683
|
-
for mVs.variants variant:RangerAppFunctionDesc i {
|
|
684
|
-
|
|
685
|
-
if( has declaredFunction variant.name ) {
|
|
686
|
-
wr.out('override ' false)
|
|
687
|
-
}
|
|
688
|
-
wr.out("def " false)
|
|
689
|
-
wr.out(" " false)
|
|
690
|
-
wr.out((variant.name + "(") false)
|
|
691
|
-
this.writeArgsDef(variant ctx wr)
|
|
692
|
-
wr.out(") : " false)
|
|
693
|
-
this.writeTypeDef(( unwrap variant.nameNode ) ctx wr)
|
|
694
|
-
wr.out(" = " false)
|
|
695
|
-
|
|
696
|
-
def return_cnt 0
|
|
697
|
-
def line_cnt (array_length variant.fnBody.children)
|
|
698
|
-
variant.fnBody.forTree({
|
|
699
|
-
if(item.isFirstVref('return')) {
|
|
700
|
-
return_cnt = return_cnt + 1
|
|
701
|
-
}
|
|
702
|
-
})
|
|
703
|
-
|
|
704
|
-
def subCtx:RangerAppWriterContext ( unwrap variant.fnCtx )
|
|
705
|
-
subCtx.is_function = true
|
|
706
|
-
if( return_cnt <= 1 ) {
|
|
707
|
-
subCtx.setFlag("last_returns" true)
|
|
708
|
-
if( line_cnt > 1) {
|
|
709
|
-
wr.out(" { " true)
|
|
710
|
-
wr.indent(1)
|
|
711
|
-
} {
|
|
712
|
-
subCtx.setInExpr()
|
|
713
|
-
}
|
|
714
|
-
this.WalkNode( (unwrap variant.fnBody ) subCtx wr)
|
|
715
|
-
if( line_cnt > 1) {
|
|
716
|
-
wr.newline()
|
|
717
|
-
wr.indent(-1)
|
|
718
|
-
wr.out("}" true)
|
|
719
|
-
} {
|
|
720
|
-
subCtx.unsetInExpr()
|
|
721
|
-
wr.newline()
|
|
722
|
-
}
|
|
723
|
-
} {
|
|
724
|
-
wr.out(" {" true)
|
|
725
|
-
wr.indent(1)
|
|
726
|
-
wr.newline()
|
|
727
|
-
this.WalkNode( (unwrap variant.fnBody ) subCtx wr)
|
|
728
|
-
wr.newline()
|
|
729
|
-
wr.indent(-1)
|
|
730
|
-
wr.out("}" true)
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
}
|
|
734
|
-
}
|
|
735
|
-
wr.indent(-1)
|
|
736
|
-
wr.out("}" true)
|
|
737
|
-
}
|
|
738
|
-
|
|
739
|
-
def b_has_non_main_static false
|
|
740
|
-
def b_had_app:boolean false
|
|
741
|
-
def app_obj:RangerAppFunctionDesc
|
|
742
|
-
|
|
743
|
-
cl.static_methods.forEach({
|
|
744
|
-
if( item.name != "main" ) {
|
|
745
|
-
b_has_non_main_static = true
|
|
746
|
-
} {
|
|
747
|
-
b_had_app = true
|
|
748
|
-
def it item
|
|
749
|
-
app_obj = it
|
|
750
|
-
}
|
|
751
|
-
})
|
|
752
|
-
|
|
753
|
-
if b_has_non_main_static {
|
|
754
|
-
wr.out("" true)
|
|
755
|
-
wr.out(("// companion object for static methods of " + cl.name) + " static cnt == " + (array_length cl.static_methods) , true)
|
|
756
|
-
wr.out((("object " + cl.name) + " {") true)
|
|
757
|
-
wr.indent(1)
|
|
758
|
-
for cl.static_methods variant:RangerAppFunctionDesc i {
|
|
759
|
-
if (variant.nameNode.hasFlag("main")) {
|
|
760
|
-
continue _
|
|
761
|
-
}
|
|
762
|
-
wr.out("def " false)
|
|
763
|
-
wr.out(" " false)
|
|
764
|
-
wr.out((variant.name + "(") false)
|
|
765
|
-
this.writeArgsDef(variant ctx wr)
|
|
766
|
-
wr.out(") : " false)
|
|
767
|
-
this.writeTypeDef(( unwrap variant.nameNode ) ctx wr)
|
|
768
|
-
wr.out(" = {" true)
|
|
769
|
-
wr.indent(1)
|
|
770
|
-
wr.newline()
|
|
771
|
-
def subCtx:RangerAppWriterContext ( unwrap variant.fnCtx )
|
|
772
|
-
subCtx.is_function = true
|
|
773
|
-
this.WalkNode( (unwrap variant.fnBody ) subCtx wr)
|
|
774
|
-
|
|
775
|
-
wr.newline()
|
|
776
|
-
wr.indent(-1)
|
|
777
|
-
wr.out("}" true)
|
|
778
|
-
}
|
|
779
|
-
wr.newline()
|
|
780
|
-
wr.indent(-1)
|
|
781
|
-
wr.out("}" true)
|
|
782
|
-
}
|
|
783
|
-
if b_had_app {
|
|
784
|
-
def variant:RangerAppFunctionDesc app_obj
|
|
785
|
-
def b_scalafiddle (ctx.hasCompilerFlag("scalafiddle"))
|
|
786
|
-
def theEnd (wr.getTag("file_end"))
|
|
787
|
-
|
|
788
|
-
if b_scalafiddle {
|
|
789
|
-
theEnd = (wr.getTag("beginning"))
|
|
790
|
-
theEnd.out("" true)
|
|
791
|
-
theEnd.out("// ----------- the scalafiddle main function begins ---------" true)
|
|
792
|
-
}
|
|
793
|
-
|
|
794
|
-
if( b_scalafiddle == false ) {
|
|
795
|
-
theEnd.out("" true)
|
|
796
|
-
theEnd.out(("// application main function for " + cl.name) true)
|
|
797
|
-
theEnd.out((("object App" + cl.name) + " extends App {") true)
|
|
798
|
-
theEnd.indent(1)
|
|
799
|
-
theEnd.newline()
|
|
800
|
-
}
|
|
801
|
-
def subCtx:RangerAppWriterContext ( unwrap variant.fnCtx )
|
|
802
|
-
subCtx.is_function = true
|
|
803
|
-
this.WalkNode( (unwrap variant.fnBody ) subCtx theEnd)
|
|
804
|
-
|
|
805
|
-
if b_scalafiddle {
|
|
806
|
-
theEnd.out("// ----------- the scalafiddle main function ends ---------" true)
|
|
807
|
-
theEnd.out("" true)
|
|
808
|
-
}
|
|
809
|
-
|
|
810
|
-
if( b_scalafiddle == false ) {
|
|
811
|
-
theEnd.newline()
|
|
812
|
-
theEnd.indent(-1)
|
|
813
|
-
theEnd.out("}" true)
|
|
814
|
-
}
|
|
815
|
-
}
|
|
816
|
-
}
|
|
817
|
-
}
|
|
818
|
-
|