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 analyzer.test.dart.element.builder_test; | 5 library analyzer.test.dart.element.builder_test; |
6 | 6 |
7 import 'package:analyzer/dart/ast/ast.dart'; | 7 import 'package:analyzer/dart/ast/ast.dart'; |
8 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; | 8 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; |
9 import 'package:analyzer/dart/ast/token.dart'; | 9 import 'package:analyzer/dart/ast/token.dart'; |
10 import 'package:analyzer/dart/element/element.dart'; | 10 import 'package:analyzer/dart/element/element.dart'; |
11 import 'package:analyzer/src/dart/ast/ast.dart'; | 11 import 'package:analyzer/src/dart/ast/ast.dart'; |
12 import 'package:analyzer/src/dart/element/builder.dart'; | 12 import 'package:analyzer/src/dart/element/builder.dart'; |
13 import 'package:analyzer/src/dart/element/element.dart'; | 13 import 'package:analyzer/src/dart/element/element.dart'; |
| 14 import 'package:analyzer/src/dart/error/syntactic_errors.dart'; |
14 import 'package:analyzer/src/generated/engine.dart'; | 15 import 'package:analyzer/src/generated/engine.dart'; |
15 import 'package:analyzer/src/generated/resolver.dart'; | 16 import 'package:analyzer/src/generated/resolver.dart'; |
16 import 'package:analyzer/src/generated/source.dart'; | 17 import 'package:analyzer/src/generated/source.dart'; |
17 import 'package:analyzer/src/generated/testing/ast_test_factory.dart'; | 18 import 'package:analyzer/src/generated/testing/ast_test_factory.dart'; |
18 import 'package:analyzer/src/generated/testing/element_factory.dart'; | 19 import 'package:analyzer/src/generated/testing/element_factory.dart'; |
19 import 'package:analyzer/src/generated/testing/token_factory.dart'; | 20 import 'package:analyzer/src/generated/testing/token_factory.dart'; |
20 import 'package:analyzer/src/generated/utilities_dart.dart'; | 21 import 'package:analyzer/src/generated/utilities_dart.dart'; |
21 import 'package:test/test.dart'; | 22 import 'package:test/test.dart'; |
22 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 23 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
23 | 24 |
(...skipping 1108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 FunctionBody mainBody = mainAst.functionExpression.body; | 1133 FunctionBody mainBody = mainAst.functionExpression.body; |
1133 mainBody.accept(new LocalElementBuilder(holder, compilationUnitElement)); | 1134 mainBody.accept(new LocalElementBuilder(holder, compilationUnitElement)); |
1134 main.functions = holder.functions; | 1135 main.functions = holder.functions; |
1135 main.localVariables = holder.localVariables; | 1136 main.localVariables = holder.localVariables; |
1136 expect(main.functions, hasLength(1)); | 1137 expect(main.functions, hasLength(1)); |
1137 FunctionElement f = main.functions[0]; | 1138 FunctionElement f = main.functions[0]; |
1138 expect(f.parameters, hasLength(1)); | 1139 expect(f.parameters, hasLength(1)); |
1139 expect(f.parameters[0].initializer, isNotNull); | 1140 expect(f.parameters[0].initializer, isNotNull); |
1140 } | 1141 } |
1141 | 1142 |
| 1143 void test_visitFieldFormalParameter() { |
| 1144 CompilationUnit unit = parseCompilationUnit( |
| 1145 r''' |
| 1146 main() { |
| 1147 f(a, this.b) {} |
| 1148 } |
| 1149 ''', |
| 1150 [ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR]); |
| 1151 var main = unit.declarations[0] as FunctionDeclaration; |
| 1152 var mainBody = main.functionExpression.body as BlockFunctionBody; |
| 1153 var mainBlock = mainBody.block; |
| 1154 var statement = mainBlock.statements[0] as FunctionDeclarationStatement; |
| 1155 FunctionDeclaration f = statement.functionDeclaration; |
| 1156 |
| 1157 // Build API elements. |
| 1158 { |
| 1159 ElementHolder holder = new ElementHolder(); |
| 1160 unit.accept(new ApiElementBuilder(holder, compilationUnitElement)); |
| 1161 } |
| 1162 |
| 1163 // Build local elements. |
| 1164 ElementHolder holder = new ElementHolder(); |
| 1165 var builder = new LocalElementBuilder(holder, compilationUnitElement); |
| 1166 f.accept(builder); |
| 1167 |
| 1168 List<FormalParameter> parameters = |
| 1169 f.functionExpression.parameters.parameters; |
| 1170 |
| 1171 ParameterElement a = parameters[0].element; |
| 1172 expect(a, isNotNull); |
| 1173 expect(a.name, 'a'); |
| 1174 |
| 1175 ParameterElement b = parameters[1].element; |
| 1176 expect(b, isNotNull); |
| 1177 expect(b.name, 'b'); |
| 1178 } |
| 1179 |
1142 void test_visitVariableDeclaration_local() { | 1180 void test_visitVariableDeclaration_local() { |
1143 var holder = buildElementsForText('class C { m() { T v = null; } }'); | 1181 var holder = buildElementsForText('class C { m() { T v = null; } }'); |
1144 List<LocalVariableElement> variableElements = holder.localVariables; | 1182 List<LocalVariableElement> variableElements = holder.localVariables; |
1145 expect(variableElements, hasLength(1)); | 1183 expect(variableElements, hasLength(1)); |
1146 LocalVariableElement variableElement = variableElements[0]; | 1184 LocalVariableElement variableElement = variableElements[0]; |
1147 expect(variableElement.hasImplicitType, isFalse); | 1185 expect(variableElement.hasImplicitType, isFalse); |
1148 expect(variableElement.name, 'v'); | 1186 expect(variableElement.name, 'v'); |
1149 expect(variableElement.initializer, isNotNull); | 1187 expect(variableElement.initializer, isNotNull); |
1150 _assertVisibleRange(variableElement, 14, 29); | 1188 _assertVisibleRange(variableElement, 14, 29); |
1151 } | 1189 } |
(...skipping 1468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2620 AnalysisEngine.instance.logger = logger; | 2658 AnalysisEngine.instance.logger = logger; |
2621 try { | 2659 try { |
2622 _compilationUnit = parseCompilationUnit(code); | 2660 _compilationUnit = parseCompilationUnit(code); |
2623 compilationUnit.accept(visitor); | 2661 compilationUnit.accept(visitor); |
2624 } finally { | 2662 } finally { |
2625 expect(logger.log, hasLength(0)); | 2663 expect(logger.log, hasLength(0)); |
2626 AnalysisEngine.instance.logger = Logger.NULL; | 2664 AnalysisEngine.instance.logger = Logger.NULL; |
2627 } | 2665 } |
2628 } | 2666 } |
2629 } | 2667 } |
OLD | NEW |