| 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 | 4 |
| 5 import 'package:kernel/ast.dart' as ir; | 5 import 'package:kernel/ast.dart' as ir; |
| 6 | 6 |
| 7 import '../common.dart'; | 7 import '../common.dart'; |
| 8 import '../common/names.dart'; | 8 import '../common/names.dart'; |
| 9 import '../compiler.dart'; | 9 import '../compiler.dart'; |
| 10 import '../constants/expressions.dart'; | 10 import '../constants/expressions.dart'; |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 void checkFunctionTypes(ir.FunctionNode node) { | 76 void checkFunctionTypes(ir.FunctionNode node) { |
| 77 checkType(node.returnType); | 77 checkType(node.returnType); |
| 78 node.positionalParameters.forEach((v) => checkType(v.type)); | 78 node.positionalParameters.forEach((v) => checkType(v.type)); |
| 79 node.namedParameters.forEach((v) => checkType(v.type)); | 79 node.namedParameters.forEach((v) => checkType(v.type)); |
| 80 } | 80 } |
| 81 | 81 |
| 82 ResolutionImpact buildField(ir.Field field) { | 82 ResolutionImpact buildField(ir.Field field) { |
| 83 checkType(field.type); | 83 checkType(field.type); |
| 84 if (field.initializer != null) { | 84 if (field.initializer != null) { |
| 85 visitNode(field.initializer); | 85 visitNode(field.initializer); |
| 86 if (!field.isConst) { |
| 87 impactBuilder.registerFeature(Feature.LAZY_FIELD); |
| 88 } |
| 86 } else { | 89 } else { |
| 87 impactBuilder.registerFeature(Feature.FIELD_WITHOUT_INITIALIZER); | 90 impactBuilder.registerFeature(Feature.FIELD_WITHOUT_INITIALIZER); |
| 88 } | 91 } |
| 89 return impactBuilder; | 92 return impactBuilder; |
| 90 } | 93 } |
| 91 | 94 |
| 92 ResolutionImpact buildProcedure(ir.Procedure procedure) { | 95 ResolutionImpact buildProcedure(ir.Procedure procedure) { |
| 93 if (procedure.kind == ir.ProcedureKind.Method || | 96 if (procedure.kind == ir.ProcedureKind.Method || |
| 94 procedure.kind == ir.ProcedureKind.Operator) { | 97 procedure.kind == ir.ProcedureKind.Operator) { |
| 95 checkFunctionTypes(procedure.function); | 98 checkFunctionTypes(procedure.function); |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 } else { | 322 } else { |
| 320 impactBuilder.registerFeature(Feature.LOCAL_WITHOUT_INITIALIZER); | 323 impactBuilder.registerFeature(Feature.LOCAL_WITHOUT_INITIALIZER); |
| 321 } | 324 } |
| 322 } | 325 } |
| 323 | 326 |
| 324 // TODO(johnniwinther): Make this throw and visit child nodes explicitly | 327 // TODO(johnniwinther): Make this throw and visit child nodes explicitly |
| 325 // instead to ensure that we don't visit unwanted parts of the ir. | 328 // instead to ensure that we don't visit unwanted parts of the ir. |
| 326 @override | 329 @override |
| 327 void defaultNode(ir.Node node) => node.visitChildren(this); | 330 void defaultNode(ir.Node node) => node.visitChildren(this); |
| 328 } | 331 } |
| OLD | NEW |