diff --git a/native_toolchain_rust/lib/src/dependency_discoverer.dart b/native_toolchain_rust/lib/src/dependency_discoverer.dart index 8d63e61..7fed304 100644 --- a/native_toolchain_rust/lib/src/dependency_discoverer.dart +++ b/native_toolchain_rust/lib/src/dependency_discoverer.dart @@ -21,9 +21,27 @@ interface class DependencyDiscoverer { /// coverage for incremental rebuilds. Iterable discover(String dependencyFilePath) { logger.fine('Discovering dependencies in $dependencyFilePath'); - return File(dependencyFilePath) - .readAsLinesSync() - .expand((line) => line.trim().split(' ').skip(1)) - .map(path.toUri); + final rawContent = File(dependencyFilePath).readAsStringSync(); + // Normalize line continuations (backslash followed by newline). + final normalized = rawContent.replaceAll(RegExp(r'\\\r?\n'), ' '); + final result = []; + for (final line in normalized.split(RegExp(r'\r?\n'))) { + final trimmed = line.trim(); + if (trimmed.isEmpty) continue; + final colonIndex = trimmed.indexOf(': '); + final depsString = colonIndex != -1 + ? trimmed.substring(colonIndex + 2) + : trimmed; + // Cargo/Make dep-info escapes spaces in file paths with a backslash ('\ '). + // Split only on whitespace that is not preceded by a backslash. + final rawTokens = depsString.split(RegExp(r'(?