@@ -192,18 +192,21 @@ describe('array', () => {
192192 it ( 'generates correct code when array clone is used' , ( ) => {
193193 const ArraySchema = d . arrayOf ( d . u32 , 1 ) ;
194194
195- const f = ( arr : d . Infer < typeof ArraySchema > ) => {
195+ function f ( arr : d . InferGPU < typeof ArraySchema > ) {
196196 'use gpu' ;
197197 const clone = ArraySchema ( arr ) ;
198- } ;
198+ }
199+
200+ const external = [ 3 ] ;
199201
200- const testFn = ( ) => {
202+ function testFn ( ) {
201203 'use gpu' ;
202204 const myArray = ArraySchema ( [ d . u32 ( 10 ) ] ) ;
203205 const myClone = ArraySchema ( myArray ) ;
206+ const myExternal = ArraySchema ( external ) ;
204207 f ( myArray ) ;
205208 return ;
206- } ;
209+ }
207210
208211 expect ( tgpu . resolve ( [ testFn ] ) ) . toMatchInlineSnapshot ( `
209212 "fn f(arr: array<u32, 1>) {
@@ -213,6 +216,7 @@ describe('array', () => {
213216 fn testFn() {
214217 var myArray = array<u32, 1>(10u);
215218 var myClone = myArray;
219+ var myExternal = array<u32, 1>(3u);
216220 f(myArray);
217221 return;
218222 }"
@@ -443,6 +447,21 @@ describe('array', () => {
443447 }"
444448 ` ) ;
445449 } ) ;
450+
451+ it ( 'throws when trying to resolve an untyped external array' , ( ) => {
452+ const arr = [ 1 , 2 , 3 ] ;
453+ function main ( ) {
454+ 'use gpu' ;
455+ arr ;
456+ }
457+
458+ expect ( ( ) => tgpu . resolve ( [ main ] ) ) . toThrowErrorMatchingInlineSnapshot ( `
459+ [Error: Resolution of the following tree failed:
460+ - <root>
461+ - fn*:main
462+ - fn*:main(): Value [1, 2, 3] is not resolvable]
463+ ` ) ;
464+ } ) ;
446465} ) ;
447466
448467describe ( 'array.length' , ( ) => {
0 commit comments