diff --git a/pkg/development/resolver.go b/pkg/development/resolver.go index 1203a2f021..e61eb74b63 100644 --- a/pkg/development/resolver.go +++ b/pkg/development/resolver.go @@ -5,6 +5,7 @@ import ( "strings" "github.com/authzed/spicedb/pkg/caveats" + "github.com/authzed/spicedb/pkg/namespace" core "github.com/authzed/spicedb/pkg/proto/core/v1" "github.com/authzed/spicedb/pkg/schemadsl/compiler" "github.com/authzed/spicedb/pkg/schemadsl/dslshape" @@ -143,9 +144,15 @@ func (r *Resolver) ReferenceAtPosition(source input.Source, position input.Posit ColumnPosition: int(def.SourcePosition.ZeroIndexedColumnPosition), } - targetSourceCode := fmt.Sprintf("definition %s {\n\t// ...\n}", def.Name) + docComment := "" + comments := namespace.GetComments(def.Metadata) + if len(comments) > 0 { + docComment = strings.Join(comments, "\n") + "\n" + } + + targetSourceCode := fmt.Sprintf("%sdefinition %s {\n\t// ...\n}", docComment, def.Name) if len(def.Relation) == 0 { - targetSourceCode = fmt.Sprintf("definition %s {}", def.Name) + targetSourceCode = fmt.Sprintf("%sdefinition %s {}", docComment, def.Name) } return &SchemaReference{ diff --git a/pkg/development/resolver_test.go b/pkg/development/resolver_test.go index e735724fda..3e6c18e0f8 100644 --- a/pkg/development/resolver_test.go +++ b/pkg/development/resolver_test.go @@ -349,6 +349,56 @@ definition document { column: 5, expectedReference: nil, }, + { + name: "reference to commented type", + schema: ` + /** user is a user */ + definition user {} + + definition resource { + relation viewer: user + } + `, + line: 5, + column: 22, + expectedReference: &SchemaReference{ + Source: "test", + Position: input.Position{LineNumber: 5, ColumnPosition: 22}, + Text: "user", + ReferenceType: 1, + ReferenceMarkdown: "definition user", + TargetSource: &testSource, + TargetPosition: &input.Position{LineNumber: 2, ColumnPosition: 4}, + TargetSourceCode: "/** user is a user */\ndefinition user {}", + TargetNamePositionOffset: 11, + }, + }, + { + name: "reference to commented relation", + schema: ` + definition user {} + + definition resource { + // viewer is a relation for viewing + relation viewer: user + + permission view = viewer + } + `, + line: 7, + column: 25, + expectedReference: &SchemaReference{ + Source: "test", + Position: input.Position{LineNumber: 7, ColumnPosition: 25}, + Text: "viewer", + ReferenceType: ReferenceTypeRelation, + ReferenceMarkdown: "relation viewer", + TargetSource: &testSource, + TargetPosition: &input.Position{LineNumber: 5, ColumnPosition: 5}, + TargetSourceCode: "// viewer is a relation for viewing\nrelation viewer: user\n", + TargetNamePositionOffset: 9, + }, + }, } for _, tc := range tcs {