OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library dart_tree_printer; | 5 library dart_tree_printer; |
6 | 6 |
7 import '../constants/values.dart' as values; | 7 import '../constants/values.dart' as values; |
8 import '../dart_types.dart' as types; | 8 import '../dart_types.dart' as types; |
9 import '../dart2jslib.dart' as dart2js; | 9 import '../dart2jslib.dart' as dart2js; |
10 import '../elements/elements.dart' as elements; | 10 import '../elements/elements.dart' as elements; |
(...skipping 1195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1206 types.InterfaceType supertype = cls.supertype; | 1206 types.InterfaceType supertype = cls.supertype; |
1207 Set<types.DartType> mixinTypes = new Set<types.DartType>(); | 1207 Set<types.DartType> mixinTypes = new Set<types.DartType>(); |
1208 Link<tree.Node> mixins = const Link<tree.Node>(); | 1208 Link<tree.Node> mixins = const Link<tree.Node>(); |
1209 | 1209 |
1210 void addMixin(types.DartType mixinType) { | 1210 void addMixin(types.DartType mixinType) { |
1211 mixinTypes.add(mixinType); | 1211 mixinTypes.add(mixinType); |
1212 mixins = mixins.prepend(makeType(TypeGenerator.createType(mixinType))); | 1212 mixins = mixins.prepend(makeType(TypeGenerator.createType(mixinType))); |
1213 } | 1213 } |
1214 | 1214 |
1215 if (supertype != null) { | 1215 if (supertype != null) { |
1216 tree.Node superclass; | |
1217 if (supertype.element.isUnnamedMixinApplication) { | 1216 if (supertype.element.isUnnamedMixinApplication) { |
1218 while (supertype.element.isUnnamedMixinApplication) { | 1217 while (supertype.element.isUnnamedMixinApplication) { |
1219 elements.MixinApplicationElement mixinApplication = supertype.element; | 1218 elements.MixinApplicationElement mixinApplication = supertype.element; |
1220 addMixin(cls.asInstanceOf(mixinApplication.mixin)); | 1219 addMixin(cls.asInstanceOf(mixinApplication.mixin)); |
1221 supertype = mixinApplication.supertype; | 1220 supertype = mixinApplication.supertype; |
1222 } | 1221 } |
1223 tree.Node superclass = makeType( | 1222 tree.Node superclass = makeType( |
1224 TypeGenerator.createType(cls.asInstanceOf(supertype.element))); | 1223 TypeGenerator.createType(cls.asInstanceOf(supertype.element))); |
1225 supernode = new tree.MixinApplication( | 1224 supernode = new tree.MixinApplication( |
1226 superclass, new tree.NodeList(null, mixins, null, ',')); | 1225 superclass, new tree.NodeList(null, mixins, null, ',')); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1332 printStringChunk(chunk.previous), | 1331 printStringChunk(chunk.previous), |
1333 node); | 1332 node); |
1334 } else { | 1333 } else { |
1335 return node; | 1334 return node; |
1336 } | 1335 } |
1337 } | 1336 } |
1338 return printStringChunk(output.chunk); | 1337 return printStringChunk(output.chunk); |
1339 } | 1338 } |
1340 | 1339 |
1341 } | 1340 } |
OLD | NEW |