diff --git a/internal/configs/config_build.go b/internal/configs/config_build.go index e1b810c9e7..78a0cf9fa1 100644 --- a/internal/configs/config_build.go +++ b/internal/configs/config_build.go @@ -4,6 +4,7 @@ package configs import ( + "fmt" "sort" version "github.com/hashicorp/go-version" @@ -101,6 +102,15 @@ func buildChildModules(parent *Config, walker ModuleWalker) (map[string]*Config, }) } + if len(mod.Import) > 0 { + diags = diags.Append(&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Invalid import configuration", + Detail: fmt.Sprintf("An import block was detected in %q. Import blocks are only allowed in the root module.", child.Path), + Subject: mod.Import[0].DeclRange.Ptr(), + }) + } + ret[call.Name] = child } diff --git a/internal/configs/testdata/config-diagnostics/import-in-child-module/child/main.tf b/internal/configs/testdata/config-diagnostics/import-in-child-module/child/main.tf new file mode 100644 index 0000000000..bb8cb139d1 --- /dev/null +++ b/internal/configs/testdata/config-diagnostics/import-in-child-module/child/main.tf @@ -0,0 +1,6 @@ +resource "aws_instance" "web" {} + +import { + to = aws_instance.web + id = "test" +} \ No newline at end of file diff --git a/internal/configs/testdata/config-diagnostics/import-in-child-module/errors b/internal/configs/testdata/config-diagnostics/import-in-child-module/errors new file mode 100644 index 0000000000..b0a5ac4fc1 --- /dev/null +++ b/internal/configs/testdata/config-diagnostics/import-in-child-module/errors @@ -0,0 +1 @@ +import-in-child-module/child/main.tf:3,1-7: Invalid import configuration; An import block was detected in "module.child". Import blocks are only allowed in the root module. \ No newline at end of file diff --git a/internal/configs/testdata/config-diagnostics/import-in-child-module/root.tf b/internal/configs/testdata/config-diagnostics/import-in-child-module/root.tf new file mode 100644 index 0000000000..3133e57b93 --- /dev/null +++ b/internal/configs/testdata/config-diagnostics/import-in-child-module/root.tf @@ -0,0 +1,10 @@ +resource "aws_instance" "web" {} + +import { + to = aws_instance.web + id = "test" +} + +module "child" { + source = "./child" +} \ No newline at end of file