Mixins now perform a deep copy of the AST. (Fixes default blocks in mixins)

This commit is contained in:
Chronos Ouroboros 2020-01-07 16:11:20 -03:00
commit d22a4c835c
4 changed files with 904 additions and 36 deletions

View file

@ -76,6 +76,7 @@ enum
// Syntax tree structures.
// [pbeta] Any changes to AST node structure or new node types require TreeNodeDeepCopy in zcc_parser.cpp to be updated!
enum EZCCTreeNodeType
{
AST_Identifier,
@ -386,6 +387,8 @@ struct ZCC_ExprTypeRef : ZCC_Expression
struct ZCC_ExprConstant : ZCC_Expression
{
// [pbeta] The ZCC_ExprConstant case in TreeNodeDeepCopy in zcc_parser.cpp
// must be updated if this union is changed!
union
{
FString *StringVal;
@ -611,4 +614,8 @@ struct ZCCParseState : public ZCC_AST
FScanner *sc;
};
const char *GetMixinTypeString(EZCCMixinType type);
ZCC_TreeNode *TreeNodeDeepCopy(ZCC_AST *ast, ZCC_TreeNode *orig, bool copySiblings);
#endif