@@ -535,6 +535,19 @@ const worker = (checker: ComponentMetaChecker, withTsconfig: boolean) => describ
535535 expect ( onBaz ?. schema ) . toEqual ( [ ] ) ;
536536 } ) ;
537537
538+ test ( 'reference-type-events for generic' , ( ) => {
539+ const componentPath = path . resolve ( __dirname , '../../../test-workspace/component-meta/generic/component.vue' ) ;
540+ const meta = checker . getComponentMeta ( componentPath ) ;
541+
542+ expect ( meta . type ) . toEqual ( TypeMeta . Function ) ;
543+
544+ const onBar = meta . events . find ( event => event . name === 'bar' ) ;
545+
546+ expect ( onBar ) . toBeDefined ( ) ;
547+ expect ( onBar ?. type ) . toEqual ( 'number' ) ;
548+ expect ( onBar ?. signature ) . toEqual ( '(e: "bar", data: number): void' ) ;
549+ } ) ;
550+
538551 test ( 'template-slots' , ( ) => {
539552 const componentPath = path . resolve ( __dirname , '../../../test-workspace/component-meta/template-slots/component.vue' ) ;
540553 const meta = checker . getComponentMeta ( componentPath ) ;
@@ -563,6 +576,18 @@ const worker = (checker: ComponentMetaChecker, withTsconfig: boolean) => describ
563576 expect ( d ) . toBeDefined ( ) ;
564577 } ) ;
565578
579+ test ( 'template-slots for generic' , ( ) => {
580+ const componentPath = path . resolve ( __dirname , '../../../test-workspace/component-meta/generic/component.vue' ) ;
581+ const meta = checker . getComponentMeta ( componentPath ) ;
582+
583+ expect ( meta . type ) . toEqual ( TypeMeta . Function ) ;
584+
585+ expect ( meta . slots . find ( slot =>
586+ slot . name === 'default'
587+ && slot . type === '{ foo: number; }'
588+ ) ) . toBeDefined ( ) ;
589+ } ) ;
590+
566591 test ( 'template-slots without a script block' , ( ) => {
567592 const componentPath = path . resolve ( __dirname , '../../../test-workspace/component-meta/template-slots/component-no-script.vue' ) ;
568593 const meta = checker . getComponentMeta ( componentPath ) ;
0 commit comments