diff --git a/pkg/codegen/dotnet/gen.go b/pkg/codegen/dotnet/gen.go index e2ab8dd01fce..47965fc51296 100644 --- a/pkg/codegen/dotnet/gen.go +++ b/pkg/codegen/dotnet/gen.go @@ -27,7 +27,6 @@ import ( "path" "path/filepath" "reflect" - "sort" "strconv" "strings" "unicode" @@ -1304,8 +1303,6 @@ func (mod *modContext) genResource(w io.Writer, r *schema.Resource) error { } func (mod *modContext) genFunctionFileCode(f *schema.Function) (string, error) { - imports := map[string]codegen.StringSet{} - mod.getImports(f, imports) buffer := &bytes.Buffer{} importStrings := mod.pulumiImports() @@ -1315,9 +1312,6 @@ func (mod *modContext) genFunctionFileCode(f *schema.Function) (string, error) { if nonStandardNamespace { importStrings = append(importStrings, mod.namespaceName) } - for _, i := range imports { - importStrings = append(importStrings, i.SortedValues()...) - } // We need to qualify input types when we are not in the same module as them. if nonStandardNamespace { @@ -1679,128 +1673,6 @@ func (mod *modContext) pulumiImports() []string { return pulumiImports } -func (mod *modContext) getTypeImports(t schema.Type, recurse bool, imports map[string]codegen.StringSet, seen codegen.Set) { - mod.getTypeImportsForResource(t, recurse, imports, seen, nil) -} - -func (mod *modContext) getTypeImportsForResource(t schema.Type, recurse bool, imports map[string]codegen.StringSet, seen codegen.Set, res *schema.Resource) { - if seen.Has(t) { - return - } - seen.Add(t) - - switch t := t.(type) { - case *schema.OptionalType: - mod.getTypeImports(t.ElementType, recurse, imports, seen) - return - case *schema.InputType: - mod.getTypeImports(t.ElementType, recurse, imports, seen) - return - case *schema.ArrayType: - mod.getTypeImports(t.ElementType, recurse, imports, seen) - return - case *schema.MapType: - mod.getTypeImports(t.ElementType, recurse, imports, seen) - return - case *schema.ObjectType: - for _, p := range t.Properties { - mod.getTypeImports(p.Type, recurse, imports, seen) - } - return - case *schema.ResourceType: - // If it's an external resource, we'll be using fully-qualified type names, so there's no need - // for an import. - if t.Resource != nil && !codegen.PkgEquals(t.Resource.PackageReference, mod.pkg) { - return - } - - // Don't import itself. - if t.Resource == res { - return - } - - modName, name, modPath := mod.pkg.TokenToModule(t.Token), tokenToName(t.Token), "" - if modName != mod.mod { - mp, err := filepath.Rel(mod.mod, modName) - contract.Assert(err == nil) - if path.Base(mp) == "." { - mp = path.Dir(mp) - } - modPath = filepath.ToSlash(mp) - } - if len(modPath) == 0 { - return - } - if imports[modPath] == nil { - imports[modPath] = codegen.NewStringSet() - } - imports[modPath].Add(name) - return - case *schema.TokenType: - return - case *schema.UnionType: - for _, e := range t.ElementTypes { - mod.getTypeImports(e, recurse, imports, seen) - } - return - default: - return - } -} - -func (mod *modContext) getImports(member interface{}, imports map[string]codegen.StringSet) { - mod.getImportsForResource(member, imports, nil) -} - -func (mod *modContext) getImportsForResource(member interface{}, imports map[string]codegen.StringSet, res *schema.Resource) { - seen := codegen.Set{} - switch member := member.(type) { - case *schema.ObjectType: - for _, p := range member.Properties { - mod.getTypeImports(p.Type, true, imports, seen) - } - return - case *schema.ResourceType: - mod.getTypeImports(member, true, imports, seen) - return - case *schema.Resource: - for _, p := range member.Properties { - mod.getTypeImportsForResource(p.Type, false, imports, seen, res) - } - for _, p := range member.InputProperties { - mod.getTypeImportsForResource(p.Type, false, imports, seen, res) - } - for _, method := range member.Methods { - if method.Function.Inputs != nil { - for _, p := range method.Function.Inputs.Properties { - mod.getTypeImportsForResource(p.Type, false, imports, seen, res) - } - } - if method.Function.Outputs != nil { - for _, p := range method.Function.Outputs.Properties { - mod.getTypeImportsForResource(p.Type, false, imports, seen, res) - } - } - } - return - case *schema.Function: - if member.Inputs != nil { - mod.getTypeImports(member.Inputs, false, imports, seen) - } - if member.Outputs != nil { - mod.getTypeImports(member.Outputs, false, imports, seen) - } - return - case []*schema.Property: - for _, p := range member { - mod.getTypeImports(p.Type, false, imports, seen) - } - return - default: - return - } -} - func (mod *modContext) genHeader(w io.Writer, using []string) { fmt.Fprintf(w, "// *** WARNING: this file was generated by %v. ***\n", mod.tool) fmt.Fprintf(w, "// *** Do not edit by hand unless you're certain you know what you are doing! ***\n") @@ -2045,17 +1917,8 @@ func (mod *modContext) gen(fs codegen.Fs) error { continue } - imports := map[string]codegen.StringSet{} - mod.getImportsForResource(r, imports, r) - buffer := &bytes.Buffer{} - var additionalImports []string - for _, i := range imports { - additionalImports = append(additionalImports, i.SortedValues()...) - } - sort.Strings(additionalImports) importStrings := mod.pulumiImports() - importStrings = append(importStrings, additionalImports...) mod.genHeader(buffer, importStrings) if err := mod.genResource(buffer, r); err != nil { diff --git a/pkg/codegen/testing/test/sdk_driver.go b/pkg/codegen/testing/test/sdk_driver.go index 398563c5ae96..ee31e0530a40 100644 --- a/pkg/codegen/testing/test/sdk_driver.go +++ b/pkg/codegen/testing/test/sdk_driver.go @@ -84,7 +84,7 @@ var allLanguages = codegen.NewStringSet("python/any", "nodejs/any", "dotnet/any" var PulumiPulumiSDKTests = []*SDKTest{ { Directory: "naming-collisions", - Description: "Schema with types that could potentially produce collisions (go).", + Description: "Schema with types that could potentially produce collisions.", }, { Directory: "dash-named-schema", diff --git a/pkg/codegen/testing/test/testdata/naming-collisions/docs/_index.md b/pkg/codegen/testing/test/testdata/naming-collisions/docs/_index.md index 164eea971dd0..1805a60c7b23 100644 --- a/pkg/codegen/testing/test/testdata/naming-collisions/docs/_index.md +++ b/pkg/codegen/testing/test/testdata/naming-collisions/docs/_index.md @@ -1,6 +1,6 @@ --- title: "example" -title_tag: "example.example" +title_tag: "example Package" meta_desc: "" layout: api no_edit_this_page: true @@ -11,8 +11,14 @@ no_edit_this_page: true +

Modules

+ +

Resources