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

Unified Diff: pkg/analyzer/test/src/summary/summary_common.dart

Issue 1968063002: Handle more corner cases of closures while doing ast-based summaries. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 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
« no previous file with comments | « pkg/analyzer/test/src/summary/resynthesize_ast_test.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/src/summary/summary_common.dart
diff --git a/pkg/analyzer/test/src/summary/summary_common.dart b/pkg/analyzer/test/src/summary/summary_common.dart
index 0abc4de5b35a2dc00b3b77ee348220cf74c5f111..9c50c86312eb82873a8b6fb5bfbef0d08685c157 100644
--- a/pkg/analyzer/test/src/summary/summary_common.dart
+++ b/pkg/analyzer/test/src/summary/summary_common.dart
@@ -1823,6 +1823,27 @@ foo(a, b, c) {}
]);
}
+ test_constExpr_functionExpression_inConstructorInitializers() {
+ // Even though function expressions are not allowed in constant
+ // declarations, they might occur due to erroneous code, so make sure they
+ // function correctly.
+ UnlinkedExecutable executable = serializeClassText('''
+class C {
+ final x, y;
+ const C() : x = (() => 42), y = (() => 43);
+}
+''').executables[0];
+ expect(executable.localFunctions, hasLength(2));
+ _assertUnlinkedConst(executable.constantInitializers[0].expression,
+ isValidConst: false,
+ operators: [UnlinkedConstOperation.pushLocalFunctionReference],
+ ints: [0, 0]);
+ _assertUnlinkedConst(executable.constantInitializers[1].expression,
+ isValidConst: false,
+ operators: [UnlinkedConstOperation.pushLocalFunctionReference],
+ ints: [0, 1]);
+ }
+
test_constExpr_invokeConstructor_generic_named() {
UnlinkedVariable variable = serializeVariableText('''
class C<K, V> {
@@ -3471,6 +3492,33 @@ class C extends A {
operators: [UnlinkedConstOperation.pushInt], ints: [42]);
}
+ test_constructor_initializers_superInvocation_namedExpression() {
+ UnlinkedExecutable executable =
+ findExecutable('', executables: serializeClassText(r'''
+class A {
+ const A(a, {int b, int c});
+}
+class C extends A {
+ const C() : super(1, b: 2, c: 3);
+}
+''').executables);
+ expect(executable.constantInitializers, hasLength(1));
+ UnlinkedConstructorInitializer initializer =
+ executable.constantInitializers[0];
+ expect(
+ initializer.kind, UnlinkedConstructorInitializerKind.superInvocation);
+ expect(initializer.name, '');
+ expect(initializer.expression, isNull);
+ expect(initializer.arguments, hasLength(3));
+ _assertUnlinkedConst(initializer.arguments[0],
+ operators: [UnlinkedConstOperation.pushInt], ints: [1]);
+ _assertUnlinkedConst(initializer.arguments[1],
+ operators: [UnlinkedConstOperation.pushInt], ints: [2]);
+ _assertUnlinkedConst(initializer.arguments[2],
+ operators: [UnlinkedConstOperation.pushInt], ints: [3]);
+ expect(initializer.argumentNames, ['b', 'c']);
+ }
+
test_constructor_initializers_superInvocation_unnamed() {
UnlinkedExecutable executable =
findExecutable('ccc', executables: serializeClassText(r'''
@@ -3538,33 +3586,6 @@ class C {
expect(initializer.argumentNames, ['b', 'c']);
}
- test_constructor_initializers_superInvocation_namedExpression() {
- UnlinkedExecutable executable =
- findExecutable('', executables: serializeClassText(r'''
-class A {
- const A(a, {int b, int c});
-}
-class C extends A {
- const C() : super(1, b: 2, c: 3);
-}
-''').executables);
- expect(executable.constantInitializers, hasLength(1));
- UnlinkedConstructorInitializer initializer =
- executable.constantInitializers[0];
- expect(
- initializer.kind, UnlinkedConstructorInitializerKind.superInvocation);
- expect(initializer.name, '');
- expect(initializer.expression, isNull);
- expect(initializer.arguments, hasLength(3));
- _assertUnlinkedConst(initializer.arguments[0],
- operators: [UnlinkedConstOperation.pushInt], ints: [1]);
- _assertUnlinkedConst(initializer.arguments[1],
- operators: [UnlinkedConstOperation.pushInt], ints: [2]);
- _assertUnlinkedConst(initializer.arguments[2],
- operators: [UnlinkedConstOperation.pushInt], ints: [3]);
- expect(initializer.argumentNames, ['b', 'c']);
- }
-
test_constructor_initializers_thisInvocation_unnamed() {
UnlinkedExecutable executable =
findExecutable('named', executables: serializeClassText(r'''
« no previous file with comments | « pkg/analyzer/test/src/summary/resynthesize_ast_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698