@@ -25,14 +25,14 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
2525 < div class ='fl pad1y space-right2 '>
2626 < span class ="strong "> 100% </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 88/88 </ span >
28+ < span class ='fraction '> 98/98 </ span >
2929 </ div >
3030
3131
3232 < div class ='fl pad1y space-right2 '>
3333 < span class ="strong "> 100% </ span >
3434 < span class ="quiet "> Branches</ span >
35- < span class ='fraction '> 2/2 </ span >
35+ < span class ='fraction '> 4/4 </ span >
3636 </ div >
3737
3838
@@ -46,7 +46,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
4646 < div class ='fl pad1y space-right2 '>
4747 < span class ="strong "> 100% </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 88/88 </ span >
49+ < span class ='fraction '> 98/98 </ span >
5050 </ div >
5151
5252
@@ -151,7 +151,17 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
151151< a name ='L86 '> </ a > < a href ='#L86 '> 86</ a >
152152< a name ='L87 '> </ a > < a href ='#L87 '> 87</ a >
153153< a name ='L88 '> </ a > < a href ='#L88 '> 88</ a >
154- < a name ='L89 '> </ a > < a href ='#L89 '> 89</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
154+ < a name ='L89 '> </ a > < a href ='#L89 '> 89</ a >
155+ < a name ='L90 '> </ a > < a href ='#L90 '> 90</ a >
156+ < a name ='L91 '> </ a > < a href ='#L91 '> 91</ a >
157+ < a name ='L92 '> </ a > < a href ='#L92 '> 92</ a >
158+ < a name ='L93 '> </ a > < a href ='#L93 '> 93</ a >
159+ < a name ='L94 '> </ a > < a href ='#L94 '> 94</ a >
160+ < a name ='L95 '> </ a > < a href ='#L95 '> 95</ a >
161+ < a name ='L96 '> </ a > < a href ='#L96 '> 96</ a >
162+ < a name ='L97 '> </ a > < a href ='#L97 '> 97</ a >
163+ < a name ='L98 '> </ a > < a href ='#L98 '> 98</ a >
164+ < a name ='L99 '> </ a > < a href ='#L99 '> 99</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
155165< span class ="cline-any cline-yes "> 1x</ span >
156166< span class ="cline-any cline-yes "> 1x</ span >
157167< span class ="cline-any cline-yes "> 1x</ span >
@@ -225,15 +235,25 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
225235< span class ="cline-any cline-yes "> 1x</ span >
226236< span class ="cline-any cline-yes "> 1x</ span >
227237< span class ="cline-any cline-yes "> 1x</ span >
238+ < span class ="cline-any cline-yes "> 1x</ span >
239+ < span class ="cline-any cline-yes "> 1x</ span >
240+ < span class ="cline-any cline-yes "> 1x</ span >
241+ < span class ="cline-any cline-yes "> 22x</ span >
242+ < span class ="cline-any cline-yes "> 22x</ span >
243+ < span class ="cline-any cline-yes "> 22x</ span >
244+ < span class ="cline-any cline-yes "> 22x</ span >
245+ < span class ="cline-any cline-yes "> 22x</ span >
246+ < span class ="cline-any cline-yes "> 22x</ span >
247+ < span class ="cline-any cline-yes "> 22x</ span >
248+ < span class ="cline-any cline-yes "> 22x</ span >
249+ < span class ="cline-any cline-yes "> 10x</ span >
250+ < span class ="cline-any cline-yes "> 10x</ span >
228251< span class ="cline-any cline-yes "> 12x</ span >
229252< span class ="cline-any cline-yes "> 12x</ span >
230253< span class ="cline-any cline-yes "> 12x</ span >
231254< span class ="cline-any cline-yes "> 12x</ span >
232255< span class ="cline-any cline-yes "> 12x</ span >
233- < span class ="cline-any cline-yes "> 12x</ span >
234- < span class ="cline-any cline-yes "> 12x</ span >
235- < span class ="cline-any cline-yes "> 12x</ span >
236- < span class ="cline-any cline-yes "> 12x</ span >
256+ < span class ="cline-any cline-yes "> 22x</ span >
237257< span class ="cline-any cline-yes "> 1x</ span >
238258< span class ="cline-any cline-yes "> 1x</ span >
239259< span class ="cline-any cline-yes "> 1x</ span >
@@ -261,11 +281,13 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
261281
262282// MODULES //
263283
284+ var isScalarMostlySafeCompatible = require( '@stdlib/ndarray/base/assert/is-scalar-mostly-safe-compatible' ); // eslint-disable-line id-length
264285var broadcastScalar = require( '@stdlib/ndarray/base/broadcast-scalar' );
265286var getDtype = require( '@stdlib/ndarray/base/dtype' );
266287var getShape = require( '@stdlib/ndarray/base/shape' );
267288var getOrder = require( '@stdlib/ndarray/base/order' );
268289var assign = require( '@stdlib/ndarray/base/assign' );
290+ var format = require( '@stdlib/string/format' );
269291
270292
271293// MAIN //
@@ -281,6 +303,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
281303* @param {NonNegativeInteger} x.offset - index offset
282304* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)
283305* @param {*} value - scalar value
306+ * @throws {TypeError} second argument cannot be safely cast to the input array data type
284307* @returns {void}
285308*
286309* @example
@@ -314,10 +337,17 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
314337* // => <Float64Array>[ 10.0, 10.0, 10.0, 10.0, 10.0, 10.0 ]
315338*/
316339function fill( x, value ) {
340+ var dt;
317341 var v;
318342
343+ dt = getDtype( x );
344+
345+ // Safe casts are always allowed and allow same kind casts (i.e., downcasts) only when the output data type is floating-point...
346+ if ( !isScalarMostlySafeCompatible( value, dt ) ) {
347+ throw new TypeError( format( 'invalid argument. The second argument cannot be safely cast to the input array data type. Data type: %s. Value: `%s`.', dt, value ) );
348+ }
319349 // Broadcast the fill value to an ndarray of same shape and data type as the input ndarray:
320- v = broadcastScalar( value, getDtype( x ) , getShape( x ), getOrder( x ) );
350+ v = broadcastScalar( value, dt , getShape( x ), getOrder( x ) );
321351
322352 // Assign the fill value to each element of the input ndarray:
323353 assign( [ v, x ] ); // TODO: consider replacing with ndarray/base/assign-scalar in order to avoid zero-dimensional ndarray creation and subsequent broadcasting
@@ -334,7 +364,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
334364 < div class ='footer quiet pad2 space-top1 center small '>
335365 Code coverage generated by
336366 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
337- at 2025-03-22T12:24:41.968Z
367+ at 2025-03-23T11:34:18.970Z
338368 </ div >
339369 < script src ="../../../../prettify.js "> </ script >
340370 < script >
0 commit comments