Skip to content

Commit 9988b7e

Browse files
fbbdevleaanthony
andauthored
[v3] Binding generator tests for Go 1.24 features (#4068)
* Enable go1.24 tests This reverts commit e38684e7885c9c7b5ad3f704ad500c39bbce7715. * Testdata for go1.24 This reverts commit 7ed397dc452f420551dfdd05dfe0c6a7646b3ba4. * Require go 1.24 * Update changelog * Add test for omitzero --------- Co-authored-by: Lea Anthony <[email protected]>
1 parent e4f0b64 commit 9988b7e

File tree

54 files changed

+5070
-134
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+5070
-134
lines changed

docs/src/content/docs/changelog.mdx

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
5353
- Add `//wails:ignore` directive to prevent binding generation for chosen service methods by [@fbbdev](https://github.com/fbbdev) in [#4045](https://github.com/wailsapp/wails/pull/4045)
5454
- Add `//wails:internal` directive on services and models to allow for types that are exported in Go but not in JS/TS by [@fbbdev](https://github.com/fbbdev) in [#4045](https://github.com/wailsapp/wails/pull/4045)
5555
- Add binding generator support for constants of alias type to allow for weakly typed enums by [@fbbdev](https://github.com/fbbdev) in [#4045](https://github.com/wailsapp/wails/pull/4045)
56+
- Add binding generator tests for Go 1.24 features by [@fbbdev](https://github.com/fbbdev) in [#4068](https://github.com/wailsapp/wails/pull/4068)
5657
- Add support for macOS 15 "Sequoia" to `OSInfo.Branding` for improved OS version detection in [#4065](https://github.com/wailsapp/wails/pull/4065)
5758
- Add `PostShutdown` hook for running custom code after the shutdown process completes by [@fbbdev](https://github.com/fbbdev) in [#4066](https://github.com/wailsapp/wails/pull/4066)
5859
- Add `FatalError` struct to support detection of fatal errors in custom error handlers by [@fbbdev](https://github.com/fbbdev) in [#4066](https://github.com/wailsapp/wails/pull/4066)

v3/internal/generator/testcases/aliases/main.go

+23-22
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
_ "embed"
5+
"encoding"
56
"log"
67

78
nobindingshere "github.com/wailsapp/wails/v3/internal/generator/testcases/no_bindings_here"
@@ -54,37 +55,37 @@ type GenericPerson[T any] struct {
5455
type StrangelyAliasedPerson = Person
5556

5657
// A generic alias that forwards to a type parameter.
57-
// type GenericAlias[T any] = T
58+
type GenericAlias[T any] = T
5859

5960
// A generic alias that wraps a pointer type.
60-
// type GenericPtrAlias[T any] = *GenericAlias[T]
61+
type GenericPtrAlias[T any] = *GenericAlias[T]
6162

6263
// A generic alias that wraps a map.
63-
// type GenericMapAlias[T interface {
64-
// comparable
65-
// encoding.TextMarshaler
66-
// }, U any] = map[T]U
64+
type GenericMapAlias[T interface {
65+
comparable
66+
encoding.TextMarshaler
67+
}, U any] = map[T]U
6768

6869
// A generic alias that wraps a generic struct.
69-
// type GenericPersonAlias[T any] = GenericPerson[[]GenericPtrAlias[T]]
70+
type GenericPersonAlias[T any] = GenericPerson[[]GenericPtrAlias[T]]
7071

7172
// An alias that wraps a class through a non-typeparam alias.
72-
// type IndirectPersonAlias = GenericPersonAlias[bool]
73+
type IndirectPersonAlias = GenericPersonAlias[bool]
7374

7475
// An alias that wraps a class through a typeparam alias.
75-
// type TPIndirectPersonAlias = GenericAlias[GenericPerson[bool]]
76+
type TPIndirectPersonAlias = GenericAlias[GenericPerson[bool]]
7677

7778
// A class whose fields have various aliased types.
78-
// type AliasGroup struct {
79-
// GAi GenericAlias[int]
80-
// GAP GenericAlias[GenericPerson[bool]]
81-
// GPAs GenericPtrAlias[[]string]
82-
// GPAP GenericPtrAlias[GenericPerson[[]int]]
83-
// GMA GenericMapAlias[struct{ encoding.TextMarshaler }, float32]
84-
// GPA GenericPersonAlias[bool]
85-
// IPA IndirectPersonAlias
86-
// TPIPA TPIndirectPersonAlias
87-
// }
79+
type AliasGroup struct {
80+
GAi GenericAlias[int]
81+
GAP GenericAlias[GenericPerson[bool]]
82+
GPAs GenericPtrAlias[[]string]
83+
GPAP GenericPtrAlias[GenericPerson[[]int]]
84+
GMA GenericMapAlias[struct{ encoding.TextMarshaler }, float32]
85+
GPA GenericPersonAlias[bool]
86+
IPA IndirectPersonAlias
87+
TPIPA TPIndirectPersonAlias
88+
}
8889

8990
// Get someone.
9091
func (GreetService) Get(aliasValue Alias) Person {
@@ -105,9 +106,9 @@ func (GreetService) GetButForeignPrivateAlias() (_ nobindingshere.PrivatePerson)
105106
return
106107
}
107108

108-
// func (GreetService) GetButGenericAliases() (_ AliasGroup) {
109-
// return
110-
// }
109+
func (GreetService) GetButGenericAliases() (_ AliasGroup) {
110+
return
111+
}
111112

112113
// Greet a lot of unusual things.
113114
func (GreetService) Greet(EmptyAliasStruct, EmptyStruct) AliasStruct {

v3/internal/generator/testcases/complex_instantiations/bound_types.json

+2
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,7 @@
1212
".Service11",
1313
".Service12",
1414
".Service13",
15+
".Service14",
16+
".Service15",
1517
"/other.Service16"
1618
]

v3/internal/generator/testcases/complex_instantiations/main.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ type Service13 struct{}
2424
type Service14 struct{}
2525
type Service15 struct{}
2626

27-
// type SimplifiedFactory[T any] = Factory[T, Service15]
27+
type SimplifiedFactory[T any] = Factory[T, Service15]
2828

2929
func main() {
3030
factory := NewFactory[Service1, Service2]()
@@ -42,7 +42,7 @@ func main() {
4242
other.CustomNewService(Service7{}),
4343
other.ServiceInitialiser[Service8]()(&Service8{}),
4444
application.NewServiceWithOptions(&Service13{}, application.ServiceOptions{Name: "custom name"}),
45-
// SimplifiedFactory[Service14]{}.Get(),
45+
SimplifiedFactory[Service14]{}.Get(),
4646
other.LocalService,
4747
},
4848
CustomNewServices[Service9, Service10]()...),

v3/internal/generator/testcases/complex_json/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ type Embedded3 string
5252
// Person represents a person
5353
type Person struct {
5454
// Titles is optional in JSON
55-
Titles []Title `json:",omitempty"`
55+
Titles []Title `json:",omitzero"`
5656

5757
// Names has a
5858
// multiline comment

v3/internal/generator/testcases/map_keys/main.go

+75-75
Original file line numberDiff line numberDiff line change
@@ -106,24 +106,24 @@ type InterfacePtrType *encoding.TextMarshaler
106106
type InterfaceAlias = encoding.TextMarshaler
107107
type InterfacePtrAlias = *encoding.TextMarshaler
108108

109-
// type ComparableCstrAlias[R comparable] = R
110-
// type ComparableCstrPtrAlias[R comparable] = *R
111-
// type BasicCstrAlias[S BasicConstraint] = S
112-
// type BasicCstrPtrAlias[S BasicConstraint] = *S
113-
// type BadTildeCstrAlias[T BadTildeConstraint] = T
114-
// type BadTildeCstrPtrAlias[T BadTildeConstraint] = *T
115-
// type GoodTildeCstrAlias[U GoodTildeConstraint] = U
116-
// type GoodTildeCstrPtrAlias[U GoodTildeConstraint] = *U
117-
// type NonBasicCstrAlias[V NonBasicConstraint] = V
118-
// type NonBasicCstrPtrAlias[V NonBasicConstraint] = *V
119-
// type PointableCstrAlias[W PointableConstraint] = W
120-
// type PointableCstrPtrAlias[W PointableConstraint] = *W
121-
// type MixedCstrAlias[X MixedConstraint] = X
122-
// type MixedCstrPtrAlias[X MixedConstraint] = *X
123-
// type InterfaceCstrAlias[Y InterfaceConstraint] = Y
124-
// type InterfaceCstrPtrAlias[Y InterfaceConstraint] = *Y
125-
// type PointerCstrAlias[R comparable, Z PointerConstraint[R]] = Z
126-
// type PointerCstrPtrAlias[R comparable, Z PointerConstraint[R]] = *Z
109+
type ComparableCstrAlias[R comparable] = R
110+
type ComparableCstrPtrAlias[R comparable] = *R
111+
type BasicCstrAlias[S BasicConstraint] = S
112+
type BasicCstrPtrAlias[S BasicConstraint] = *S
113+
type BadTildeCstrAlias[T BadTildeConstraint] = T
114+
type BadTildeCstrPtrAlias[T BadTildeConstraint] = *T
115+
type GoodTildeCstrAlias[U GoodTildeConstraint] = U
116+
type GoodTildeCstrPtrAlias[U GoodTildeConstraint] = *U
117+
type NonBasicCstrAlias[V NonBasicConstraint] = V
118+
type NonBasicCstrPtrAlias[V NonBasicConstraint] = *V
119+
type PointableCstrAlias[W PointableConstraint] = W
120+
type PointableCstrPtrAlias[W PointableConstraint] = *W
121+
type MixedCstrAlias[X MixedConstraint] = X
122+
type MixedCstrPtrAlias[X MixedConstraint] = *X
123+
type InterfaceCstrAlias[Y InterfaceConstraint] = Y
124+
type InterfaceCstrPtrAlias[Y InterfaceConstraint] = *Y
125+
type PointerCstrAlias[R comparable, Z PointerConstraint[R]] = Z
126+
type PointerCstrPtrAlias[R comparable, Z PointerConstraint[R]] = *Z
127127

128128
type Maps[R comparable, S BasicConstraint, T BadTildeConstraint, U GoodTildeConstraint, V NonBasicConstraint, W PointableConstraint, X MixedConstraint, Y InterfaceConstraint, Z PointerConstraint[R]] struct {
129129
Bool map[bool]int // Reject
@@ -226,63 +226,63 @@ type Maps[R comparable, S BasicConstraint, T BadTildeConstraint, U GoodTildeCons
226226
TPZ map[Z]int // Accept, hide
227227
TPZPtr map[*Z]int // Soft reject
228228

229-
// GAR map[ComparableCstrAlias[R]]int // Soft reject
230-
// GARPtr map[ComparableCstrPtrAlias[R]]int // Soft reject
231-
// GAS map[BasicCstrAlias[S]]int // Accept, hide
232-
// GASPtr map[BasicCstrPtrAlias[S]]int // Soft reject
233-
// GAT map[BadTildeCstrAlias[T]]int // Soft reject
234-
// GATPtr map[BadTildeCstrPtrAlias[T]]int // Soft reject
235-
// GAU map[GoodTildeCstrAlias[U]]int // Accept, hide
236-
// GAUPtr map[GoodTildeCstrPtrAlias[U]]int // Soft reject
237-
// GAV map[NonBasicCstrAlias[V]]int // Accept, hide
238-
// GAVPtr map[NonBasicCstrPtrAlias[V]]int // Soft reject
239-
// GAW map[PointableCstrAlias[W]]int // Soft reject
240-
// GAWPtr map[PointableCstrPtrAlias[W]]int // Accept, hide
241-
// GAX map[MixedCstrAlias[X]]int // Accept, hide
242-
// GAXPtr map[MixedCstrPtrAlias[X]]int // Soft reject
243-
// GAY map[InterfaceCstrAlias[Y]]int // Accept, hide
244-
// GAYPtr map[InterfaceCstrPtrAlias[Y]]int // Soft reject
245-
// GAZ map[PointerCstrAlias[R, Z]]int // Accept, hide
246-
// GAZPtr map[PointerCstrPtrAlias[R, Z]]int // Soft reject
247-
248-
// GACi map[ComparableCstrAlias[int]]int // Accept, hide
249-
// GACV map[ComparableCstrAlias[ValueTextMarshaler]]int // Accept
250-
// GACP map[ComparableCstrAlias[PointerTextMarshaler]]int // Reject
251-
// GACiPtr map[ComparableCstrPtrAlias[int]]int // Reject
252-
// GACVPtr map[ComparableCstrPtrAlias[ValueTextMarshaler]]int // Accept, hide
253-
// GACPPtr map[ComparableCstrPtrAlias[PointerTextMarshaler]]int // Accept, hide
254-
// GABi map[BasicCstrAlias[int]]int // Accept, hide
255-
// GABs map[BasicCstrAlias[string]]int // Accept
256-
// GABiPtr map[BasicCstrPtrAlias[int]]int // Reject
257-
// GABT map[BadTildeCstrAlias[struct{}]]int // Reject
258-
// GABTPtr map[BadTildeCstrPtrAlias[struct{}]]int // Reject
259-
// GAGT map[GoodTildeCstrAlias[ValueTextMarshaler]]int // Accept
260-
// GAGTPtr map[GoodTildeCstrPtrAlias[ValueTextMarshaler]]int // Accept, hide
261-
// GANBV map[NonBasicCstrAlias[ValueTextMarshaler]]int // Accept
262-
// GANBP map[NonBasicCstrAlias[*PointerTextMarshaler]]int // Accept, hide
263-
// GANBVPtr map[NonBasicCstrPtrAlias[ValueTextMarshaler]]int // Accept, hide
264-
// GANBPPtr map[NonBasicCstrPtrAlias[*PointerTextMarshaler]]int // Reject
265-
// GAPlV1 map[PointableCstrAlias[ValueTextMarshaler]]int // Accept
266-
// GAPlV2 map[*PointableCstrAlias[ValueTextMarshaler]]int // Accept
267-
// GAPlP1 map[PointableCstrAlias[PointerTextMarshaler]]int // Reject
268-
// GAPlP2 map[*PointableCstrAlias[PointerTextMarshaler]]int // Accept
269-
// GAPlVPtr map[PointableCstrPtrAlias[ValueTextMarshaler]]int // Accept, hide
270-
// GAPlPPtr map[PointableCstrPtrAlias[PointerTextMarshaler]]int // Accept, hide
271-
// GAMi map[MixedCstrAlias[uint]]int // Accept, hide
272-
// GAMS map[MixedCstrAlias[StringType]]int // Accept
273-
// GAMV map[MixedCstrAlias[ValueTextMarshaler]]int // Accept
274-
// GAMSPtr map[MixedCstrPtrAlias[StringType]]int // Reject
275-
// GAMVPtr map[MixedCstrPtrAlias[ValueTextMarshaler]]int // Accept, hide
276-
// GAII map[InterfaceCstrAlias[encoding.TextMarshaler]]int // Accept, hide
277-
// GAIV map[InterfaceCstrAlias[ValueTextMarshaler]]int // Accept
278-
// GAIP map[InterfaceCstrAlias[*PointerTextMarshaler]]int // Accept, hide
279-
// GAIIPtr map[InterfaceCstrPtrAlias[encoding.TextMarshaler]]int // Reject
280-
// GAIVPtr map[InterfaceCstrPtrAlias[ValueTextMarshaler]]int // Accept, hide
281-
// GAIPPtr map[InterfaceCstrPtrAlias[*PointerTextMarshaler]]int // Reject
282-
// GAPrV map[PointerCstrAlias[ValueTextMarshaler, *ValueTextMarshaler]]int // Accept, hide
283-
// GAPrP map[PointerCstrAlias[PointerTextMarshaler, *PointerTextMarshaler]]int // Accept, hide
284-
// GAPrVPtr map[PointerCstrPtrAlias[ValueTextMarshaler, *ValueTextMarshaler]]int // Reject
285-
// GAPrPPtr map[PointerCstrPtrAlias[PointerTextMarshaler, *PointerTextMarshaler]]int // Reject
229+
GAR map[ComparableCstrAlias[R]]int // Soft reject
230+
GARPtr map[ComparableCstrPtrAlias[R]]int // Soft reject
231+
GAS map[BasicCstrAlias[S]]int // Accept, hide
232+
GASPtr map[BasicCstrPtrAlias[S]]int // Soft reject
233+
GAT map[BadTildeCstrAlias[T]]int // Soft reject
234+
GATPtr map[BadTildeCstrPtrAlias[T]]int // Soft reject
235+
GAU map[GoodTildeCstrAlias[U]]int // Accept, hide
236+
GAUPtr map[GoodTildeCstrPtrAlias[U]]int // Soft reject
237+
GAV map[NonBasicCstrAlias[V]]int // Accept, hide
238+
GAVPtr map[NonBasicCstrPtrAlias[V]]int // Soft reject
239+
GAW map[PointableCstrAlias[W]]int // Soft reject
240+
GAWPtr map[PointableCstrPtrAlias[W]]int // Accept, hide
241+
GAX map[MixedCstrAlias[X]]int // Accept, hide
242+
GAXPtr map[MixedCstrPtrAlias[X]]int // Soft reject
243+
GAY map[InterfaceCstrAlias[Y]]int // Accept, hide
244+
GAYPtr map[InterfaceCstrPtrAlias[Y]]int // Soft reject
245+
GAZ map[PointerCstrAlias[R, Z]]int // Accept, hide
246+
GAZPtr map[PointerCstrPtrAlias[R, Z]]int // Soft reject
247+
248+
GACi map[ComparableCstrAlias[int]]int // Accept, hide
249+
GACV map[ComparableCstrAlias[ValueTextMarshaler]]int // Accept
250+
GACP map[ComparableCstrAlias[PointerTextMarshaler]]int // Reject
251+
GACiPtr map[ComparableCstrPtrAlias[int]]int // Reject
252+
GACVPtr map[ComparableCstrPtrAlias[ValueTextMarshaler]]int // Accept, hide
253+
GACPPtr map[ComparableCstrPtrAlias[PointerTextMarshaler]]int // Accept, hide
254+
GABi map[BasicCstrAlias[int]]int // Accept, hide
255+
GABs map[BasicCstrAlias[string]]int // Accept
256+
GABiPtr map[BasicCstrPtrAlias[int]]int // Reject
257+
GABT map[BadTildeCstrAlias[struct{}]]int // Reject
258+
GABTPtr map[BadTildeCstrPtrAlias[struct{}]]int // Reject
259+
GAGT map[GoodTildeCstrAlias[ValueTextMarshaler]]int // Accept
260+
GAGTPtr map[GoodTildeCstrPtrAlias[ValueTextMarshaler]]int // Accept, hide
261+
GANBV map[NonBasicCstrAlias[ValueTextMarshaler]]int // Accept
262+
GANBP map[NonBasicCstrAlias[*PointerTextMarshaler]]int // Accept, hide
263+
GANBVPtr map[NonBasicCstrPtrAlias[ValueTextMarshaler]]int // Accept, hide
264+
GANBPPtr map[NonBasicCstrPtrAlias[*PointerTextMarshaler]]int // Reject
265+
GAPlV1 map[PointableCstrAlias[ValueTextMarshaler]]int // Accept
266+
GAPlV2 map[*PointableCstrAlias[ValueTextMarshaler]]int // Accept
267+
GAPlP1 map[PointableCstrAlias[PointerTextMarshaler]]int // Reject
268+
GAPlP2 map[*PointableCstrAlias[PointerTextMarshaler]]int // Accept
269+
GAPlVPtr map[PointableCstrPtrAlias[ValueTextMarshaler]]int // Accept, hide
270+
GAPlPPtr map[PointableCstrPtrAlias[PointerTextMarshaler]]int // Accept, hide
271+
GAMi map[MixedCstrAlias[uint]]int // Accept, hide
272+
GAMS map[MixedCstrAlias[StringType]]int // Accept
273+
GAMV map[MixedCstrAlias[ValueTextMarshaler]]int // Accept
274+
GAMSPtr map[MixedCstrPtrAlias[StringType]]int // Reject
275+
GAMVPtr map[MixedCstrPtrAlias[ValueTextMarshaler]]int // Accept, hide
276+
GAII map[InterfaceCstrAlias[encoding.TextMarshaler]]int // Accept, hide
277+
GAIV map[InterfaceCstrAlias[ValueTextMarshaler]]int // Accept
278+
GAIP map[InterfaceCstrAlias[*PointerTextMarshaler]]int // Accept, hide
279+
GAIIPtr map[InterfaceCstrPtrAlias[encoding.TextMarshaler]]int // Reject
280+
GAIVPtr map[InterfaceCstrPtrAlias[ValueTextMarshaler]]int // Accept, hide
281+
GAIPPtr map[InterfaceCstrPtrAlias[*PointerTextMarshaler]]int // Reject
282+
GAPrV map[PointerCstrAlias[ValueTextMarshaler, *ValueTextMarshaler]]int // Accept, hide
283+
GAPrP map[PointerCstrAlias[PointerTextMarshaler, *PointerTextMarshaler]]int // Accept, hide
284+
GAPrVPtr map[PointerCstrPtrAlias[ValueTextMarshaler, *ValueTextMarshaler]]int // Reject
285+
GAPrPPtr map[PointerCstrPtrAlias[PointerTextMarshaler, *PointerTextMarshaler]]int // Reject
286286
}
287287

288288
func (*Service) Method() (_ Maps[PointerTextMarshaler, int, int, ValueTextMarshaler, *PointerTextMarshaler, ValueTextMarshaler, StringType, ValueTextMarshaler, *PointerTextMarshaler]) {

v3/internal/generator/testdata/output/lang=JS/UseInterfaces=false/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/aliases/greetservice.js

+20-7
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,18 @@ export function GetButForeignPrivateAlias() {
7272
return $typingPromise;
7373
}
7474

75+
/**
76+
* @returns {Promise<$models.AliasGroup> & { cancel(): void }}
77+
*/
78+
export function GetButGenericAliases() {
79+
let $resultPromise = /** @type {any} */($Call.ByID(914093800));
80+
let $typingPromise = /** @type {any} */($resultPromise.then(($result) => {
81+
return $$createType3($result);
82+
}));
83+
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
84+
return $typingPromise;
85+
}
86+
7587
/**
7688
* Greet a lot of unusual things.
7789
* @param {$models.EmptyAliasStruct} $0
@@ -81,7 +93,7 @@ export function GetButForeignPrivateAlias() {
8193
export function Greet($0, $1) {
8294
let $resultPromise = /** @type {any} */($Call.ByID(1411160069, $0, $1));
8395
let $typingPromise = /** @type {any} */($resultPromise.then(($result) => {
84-
return $$createType6($result);
96+
return $$createType7($result);
8597
}));
8698
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
8799
return $typingPromise;
@@ -91,12 +103,13 @@ export function Greet($0, $1) {
91103
const $$createType0 = $models.Person.createFrom;
92104
const $$createType1 = $models.GenericPerson.createFrom($Create.Any);
93105
const $$createType2 = nobindingshere$0.personImpl.createFrom;
94-
const $$createType3 = $Create.Array($Create.Any);
106+
const $$createType3 = $models.AliasGroup.createFrom;
95107
const $$createType4 = $Create.Array($Create.Any);
96-
const $$createType5 = $Create.Struct({
97-
"NoMoreIdeas": $$createType4,
98-
});
108+
const $$createType5 = $Create.Array($Create.Any);
99109
const $$createType6 = $Create.Struct({
100-
"Foo": $$createType3,
101-
"Other": $$createType5,
110+
"NoMoreIdeas": $$createType5,
111+
});
112+
const $$createType7 = $Create.Struct({
113+
"Foo": $$createType4,
114+
"Other": $$createType6,
102115
});

v3/internal/generator/testdata/output/lang=JS/UseInterfaces=false/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/aliases/index.js

+23-1
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@ export {
88
};
99

1010
export {
11+
AliasGroup,
1112
AliasedPerson,
1213
EmptyStruct,
1314
GenericPerson,
15+
GenericPersonAlias,
16+
IndirectPersonAlias,
1417
Person,
15-
StrangelyAliasedPerson
18+
StrangelyAliasedPerson,
19+
TPIndirectPersonAlias
1620
} from "./models.js";
1721

1822
import * as $models from "./models.js";
@@ -33,6 +37,24 @@ import * as $models from "./models.js";
3337
* @typedef {$models.EmptyAliasStruct} EmptyAliasStruct
3438
*/
3539

40+
/**
41+
* A generic alias that forwards to a type parameter.
42+
* @template T
43+
* @typedef {$models.GenericAlias<T>} GenericAlias
44+
*/
45+
46+
/**
47+
* A generic alias that wraps a map.
48+
* @template T,U
49+
* @typedef {$models.GenericMapAlias<T, U>} GenericMapAlias
50+
*/
51+
52+
/**
53+
* A generic alias that wraps a pointer type.
54+
* @template T
55+
* @typedef {$models.GenericPtrAlias<T>} GenericPtrAlias
56+
*/
57+
3658
/**
3759
* Another struct alias.
3860
* @typedef {$models.OtherAliasStruct} OtherAliasStruct

0 commit comments

Comments
 (0)