diff --git a/packages/reflection/lib/src/core/scanner.dart b/packages/reflection/lib/src/core/scanner.dart index 6fcd04a..57641cc 100644 --- a/packages/reflection/lib/src/core/scanner.dart +++ b/packages/reflection/lib/src/core/scanner.dart @@ -117,12 +117,14 @@ class Scanner { // Create and register factory function final factory = _createConstructorFactory(type, constructor); - Reflector.registerConstructorFactory(type, constructor.name, factory); + if (factory != null) { + Reflector.registerConstructorFactory(type, constructor.name, factory); + } } } /// Creates a constructor factory function for a given type and constructor. - static Function _createConstructorFactory( + static Function? _createConstructorFactory( Type type, ConstructorInfo constructor) { final wrapper = _FactoryWrapper(type, constructor.name); return (List args, [Map? namedArgs]) { diff --git a/packages/reflection/lib/src/mirrors/isolate_mirror_impl.dart b/packages/reflection/lib/src/mirrors/isolate_mirror_impl.dart index 33370f8..78abb4a 100644 --- a/packages/reflection/lib/src/mirrors/isolate_mirror_impl.dart +++ b/packages/reflection/lib/src/mirrors/isolate_mirror_impl.dart @@ -61,20 +61,15 @@ class IsolateMirrorImpl implements IsolateMirror { if (identical(this, other)) return true; if (other is! IsolateMirrorImpl) return false; - return _debugName == other._debugName && - _isCurrent == other._isCurrent && - _rootLibrary == other._rootLibrary && - _underlyingIsolate == other._underlyingIsolate; + // Only compare debug name and isCurrent flag + // Two mirrors pointing to the same isolate should be equal + return _debugName == other._debugName && _isCurrent == other._isCurrent; } @override int get hashCode { - return Object.hash( - _debugName, - _isCurrent, - _rootLibrary, - _underlyingIsolate, - ); + // Hash code should be consistent with equals + return Object.hash(_debugName, _isCurrent); } @override