From 51deae2bc7a4fffffc5abd8afe64982c4574cd00 Mon Sep 17 00:00:00 2001 From: Brian Flad Date: Fri, 22 Apr 2022 06:46:40 -0400 Subject: [PATCH] internal/provider: Add compilation based interface assertions (#38) This is a quick method for compilation errors to be raised should the types not satisfy the expected framework interfaces. --- internal/provider/example_data_source.go | 4 ++++ internal/provider/example_resource.go | 4 ++++ internal/provider/provider.go | 3 +++ 3 files changed, 11 insertions(+) diff --git a/internal/provider/example_data_source.go b/internal/provider/example_data_source.go index 5386897..e204c63 100644 --- a/internal/provider/example_data_source.go +++ b/internal/provider/example_data_source.go @@ -9,6 +9,10 @@ import ( "github.com/hashicorp/terraform-plugin-framework/types" ) +// Ensure provider defined types fully satisfy framework interfaces +var _ tfsdk.DataSourceType = exampleDataSourceType{} +var _ tfsdk.DataSource = exampleDataSource{} + type exampleDataSourceType struct{} func (t exampleDataSourceType) GetSchema(ctx context.Context) (tfsdk.Schema, diag.Diagnostics) { diff --git a/internal/provider/example_resource.go b/internal/provider/example_resource.go index 8765832..e626ecf 100644 --- a/internal/provider/example_resource.go +++ b/internal/provider/example_resource.go @@ -10,6 +10,10 @@ import ( "github.com/hashicorp/terraform-plugin-log/tflog" ) +// Ensure provider defined types fully satisfy framework interfaces +var _ tfsdk.ResourceType = exampleResourceType{} +var _ tfsdk.Resource = exampleResource{} + type exampleResourceType struct{} func (t exampleResourceType) GetSchema(ctx context.Context) (tfsdk.Schema, diag.Diagnostics) { diff --git a/internal/provider/provider.go b/internal/provider/provider.go index a9d43d6..958189a 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -9,6 +9,9 @@ import ( "github.com/hashicorp/terraform-plugin-framework/types" ) +// Ensure provider defined types fully satisfy framework interfaces +var _ tfsdk.Provider = &provider{} + // provider satisfies the tfsdk.Provider interface and usually is included // with all Resource and DataSource implementations. type provider struct {