@@ -193,18 +193,21 @@ describe('array', () => {
193193 it ( 'generates correct code when array clone is used' , ( ) => {
194194 const ArraySchema = d . arrayOf ( d . u32 , 1 ) ;
195195
196- const f = ( arr : d . Infer < typeof ArraySchema > ) => {
196+ function f ( arr : d . InferGPU < typeof ArraySchema > ) {
197197 'use gpu' ;
198198 const clone = ArraySchema ( arr ) ;
199- } ;
199+ }
200200
201- const testFn = ( ) => {
201+ const external = [ 3 ] ;
202+
203+ function testFn ( ) {
202204 'use gpu' ;
203205 const myArray = ArraySchema ( [ d . u32 ( 10 ) ] ) ;
204206 const myClone = ArraySchema ( myArray ) ;
207+ const myExternal = ArraySchema ( external ) ;
205208 f ( myArray ) ;
206209 return ;
207- } ;
210+ }
208211
209212 expect ( tgpu . resolve ( [ testFn ] ) ) . toMatchInlineSnapshot ( `
210213 "fn f(arr: array<u32, 1>) {
@@ -214,6 +217,7 @@ describe('array', () => {
214217 fn testFn() {
215218 var myArray = array<u32, 1>(10u);
216219 var myClone = myArray;
220+ var myExternal = array<u32, 1>(3u);
217221 f(myArray);
218222 return;
219223 }"
@@ -538,6 +542,21 @@ describe('array', () => {
538542 }"
539543 ` ) ;
540544 } ) ;
545+
546+ it ( 'throws when trying to resolve an untyped external array' , ( ) => {
547+ const arr = [ 1 , 2 , 3 ] ;
548+ function main ( ) {
549+ 'use gpu' ;
550+ arr ;
551+ }
552+
553+ expect ( ( ) => tgpu . resolve ( [ main ] ) ) . toThrowErrorMatchingInlineSnapshot ( `
554+ [Error: Resolution of the following tree failed:
555+ - <root>
556+ - fn*:main
557+ - fn*:main(): Value [1, 2, 3] is not resolvable]
558+ ` ) ;
559+ } ) ;
541560} ) ;
542561
543562describe ( 'array.length' , ( ) => {
0 commit comments