@@ -21,10 +21,10 @@ sealed class Constant {
2121 /// [constants] needs to be passed, as the [Constant] s are normalized and
2222 /// stored separately in the JSON.
2323 Map <String , Object ?> toJson (Map <Constant , int > constants) =>
24- toSyntax (constants).json;
24+ _toSyntax (constants).json;
2525
2626 /// Converts this [Constant] object to a syntax representation.
27- ConstantSyntax toSyntax (Map <Constant , int > constants);
27+ ConstantSyntax _toSyntax (Map <Constant , int > constants);
2828
2929 /// Converts this [Constant] to the value it represents.
3030 Object ? toValue () => switch (this ) {
@@ -46,30 +46,30 @@ sealed class Constant {
4646 static Constant fromJson (
4747 Map <String , Object ?> value,
4848 List <Constant > constants,
49- ) => fromSyntax (ConstantSyntax .fromJson (value), constants);
49+ ) => _fromSyntax (ConstantSyntax .fromJson (value), constants);
5050
5151 /// Creates a [Constant] object from its syntax representation.
52- static Constant fromSyntax ( ConstantSyntax syntax, List < Constant > constants) =>
53- switch ( syntax) {
54- NullConstantSyntax () => const NullConstant () ,
55- BoolConstantSyntax ( : final value ) => BoolConstant (value),
56- IntConstantSyntax ( : final value ) => IntConstant (value ),
57- StringConstantSyntax (: final value) => StringConstant (value),
58- ListConstantSyntax (: final value) => ListConstant (
59- value! . cast < int >(). map ((i) => constants[i]). toList ( ),
60- ),
61- MapConstantSyntax ( : final value) => MapConstant (
62- value.json. map (
63- (key, value) => MapEntry (key, constants[value as int ]),
64- ),
65- ),
66- InstanceConstantSyntax (value: final value) => InstanceConstant (
67- fields: (value? .json ?? {}).map (
68- (key, value) => MapEntry (key, constants[value as int ]),
69- ),
70- ),
71- _ => throw UnimplementedError ('This type is not a supported constant' ),
72- };
52+ static Constant _fromSyntax (
53+ ConstantSyntax syntax,
54+ List < Constant > constants ,
55+ ) => switch (syntax) {
56+ NullConstantSyntax ( ) => const NullConstant ( ),
57+ BoolConstantSyntax (: final value) => BoolConstant (value),
58+ IntConstantSyntax (: final value) => IntConstant (value),
59+ StringConstantSyntax ( : final value) => StringConstant (value ),
60+ ListConstantSyntax ( : final value) => ListConstant (
61+ value! . cast < int >(). map ((i) => constants[i]). toList (),
62+ ),
63+ MapConstantSyntax ( : final value) => MapConstant (
64+ value.json. map ((key, value) => MapEntry (key, constants[value as int ]) ),
65+ ),
66+ InstanceConstantSyntax (value: final value) => InstanceConstant (
67+ fields: (value? .json ?? {}).map (
68+ (key, value) => MapEntry (key, constants[value as int ]),
69+ ),
70+ ),
71+ _ => throw UnimplementedError ('This type is not a supported constant' ),
72+ };
7373}
7474
7575/// Represents the `null` constant value.
@@ -78,7 +78,7 @@ final class NullConstant extends Constant {
7878 const NullConstant () : super ();
7979
8080 @override
81- NullConstantSyntax toSyntax (Map <Constant , int > constants) =>
81+ NullConstantSyntax _toSyntax (Map <Constant , int > constants) =>
8282 NullConstantSyntax ();
8383
8484 @override
@@ -114,7 +114,7 @@ final class BoolConstant extends PrimitiveConstant<bool> {
114114 const BoolConstant (super .value);
115115
116116 @override
117- BoolConstantSyntax toSyntax (Map <Constant , int > constants) =>
117+ BoolConstantSyntax _toSyntax (Map <Constant , int > constants) =>
118118 BoolConstantSyntax (value: value);
119119}
120120
@@ -124,7 +124,7 @@ final class IntConstant extends PrimitiveConstant<int> {
124124 const IntConstant (super .value);
125125
126126 @override
127- IntConstantSyntax toSyntax (Map <Constant , int > constants) =>
127+ IntConstantSyntax _toSyntax (Map <Constant , int > constants) =>
128128 IntConstantSyntax (value: value);
129129}
130130
@@ -134,7 +134,7 @@ final class StringConstant extends PrimitiveConstant<String> {
134134 const StringConstant (super .value);
135135
136136 @override
137- StringConstantSyntax toSyntax (Map <Constant , int > constants) =>
137+ StringConstantSyntax _toSyntax (Map <Constant , int > constants) =>
138138 StringConstantSyntax (value: value);
139139}
140140
@@ -157,7 +157,7 @@ final class ListConstant<T extends Constant> extends Constant {
157157 }
158158
159159 @override
160- ListConstantSyntax toSyntax (Map <Constant , int > constants) =>
160+ ListConstantSyntax _toSyntax (Map <Constant , int > constants) =>
161161 ListConstantSyntax (
162162 value: value.map ((constant) => constants[constant]).toList (),
163163 );
@@ -182,11 +182,12 @@ final class MapConstant<T extends Constant> extends Constant {
182182 }
183183
184184 @override
185- MapConstantSyntax toSyntax (Map <Constant , int > constants) => MapConstantSyntax (
186- value: JsonObjectSyntax .fromJson (
187- value.map ((key, constant) => MapEntry (key, constants[constant]! )),
188- ),
189- );
185+ MapConstantSyntax _toSyntax (Map <Constant , int > constants) =>
186+ MapConstantSyntax (
187+ value: JsonObjectSyntax .fromJson (
188+ value.map ((key, constant) => MapEntry (key, constants[constant]! )),
189+ ),
190+ );
190191}
191192
192193/// A constant instance of a class with its fields
@@ -201,7 +202,7 @@ final class InstanceConstant extends Constant {
201202 const InstanceConstant ({required this .fields});
202203
203204 @override
204- InstanceConstantSyntax toSyntax (Map <Constant , int > constants) =>
205+ InstanceConstantSyntax _toSyntax (Map <Constant , int > constants) =>
205206 InstanceConstantSyntax (
206207 value: fields.isNotEmpty
207208 ? JsonObjectSyntax .fromJson (
@@ -222,3 +223,14 @@ final class InstanceConstant extends Constant {
222223 @override
223224 int get hashCode => deepHash (fields);
224225}
226+
227+ /// Package private (protected) methods for [Constant] .
228+ ///
229+ /// This avoids bloating the public API and public API docs and prevents
230+ /// internal types from leaking from the API.
231+ extension ConstantProtected on Constant {
232+ ConstantSyntax toSyntax (Map <Constant , int > constants) => _toSyntax (constants);
233+
234+ static Constant fromSyntax (ConstantSyntax syntax, List <Constant > constants) =>
235+ Constant ._fromSyntax (syntax, constants);
236+ }
0 commit comments