Bug in parser in HeaderTool

I have a strange bug with the HeaderTool.

I’ve go a simple widget style class.

USTRUCT()
struct KSGM_API FKLobbyWidgetStyle : public FSlateWidgetStyle
{
	GENERATED_USTRUCT_BODY()

When I try to compile I received the following message from HeaderParser.cpp

/KLobbyWidgetStyle.h(26) : struct: ‘KLobbyWidgetStyle’ conflicts with class name

I’ve checked in the HeaderParser.cpp

	// Verify uniqueness (if declared within UClass).
	{
		auto* Existing = Scope->FindTypeByName(*EffectiveStructName);
		if (Existing)
		{
			FError::Throwf(TEXT("struct: '%s' already defined here"), *EffectiveStructName);
		}

		if (FindObject<UStruct>(ANY_PACKAGE, *EffectiveStructName) != NULL)
		{
			FError::Throwf(TEXT("struct: '%s' conflicts with class name"), *EffectiveStructName);
		}
	}

This new struct exists only in this file.

If I change the struct name FKLobbyWidgetStyle to FKLobbyStyle
no more error.

I don’t know how the parser can find a similar UStruct in ANY_PACKAGE.

D.

Hey -

The issue is that the name of the struct matches the name of your class. This is why changing the name of the struct removes the error.

Cheers

Hello ,

Yes but I have no class with the name FKLobbyWidgetStyle.
But may be I don’t understand. What class are you talking about ?

D.

The F is seen as an identifier at the beginning of the name rather than part of the name. For example, I created a class named MyActor (AMyActor in VS), attempting to add a UStruct called UMyActor gave the same error that you posted above. If you have a class named KLobbyWidgetStyle (either actor, object, character, etc) then this is the likely cause of the error.

Ok.

In fact I understood the problem.

The style class is named :

UCLASS(hidecategories = Object, MinimalAPI)
class UKLobbyWidgetStyle : public USlateWidgetStyleContainerBase

Then effectively, it gives that error.

Many thanks for your help,
Have a nice day,
D.