Martin Atkins
ecc42b838c
lang/funcs: Fix crash and improve precision of keys/values functions
...
The "values" function wasn't producing consistently-ordered keys in its
result, leading to crashes. This fixes #19204 .
While working on these functions anyway, this also improves slightly their
precision when working with object types, where we can produce a more
complete result for unknown values because the attribute names are part
of the type. We can also produce results for known maps that have unknown
elements; these unknowns will also appear in the values(...) result,
allowing them to propagate through expressions.
Finally, this adds a few more test cases to try different permutations
of empty and unknown values.
2018-11-06 08:33:49 -08:00
Martin Atkins
8c01cf7293
lang/funcs: Fix broken test for lookup function
...
When the value we're looking in has an object type, we need to know the
key in order to decide the result type. Therefore an object lookup with
an unknown key must produce cty.DynamicVal, not an unknown value with a
known type.
2018-11-06 08:33:49 -08:00
Martin Atkins
8f578c365f
lang/funcs: Permit object types in the "length" function
...
The implementation already allowed this, so this was just an oversight in
the type checking function.
This fixes #19278 .
2018-11-06 08:33:49 -08:00
Radek Simko
b41cda7d7a
Return cty.DynamicPseudoType instead
2018-10-23 12:42:46 +02:00
Radek Simko
4856d81300
lang: Fix crash in lookup function
2018-10-22 12:58:47 +02:00
James Bardin
9e3c23d890
verify that all LengthInt calls are known
...
There were some funcs with LengthInt calls on unknown values
2018-10-18 19:19:59 -04:00
Radek Simko
edaa4bbc82
lang: Add fileexists function
2018-10-17 10:18:07 +01:00
Kristin Laemmert
fd77e56fd6
lookup will return a tuple type when passed an object
2018-10-16 19:14:54 -07:00
Kristin Laemmert
f54ee830d3
lang/funcs: update values to accept object types
2018-10-16 19:14:54 -07:00
Kristin Laemmert
4ec904bca7
funcs/lang lookup: validate that argument is map or object type
2018-10-16 19:14:54 -07:00
Kristin Laemmert
d1d0ede069
lang/funcs: return default value if provided when object lookup fails to find attr
2018-10-16 19:14:54 -07:00
Kristin Laemmert
46e168a682
lang/funcs: update lookup() to accept object-typed values for "map" arg
2018-10-16 19:14:54 -07:00
Martin Atkins
c990c9f36d
lang/funcs: Don't panic if coalescelist gets an unknown list
2018-10-16 19:14:11 -07:00
Martin Atkins
db58b88c2d
lang/funcs: short-circuit with unknown index and tuple collection
...
Since we need to know the index to know the result type for a tuple, we
need a special case here to deal with that situation and return
cty.DynamicVal; we can't predict the result type exactly until we know the
element type.
2018-10-16 19:14:11 -07:00
Martin Atkins
efe631d9ec
lang/funcs: in "sort", don't panic if given a null string
...
It is incorrect to use a null string, but that should be reported as an
error rather than a panic.
2018-10-16 19:14:11 -07:00
Martin Atkins
479c6b2466
move "configschema" from "config" to "configs"
...
The "config" package is no longer used and will be removed as part
of the 0.12 release cleanup. Since configschema is part of the
"new world" of configuration modelling, it makes more sense for
it to live as a subdirectory of the newer "configs" package.
2018-10-16 18:50:29 -07:00
Martin Atkins
ccd90bcf35
lang/funcs: never include the private key in error output
...
This is based on c811440188
made against the
old "config" package implementations, but also catches a few other cases
where we would previously have printed the private key into the error
messages.
2018-10-16 18:50:29 -07:00
Kristin Laemmert
c23a971ed1
minor fixes
2018-10-16 18:49:20 -07:00
Kristin Laemmert
0dbecc54c0
functions: ValuesFunc - cleanup return type
2018-10-16 18:49:20 -07:00
Kristin Laemmert
a213c4a648
functions: add tests and support for unknown values
2018-10-16 18:49:20 -07:00
Kristin Laemmert
d802d5c624
functions: pr feedback fixes
2018-10-16 18:49:20 -07:00
Kristin Laemmert
ff4b3d763b
functions: fix lookup()'s handling of numberical defaults
2018-10-16 18:49:20 -07:00
Kristin Laemmert
4f5c03339a
functions: ZipmapFunc
2018-10-16 18:49:20 -07:00
Kristin Laemmert
605e23db6b
various code review fixes
2018-10-16 18:49:20 -07:00
Kristin Laemmert
6463dd90e9
functions: TransposeFunc, SliceFunc
2018-10-16 18:49:20 -07:00
Kristin Laemmert
30671d85ad
functions: MergeFunc
2018-10-16 18:49:20 -07:00
Kristin Laemmert
aecd7b2e62
functions: LookupFunc
2018-10-16 18:49:20 -07:00
Kristin Laemmert
4d8c398f8e
functions: KeysFunc
2018-10-16 18:49:20 -07:00
Kristin Laemmert
21daabe680
functions: MapFunc
2018-10-16 18:49:20 -07:00
Kristin Laemmert
da02e0da4d
functions: ListFunc
2018-10-16 18:49:20 -07:00
Kristin Laemmert
529c2c3cc9
functions: FlattenFunc
2018-10-16 18:49:20 -07:00
Kristin Laemmert
4dd3ffc127
porting matchkeys
2018-10-16 18:49:20 -07:00
Kristin Laemmert
b979053361
general cleanup - addressing code review
2018-10-16 18:49:20 -07:00
Kristin Laemmert
498ffbf77b
adding some test cases and tweaking implementation to address them
2018-10-16 18:49:20 -07:00
Kristin Laemmert
0cbcd75ebb
port distinct and chunklist functions
2018-10-16 18:49:20 -07:00
Kristin Laemmert
8aac7587f7
port index and contains functions
2018-10-16 18:49:20 -07:00
Kristin Laemmert
e697e7d733
port compact function
2018-10-16 18:49:20 -07:00
Kristin Laemmert
1901d5d184
port coalescelist function
2018-10-16 18:49:20 -07:00
Kristin Laemmert
04ac87747c
base64decode: check that the decoded (not encoded) string is valid UTF-8
2018-10-16 18:49:20 -07:00
Kristin Laemmert
74f2d58b8b
base64decode: check that the decoded (not encoded) string is valid UTF-8
2018-10-16 18:49:20 -07:00
Kristin Laemmert
6171ba3b8a
base64decodeFunc now checks for valid UTF-8
2018-10-16 18:49:20 -07:00
Kristin Laemmert
b6d3d69d3a
port cidr functions
2018-10-16 18:49:20 -07:00
Kristin Laemmert
10ef61c71c
porting many functions
2018-10-16 18:49:20 -07:00
Kristin Laemmert
602b59cdc4
porting functions
2018-10-16 18:49:20 -07:00
Kristin Laemmert
4ad3676934
port ceil function
2018-10-16 18:49:20 -07:00
Kristin Laemmert
c4f4dddff5
porting crypto functions
2018-10-16 18:49:20 -07:00
Kristin Laemmert
eb1d8b7909
cleanup comments for nicer godocs
2018-10-16 18:49:20 -07:00
Kristin Laemmert
9aa9b18658
porting crypto functions
2018-10-16 18:49:20 -07:00
Kristin Laemmert
1a5299efcb
porting encoding functions
2018-10-16 18:49:20 -07:00
Kristin Laemmert
d4e703a5c1
base64decode
2018-10-16 18:48:28 -07:00