internal/core/export: explicit generation of adt types
Change-Id: Ib51a41d9103c6f9e684395a009c8c3b81462c273
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/6622
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
Reviewed-by: CUE cueckoo <cueckoo@gmail.com>
diff --git a/internal/core/export/extract.go b/internal/core/export/extract.go
index c3b11ef..22d901a 100644
--- a/internal/core/export/extract.go
+++ b/internal/core/export/extract.go
@@ -29,10 +29,14 @@
// foo: bar: 2
//
func ExtractDoc(v *adt.Vertex) (docs []*ast.CommentGroup) {
+ return extractDocs(v, v.Conjuncts)
+}
+
+func extractDocs(v *adt.Vertex, a []adt.Conjunct) (docs []*ast.CommentGroup) {
fields := []*ast.Field{}
// Collect docs directly related to this Vertex.
- for _, x := range v.Conjuncts {
+ for _, x := range a {
f, ok := x.Source().(*ast.Field)
if !ok || hasShorthandValue(f) {
continue
@@ -46,6 +50,10 @@
}
}
+ if v == nil {
+ return docs
+ }
+
// Collect docs from parent scopes in collapsed fields.
for p := v.Parent; p != nil; p = p.Parent {