puppetlabs/puppet — pull request #3024 by hlindberg (2014-08-27 21:51:57+00:00)
Title: (PUP-3117) Complete the Resource Expression implementation

This completes the resource expression implementation of:
* local defaults
* unfolding of hash into resource attributes
* left hand side expression validation

The implementation was unfinished in wait of the UX research on PUP-3117. The specification has already been updated, and this PR brings the implementation in line with the spec. Specifically:

* The LHS must now be a QualifiedName (e.g. notify, file), a QualifiedReference (e.g. Notify, File), or an Access Expression with a left expression of QualifiedReference (e.g. Resource[notify], Resource[file]), or the keyword 'class'. The LHS must evaluate to a CatalogEntry type that is not resource specific (i.e. without title).
* One unfolding operation per resource body is allowed (error if multiple entries are made)
* Unfolding operation is allowed intermixed with regular attribute operations
* unfolding a hash that has the same attributes set as those explicitly set is an error (duplicate entry), as the defaults mechanism should instead have been used if defaults were desired).

This PR also contains a fix to the "language.rb" spec utility functions, and maintenance and bug fixes
related to issues.rb.