@@ -30,9 +30,9 @@ import 'records.dart';
3030/// Record_2_a(this.$1, this.$2, this.a);
3131///
3232/// @pragma('wasm:entry-point')
33- /// bool _checkRecordType(WasmArray<_Type> types, WasmArray <String> names) {
33+ /// bool _checkRecordType(WasmArray<_Type> types, ImmutableWasmArray <String> names) {
3434/// if (types.length != 3) return false;
35- /// if (!identical(names, const WasmArray (["a"]))) return false;
35+ /// if (!identical(names, const ImmutableWasmArray (["a"]))) return false;
3636///
3737/// if (!_isSubtype($1, types[0])) return false;
3838/// if (!_isSubtype($2, types[1])) return false;
@@ -44,7 +44,7 @@ import 'records.dart';
4444/// @pragma('wasm:entry-point')
4545/// _Type get _masqueradedRecordRuntimeType =>
4646/// _RecordType(
47- /// const WasmArray (["a"]),
47+ /// const ImmutableWasmArray (["a"]),
4848/// WasmArray.literal([
4949/// _getMasqueradedRuntimeTypeNullable($1),
5050/// _getMasqueradedRuntimeTypeNullable($2),
@@ -54,7 +54,7 @@ import 'records.dart';
5454/// @pragma('wasm:entry-point')
5555/// _Type get _recordRuntimeType =>
5656/// _RecordType(
57- /// const WasmArray (["a"]),
57+ /// const ImmutableWasmArray (["a"]),
5858/// WasmArray.literal([
5959/// _getActualRuntimeTypeNullable($1),
6060/// _getActualRuntimeTypeNullable($2),
@@ -126,6 +126,9 @@ class _RecordClassGenerator {
126126 late final Class wasmArrayClass =
127127 coreTypes.index.getClass ('dart:_wasm' , 'WasmArray' );
128128
129+ late final Class immutableWasmArrayClass =
130+ coreTypes.index.getClass ('dart:_wasm' , 'ImmutableWasmArray' );
131+
129132 late final Procedure wasmArrayRefLength =
130133 coreTypes.index.getProcedure ('dart:_wasm' , 'WasmArrayRef' , 'get:length' );
131134
@@ -144,11 +147,16 @@ class _RecordClassGenerator {
144147 late final Field wasmArrayValueField =
145148 coreTypes.index.getField ("dart:_wasm" , "WasmArray" , "_value" );
146149
150+ late final Field immutableWasmArrayValueField =
151+ coreTypes.index.getField ("dart:_wasm" , "ImmutableWasmArray" , "_value" );
152+
147153 late final InterfaceType wasmArrayOfType = InterfaceType (
148154 wasmArrayClass, Nullability .nonNullable, [nonNullableTypeType]);
149155
150- late final InterfaceType wasmArrayOfString = InterfaceType (
151- wasmArrayClass, Nullability .nonNullable, [nonNullableStringType]);
156+ late final InterfaceType immutableWasmArrayOfString = InterfaceType (
157+ immutableWasmArrayClass,
158+ Nullability .nonNullable,
159+ [nonNullableStringType]);
152160
153161 late final InterfaceType runtimeTypeType =
154162 InterfaceType (typeRuntimetypeTypeClass, Nullability .nonNullable);
@@ -414,7 +422,7 @@ class _RecordClassGenerator {
414422 Procedure _generateCheckRecordType (RecordShape shape, List <Field > fields) {
415423 final typesParameter = VariableDeclaration ('types' , type: wasmArrayOfType);
416424 final namesParameter =
417- VariableDeclaration ('names' , type: wasmArrayOfString );
425+ VariableDeclaration ('names' , type: immutableWasmArrayOfString );
418426
419427 final List <Statement > statements = [];
420428
@@ -502,7 +510,7 @@ class _RecordClassGenerator {
502510 String name, Procedure target, RecordShape shape, List <Field > fields) {
503511 final List <Statement > statements = [];
504512
505- // const WasmArray (["name1", "name2", ...])
513+ // const ImmutableWasmArray (["name1", "name2", ...])
506514 final fieldNamesList = ConstantExpression (_fieldNamesConstant (shape));
507515
508516 Expression fieldRuntimeTypeExpr (Field field) => StaticInvocation (
@@ -548,10 +556,11 @@ class _RecordClassGenerator {
548556 }
549557
550558 Constant _fieldNamesConstant (RecordShape shape) {
551- return InstanceConstant (wasmArrayClass .reference, [
559+ return InstanceConstant (immutableWasmArrayClass .reference, [
552560 nonNullableStringType
553561 ], {
554- wasmArrayValueField.fieldReference: ListConstant (nonNullableStringType,
562+ immutableWasmArrayValueField.fieldReference: ListConstant (
563+ nonNullableStringType,
555564 shape.names.map ((name) => StringConstant (name)).toList ())
556565 });
557566 }
0 commit comments