@@ -264,16 +264,19 @@ std::unique_ptr<TypeSystem> TypeSystemBuilder::buildDerivedFrom(
264264 // Fill in definitions with uninitialized stubs
265265 for (auto & [uri, entry] : definitions_) {
266266 SerializableTypeDefinition& def = entry.definition ;
267+ std::string defName = entry.sourceInfo .has_value ()
268+ ? std::string (*entry.sourceInfo ->name ())
269+ : std::string{};
267270 auto uninitDef = std::invoke ([&]() -> TSDefinition {
268271 switch (def.getType ()) {
269272 case SerializableTypeDefinition::Type::structDef:
270- return StructNode{uri, {}, {}, {}};
273+ return StructNode{uri, {}, {}, {}, defName };
271274 case SerializableTypeDefinition::Type::unionDef:
272- return UnionNode{uri, {}, {}, {}};
275+ return UnionNode{uri, {}, {}, {}, defName };
273276 case SerializableTypeDefinition::Type::enumDef:
274- return EnumNode{uri, {}, {}};
277+ return EnumNode{uri, {}, {}, defName };
275278 case SerializableTypeDefinition::Type::opaqueAliasDef:
276- return OpaqueAliasNode{uri, TypeRef{TypeRef::Bool{}}, {}};
279+ return OpaqueAliasNode{uri, TypeRef{TypeRef::Bool{}}, {}, defName };
277280 default :
278281 break ;
279282 }
@@ -333,6 +336,9 @@ std::unique_ptr<TypeSystem> TypeSystemBuilder::buildDerivedFrom(
333336 std::optional<SerializableThriftSourceInfo>& sourceInfo = entry.sourceInfo ;
334337 // We created uninitialized stubs above so we can assume they exist
335338 TSDefinition& uninitDef = typeSystem->definitions .find (uri)->second ;
339+ std::string defName = sourceInfo.has_value ()
340+ ? std::string (*sourceInfo->name ())
341+ : std::string{};
336342
337343 switch (def.getType ()) {
338344 case SerializableTypeDefinition::Type::structDef: {
@@ -342,7 +348,8 @@ std::unique_ptr<TypeSystem> TypeSystemBuilder::buildDerivedFrom(
342348 uri,
343349 makeFields (std::move (*structDef.fields ())),
344350 *structDef.isSealed (),
345- makeAnnots (std::move (*structDef.annotations ())));
351+ makeAnnots (std::move (*structDef.annotations ())),
352+ defName);
346353 if (sourceInfo.has_value ()) {
347354 typeSystem->tryAddToSourceIndex (
348355 SourceIdentifier{*sourceInfo->locator (), *sourceInfo->name ()},
@@ -356,7 +363,8 @@ std::unique_ptr<TypeSystem> TypeSystemBuilder::buildDerivedFrom(
356363 uri,
357364 makeFields (std::move (*unionDef.fields ())),
358365 *unionDef.isSealed (),
359- makeAnnots (std::move (*unionDef.annotations ())));
366+ makeAnnots (std::move (*unionDef.annotations ())),
367+ defName);
360368 if (sourceInfo.has_value ()) {
361369 typeSystem->tryAddToSourceIndex (
362370 SourceIdentifier{*sourceInfo->locator (), *sourceInfo->name ()},
@@ -378,7 +386,8 @@ std::unique_ptr<TypeSystem> TypeSystemBuilder::buildDerivedFrom(
378386 enumNode = EnumNode (
379387 uri,
380388 std::move (values),
381- makeAnnots (std::move (*enumDef.annotations ())));
389+ makeAnnots (std::move (*enumDef.annotations ())),
390+ defName);
382391 if (sourceInfo.has_value ()) {
383392 typeSystem->tryAddToSourceIndex (
384393 SourceIdentifier{*sourceInfo->locator (), *sourceInfo->name ()},
@@ -392,7 +401,8 @@ std::unique_ptr<TypeSystem> TypeSystemBuilder::buildDerivedFrom(
392401 opaqueAliasNode = OpaqueAliasNode (
393402 uri,
394403 typeSystem->typeOf (*opaqueAliasDef.targetType ()),
395- makeAnnots (std::move (*opaqueAliasDef.annotations ())));
404+ makeAnnots (std::move (*opaqueAliasDef.annotations ())),
405+ defName);
396406 if (sourceInfo.has_value ()) {
397407 typeSystem->tryAddToSourceIndex (
398408 SourceIdentifier{*sourceInfo->locator (), *sourceInfo->name ()},
@@ -425,15 +435,18 @@ std::unique_ptr<TypeSystem> TypeSystemBuilder::buildDerivedFrom(
425435 for (const auto & uri : uris) {
426436 auto sourceDef = source.getUserDefinedType (uri);
427437 auto stubDef = sourceDef->visit (
428- [&](const StructNode&) -> TSDefinition {
429- return StructNode{uri, {}, false , {}};
438+ [&](const StructNode& node ) -> TSDefinition {
439+ return StructNode{uri, {}, false , {}, std::string (node. debugName ()) };
430440 },
431- [&](const UnionNode&) -> TSDefinition {
432- return UnionNode{uri, {}, false , {}};
441+ [&](const UnionNode& node ) -> TSDefinition {
442+ return UnionNode{uri, {}, false , {}, std::string (node. debugName ()) };
433443 },
434- [&](const EnumNode&) -> TSDefinition { return EnumNode{uri, {}, {}}; },
435- [&](const OpaqueAliasNode&) -> TSDefinition {
436- return OpaqueAliasNode{uri, TypeRef{TypeRef::Bool{}}, {}};
444+ [&](const EnumNode& node) -> TSDefinition {
445+ return EnumNode{uri, {}, {}, std::string (node.debugName ())};
446+ },
447+ [&](const OpaqueAliasNode& node) -> TSDefinition {
448+ return OpaqueAliasNode{
449+ uri, TypeRef{TypeRef::Bool{}}, {}, std::string (node.debugName ())};
437450 });
438451 typeSystem->definitions .emplace (uri, std::move (stubDef));
439452 }
@@ -484,7 +497,8 @@ std::unique_ptr<TypeSystem> TypeSystemBuilder::buildDerivedFrom(
484497 uri,
485498 copyFields (node.fields ()),
486499 node.isSealed (),
487- copyAnnotations (node.annotations ()));
500+ copyAnnotations (node.annotations ()),
501+ std::string (node.debugName ()));
488502 if (options.includeSourceInfo ) {
489503 auto sourceInfo =
490504 source.getSourceIdentiferForUserDefinedType (*sourceDef);
@@ -503,7 +517,8 @@ std::unique_ptr<TypeSystem> TypeSystemBuilder::buildDerivedFrom(
503517 uri,
504518 copyFields (node.fields ()),
505519 node.isSealed (),
506- copyAnnotations (node.annotations ()));
520+ copyAnnotations (node.annotations ()),
521+ std::string (node.debugName ()));
507522 if (options.includeSourceInfo ) {
508523 auto sourceInfo =
509524 source.getSourceIdentiferForUserDefinedType (*sourceDef);
@@ -526,7 +541,10 @@ std::unique_ptr<TypeSystem> TypeSystemBuilder::buildDerivedFrom(
526541 }
527542 auto & enumNode = std::get<EnumNode>(stubDef);
528543 enumNode = EnumNode (
529- uri, std::move (values), copyAnnotations (node.annotations ()));
544+ uri,
545+ std::move (values),
546+ copyAnnotations (node.annotations ()),
547+ std::string (node.debugName ()));
530548 if (options.includeSourceInfo ) {
531549 auto sourceInfo =
532550 source.getSourceIdentiferForUserDefinedType (*sourceDef);
@@ -544,7 +562,8 @@ std::unique_ptr<TypeSystem> TypeSystemBuilder::buildDerivedFrom(
544562 opaqueAliasNode = OpaqueAliasNode (
545563 uri,
546564 remapType (node.targetType ()),
547- copyAnnotations (node.annotations ()));
565+ copyAnnotations (node.annotations ()),
566+ std::string (node.debugName ()));
548567 if (options.includeSourceInfo ) {
549568 auto sourceInfo =
550569 source.getSourceIdentiferForUserDefinedType (*sourceDef);
0 commit comments