Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions codegen/snippet-tests/input/Pairs.pkl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
@go.Package { name = "github.com/apple/pkl-go/codegen/snippet-tests/output/pairs" }
open module Pairs

import ".../src/go.pkl"

untyped: Pair

optional: Pair?

typed: Pair<String, Int>

aliased: MyPair

typeArgAliased: OurPair

typealias MyPair = Pair<String, Any>
typealias OurPair = Pair<String, Foo>
typealias Foo = Int
77 changes: 77 additions & 0 deletions codegen/snippet-tests/output/pairs/Pairs.pkl.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions codegen/snippet-tests/output/pairs/init.pkl.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 5 additions & 7 deletions codegen/src/internal/typegen.pkl
Original file line number Diff line number Diff line change
Expand Up @@ -124,13 +124,11 @@ function generatePair(
enclosing: reflect.TypeDeclaration,
seenMappings: List<GoMapping>
): Type =
new Type.Pointer {
elem = new Type.Declared {
typeName = "Pair"
package = "pkl"
importPath = "github.com/apple/pkl-go/pkl"
typeArguments = type.typeArguments.map((t) -> generateType(t, enclosing, seenMappings))
}
new Type.Declared {
typeName = "Pair"
package = "pkl"
importPath = "github.com/apple/pkl-go/pkl"
typeArguments = type.typeArguments.map((t) -> generateType(t, enclosing, seenMappings))
}

local function builtInType(typ: String): Type.Declared = new { typeName = typ }
Expand Down
8 changes: 6 additions & 2 deletions codegen/src/tests/typegen.pkl
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ local reflectedNullables = reflect.Class(Nullables)
local class Pairs {
res1: Pair<String, String>
res2: Pair<String, String?>
res3: Pair
res4: Pair<String, String>?
}

local reflectedPairs = reflect.Class(Pairs)
Expand Down Expand Up @@ -108,7 +110,9 @@ facts {
generateType(reflectedNullables.properties["res8"].type) == "*map[*string]*string"
}
["pairs"] {
generateType(reflectedPairs.properties["res1"].type) == "*pkl.Pair[string, string]"
generateType(reflectedPairs.properties["res2"].type) == "*pkl.Pair[string, *string]"
generateType(reflectedPairs.properties["res1"].type) == "pkl.Pair[string, string]"
generateType(reflectedPairs.properties["res2"].type) == "pkl.Pair[string, *string]"
generateType(reflectedPairs.properties["res3"].type) == "pkl.Pair[any, any]"
generateType(reflectedPairs.properties["res4"].type) == "*pkl.Pair[string, string]"
}
}
6 changes: 3 additions & 3 deletions pkl/test_fixtures/gen/collections/Collections.pkl.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions pkl/unmarshal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,15 +148,15 @@ func TestUnmarshall_Collections(t *testing.T) {
2: {},
3: {},
},
Res11: &pkl.Pair[int, float64]{
Res11: pkl.Pair[int, float64]{
First: 1,
Second: 5.0,
},
Res12: &pkl.Pair[any, any]{
Res12: pkl.Pair[any, any]{
First: "hello",
Second: "goodbye",
},
Res13: &pkl.Pair[int, *int]{
Res13: pkl.Pair[int, *int]{
First: 1,
Second: &[]int{2}[0],
},
Expand Down