diff --git a/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart b/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart index 8023c864a399..8ebe3e9d258a 100644 --- a/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart +++ b/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart @@ -27,7 +27,7 @@ abstract class SharedPreferencesStorePlatform { if (!value.isMock) { try { value._verifyProvidesDefaultImplementations(); - } on NoSuchMethodError catch (_) { + } catch (_) { throw AssertionError( 'Platform interfaces must not be implemented with `implements`'); } diff --git a/packages/shared_preferences/shared_preferences_platform_interface/test/shared_preferences_platform_interface_test.dart b/packages/shared_preferences/shared_preferences_platform_interface/test/shared_preferences_platform_interface_test.dart index 8efe885c122c..168802a03367 100644 --- a/packages/shared_preferences/shared_preferences_platform_interface/test/shared_preferences_platform_interface_test.dart +++ b/packages/shared_preferences/shared_preferences_platform_interface/test/shared_preferences_platform_interface_test.dart @@ -17,6 +17,16 @@ void main() { throwsAssertionError, ); }); + + test('disallows implementing interface, unusual exception', () { + expect( + () { + SharedPreferencesStorePlatform.instance = + IllegalImplementationWithUnusualException(); + }, + throwsAssertionError, + ); + }); }); } @@ -46,3 +56,12 @@ class IllegalImplementation implements SharedPreferencesStorePlatform { throw UnimplementedError(); } } + +class IllegalImplementationWithUnusualException extends IllegalImplementation { + @override + dynamic noSuchMethod(Invocation invocation) { + throw _UnusualException(); + } +} + +class _UnusualException {}