Skip to content

Commit 09c0706

Browse files
authored
Roll engine, patch expression evaluation (#128255)
Roll to engine to 4f4486b00be28183b482bbb74bbed25f4db153fe pick up dart to 3.1.0-169.0.dev. Changes since last roll ``` 4f4486b00b Roll dart to 3.1.0-169.0.dev (#42602) ``` Manual roll since rolling to dart 3.1.0-169.0.dev requires patching to expression evaluation in flutter tools
1 parent 848d4f0 commit 09c0706

6 files changed

Lines changed: 54 additions & 10 deletions

File tree

bin/internal/engine.version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
59d5444cf06c7a1237ed2768d2056b102c5a702e
1+
4f4486b00be28183b482bbb74bbed25f4db153fe

packages/flutter_tools/lib/src/compile.dart

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,17 +396,25 @@ class _CompileExpressionRequest extends _CompilationRequest {
396396
super.completer,
397397
this.expression,
398398
this.definitions,
399+
this.definitionTypes,
399400
this.typeDefinitions,
401+
this.typeBounds,
402+
this.typeDefaults,
400403
this.libraryUri,
401404
this.klass,
405+
this.method,
402406
this.isStatic,
403407
);
404408

405409
String expression;
406410
List<String>? definitions;
411+
List<String>? definitionTypes;
407412
List<String>? typeDefinitions;
413+
List<String>? typeBounds;
414+
List<String>? typeDefaults;
408415
String? libraryUri;
409416
String? klass;
417+
String? method;
410418
bool isStatic;
411419

412420
@override
@@ -506,9 +514,13 @@ abstract class ResidentCompiler {
506514
Future<CompilerOutput?> compileExpression(
507515
String expression,
508516
List<String>? definitions,
517+
List<String>? definitionTypes,
509518
List<String>? typeDefinitions,
519+
List<String>? typeBounds,
520+
List<String>? typeDefaults,
510521
String? libraryUri,
511522
String? klass,
523+
String? method,
512524
bool isStatic,
513525
);
514526

@@ -835,9 +847,13 @@ class DefaultResidentCompiler implements ResidentCompiler {
835847
Future<CompilerOutput?> compileExpression(
836848
String expression,
837849
List<String>? definitions,
850+
List<String>? definitionTypes,
838851
List<String>? typeDefinitions,
852+
List<String>? typeBounds,
853+
List<String>? typeDefaults,
839854
String? libraryUri,
840855
String? klass,
856+
String? method,
841857
bool isStatic,
842858
) async {
843859
if (!_controller.hasListener) {
@@ -846,7 +862,8 @@ class DefaultResidentCompiler implements ResidentCompiler {
846862

847863
final Completer<CompilerOutput?> completer = Completer<CompilerOutput?>();
848864
final _CompileExpressionRequest request = _CompileExpressionRequest(
849-
completer, expression, definitions, typeDefinitions, libraryUri, klass, isStatic);
865+
completer, expression, definitions, definitionTypes, typeDefinitions,
866+
typeBounds, typeDefaults, libraryUri, klass, method, isStatic);
850867
_controller.add(request);
851868
return completer.future;
852869
}
@@ -867,11 +884,18 @@ class DefaultResidentCompiler implements ResidentCompiler {
867884
..writeln(request.expression);
868885
request.definitions?.forEach(server.stdin.writeln);
869886
server.stdin.writeln(inputKey);
887+
request.definitionTypes?.forEach(server.stdin.writeln);
888+
server.stdin.writeln(inputKey);
870889
request.typeDefinitions?.forEach(server.stdin.writeln);
890+
server.stdin.writeln(inputKey);
891+
request.typeBounds?.forEach(server.stdin.writeln);
892+
server.stdin.writeln(inputKey);
893+
request.typeDefaults?.forEach(server.stdin.writeln);
871894
server.stdin
872895
..writeln(inputKey)
873896
..writeln(request.libraryUri ?? '')
874897
..writeln(request.klass ?? '')
898+
..writeln(request.method ?? '')
875899
..writeln(request.isStatic);
876900

877901
return _stdoutHandler.compilerOutput?.future;

packages/flutter_tools/lib/src/run_hot.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,16 +192,21 @@ class HotRunner extends ResidentRunner {
192192
String isolateId,
193193
String expression,
194194
List<String> definitions,
195+
List<String> definitionTypes,
195196
List<String> typeDefinitions,
197+
List<String> typeBounds,
198+
List<String> typeDefaults,
196199
String libraryUri,
197200
String? klass,
201+
String? method,
198202
bool isStatic,
199203
) async {
200204
for (final FlutterDevice? device in flutterDevices) {
201205
if (device!.generator != null) {
202206
final CompilerOutput? compilerOutput =
203207
await device.generator!.compileExpression(expression, definitions,
204-
typeDefinitions, libraryUri, klass, isStatic);
208+
definitionTypes, typeDefinitions, typeBounds, typeDefaults,
209+
libraryUri, klass, method, isStatic);
205210
if (compilerOutput != null && compilerOutput.expressionData != null) {
206211
return base64.encode(compilerOutput.expressionData!);
207212
}

packages/flutter_tools/lib/src/test/flutter_platform.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,17 +392,22 @@ class FlutterPlatform extends PlatformPlugin {
392392
String isolateId,
393393
String expression,
394394
List<String> definitions,
395+
List<String> definitionTypes,
395396
List<String> typeDefinitions,
397+
List<String> typeBounds,
398+
List<String> typeDefaults,
396399
String libraryUri,
397400
String? klass,
401+
String? method,
398402
bool isStatic,
399403
) async {
400404
if (compiler == null || compiler!.compiler == null) {
401405
throw Exception('Compiler is not set up properly to compile $expression');
402406
}
403407
final CompilerOutput? compilerOutput =
404408
await compiler!.compiler!.compileExpression(expression, definitions,
405-
typeDefinitions, libraryUri, klass, isStatic);
409+
definitionTypes, typeDefinitions, typeBounds, typeDefaults, libraryUri,
410+
klass, method, isStatic);
406411
if (compilerOutput != null && compilerOutput.expressionData != null) {
407412
return base64.encode(compilerOutput.expressionData!);
408413
}

packages/flutter_tools/lib/src/vmservice.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,13 @@ typedef CompileExpression = Future<String> Function(
108108
String isolateId,
109109
String expression,
110110
List<String> definitions,
111+
List<String> definitionTypes,
111112
List<String> typeDefinitions,
113+
List<String> typeBounds,
114+
List<String> typeDefaults,
112115
String libraryUri,
113116
String? klass,
117+
String? method,
114118
bool isStatic,
115119
);
116120

@@ -256,14 +260,18 @@ Future<vm_service.VmService> setUpVmService({
256260
final String isolateId = _validateRpcStringParam('compileExpression', params, 'isolateId');
257261
final String expression = _validateRpcStringParam('compileExpression', params, 'expression');
258262
final List<String> definitions = List<String>.from(params['definitions']! as List<Object?>);
263+
final List<String> definitionTypes = List<String>.from(params['definitionTypes']! as List<Object?>);
259264
final List<String> typeDefinitions = List<String>.from(params['typeDefinitions']! as List<Object?>);
265+
final List<String> typeBounds = List<String>.from(params['typeBounds']! as List<Object?>);
266+
final List<String> typeDefaults = List<String>.from(params['typeDefaults']! as List<Object?>);
260267
final String libraryUri = params['libraryUri']! as String;
261268
final String? klass = params['klass'] as String?;
269+
final String? method = params['method'] as String?;
262270
final bool isStatic = _validateRpcBoolParam('compileExpression', params, 'isStatic');
263271

264272
final String kernelBytesBase64 = await compileExpression(isolateId,
265-
expression, definitions, typeDefinitions, libraryUri, klass,
266-
isStatic);
273+
expression, definitions, definitionTypes, typeDefinitions, typeBounds, typeDefaults,
274+
libraryUri, klass, method, isStatic);
267275
return <String, Object>{
268276
kResultType: kResultTypeSuccess,
269277
'result': <String, String>{'kernelBytes': kernelBytesBase64},

packages/flutter_tools/test/general.shard/compile_expression_test.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ void main() {
5050

5151
testWithoutContext('compile expression fails if not previously compiled', () async {
5252
final CompilerOutput? result = await generator.compileExpression(
53-
'2+2', null, null, null, null, false);
53+
'2+2', null, null, null, null, null, null, null, null, false);
5454

5555
expect(result, isNull);
5656
});
@@ -93,7 +93,7 @@ void main() {
9393
'result def\nline1\nline2\ndef\ndef /path/to/main.dart.dill.incremental 0\n'
9494
)));
9595
generator.compileExpression(
96-
'2+2', null, null, null, null, false).then(
96+
'2+2', null, null, null, null, null, null, null, null, false).then(
9797
(CompilerOutput? outputExpression) {
9898
expect(outputExpression, isNotNull);
9999
expect(outputExpression!.expressionData, <int>[1, 2, 3, 4]);
@@ -142,7 +142,8 @@ void main() {
142142
// The test manages timing via completers.
143143
final Completer<bool> lastExpressionCompleted = Completer<bool>();
144144
unawaited(
145-
generator.compileExpression('0+1', null, null, null, null, false).then(
145+
generator.compileExpression('0+1', null, null, null, null, null, null,
146+
null, null, false).then(
146147
(CompilerOutput? outputExpression) {
147148
expect(outputExpression, isNotNull);
148149
expect(outputExpression!.expressionData, <int>[0, 1, 2, 3]);
@@ -159,7 +160,8 @@ void main() {
159160

160161
// The test manages timing via completers.
161162
unawaited(
162-
generator.compileExpression('1+1', null, null, null, null, false).then(
163+
generator.compileExpression('1+1', null, null, null, null, null, null,
164+
null, null, false).then(
163165
(CompilerOutput? outputExpression) {
164166
expect(outputExpression, isNotNull);
165167
expect(outputExpression!.expressionData, <int>[4, 5, 6, 7]);

0 commit comments

Comments
 (0)