From e7a048d12e64e7ab4ccb08d82f9ce9f0246698eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20von=20der=20Ahe=CC=81?= Date: Tue, 4 Dec 2018 09:11:02 +0000 Subject: [PATCH] Make constructors private MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Idf2775e07aca1db9e3fa856723e658306f51df37 Reviewed-on: https://dart-review.googlesource.com/c/85762 Commit-Queue: Peter von der Ahé Reviewed-by: Dmitry Stefantsov Auto-Submit: Peter von der Ahé --- .../lib/src/fasta/kernel/body_builder.dart | 18 ++-- .../lib/src/fasta/kernel/kernel_ast_api.dart | 13 +-- .../kernel/kernel_expression_generator.dart | 38 ++++---- .../kernel_expression_generator_impl.dart | 2 +- .../src/fasta/kernel/kernel_shadow_ast.dart | 94 +++++++++++++++---- 5 files changed, 106 insertions(+), 59 deletions(-) diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart index 41d8df881f1..2c1f64a8f47 100644 --- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart +++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart @@ -97,12 +97,7 @@ import 'expression_generator_helper.dart' show ExpressionGeneratorHelper; import 'forest.dart' show Forest; import 'kernel_shadow_ast.dart' as shadow - show - InvalidConstructorInvocationJudgment, - InvalidWriteJudgment, - SyntheticExpressionJudgment, - UnresolvedTargetInvocationJudgment, - UnresolvedVariableAssignmentJudgment; + show SyntheticExpressionJudgment, SyntheticWrapper; import 'redirecting_factory_body.dart' show @@ -4763,7 +4758,7 @@ abstract class BodyBuilder extends ScopeListener @override Expression wrapSyntheticExpression(Expression desugared, int charOffset) { - return new shadow.SyntheticExpressionJudgment(desugared) + return shadow.SyntheticWrapper.wrapSyntheticExpression(desugared) ..fileOffset = charOffset; } @@ -4776,7 +4771,7 @@ abstract class BodyBuilder extends ScopeListener @override Expression wrapInvalidConstructorInvocation(Expression desugared, Member constructor, Arguments arguments, int charOffset) { - return new shadow.InvalidConstructorInvocationJudgment( + return shadow.SyntheticWrapper.wrapInvalidConstructorInvocation( desugared, constructor, arguments) ..fileOffset = charOffset; } @@ -4784,21 +4779,22 @@ abstract class BodyBuilder extends ScopeListener @override Expression wrapInvalidWrite( Expression desugared, Expression expression, int charOffset) { - return new shadow.InvalidWriteJudgment(desugared, expression) + return shadow.SyntheticWrapper.wrapInvalidWrite(desugared, expression) ..fileOffset = charOffset; } @override Expression wrapUnresolvedTargetInvocation( Expression desugared, Arguments arguments, int charOffset) { - return new shadow.UnresolvedTargetInvocationJudgment(desugared, arguments) + return shadow.SyntheticWrapper.wrapUnresolvedTargetInvocation( + desugared, arguments) ..fileOffset = charOffset; } @override Expression wrapUnresolvedVariableAssignment( Expression desugared, bool isCompound, Expression rhs, int charOffset) { - return new shadow.UnresolvedVariableAssignmentJudgment( + return shadow.SyntheticWrapper.wrapUnresolvedVariableAssignment( desugared, isCompound, rhs) ..fileOffset = charOffset; } diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart index 0f54b2d0c3f..3bb2642fb51 100644 --- a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart @@ -91,34 +91,29 @@ export 'kernel_shadow_ast.dart' DeferredCheckJudgment, ExpressionStatementJudgment, FactoryConstructorInvocationJudgment, - ShadowFieldInitializer, ForInJudgment, FunctionDeclarationJudgment, FunctionNodeJudgment, - IfNullJudgment, IfJudgment, - IllegalAssignmentJudgment, - IndexAssignmentJudgment, + IfNullJudgment, InvalidSuperInitializerJudgment, - ShadowInvalidFieldInitializer, - ShadowInvalidInitializer, LabeledStatementJudgment, LoadLibraryTearOffJudgment, MethodInvocationJudgment, NamedFunctionExpressionJudgment, NullAwareMethodInvocationJudgment, NullAwarePropertyGetJudgment, - PropertyAssignmentJudgment, RedirectingInitializerJudgment, ReturnJudgment, + ShadowFieldInitializer, + ShadowInvalidFieldInitializer, + ShadowInvalidInitializer, ShadowLargeIntLiteral, - StaticAssignmentJudgment, SuperInitializerJudgment, SuperMethodInvocationJudgment, SuperPropertyGetJudgment, SwitchCaseJudgment, SwitchStatementJudgment, - VariableAssignmentJudgment, VariableDeclarationJudgment, VariableGetJudgment, YieldJudgment; diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart index 5952b75ab04..be45b5958bf 100644 --- a/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart @@ -86,8 +86,6 @@ import 'kernel_ast_api.dart' Constructor, DartType, Field, - IllegalAssignmentJudgment, - IndexAssignmentJudgment, Initializer, Let, LoadLibraryTearOffJudgment, @@ -96,10 +94,8 @@ import 'kernel_ast_api.dart' Name, NullAwarePropertyGetJudgment, Procedure, - PropertyAssignmentJudgment, PropertyGet, PropertySet, - StaticAssignmentJudgment, StaticSet, SuperMethodInvocation, SuperMethodInvocationJudgment, @@ -107,7 +103,6 @@ import 'kernel_ast_api.dart' SuperPropertySet, TreeNode, TypeParameter, - VariableAssignmentJudgment, VariableDeclaration, VariableDeclarationJudgment, VariableGet, @@ -123,6 +118,9 @@ import 'kernel_builder.dart' PrefixBuilder, TypeDeclarationBuilder; +import 'kernel_shadow_ast.dart' as shadow + show PropertyAssignmentJudgment, SyntheticWrapper; + part 'kernel_expression_generator_impl.dart'; abstract class KernelExpressionGenerator implements ExpressionGenerator { @@ -291,7 +289,7 @@ abstract class KernelExpressionGenerator implements ExpressionGenerator { /// Creates a data structure for tracking the desugaring of a complex /// assignment expression whose right hand side is [rhs]. ComplexAssignmentJudgment startComplexAssignment(Expression rhs) => - new IllegalAssignmentJudgment(rhs); + shadow.SyntheticWrapper.wrapIllegalAssignment(rhs); } abstract class KernelGenerator = Generator with KernelExpressionGenerator; @@ -340,8 +338,10 @@ class KernelVariableUseGenerator extends KernelGenerator } @override - ComplexAssignmentJudgment startComplexAssignment(Expression rhs) => - new VariableAssignmentJudgment(rhs); + ComplexAssignmentJudgment startComplexAssignment(Expression rhs) { + return shadow.SyntheticWrapper.wrapVariableAssignment(rhs) + ..fileOffset = offsetForToken(token); + } @override void printOn(StringSink sink) { @@ -385,7 +385,7 @@ class KernelPropertyAccessGenerator extends KernelGenerator @override ComplexAssignmentJudgment startComplexAssignment(Expression rhs) => - new PropertyAssignmentJudgment(receiver, rhs); + shadow.SyntheticWrapper.wrapPropertyAssignment(receiver, rhs); @override void printOn(StringSink sink) { @@ -498,7 +498,7 @@ class KernelThisPropertyAccessGenerator extends KernelGenerator @override ComplexAssignmentJudgment startComplexAssignment(Expression rhs) => - new PropertyAssignmentJudgment(null, rhs); + shadow.SyntheticWrapper.wrapPropertyAssignment(null, rhs); @override void printOn(StringSink sink) { @@ -572,7 +572,8 @@ class KernelNullAwarePropertyAccessGenerator extends KernelGenerator ..fileOffset = offset; if (complexAssignment != null) { body = makeLet(receiver, nullAwareGuard); - PropertyAssignmentJudgment kernelPropertyAssign = complexAssignment; + shadow.PropertyAssignmentJudgment kernelPropertyAssign = + complexAssignment; kernelPropertyAssign.nullAwareGuard = nullAwareGuard; kernelPropertyAssign.desugared = body; return kernelPropertyAssign; @@ -589,7 +590,7 @@ class KernelNullAwarePropertyAccessGenerator extends KernelGenerator @override ComplexAssignmentJudgment startComplexAssignment(Expression rhs) => - new PropertyAssignmentJudgment(receiverExpression, rhs); + shadow.SyntheticWrapper.wrapPropertyAssignment(receiverExpression, rhs); @override void printOn(StringSink sink) { @@ -671,7 +672,7 @@ class KernelSuperPropertyAccessGenerator extends KernelGenerator @override ComplexAssignmentJudgment startComplexAssignment(Expression rhs) => - new PropertyAssignmentJudgment(null, rhs, isSuper: true); + shadow.SyntheticWrapper.wrapPropertyAssignment(null, rhs, isSuper: true); @override void printOn(StringSink sink) { @@ -810,7 +811,7 @@ class KernelIndexedAccessGenerator extends KernelGenerator @override ComplexAssignmentJudgment startComplexAssignment(Expression rhs) => - new IndexAssignmentJudgment(receiver, index, rhs); + shadow.SyntheticWrapper.wrapIndexAssignment(receiver, index, rhs); @override void printOn(StringSink sink) { @@ -934,7 +935,7 @@ class KernelThisIndexedAccessGenerator extends KernelGenerator @override ComplexAssignmentJudgment startComplexAssignment(Expression rhs) => - new IndexAssignmentJudgment(null, index, rhs); + shadow.SyntheticWrapper.wrapIndexAssignment(null, index, rhs); @override void printOn(StringSink sink) { @@ -1071,7 +1072,8 @@ class KernelSuperIndexedAccessGenerator extends KernelGenerator @override ComplexAssignmentJudgment startComplexAssignment(Expression rhs) => - new IndexAssignmentJudgment(null, index, rhs, isSuper: true); + shadow.SyntheticWrapper.wrapIndexAssignment(null, index, rhs, + isSuper: true); @override void printOn(StringSink sink) { @@ -1151,7 +1153,7 @@ class KernelStaticAccessGenerator extends KernelGenerator @override ComplexAssignmentJudgment startComplexAssignment(Expression rhs) => - new StaticAssignmentJudgment(rhs); + shadow.SyntheticWrapper.wrapStaticAssignment(rhs); @override void printOn(StringSink sink) { @@ -1235,7 +1237,7 @@ class KernelDeferredAccessGenerator extends KernelGenerator @override ComplexAssignmentJudgment startComplexAssignment(Expression rhs) => - new StaticAssignmentJudgment(rhs); + shadow.SyntheticWrapper.wrapStaticAssignment(rhs); } class KernelTypeUseGenerator extends KernelReadOnlyAccessGenerator diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator_impl.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator_impl.dart index ae6fc90abb8..f67e700d660 100644 --- a/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator_impl.dart +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator_impl.dart @@ -407,7 +407,7 @@ class ParenthesizedExpressionGenerator extends KernelReadOnlyAccessGenerator { @override ComplexAssignmentJudgment startComplexAssignment(Expression rhs) { - return new IllegalAssignmentJudgment(rhs, + return shadow.SyntheticWrapper.wrapIllegalAssignment(rhs, assignmentOffset: offsetForToken(token)); } diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart index 88ad9542663..32ec3c54767 100644 --- a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart @@ -381,7 +381,7 @@ abstract class ComplexAssignmentJudgment extends SyntheticExpressionJudgment { /// pre-decrement. bool isPreIncDec = false; - ComplexAssignmentJudgment(this.rhs) : super(null); + ComplexAssignmentJudgment._(this.rhs) : super._(null); String toString() { var parts = _getToStringParts(); @@ -513,9 +513,9 @@ abstract class ComplexAssignmentJudgmentWithReceiver /// Indicates whether this assignment uses `super`. final bool isSuper; - ComplexAssignmentJudgmentWithReceiver( + ComplexAssignmentJudgmentWithReceiver._( this.receiver, Expression rhs, this.isSuper) - : super(rhs); + : super._(rhs); @override List _getToStringParts() { @@ -845,8 +845,8 @@ class IllegalAssignmentJudgment extends ComplexAssignmentJudgment { /// If `-1`, then there is no separate location for invalid assignment. final int assignmentOffset; - IllegalAssignmentJudgment(Expression rhs, {this.assignmentOffset: -1}) - : super(rhs) { + IllegalAssignmentJudgment._(Expression rhs, {this.assignmentOffset: -1}) + : super._(rhs) { rhs.parent = this; } @@ -867,9 +867,9 @@ class IndexAssignmentJudgment extends ComplexAssignmentJudgmentWithReceiver { /// In an assignment to an index expression, the index expression. final Expression index; - IndexAssignmentJudgment(Expression receiver, this.index, Expression rhs, + IndexAssignmentJudgment._(Expression receiver, this.index, Expression rhs, {bool isSuper: false}) - : super(receiver, rhs, isSuper); + : super._(receiver, rhs, isSuper); Arguments _getInvocationArguments( ShadowTypeInferrer inferrer, Expression invocation) { @@ -1235,9 +1235,9 @@ class PropertyAssignmentJudgment extends ComplexAssignmentJudgmentWithReceiver { /// expression that guards the access; otherwise `null`. ConditionalExpression nullAwareGuard; - PropertyAssignmentJudgment(Expression receiver, Expression rhs, + PropertyAssignmentJudgment._(Expression receiver, Expression rhs, {bool isSuper: false}) - : super(receiver, rhs, isSuper); + : super._(receiver, rhs, isSuper); @override List _getToStringParts() { @@ -1306,7 +1306,7 @@ abstract class StatementJudgment extends Statement { /// Concrete shadow object representing an assignment to a static variable. class StaticAssignmentJudgment extends ComplexAssignmentJudgment { - StaticAssignmentJudgment(Expression rhs) : super(rhs); + StaticAssignmentJudgment._(Expression rhs) : super._(rhs); @override DartType _getWriteType(ShadowTypeInferrer inferrer) { @@ -1418,9 +1418,9 @@ class InvalidConstructorInvocationJudgment extends SyntheticExpressionJudgment { final Member constructor; final Arguments arguments; - InvalidConstructorInvocationJudgment( + InvalidConstructorInvocationJudgment._( kernel.Expression desugared, this.constructor, this.arguments) - : super(desugared); + : super._(desugared); ArgumentsJudgment get argumentJudgments => arguments; @@ -1435,8 +1435,8 @@ class InvalidConstructorInvocationJudgment extends SyntheticExpressionJudgment { class InvalidWriteJudgment extends SyntheticExpressionJudgment { final Expression expression; - InvalidWriteJudgment(kernel.Expression desugared, this.expression) - : super(desugared); + InvalidWriteJudgment._(kernel.Expression desugared, this.expression) + : super._(desugared); @override void acceptInference(InferenceVistor visitor, DartType typeContext) { @@ -1452,7 +1452,7 @@ class InvalidWriteJudgment extends SyntheticExpressionJudgment { class SyntheticExpressionJudgment extends Let implements ExpressionJudgment { DartType inferredType; - SyntheticExpressionJudgment(Expression desugared) + SyntheticExpressionJudgment._(Expression desugared) : super(new VariableDeclaration('_', initializer: new NullLiteral()), desugared); @@ -1756,7 +1756,7 @@ class ShadowTypePromoter extends TypePromoterImpl { } class VariableAssignmentJudgment extends ComplexAssignmentJudgment { - VariableAssignmentJudgment(Expression rhs) : super(rhs); + VariableAssignmentJudgment._(Expression rhs) : super._(rhs); @override DartType _getWriteType(ShadowTypeInferrer inferrer) { @@ -1855,9 +1855,9 @@ class VariableDeclarationJudgment extends VariableDeclaration class UnresolvedTargetInvocationJudgment extends SyntheticExpressionJudgment { final ArgumentsJudgment argumentsJudgment; - UnresolvedTargetInvocationJudgment( + UnresolvedTargetInvocationJudgment._( kernel.Expression desugared, this.argumentsJudgment) - : super(desugared); + : super._(desugared); @override void acceptInference(InferenceVistor visitor, DartType typeContext) { @@ -1871,9 +1871,9 @@ class UnresolvedVariableAssignmentJudgment extends SyntheticExpressionJudgment { final bool isCompound; final Expression rhs; - UnresolvedVariableAssignmentJudgment( + UnresolvedVariableAssignmentJudgment._( kernel.Expression desugared, this.isCompound, this.rhs) - : super(desugared); + : super._(desugared); @override void acceptInference(InferenceVistor visitor, DartType typeContext) { @@ -1976,3 +1976,57 @@ class _UnfinishedCascade extends Expression { visitChildren(v) => unsupported("visitChildren", -1, null); } + +class SyntheticWrapper { + static Expression wrapIllegalAssignment(Expression rhs, + {int assignmentOffset: -1}) { + return new IllegalAssignmentJudgment._(rhs, + assignmentOffset: assignmentOffset); + } + + static Expression wrapIndexAssignment( + Expression receiver, Expression index, Expression rhs, + {bool isSuper: false}) { + return new IndexAssignmentJudgment._(receiver, index, rhs, + isSuper: isSuper); + } + + static Expression wrapInvalidConstructorInvocation( + kernel.Expression desugared, Member constructor, Arguments arguments) { + return new InvalidConstructorInvocationJudgment._( + desugared, constructor, arguments); + } + + static Expression wrapInvalidWrite( + Expression desugared, Expression expression) { + return new InvalidWriteJudgment._(desugared, expression); + } + + static Expression wrapPropertyAssignment(Expression receiver, Expression rhs, + {bool isSuper: false}) { + return new PropertyAssignmentJudgment._(receiver, rhs, isSuper: isSuper); + } + + static Expression wrapStaticAssignment(Expression rhs) { + return new StaticAssignmentJudgment._(rhs); + } + + static Expression wrapSyntheticExpression(Expression desugared) { + return new SyntheticExpressionJudgment._(desugared); + } + + static Expression wrapUnresolvedTargetInvocation( + Expression desugared, Arguments arguments) { + return new UnresolvedTargetInvocationJudgment._(desugared, arguments); + } + + static Expression wrapUnresolvedVariableAssignment( + Expression desugared, bool isCompound, Expression rhs) { + return new UnresolvedVariableAssignmentJudgment._( + desugared, isCompound, rhs); + } + + static Expression wrapVariableAssignment(Expression rhs) { + return new VariableAssignmentJudgment._(rhs); + } +}