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

Unified Diff: pkg/analyzer/test/dart/element/builder_test.dart

Issue 2800443002: Build elements for FieldFormalParameter(s) even for local functions. (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 side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/test/dart/element/builder_test.dart
diff --git a/pkg/analyzer/test/dart/element/builder_test.dart b/pkg/analyzer/test/dart/element/builder_test.dart
index ecbb202490568b8adf81e82bc918a13e6eba51ca..31883ccdf83616d606f89f3bc8f0c9aad37bedcd 100644
--- a/pkg/analyzer/test/dart/element/builder_test.dart
+++ b/pkg/analyzer/test/dart/element/builder_test.dart
@@ -11,6 +11,7 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/element/builder.dart';
import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/error/syntactic_errors.dart';
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/source.dart';
@@ -1139,6 +1140,43 @@ main() {
expect(f.parameters[0].initializer, isNotNull);
}
+ void test_visitFieldFormalParameter() {
+ CompilationUnit unit = parseCompilationUnit(
+ r'''
+main() {
+ f(a, this.b) {}
+}
+''',
+ [ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR]);
+ var main = unit.declarations[0] as FunctionDeclaration;
+ var mainBody = main.functionExpression.body as BlockFunctionBody;
+ var mainBlock = mainBody.block;
+ var statement = mainBlock.statements[0] as FunctionDeclarationStatement;
+ FunctionDeclaration f = statement.functionDeclaration;
+
+ // Build API elements.
+ {
+ ElementHolder holder = new ElementHolder();
+ unit.accept(new ApiElementBuilder(holder, compilationUnitElement));
+ }
+
+ // Build local elements.
+ ElementHolder holder = new ElementHolder();
+ var builder = new LocalElementBuilder(holder, compilationUnitElement);
+ f.accept(builder);
+
+ List<FormalParameter> parameters =
+ f.functionExpression.parameters.parameters;
+
+ ParameterElement a = parameters[0].element;
+ expect(a, isNotNull);
+ expect(a.name, 'a');
+
+ ParameterElement b = parameters[1].element;
+ expect(b, isNotNull);
+ expect(b.name, 'b');
+ }
+
void test_visitVariableDeclaration_local() {
var holder = buildElementsForText('class C { m() { T v = null; } }');
List<LocalVariableElement> variableElements = holder.localVariables;

Powered by Google App Engine
This is Rietveld 408576698