Skip to content

Commit b12fedc

Browse files
nshahanCommit Queue
authored andcommitted
[ddc] Add hot reload rejection for type parameters
Changing the number of type parameters on a class is not supported in a hot reload. Issue: #60101 Change-Id: I3e397f26ca80e655dcb3d2807ddefd59c89adddb Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/409381 Commit-Queue: Nicholas Shahan <[email protected]> Reviewed-by: Mark Zhou <[email protected]>
1 parent 969f642 commit b12fedc

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class HotReloadDeltaInspector {
3939
// No previous version of the class to compare with.
4040
continue;
4141
}
42+
_checkClassTypeParametersCountChange(acceptedClass, deltaClass);
4243
if (acceptedClass.hasConstConstructor) {
4344
_checkConstClassConsistency(acceptedClass, deltaClass);
4445
_checkConstClassDeletedFields(acceptedClass, deltaClass);
@@ -93,6 +94,22 @@ class HotReloadDeltaInspector {
9394
'Class: ${deltaClass.name}');
9495
}
9596
}
97+
98+
/// Records a rejection error when the number of [TypeParameter]s on a class
99+
/// changes between [acceptedClass] and [deltaClass].
100+
///
101+
/// [acceptedClass] and [deltaClass] must represent the same class in the
102+
/// last known accepted and delta components respectively.
103+
void _checkClassTypeParametersCountChange(
104+
Class acceptedClass, Class deltaClass) {
105+
if (acceptedClass.typeParameters.length !=
106+
deltaClass.typeParameters.length) {
107+
_rejectionMessages.add(
108+
'Limitation: changing type parameters does not work with hot reload.'
109+
"Library:'${deltaClass.enclosingLibrary.importUri}' "
110+
'Class: ${deltaClass.name}');
111+
}
112+
}
96113
}
97114

98115
const hotReloadLibraryMetadataTag = 'ddc.hot-reload-library.metadata';

0 commit comments

Comments
 (0)