Skip to content

Commit 433f075

Browse files
author
Dart CI
committed
Version 2.19.0-369.0.dev
Merge 05ff50e into dev
2 parents 866f5cf + 05ff50e commit 433f075

Some content is hidden

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

44 files changed

+1300
-37
lines changed

pkg/compiler/lib/src/ir/util.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,11 @@ class _FreeVariableVisitor implements ir.DartTypeVisitor<bool> {
228228
return visitList(node.typeArguments);
229229
}
230230

231+
@override
232+
bool visitViewType(ir.ViewType node) {
233+
return visit(node.representationType);
234+
}
235+
231236
@override
232237
bool visitFutureOrType(ir.FutureOrType node) {
233238
return visit(node.typeArgument);

pkg/compiler/test/helpers/ir_types.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@ class TypeTextVisitor implements ir.DartTypeVisitor1<void, StringBuffer> {
129129
_writeTypeArguments(node.typeArguments, sb);
130130
}
131131

132+
@override
133+
void visitViewType(ir.ViewType node, StringBuffer sb) {
134+
writeType(node.representationType, sb);
135+
}
136+
132137
@override
133138
void visitFutureOrType(ir.FutureOrType node, StringBuffer sb) {
134139
sb.write('FutureOr<');

pkg/dev_compiler/lib/src/kernel/compiler.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2964,6 +2964,10 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
29642964
js_ast.Expression visitExtensionType(ExtensionType type) =>
29652965
type.onType.accept(this);
29662966

2967+
@override
2968+
js_ast.Expression visitViewType(ViewType type) =>
2969+
type.representationType.accept(this);
2970+
29672971
@override
29682972
js_ast.Expression visitFutureOrType(FutureOrType type) {
29692973
var normalizedType = _futureOrNormalizer.normalize(type);

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4786,6 +4786,12 @@ class IsInstantiatedVisitor implements DartTypeVisitor<bool> {
47864786
.every((DartType typeArgument) => typeArgument.accept(this));
47874787
}
47884788

4789+
@override
4790+
bool visitViewType(ViewType node) {
4791+
return node.typeArguments
4792+
.every((DartType typeArgument) => typeArgument.accept(this));
4793+
}
4794+
47894795
@override
47904796
bool visitIntersectionType(IntersectionType node) {
47914797
return node.left.accept(this) && node.right.accept(this);

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ class _InvalidTypeFinder implements DartTypeVisitor1<bool, Set<TypedefType>> {
6363
return false;
6464
}
6565

66+
@override
67+
bool visitViewType(ViewType node, Set<TypedefType> visitedTypedefs) {
68+
for (DartType typeArgument in node.typeArguments) {
69+
if (typeArgument.accept1(this, visitedTypedefs)) return true;
70+
}
71+
return false;
72+
}
73+
6674
@override
6775
bool visitFutureOrType(FutureOrType node, Set<TypedefType> visitedTypedefs) {
6876
return node.typeArgument.accept1(this, visitedTypedefs);

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1184,6 +1184,11 @@ class TypeVariableSearch implements DartTypeVisitor<bool> {
11841184
return anyTypeVariables(node.typeArguments);
11851185
}
11861186

1187+
@override
1188+
bool visitViewType(ViewType node) {
1189+
return anyTypeVariables(node.typeArguments);
1190+
}
1191+
11871192
@override
11881193
bool visitFutureOrType(FutureOrType node) {
11891194
return node.typeArgument.accept(this);

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,11 @@ class TypeBuilderComputer implements DartTypeVisitor<TypeBuilder> {
111111
throw "Not implemented";
112112
}
113113

114+
@override
115+
TypeBuilder visitViewType(ViewType node) {
116+
throw "Not implemented";
117+
}
118+
114119
@override
115120
TypeBuilder visitFutureOrType(FutureOrType node) {
116121
TypeBuilder argument = node.typeArgument.accept(this);

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,29 @@ class TypeLabeler implements DartTypeVisitor<void>, ConstantVisitor<void> {
290290
addNullability(node.declaredNullability);
291291
}
292292

293+
@override
294+
void visitViewType(ViewType node) {
295+
// TODO(johnniwinther): Ensure enclosing libraries on extensions earlier
296+
// in the compiler to ensure types in error messages have context.
297+
Library? enclosingLibrary = node.view.parent as Library?;
298+
result.add(nameForEntity(
299+
node.view,
300+
node.view.name,
301+
enclosingLibrary?.importUri ?? unknownUri,
302+
enclosingLibrary?.fileUri ?? unknownUri));
303+
if (node.typeArguments.isNotEmpty) {
304+
result.add("<");
305+
bool first = true;
306+
for (DartType typeArg in node.typeArguments) {
307+
if (!first) result.add(", ");
308+
typeArg.accept(this);
309+
first = false;
310+
}
311+
result.add(">");
312+
}
313+
addNullability(node.declaredNullability);
314+
}
315+
293316
@override
294317
void visitRecordType(RecordType node) {
295318
result.add("(");

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ class IncludesTypeParametersNonCovariantly implements DartTypeVisitor<bool> {
4747
@override
4848
bool visitExtensionType(ExtensionType node) => false;
4949

50+
@override
51+
bool visitViewType(ViewType node) => false;
52+
5053
@override
5154
bool visitNeverType(NeverType node) => false;
5255

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,14 @@ class _IsKnownVisitor implements DartTypeVisitor<bool> {
153153
return true;
154154
}
155155

156+
@override
157+
bool visitViewType(ViewType node) {
158+
for (DartType typeArgument in node.typeArguments) {
159+
if (!typeArgument.accept(this)) return false;
160+
}
161+
return true;
162+
}
163+
156164
@override
157165
bool visitRecordType(RecordType node) {
158166
for (DartType positional in node.positional) {

pkg/front_end/lib/src/testing/id_testing_utils.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,17 @@ class DartTypeToTextVisitor implements DartTypeVisitor<void> {
735735
}
736736
sb.write(nullabilityToText(node.declaredNullability, typeRepresentation));
737737
}
738+
739+
@override
740+
void visitViewType(ViewType node) {
741+
sb.write(node.view.name);
742+
if (node.typeArguments.isNotEmpty) {
743+
sb.write('<');
744+
visitList(node.typeArguments);
745+
sb.write('>');
746+
}
747+
sb.write(nullabilityToText(node.declaredNullability, typeRepresentation));
748+
}
738749
}
739750

740751
/// Returns `true` if [type] is `Object` from `dart:core`.

pkg/front_end/testcases/general/extension_annotation.dart.weak.outline.expect

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,8 @@ extension Extension on core::int {
1212
}
1313
static method main() → dynamic
1414
;
15+
16+
17+
Extra constant evaluation status:
18+
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///extension_annotation.dart:9:2 -> InstanceConstant(const A{})
19+
Extra constant evaluation: evaluated: 1, effectively constant: 1

pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.outline.expect

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_
8888
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:68:4 -> InstanceConstant(const Const{})
8989
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:69:12 -> InstanceConstant(const Const{})
9090
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:47:4 -> InstanceConstant(const Const{})
91+
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:88:2 -> InstanceConstant(const Const{})
9192
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:89:22 -> InstanceConstant(const Const{})
9293
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:32:2 -> InstanceConstant(const Const{})
9394
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:33:10 -> InstanceConstant(const Const{})
@@ -99,4 +100,4 @@ Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_
99100
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:109:12 -> InstanceConstant(const Const{})
100101
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:23:2 -> InstanceConstant(const Const{})
101102
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:90:4 -> InstanceConstant(const Const{})
102-
Extra constant evaluation: evaluated: 41, effectively constant: 29
103+
Extra constant evaluation: evaluated: 42, effectively constant: 30

pkg/front_end/tool/_fasta/bench_maker.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,11 @@ class BenchMaker implements DartTypeVisitor1<void, StringBuffer> {
380380
throw "not implemented";
381381
}
382382

383+
@override
384+
void visitViewType(ViewType node, StringBuffer sb) {
385+
throw "not implemented";
386+
}
387+
383388
Map<String, dynamic> toJson() {
384389
return <String, dynamic>{
385390
"classes": classes,

pkg/front_end/tool/ast_model.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ const Map<String?, Map<String, FieldRule?>> _fieldRuleMap = {
9595
'_classes': FieldRule(name: 'classes'),
9696
'_typedefs': FieldRule(name: 'typedefs'),
9797
'_extensions': FieldRule(name: 'extensions'),
98+
'_views': FieldRule(name: 'views'),
9899
'_fields': FieldRule(name: 'fields'),
99100
'_procedures': FieldRule(name: 'procedures'),
100101
},
@@ -115,6 +116,9 @@ const Map<String?, Map<String, FieldRule?>> _fieldRuleMap = {
115116
'Extension': {
116117
'typeParameters': FieldRule(isDeclaration: true),
117118
},
119+
'View': {
120+
'typeParameters': FieldRule(isDeclaration: true),
121+
},
118122
'Field': {
119123
'reference': FieldRule(name: 'fieldReference'),
120124
},
@@ -179,6 +183,9 @@ const Map<String?, Map<String, FieldRule?>> _fieldRuleMap = {
179183
'TypeParameterType': {
180184
'parameter': FieldRule(isDeclaration: false),
181185
},
186+
'ViewType': {
187+
'_representationType': FieldRule(name: 'representationType'),
188+
},
182189
};
183190

184191
/// Data that determines exceptions to how fields are used.

pkg/kernel/binary.md

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ type CanonicalName {
147147

148148
type ComponentFile {
149149
UInt32 magic = 0x90ABCDEF;
150-
UInt32 formatVersion = 86;
150+
UInt32 formatVersion = 87;
151151
Byte[10] shortSdkHash;
152152
List<String> problemsAsJson; // Described in problems.md.
153153
Library[] libraries;
@@ -229,6 +229,11 @@ type TypedefReference {
229229
CanonicalNameReference canonicalName;
230230
}
231231

232+
type ViewReference {
233+
// Must be populated by a view (possibly later in the file).
234+
CanonicalNameReference canonicalName;
235+
}
236+
232237
type Name {
233238
StringReference name;
234239
if name begins with '_' {
@@ -252,6 +257,7 @@ type Library {
252257
List<Typedef> typedefs;
253258
List<Class> classes;
254259
List<Extension> extensions;
260+
List<View> views;
255261
List<Field> fields;
256262
List<Procedure> procedures;
257263

@@ -344,6 +350,7 @@ type Extension extends Node {
344350
List<TypeParameter> typeParameters;
345351
DartType onType;
346352
Option<ExtensionTypeShowHideClause> showHideClause;
353+
List<ExtensionMemberDescriptor> members;
347354
}
348355

349356
type ExtensionTypeShowHideClause {
@@ -357,7 +364,6 @@ type ExtensionTypeShowHideClause {
357364
List<CanonicalNameReference> hiddenGetters;
358365
List<CanonicalNameReference> hiddenSetters;
359366
List<CanonicalNameReference> hiddenOperators;
360-
List<ExtensionMemberDescriptor> members;
361367
}
362368

363369
enum ExtensionMemberKind { Field = 0, Method = 1, Getter = 2, Setter = 3, Operator = 4, TearOff = 5, }
@@ -369,6 +375,28 @@ type ExtensionMemberDescriptor {
369375
MemberReference member;
370376
}
371377

378+
type View extends Node {
379+
Byte tag = 85;
380+
CanonicalNameReference canonicalName;
381+
StringReference name;
382+
List<Expression> annotations;
383+
UriReference fileUri;
384+
FileOffset fileOffset;
385+
Byte flags ();
386+
List<TypeParameter> typeParameters;
387+
DartType representationType;
388+
List<ViewMemberDescriptor> members;
389+
}
390+
391+
enum ViewMemberKind { Constructor = 0, Factory = 1, Field = 2, Method = 3, Getter = 4, Setter = 5, Operator = 6, TearOff = 7, }
392+
393+
type ViewMemberDescriptor {
394+
Name name;
395+
ViewMemberKind kind;
396+
Byte flags (isStatic);
397+
MemberReference member;
398+
}
399+
372400
abstract type Member extends Node {}
373401

374402
type Field extends Member {
@@ -1584,6 +1612,14 @@ type IntersectionType extends DartType {
15841612
DartType right;
15851613
}
15861614

1615+
type ViewType extends DartType {
1616+
Byte tag = 103;
1617+
Byte nullability; // Index into the Nullability enum above.
1618+
ViewReference viewReference;
1619+
List<DartType> typeArguments;
1620+
DartType representationType;
1621+
}
1622+
15871623
type TypedefType {
15881624
Byte tag = 87;
15891625
Byte nullability; // Index into the Nullability enum above.

0 commit comments

Comments
 (0)