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

Commit 889e403

Browse files
author
Dart CI
committed
Version 2.18.0-36.0.dev
Merge commit '4258a0579832c2195f4a492a641c79e62cab146f' into 'dev'
2 parents f7e6224 + 4258a05 commit 889e403

File tree

48 files changed

+212
-119
lines changed

Some content is hidden

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

48 files changed

+212
-119
lines changed

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart'
99
import 'package:_fe_analyzer_shared/src/scanner/scanner.dart' show Token;
1010
import 'package:kernel/ast.dart'
1111
show DartType, DynamicType, Expression, VariableDeclaration;
12-
import 'package:kernel/src/legacy_erasure.dart';
1312

1413
import '../constant_context.dart' show ConstantContext;
1514
import '../kernel/body_builder.dart' show BodyBuilder;
@@ -147,9 +146,6 @@ class FormalParameterBuilder extends ModifierBuilderImpl
147146
SourceLibraryBuilder library, int functionNestingLevel) {
148147
if (variable == null) {
149148
DartType? builtType = type?.build(library);
150-
if (!library.isNonNullableByDefault && builtType != null) {
151-
builtType = legacyErasure(builtType);
152-
}
153149
variable = new VariableDeclarationImpl(
154150
name == noNameSentinel ? null : name, functionNestingLevel,
155151
type: builtType,

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,6 @@ abstract class LibraryBuilder implements ModifierBuilder {
7373

7474
NameIterator get nameIterator;
7575

76-
Builder? addBuilder(String? name, Builder declaration, int charOffset);
77-
7876
void addExporter(LibraryBuilder exporter,
7977
List<CombinatorBuilder>? combinators, int charOffset);
8078

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,20 @@ class NullabilityBuilder {
5858
// ignore: unnecessary_null_comparison
5959
assert(libraryBuilder != null);
6060

61-
Nullability ifOmitted = libraryBuilder.isNonNullableByDefault
62-
? Nullability.nonNullable
63-
: Nullability.legacy;
6461
switch (_syntacticNullability) {
6562
case SyntacticNullability.legacy:
6663
return Nullability.legacy;
6764
case SyntacticNullability.nullable:
65+
return libraryBuilder.isNonNullableByDefault
66+
? Nullability.nullable
67+
// This is an error case.
68+
: Nullability.legacy;
6869
case SyntacticNullability.inherent:
6970
return Nullability.nullable;
7071
case SyntacticNullability.omitted:
71-
return ifOmitted;
72+
return libraryBuilder.isNonNullableByDefault
73+
? Nullability.nonNullable
74+
: Nullability.legacy;
7275
}
7376
}
7477

pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ class DillLibraryBuilder extends LibraryBuilderImpl {
102102
isBuiltAndMarked = true;
103103
if (isBuilt) return;
104104
isBuilt = true;
105-
library.classes.forEach(addClass);
106-
library.extensions.forEach(addExtension);
105+
library.classes.forEach(_addClass);
106+
library.extensions.forEach(_addExtension);
107107

108108
Map<String, Map<Name, Procedure>> tearOffs = {};
109109
List<Procedure> nonTearOffs = [];
@@ -116,12 +116,12 @@ class DillLibraryBuilder extends LibraryBuilderImpl {
116116
nonTearOffs.add(procedure);
117117
}
118118
}
119-
nonTearOffs.forEach(addMember);
120-
library.procedures.forEach(addMember);
119+
nonTearOffs.forEach(_addMember);
120+
library.procedures.forEach(_addMember);
121121
for (Typedef typedef in library.typedefs) {
122122
addTypedef(typedef, tearOffs[typedef.name]);
123123
}
124-
library.fields.forEach(addMember);
124+
library.fields.forEach(_addMember);
125125

126126
if (isReadyToFinalizeExports) {
127127
finalizeExports();
@@ -153,27 +153,26 @@ class DillLibraryBuilder extends LibraryBuilderImpl {
153153

154154
@override
155155
void addSyntheticDeclarationOfDynamic() {
156-
addBuilder("dynamic",
157-
new DynamicTypeDeclarationBuilder(const DynamicType(), this, -1), -1);
156+
_addBuilder("dynamic",
157+
new DynamicTypeDeclarationBuilder(const DynamicType(), this, -1));
158158
}
159159

160160
@override
161161
void addSyntheticDeclarationOfNever() {
162-
addBuilder(
162+
_addBuilder(
163163
"Never",
164164
new NeverTypeDeclarationBuilder(
165-
const NeverType.nonNullable(), this, -1),
166-
-1);
165+
const NeverType.nonNullable(), this, -1));
167166
}
168167

169168
@override
170169
void addSyntheticDeclarationOfNull() {
171170
// The name "Null" is declared by the class Null.
172171
}
173172

174-
void addClass(Class cls) {
173+
void _addClass(Class cls) {
175174
DillClassBuilder classBuilder = new DillClassBuilder(cls, this);
176-
addBuilder(cls.name, classBuilder, cls.fileOffset);
175+
_addBuilder(cls.name, classBuilder);
177176
Map<String, Procedure> tearOffs = {};
178177
List<Procedure> nonTearOffs = [];
179178
for (Procedure procedure in cls.procedures) {
@@ -205,13 +204,13 @@ class DillLibraryBuilder extends LibraryBuilderImpl {
205204
}
206205
}
207206

208-
void addExtension(Extension extension) {
207+
void _addExtension(Extension extension) {
209208
DillExtensionBuilder extensionBuilder =
210209
new DillExtensionBuilder(extension, this);
211-
addBuilder(extension.name, extensionBuilder, extension.fileOffset);
210+
_addBuilder(extension.name, extensionBuilder);
212211
}
213212

214-
void addMember(Member member) {
213+
void _addMember(Member member) {
215214
if (member.isExtensionMember) {
216215
return null;
217216
}
@@ -233,24 +232,20 @@ class DillLibraryBuilder extends LibraryBuilderImpl {
233232
json != null ? new Map<String, String>.from(json) : null;
234233
} else {
235234
if (member is Field) {
236-
addBuilder(name, new DillFieldBuilder(member, this), member.fileOffset);
235+
_addBuilder(name, new DillFieldBuilder(member, this));
237236
} else if (member is Procedure) {
238237
switch (member.kind) {
239238
case ProcedureKind.Setter:
240-
addBuilder(
241-
name, new DillSetterBuilder(member, this), member.fileOffset);
239+
_addBuilder(name, new DillSetterBuilder(member, this));
242240
break;
243241
case ProcedureKind.Getter:
244-
addBuilder(
245-
name, new DillGetterBuilder(member, this), member.fileOffset);
242+
_addBuilder(name, new DillGetterBuilder(member, this));
246243
break;
247244
case ProcedureKind.Operator:
248-
addBuilder(
249-
name, new DillOperatorBuilder(member, this), member.fileOffset);
245+
_addBuilder(name, new DillOperatorBuilder(member, this));
250246
break;
251247
case ProcedureKind.Method:
252-
addBuilder(
253-
name, new DillMethodBuilder(member, this), member.fileOffset);
248+
_addBuilder(name, new DillMethodBuilder(member, this));
254249
break;
255250
case ProcedureKind.Factory:
256251
throw new UnsupportedError(
@@ -263,8 +258,7 @@ class DillLibraryBuilder extends LibraryBuilderImpl {
263258
}
264259
}
265260

266-
@override
267-
Builder? addBuilder(String? name, Builder declaration, int charOffset) {
261+
Builder? _addBuilder(String? name, Builder declaration) {
268262
if (name == null || name.isEmpty) return null;
269263

270264
bool isSetter = declaration.isSetter;
@@ -292,8 +286,8 @@ class DillLibraryBuilder extends LibraryBuilderImpl {
292286
if (type is FunctionType && type.typedefType == null) {
293287
unhandled("null", "addTypedef", typedef.fileOffset, typedef.fileUri);
294288
}
295-
addBuilder(typedef.name, new DillTypeAliasBuilder(typedef, tearOffs, this),
296-
typedef.fileOffset);
289+
_addBuilder(
290+
typedef.name, new DillTypeAliasBuilder(typedef, tearOffs, this));
297291
}
298292

299293
@override

pkg/front_end/lib/src/fasta/import.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class Import {
6262

6363
Uri get fileUri => importer.fileUri;
6464

65-
void finalizeImports(LibraryBuilder importer) {
65+
void finalizeImports(SourceLibraryBuilder importer) {
6666
if (nativeImportPath != null) return;
6767
void Function(String, Builder) add;
6868
if (prefixBuilder == null) {

pkg/front_end/lib/src/fasta/source/source_library_builder.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -787,7 +787,6 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
787787
}
788788
}
789789

790-
@override
791790
Builder? addBuilder(String? name, Builder declaration, int charOffset,
792791
{Reference? getterReference, Reference? setterReference}) {
793792
// TODO(ahe): Set the parent correctly here. Could then change the

pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2283,12 +2283,16 @@ class TypeInferrerImpl implements TypeInferrer {
22832283
explicitTypeArguments == null &&
22842284
calleeTypeParameters.isNotEmpty;
22852285
bool typeChecksNeeded = !isTopLevel;
2286+
bool useFormalAndActualTypes = inferenceNeeded ||
2287+
typeChecksNeeded ||
2288+
isSpecialCasedBinaryOperator ||
2289+
isSpecialCasedTernaryOperator;
22862290

22872291
List<DartType>? inferredTypes;
22882292
Substitution? substitution;
22892293
List<DartType>? formalTypes;
22902294
List<DartType>? actualTypes;
2291-
if (inferenceNeeded || typeChecksNeeded) {
2295+
if (useFormalAndActualTypes) {
22922296
formalTypes = [];
22932297
actualTypes = [];
22942298
}
@@ -2448,7 +2452,7 @@ class TypeInferrerImpl implements TypeInferrer {
24482452
?.add(flowAnalysis.equalityOperand_end(expression, inferredType));
24492453
arguments.positional[index] = expression..parent = arguments;
24502454
}
2451-
if (inferenceNeeded || typeChecksNeeded) {
2455+
if (useFormalAndActualTypes) {
24522456
formalTypes!.add(formalType);
24532457
actualTypes!.add(inferredType);
24542458
}
@@ -2481,7 +2485,7 @@ class TypeInferrerImpl implements TypeInferrer {
24812485
Expression expression =
24822486
_hoist(result.expression, inferredType, hoistedExpressions);
24832487
namedArgument.value = expression..parent = namedArgument;
2484-
if (inferenceNeeded || typeChecksNeeded) {
2488+
if (useFormalAndActualTypes) {
24852489
formalTypes!.add(formalType);
24862490
actualTypes!.add(inferredType);
24872491
}
@@ -2546,8 +2550,10 @@ class TypeInferrerImpl implements TypeInferrer {
25462550
named[1].fileOffset,
25472551
name.length);
25482552
arguments.named = [new NamedExpression(named[1].name, error)];
2549-
formalTypes!.removeLast();
2550-
actualTypes!.removeLast();
2553+
if (useFormalAndActualTypes) {
2554+
formalTypes!.removeLast();
2555+
actualTypes!.removeLast();
2556+
}
25512557
}
25522558
} else if (named.length > 2) {
25532559
Map<String, NamedExpression> seenNames = <String, NamedExpression>{};
@@ -2566,8 +2572,10 @@ class TypeInferrerImpl implements TypeInferrer {
25662572
expression.fileOffset,
25672573
name.length)
25682574
..parent = prevNamedExpression;
2569-
formalTypes!.removeAt(namedTypeIndex);
2570-
actualTypes!.removeAt(namedTypeIndex);
2575+
if (useFormalAndActualTypes) {
2576+
formalTypes!.removeAt(namedTypeIndex);
2577+
actualTypes!.removeAt(namedTypeIndex);
2578+
}
25712579
} else {
25722580
seenNames[name] = expression;
25732581
uniqueNamed.add(expression);

pkg/front_end/test/text_representation/data/types_opt_out.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ stringType(
2424
String /*normal|limited.String**/ /*verbose.dart.core::String**/ o) {}
2525
voidType(void /*void*/ o) {}
2626
dynamicType(dynamic /*dynamic*/ o) {}
27-
neverType(Never /*normal|limited.Null*/ /*verbose.Null*/ o) {}
27+
neverType(Never /*Never**/ o) {}
2828
objectType(
2929
Object /*normal|limited.Object**/ /*verbose.dart.core::Object**/ o) {}
3030
genericType1(
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
var a = 1.clamp(2, 3);
2+
var b = 1.0.clamp(2, 3);
3+
var c = 1.0.clamp(2.0, 3);
4+
var d = 1.0.clamp(2, 3.0);
5+
var e = 1.0.clamp(2.0, 3.0);
6+
final f = 1.clamp(2, 3);
7+
final g = 1.0.clamp(2, 3);
8+
final h = 1.0.clamp(2.0, 3);
9+
final i = 1.0.clamp(2, 3.0);
10+
final j = 1.0.clamp(2.0, 3.0);
11+
12+
void main() {}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
var a = 1.clamp(2, 3);
2+
var b = 1.0.clamp(2, 3);
3+
var c = 1.0.clamp(2.0, 3);
4+
var d = 1.0.clamp(2, 3.0);
5+
var e = 1.0.clamp(2.0, 3.0);
6+
final f = 1.clamp(2, 3);
7+
final g = 1.0.clamp(2, 3);
8+
final h = 1.0.clamp(2.0, 3);
9+
final i = 1.0.clamp(2, 3.0);
10+
final j = 1.0.clamp(2.0, 3.0);
11+
void main() {}

0 commit comments

Comments
 (0)