[roll] Roll fuchsia [fidl][fidlc] Formalize constraint handling Each Type subclass now subclasses Constraint<Kinds...> where Kinds is a list of ConstraintKind values. In each of these types' ApplyConstraints() method they can simply call ResolveAndMergeConstraints() to take the constraint params supplied to the type constructor, resolve them against the kinds, populate the LayoutInvocation and merge the resolved constraint values with the current values on the Type instance. Then that's passed to the Type's constructor (which now takes the appropriate Constraint<...> type rather than individual arguments for constraints) to create a newly constrained Type object. Internally Constraints<...> has ConstraintStorage<Kind> types that provide storage for constraint values and implement the code to resolve Constant nodes from the AST into constraint values. Those are wrapped by Constraint<Kind> types that provide shared logic on top of the ConstraintStorage<Kind> policy. It's possible to customize the error reporting around unexpected constraints by overriding ConstraintStorage<Kind>::ReportMergeFailure() and Constraints<Kinds...>::OnUnexpectedConstraint(). Additional validation can also be implemented in the Type's ApplyConstraints() between resolving constraints and creating the new Type instance. Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/776763 Original-Revision: dd5c5c0ce3d2999c09795cc3aefea9d819b7ad56 GitOrigin-RevId: e669b48a4cb8134dd6b45ca0e4f9b1bdc0053032 Change-Id: Ib11eb4272c4416480735678248dc06ba24254b7d
This repository contains Fuchsia's Global Integration manifest files.
All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.
Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.
First install Jiri.
Next run:
$ jiri init $ jiri import minimal https://fuchsia.googlesource.com/integration $ jiri update
Third party projects should have their own subdirectory in ./third_party.