From 3da6535ef5a83ed52d0357f7af8d9cc9993f5ed9 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 1 Feb 2020 11:42:32 -0800 Subject: [PATCH] Marking default ctors as illegal src positions --- IDEHelper/Compiler/BfModule.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index 8def0109..9b918d59 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -2291,6 +2291,7 @@ void BfModule::UpdateExprSrcPos(BfAstNode* astNode, BfSrcPosFlags flags) void BfModule::UseDefaultSrcPos(BfSrcPosFlags flags, int debugLocOffset) { UpdateSrcPos(mCompiler->mBfObjectTypeDef->mTypeDeclaration, flags, debugLocOffset); + SetIllegalSrcPos(); } void BfModule::SetIllegalSrcPos(BfSrcPosFlags flags) @@ -14200,6 +14201,11 @@ void BfModule::EmitCtorBody(bool& skipBody) } } + if (mCurTypeInstance->IsDelegate()) + { + NOP; + } + BfAstNode* baseCtorNode = NULL; if ((ctorDeclaration != NULL) && (ctorDeclaration->mInitializer != NULL) && (ctorDeclaration->mInitializer->mTarget != NULL)) baseCtorNode = ctorDeclaration->mInitializer->mTarget; @@ -14300,6 +14306,10 @@ void BfModule::EmitCtorBody(bool& skipBody) if ((mBfIRBuilder->DbgHasInfo()) && (!mCurTypeInstance->IsUnspecializedType()) && (mHasFullDebugInfo)) { UpdateSrcPos(baseCtorNode); + + if (methodDef->mBody == NULL) + SetIllegalSrcPos(); + // NOP so we step onto the open paren of the method so we can choose to set into the field initializers or step over them EmitEnsureInstructionAt(); @@ -14416,6 +14426,8 @@ void BfModule::EmitCtorBody(bool& skipBody) if (baseCtorNode != NULL) { UpdateSrcPos(baseCtorNode); + if (methodDef->mBody == NULL) + SetIllegalSrcPos(); } if ((ctorDeclaration != NULL) && (ctorDeclaration->mInitializer != NULL)) {