{"record":{"id":"4a8a3c8164ba2f6c","repo":"dotnet/reactive","slug":"value-cannot-be-null-parameter-source9","errorCode":null,"errorMessage":"Value cannot be null. (Parameter 'source9')","messagePattern":"Value cannot be null\\. \\(Parameter 'source9'\\)","errorType":"validation","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"AsyncRx.NET/System.Reactive.Async/Linq/Operators/Zip.Generated.cs","lineNumber":1036,"sourceCode":"        {\n            if (source1 == null)\n                throw new ArgumentNullException(nameof(source1));\n            if (source2 == null)\n                throw new ArgumentNullException(nameof(source2));\n            if (source3 == null)\n                throw new ArgumentNullException(nameof(source3));\n            if (source4 == null)\n                throw new ArgumentNullException(nameof(source4));\n            if (source5 == null)\n                throw new ArgumentNullException(nameof(source5));\n            if (source6 == null)\n                throw new ArgumentNullException(nameof(source6));\n            if (source7 == null)\n                throw new ArgumentNullException(nameof(source7));\n            if (source8 == null)\n                throw new ArgumentNullException(nameof(source8));\n            if (source9 == null)\n                throw new ArgumentNullException(nameof(source9));\n            if (source10 == null)\n                throw new ArgumentNullException(nameof(source10));\n            if (source11 == null)\n                throw new ArgumentNullException(nameof(source11));\n            if (selector == null)\n                throw new ArgumentNullException(nameof(selector));\n\n            return Create<TResult>(async observer =>\n            {\n                var d = new CompositeAsyncDisposable();\n\n                var (observer1, observer2, observer3, observer4, observer5, observer6, observer7, observer8, observer9, observer10, observer11) = AsyncObserver.Zip(observer, selector);\n\n                var sub1 = source1.SubscribeSafeAsync(observer1).AsTask().ContinueWith(disposable => d.AddAsync(disposable.Result).AsTask()).Unwrap();\n                var sub2 = source2.SubscribeSafeAsync(observer2).AsTask().ContinueWith(disposable => d.AddAsync(disposable.Result).AsTask()).Unwrap();\n                var sub3 = source3.SubscribeSafeAsync(observer3).AsTask().ContinueWith(disposable => d.AddAsync(disposable.Result).AsTask()).Unwrap();\n                var sub4 = source4.SubscribeSafeAsync(observer4).AsTask().ContinueWith(disposable => d.AddAsync(disposable.Result).AsTask()).Unwrap();\n                var sub5 = source5.SubscribeSafeAsync(observer5).AsTask().ContinueWith(disposable => d.AddAsync(disposable.Result).AsTask()).Unwrap();","sourceCodeStart":1018,"sourceCodeEnd":1054,"githubUrl":"https://github.com/dotnet/reactive/blob/94b5d5ab912789f5abe9a72138a25bbd716fe59c/AsyncRx.NET/System.Reactive.Async/Linq/Operators/Zip.Generated.cs#L1018-L1054","documentation":"In the larger (11+ source) generated Zip overload, a null ninth sequence throws ArgumentNullException(Parameter 'source9'). All sources and the selector are validated eagerly before Create() builds the operator, so the error is thrown synchronously at the call site.","triggerScenarios":"Calling the large-arity Zip overload where source9 (IAsyncObservable<T9>) is null.","commonSituations":"A null element in a programmatically built stream list; an optional ninth feed resolved to null; copy-paste of Zip call left one argument uninitialized.","solutions":["Null-check the ninth stream before the Zip call","Replace null with AsyncObservable.Empty<T9>() when absence is valid","Fix the upstream producer or collection initializer that yielded null","Refactor to combine streams incrementally (pairwise Zip) so fewer arguments are positionally error-prone"],"exampleFix":"// before\nvar zipped = AsyncObservable.Zip(s1..s8, GetNinth(), s10, s11, selector); // GetNinth() returned null\n// after\nvar src9 = GetNinth() ?? AsyncObservable.Empty<T9>();\nvar zipped = AsyncObservable.Zip(s1..s8, src9, s10, s11, selector);","handlingStrategy":"validation","validationCode":"if (source9 is null) source9 = AsyncObservable.Empty<T9>(); // or throw with context","typeGuard":"static bool IsValidSource<T>(IAsyncObservable<T>? s) => s is not null;","tryCatchPattern":"try\n{\n    var zipped = AsyncObservable.Zip(s1, s2, s3, s4, s5, s6, s7, s8, source9, s10, s11, selector);\n}\ncatch (ArgumentNullException ex) when (ex.ParamName == \"source9\")\n{\n    // fall back to a 10-source composition without source9\n}","preventionTips":["Null-coalesce optional streams at acquisition time, not at composition time","Verify async factories returned non-null results before zipping","Refactor very high-arity zips into staged pairwise combinations","Add unit tests exercising every source slot in generated Zip calls"],"tags":["csharp","argument-null","zip","reactive-extensions"],"backgroundTag":"null-argument","analyzedSha":"94b5d5ab912789f5abe9a72138a25bbd716fe59c","analyzedAt":"2026-09-15T02:26:24.759Z","contentChangedAt":"2026-09-15T02:26:24.759Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}