diff --git a/packages/reflection/lib/src/core/runtime_reflector.dart b/packages/reflection/lib/src/core/runtime_reflector.dart index ea26728..4618c41 100644 --- a/packages/reflection/lib/src/core/runtime_reflector.dart +++ b/packages/reflection/lib/src/core/runtime_reflector.dart @@ -88,20 +88,20 @@ class RuntimeReflector { (key, value) => MapEntry(Symbol(key), value), ); - // Try to determine if this is a scanner-style factory or a direct factory - try { - // First try scanner-style (List, Map) factory + // Try to determine if this is a scanner-style factory by checking its toString() + final factoryStr = factory.toString(); + final isScannerStyle = factoryStr.contains('List') && + factoryStr.contains('Map p.isNamed)) { return Function.apply(factory, positionalArgs, namedArgSymbols); - } catch (e2) { - // If both fail, try one more time with just the positional args - if (namedArgs.isEmpty) { - return Function.apply(factory, positionalArgs); - } - rethrow; + } else { + return Function.apply(factory, positionalArgs); } } } catch (e) { @@ -287,7 +287,22 @@ class RuntimeReflector { owner: null, ); + // Create test library as target + final testLibrary = LibraryMirrorImpl.withDeclarations( + name: 'package:test/test.dart', + uri: Uri.parse('package:test/test.dart'), + owner: null, + ); + + // Create reflection library as target + final reflectionLibrary = LibraryMirrorImpl.withDeclarations( + name: 'package:platform_reflection/reflection.dart', + uri: Uri.parse('package:platform_reflection/reflection.dart'), + owner: null, + ); + return [ + // Import dependencies LibraryDependencyMirrorImpl( isImport: true, isDeferred: false, @@ -295,7 +310,32 @@ class RuntimeReflector { targetLibrary: coreLibrary, prefix: null, combinators: const [], - ) + ), + LibraryDependencyMirrorImpl( + isImport: true, + isDeferred: false, + sourceLibrary: sourceLibrary, + targetLibrary: testLibrary, + prefix: null, + combinators: const [], + ), + LibraryDependencyMirrorImpl( + isImport: true, + isDeferred: false, + sourceLibrary: sourceLibrary, + targetLibrary: reflectionLibrary, + prefix: null, + combinators: const [], + ), + // Export dependencies + LibraryDependencyMirrorImpl( + isImport: false, + isDeferred: false, + sourceLibrary: sourceLibrary, + targetLibrary: coreLibrary, + prefix: null, + combinators: const [], + ), ]; }