diff --git a/pkg/codegen/go/gen.go b/pkg/codegen/go/gen.go index 029f2ef7e03f..2b230857575e 100644 --- a/pkg/codegen/go/gen.go +++ b/pkg/codegen/go/gen.go @@ -40,6 +40,11 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/common/util/contract" ) +// A signifier that the module is external, and will never match. +// +// This token is always an invalid module since ':' is not allowed within modules. +const ExternalModuleSig = ":always-external:" + type typeDetails struct { // Note: if any of {ptr,array,map}Input are set, input and the corresponding output field must also be set. The // mark* functions ensure that these invariants hold. @@ -242,10 +247,7 @@ func (pkg *pkgContext) resolveEnumType(t *schema.EnumType) string { } extPkgCtx, _ := pkg.contextForExternalReference(t) - enumType := extPkgCtx.tokenToEnum(t.Token) - if !strings.Contains(enumType, ".") { - enumType = fmt.Sprintf("%s.%s", extPkgCtx.pkg.Name, enumType) - } + enumType := extPkgCtx.typeString(t) return enumType } @@ -730,6 +732,7 @@ func (pkg *pkgContext) contextForExternalReference(t schema.Type) (*pkgContext, extPkgCtx.pkgImportAliases = pkgImportAliases extPkgCtx.externalPackages = pkg.externalPackages mod := tokenToPackage(extPkg, goInfo.ModuleToPackage, token) + extPkgCtx.mod = ExternalModuleSig return extPkgCtx, *maps[mod].detailsForType(t) } diff --git a/pkg/codegen/go/gen_program_expressions.go b/pkg/codegen/go/gen_program_expressions.go index 7214004b5d9e..b651afb06d22 100644 --- a/pkg/codegen/go/gen_program_expressions.go +++ b/pkg/codegen/go/gen_program_expressions.go @@ -168,8 +168,10 @@ func (g *generator) genSafeEnum(w io.Writer, to *model.EnumType) func(member *sc } memberTag, err := makeSafeEnumName(memberTag, enumName) contract.AssertNoErrorf(err, "Enum is invalid") - namespace := tokenToModule(to.Token) - g.Fgenf(w, "%s.%s", namespace, memberTag) + pkg, mod, _, _ := pcl.DecomposeToken(to.Token, to.SyntaxNode().Range()) + mod = g.getModOrAlias(pkg, mod, mod) + + g.Fgenf(w, "%s.%s", mod, memberTag) } } diff --git a/pkg/codegen/testing/test/program_driver.go b/pkg/codegen/testing/test/program_driver.go index 23645bc96ed4..7e086de4f576 100644 --- a/pkg/codegen/testing/test/program_driver.go +++ b/pkg/codegen/testing/test/program_driver.go @@ -113,8 +113,6 @@ var PulumiPulumiProgramTests = []ProgramTest{ { Directory: "aws-webserver", Description: "AWS Webserver", - SkipCompile: codegen.NewStringSet("go"), - // Blocked on go: TODO[pulumi/pulumi#8070] }, { Directory: "simple-range", diff --git a/pkg/codegen/testing/test/testdata/aws-webserver-pp/go/aws-webserver.go b/pkg/codegen/testing/test/testdata/aws-webserver-pp/go/aws-webserver.go index 1e27a98c5987..863264cfe555 100644 --- a/pkg/codegen/testing/test/testdata/aws-webserver-pp/go/aws-webserver.go +++ b/pkg/codegen/testing/test/testdata/aws-webserver-pp/go/aws-webserver.go @@ -25,9 +25,9 @@ func main() { if err != nil { return err } - ami, err := aws.GetAmi(ctx, &GetAmiArgs{ - Filters: []GetAmiFilter{ - GetAmiFilter{ + ami, err := aws.GetAmi(ctx, &aws.GetAmiArgs{ + Filters: []aws.GetAmiFilter{ + aws.GetAmiFilter{ Name: "name", Values: []string{ "amzn-ami-hvm-*-x86_64-ebs",