Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: pkg/analyzer/test/dart/element/builder_test.dart

Issue 2809423003: Build GenericFunctionTypeElementImpl in both ApiElementBuilder and LocalElementBuilder. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/builder.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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';
(...skipping 1096 matching lines...) Expand 10 before | Expand all | Expand 10 after
1107 // Validate the variable element. 1107 // Validate the variable element.
1108 var variableElement = variable.element as VariableElementImpl; 1108 var variableElement = variable.element as VariableElementImpl;
1109 expect(variableElement, isNotNull); 1109 expect(variableElement, isNotNull);
1110 expect(variableElement.initializer, isNull); 1110 expect(variableElement.initializer, isNull);
1111 // Build the initializer element. 1111 // Build the initializer element.
1112 new LocalElementBuilder(new ElementHolder(), compilationUnitElement) 1112 new LocalElementBuilder(new ElementHolder(), compilationUnitElement)
1113 .buildVariableInitializer(variableElement, variable.initializer); 1113 .buildVariableInitializer(variableElement, variable.initializer);
1114 expect(variableElement.initializer, isNotNull); 1114 expect(variableElement.initializer, isNotNull);
1115 } 1115 }
1116 1116
1117 void test_genericFunction_isExpression() {
1118 buildElementsForText('main(p) { p is Function(int a, String); }');
1119 var main = compilationUnit.declarations[0] as FunctionDeclaration;
1120 var body = main.functionExpression.body as BlockFunctionBody;
1121 var statement = body.block.statements[0] as ExpressionStatement;
1122 var expression = statement.expression as IsExpression;
1123 var typeNode = expression.type as GenericFunctionType;
1124 var typeElement = typeNode.type.element as GenericFunctionTypeElementImpl;
1125 expect(typeElement.parameters, hasLength(2));
1126 expect(typeElement.parameters[0].name, 'a');
1127 expect(typeElement.parameters[1].name, '');
1128 }
1129
1117 void test_visitDefaultFormalParameter_local() { 1130 void test_visitDefaultFormalParameter_local() {
1118 CompilationUnit unit = parseCompilationUnit(''' 1131 CompilationUnit unit = parseCompilationUnit('''
1119 main() { 1132 main() {
1120 f({bool b: false}) {} 1133 f({bool b: false}) {}
1121 } 1134 }
1122 '''); 1135 ''');
1123 var mainAst = unit.declarations.single as FunctionDeclaration; 1136 var mainAst = unit.declarations.single as FunctionDeclaration;
1124 // Build API elements. 1137 // Build API elements.
1125 FunctionElementImpl main; 1138 FunctionElementImpl main;
1126 { 1139 {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
1214 * [ElementAnnotationImpl] is unresolved. 1227 * [ElementAnnotationImpl] is unresolved.
1215 */ 1228 */
1216 void checkAnnotation(NodeList<Annotation> metadata); 1229 void checkAnnotation(NodeList<Annotation> metadata);
1217 1230
1218 /** 1231 /**
1219 * Verify that the given [element] has exactly one annotation, and that its 1232 * Verify that the given [element] has exactly one annotation, and that its
1220 * [ElementAnnotationImpl] is unresolved. 1233 * [ElementAnnotationImpl] is unresolved.
1221 */ 1234 */
1222 void checkMetadata(Element element); 1235 void checkMetadata(Element element);
1223 1236
1237 void test_genericFunction_asTopLevelVariableType() {
1238 buildElementsForText('int Function(int a, String) v;');
1239 var v = compilationUnit.declarations[0] as TopLevelVariableDeclaration;
1240 var typeNode = v.variables.type as GenericFunctionType;
1241 var typeElement = typeNode.type.element as GenericFunctionTypeElementImpl;
1242 expect(typeElement.parameters, hasLength(2));
1243 expect(typeElement.parameters[0].name, 'a');
1244 expect(typeElement.parameters[1].name, '');
1245 }
1246
1224 void test_metadata_fieldDeclaration() { 1247 void test_metadata_fieldDeclaration() {
1225 List<FieldElement> fields = 1248 List<FieldElement> fields =
1226 buildElementsForText('class C { @a int x, y; }').types[0].fields; 1249 buildElementsForText('class C { @a int x, y; }').types[0].fields;
1227 checkMetadata(fields[0]); 1250 checkMetadata(fields[0]);
1228 checkMetadata(fields[1]); 1251 checkMetadata(fields[1]);
1229 expect(fields[0].metadata, same(fields[1].metadata)); 1252 expect(fields[0].metadata, same(fields[1].metadata));
1230 } 1253 }
1231 1254
1232 void test_metadata_topLevelVariableDeclaration() { 1255 void test_metadata_topLevelVariableDeclaration() {
1233 List<TopLevelVariableElement> topLevelVariables = 1256 List<TopLevelVariableElement> topLevelVariables =
(...skipping 1424 matching lines...) Expand 10 before | Expand all | Expand 10 after
2658 AnalysisEngine.instance.logger = logger; 2681 AnalysisEngine.instance.logger = logger;
2659 try { 2682 try {
2660 _compilationUnit = parseCompilationUnit(code); 2683 _compilationUnit = parseCompilationUnit(code);
2661 compilationUnit.accept(visitor); 2684 compilationUnit.accept(visitor);
2662 } finally { 2685 } finally {
2663 expect(logger.log, hasLength(0)); 2686 expect(logger.log, hasLength(0));
2664 AnalysisEngine.instance.logger = Logger.NULL; 2687 AnalysisEngine.instance.logger = Logger.NULL;
2665 } 2688 }
2666 } 2689 }
2667 } 2690 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/builder.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698