terraform/internal
Alisdair McDiarmid 691b98b612 cli: Prevent overuse of console-only type function
The console-only `type` function allows interrogation of any value's
type.  An implementation quirk is that we use a cty.Mark to allow the
console to display this type information without the usual HCL quoting.
For example:

> type("boop")
string

instead of:

> type("boop")
"string"

Because these marks can propagate when used in complex expressions,
using the type function as part of a complex expression could result in
this "print as raw" mark being attached to a collection. When this
happened, it would result in a crash when we tried to iterate over a
marked value.

The `type` function was never intended to be used in this way, which is
why its use is limited to the console command. Its purpose was as a
pseudo-builtin, used only at the top level to display the type of a
given value.

This commit goes some way to preventing the use of the `type` function
in complex expressions, by refusing to display any non-string value
which was marked by `type`, or contains a sub-value which was so marked.
2022-02-09 17:43:54 -05:00
..
addrs check for nested module index changes 2022-01-04 09:20:47 -05:00
backend Merge pull request #30344 from hashicorp/lafentres/refactor-show-command 2022-01-13 13:58:53 -06:00
builtin
cloud Refactor cloud table test runs 2021-12-20 16:36:06 -06:00
command Merge pull request #30316 from superkooks/main 2022-01-21 12:01:41 -05:00
communicator de-linting 2021-09-01 11:36:21 -04:00
configs configs: Validate pre/postcondition self-refs 2022-02-03 09:37:22 -05:00
copy
dag do not use pointer addr strings as map keys in set 2022-01-05 11:28:47 +00:00
depsfile providercache: Discard lock entries for unused providers 2021-12-17 15:30:21 -08:00
didyoumean
e2e
earlyconfig addrs: Expose the registry address parser's error messages 2021-11-30 15:46:16 -08:00
experiments experiments: New "preconditions_postconditions" experiment 2022-01-28 11:00:29 -05:00
getmodules getmodules: Use go-getter v1.5.10 and return to upstream GitGetter 2022-01-03 11:44:16 -08:00
getproviders Fix failing lint check for deprecated x/crypto/openpgp library 2021-11-18 14:59:29 -06:00
grpcwrap
helper/slowmessage remove wrapped streams and readline 2021-10-28 11:51:39 -04:00
httpclient
initwd addrs: Expose the registry address parser's error messages 2021-11-30 15:46:16 -08:00
instances InstancesForModule should not panic 2021-12-17 13:31:41 -05:00
ipaddr
lang core: Document postconditions as valid use of self 2022-01-31 14:34:35 -05:00
legacy
logging cleanup panic output 2021-12-17 11:57:52 -05:00
modsdir
moduledeps
moduletest
plans go.mod: go get google.golang.org/protobuf@v1.27.1 2021-10-11 16:37:39 -07:00
plugin internal/plugin[6]: Add generated mocks 2021-10-28 20:16:26 -05:00
plugin6 Introduce Terraform Plugin Protocol 6.2 with legacy_type_system fields from Protocol 5 (#30375) 2022-01-20 09:57:42 -05:00
provider-simple
provider-simple-v6
provider-terraform/main
providercache providercache: Discard lock entries for unused providers 2021-12-17 15:30:21 -08:00
providers
provisioner-local-exec/main
provisioners
refactoring refactoring: Implied move statements can be cross-package 2022-01-11 08:43:57 -08:00
registry command: make module installation interruptible 2021-11-11 12:28:10 +00:00
repl cli: Prevent overuse of console-only type function 2022-02-09 17:43:54 -05:00
replacefile
states Relax test to focus on the behavior we care about (encoded == encoded) 2022-01-05 14:38:53 -08:00
terminal remove the use of panicwrap 2021-10-28 11:51:39 -04:00
terraform core: Remove unused PlanOpts.Validate 2022-02-03 14:16:25 -05:00
tfdiags
tfplugin5 go.mod: go get google.golang.org/protobuf@v1.27.1 2021-10-11 16:37:39 -07:00
tfplugin6 Introduce Terraform Plugin Protocol 6.2 with legacy_type_system fields from Protocol 5 (#30375) 2022-01-20 09:57:42 -05:00
typeexpr internal/typeexpr: staticcheck 2020-12-02 13:59:19 -05:00