| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 library kernel.analyzer.ast_from_analyzer; | 4 library kernel.analyzer.ast_from_analyzer; |
| 5 | 5 |
| 6 import '../ast.dart' as ast; | 6 import '../ast.dart' as ast; |
| 7 import '../frontend/accessors.dart'; | 7 import '../frontend/accessors.dart'; |
| 8 import '../frontend/super_initializers.dart'; | 8 import '../frontend/super_initializers.dart'; |
| 9 import '../log.dart'; | 9 import '../log.dart'; |
| 10 import '../type_algebra.dart'; | 10 import '../type_algebra.dart'; |
| (...skipping 2408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2419 | 2419 |
| 2420 /// True for the `index` field of an `enum` class. | 2420 /// True for the `index` field of an `enum` class. |
| 2421 static bool _isIndexField(FieldElement field) => field.name == 'index'; | 2421 static bool _isIndexField(FieldElement field) => field.name == 'index'; |
| 2422 | 2422 |
| 2423 visitEnumDeclaration(EnumDeclaration node) { | 2423 visitEnumDeclaration(EnumDeclaration node) { |
| 2424 addAnnotations(node.metadata); | 2424 addAnnotations(node.metadata); |
| 2425 ast.Class classNode = currentClass; | 2425 ast.Class classNode = currentClass; |
| 2426 var intType = | 2426 var intType = |
| 2427 new ast.InterfaceType(scope.loader.getCoreClassReference('int')); | 2427 new ast.InterfaceType(scope.loader.getCoreClassReference('int')); |
| 2428 var indexFieldElement = element.fields.firstWhere(_isIndexField); | 2428 var indexFieldElement = element.fields.firstWhere(_isIndexField); |
| 2429 var indexField = scope.getMemberReference(indexFieldElement); | 2429 ast.Field indexField = scope.getMemberReference(indexFieldElement); |
| 2430 indexField.type = intType; | 2430 indexField.type = intType; |
| 2431 classNode.addMember(indexField); | 2431 classNode.addMember(indexField); |
| 2432 var parameter = new ast.VariableDeclaration('index', type: intType); | 2432 var parameter = new ast.VariableDeclaration('index', type: intType); |
| 2433 var function = new ast.FunctionNode(new ast.EmptyStatement(), | 2433 var function = new ast.FunctionNode(new ast.EmptyStatement(), |
| 2434 positionalParameters: [parameter]); | 2434 positionalParameters: [parameter]); |
| 2435 var superConstructor = scope.loader.getRootClassConstructorReference(); | 2435 var superConstructor = scope.loader.getRootClassConstructorReference(); |
| 2436 var constructor = new ast.Constructor(function, | 2436 var constructor = new ast.Constructor(function, |
| 2437 name: new ast.Name(''), | 2437 name: new ast.Name(''), |
| 2438 isConst: true, | 2438 isConst: true, |
| 2439 initializers: [ | 2439 initializers: [ |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2772 if (element is FieldElement) return element.getter; | 2772 if (element is FieldElement) return element.getter; |
| 2773 return element; | 2773 return element; |
| 2774 } | 2774 } |
| 2775 | 2775 |
| 2776 Element desynthesizeSetter(Element element) { | 2776 Element desynthesizeSetter(Element element) { |
| 2777 if (element == null || !element.isSynthetic) return element; | 2777 if (element == null || !element.isSynthetic) return element; |
| 2778 if (element is PropertyAccessorElement) return element.variable; | 2778 if (element is PropertyAccessorElement) return element.variable; |
| 2779 if (element is FieldElement) return element.setter; | 2779 if (element is FieldElement) return element.setter; |
| 2780 return element; | 2780 return element; |
| 2781 } | 2781 } |
| OLD | NEW |