]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blobdiff - vendor/github.com/zclconf/go-cty/cty/convert/conversion.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / zclconf / go-cty / cty / convert / conversion.go
index 7bfcc081cc84457fd037c5c53a738773f2b66673..f9aacb4ee774e4ce22b3cb049022df06c5973cc7 100644 (file)
@@ -17,6 +17,10 @@ func getConversion(in cty.Type, out cty.Type, unsafe bool) conversion {
        // Wrap the conversion in some standard checks that we don't want to
        // have to repeat in every conversion function.
        return func(in cty.Value, path cty.Path) (cty.Value, error) {
+               if out == cty.DynamicPseudoType {
+                       // Conversion to DynamicPseudoType always just passes through verbatim.
+                       return in, nil
+               }
                if !in.IsKnown() {
                        return cty.UnknownVal(out), nil
                }
@@ -57,6 +61,12 @@ func getConversionKnown(in cty.Type, out cty.Type, unsafe bool) conversion {
                }
                return nil
 
+       case out.IsObjectType() && in.IsObjectType():
+               return conversionObjectToObject(in, out, unsafe)
+
+       case out.IsTupleType() && in.IsTupleType():
+               return conversionTupleToTuple(in, out, unsafe)
+
        case out.IsListType() && (in.IsListType() || in.IsSetType()):
                inEty := in.ElementType()
                outEty := out.ElementType()
@@ -93,10 +103,23 @@ func getConversionKnown(in cty.Type, out cty.Type, unsafe bool) conversion {
                }
                return conversionCollectionToSet(outEty, convEty)
 
+       case out.IsMapType() && in.IsMapType():
+               inEty := in.ElementType()
+               outEty := out.ElementType()
+               convEty := getConversion(inEty, outEty, unsafe)
+               if convEty == nil {
+                       return nil
+               }
+               return conversionCollectionToMap(outEty, convEty)
+
        case out.IsListType() && in.IsTupleType():
                outEty := out.ElementType()
                return conversionTupleToList(in, outEty, unsafe)
 
+       case out.IsSetType() && in.IsTupleType():
+               outEty := out.ElementType()
+               return conversionTupleToSet(in, outEty, unsafe)
+
        case out.IsMapType() && in.IsObjectType():
                outEty := out.ElementType()
                return conversionObjectToMap(in, outEty, unsafe)