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

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

Issue 1678753002: Summarize constructor initializers. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Updates for review comments. Created 4 years, 10 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/lib/src/summary/summarize_elements.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 a4e7be859fea628f9cebe27c191376dc865f2dc6..c7a55847155c68209e64c610c3d74e210261d7b1 100644
--- a/pkg/analyzer/test/src/summary/summary_common.dart
+++ b/pkg/analyzer/test/src/summary/summary_common.dart
@@ -2705,6 +2705,140 @@ class C {
expect(executable, isNull);
}
+ test_constructor_initializers_field() {
+ UnlinkedExecutable executable =
+ findExecutable('', executables: serializeClassText(r'''
+class C {
+ final x;
+ const C() : x = 42;
+}
+''').executables);
+ expect(executable.constantInitializers, hasLength(1));
+ UnlinkedConstructorInitializer initializer =
+ executable.constantInitializers[0];
+ expect(initializer.kind, UnlinkedConstructorInitializerKind.field);
+ expect(initializer.name, 'x');
+ _assertUnlinkedConst(initializer.expression,
+ operators: [UnlinkedConstOperation.pushInt], ints: [42]);
+ expect(initializer.arguments, isEmpty);
+ }
+
+ test_constructor_initializers_field_withParameter() {
+ UnlinkedExecutable executable =
+ findExecutable('', executables: serializeClassText(r'''
+class C {
+ final x;
+ const C(int p) : x = p;
+}
+''').executables);
+ expect(executable.constantInitializers, hasLength(1));
+ UnlinkedConstructorInitializer initializer =
+ executable.constantInitializers[0];
+ expect(initializer.kind, UnlinkedConstructorInitializerKind.field);
+ expect(initializer.name, 'x');
+ _assertUnlinkedConst(initializer.expression,
+ operators: [UnlinkedConstOperation.pushConstructorParameter],
+ strings: ['p']);
+ expect(initializer.arguments, isEmpty);
+ }
+
+ test_constructor_initializers_notConst() {
+ UnlinkedExecutable executable =
+ findExecutable('', executables: serializeClassText(r'''
+class C {
+ final x;
+ C() : x = 42;
+}
+''').executables);
+ expect(executable.constantInitializers, isEmpty);
+ }
+
+ test_constructor_initializers_superInvocation_named() {
+ UnlinkedExecutable executable =
+ findExecutable('', executables: serializeClassText(r'''
+class A {
+ const A.aaa(int p);
+}
+class C extends A {
+ const C() : super.aaa(42);
+}
+''').executables);
+ expect(executable.constantInitializers, hasLength(1));
+ UnlinkedConstructorInitializer initializer =
+ executable.constantInitializers[0];
+ expect(
+ initializer.kind, UnlinkedConstructorInitializerKind.superInvocation);
+ expect(initializer.name, 'aaa');
+ expect(initializer.expression, isNull);
+ expect(initializer.arguments, hasLength(1));
+ _assertUnlinkedConst(initializer.arguments[0],
+ operators: [UnlinkedConstOperation.pushInt], ints: [42]);
+ }
+
+ test_constructor_initializers_superInvocation_unnamed() {
+ UnlinkedExecutable executable =
+ findExecutable('ccc', executables: serializeClassText(r'''
+class A {
+ const A(int p);
+}
+class C extends A {
+ const C.ccc() : super(42);
+}
+''').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(1));
+ _assertUnlinkedConst(initializer.arguments[0],
+ operators: [UnlinkedConstOperation.pushInt], ints: [42]);
+ }
+
+ test_constructor_initializers_thisInvocation_named() {
+ UnlinkedExecutable executable =
+ findExecutable('', executables: serializeClassText(r'''
+class C {
+ const C() : this.named(1, 'bbb');
+ const C.named(int a, String b);
+}
+''').executables);
+ expect(executable.constantInitializers, hasLength(1));
+ UnlinkedConstructorInitializer initializer =
+ executable.constantInitializers[0];
+ expect(initializer.kind, UnlinkedConstructorInitializerKind.thisInvocation);
+ expect(initializer.name, 'named');
+ expect(initializer.expression, isNull);
+ expect(initializer.arguments, hasLength(2));
+ _assertUnlinkedConst(initializer.arguments[0],
+ operators: [UnlinkedConstOperation.pushInt], ints: [1]);
+ _assertUnlinkedConst(initializer.arguments[1],
+ operators: [UnlinkedConstOperation.pushString], strings: ['bbb']);
+ }
+
+ test_constructor_initializers_thisInvocation_unnamed() {
+ UnlinkedExecutable executable =
+ findExecutable('named', executables: serializeClassText(r'''
+class C {
+ const C.named() : this(1, 'bbb');
+ const C(int a, String b);
+}
+''').executables);
+ expect(executable.constantInitializers, hasLength(1));
+ UnlinkedConstructorInitializer initializer =
+ executable.constantInitializers[0];
+ expect(initializer.kind, UnlinkedConstructorInitializerKind.thisInvocation);
+ expect(initializer.name, '');
+ expect(initializer.expression, isNull);
+ expect(initializer.arguments, hasLength(2));
+ _assertUnlinkedConst(initializer.arguments[0],
+ operators: [UnlinkedConstOperation.pushInt], ints: [1]);
+ _assertUnlinkedConst(initializer.arguments[1],
+ operators: [UnlinkedConstOperation.pushString], strings: ['bbb']);
+ }
+
test_constructor_initializing_formal() {
UnlinkedExecutable executable = findExecutable('',
executables:
@@ -4866,10 +5000,9 @@ D d;''');
}
test_metadata_typeParameter_ofFunction() {
- checkAnnotationA(
- serializeExecutableText('const a = null; f<@a T>() {}')
- .typeParameters[0]
- .annotations);
+ checkAnnotationA(serializeExecutableText('const a = null; f<@a T>() {}')
+ .typeParameters[0]
+ .annotations);
}
test_metadata_typeParameter_ofTypedef() {
« no previous file with comments | « pkg/analyzer/lib/src/summary/summarize_elements.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698