-
Notifications
You must be signed in to change notification settings - Fork 353
Closed
Description
When I try to generate the documentation for a struct with a typespec that has more 32 keys, the order becomes random in the generated docs. I believe this has to do with an optimalization that happens to structs with over 32 keys.
See this commit for a failing test case.
maartenvanvliet@5198cf6
An output of the failing test
1) test modules returns the spec info for each non-private module type (ExDoc.RetrieverTest)
test/ex_doc/retriever_test.exs:167
Assertion with == failed
code: assert Macro.to_string(t.spec()) == "t() :: %TypesAndSpecs{a01: String.t(), a02: String.t(), a03: String.t(), a04: String.t(), a05: String.t(), a06: String.t(), a07: String.t(), a08: String.t(), a09: String.t(), a10: String.t(), a11: String.t(), a12: String.t(), a13: String.t(), a14: String.t(), a15: String.t(), a16: String.t(), a17: String.t(), a18: String.t(), a19: String.t(), a20: String.t(), a21: String.t(), a22: String.t(), a23: String.t(), a24: String.t(), a25: String.t(), a26: String.t(), a27: String.t(), a28: String.t(), a29: String.t(), a30: String.t(), a31: String.t(), a32: String.t(), a33: String.t()}"
left: "t() :: %TypesAndSpecs{a19: String.t(), a33: String.t(), a01: String.t(), a12: String.t(), a30: String.t(), a23: String.t(), a03: String.t(), a21: String.t(), a05: String.t(), a11: String.t(), a07: String.t(), a04: String.t(), a26: String.t(), a16: String.t(), a06: String.t(), a13: String.t(), a27: String.t(), a24: String.t(), a31: String.t(), a15: String.t(), a29: String.t(), a02: String.t(), a32: String.t(), a17: String.t(), a10: String.t(), a08: String.t(), a25: String.t(), a20: String.t(), a09: String.t(), a28: String.t(), a18: String.t(), a14: String.t(), a22: String.t()}"
right: "t() :: %TypesAndSpecs{a01: String.t(), a02: String.t(), a03: String.t(), a04: String.t(), a05: String.t(), a06: String.t(), a07: String.t(), a08: String.t(), a09: String.t(), a10: String.t(), a11: String.t(), a12: String.t(), a13: String.t(), a14: String.t(), a15: String.t(), a16: String.t(), a17: String.t(), a18: String.t(), a19: String.t(), a20: String.t(), a21: String.t(), a22: String.t(), a23: String.t(), a24: String.t(), a25: String.t(), a26: String.t(), a27: String.t(), a28: String.t(), a29: String.t(), a30: String.t(), a31: String.t(), a32: String.t(), a33: String.t()}"
stacktrace:
test/ex_doc/retriever_test.exs:188: (test)Metadata
Metadata
Assignees
Labels
No labels