Description

Adding variables to a structure that is an input parameter of an interface function causes a compile error in any blueprint that implements the interface until the interface is recompiled.

Compile errors generated:

Error Event node  Event Test Funct  is out-of-date.  Please refresh it.
Error Invalid property 'NewParam' structure 'STRUCT_REINST_TestStruct_20' error: Struct 'UserDefinedStruct /Engine/Transient.STRUCT_REINST_TestStruct_20' is not compiled
Error Failed to create property NewParam from  New Param  due to a bad or unknown type (STRUCT REINST Test Struct 20 Structure)
Warning [1984.15] Compile of TestBP failed. 3 Fatal Issue(s) 0 Warning(s) [in 131 ms] (/Game/TestBP.TestBP)

After refreshing the node more errors appear:

Error Invalid property 'K2Node_Event_NewParam' structure 'STRUCT_REINST_TestStruct_20' error: Struct 'UserDefinedStruct /Engine/Transient.STRUCT_REINST_TestStruct_20' is not compiled
Error Failed to create property K2Node_Event_NewParam from  New Param  due to a bad or unknown type (STRUCT REINST Test Struct 20 Structure)
Error The property associated with  New Param  could not be found
Error ICE SetVariableOnPersistentFrame - No property found.  New Param 
Error Invalid property 'NewParam' structure 'STRUCT_REINST_TestStruct_20' error: Struct 'UserDefinedStruct /Engine/Transient.STRUCT_REINST_TestStruct_20' is not compiled
Error Failed to create property NewParam from  New Param  due to a bad or unknown type (STRUCT REINST Test Struct 20 Structure)
Warning [2120.00] Compile of TestBP failed. 6 Fatal Issue(s) 0 Warning(s) [in 129 ms] (/Game/TestBP.TestBP)

Steps to Reproduce
  1. Create a new Blueprint Structure name it "TestStruct"
  2. Leave the default bool variable and save the structure
  3. Create a new Blueprint Interface and name it "TestInterface"
  4. Name the default created function "TestFunct"
  5. Add a new input parameter of the TestStruct structure made earlier
  6. Compile and Save the Interface
  7. Create a Blueprint based on Actor and name it "TestBP"
  8. In the Class settings under "Interfaces" add the TestInterface made earlier
  9. In the event graph add the TestFunct event from the interface
  10. Compile and save the blueprint
  11. Reopen TestStruct and add another variable to the struct and save the struct
  12. Reopen TestBP and hit Compile.

Result: Compile fails.

Even after you right-click the node and "refresh the node" the errors persist

Workaround: Reopen TestInterface and recompile the interface, then the blueprint actor will compile successfully

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-31622 in the post.

19
Login to Vote

Cannot Reproduce
ComponentUE - Gameplay - Blueprint
Affects Versions4.13
Target Fix4.19
Fix Commit3784604
Main Commit3804136
CreatedJun 3, 2016
ResolvedDec 1, 2017
UpdatedMay 4, 2023