#jira UE-6503 - GitHub 680 : Fix: UE-6268: Implict cast stack corruption
#jira UE-6268 - The Editor may crash in PIE mode if the Engine was built from source code using the Debug Editor configuration.
[CL 2391686 by Michael Schoell in Main branch]
this change introduces enforcement of 'const-correctness' into implemented function graphs.
summary:
if you have a function declared in C++ like this:
UFUNCTION(BlueprintImplementableEvent)
int32 MyFunctionThatReturnsSomeValue() const;
if you implement that (BPIE) function in a Blueprint that's parented to that native class, it will now be flagged as 'const'. this makes any properties of 'self' read-only within the context of that graph, which means the compiler will emit an error if you try to set a property or otherwise call a non-const, non-static function with 'self' as the target.
if there happens to already be an implemented const function in a Blueprint that was in place prior to this change, the compiler will emit a warning instead of an error, in order to allow existing Blueprints that may currently be "violating" const within the context of a const BPIE function to still compile, while still alerting to issues that should probably be addressed.
notes:
1) this also applies to BlueprintNativeEvent (BPNE) implementations, and also when implementing BPIE/BPNE interface methods that are also declared as const
2) a const BPIE/BPNE function with no return value and no output parameters will be implemented as a "normal" impure function, and not as an event as in the non-const case
3) a const BPIE/BPNE function with a return value and/or output parameters will currently be implemented as a pure function, regardless of whether or not BlueprintCallable is specified
4) this CL also retains some consolidation of static function validation code that i had previously done, mostly to allow static functions to more easily be whitelisted for const function graphs
#codereview Nick.Whiting, Michael.Noland
[CL 2368059 by Phillip Kavan in Main branch]
A function with a World Context pin can also be flagged with new metadata CallableWithoutWorldContext which indicates it can be used in any context, even if GetWorld() is not implemented, the called function is responsible for providing a working alternative when World is null
World Centric functions can also be used in classes tagged with the ShowWorldContextPin metadata which indicates the class has a well defined method of supplying the world context that will be connected
[CL 2292921 by Marc Audy in Main branch]
ttp 344824 LIVE: BP: Checking the contents of an ActorClass array will alway return True even when checking for a class that is not part à?
#codereview Nick.Whiting
[CL 2284422 by Maciej Mroz in Main branch]
#proj core
#branch UE4
#summary Removed header groups, removed some redundant includes and replaced with forward declarations. Fixed compilation errors.
[CL 2055361 by Mikolaj Sieluzycki in Main branch]
#proj core
#branch UE4
#summary Removed header groups, removed some redundant includes and replaced with forward declarations. Fixed compilation errors.
[CL 2054304 by Mikolaj Sieluzycki in Main branch]
- Wire-trace op-codes are now inserted before every statement in GotoFixupRequestMap
- ExpandNode() now uses FKismetCompilerContext::MovePinLinksToIntermediate/CopyPinLinksToIntermediate for transfering pin links (to track pin associations)
#codereview Nick.Whiting
[CL 2040798 by Mike Beach in Main branch]