Skip to content

Commit 110cc06

Browse files
Geod24omerfirmak
authored andcommitted
Prevent "forward reference" errors when using parseAs.
Because NestedFieldRef references the parent's (FR) Name/FieldName, it causes a circular reference error with `parseAs`.
1 parent 9ffb484 commit 110cc06

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

source/configy/FieldRef.d

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,15 @@ unittest
113113
static assert(FieldRefTuple!(FieldRefTuple!(Config3)[0].Type)[1].Name == "notStr2");
114114
}
115115

116-
/// A pseudo `FieldRef` used for structs which are not fields (top-level)
117-
package template StructFieldRef (ST)
116+
/**
117+
* A pseudo `FieldRef` used for structs which are not fields (top-level)
118+
*
119+
* Params:
120+
* ST = Type for which this pseudo-FieldRef is
121+
* DefaultName = A name to give to this FieldRef, default to `null`,
122+
* but required to prevent forward references in `parseAs`.
123+
*/
124+
package template StructFieldRef (ST, string DefaultName = null)
118125
{
119126
///
120127
public enum Ref = ST.init;
@@ -127,6 +134,11 @@ package template StructFieldRef (ST)
127134

128135
///
129136
public enum Optional = false;
137+
138+
/// Some places reference their parent's `Name` / `FieldName`
139+
public enum Name = DefaultName;
140+
/// Ditto
141+
public enum FieldName = DefaultName;
130142
}
131143

132144
/// A pseudo `FieldRef` for nested types (e.g. arrays / associative arrays)

0 commit comments

Comments
 (0)