stan-dev / stan

Stan development repository. The master branch contains the current release. The develop branch contains the latest stable development. See the Developer Process Wiki for details.
https://mc-stan.org
BSD 3-Clause "New" or "Revised" License
2.57k stars 368 forks source link

Relax requirements for 0-sized data objects in JSON #3170

Closed WardBrian closed 1 year ago

WardBrian commented 1 year ago

Submission Checklist

Summary

Follow on to #3165, this allows for any variable name to be "validated" if the expected size is 0.

Intended Effect

This is necessary because

{ "foo" : [] }

is a valid JSON for array[0] tuple(real, real) foo, but the Stan compiler will request information on "foo.1" and "foo.2" which don't exist.

How to Verify

Tests were added

Side Effects

If an object has a 0 dimension (e.g. is size 0), then it is technically no longer required to be in the JSON at all. E.g., for matrix[0, 3] bar, valid JSONs are now { "bar" : [] }, { "bar" : [[]] }, and simply { }

Documentation

Copyright and Licensing

Please list the copyright holder for the work you are submitting (this will be you or your assignee, such as a university or company):

Simons Foundation

By submitting this pull request, the copyright holder is agreeing to license the submitted work under the following licenses: