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

Unified Diff: pkg/analyzer/lib/src/summary/idl.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/format.dart ('k') | pkg/analyzer/lib/src/summary/resynthesize.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/summary/idl.dart
diff --git a/pkg/analyzer/lib/src/summary/idl.dart b/pkg/analyzer/lib/src/summary/idl.dart
index 51cb09130fd07285086c6edca523b2ce3a4bb6f9..c911061fdc3c5c367e992fffe9782cf97daea261 100644
--- a/pkg/analyzer/lib/src/summary/idl.dart
+++ b/pkg/analyzer/lib/src/summary/idl.dart
@@ -619,6 +619,12 @@ enum UnlinkedConstOperation {
pushNull,
/**
+ * Push the value of the constant constructor parameter with
+ * the name obtained from [UnlinkedConst.strings].
+ */
+ pushConstructorParameter,
+
+ /**
* Evaluate a (potentially qualified) identifier expression and push the
* resulting value onto the stack. The identifier to be evaluated is
* obtained from [UnlinkedConst.references].
@@ -838,6 +844,56 @@ enum UnlinkedConstOperation {
}
/**
+ * Unlinked summary information about a constructor initializer.
+ */
+abstract class UnlinkedConstructorInitializer extends base.SummaryClass {
+ /**
+ * The kind of the constructor initializer (field, redirect, super).
+ */
+ UnlinkedConstructorInitializerKind get kind;
+
+ /**
+ * If [kind] is `field`, the name of the field declared in the class. If
+ * [kind] is `thisInvocation`, the name of the constructor, declared in this
+ * class, to redirect to. If [kind] is `superInvocation`, the name of the
+ * constructor, declared in the superclass, to invoke.
+ */
+ String get name;
+
+ /**
+ * If [kind] is `field`, the expression of the field initializer.
+ * Otherwise `null`.
+ */
+ UnlinkedConst get expression;
+
+ /**
+ * If [kind] is `thisInvocation` or `superInvocation`, the arguments of the
+ * invocation. Otherwise empty.
+ */
+ List<UnlinkedConst> get arguments;
+}
+
+/**
+ * Enum used to indicate the kind of an constructor initializer.
+ */
+enum UnlinkedConstructorInitializerKind {
+ /**
+ * Initialization of a field.
+ */
+ field,
+
+ /**
+ * Invocation of a constructor in the same class.
+ */
+ thisInvocation,
+
+ /**
+ * Invocation of a superclass' constructor.
+ */
+ superInvocation
+}
+
+/**
* Unlinked summary information about a documentation comment.
*/
abstract class UnlinkedDocumentationComment extends base.SummaryClass {
@@ -1007,12 +1063,18 @@ abstract class UnlinkedExecutable extends base.SummaryClass {
/**
* If this executable's return type is inferable, nonzero slot id
- * identifying which entry in [LinkedLibrary.types] contains the inferred
- * return type. If there is no matching entry in [LinkedLibrary.types], then
+ * identifying which entry in [LinkedUnit.types] contains the inferred
+ * return type. If there is no matching entry in [LinkedUnit.types], then
* no return type was inferred for this variable, so its static type is
* `dynamic`.
*/
int get inferredReturnTypeSlot;
+
+ /**
+ * If a constant [UnlinkedExecutableKind.constructor], the constructor
+ * initializers. Otherwise empty.
+ */
+ List<UnlinkedConstructorInitializer> get constantInitializers;
}
/**
« no previous file with comments | « pkg/analyzer/lib/src/summary/format.dart ('k') | pkg/analyzer/lib/src/summary/resynthesize.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698