diff --git a/pkg/front_end/lib/src/fragment/constructor/body_builder_context.dart b/pkg/front_end/lib/src/fragment/constructor/body_builder_context.dart index 379ea35f34d..b0b7a5d5811 100644 --- a/pkg/front_end/lib/src/fragment/constructor/body_builder_context.dart +++ b/pkg/front_end/lib/src/fragment/constructor/body_builder_context.dart @@ -139,12 +139,10 @@ class ConstructorBodyBuilderContext extends BodyBuilderContext { InitializerInferenceResult inferInitializer({ required TypeInferrer typeInferrer, required Uri fileUri, - required ConstantContext constantContext, required Initializer initializer, }) { return typeInferrer.inferInitializer( fileUri: fileUri, - constantContext: constantContext, constructorBuilder: _builder, initializer: initializer, ); diff --git a/pkg/front_end/lib/src/fragment/factory/encoding.dart b/pkg/front_end/lib/src/fragment/factory/encoding.dart index 0e5bde30133..f7d7ef0d206 100644 --- a/pkg/front_end/lib/src/fragment/factory/encoding.dart +++ b/pkg/front_end/lib/src/fragment/factory/encoding.dart @@ -7,7 +7,6 @@ import 'package:kernel/class_hierarchy.dart'; import 'package:kernel/type_algebra.dart'; import 'package:kernel/type_environment.dart'; -import '../../base/constant_context.dart'; import '../../base/identifiers.dart'; import '../../base/lookup_result.dart'; import '../../base/messages.dart'; @@ -282,7 +281,6 @@ class FactoryEncoding implements InferredTypeListener { targetType: target.function!.computeFunctionType( Nullability.nonNullable, ), - constantContext: ConstantContext.none, ); if (typeArguments == null) { assert( diff --git a/pkg/front_end/lib/src/fragment/field/declaration.dart b/pkg/front_end/lib/src/fragment/field/declaration.dart index 7e049eef1f4..e27712af9d7 100644 --- a/pkg/front_end/lib/src/fragment/field/declaration.dart +++ b/pkg/front_end/lib/src/fragment/field/declaration.dart @@ -10,7 +10,6 @@ import 'package:kernel/core_types.dart'; import 'package:kernel/type_environment.dart'; import '../../api_prototype/experimental_flags.dart'; -import '../../base/constant_context.dart'; import '../../base/messages.dart'; import '../../base/problems.dart'; import '../../base/scope.dart'; @@ -314,7 +313,6 @@ class RegularFieldDeclaration required TypeInferrer typeInferrer, required CoreTypes coreTypes, required Uri fileUri, - required ConstantContext constantContext, Expression? initializer, }) { if (initializer != null) { @@ -322,7 +320,6 @@ class RegularFieldDeclaration initializer = typeInferrer .inferFieldInitializer( fileUri: fileUri, - constantContext: constantContext, declaredType: fieldType, initializer: initializer, ) @@ -920,7 +917,6 @@ abstract class FieldFragmentDeclaration { required TypeInferrer typeInferrer, required CoreTypes coreTypes, required Uri fileUri, - required ConstantContext constantContext, Expression? initializer, }); diff --git a/pkg/front_end/lib/src/fragment/primary_constructor_field.dart b/pkg/front_end/lib/src/fragment/primary_constructor_field.dart index a083a9eef02..3a16a79f105 100644 --- a/pkg/front_end/lib/src/fragment/primary_constructor_field.dart +++ b/pkg/front_end/lib/src/fragment/primary_constructor_field.dart @@ -130,7 +130,6 @@ class PrimaryConstructorFieldDeclaration required TypeInferrer typeInferrer, required CoreTypes coreTypes, required Uri fileUri, - required ConstantContext constantContext, Expression? initializer, }) { if (initializer != null) { @@ -138,7 +137,6 @@ class PrimaryConstructorFieldDeclaration initializer = typeInferrer .inferFieldInitializer( fileUri: fileUri, - constantContext: constantContext, declaredType: fieldType, initializer: initializer, ) diff --git a/pkg/front_end/lib/src/kernel/body_builder.dart b/pkg/front_end/lib/src/kernel/body_builder.dart index 139bfc761b8..36fba08680f 100644 --- a/pkg/front_end/lib/src/kernel/body_builder.dart +++ b/pkg/front_end/lib/src/kernel/body_builder.dart @@ -365,7 +365,7 @@ class BodyBuilderImpl extends StackListenerImpl required this.uri, required this.assignedVariables, required this.typeEnvironment, - required this.constantContext, + required ConstantContext constantContext, }) : _context = context, forest = const Forest(), enableNative = libraryBuilder.loader.target.backendTarget.enableNative( @@ -377,6 +377,7 @@ class BodyBuilderImpl extends StackListenerImpl benchmarker = libraryBuilder.loader.target.benchmarker, _localScopes = new LocalStack([enclosingScope]), _labelScopes = new LocalStack([new LabelScopeImpl()]) { + this.constantContext = constantContext; if (formalParameterScope != null) { for (VariableBuilder builder in formalParameterScope!.localVariables) { assignedVariables.declare(builder.variable!); @@ -6368,13 +6369,6 @@ class BodyBuilderImpl extends StackListenerImpl void beginNewExpression(Token token) { debugEvent("beginNewExpression"); super.push(constantContext); - if (constantContext != ConstantContext.none) { - addProblem( - cfe.codeNotConstantExpression.withArgumentsOld('New expression'), - token.charOffset, - token.length, - ); - } constantContext = ConstantContext.none; } @@ -6416,6 +6410,19 @@ class BodyBuilderImpl extends StackListenerImpl inMetadata: false, inImplicitCreationContext: false, ); + if (constantContext != ConstantContext.none) { + pop(); // Pop the created new expression. + push( + buildProblem( + message: cfe.codeNotConstantExpression.withArgumentsOld( + 'New expression', + ), + fileUri: uri, + fileOffset: token.charOffset, + length: token.length, + ), + ); + } } void _buildConstructorReferenceInvocation( diff --git a/pkg/front_end/lib/src/kernel/body_builder_context.dart b/pkg/front_end/lib/src/kernel/body_builder_context.dart index 064da7b9239..24c79cea2d9 100644 --- a/pkg/front_end/lib/src/kernel/body_builder_context.dart +++ b/pkg/front_end/lib/src/kernel/body_builder_context.dart @@ -375,7 +375,6 @@ abstract class BodyBuilderContext { InitializerInferenceResult inferInitializer({ required TypeInferrer typeInferrer, required Uri fileUri, - required ConstantContext constantContext, required Initializer initializer, }) { throw new UnsupportedError('${runtimeType}.inferInitializer'); diff --git a/pkg/front_end/lib/src/kernel/forest.dart b/pkg/front_end/lib/src/kernel/forest.dart index 6f806d41935..a18947d8fb1 100644 --- a/pkg/front_end/lib/src/kernel/forest.dart +++ b/pkg/front_end/lib/src/kernel/forest.dart @@ -6,9 +6,7 @@ import 'package:kernel/ast.dart'; import 'package:kernel/src/printer.dart'; import '../base/problems.dart' show unsupported; - import '../type_inference/type_schema.dart'; - import 'collections.dart' show ForElement, @@ -24,7 +22,6 @@ import 'collections.dart' PatternForElement, PatternForMapEntry, SpreadElement; - import 'internal_ast.dart'; /// A shadow tree factory. diff --git a/pkg/front_end/lib/src/kernel/internal_ast.dart b/pkg/front_end/lib/src/kernel/internal_ast.dart index e7c11635e8c..da3b2e1c7a2 100644 --- a/pkg/front_end/lib/src/kernel/internal_ast.dart +++ b/pkg/front_end/lib/src/kernel/internal_ast.dart @@ -453,12 +453,14 @@ class FactoryConstructorInvocation extends InternalExpression { bool hasBeenInferred = false; final Procedure target; ArgumentsImpl arguments; + + /// If `true`, this invocation is constant, either explicit or inferred. final bool isConst; FactoryConstructorInvocation( this.target, this.arguments, { - this.isConst = false, + required this.isConst, }) { arguments.parent = this; } @@ -548,13 +550,15 @@ class TypeAliasedFactoryInvocation extends InternalExpression { final TypeAliasBuilder typeAliasBuilder; final Procedure target; ArgumentsImpl arguments; + + /// If `true`, this invocation is constant, either explicit or inferred. final bool isConst; TypeAliasedFactoryInvocation( this.typeAliasBuilder, this.target, this.arguments, { - this.isConst = false, + required this.isConst, }) { arguments.parent = this; } @@ -4456,6 +4460,8 @@ class DotShorthandInvocation extends InternalExpression { final Name name; final int nameOffset; final ArgumentsImpl arguments; + + /// If `true`, this invocation is constant, either explicit or inferred. final bool isConst; DotShorthandInvocation( diff --git a/pkg/front_end/lib/src/kernel/resolver.dart b/pkg/front_end/lib/src/kernel/resolver.dart index 52da7db3415..9b983404ce0 100644 --- a/pkg/front_end/lib/src/kernel/resolver.dart +++ b/pkg/front_end/lib/src/kernel/resolver.dart @@ -122,14 +122,13 @@ class Resolver { annotatable.addAnnotation(expression); } context.inferSingleTargetAnnotation( - constantContext: constantContext, singleTarget: new SingleTargetAnnotations( annotatable, indicesOfAnnotationsToBeInferred, ), ); // TODO(johnniwinther): We need to process annotations within annotations. - context.performBacklog(null, constantContext); + context.performBacklog(null); for (Annotation annotation in annotations) { annotation.expression = @@ -211,7 +210,6 @@ class Resolver { problemReporting: problemReporting, libraryFeatures: libraryFeatures, typeEnvironment: context.typeEnvironment, - constantContext: constantContext, target: constructorBuilder.invokeTarget, arguments: arguments, fileUri: fileUri, @@ -220,14 +218,13 @@ class Resolver { ExpressionInferenceResult inferenceResult = context.typeInferrer .inferFieldInitializer( fileUri: fileUri, - constantContext: constantContext, declaredType: const UnknownType(), initializer: initializer, ); initializer = inferenceResult.expression; fieldType = inferenceResult.inferredType; } - context.performBacklog(result?.annotations, constantContext); + context.performBacklog(result?.annotations); return (initializer, fieldType); } @@ -267,7 +264,6 @@ class Resolver { ); DartType inferredType = context.typeInferrer.inferImplicitFieldType( fileUri: fileUri, - constantContext: constantContext, initializer: result.initializer, ); // TODO(johnniwinther): We through away the initializer and don't process @@ -307,12 +303,11 @@ class Resolver { Expression initializer = context.typeInferrer .inferFieldInitializer( fileUri: fileUri, - constantContext: constantContext, declaredType: fieldType, initializer: result.initializer, ) .expression; - context.performBacklog(result.annotations, constantContext); + context.performBacklog(result.annotations); return initializer; } @@ -359,11 +354,10 @@ class Resolver { typeInferrer: context.typeInferrer, coreTypes: _coreTypes, fileUri: fileUri, - constantContext: constantContext, initializer: initializer, ); } - context.performBacklog(result.annotations, constantContext); + context.performBacklog(result.annotations); } void buildFunctionBody({ @@ -430,7 +424,7 @@ class Resolver { constantContext: constantContext, needsImplicitSuperInitializer: result.needsImplicitSuperInitializer, ); - context.performBacklog(result.annotations, constantContext); + context.performBacklog(result.annotations); } // Coverage-ignore(suite): Not run. on DebugAbort { @@ -510,7 +504,7 @@ class Resolver { initializers: initializers, ); } - context.performBacklog(result.annotations, constantContext); + context.performBacklog(result.annotations); } List? buildInitializersUnfinished({ @@ -581,11 +575,10 @@ class Resolver { annotatable.addAnnotation(expression); } context.inferSingleTargetAnnotation( - constantContext: constantContext, singleTarget: new SingleTargetAnnotations(annotatable), ); List expressions = annotatable.annotations; - context.performBacklog(result.annotations, constantContext); + context.performBacklog(result.annotations); return expressions; } @@ -620,9 +613,8 @@ class Resolver { initializer: result.initializer, declaredType: declaredType, hasDeclaredInitializer: hasDeclaredInitializer, - constantContext: constantContext, ); - context.performBacklog(result.annotations, constantContext); + context.performBacklog(result.annotations); return initializer; } @@ -686,7 +678,7 @@ class Resolver { needsImplicitSuperInitializer: bodyBuilderContext .needsImplicitSuperInitializer(_coreTypes), ); - context.performBacklog(result.annotations, constantContext); + context.performBacklog(result.annotations); } // Coverage-ignore(suite): Not run. on DebugAbort { @@ -739,7 +731,7 @@ class Resolver { ); BuildRedirectingFactoryMethodResult result = bodyBuilder .buildRedirectingFactoryMethod(token: token, metadata: metadata); - context.performBacklog(result.annotations, constantContext); + context.performBacklog(result.annotations); _benchmarker // Coverage-ignore(suite): Not run. ?.endSubdivide(); @@ -854,7 +846,6 @@ class Resolver { fileUri: fileUri, fileOffset: fileOffset, returnType: const DynamicType(), - constantContext: constantContext, asyncMarker: AsyncMarker.Sync, body: fakeReturn, expressionEvaluationHelper: expressionEvaluationHelper, @@ -864,7 +855,7 @@ class Resolver { "Previously implicit assumption about inferFunctionBody " "not returning anything different.", ); - context.performBacklog(result.annotations, constantContext); + context.performBacklog(result.annotations); return fakeReturn.expression!; } @@ -873,7 +864,6 @@ class Resolver { required ProblemReporting problemReporting, required LibraryFeatures libraryFeatures, required TypeEnvironment typeEnvironment, - required ConstantContext constantContext, required Member target, required ArgumentsImpl arguments, required Uri fileUri, @@ -1308,7 +1298,6 @@ class Resolver { initializers.length, (index) => bodyBuilderContext.inferInitializer( typeInferrer: context.typeInferrer, - constantContext: constantContext, fileUri: fileUri, initializer: initializers[index], ), @@ -1585,7 +1574,6 @@ class Resolver { .inferInitializer( typeInferrer: context.typeInferrer, fileUri: fileUri, - constantContext: constantContext, initializer: initializer, ); if (!bodyBuilderContext.addInferredInitializer( @@ -1700,7 +1688,6 @@ class Resolver { initializer: initializer, declaredType: originParameter.type, hasDeclaredInitializer: parameter.hasDeclaredInitializer, - constantContext: constantContext, ); originParameter.initializer = initializer..parent = originParameter; if (initializer is InvalidExpression) { @@ -1749,7 +1736,6 @@ class Resolver { fileUri: fileUri, fileOffset: bodyBuilderContext.memberNameOffset, returnType: bodyBuilderContext.returnTypeContext, - constantContext: constantContext, asyncMarker: asyncModifier, body: body, ); diff --git a/pkg/front_end/lib/src/kernel/resolver_helpers.dart b/pkg/front_end/lib/src/kernel/resolver_helpers.dart index 033166fa3c8..2d17825479e 100644 --- a/pkg/front_end/lib/src/kernel/resolver_helpers.dart +++ b/pkg/front_end/lib/src/kernel/resolver_helpers.dart @@ -120,7 +120,6 @@ class _ResolverContext { /// If [indices] is provided, only the annotations at the given indices are /// inferred. Otherwise all annotations are inferred. void _inferAnnotations({ - required ConstantContext constantContext, required Annotatable annotatable, List? indices, }) { @@ -128,35 +127,25 @@ class _ResolverContext { fileUri: fileUri, annotatable: annotatable, indices: indices, - // TODO(johnniwinther): Should this always be implicit? - constantContext: constantContext, ); } void inferSingleTargetAnnotation({ - required ConstantContext constantContext, required SingleTargetAnnotations singleTarget, }) { _inferAnnotations( - constantContext: constantContext, annotatable: singleTarget.target, indices: singleTarget.indicesOfAnnotationsToBeInferred, ); } - void _inferPendingAnnotations({ - required ConstantContext constantContext, - required PendingAnnotations annotations, - }) { + void _inferPendingAnnotations({required PendingAnnotations annotations}) { List? singleTargetAnnotations = annotations.singleTargetAnnotations; if (singleTargetAnnotations != null) { for (int i = 0; i < singleTargetAnnotations.length; i++) { SingleTargetAnnotations singleTarget = singleTargetAnnotations[i]; - inferSingleTargetAnnotation( - constantContext: constantContext, - singleTarget: singleTarget, - ); + inferSingleTargetAnnotation(singleTarget: singleTarget); } } @@ -168,10 +157,7 @@ class _ResolverContext { List targets = multiTarget.targets; Annotatable firstTarget = targets.first; List annotations = firstTarget.annotations; - _inferAnnotations( - constantContext: constantContext, - annotatable: firstTarget, - ); + _inferAnnotations(annotatable: firstTarget); for (int i = 1; i < targets.length; i++) { Annotatable target = targets[i]; for (int i = 0; i < annotations.length; i++) { @@ -182,15 +168,9 @@ class _ResolverContext { } } - void performBacklog( - PendingAnnotations? annotations, - ConstantContext constantContext, - ) { + void performBacklog(PendingAnnotations? annotations) { if (annotations != null) { - _inferPendingAnnotations( - constantContext: constantContext, - annotations: annotations, - ); + _inferPendingAnnotations(annotations: annotations); } libraryBuilder.checkPendingBoundsChecks(typeEnvironment); } diff --git a/pkg/front_end/lib/src/type_inference/inference_visitor.dart b/pkg/front_end/lib/src/type_inference/inference_visitor.dart index 3a76506e749..f7474aabd18 100644 --- a/pkg/front_end/lib/src/type_inference/inference_visitor.dart +++ b/pkg/front_end/lib/src/type_inference/inference_visitor.dart @@ -23,7 +23,6 @@ import 'package:kernel/type_algebra.dart'; import '../api_prototype/experimental_flags.dart'; import '../base/compiler_context.dart'; -import '../base/constant_context.dart'; import '../base/instrumentation.dart' show InstrumentationValueForMember, @@ -197,7 +196,6 @@ class InferenceVisitorImpl extends InferenceVisitorBase InferenceVisitorImpl( super.inferrer, super.fileUri, - super.constantContext, this._constructorBuilder, this.operations, this.typeAnalyzerOptions, @@ -2620,7 +2618,6 @@ class InferenceVisitorImpl extends InferenceVisitorBase if (result != null) { return result; } - isConst |= constantContext != ConstantContext.none; if (target is Constructor) { if (isConst && !target.isConst) { // Coverage-ignore-block(suite): Not run. @@ -2645,6 +2642,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase } else { Procedure procedure = target as Procedure; if (isConst && !procedure.isConst) { + // Coverage-ignore-block(suite): Not run. if (procedure.isExtensionTypeMember) { // Both generative constructors and factory constructors from // extension type declarations are encoded as procedures so we use diff --git a/pkg/front_end/lib/src/type_inference/inference_visitor_base.dart b/pkg/front_end/lib/src/type_inference/inference_visitor_base.dart index e243fe9e9a5..118673091b1 100644 --- a/pkg/front_end/lib/src/type_inference/inference_visitor_base.dart +++ b/pkg/front_end/lib/src/type_inference/inference_visitor_base.dart @@ -23,7 +23,6 @@ import 'package:kernel/type_environment.dart'; import '../api_prototype/experimental_flags.dart'; import '../api_prototype/lowering_predicates.dart'; import '../base/compiler_context.dart'; -import '../base/constant_context.dart'; import '../base/instrumentation.dart' show Instrumentation, @@ -148,12 +147,9 @@ abstract class InferenceVisitorBase implements InferenceVisitor { final Uri fileUri; - final ConstantContext constantContext; - InferenceVisitorBase( this._inferrer, this.fileUri, - this.constantContext, this.expressionEvaluationHelper, ); diff --git a/pkg/front_end/lib/src/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/type_inference/type_inferrer.dart index 45cab3e9472..a615ab08968 100644 --- a/pkg/front_end/lib/src/type_inference/type_inferrer.dart +++ b/pkg/front_end/lib/src/type_inference/type_inferrer.dart @@ -10,7 +10,6 @@ import 'package:_fe_analyzer_shared/src/types/shared_type.dart'; import 'package:kernel/ast.dart'; import 'package:kernel/type_environment.dart'; -import '../base/constant_context.dart'; import '../base/instrumentation.dart' show Instrumentation; import '../base/scope.dart'; import '../kernel/benchmarker.dart' show BenchmarkSubdivides, Benchmarker; @@ -51,14 +50,12 @@ abstract class TypeInferrer { /// returns the computed field type. DartType inferImplicitFieldType({ required Uri fileUri, - required ConstantContext constantContext, required Expression initializer, }); /// Performs full type inference on the given field initializer. ExpressionInferenceResult inferFieldInitializer({ required Uri fileUri, - required ConstantContext constantContext, required DartType declaredType, required Expression initializer, }); @@ -68,7 +65,6 @@ abstract class TypeInferrer { required Uri fileUri, required int fileOffset, required DartType returnType, - required ConstantContext constantContext, required AsyncMarker asyncMarker, required Statement body, ExpressionEvaluationHelper? expressionEvaluationHelper, @@ -77,7 +73,6 @@ abstract class TypeInferrer { /// Performs type inference on the given constructor initializer. InitializerInferenceResult inferInitializer({ required Uri fileUri, - required ConstantContext constantContext, required SourceConstructorBuilder constructorBuilder, required Initializer initializer, }); @@ -90,7 +85,6 @@ abstract class TypeInferrer { required Uri fileUri, required Annotatable annotatable, required List? indices, - required ConstantContext constantContext, }); /// Performs type inference on the given function parameter initializer @@ -100,7 +94,6 @@ abstract class TypeInferrer { required Expression initializer, required DartType declaredType, required bool hasDeclaredInitializer, - required ConstantContext constantContext, }); /// Infers the type arguments a redirecting factory target reference. @@ -111,7 +104,6 @@ abstract class TypeInferrer { required int fileOffset, required Member target, required FunctionType targetType, - required ConstantContext constantContext, }); } @@ -204,7 +196,6 @@ class TypeInferrerImpl implements TypeInferrer { InferenceVisitorBase _createInferenceVisitor({ required Uri fileUri, - required ConstantContext constantContext, SourceConstructorBuilder? constructorBuilder, ExpressionEvaluationHelper? expressionEvaluationHelper, }) { @@ -213,7 +204,6 @@ class TypeInferrerImpl implements TypeInferrer { return new InferenceVisitorImpl( this, fileUri, - constantContext, constructorBuilder, operations, typeAnalyzerOptions, @@ -224,13 +214,9 @@ class TypeInferrerImpl implements TypeInferrer { @override DartType inferImplicitFieldType({ required Uri fileUri, - required ConstantContext constantContext, required Expression initializer, }) { - InferenceVisitorBase visitor = _createInferenceVisitor( - fileUri: fileUri, - constantContext: constantContext, - ); + InferenceVisitorBase visitor = _createInferenceVisitor(fileUri: fileUri); ExpressionInferenceResult result = visitor.inferExpression( initializer, const UnknownType(), @@ -244,15 +230,11 @@ class TypeInferrerImpl implements TypeInferrer { @override ExpressionInferenceResult inferFieldInitializer({ required Uri fileUri, - required ConstantContext constantContext, required DartType declaredType, required Expression initializer, }) { assert(!isTopLevel); - InferenceVisitorBase visitor = _createInferenceVisitor( - fileUri: fileUri, - constantContext: constantContext, - ); + InferenceVisitorBase visitor = _createInferenceVisitor(fileUri: fileUri); ExpressionInferenceResult initializerResult = visitor.inferExpression( initializer, declaredType, @@ -272,14 +254,12 @@ class TypeInferrerImpl implements TypeInferrer { required Uri fileUri, required int fileOffset, required DartType returnType, - required ConstantContext constantContext, required AsyncMarker asyncMarker, required Statement body, ExpressionEvaluationHelper? expressionEvaluationHelper, }) { InferenceVisitorBase visitor = _createInferenceVisitor( fileUri: fileUri, - constantContext: constantContext, expressionEvaluationHelper: expressionEvaluationHelper, ); ClosureContext closureContext = new ClosureContext( @@ -324,12 +304,8 @@ class TypeInferrerImpl implements TypeInferrer { required int fileOffset, required Member target, required FunctionType targetType, - required ConstantContext constantContext, }) { - InferenceVisitorBase visitor = _createInferenceVisitor( - fileUri: fileUri, - constantContext: constantContext, - ); + InferenceVisitorBase visitor = _createInferenceVisitor(fileUri: fileUri); List positionalArguments = []; for (VariableDeclaration parameter in redirectingFactoryFunction.positionalParameters) { @@ -379,7 +355,6 @@ class TypeInferrerImpl implements TypeInferrer { @override InitializerInferenceResult inferInitializer({ required Uri fileUri, - required ConstantContext constantContext, required SourceConstructorBuilder constructorBuilder, required Initializer initializer, }) { @@ -390,7 +365,6 @@ class TypeInferrerImpl implements TypeInferrer { // checks). InferenceVisitorBase visitor = _createInferenceVisitor( fileUri: fileUri, - constantContext: constantContext, constructorBuilder: constructorBuilder, ); InitializerInferenceResult result = visitor.inferInitializer(initializer); @@ -403,12 +377,8 @@ class TypeInferrerImpl implements TypeInferrer { required Uri fileUri, required Annotatable annotatable, required List? indices, - required ConstantContext constantContext, }) { - InferenceVisitorBase visitor = _createInferenceVisitor( - fileUri: fileUri, - constantContext: constantContext, - ); + InferenceVisitorBase visitor = _createInferenceVisitor(fileUri: fileUri); visitor.inferMetadata(visitor, annotatable, indices: indices); visitor.checkCleanState(); } @@ -419,12 +389,8 @@ class TypeInferrerImpl implements TypeInferrer { required Expression initializer, required DartType declaredType, required bool hasDeclaredInitializer, - required ConstantContext constantContext, }) { - InferenceVisitorBase visitor = _createInferenceVisitor( - fileUri: fileUri, - constantContext: constantContext, - ); + InferenceVisitorBase visitor = _createInferenceVisitor(fileUri: fileUri); ExpressionInferenceResult result = visitor.inferExpression( initializer, declaredType, @@ -485,13 +451,11 @@ class TypeInferrerImplBenchmarked implements TypeInferrer { @override DartType inferImplicitFieldType({ required Uri fileUri, - required ConstantContext constantContext, required Expression initializer, }) { benchmarker.beginSubdivide(BenchmarkSubdivides.inferImplicitFieldType); DartType result = impl.inferImplicitFieldType( fileUri: fileUri, - constantContext: constantContext, initializer: initializer, ); benchmarker.endSubdivide(); @@ -501,14 +465,12 @@ class TypeInferrerImplBenchmarked implements TypeInferrer { @override ExpressionInferenceResult inferFieldInitializer({ required Uri fileUri, - required ConstantContext constantContext, required DartType declaredType, required Expression initializer, }) { benchmarker.beginSubdivide(BenchmarkSubdivides.inferFieldInitializer); ExpressionInferenceResult result = impl.inferFieldInitializer( fileUri: fileUri, - constantContext: constantContext, declaredType: declaredType, initializer: initializer, ); @@ -521,7 +483,6 @@ class TypeInferrerImplBenchmarked implements TypeInferrer { required Uri fileUri, required int fileOffset, required DartType returnType, - required ConstantContext constantContext, required AsyncMarker asyncMarker, required Statement body, ExpressionEvaluationHelper? expressionEvaluationHelper, @@ -531,7 +492,6 @@ class TypeInferrerImplBenchmarked implements TypeInferrer { fileUri: fileUri, fileOffset: fileOffset, returnType: returnType, - constantContext: constantContext, asyncMarker: asyncMarker, body: body, expressionEvaluationHelper: expressionEvaluationHelper, @@ -543,14 +503,12 @@ class TypeInferrerImplBenchmarked implements TypeInferrer { @override InitializerInferenceResult inferInitializer({ required Uri fileUri, - required ConstantContext constantContext, required SourceConstructorBuilder constructorBuilder, required Initializer initializer, }) { benchmarker.beginSubdivide(BenchmarkSubdivides.inferInitializer); InitializerInferenceResult result = impl.inferInitializer( fileUri: fileUri, - constantContext: constantContext, constructorBuilder: constructorBuilder, initializer: initializer, ); @@ -563,14 +521,12 @@ class TypeInferrerImplBenchmarked implements TypeInferrer { required Uri fileUri, required Annotatable annotatable, required List? indices, - required ConstantContext constantContext, }) { benchmarker.beginSubdivide(BenchmarkSubdivides.inferMetadata); impl.inferMetadata( fileUri: fileUri, annotatable: annotatable, indices: indices, - constantContext: constantContext, ); benchmarker.endSubdivide(); } @@ -581,7 +537,6 @@ class TypeInferrerImplBenchmarked implements TypeInferrer { required Expression initializer, required DartType declaredType, required bool hasDeclaredInitializer, - required ConstantContext constantContext, }) { benchmarker.beginSubdivide(BenchmarkSubdivides.inferParameterInitializer); Expression result = impl.inferParameterInitializer( @@ -589,7 +544,6 @@ class TypeInferrerImplBenchmarked implements TypeInferrer { initializer: initializer, declaredType: declaredType, hasDeclaredInitializer: hasDeclaredInitializer, - constantContext: constantContext, ); benchmarker.endSubdivide(); return result; @@ -603,7 +557,6 @@ class TypeInferrerImplBenchmarked implements TypeInferrer { required int fileOffset, required Member target, required FunctionType targetType, - required ConstantContext constantContext, }) { benchmarker.beginSubdivide( BenchmarkSubdivides.inferRedirectingFactoryTypeArguments, @@ -615,7 +568,6 @@ class TypeInferrerImplBenchmarked implements TypeInferrer { fileOffset: fileOffset, target: target, targetType: targetType, - constantContext: constantContext, ); benchmarker.endSubdivide(); return result; diff --git a/pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart b/pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart index 17e720fab99..4ef2420fd04 100644 --- a/pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart +++ b/pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart @@ -128,7 +128,7 @@ void main() { _testBreakStatementImpl(); _testCascade(); _testDeferredCheck(); - _testFactoryConstructorInvocationJudgment(); + _testFactoryConstructorInvocation(); _testTypeAliasedConstructorInvocation(c); _testTypeAliasedFactoryInvocation(c); _testFunctionDeclarationImpl(); @@ -632,7 +632,7 @@ void _testDeferredCheck() { let final dynamic #0 = pre.checkLibraryIsLoaded() in 0'''); } -void _testFactoryConstructorInvocationJudgment() { +void _testFactoryConstructorInvocation() { Library library = new Library(dummyUri, fileUri: dummyUri); Class cls = new Class(name: 'Class', fileUri: dummyUri); library.addClass(cls); @@ -645,21 +645,37 @@ void _testFactoryConstructorInvocationJudgment() { cls.addProcedure(factoryConstructor); testExpression( - new FactoryConstructorInvocation(factoryConstructor, new ArgumentsImpl([])), + new FactoryConstructorInvocation( + factoryConstructor, + new ArgumentsImpl([]), + isConst: false, + ), ''' new Class()''', verbose: ''' new library test:dummy::Class()''', ); + testExpression( + new FactoryConstructorInvocation( + factoryConstructor, + new ArgumentsImpl([]), + isConst: true, + ), + ''' +const Class()''', + verbose: ''' +const library test:dummy::Class()''', + ); + testExpression( new FactoryConstructorInvocation( factoryConstructor, new ArgumentsImpl( [new IntLiteral(0)], - named: [new NamedExpression('bar', new IntLiteral(1))], )..setExplicitTypeArguments([const VoidType()]), + isConst: false, ), ''' new Class(0, bar: 1)''', @@ -675,6 +691,7 @@ new library test:dummy::Class(0, bar: 1)''', [new IntLiteral(0)], named: [new NamedExpression('bar', new IntLiteral(1))], )..setExplicitTypeArguments([const VoidType()]), + isConst: false, ), ''' new Class.foo(0, bar: 1)''', @@ -824,6 +841,7 @@ void _testTypeAliasedFactoryInvocation(CompilerContext c) { typeAliasBuilder, factoryConstructor, new ArgumentsImpl([]), + isConst: false, ), ''' new Typedef()''', @@ -839,6 +857,7 @@ new library test:dummy::Typedef()''', [new IntLiteral(0)], named: [new NamedExpression('bar', new IntLiteral(1))], )..setExplicitTypeArguments([const VoidType()]), + isConst: false, ), ''' new Typedef(0, bar: 1)''', @@ -855,6 +874,7 @@ new library test:dummy::Typedef(0, bar: 1)''', [new IntLiteral(0)], named: [new NamedExpression('bar', new IntLiteral(1))], )..setExplicitTypeArguments([const VoidType()]), + isConst: false, ), ''' new Typedef.foo(0, bar: 1)''', diff --git a/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.expect b/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.expect index b2b6000cd66..e48f17f5424 100644 --- a/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.expect +++ b/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.expect @@ -16,11 +16,6 @@ library; // const newConst1 = new ExtensionType1(0); /* Error */ // ^^^ // -// pkg/front_end/testcases/extension_types/const_constructor_access.dart:9:23: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const newConst1 = new ExtensionType1(0); /* Error */ -// ^ -// // pkg/front_end/testcases/extension_types/const_constructor_access.dart:13:31: Error: Cannot invoke a non-'const' constructor where a const expression is expected. // Try using a constructor or factory that is 'const'. // const implicitConstAliased1 = Typedef1(0); /* Error */ @@ -35,11 +30,6 @@ library; // const newConstAliased1 = new Typedef1(0); /* Error */ // ^^^ // -// pkg/front_end/testcases/extension_types/const_constructor_access.dart:15:30: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const newConstAliased1 = new Typedef1(0); /* Error */ -// ^ -// // pkg/front_end/testcases/extension_types/const_constructor_access.dart:21:19: Error: New expression is not a constant expression. // const newConst2 = new ExtensionType2(0); /* Error */ // ^^^ @@ -71,10 +61,9 @@ static field invalid-type explicitConst1 = invalid-expression "pkg/front_end/tes Try using a constructor or factory that is 'const'. var explicitConst1 = const ExtensionType1(0); /* Error */ ^^^^^^^^^^^^^^"; -static const field self::ExtensionType1% /* erasure=core::int, declared=! */ newConst1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:9:23: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -Try using a constructor or factory that is 'const'. +static const field invalid-type newConst1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:9:19: Error: New expression is not a constant expression. const newConst1 = new ExtensionType1(0); /* Error */ - ^"; + ^^^"; static const field invalid-type implicitConstAliased1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:13:31: Error: Cannot invoke a non-'const' constructor where a const expression is expected. Try using a constructor or factory that is 'const'. const implicitConstAliased1 = Typedef1(0); /* Error */ @@ -83,16 +72,19 @@ static field invalid-type explicitConstAliased1 = invalid-expression "pkg/front_ Try using a constructor or factory that is 'const'. var explicitConstAliased1 = const Typedef1(0); /* Error */ ^^^^^^^^"; -static const field self::ExtensionType1% /* erasure=core::int, declared=! */ newConstAliased1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:15:30: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -Try using a constructor or factory that is 'const'. +static const field invalid-type newConstAliased1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:15:26: Error: New expression is not a constant expression. const newConstAliased1 = new Typedef1(0); /* Error */ - ^"; + ^^^"; static const field self::ExtensionType2% /* erasure=core::int, declared=! */ implicitConst2 = #C1; static field self::ExtensionType2% /* erasure=core::int, declared=! */ explicitConst2 = #C1; -static const field self::ExtensionType2% /* erasure=core::int, declared=! */ newConst2 = #C1; +static const field invalid-type newConst2 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:21:19: Error: New expression is not a constant expression. +const newConst2 = new ExtensionType2(0); /* Error */ + ^^^"; static const field self::ExtensionType2% /* erasure=core::int, declared=! */ implicitConstAliased2 = #C1; static field self::ExtensionType2% /* erasure=core::int, declared=! */ explicitConstAliased2 = #C1; -static const field self::ExtensionType2% /* erasure=core::int, declared=! */ newConstAliased2 = #C1; +static const field invalid-type newConstAliased2 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:27:26: Error: New expression is not a constant expression. +const newConstAliased2 = new Typedef2(0); /* Error */ + ^^^"; static extension-type-member method ExtensionType1|constructor#(core::int i) → self::ExtensionType1% /* erasure=core::int, declared=! */ { lowered final self::ExtensionType1% /* erasure=core::int, declared=! */ #this = i; return #this; diff --git a/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.modular.expect index b2b6000cd66..e48f17f5424 100644 --- a/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.modular.expect +++ b/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.modular.expect @@ -16,11 +16,6 @@ library; // const newConst1 = new ExtensionType1(0); /* Error */ // ^^^ // -// pkg/front_end/testcases/extension_types/const_constructor_access.dart:9:23: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const newConst1 = new ExtensionType1(0); /* Error */ -// ^ -// // pkg/front_end/testcases/extension_types/const_constructor_access.dart:13:31: Error: Cannot invoke a non-'const' constructor where a const expression is expected. // Try using a constructor or factory that is 'const'. // const implicitConstAliased1 = Typedef1(0); /* Error */ @@ -35,11 +30,6 @@ library; // const newConstAliased1 = new Typedef1(0); /* Error */ // ^^^ // -// pkg/front_end/testcases/extension_types/const_constructor_access.dart:15:30: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const newConstAliased1 = new Typedef1(0); /* Error */ -// ^ -// // pkg/front_end/testcases/extension_types/const_constructor_access.dart:21:19: Error: New expression is not a constant expression. // const newConst2 = new ExtensionType2(0); /* Error */ // ^^^ @@ -71,10 +61,9 @@ static field invalid-type explicitConst1 = invalid-expression "pkg/front_end/tes Try using a constructor or factory that is 'const'. var explicitConst1 = const ExtensionType1(0); /* Error */ ^^^^^^^^^^^^^^"; -static const field self::ExtensionType1% /* erasure=core::int, declared=! */ newConst1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:9:23: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -Try using a constructor or factory that is 'const'. +static const field invalid-type newConst1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:9:19: Error: New expression is not a constant expression. const newConst1 = new ExtensionType1(0); /* Error */ - ^"; + ^^^"; static const field invalid-type implicitConstAliased1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:13:31: Error: Cannot invoke a non-'const' constructor where a const expression is expected. Try using a constructor or factory that is 'const'. const implicitConstAliased1 = Typedef1(0); /* Error */ @@ -83,16 +72,19 @@ static field invalid-type explicitConstAliased1 = invalid-expression "pkg/front_ Try using a constructor or factory that is 'const'. var explicitConstAliased1 = const Typedef1(0); /* Error */ ^^^^^^^^"; -static const field self::ExtensionType1% /* erasure=core::int, declared=! */ newConstAliased1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:15:30: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -Try using a constructor or factory that is 'const'. +static const field invalid-type newConstAliased1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:15:26: Error: New expression is not a constant expression. const newConstAliased1 = new Typedef1(0); /* Error */ - ^"; + ^^^"; static const field self::ExtensionType2% /* erasure=core::int, declared=! */ implicitConst2 = #C1; static field self::ExtensionType2% /* erasure=core::int, declared=! */ explicitConst2 = #C1; -static const field self::ExtensionType2% /* erasure=core::int, declared=! */ newConst2 = #C1; +static const field invalid-type newConst2 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:21:19: Error: New expression is not a constant expression. +const newConst2 = new ExtensionType2(0); /* Error */ + ^^^"; static const field self::ExtensionType2% /* erasure=core::int, declared=! */ implicitConstAliased2 = #C1; static field self::ExtensionType2% /* erasure=core::int, declared=! */ explicitConstAliased2 = #C1; -static const field self::ExtensionType2% /* erasure=core::int, declared=! */ newConstAliased2 = #C1; +static const field invalid-type newConstAliased2 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:27:26: Error: New expression is not a constant expression. +const newConstAliased2 = new Typedef2(0); /* Error */ + ^^^"; static extension-type-member method ExtensionType1|constructor#(core::int i) → self::ExtensionType1% /* erasure=core::int, declared=! */ { lowered final self::ExtensionType1% /* erasure=core::int, declared=! */ #this = i; return #this; diff --git a/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.outline.expect b/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.outline.expect index ad9aa56f1f5..19f3ac4a80d 100644 --- a/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.outline.expect +++ b/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.outline.expect @@ -16,11 +16,6 @@ library; // const newConst1 = new ExtensionType1(0); /* Error */ // ^^^ // -// pkg/front_end/testcases/extension_types/const_constructor_access.dart:9:23: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const newConst1 = new ExtensionType1(0); /* Error */ -// ^ -// // pkg/front_end/testcases/extension_types/const_constructor_access.dart:13:31: Error: Cannot invoke a non-'const' constructor where a const expression is expected. // Try using a constructor or factory that is 'const'. // const implicitConstAliased1 = Typedef1(0); /* Error */ @@ -35,11 +30,6 @@ library; // const newConstAliased1 = new Typedef1(0); /* Error */ // ^^^ // -// pkg/front_end/testcases/extension_types/const_constructor_access.dart:15:30: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const newConstAliased1 = new Typedef1(0); /* Error */ -// ^ -// // pkg/front_end/testcases/extension_types/const_constructor_access.dart:21:19: Error: New expression is not a constant expression. // const newConst2 = new ExtensionType2(0); /* Error */ // ^^^ @@ -68,25 +58,27 @@ Try using a constructor or factory that is 'const'. const implicitConst1 = ExtensionType1(0); /* Error */ ^^^^^^^^^^^^^^"; static field invalid-type explicitConst1; -static const field self::ExtensionType1% /* erasure=core::int, declared=! */ newConst1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:9:23: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -Try using a constructor or factory that is 'const'. +static const field invalid-type newConst1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:9:19: Error: New expression is not a constant expression. const newConst1 = new ExtensionType1(0); /* Error */ - ^"; + ^^^"; static const field invalid-type implicitConstAliased1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:13:31: Error: Cannot invoke a non-'const' constructor where a const expression is expected. Try using a constructor or factory that is 'const'. const implicitConstAliased1 = Typedef1(0); /* Error */ ^^^^^^^^"; static field invalid-type explicitConstAliased1; -static const field self::ExtensionType1% /* erasure=core::int, declared=! */ newConstAliased1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:15:30: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -Try using a constructor or factory that is 'const'. +static const field invalid-type newConstAliased1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:15:26: Error: New expression is not a constant expression. const newConstAliased1 = new Typedef1(0); /* Error */ - ^"; + ^^^"; static const field self::ExtensionType2% /* erasure=core::int, declared=! */ implicitConst2 = const self::ExtensionType2|constructor#(0); static field self::ExtensionType2% /* erasure=core::int, declared=! */ explicitConst2; -static const field self::ExtensionType2% /* erasure=core::int, declared=! */ newConst2 = const self::ExtensionType2|constructor#(0); +static const field invalid-type newConst2 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:21:19: Error: New expression is not a constant expression. +const newConst2 = new ExtensionType2(0); /* Error */ + ^^^"; static const field self::ExtensionType2% /* erasure=core::int, declared=! */ implicitConstAliased2 = const self::ExtensionType2|constructor#(0); static field self::ExtensionType2% /* erasure=core::int, declared=! */ explicitConstAliased2; -static const field self::ExtensionType2% /* erasure=core::int, declared=! */ newConstAliased2 = const self::ExtensionType2|constructor#(0); +static const field invalid-type newConstAliased2 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:27:26: Error: New expression is not a constant expression. +const newConstAliased2 = new Typedef2(0); /* Error */ + ^^^"; static extension-type-member method ExtensionType1|constructor#(core::int i) → self::ExtensionType1% /* erasure=core::int, declared=! */ ; static extension-type-member synthetic method ExtensionType1|constructor#_#new#tearOff(core::int i) → self::ExtensionType1% /* erasure=core::int, declared=! */ @@ -105,7 +97,5 @@ static synthetic method _#Typedef2#new#tearOff IntConstant(0) -Evaluated: StaticInvocation @ org-dartlang-testcase:///const_constructor_access.dart:21:23 -> IntConstant(0) Evaluated: StaticInvocation @ org-dartlang-testcase:///const_constructor_access.dart:25:31 -> IntConstant(0) -Evaluated: StaticInvocation @ org-dartlang-testcase:///const_constructor_access.dart:27:30 -> IntConstant(0) -Extra constant evaluation: evaluated: 14, effectively constant: 4 +Extra constant evaluation: evaluated: 12, effectively constant: 2 diff --git a/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.transformed.expect index b2b6000cd66..e48f17f5424 100644 --- a/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extension_types/const_constructor_access.dart.strong.transformed.expect @@ -16,11 +16,6 @@ library; // const newConst1 = new ExtensionType1(0); /* Error */ // ^^^ // -// pkg/front_end/testcases/extension_types/const_constructor_access.dart:9:23: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const newConst1 = new ExtensionType1(0); /* Error */ -// ^ -// // pkg/front_end/testcases/extension_types/const_constructor_access.dart:13:31: Error: Cannot invoke a non-'const' constructor where a const expression is expected. // Try using a constructor or factory that is 'const'. // const implicitConstAliased1 = Typedef1(0); /* Error */ @@ -35,11 +30,6 @@ library; // const newConstAliased1 = new Typedef1(0); /* Error */ // ^^^ // -// pkg/front_end/testcases/extension_types/const_constructor_access.dart:15:30: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const newConstAliased1 = new Typedef1(0); /* Error */ -// ^ -// // pkg/front_end/testcases/extension_types/const_constructor_access.dart:21:19: Error: New expression is not a constant expression. // const newConst2 = new ExtensionType2(0); /* Error */ // ^^^ @@ -71,10 +61,9 @@ static field invalid-type explicitConst1 = invalid-expression "pkg/front_end/tes Try using a constructor or factory that is 'const'. var explicitConst1 = const ExtensionType1(0); /* Error */ ^^^^^^^^^^^^^^"; -static const field self::ExtensionType1% /* erasure=core::int, declared=! */ newConst1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:9:23: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -Try using a constructor or factory that is 'const'. +static const field invalid-type newConst1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:9:19: Error: New expression is not a constant expression. const newConst1 = new ExtensionType1(0); /* Error */ - ^"; + ^^^"; static const field invalid-type implicitConstAliased1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:13:31: Error: Cannot invoke a non-'const' constructor where a const expression is expected. Try using a constructor or factory that is 'const'. const implicitConstAliased1 = Typedef1(0); /* Error */ @@ -83,16 +72,19 @@ static field invalid-type explicitConstAliased1 = invalid-expression "pkg/front_ Try using a constructor or factory that is 'const'. var explicitConstAliased1 = const Typedef1(0); /* Error */ ^^^^^^^^"; -static const field self::ExtensionType1% /* erasure=core::int, declared=! */ newConstAliased1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:15:30: Error: Cannot invoke a non-'const' constructor where a const expression is expected. -Try using a constructor or factory that is 'const'. +static const field invalid-type newConstAliased1 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:15:26: Error: New expression is not a constant expression. const newConstAliased1 = new Typedef1(0); /* Error */ - ^"; + ^^^"; static const field self::ExtensionType2% /* erasure=core::int, declared=! */ implicitConst2 = #C1; static field self::ExtensionType2% /* erasure=core::int, declared=! */ explicitConst2 = #C1; -static const field self::ExtensionType2% /* erasure=core::int, declared=! */ newConst2 = #C1; +static const field invalid-type newConst2 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:21:19: Error: New expression is not a constant expression. +const newConst2 = new ExtensionType2(0); /* Error */ + ^^^"; static const field self::ExtensionType2% /* erasure=core::int, declared=! */ implicitConstAliased2 = #C1; static field self::ExtensionType2% /* erasure=core::int, declared=! */ explicitConstAliased2 = #C1; -static const field self::ExtensionType2% /* erasure=core::int, declared=! */ newConstAliased2 = #C1; +static const field invalid-type newConstAliased2 = invalid-expression "pkg/front_end/testcases/extension_types/const_constructor_access.dart:27:26: Error: New expression is not a constant expression. +const newConstAliased2 = new Typedef2(0); /* Error */ + ^^^"; static extension-type-member method ExtensionType1|constructor#(core::int i) → self::ExtensionType1% /* erasure=core::int, declared=! */ { lowered final self::ExtensionType1% /* erasure=core::int, declared=! */ #this = i; return #this; diff --git a/pkg/front_end/testcases/patterns/const_patterns.dart.strong.expect b/pkg/front_end/testcases/patterns/const_patterns.dart.strong.expect index f3d3e1847c0..7c3da52d388 100644 --- a/pkg/front_end/testcases/patterns/const_patterns.dart.strong.expect +++ b/pkg/front_end/testcases/patterns/const_patterns.dart.strong.expect @@ -296,14 +296,6 @@ library; // case const await 0: // Error // ^ // -// pkg/front_end/testcases/patterns/const_patterns.dart:102:22: Error: New expression is not a constant expression. -// case const new Class(): // Error -// ^ -// -// pkg/front_end/testcases/patterns/const_patterns.dart:103:16: Error: New expression is not a constant expression. -// case new Class(): // Error -// ^ -// import self as self; import "dart:core" as core; @@ -404,8 +396,12 @@ class Class extends core::Object /*hasConstConstructor*/ { synthesized core::bool #2#77; synthesized core::bool #2#77#isSet = false; final const synthesized core::Map #2#76 = #C23; - final const synthesized self::Class #2#78 = invalid-expression "New expression is not a constant expression."; - final const synthesized self::Class #2#80 = invalid-expression "New expression is not a constant expression."; + final const synthesized invalid-type #2#78 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:102:18: Error: New expression is not a constant expression. + case const new Class(): // Error + ^^^"; + final const synthesized invalid-type #2#80 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:103:12: Error: New expression is not a constant expression. + case new Class(): // Error + ^^^"; synthesized core::bool #2#83; synthesized core::bool #2#83#isSet = false; final const synthesized() #2#82 = #C24; @@ -439,7 +435,11 @@ class Class extends core::Object /*hasConstConstructor*/ { case const assert(false): // Error ^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2 : let final dynamic #t44 = #2#2#isSet = true in #2#2 = #C3 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#47#isSet ?{core::bool} #2#47 : let final dynamic #t45 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:79:20: Error: Not a constant expression. case const ++variable: // Error - ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t46 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t47 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t48 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t49 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t50 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t51 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t52 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t53 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71 : let final dynamic #t54 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73 : let final dynamic #t55 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75 : let final dynamic #t56 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77 : let final dynamic #t57 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t58 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t59 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t60 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t61 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t62 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t63 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71 : let final dynamic #t64 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73 : let final dynamic #t65 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75 : let final dynamic #t66 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77 : let final dynamic #t67 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#83#isSet ?{core::bool} #2#83 : let final dynamic #t68 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#83#isSet ?{core::bool} #2#83 : let final dynamic #t69 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C25 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#47#isSet ?{core::bool} #2#47 : let final dynamic #t70 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12 : let final dynamic #t71 = #2#12#isSet = true in #2#12 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14 : let final dynamic #t72 = #2#14#isSet = true in #2#14 = #C5 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37 : let final dynamic #t73 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t74 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t75 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t76 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t77 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t78 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t79 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t80 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t81 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t82 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t83 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0)) { + ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t46 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t47 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t48 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t49 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t50 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t51 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t52 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t53 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71 : let final dynamic #t54 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73 : let final dynamic #t55 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75 : let final dynamic #t56 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77 : let final dynamic #t57 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t58 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t59 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t60 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t61 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t62 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t63 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71 : let final dynamic #t64 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73 : let final dynamic #t65 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75 : let final dynamic #t66 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77 : let final dynamic #t67 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:102:18: Error: New expression is not a constant expression. + case const new Class(): // Error + ^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:103:12: Error: New expression is not a constant expression. + case new Class(): // Error + ^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#83#isSet ?{core::bool} #2#83 : let final dynamic #t68 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#83#isSet ?{core::bool} #2#83 : let final dynamic #t69 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C25 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#47#isSet ?{core::bool} #2#47 : let final dynamic #t70 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12 : let final dynamic #t71 = #2#12#isSet = true in #2#12 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14 : let final dynamic #t72 = #2#14#isSet = true in #2#14 = #C5 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37 : let final dynamic #t73 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t74 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t75 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t76 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t77 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t78 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t79 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t80 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t81 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t82 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t83 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0)) { { core::print(0); } diff --git a/pkg/front_end/testcases/patterns/const_patterns.dart.strong.modular.expect b/pkg/front_end/testcases/patterns/const_patterns.dart.strong.modular.expect index f3d3e1847c0..7c3da52d388 100644 --- a/pkg/front_end/testcases/patterns/const_patterns.dart.strong.modular.expect +++ b/pkg/front_end/testcases/patterns/const_patterns.dart.strong.modular.expect @@ -296,14 +296,6 @@ library; // case const await 0: // Error // ^ // -// pkg/front_end/testcases/patterns/const_patterns.dart:102:22: Error: New expression is not a constant expression. -// case const new Class(): // Error -// ^ -// -// pkg/front_end/testcases/patterns/const_patterns.dart:103:16: Error: New expression is not a constant expression. -// case new Class(): // Error -// ^ -// import self as self; import "dart:core" as core; @@ -404,8 +396,12 @@ class Class extends core::Object /*hasConstConstructor*/ { synthesized core::bool #2#77; synthesized core::bool #2#77#isSet = false; final const synthesized core::Map #2#76 = #C23; - final const synthesized self::Class #2#78 = invalid-expression "New expression is not a constant expression."; - final const synthesized self::Class #2#80 = invalid-expression "New expression is not a constant expression."; + final const synthesized invalid-type #2#78 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:102:18: Error: New expression is not a constant expression. + case const new Class(): // Error + ^^^"; + final const synthesized invalid-type #2#80 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:103:12: Error: New expression is not a constant expression. + case new Class(): // Error + ^^^"; synthesized core::bool #2#83; synthesized core::bool #2#83#isSet = false; final const synthesized() #2#82 = #C24; @@ -439,7 +435,11 @@ class Class extends core::Object /*hasConstConstructor*/ { case const assert(false): // Error ^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2 : let final dynamic #t44 = #2#2#isSet = true in #2#2 = #C3 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#47#isSet ?{core::bool} #2#47 : let final dynamic #t45 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:79:20: Error: Not a constant expression. case const ++variable: // Error - ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t46 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t47 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t48 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t49 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t50 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t51 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t52 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t53 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71 : let final dynamic #t54 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73 : let final dynamic #t55 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75 : let final dynamic #t56 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77 : let final dynamic #t57 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t58 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t59 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t60 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t61 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t62 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t63 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71 : let final dynamic #t64 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73 : let final dynamic #t65 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75 : let final dynamic #t66 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77 : let final dynamic #t67 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#83#isSet ?{core::bool} #2#83 : let final dynamic #t68 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#83#isSet ?{core::bool} #2#83 : let final dynamic #t69 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C25 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#47#isSet ?{core::bool} #2#47 : let final dynamic #t70 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12 : let final dynamic #t71 = #2#12#isSet = true in #2#12 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14 : let final dynamic #t72 = #2#14#isSet = true in #2#14 = #C5 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37 : let final dynamic #t73 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t74 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t75 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t76 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t77 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t78 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t79 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t80 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t81 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t82 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t83 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0)) { + ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t46 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t47 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t48 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t49 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t50 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t51 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t52 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t53 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71 : let final dynamic #t54 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73 : let final dynamic #t55 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75 : let final dynamic #t56 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77 : let final dynamic #t57 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t58 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t59 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t60 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t61 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t62 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t63 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71 : let final dynamic #t64 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73 : let final dynamic #t65 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75 : let final dynamic #t66 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77 : let final dynamic #t67 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:102:18: Error: New expression is not a constant expression. + case const new Class(): // Error + ^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:103:12: Error: New expression is not a constant expression. + case new Class(): // Error + ^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#83#isSet ?{core::bool} #2#83 : let final dynamic #t68 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#83#isSet ?{core::bool} #2#83 : let final dynamic #t69 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C25 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#47#isSet ?{core::bool} #2#47 : let final dynamic #t70 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12 : let final dynamic #t71 = #2#12#isSet = true in #2#12 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14 : let final dynamic #t72 = #2#14#isSet = true in #2#14 = #C5 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37 : let final dynamic #t73 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t74 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t75 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t76 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t77 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t78 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t79 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t80 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t81 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t82 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t83 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0)) { { core::print(0); } diff --git a/pkg/front_end/testcases/patterns/const_patterns.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/const_patterns.dart.strong.transformed.expect index f3d3e1847c0..7c3da52d388 100644 --- a/pkg/front_end/testcases/patterns/const_patterns.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/patterns/const_patterns.dart.strong.transformed.expect @@ -296,14 +296,6 @@ library; // case const await 0: // Error // ^ // -// pkg/front_end/testcases/patterns/const_patterns.dart:102:22: Error: New expression is not a constant expression. -// case const new Class(): // Error -// ^ -// -// pkg/front_end/testcases/patterns/const_patterns.dart:103:16: Error: New expression is not a constant expression. -// case new Class(): // Error -// ^ -// import self as self; import "dart:core" as core; @@ -404,8 +396,12 @@ class Class extends core::Object /*hasConstConstructor*/ { synthesized core::bool #2#77; synthesized core::bool #2#77#isSet = false; final const synthesized core::Map #2#76 = #C23; - final const synthesized self::Class #2#78 = invalid-expression "New expression is not a constant expression."; - final const synthesized self::Class #2#80 = invalid-expression "New expression is not a constant expression."; + final const synthesized invalid-type #2#78 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:102:18: Error: New expression is not a constant expression. + case const new Class(): // Error + ^^^"; + final const synthesized invalid-type #2#80 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:103:12: Error: New expression is not a constant expression. + case new Class(): // Error + ^^^"; synthesized core::bool #2#83; synthesized core::bool #2#83#isSet = false; final const synthesized() #2#82 = #C24; @@ -439,7 +435,11 @@ class Class extends core::Object /*hasConstConstructor*/ { case const assert(false): // Error ^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2 : let final dynamic #t44 = #2#2#isSet = true in #2#2 = #C3 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#47#isSet ?{core::bool} #2#47 : let final dynamic #t45 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:79:20: Error: Not a constant expression. case const ++variable: // Error - ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t46 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t47 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t48 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t49 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t50 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t51 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t52 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t53 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71 : let final dynamic #t54 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73 : let final dynamic #t55 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75 : let final dynamic #t56 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77 : let final dynamic #t57 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t58 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t59 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t60 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t61 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t62 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t63 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71 : let final dynamic #t64 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73 : let final dynamic #t65 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75 : let final dynamic #t66 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77 : let final dynamic #t67 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#83#isSet ?{core::bool} #2#83 : let final dynamic #t68 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#83#isSet ?{core::bool} #2#83 : let final dynamic #t69 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C25 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#47#isSet ?{core::bool} #2#47 : let final dynamic #t70 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12 : let final dynamic #t71 = #2#12#isSet = true in #2#12 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14 : let final dynamic #t72 = #2#14#isSet = true in #2#14 = #C5 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37 : let final dynamic #t73 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t74 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t75 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t76 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t77 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t78 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t79 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t80 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t81 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t82 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t83 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0)) { + ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t46 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t47 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t48 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t49 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t50 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t51 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t52 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t53 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71 : let final dynamic #t54 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73 : let final dynamic #t55 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75 : let final dynamic #t56 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77 : let final dynamic #t57 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t58 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65 : let final dynamic #t59 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t60 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67 : let final dynamic #t61 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t62 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69 : let final dynamic #t63 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71 : let final dynamic #t64 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73 : let final dynamic #t65 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75 : let final dynamic #t66 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77 : let final dynamic #t67 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:102:18: Error: New expression is not a constant expression. + case const new Class(): // Error + ^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:103:12: Error: New expression is not a constant expression. + case new Class(): // Error + ^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#83#isSet ?{core::bool} #2#83 : let final dynamic #t68 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#83#isSet ?{core::bool} #2#83 : let final dynamic #t69 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C25 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#47#isSet ?{core::bool} #2#47 : let final dynamic #t70 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12 : let final dynamic #t71 = #2#12#isSet = true in #2#12 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14 : let final dynamic #t72 = #2#14#isSet = true in #2#14 = #C5 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37 : let final dynamic #t73 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t74 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t75 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t76 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t77 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t78 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t79 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t80 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87 : let final dynamic #t81 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t82 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89 : let final dynamic #t83 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0)) { { core::print(0); } diff --git a/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.expect b/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.expect index ee720c7c0f1..f5966cc8062 100644 --- a/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.expect +++ b/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.expect @@ -26,21 +26,6 @@ library; // const B9.bar({super.y}) : super(new Test.bar()); // Error. // ^^^ // -// pkg/front_end/testcases/super_parameters/issue48642.dart:70:42: Error: Cannot invoke a non-'const' factory where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const B7.bar({super.x}) : super(y: new Test.bar()); // Error. -// ^ -// -// pkg/front_end/testcases/super_parameters/issue48642.dart:79:40: Error: Cannot invoke a non-'const' factory where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const B8.bar(super.x) : super(y: new Test.bar()); // Error. -// ^ -// -// pkg/front_end/testcases/super_parameters/issue48642.dart:88:39: Error: Cannot invoke a non-'const' factory where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const B9.bar({super.y}) : super(new Test.bar()); // Error. -// ^ -// import self as self; import "dart:core" as core; @@ -135,13 +120,14 @@ class A7 extends core::Object /*hasConstConstructor*/ { } class B7 extends self::A7 /*hasConstConstructor*/ { const constructor foo({dynamic x = #C1}) → self::B7 - : super self::A7::•(y: new self::Test::foo(), x: x) + : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:69:38: Error: New expression is not a constant expression. + const B7.foo({super.x}) : super(y: new Test.foo()); // Error. + ^^^", x: x) ; const constructor bar({dynamic x = #C1}) → self::B7 - : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:70:42: Error: Cannot invoke a non-'const' factory where a const expression is expected. -Try using a constructor or factory that is 'const'. + : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:70:38: Error: New expression is not a constant expression. const B7.bar({super.x}) : super(y: new Test.bar()); // Error. - ^", x: x) + ^^^", x: x) ; } class A8 extends core::Object /*hasConstConstructor*/ { @@ -151,13 +137,14 @@ class A8 extends core::Object /*hasConstConstructor*/ { } class B8 extends self::A8 /*hasConstConstructor*/ { const constructor foo(dynamic x) → self::B8 - : super self::A8::•(x, y: new self::Test::foo()) + : super self::A8::•(x, y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:78:36: Error: New expression is not a constant expression. + const B8.foo(super.x) : super(y: new Test.foo()); // Error. + ^^^") ; const constructor bar(dynamic x) → self::B8 - : super self::A8::•(x, y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:79:40: Error: Cannot invoke a non-'const' factory where a const expression is expected. -Try using a constructor or factory that is 'const'. + : super self::A8::•(x, y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:79:36: Error: New expression is not a constant expression. const B8.bar(super.x) : super(y: new Test.bar()); // Error. - ^") + ^^^") ; } class A9 extends core::Object /*hasConstConstructor*/ { @@ -167,13 +154,14 @@ class A9 extends core::Object /*hasConstConstructor*/ { } class B9 extends self::A9 /*hasConstConstructor*/ { const constructor foo({dynamic y = #C1}) → self::B9 - : super self::A9::•(new self::Test::foo(), y: y) + : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:87:35: Error: New expression is not a constant expression. + const B9.foo({super.y}) : super(new Test.foo()); // Error. + ^^^", y: y) ; const constructor bar({dynamic y = #C1}) → self::B9 - : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:88:39: Error: Cannot invoke a non-'const' factory where a const expression is expected. -Try using a constructor or factory that is 'const'. + : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:88:35: Error: New expression is not a constant expression. const B9.bar({super.y}) : super(new Test.bar()); // Error. - ^", y: y) + ^^^", y: y) ; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.modular.expect b/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.modular.expect index ee720c7c0f1..f5966cc8062 100644 --- a/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.modular.expect +++ b/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.modular.expect @@ -26,21 +26,6 @@ library; // const B9.bar({super.y}) : super(new Test.bar()); // Error. // ^^^ // -// pkg/front_end/testcases/super_parameters/issue48642.dart:70:42: Error: Cannot invoke a non-'const' factory where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const B7.bar({super.x}) : super(y: new Test.bar()); // Error. -// ^ -// -// pkg/front_end/testcases/super_parameters/issue48642.dart:79:40: Error: Cannot invoke a non-'const' factory where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const B8.bar(super.x) : super(y: new Test.bar()); // Error. -// ^ -// -// pkg/front_end/testcases/super_parameters/issue48642.dart:88:39: Error: Cannot invoke a non-'const' factory where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const B9.bar({super.y}) : super(new Test.bar()); // Error. -// ^ -// import self as self; import "dart:core" as core; @@ -135,13 +120,14 @@ class A7 extends core::Object /*hasConstConstructor*/ { } class B7 extends self::A7 /*hasConstConstructor*/ { const constructor foo({dynamic x = #C1}) → self::B7 - : super self::A7::•(y: new self::Test::foo(), x: x) + : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:69:38: Error: New expression is not a constant expression. + const B7.foo({super.x}) : super(y: new Test.foo()); // Error. + ^^^", x: x) ; const constructor bar({dynamic x = #C1}) → self::B7 - : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:70:42: Error: Cannot invoke a non-'const' factory where a const expression is expected. -Try using a constructor or factory that is 'const'. + : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:70:38: Error: New expression is not a constant expression. const B7.bar({super.x}) : super(y: new Test.bar()); // Error. - ^", x: x) + ^^^", x: x) ; } class A8 extends core::Object /*hasConstConstructor*/ { @@ -151,13 +137,14 @@ class A8 extends core::Object /*hasConstConstructor*/ { } class B8 extends self::A8 /*hasConstConstructor*/ { const constructor foo(dynamic x) → self::B8 - : super self::A8::•(x, y: new self::Test::foo()) + : super self::A8::•(x, y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:78:36: Error: New expression is not a constant expression. + const B8.foo(super.x) : super(y: new Test.foo()); // Error. + ^^^") ; const constructor bar(dynamic x) → self::B8 - : super self::A8::•(x, y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:79:40: Error: Cannot invoke a non-'const' factory where a const expression is expected. -Try using a constructor or factory that is 'const'. + : super self::A8::•(x, y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:79:36: Error: New expression is not a constant expression. const B8.bar(super.x) : super(y: new Test.bar()); // Error. - ^") + ^^^") ; } class A9 extends core::Object /*hasConstConstructor*/ { @@ -167,13 +154,14 @@ class A9 extends core::Object /*hasConstConstructor*/ { } class B9 extends self::A9 /*hasConstConstructor*/ { const constructor foo({dynamic y = #C1}) → self::B9 - : super self::A9::•(new self::Test::foo(), y: y) + : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:87:35: Error: New expression is not a constant expression. + const B9.foo({super.y}) : super(new Test.foo()); // Error. + ^^^", y: y) ; const constructor bar({dynamic y = #C1}) → self::B9 - : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:88:39: Error: Cannot invoke a non-'const' factory where a const expression is expected. -Try using a constructor or factory that is 'const'. + : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:88:35: Error: New expression is not a constant expression. const B9.bar({super.y}) : super(new Test.bar()); // Error. - ^", y: y) + ^^^", y: y) ; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.outline.expect b/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.outline.expect index 30193e6d1a2..9dc47f02941 100644 --- a/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.outline.expect +++ b/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.outline.expect @@ -26,21 +26,6 @@ library; // const B9.bar({super.y}) : super(new Test.bar()); // Error. // ^^^ // -// pkg/front_end/testcases/super_parameters/issue48642.dart:70:42: Error: Cannot invoke a non-'const' factory where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const B7.bar({super.x}) : super(y: new Test.bar()); // Error. -// ^ -// -// pkg/front_end/testcases/super_parameters/issue48642.dart:79:40: Error: Cannot invoke a non-'const' factory where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const B8.bar(super.x) : super(y: new Test.bar()); // Error. -// ^ -// -// pkg/front_end/testcases/super_parameters/issue48642.dart:88:39: Error: Cannot invoke a non-'const' factory where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const B9.bar({super.y}) : super(new Test.bar()); // Error. -// ^ -// import self as self; import "dart:core" as core; @@ -120,13 +105,14 @@ class A7 extends core::Object /*hasConstConstructor*/ { } class B7 extends self::A7 /*hasConstConstructor*/ { const constructor foo({dynamic x = null}) → self::B7 - : super self::A7::•(y: new self::Test::foo(), x: x) + : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:69:38: Error: New expression is not a constant expression. + const B7.foo({super.x}) : super(y: new Test.foo()); // Error. + ^^^", x: x) ; const constructor bar({dynamic x = null}) → self::B7 - : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:70:42: Error: Cannot invoke a non-'const' factory where a const expression is expected. -Try using a constructor or factory that is 'const'. + : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:70:38: Error: New expression is not a constant expression. const B7.bar({super.x}) : super(y: new Test.bar()); // Error. - ^", x: x) + ^^^", x: x) ; } class A8 extends core::Object /*hasConstConstructor*/ { @@ -136,13 +122,14 @@ class A8 extends core::Object /*hasConstConstructor*/ { } class B8 extends self::A8 /*hasConstConstructor*/ { const constructor foo(dynamic x) → self::B8 - : super self::A8::•(x, y: new self::Test::foo()) + : super self::A8::•(x, y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:78:36: Error: New expression is not a constant expression. + const B8.foo(super.x) : super(y: new Test.foo()); // Error. + ^^^") ; const constructor bar(dynamic x) → self::B8 - : super self::A8::•(x, y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:79:40: Error: Cannot invoke a non-'const' factory where a const expression is expected. -Try using a constructor or factory that is 'const'. + : super self::A8::•(x, y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:79:36: Error: New expression is not a constant expression. const B8.bar(super.x) : super(y: new Test.bar()); // Error. - ^") + ^^^") ; } class A9 extends core::Object /*hasConstConstructor*/ { @@ -152,13 +139,14 @@ class A9 extends core::Object /*hasConstConstructor*/ { } class B9 extends self::A9 /*hasConstConstructor*/ { const constructor foo({dynamic y = null}) → self::B9 - : super self::A9::•(new self::Test::foo(), y: y) + : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:87:35: Error: New expression is not a constant expression. + const B9.foo({super.y}) : super(new Test.foo()); // Error. + ^^^", y: y) ; const constructor bar({dynamic y = null}) → self::B9 - : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:88:39: Error: Cannot invoke a non-'const' factory where a const expression is expected. -Try using a constructor or factory that is 'const'. + : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:88:35: Error: New expression is not a constant expression. const B9.bar({super.y}) : super(new Test.bar()); // Error. - ^", y: y) + ^^^", y: y) ; } static method main() → dynamic diff --git a/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.transformed.expect b/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.transformed.expect index ee720c7c0f1..f5966cc8062 100644 --- a/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/super_parameters/issue48642.dart.strong.transformed.expect @@ -26,21 +26,6 @@ library; // const B9.bar({super.y}) : super(new Test.bar()); // Error. // ^^^ // -// pkg/front_end/testcases/super_parameters/issue48642.dart:70:42: Error: Cannot invoke a non-'const' factory where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const B7.bar({super.x}) : super(y: new Test.bar()); // Error. -// ^ -// -// pkg/front_end/testcases/super_parameters/issue48642.dart:79:40: Error: Cannot invoke a non-'const' factory where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const B8.bar(super.x) : super(y: new Test.bar()); // Error. -// ^ -// -// pkg/front_end/testcases/super_parameters/issue48642.dart:88:39: Error: Cannot invoke a non-'const' factory where a const expression is expected. -// Try using a constructor or factory that is 'const'. -// const B9.bar({super.y}) : super(new Test.bar()); // Error. -// ^ -// import self as self; import "dart:core" as core; @@ -135,13 +120,14 @@ class A7 extends core::Object /*hasConstConstructor*/ { } class B7 extends self::A7 /*hasConstConstructor*/ { const constructor foo({dynamic x = #C1}) → self::B7 - : super self::A7::•(y: new self::Test::foo(), x: x) + : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:69:38: Error: New expression is not a constant expression. + const B7.foo({super.x}) : super(y: new Test.foo()); // Error. + ^^^", x: x) ; const constructor bar({dynamic x = #C1}) → self::B7 - : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:70:42: Error: Cannot invoke a non-'const' factory where a const expression is expected. -Try using a constructor or factory that is 'const'. + : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:70:38: Error: New expression is not a constant expression. const B7.bar({super.x}) : super(y: new Test.bar()); // Error. - ^", x: x) + ^^^", x: x) ; } class A8 extends core::Object /*hasConstConstructor*/ { @@ -151,13 +137,14 @@ class A8 extends core::Object /*hasConstConstructor*/ { } class B8 extends self::A8 /*hasConstConstructor*/ { const constructor foo(dynamic x) → self::B8 - : super self::A8::•(x, y: new self::Test::foo()) + : super self::A8::•(x, y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:78:36: Error: New expression is not a constant expression. + const B8.foo(super.x) : super(y: new Test.foo()); // Error. + ^^^") ; const constructor bar(dynamic x) → self::B8 - : super self::A8::•(x, y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:79:40: Error: Cannot invoke a non-'const' factory where a const expression is expected. -Try using a constructor or factory that is 'const'. + : super self::A8::•(x, y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:79:36: Error: New expression is not a constant expression. const B8.bar(super.x) : super(y: new Test.bar()); // Error. - ^") + ^^^") ; } class A9 extends core::Object /*hasConstConstructor*/ { @@ -167,13 +154,14 @@ class A9 extends core::Object /*hasConstConstructor*/ { } class B9 extends self::A9 /*hasConstConstructor*/ { const constructor foo({dynamic y = #C1}) → self::B9 - : super self::A9::•(new self::Test::foo(), y: y) + : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:87:35: Error: New expression is not a constant expression. + const B9.foo({super.y}) : super(new Test.foo()); // Error. + ^^^", y: y) ; const constructor bar({dynamic y = #C1}) → self::B9 - : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:88:39: Error: Cannot invoke a non-'const' factory where a const expression is expected. -Try using a constructor or factory that is 'const'. + : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:88:35: Error: New expression is not a constant expression. const B9.bar({super.y}) : super(new Test.bar()); // Error. - ^", y: y) + ^^^", y: y) ; } static method main() → dynamic {} diff --git a/tests/language/const/const_locals_constant_locals_test.dart b/tests/language/const/const_locals_constant_locals_test.dart index ca8dc7db6a2..f66f8d2ac27 100644 --- a/tests/language/const/const_locals_constant_locals_test.dart +++ b/tests/language/const/const_locals_constant_locals_test.dart @@ -29,8 +29,6 @@ void main() { // ^^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE // [cfe] New expression is not a constant expression. - // ^ - // [cfe] New expression is not a constant expression. const c8 = const Class(); } diff --git a/tests/language/const/syntax_test.dart b/tests/language/const/syntax_test.dart index 3e115f225cb..c12b5ce6f99 100644 --- a/tests/language/const/syntax_test.dart +++ b/tests/language/const/syntax_test.dart @@ -45,8 +45,6 @@ main() { // ^^^^^^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE // [cfe] New expression is not a constant expression. - // ^ - // [cfe] New expression is not a constant expression. var f4 = B4; var f5 = B5; @@ -88,14 +86,10 @@ const P2 = new Point(0, 0); // ^^^^^^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE // [cfe] New expression is not a constant expression. -// ^ -// [cfe] New expression is not a constant expression. const P3 = new Point(0, 0) + 1; // ^^^^^^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE // [cfe] New expression is not a constant expression. -// ^ -// [cfe] New expression is not a constant expression. // Check that we cannot have cyclic references in compile time // expressions. @@ -148,6 +142,4 @@ const B4 = identical(1, new Point(1, 2)); // ^^^^^^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE // [cfe] New expression is not a constant expression. -// ^ -// [cfe] New expression is not a constant expression. const B5 = identical(1, const Point(1, 2)); diff --git a/tests/language/named_arguments_anywhere/order_side_effects_error_test.dart b/tests/language/named_arguments_anywhere/order_side_effects_error_test.dart index cfc7ca859cc..a308fd1f7f4 100644 --- a/tests/language/named_arguments_anywhere/order_side_effects_error_test.dart +++ b/tests/language/named_arguments_anywhere/order_side_effects_error_test.dart @@ -30,14 +30,10 @@ test() { // ^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT // [cfe] New expression is not a constant expression. - // ^ - // [cfe] New expression is not a constant expression. foo(y: const B(new A(42)), const B(const A(0))); // ^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT // [cfe] New expression is not a constant expression. - // ^ - // [cfe] New expression is not a constant expression. // ^^^^^^^^^^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_THROWS_EXCEPTION // ^ diff --git a/tests/language/patterns/invalid_const_pattern_test.dart b/tests/language/patterns/invalid_const_pattern_test.dart index 55dc14f7661..261d2658f31 100644 --- a/tests/language/patterns/invalid_const_pattern_test.dart +++ b/tests/language/patterns/invalid_const_pattern_test.dart @@ -480,8 +480,6 @@ class Class { // ^^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONSTANT_PATTERN_WITH_NON_CONSTANT_EXPRESSION // [cfe] New expression is not a constant expression. - // ^ - // [cfe] New expression is not a constant expression. } switch (o) { @@ -489,8 +487,6 @@ class Class { // ^^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONSTANT_PATTERN_WITH_NON_CONSTANT_EXPRESSION // [cfe] New expression is not a constant expression. - // ^ - // [cfe] New expression is not a constant expression. } switch (o) {