@@ -1826,6 +1826,59 @@ TextSerializer<InstanceConstant> instanceConstantSerializer =
18261826
18271827Case <Constant > constantSerializer = Case .uninitialized (ConstantTagger ());
18281828
1829+ class InitializerTagger implements Tagger <Initializer > {
1830+ const InitializerTagger ();
1831+
1832+ String tag (Initializer node) {
1833+ if (node is AssertInitializer ) {
1834+ return "assert" ;
1835+ } else if (node is FieldInitializer ) {
1836+ return "field" ;
1837+ } else if (node is InvalidInitializer ) {
1838+ return "invalid" ;
1839+ } else if (node is LocalInitializer ) {
1840+ return "local" ;
1841+ } else if (node is RedirectingInitializer ) {
1842+ return "redirecting" ;
1843+ } else if (node is SuperInitializer ) {
1844+ return "super" ;
1845+ } else {
1846+ throw UnimplementedError ("InitializerTagger.tag(${node .runtimeType })." );
1847+ }
1848+ }
1849+ }
1850+
1851+ TextSerializer <AssertInitializer > assertInitializerSerializer = Wrapped (
1852+ (w) => w.statement, (u) => AssertInitializer (u), statementSerializer);
1853+
1854+ TextSerializer <FieldInitializer > fieldInitializerSerializer = Wrapped (
1855+ (w) => Tuple2 (w.fieldReference.canonicalName, w.value),
1856+ (u) => FieldInitializer .byReference (u.first.getReference (), u.second),
1857+ Tuple2Serializer (CanonicalNameSerializer (), expressionSerializer));
1858+
1859+ TextSerializer <InvalidInitializer > invalidInitializerSerializer =
1860+ Wrapped ((_) => null , (_) => InvalidInitializer (), Nothing ());
1861+
1862+ TextSerializer <LocalInitializer > localInitializerSerializer = Wrapped (
1863+ (w) => w.variable,
1864+ (u) => LocalInitializer (u),
1865+ variableDeclarationSerializer);
1866+
1867+ TextSerializer <RedirectingInitializer > redirectingInitializerSerializer =
1868+ Wrapped (
1869+ (w) => Tuple2 (w.targetReference.canonicalName, w.arguments),
1870+ (u) => RedirectingInitializer .byReference (
1871+ u.first.getReference (), u.second),
1872+ Tuple2Serializer (CanonicalNameSerializer (), argumentsSerializer));
1873+
1874+ TextSerializer <SuperInitializer > superInitializerSerializer = Wrapped (
1875+ (w) => Tuple2 (w.targetReference.canonicalName, w.arguments),
1876+ (u) => SuperInitializer .byReference (u.first.getReference (), u.second),
1877+ Tuple2Serializer (CanonicalNameSerializer (), argumentsSerializer));
1878+
1879+ Case <Initializer > initializerSerializer =
1880+ Case .uninitialized (InitializerTagger ());
1881+
18291882void initializeSerializers () {
18301883 expressionSerializer.registerTags ({
18311884 "string" : stringLiteralSerializer,
@@ -1950,4 +2003,12 @@ void initializeSerializers() {
19502003 "const-expr" : unevaluatedConstantSerializer,
19512004 "const-object" : instanceConstantSerializer,
19522005 });
2006+ initializerSerializer.registerTags ({
2007+ "assert" : assertInitializerSerializer,
2008+ "field" : fieldInitializerSerializer,
2009+ "invalid" : invalidInitializerSerializer,
2010+ "local" : localInitializerSerializer,
2011+ "redirecting" : redirectingInitializerSerializer,
2012+ "super" : superInitializerSerializer,
2013+ });
19532014}
0 commit comments