@@ -600,7 +600,6 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
600
600
if (! c.isMixinDeclaration) {
601
601
_defineExtensionMembers (className, body);
602
602
}
603
- _emitClassMetadata (c.annotations, className, body);
604
603
605
604
var classDef = js_ast.Statement .from (body);
606
605
var typeFormals = c.typeParameters;
@@ -1162,19 +1161,6 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
1162
1161
}
1163
1162
}
1164
1163
1165
- void _emitClassMetadata (List <Expression > metadata,
1166
- js_ast.Expression className, List <js_ast.Statement > body) {
1167
- // Metadata
1168
- if (_options.emitMetadata && metadata.isNotEmpty) {
1169
- body.add (js.statement ('#[#.metadata] = #;' , [
1170
- className,
1171
- runtimeModule,
1172
- _arrowFunctionWithLetScope (() => js_ast.ArrayInitializer (
1173
- metadata.map (_instantiateAnnotation).toList ()))
1174
- ]));
1175
- }
1176
- }
1177
-
1178
1164
/// Ensure `dartx.` symbols we will use are present.
1179
1165
void _initExtensionSymbols (Class c) {
1180
1166
if (_extensionTypes.hasNativeSubtype (c) || c == _coreTypes.objectClass) {
@@ -1272,7 +1258,7 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
1272
1258
for (var member in classProcedures) {
1273
1259
// Static getters/setters/methods cannot be called with dynamic dispatch,
1274
1260
// nor can they be torn off.
1275
- if (! _options.emitMetadata && member.isStatic) continue ;
1261
+ if (member.isStatic) continue ;
1276
1262
1277
1263
var name = member.name.name;
1278
1264
var reifiedType = _memberRuntimeType (member, c) as FunctionType ;
@@ -1293,14 +1279,11 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
1293
1279
if (needsSignature) {
1294
1280
js_ast.Expression type;
1295
1281
if (member.isAccessor) {
1296
- type = _emitAnnotatedResult (
1297
- _emitType (member.isGetter
1298
- ? reifiedType.returnType
1299
- : reifiedType.positionalParameters[0 ]),
1300
- member.annotations,
1301
- member);
1282
+ type = _emitType (member.isGetter
1283
+ ? reifiedType.returnType
1284
+ : reifiedType.positionalParameters[0 ]);
1302
1285
} else {
1303
- type = _emitAnnotatedFunctionType (reifiedType, member);
1286
+ type = visitFunctionType (reifiedType, member : member);
1304
1287
}
1305
1288
var property = js_ast.Property (_declareMemberName (member), type);
1306
1289
var signatures = getSignatureList (member);
@@ -1329,7 +1312,7 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
1329
1312
for (var field in classFields) {
1330
1313
// Only instance fields need to be saved for dynamic dispatch.
1331
1314
var isStatic = field.isStatic;
1332
- if (! _options.emitMetadata && isStatic) continue ;
1315
+ if (isStatic) continue ;
1333
1316
1334
1317
var memberName = _declareMemberName (field);
1335
1318
var fieldSig = _emitFieldSignature (field, c);
@@ -1339,24 +1322,6 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
1339
1322
emitSignature ('Field' , instanceFields);
1340
1323
emitSignature ('StaticField' , staticFields);
1341
1324
1342
- if (_options.emitMetadata) {
1343
- var constructors = < js_ast.Property > [];
1344
- var allConstructors = [
1345
- ...c.constructors,
1346
- ...c.procedures.where ((p) => p.isFactory),
1347
- ];
1348
- for (var ctor in allConstructors) {
1349
- var memberName = _constructorName (ctor.name.name);
1350
- var type = _emitAnnotatedFunctionType (
1351
- ctor.function
1352
- .computeThisFunctionType (c.enclosingLibrary.nonNullable)
1353
- .withoutTypeParameters,
1354
- ctor);
1355
- constructors.add (js_ast.Property (memberName, type));
1356
- }
1357
- emitSignature ('Constructor' , constructors);
1358
- }
1359
-
1360
1325
// Add static property dart._runtimeType to Object.
1361
1326
// All other Dart classes will (statically) inherit this property.
1362
1327
if (c == _coreTypes.objectClass) {
@@ -1370,16 +1335,6 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
1370
1335
js_ast.Expression _emitFieldSignature (Field field, Class fromClass) {
1371
1336
var type = _typeFromClass (field.type, field.enclosingClass, fromClass);
1372
1337
var args = [_emitType (type)];
1373
- var annotations = field.annotations;
1374
- if (_options.emitMetadata &&
1375
- annotations != null &&
1376
- annotations.isNotEmpty) {
1377
- var savedUri = _currentUri;
1378
- _currentUri = field.enclosingClass.fileUri;
1379
- args.add (js_ast.ArrayInitializer (
1380
- annotations.map (_instantiateAnnotation).toList ()));
1381
- _currentUri = savedUri;
1382
- }
1383
1338
return runtimeCall (
1384
1339
field.isFinal ? 'finalFieldType(#)' : 'fieldType(#)' , [args]);
1385
1340
}
@@ -2067,9 +2022,6 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
2067
2022
]) as js_ast.Fun );
2068
2023
}
2069
2024
2070
- js_ast.Expression _instantiateAnnotation (Expression node) =>
2071
- _visitExpression (node);
2072
-
2073
2025
void _registerExtensionType (
2074
2026
Class c, String jsPeerName, List <js_ast.Statement > body) {
2075
2027
var className = _emitTopLevelName (c);
@@ -2181,19 +2133,6 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
2181
2133
return body;
2182
2134
}
2183
2135
2184
- js_ast.ArrowFun _arrowFunctionWithLetScope (
2185
- js_ast.Expression Function () visitBody) {
2186
- var savedLetVariables = _letVariables;
2187
- _letVariables = [];
2188
-
2189
- var expr = visitBody ();
2190
- var letVars = _initLetVariables ();
2191
-
2192
- _letVariables = savedLetVariables;
2193
- return js_ast.ArrowFun (
2194
- [], letVars == null ? expr : js_ast.Block ([letVars, expr.toReturn ()]));
2195
- }
2196
-
2197
2136
js_ast.PropertyAccess _emitTopLevelName (NamedNode n, {String suffix = '' }) {
2198
2137
return _emitJSInterop (n) ?? _emitTopLevelNameNoInterop (n, suffix: suffix);
2199
2138
}
@@ -2540,18 +2479,6 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
2540
2479
var nameExpr = _emitTopLevelName (p);
2541
2480
body.add (js.statement ('# = #' ,
2542
2481
[nameExpr, js_ast.NamedFunction (_emitTemporaryId (p.name.name), fn)]));
2543
- // Function types of top-level/static functions are only needed when
2544
- // dart:mirrors is enabled.
2545
- // TODO(jmesserly): do we even need this for mirrors, since statics are not
2546
- // commonly reflected on?
2547
- if (_options.emitMetadata && _reifyFunctionType (p.function)) {
2548
- body.add (_emitFunctionTagged (
2549
- nameExpr,
2550
- p.function
2551
- .computeThisFunctionType (p.enclosingLibrary.nonNullable),
2552
- topLevel: true )
2553
- .toStatement ());
2554
- }
2555
2482
2556
2483
_currentUri = savedUri;
2557
2484
_staticTypeContext.leaveMember (p);
@@ -2887,24 +2814,6 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
2887
2814
return _emitNullabilityWrapper (typeRep, type.nullability);
2888
2815
}
2889
2816
2890
- js_ast.Expression _emitAnnotatedFunctionType (
2891
- FunctionType type, Member member) {
2892
- var result = visitFunctionType (type, member: member);
2893
-
2894
- var annotations = member.annotations;
2895
- if (_options.emitMetadata && annotations.isNotEmpty) {
2896
- // TODO(jmesserly): should we disable source info for annotations?
2897
- var savedUri = _currentUri;
2898
- _currentUri = member.enclosingClass.fileUri;
2899
- result = js_ast.ArrayInitializer ([
2900
- result,
2901
- for (var annotation in annotations) _instantiateAnnotation (annotation)
2902
- ]);
2903
- _currentUri = savedUri;
2904
- }
2905
- return result;
2906
- }
2907
-
2908
2817
/// Emits an expression that lets you access statics on a [type] from code.
2909
2818
js_ast.Expression _emitConstructorAccess (InterfaceType type) {
2910
2819
return _emitJSInterop (type.classNode) ??
@@ -2923,21 +2832,6 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
2923
2832
return _emitTopLevelName (c);
2924
2833
}
2925
2834
2926
- // Wrap a result - usually a type - with its metadata. The runtime is
2927
- // responsible for unpacking this.
2928
- js_ast.Expression _emitAnnotatedResult (
2929
- js_ast.Expression result, List <Expression > metadata, Member member) {
2930
- if (_options.emitMetadata && metadata.isNotEmpty) {
2931
- // TODO(jmesserly): should we disable source info for annotations?
2932
- var savedUri = _currentUri;
2933
- _currentUri = member.enclosingClass.fileUri;
2934
- result = js_ast.ArrayInitializer (
2935
- [result, for (var value in metadata) _instantiateAnnotation (value)]);
2936
- _currentUri = savedUri;
2937
- }
2938
- return result;
2939
- }
2940
-
2941
2835
/// Emits named parameters in the form '{name: type}'.
2942
2836
js_ast.ObjectInitializer _emitTypeProperties (Iterable <NamedType > types) {
2943
2837
return js_ast.ObjectInitializer (types
@@ -2949,17 +2843,8 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
2949
2843
///
2950
2844
/// Annotatable contexts include typedefs and method/function declarations.
2951
2845
js_ast.ArrayInitializer _emitTypeNames (List <DartType > types,
2952
- List <VariableDeclaration > parameters, Member member) {
2953
- var result = < js_ast.Expression > [];
2954
- for (var i = 0 ; i < types.length; ++ i) {
2955
- var type = _emitType (types[i]);
2956
- if (parameters != null ) {
2957
- type = _emitAnnotatedResult (type, parameters[i].annotations, member);
2958
- }
2959
- result.add (type);
2960
- }
2961
- return js_ast.ArrayInitializer (result);
2962
- }
2846
+ List <VariableDeclaration > parameters, Member member) =>
2847
+ js_ast.ArrayInitializer ([for (var type in types) _emitType (type)]);
2963
2848
2964
2849
@override
2965
2850
js_ast.Expression visitTypeParameterType (TypeParameterType type) =>
0 commit comments