mirror of
https://github.com/johnkerl/miller.git
synced 2026-08-02 04:22:59 +00:00
accept-case ./reg-test/cases/case-c-dsl-map-variant-dumps.sh
This commit is contained in:
parent
eb1f989324
commit
1fe47f9d55
6 changed files with 18 additions and 10 deletions
|
|
@ -245,3 +245,9 @@ rrv ./reg-test/cases/case-c-dsl-pythonic-division.sh
|
|||
|
||||
rrv -C20 ./reg-test/cases/case-c-dsl-local-map-variable-write-read.sh
|
||||
rrv -C1 ./reg-test/cases/case-c-dsl-local-map-variable-write-read.sh
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
announce MAP-VARIANT DUMPS
|
||||
|
||||
run_mlr --from $indir/abixy-het put -q 'dump {"a"."b":$a.$b}'
|
||||
run_mlr --from $indir/abixy-het put -q 'func f(a, b) { return {"a"."b":a.b} } dump f($a, $b)'
|
||||
|
|
|
|||
|
|
@ -28,9 +28,7 @@ mlr --from ./reg-test/input/abixy-het put -q dump {"a"."b":$a.$b}
|
|||
{
|
||||
"ab": "zeewye"
|
||||
}
|
||||
{
|
||||
"ab":
|
||||
}
|
||||
{}
|
||||
{
|
||||
"ab": "panwye"
|
||||
}
|
||||
|
|
@ -60,9 +58,7 @@ mlr --from ./reg-test/input/abixy-het put -q func f(a, b) { return {"a"."b":a.b}
|
|||
{
|
||||
"ab": "zeewye"
|
||||
}
|
||||
{
|
||||
"ab":
|
||||
}
|
||||
{}
|
||||
{
|
||||
"ab": "panwye"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -168,7 +168,9 @@ func (this *MapLiteralNode) Evaluate(state *State) types.Mlrval {
|
|||
mkey := evaluablePair.Key.Evaluate(state)
|
||||
mvalue := evaluablePair.Value.Evaluate(state)
|
||||
|
||||
mlrval.MapPut(&mkey, &mvalue)
|
||||
if !mvalue.IsAbsent() {
|
||||
mlrval.MapPut(&mkey, &mvalue)
|
||||
}
|
||||
}
|
||||
|
||||
return mlrval
|
||||
|
|
|
|||
|
|
@ -475,7 +475,7 @@ func (this *RootNode) BuildLocalVariableLvalueNode(astNode *dsl.ASTNode) (IAssig
|
|||
lib.InternalCodingErrorIf(astNode.Type != dsl.NodeTypeLocalVariable)
|
||||
|
||||
variableName := string(astNode.Token.Lit)
|
||||
typeName := "var"
|
||||
typeName := "any"
|
||||
frameBind := false
|
||||
if astNode.Children != nil { // typed, like 'num x = 3'
|
||||
typeNode := astNode.Children[0]
|
||||
|
|
|
|||
|
|
@ -279,7 +279,7 @@ func (this *RootNode) BuildAndInstallUDF(astNode *dsl.ASTNode) error {
|
|||
parameterListASTNode := astNode.Children[0]
|
||||
functionBodyASTNode := astNode.Children[1]
|
||||
|
||||
returnValueTypeName := "var"
|
||||
returnValueTypeName := "any"
|
||||
if len(astNode.Children) == 3 {
|
||||
typeNode := astNode.Children[2]
|
||||
lib.InternalCodingErrorIf(typeNode.Type != dsl.NodeTypeTypedecl)
|
||||
|
|
@ -302,7 +302,7 @@ func (this *RootNode) BuildAndInstallUDF(astNode *dsl.ASTNode) error {
|
|||
|
||||
lib.InternalCodingErrorIf(typeGatedParameterNameASTNode.Type != dsl.NodeTypeParameterName)
|
||||
variableName := string(typeGatedParameterNameASTNode.Token.Lit)
|
||||
typeName := "var"
|
||||
typeName := "any"
|
||||
if typeGatedParameterNameASTNode.Children != nil { // typed parameter like 'num x'
|
||||
lib.InternalCodingErrorIf(len(typeGatedParameterNameASTNode.Children) != 1)
|
||||
typeNode := typeGatedParameterNameASTNode.Children[0]
|
||||
|
|
|
|||
|
|
@ -120,6 +120,9 @@ const MT_TYPE_MASK_MAP = 1 << MT_MAP
|
|||
const MT_TYPE_MASK_VAR = (1 << MT_VOID) | (1 << MT_STRING) | (1 << MT_INT) |
|
||||
(1 << MT_FLOAT) | (1 << MT_BOOL) | (1 << MT_ARRAY) | (1 << MT_MAP)
|
||||
|
||||
// Not exposed in userspace
|
||||
const MT_TYPE_MASK_ANY = (1 << MT_ERROR) | (1 << MT_ABSENT) | MT_TYPE_MASK_VAR
|
||||
|
||||
var typeNameToMaskMap = map[string]int{
|
||||
"var": MT_TYPE_MASK_VAR,
|
||||
"str": MT_TYPE_MASK_STRING,
|
||||
|
|
@ -129,6 +132,7 @@ var typeNameToMaskMap = map[string]int{
|
|||
"bool": MT_TYPE_MASK_BOOL,
|
||||
"arr": MT_TYPE_MASK_ARRAY,
|
||||
"map": MT_TYPE_MASK_MAP,
|
||||
"any": MT_TYPE_MASK_ANY,
|
||||
}
|
||||
|
||||
func TypeNameToMask(typeName string) (mask int, present bool) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue