Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit da0c0f4

Browse files
author
Dart CI
committed
Version 2.16.0-137.0.dev
Merge commit 'b3a5dfa66392cdffa1c9b227947b4e4fa03a8e10' into 'dev'
2 parents 63c5e7f + b3a5dfa commit da0c0f4

File tree

47 files changed

+2964
-163
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+2964
-163
lines changed

pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1433,6 +1433,17 @@ Message _withArgumentsConstEvalFailedAssertionWithMessage(
14331433
arguments: {'stringOKEmpty': stringOKEmpty});
14341434
}
14351435

1436+
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
1437+
const Code<Null> codeConstEvalFailedAssertionWithNonStringMessage =
1438+
messageConstEvalFailedAssertionWithNonStringMessage;
1439+
1440+
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
1441+
const MessageCode messageConstEvalFailedAssertionWithNonStringMessage =
1442+
const MessageCode("ConstEvalFailedAssertionWithNonStringMessage",
1443+
analyzerCodes: <String>["CONST_EVAL_THROWS_EXCEPTION"],
1444+
problemMessage:
1445+
r"""This assertion failed with a non-String message.""");
1446+
14361447
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
14371448
const Template<Message Function(String nameOKEmpty)>
14381449
templateConstEvalGetterNotFound =

pkg/front_end/lib/src/fasta/builder/class_builder.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,11 +466,11 @@ abstract class ClassBuilderImpl extends DeclarationBuilderImpl
466466

467467
@override
468468
void forEachDeclaredConstructor(
469-
void Function(String name, ConstructorBuilder constructorBuilder)
469+
void Function(String name, SourceConstructorBuilder constructorBuilder)
470470
callback) {
471471
Set<String> visitedConstructorNames = {};
472472
void callbackFilteringFieldBuilders(String name, Builder builder) {
473-
if (builder is ConstructorBuilder &&
473+
if (builder is SourceConstructorBuilder &&
474474
visitedConstructorNames.add(builder.name)) {
475475
callback(name, builder);
476476
}

pkg/front_end/lib/src/fasta/builder/constructor_builder.dart

Lines changed: 12 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -50,45 +50,8 @@ import 'type_builder.dart';
5050
import 'type_variable_builder.dart';
5151

5252
abstract class ConstructorBuilder implements FunctionBuilder {
53-
abstract Token? beginInitializers;
54-
55-
ConstructorBuilder? get actualOrigin;
56-
57-
ConstructorBuilder? get patchForTesting;
58-
59-
Constructor get actualConstructor;
60-
61-
@override
62-
ConstructorBuilder get origin;
63-
64-
bool get isRedirectingGenerativeConstructor;
65-
6653
/// The [Constructor] built by this builder.
6754
Constructor get constructor;
68-
69-
void injectInvalidInitializer(Message message, int charOffset, int length,
70-
ExpressionGeneratorHelper helper);
71-
72-
void addInitializer(Initializer initializer, ExpressionGeneratorHelper helper,
73-
{required InitializerInferenceResult? inferenceResult});
74-
75-
void prepareInitializers();
76-
77-
/// Infers the types of any untyped initializing formals.
78-
void inferFormalTypes();
79-
80-
/// Registers field as being initialized by this constructor.
81-
///
82-
/// The field can be initialized either via an initializing formal or via an
83-
/// entry in the constructor initializer list.
84-
void registerInitializedField(FieldBuilder fieldBuilder);
85-
86-
/// Returns the fields registered as initialized by this constructor.
87-
///
88-
/// Returns the set of fields previously registered via
89-
/// [registerInitializedField] and passes on the ownership of the collection
90-
/// to the caller.
91-
Set<FieldBuilder>? takeInitializedFields();
9255
}
9356

9457
class SourceConstructorBuilder extends FunctionBuilderImpl
@@ -106,13 +69,10 @@ class SourceConstructorBuilder extends FunctionBuilderImpl
10669

10770
RedirectingInitializer? redirectingInitializer;
10871

109-
@override
11072
Token? beginInitializers;
11173

112-
@override
113-
ConstructorBuilder? actualOrigin;
74+
SourceConstructorBuilder? actualOrigin;
11475

115-
@override
11676
Constructor get actualConstructor => _constructor;
11777

11878
SourceConstructorBuilder(
@@ -172,9 +132,8 @@ class SourceConstructorBuilder extends FunctionBuilderImpl
172132
Iterable<Member> get exportedMembers => [constructor];
173133

174134
@override
175-
ConstructorBuilder get origin => actualOrigin ?? this;
135+
SourceConstructorBuilder get origin => actualOrigin ?? this;
176136

177-
@override
178137
ConstructorBuilder? get patchForTesting =>
179138
dataForTesting?.patchForTesting as ConstructorBuilder?;
180139

@@ -248,7 +207,7 @@ class SourceConstructorBuilder extends FunctionBuilderImpl
248207
return _constructor;
249208
}
250209

251-
@override
210+
/// Infers the types of any untyped initializing formals.
252211
void inferFormalTypes() {
253212
if (formals != null) {
254213
for (FormalParameterBuilder formal in formals!) {
@@ -315,7 +274,6 @@ class SourceConstructorBuilder extends FunctionBuilderImpl
315274
@override
316275
Member get member => constructor;
317276

318-
@override
319277
void injectInvalidInitializer(Message message, int charOffset, int length,
320278
ExpressionGeneratorHelper helper) {
321279
List<Initializer> initializers = _constructor.initializers;
@@ -328,7 +286,6 @@ class SourceConstructorBuilder extends FunctionBuilderImpl
328286
initializers.add(lastInitializer);
329287
}
330288

331-
@override
332289
void addInitializer(Initializer initializer, ExpressionGeneratorHelper helper,
333290
{required InitializerInferenceResult? inferenceResult}) {
334291
List<Initializer> initializers = _constructor.initializers;
@@ -457,7 +414,6 @@ class SourceConstructorBuilder extends FunctionBuilderImpl
457414
}
458415
}
459416

460-
@override
461417
void prepareInitializers() {
462418
// For const constructors we parse initializers already at the outlining
463419
// stage, there is no easy way to make body building stage skip initializer
@@ -482,12 +438,19 @@ class SourceConstructorBuilder extends FunctionBuilderImpl
482438
List<ClassMember> get localSetters =>
483439
throw new UnsupportedError('${runtimeType}.localSetters');
484440

485-
@override
441+
/// Registers field as being initialized by this constructor.
442+
///
443+
/// The field can be initialized either via an initializing formal or via an
444+
/// entry in the constructor initializer list.
486445
void registerInitializedField(FieldBuilder fieldBuilder) {
487446
(_initializedFields ??= {}).add(fieldBuilder);
488447
}
489448

490-
@override
449+
/// Returns the fields registered as initialized by this constructor.
450+
///
451+
/// Returns the set of fields previously registered via
452+
/// [registerInitializedField] and passes on the ownership of the collection
453+
/// to the caller.
491454
Set<FieldBuilder>? takeInitializedFields() {
492455
Set<FieldBuilder>? result = _initializedFields;
493456
_initializedFields = null;

pkg/front_end/lib/src/fasta/builder/enum_builder.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ class EnumBuilder extends SourceClassBuilder {
240240
referencesFromIndexed.lookupSetterReference(valuesName);
241241
}
242242

243-
ConstructorBuilder constructorBuilder = new SourceConstructorBuilder(
243+
SourceConstructorBuilder constructorBuilder = new SourceConstructorBuilder(
244244
/* metadata = */ null,
245245
constMask,
246246
/* returnType = */ null,

pkg/front_end/lib/src/fasta/kernel/body_builder.dart

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -941,7 +941,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
941941
void prepareInitializers() {
942942
FunctionBuilder member = this.member as FunctionBuilder;
943943
scope = member.computeFormalParameterInitializerScope(scope);
944-
if (member is ConstructorBuilder) {
944+
if (member is SourceConstructorBuilder) {
945945
member.prepareInitializers();
946946
if (member.formals != null) {
947947
for (FormalParameterBuilder formal in member.formals!) {
@@ -1124,7 +1124,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
11241124
}
11251125
}
11261126
}
1127-
if (builder is ConstructorBuilder) {
1127+
if (builder is SourceConstructorBuilder) {
11281128
finishConstructor(builder, asyncModifier, body);
11291129
} else if (builder is ProcedureBuilder) {
11301130
builder.asyncModifier = asyncModifier;
@@ -1632,7 +1632,8 @@ class BodyBuilder extends ScopeListener<JumpTarget>
16321632
}
16331633
// We are passing [AsyncMarker.Sync] because the error will be reported
16341634
// already.
1635-
finishConstructor(member as ConstructorBuilder, AsyncMarker.Sync, null);
1635+
finishConstructor(
1636+
member as SourceConstructorBuilder, AsyncMarker.Sync, null);
16361637
}
16371638

16381639
Expression parseFieldInitializer(Token token) {
@@ -1662,8 +1663,8 @@ class BodyBuilder extends ScopeListener<JumpTarget>
16621663
return annotation;
16631664
}
16641665

1665-
void finishConstructor(
1666-
ConstructorBuilder builder, AsyncMarker asyncModifier, Statement? body) {
1666+
void finishConstructor(SourceConstructorBuilder builder,
1667+
AsyncMarker asyncModifier, Statement? body) {
16671668
/// Quotes below are from [Dart Programming Language Specification, 4th
16681669
/// Edition](
16691670
/// https://ecma-international.org/publications/files/ECMA-ST/ECMA-408.pdf).
@@ -6886,7 +6887,8 @@ class BodyBuilder extends ScopeListener<JumpTarget>
68866887
]);
68876888
}
68886889
}
6889-
ConstructorBuilder constructorBuilder = member as ConstructorBuilder;
6890+
SourceConstructorBuilder constructorBuilder =
6891+
member as SourceConstructorBuilder;
68906892
constructorBuilder.registerInitializedField(builder);
68916893
return builder.buildInitializer(assignmentOffset, expression,
68926894
isSynthetic: formal != null);

pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1999,14 +1999,12 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
19991999
statement.condition,
20002000
templateConstEvalFailedAssertionWithMessage
20012001
.withArguments(message.value));
2002-
} else {
2002+
} else if (message is NullConstant) {
20032003
return createEvaluationErrorConstant(
2004-
statement.message!,
2005-
templateConstEvalInvalidType.withArguments(
2006-
message,
2007-
typeEnvironment.coreTypes.stringLegacyRawType,
2008-
message.getType(_staticTypeContext!),
2009-
isNonNullableByDefault));
2004+
statement.condition, messageConstEvalFailedAssertion);
2005+
} else {
2006+
return createEvaluationErrorConstant(statement.message!,
2007+
messageConstEvalFailedAssertionWithNonStringMessage);
20102008
}
20112009
}
20122010
} else {

pkg/front_end/lib/src/fasta/kernel/kernel_target.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,7 @@ class KernelTarget extends TargetImplementation {
395395
List<SourceClassBuilder> sourceClassBuilders =
396396
loader.checkSemantics(objectClassBuilder);
397397
loader.computeMacroDeclarations(sourceClassBuilders);
398+
loader.computeMacroApplications();
398399
loader.finishTypeVariables(objectClassBuilder, dynamicType);
399400
loader.createTypeInferenceEngine();
400401
loader.buildComponent();
@@ -416,7 +417,6 @@ class KernelTarget extends TargetImplementation {
416417
loader.checkMixins(sourceClassBuilders);
417418
loader.buildOutlineExpressions(
418419
loader.coreTypes, synthesizedFunctionNodes);
419-
loader.computeMacroApplications();
420420
loader.checkTypes();
421421
loader.checkRedirectingFactories(sourceClassBuilders);
422422
loader.checkMainMethods();
@@ -1153,17 +1153,17 @@ class KernelTarget extends TargetImplementation {
11531153
Set<FieldBuilder>? initializedFields = null;
11541154

11551155
builder.forEachDeclaredConstructor(
1156-
(String name, ConstructorBuilder constructorBuilder) {
1156+
(String name, SourceConstructorBuilder constructorBuilder) {
11571157
if (constructorBuilder.isExternal) return;
11581158
// In case of duplicating constructors the earliest ones (those that
11591159
// declared towards the beginning of the file) come last in the list.
11601160
// To report errors on the first definition of a constructor, we need to
11611161
// iterate until that last element.
1162-
ConstructorBuilder earliest = constructorBuilder;
1162+
SourceConstructorBuilder earliest = constructorBuilder;
11631163
Builder earliestBuilder = constructorBuilder;
11641164
while (earliestBuilder.next != null) {
11651165
earliestBuilder = earliestBuilder.next!;
1166-
if (earliestBuilder is ConstructorBuilder) {
1166+
if (earliestBuilder is SourceConstructorBuilder) {
11671167
earliest = earliestBuilder;
11681168
}
11691169
}

pkg/front_end/lib/src/fasta/kernel/macro.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,19 @@ class MacroApplicationData {
2121
}
2222

2323
class MacroApplications {
24-
final List<Class> macros;
24+
final List<MacroApplication> macros;
2525

2626
MacroApplications(this.macros);
2727
}
2828

29+
class MacroApplication {
30+
final Class cls;
31+
final String constructorName;
32+
// TODO(johnniwinther): Add support for arguments.
33+
34+
MacroApplication(this.cls, this.constructorName);
35+
}
36+
2937
class LibraryMacroApplicationData {
3038
Map<Class, ClassMacroApplicationData> classData = {};
3139
Map<Member, MacroApplications> memberApplications = {};

0 commit comments

Comments
 (0)