puppetlabs/puppet — pull request #2791 by zaphod42 (2014-06-20 21:59:17+00:00)
Title: (PUP-1299) Stop stripping arrays in future parser

Resource values that were arrays used to be converted to a single value iff
the array only had one element. This created a lot of confusion for type and
provider authors when the value they would set in a manifest would not be the
value they would get in the type. The conversion causes large amounts of code
that would check for values that aren't arrays and convert them to arrays in
various places. There were also often tests that would be written directly
against providers that would then not catch errors in real use because the
author was unaware, or just forgot, that the array conversion would happen.

Under the future parser this is no longer done. The old behavior, however,
won't issue a deprecation warning because there isn't anything that can be
done about it from a user's perspective. The most likely outcome from this
change is that some manifests may stop working because a value just happened
to be a single-valued array that was on a parameter that is not supposed to
take an array. In such cases the error would have been masked previously, but
now will be uncovered.