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.
- package/CHANGELOG.md +103 -0
- package/README.md +991 -96
- 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/{bin/output.js → dist/rgrc.js} +15377 -7935
- package/dist/stdops.rgr +168 -0
- package/package.json +196 -38
- 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/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 -800
- 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 -1042
- 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/api.js.map +0 -1
- package/dist/bin/compiler.d.ts +0 -1638
- package/dist/bin/compiler.js +0 -32444
- package/dist/bin/compiler.js.map +0 -1
- 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/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,638 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
; match and possibly collect the trait parameters also for the match...
|
|
3
|
-
; match.add(typeName.vref pArg.vref ctx)
|
|
4
|
-
|
|
5
|
-
class RangerArgMatch {
|
|
6
|
-
def _debug false
|
|
7
|
-
def matched:[string:string]
|
|
8
|
-
def nodes@(weak):[string:CodeNode]
|
|
9
|
-
def builtNodes@(weak):[string:CodeNode]
|
|
10
|
-
def matchedLambdas@(weak):[string:CodeNode]
|
|
11
|
-
|
|
12
|
-
fn matchArguments:boolean (args:CodeNode callArgs:CodeNode ctx:RangerAppWriterContext firstArgIndex:int) {
|
|
13
|
-
def fc:CodeNode (itemAt callArgs.children 0)
|
|
14
|
-
def missed_args:[string]
|
|
15
|
-
def all_matched:boolean true
|
|
16
|
-
; callArgs
|
|
17
|
-
if( (array_length args.children) == 0 && ( (array_length callArgs.children) > 1)) {
|
|
18
|
-
return false
|
|
19
|
-
}
|
|
20
|
-
def lastArg@(optional):CodeNode
|
|
21
|
-
for callArgs.children callArg:CodeNode i {
|
|
22
|
-
if( i == 0 ) {
|
|
23
|
-
continue
|
|
24
|
-
}
|
|
25
|
-
if(callArg.is_part_of_chain) {
|
|
26
|
-
continue
|
|
27
|
-
}
|
|
28
|
-
def arg_index ( i - 1)
|
|
29
|
-
if( arg_index < (array_length args.children)) {
|
|
30
|
-
lastArg = (itemAt args.children arg_index)
|
|
31
|
-
}
|
|
32
|
-
def arg (unwrap lastArg)
|
|
33
|
-
; def callArg:CodeNode (itemAt callArgs.children (i + firstArgIndex))
|
|
34
|
-
if (arg.hasFlag("ignore")) {
|
|
35
|
-
continue _
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (arg.hasFlag("keyword")) {
|
|
39
|
-
if( callArg.vref == arg.vref ) {
|
|
40
|
-
continue _
|
|
41
|
-
} {
|
|
42
|
-
all_matched = false
|
|
43
|
-
break
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if( arg.isPrimitiveType() ) {
|
|
48
|
-
if( callArg.value_type == RangerNodeType.ExpressionType || callArg.eval_type == RangerNodeType.ExpressionType ) {
|
|
49
|
-
all_matched = false
|
|
50
|
-
break
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
def call_arg_immutable false
|
|
55
|
-
if callArg.hasParamDesc {
|
|
56
|
-
def pa:RangerAppParamDesc callArg.paramDesc
|
|
57
|
-
if(!null? pa.nameNode) {
|
|
58
|
-
def b_immutable:boolean (pa.nameNode.hasFlag("immutable"))
|
|
59
|
-
if ( (arg.hasFlag("immutable")) != b_immutable ) {
|
|
60
|
-
all_matched = false
|
|
61
|
-
}
|
|
62
|
-
call_arg_immutable = b_immutable
|
|
63
|
-
} {
|
|
64
|
-
call_arg_immutable = pa.is_immutable
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
if(callArg.hasFlag("immutable")) {
|
|
68
|
-
call_arg_immutable = true
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (arg.hasFlag("immutable")) {
|
|
73
|
-
if (false == call_arg_immutable) {
|
|
74
|
-
all_matched = false
|
|
75
|
-
break
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if true {
|
|
81
|
-
if(arg.type_name == "block" || (arg.hasFlag("block"))) {
|
|
82
|
-
if(callArg.is_block_node) {
|
|
83
|
-
continue
|
|
84
|
-
} {
|
|
85
|
-
; print "BLOCK MATCH ERROR"
|
|
86
|
-
; print (callArg.getLineAsString())
|
|
87
|
-
all_matched = false
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
if (arg.hasFlag("mutable")) {
|
|
94
|
-
if callArg.hasParamDesc {
|
|
95
|
-
def pa:RangerAppParamDesc callArg.paramDesc
|
|
96
|
-
def b:boolean (pa.nameNode.hasFlag("mutable"))
|
|
97
|
-
if (b == false) {
|
|
98
|
-
push missed_args "was mutable"
|
|
99
|
-
all_matched = false
|
|
100
|
-
}
|
|
101
|
-
} {
|
|
102
|
-
all_matched = false
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
if (arg.hasFlag("union")) {
|
|
107
|
-
if((ctx.isDefinedClass(callArg.eval_type_name))) {
|
|
108
|
-
def cc (ctx.findClass(callArg.eval_type_name))
|
|
109
|
-
if( cc.is_union == false && cc.is_system_union == false ) {
|
|
110
|
-
all_matched = false
|
|
111
|
-
}
|
|
112
|
-
} {
|
|
113
|
-
all_matched = false
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
if (arg.hasFlag("optional")) {
|
|
121
|
-
if callArg.hasParamDesc {
|
|
122
|
-
def pa:RangerAppParamDesc callArg.paramDesc
|
|
123
|
-
def b:boolean (pa.nameNode.hasFlag("optional"))
|
|
124
|
-
if (b == false) {
|
|
125
|
-
push missed_args "optional was missing"
|
|
126
|
-
all_matched = false
|
|
127
|
-
}
|
|
128
|
-
} {
|
|
129
|
-
if (callArg.hasFlag("optional")) {
|
|
130
|
-
} {
|
|
131
|
-
all_matched = false
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
if (callArg.hasFlag("optional")) {
|
|
136
|
-
if (false == (arg.hasFlag("optional"))) {
|
|
137
|
-
if(callArg.is_block_node) {
|
|
138
|
-
; block nodes can not be optional
|
|
139
|
-
} {
|
|
140
|
-
all_matched = false
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
if ((arg.value_type != RangerNodeType.Hash) && (arg.value_type != RangerNodeType.Array)) {
|
|
146
|
-
|
|
147
|
-
if(!null? callArg.paramDesc) {
|
|
148
|
-
; TODO: lambda matching has some problems
|
|
149
|
-
; check this code and implement proper lambda matching, perhaps even parameter matching
|
|
150
|
-
if( (!null? callArg.paramDesc.nameNode) && (!null? callArg.paramDesc.nameNode.expression_value) ) {
|
|
151
|
-
set matched arg.type_name ""
|
|
152
|
-
set matchedLambdas arg.type_name (unwrap callArg.paramDesc.nameNode.expression_value)
|
|
153
|
-
; return true
|
|
154
|
-
continue
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
if (callArg.eval_type == RangerNodeType.Enum) {
|
|
158
|
-
if (arg.type_name == "enum") {
|
|
159
|
-
continue _
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
if _debug {
|
|
163
|
-
print "-> trying to add type " + arg.type_name
|
|
164
|
-
}
|
|
165
|
-
if (false == (this.add(arg.type_name callArg.eval_type_name ctx))) {
|
|
166
|
-
all_matched = false
|
|
167
|
-
return all_matched
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
if (arg.value_type == RangerNodeType.Array) {
|
|
171
|
-
if (false == (this.add_atype(arg.array_type callArg.eval_array_type ctx))) {
|
|
172
|
-
all_matched = false
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
if (arg.value_type == RangerNodeType.Hash) {
|
|
176
|
-
if (false == (this.add(arg.key_type callArg.eval_key_type ctx))) {
|
|
177
|
-
all_matched = false
|
|
178
|
-
}
|
|
179
|
-
if (false == (this.add_atype(arg.array_type callArg.eval_array_type ctx))) {
|
|
180
|
-
all_matched = false
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
def did_match:boolean false
|
|
184
|
-
if (this.doesMatch(arg callArg ctx)) {
|
|
185
|
-
did_match = true
|
|
186
|
-
} {
|
|
187
|
-
push missed_args ((("matching arg " + arg.vref) + " faileg against ") + callArg.vref)
|
|
188
|
-
}
|
|
189
|
-
if (false == did_match) {
|
|
190
|
-
all_matched = false
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
return all_matched
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
fn force_add:void ( tplKeyword:string typeName:string ctx:RangerAppWriterContext) {
|
|
197
|
-
set matched tplKeyword typeName
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
fn addNode (name:string node@(weak):CodeNode) {
|
|
201
|
-
set nodes name node
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
fn add:boolean ( tplKeyword:string typeName:string ctx:RangerAppWriterContext) {
|
|
205
|
-
switch tplKeyword {
|
|
206
|
-
case "string" {
|
|
207
|
-
return true
|
|
208
|
-
}
|
|
209
|
-
case "int" {
|
|
210
|
-
return true
|
|
211
|
-
}
|
|
212
|
-
case "double" {
|
|
213
|
-
return true
|
|
214
|
-
}
|
|
215
|
-
case "boolean" {
|
|
216
|
-
return true
|
|
217
|
-
}
|
|
218
|
-
case "enum" {
|
|
219
|
-
return true
|
|
220
|
-
}
|
|
221
|
-
case "char" {
|
|
222
|
-
return true
|
|
223
|
-
}
|
|
224
|
-
case "charbuffer" {
|
|
225
|
-
return true
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
if ((strlen tplKeyword) > 1) {
|
|
230
|
-
return true
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
if (has matched tplKeyword) {
|
|
234
|
-
|
|
235
|
-
def s:string (unwrap (get matched tplKeyword) )
|
|
236
|
-
if(this.areEqualTypes(s typeName ctx)) {
|
|
237
|
-
return true
|
|
238
|
-
}
|
|
239
|
-
if (s == typeName ) {
|
|
240
|
-
return true
|
|
241
|
-
} {
|
|
242
|
-
return false
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
(set matched tplKeyword typeName)
|
|
246
|
-
return true
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
fn add_atype:boolean ( tplKeyword:string typeName:string ctx:RangerAppWriterContext) {
|
|
250
|
-
switch tplKeyword {
|
|
251
|
-
case "string" {
|
|
252
|
-
return true
|
|
253
|
-
}
|
|
254
|
-
case "int" {
|
|
255
|
-
return true
|
|
256
|
-
}
|
|
257
|
-
case "double" {
|
|
258
|
-
return true
|
|
259
|
-
}
|
|
260
|
-
case "boolean" {
|
|
261
|
-
return true
|
|
262
|
-
}
|
|
263
|
-
case "enum" {
|
|
264
|
-
return true
|
|
265
|
-
}
|
|
266
|
-
case "char" {
|
|
267
|
-
return true
|
|
268
|
-
}
|
|
269
|
-
case "charbuffer" {
|
|
270
|
-
return true
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
if ((strlen tplKeyword) > 1) {
|
|
275
|
-
return true
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
if (has matched tplKeyword) {
|
|
279
|
-
def s:string (unwrap (get matched tplKeyword) )
|
|
280
|
-
if(this.areEqualATypes(s typeName ctx)) {
|
|
281
|
-
return true
|
|
282
|
-
}
|
|
283
|
-
if (s == typeName ) {
|
|
284
|
-
return true
|
|
285
|
-
} {
|
|
286
|
-
return false
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
(set matched tplKeyword typeName)
|
|
290
|
-
return true
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
fn doesDefsMatch:boolean (arg:CodeNode node:CodeNode ctx:RangerAppWriterContext) {
|
|
296
|
-
|
|
297
|
-
if (node.value_type == RangerNodeType.Enum) {
|
|
298
|
-
if (arg.type_name == "enum") {
|
|
299
|
-
return true
|
|
300
|
-
} {
|
|
301
|
-
return false
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
if ((arg.value_type != RangerNodeType.Hash) && (arg.value_type != RangerNodeType.Array)) {
|
|
306
|
-
def eq:boolean (this.areEqualTypes(arg.type_name node.type_name ctx))
|
|
307
|
-
def t_name:string arg.type_name
|
|
308
|
-
switch t_name {
|
|
309
|
-
case "expression" {
|
|
310
|
-
return node.expression
|
|
311
|
-
}
|
|
312
|
-
case "block" {
|
|
313
|
-
return node.expression
|
|
314
|
-
}
|
|
315
|
-
case "arguments" {
|
|
316
|
-
return node.expression
|
|
317
|
-
}
|
|
318
|
-
case "keyword" {
|
|
319
|
-
return (node.eval_type == RangerNodeType.VRef)
|
|
320
|
-
}
|
|
321
|
-
case "T.name" {
|
|
322
|
-
return (node.eval_type_name == t_name)
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
return eq
|
|
326
|
-
}
|
|
327
|
-
if ((arg.value_type == RangerNodeType.Array) && (node.eval_type == RangerNodeType.Array)) {
|
|
328
|
-
def same_arrays:boolean (this.areEqualTypes(arg.array_type node.array_type ctx))
|
|
329
|
-
return same_arrays
|
|
330
|
-
}
|
|
331
|
-
if ((arg.value_type == RangerNodeType.Hash) && (node.eval_type == RangerNodeType.Hash)) {
|
|
332
|
-
def same_arrays:boolean (this.areEqualTypes(arg.array_type node.array_type ctx))
|
|
333
|
-
def same_keys:boolean (this.areEqualTypes(arg.key_type node.key_type ctx))
|
|
334
|
-
return (same_arrays && same_keys)
|
|
335
|
-
}
|
|
336
|
-
return false
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
fn doesMatch:boolean (arg:CodeNode node:CodeNode ctx:RangerAppWriterContext) {
|
|
340
|
-
|
|
341
|
-
if (node.value_type == RangerNodeType.Enum) {
|
|
342
|
-
if (arg.type_name == "enum") {
|
|
343
|
-
return true
|
|
344
|
-
} {
|
|
345
|
-
return false
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
if ((arg.value_type != RangerNodeType.Hash) && (arg.value_type != RangerNodeType.Array)) {
|
|
350
|
-
def eq:boolean (this.areEqualTypes(arg.type_name node.eval_type_name ctx))
|
|
351
|
-
def t_name:string arg.type_name
|
|
352
|
-
switch t_name {
|
|
353
|
-
case "expression" {
|
|
354
|
-
return node.expression
|
|
355
|
-
}
|
|
356
|
-
case "block" {
|
|
357
|
-
return node.expression
|
|
358
|
-
}
|
|
359
|
-
case "arguments" {
|
|
360
|
-
return node.expression
|
|
361
|
-
}
|
|
362
|
-
case "keyword" {
|
|
363
|
-
return (node.eval_type == RangerNodeType.VRef)
|
|
364
|
-
}
|
|
365
|
-
case "T.name" {
|
|
366
|
-
return (node.eval_type_name == t_name)
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
return eq
|
|
370
|
-
}
|
|
371
|
-
if ((arg.value_type == RangerNodeType.Array) && (node.eval_type == RangerNodeType.Array)) {
|
|
372
|
-
def same_arrays:boolean (this.areEqualTypes(arg.array_type node.eval_array_type ctx))
|
|
373
|
-
return same_arrays
|
|
374
|
-
}
|
|
375
|
-
if ((arg.value_type == RangerNodeType.Hash) && (node.eval_type == RangerNodeType.Hash)) {
|
|
376
|
-
def same_arrays:boolean (this.areEqualTypes(arg.array_type node.eval_array_type ctx))
|
|
377
|
-
def same_keys:boolean (this.areEqualTypes(arg.key_type node.eval_key_type ctx))
|
|
378
|
-
return (same_arrays && same_keys)
|
|
379
|
-
}
|
|
380
|
-
return false
|
|
381
|
-
}
|
|
382
|
-
fn areEqualTypes:boolean (type1:string type2:string ctx:RangerAppWriterContext) {
|
|
383
|
-
def t_name:string type1
|
|
384
|
-
if (has matched type1) {
|
|
385
|
-
t_name = (unwrap (get matched type1))
|
|
386
|
-
}
|
|
387
|
-
switch t_name {
|
|
388
|
-
case "string" {
|
|
389
|
-
return (type2 == "string")
|
|
390
|
-
}
|
|
391
|
-
case "int" {
|
|
392
|
-
return (type2 == "int")
|
|
393
|
-
}
|
|
394
|
-
case "double" {
|
|
395
|
-
return (type2 == "double")
|
|
396
|
-
}
|
|
397
|
-
case "boolean" {
|
|
398
|
-
return (type2 == "boolean")
|
|
399
|
-
}
|
|
400
|
-
case "enum" {
|
|
401
|
-
return (type2 == "enum")
|
|
402
|
-
}
|
|
403
|
-
case "char" {
|
|
404
|
-
return (type2 == "char")
|
|
405
|
-
}
|
|
406
|
-
case "charbuffer" {
|
|
407
|
-
return (type2 == "charbuffer")
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
if( (ctx.isDefinedClass(t_name)) && (ctx.isDefinedClass (type2))) {
|
|
412
|
-
def c1:RangerAppClassDesc (ctx.findClass(t_name))
|
|
413
|
-
def c2:RangerAppClassDesc (ctx.findClass(type2))
|
|
414
|
-
def trait1 (c1.hasTrait(type2 ctx))
|
|
415
|
-
|
|
416
|
-
; can not push union into a regular type
|
|
417
|
-
if( (c2.is_union == true) && (c1.is_union == false)) {
|
|
418
|
-
return false
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
if( (c2.is_system_union == true) && (c1.is_system_union == false)) {
|
|
422
|
-
return false
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
if(!null? trait1) {
|
|
427
|
-
this.force_add( type2 c1.name ctx)
|
|
428
|
-
if( has c1.trait_params type2 ) {
|
|
429
|
-
def pms (unwrap (get c1.trait_params type2))
|
|
430
|
-
for pms.param_names pn:string i {
|
|
431
|
-
def pn_value (unwrap (get pms.values pn))
|
|
432
|
-
this.add( pn pn_value ctx)
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
def trait1 (c2.hasTrait(t_name ctx))
|
|
437
|
-
if(!null? trait1) {
|
|
438
|
-
this.force_add( t_name c2.name ctx)
|
|
439
|
-
if( has c2.trait_params t_name ) {
|
|
440
|
-
def pms (unwrap (get c2.trait_params t_name))
|
|
441
|
-
for pms.param_names pn:string i {
|
|
442
|
-
def pn_value (unwrap (get pms.values pn))
|
|
443
|
-
this.add( pn pn_value ctx)
|
|
444
|
-
}
|
|
445
|
-
} {
|
|
446
|
-
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
if ( c1.isSameOrParentClass (type2 ctx)) {
|
|
451
|
-
; trait_params
|
|
452
|
-
return true
|
|
453
|
-
}
|
|
454
|
-
if ( c2.isSameOrParentClass (t_name ctx)) {
|
|
455
|
-
; trait_params
|
|
456
|
-
return true
|
|
457
|
-
}
|
|
458
|
-
} {
|
|
459
|
-
; could be union type still..
|
|
460
|
-
if(ctx.isDefinedClass(t_name)) {
|
|
461
|
-
def c1:RangerAppClassDesc (ctx.findClass(t_name))
|
|
462
|
-
if ( c1.isSameOrParentClass (type2 ctx)) {
|
|
463
|
-
; trait_params
|
|
464
|
-
return true
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
return (t_name == type2)
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
fn areEqualATypes:boolean (type1:string type2:string ctx:RangerAppWriterContext) {
|
|
472
|
-
def t_name:string type1
|
|
473
|
-
if (has matched type1) {
|
|
474
|
-
t_name = (unwrap (get matched type1))
|
|
475
|
-
}
|
|
476
|
-
switch t_name {
|
|
477
|
-
case "string" {
|
|
478
|
-
return (type2 == "string")
|
|
479
|
-
}
|
|
480
|
-
case "int" {
|
|
481
|
-
return (type2 == "int")
|
|
482
|
-
}
|
|
483
|
-
case "double" {
|
|
484
|
-
return (type2 == "double")
|
|
485
|
-
}
|
|
486
|
-
case "boolean" {
|
|
487
|
-
return (type2 == "boolean")
|
|
488
|
-
}
|
|
489
|
-
case "enum" {
|
|
490
|
-
return (type2 == "enum")
|
|
491
|
-
}
|
|
492
|
-
case "char" {
|
|
493
|
-
return (type2 == "char")
|
|
494
|
-
}
|
|
495
|
-
case "charbuffer" {
|
|
496
|
-
return (type2 == "charbuffer")
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
if( (ctx.isDefinedClass(t_name)) && (ctx.isDefinedClass (type2))) {
|
|
501
|
-
def c1:RangerAppClassDesc (ctx.findClass(t_name))
|
|
502
|
-
def c2:RangerAppClassDesc (ctx.findClass(type2))
|
|
503
|
-
def trait1 (c1.hasTrait(type2 ctx))
|
|
504
|
-
|
|
505
|
-
; can not push union into a regular type
|
|
506
|
-
if( (c2.is_union == true) && (c1.is_union == false)) {
|
|
507
|
-
return false
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
if( (c2.is_system_union == true) && (c1.is_system_union == false)) {
|
|
511
|
-
return false
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
if(!null? trait1) {
|
|
515
|
-
this.force_add( type2 c1.name ctx)
|
|
516
|
-
if( has c1.trait_params type2 ) {
|
|
517
|
-
def pms (unwrap (get c1.trait_params type2))
|
|
518
|
-
for pms.param_names pn:string i {
|
|
519
|
-
def pn_value (unwrap (get pms.values pn))
|
|
520
|
-
this.add( pn pn_value ctx)
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
def trait1 (c2.hasTrait(t_name ctx))
|
|
525
|
-
if(!null? trait1) {
|
|
526
|
-
this.force_add( t_name c2.name ctx)
|
|
527
|
-
if( has c2.trait_params t_name ) {
|
|
528
|
-
def pms (unwrap (get c2.trait_params t_name))
|
|
529
|
-
for pms.param_names pn:string i {
|
|
530
|
-
def pn_value (unwrap (get pms.values pn))
|
|
531
|
-
this.add( pn pn_value ctx)
|
|
532
|
-
}
|
|
533
|
-
} {
|
|
534
|
-
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
if ( c1.isSameOrParentClass (type2 ctx)) {
|
|
539
|
-
; trait_params
|
|
540
|
-
return true
|
|
541
|
-
}
|
|
542
|
-
if ( c2.isSameOrParentClass (t_name ctx)) {
|
|
543
|
-
; trait_params
|
|
544
|
-
return true
|
|
545
|
-
}
|
|
546
|
-
} {
|
|
547
|
-
; union type check disabled from Array type comparisions
|
|
548
|
-
}
|
|
549
|
-
return (t_name == type2)
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
fn getTypeName:string (n:string) {
|
|
553
|
-
def t_name:string n
|
|
554
|
-
if (has matched t_name) {
|
|
555
|
-
t_name = (unwrap (get matched t_name))
|
|
556
|
-
}
|
|
557
|
-
if (0 == (strlen t_name)) {
|
|
558
|
-
return ""
|
|
559
|
-
}
|
|
560
|
-
return t_name
|
|
561
|
-
}
|
|
562
|
-
fn getType:RangerNodeType (n:string) {
|
|
563
|
-
def t_name:string n
|
|
564
|
-
if (has matched t_name) {
|
|
565
|
-
t_name = (unwrap (get matched t_name))
|
|
566
|
-
}
|
|
567
|
-
if (0 == (strlen t_name)) {
|
|
568
|
-
return RangerNodeType.NoType
|
|
569
|
-
}
|
|
570
|
-
switch t_name {
|
|
571
|
-
case "expression" {
|
|
572
|
-
return RangerNodeType.Expression
|
|
573
|
-
}
|
|
574
|
-
case "block" {
|
|
575
|
-
return RangerNodeType.Expression
|
|
576
|
-
}
|
|
577
|
-
case "arguments" {
|
|
578
|
-
return RangerNodeType.Expression
|
|
579
|
-
}
|
|
580
|
-
case "string" {
|
|
581
|
-
return RangerNodeType.String
|
|
582
|
-
}
|
|
583
|
-
case "int" {
|
|
584
|
-
return RangerNodeType.Integer
|
|
585
|
-
}
|
|
586
|
-
case "char" {
|
|
587
|
-
return RangerNodeType.Char
|
|
588
|
-
}
|
|
589
|
-
case "charbuffer" {
|
|
590
|
-
return RangerNodeType.CharBuffer
|
|
591
|
-
}
|
|
592
|
-
case "boolean" {
|
|
593
|
-
return RangerNodeType.Boolean
|
|
594
|
-
}
|
|
595
|
-
case "double" {
|
|
596
|
-
return RangerNodeType.Double
|
|
597
|
-
}
|
|
598
|
-
case "enum" {
|
|
599
|
-
return RangerNodeType.Enum
|
|
600
|
-
}
|
|
601
|
-
}
|
|
602
|
-
return RangerNodeType.Object
|
|
603
|
-
}
|
|
604
|
-
fn setRvBasedOn:boolean (arg:CodeNode node:CodeNode) {
|
|
605
|
-
if (arg.hasFlag("optional")) {
|
|
606
|
-
node.setFlag("optional")
|
|
607
|
-
}
|
|
608
|
-
if (arg.hasFlag("immutable")) {
|
|
609
|
-
node.setFlag("immutable")
|
|
610
|
-
}
|
|
611
|
-
if ((arg.value_type != RangerNodeType.Hash) && (arg.value_type != RangerNodeType.Array)) {
|
|
612
|
-
|
|
613
|
-
if( has matchedLambdas arg.type_name ) {
|
|
614
|
-
def lam (get matchedLambdas arg.type_name)
|
|
615
|
-
node.eval_type = RangerNodeType.ExpressionType
|
|
616
|
-
node.expression_value = (lam.copy())
|
|
617
|
-
return true
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
node.eval_type = (this.getType(arg.type_name))
|
|
621
|
-
node.eval_type_name = (this.getTypeName(arg.type_name))
|
|
622
|
-
return true
|
|
623
|
-
}
|
|
624
|
-
if (arg.value_type == RangerNodeType.Array) {
|
|
625
|
-
node.eval_type = RangerNodeType.Array
|
|
626
|
-
node.eval_array_type = (this.getTypeName(arg.array_type))
|
|
627
|
-
return true
|
|
628
|
-
}
|
|
629
|
-
if (arg.value_type == RangerNodeType.Hash) {
|
|
630
|
-
node.eval_type = RangerNodeType.Hash
|
|
631
|
-
node.eval_key_type = (this.getTypeName(arg.key_type))
|
|
632
|
-
node.eval_array_type = (this.getTypeName(arg.array_type))
|
|
633
|
-
return true
|
|
634
|
-
}
|
|
635
|
-
return false
|
|
636
|
-
}
|
|
637
|
-
}
|
|
638
|
-
|